主页 > imtoken官方安卓下载 > 区块链技术中的密码学:哈希函数

区块链技术中的密码学:哈希函数

imtoken官方安卓下载 2024-01-26 05:07:28

本文作者为吴彦兵:清华大学高等研究院数学博士区块链哈希值怎么查看,师从中国著名密码学家、中国科学院院士王晓云。破解韩国标准加密算法LEA,POP共识算法发明者。

【背景介绍】在OK区块链工程研究院技术交流活动中,我们邀请到了清华大学密码学研究中心的吴彦兵博士,为读者讨论整理了一些精彩点。

哈希函数是密码学的基本工具。哈希函数可用于数字签名。通过下面的介绍可以知道,数字签名使用椭圆曲线区块链哈希值怎么查看,计算复杂度非常高。在签名之前,我们通常会在签名之前将要签名的文件或信息通过哈希函数进行压缩。

哈希函数也可以用于数据完整性的检测。比如我们经常看到在一个网站下载软件的时候,旁边会给出一个hash值。此哈希值用于确定文件是否不是。完整,下载时是否被他人篡改。我们从网站下载了一个文件。如何判断我们下载的文件是否完整?我们可以将hash函数后的文件得到的值与网站上的进行比较,看是否相同。同样的意思是该网站没有或已经被篡改。

哈希函数也可以用于可证明安全的密码系统,我们稍后会谈到。其次,hsah功能还可以检测传输中的消息是否被篡改,防止电子签名和消息验证码的伪造。

区块链哈希值怎么查看

哈希函数

散列函数,又称散列函数、散列函数、数字指纹等,将任意长的消息压缩成一个固定长度的摘要。如下图所示,我们可以看到hash函数可以将任意大小的文件压缩成n位的01字符串,其中n可以是128、160、192、@ >256、@ >384 或 512。

哈希函数

区块链哈希值怎么查看

我们可以看到哈希函数的数学表达式为 Y=H(M) , {0,1}*®{0,1}n ,H代表哈希函数,M代表输入信息,Y是一个输出。可以看出,哈希函数的输入可以是任意位数,但输出是固定长度的位数,即n。计算机中使用的哈希表主要用于存储和查找,源于1953年IBM的一次历史讨论。

密码学中的哈希函数与计算机中使用的哈希函数略有不同,密码学中使用的哈希函数具有特定的安全属性。我们稍后会详细描述它的安全属性。

我们前面介绍的hash函数没有key,直接压缩消息。我们可以在哈希函数中引入密钥,使其成为可以认证的MAC算法。我们可以在下图中看到表示,它将键和消息都作为哈希函数的输入。 MAC功能具有对通信双方进行消息完整性检测和身份认证的功能。哈希函数广泛应用于各种互联网协议,如IPsec、SSL/TLS、SSH、SNMP等,以及金融安全:银行、电子货币等。

区块链哈希值怎么查看

我们来说说哈希函数的五个安全特性。首先,哈希函数具有抵御图像攻击的安全特性。反镜像攻击是指给定任意哈希值 Y,很难恢复消息 M。反秒原像攻击和抗碰撞性类似。反秒原像攻击是指对于给定的消息 M1,计算另一条消息 M2,使得 H(M1)=H(M2)是困难的。

而抗碰撞是指找到不同的消息(M1,M2)有相同的指纹,即H(M1)=H(M2)很难。这两者的区别两个安全属性,一个是给定M1,另一个是M1可以自己选择。

反长度扩展攻击是指给定消息的长度M和H(M),在不知道M的情况下很难计算出H(M||M')。反二次碰撞攻击:给定一对碰撞消息 M 和 M',对于任何消息 N,消息 M||N 和 M'||N 也会发生碰撞。

区块链哈希值怎么查看

有6个主要的Hash函数,分别是MD5、SHA-1、SHA-2、SHA-3、Whirlpool、SHA-3、SM3。 MD5 已经是一个非常传统的哈希函数了。由Rivest于1992年设计提出,输出长度为128位。 Rivest也是公钥加密算法RSA的设计者之一,即R,Rivest在2002年获得了图灵奖。

我的导师王小云教授在 Crypto 2004 中提出了一种可以成功破解 MD5 的算法。SHA-1 是由 NIST(国家标准与技术研究所)于 1995 年开发的,输出长度为 160 位。 SHA-2 由 NIST 在 2002 年提出,输出长度为 256、384、512 位。 Whirlpool 由 Rijmen 于 2000 年设计,输出长度为 512 位。 KECCAK 参加 SHA-3 标准竞赛 SHA-3 标准算法,由 Daemen 等人于 2007 年设计,输出长度为 256、384、512 位。 Hash函数还有一个中文设计实现的算法SM3,是我的导师王小云在2010年设计的,由院士等设计,输出长度为256位。

其次,王老师还破解了SHA-1和SHA-2。王先生最推荐的密码学书籍之一是《密码书》。我在看《欺骗的艺术》,说到MD5有个标签,MD5已经被中国科学家王晓云破解,得知了王先生。之后,他很欣赏王老师,成为了她的研究生。

区块链哈希值怎么查看

哈希函数

哈希可以用于登录认证。用户提供用户名和密码,服务器在数据库中查找用户名,得到salt值,计算Hash(salt+password)并与数据库进行比较,如果相同则通过认证。这样可以防止密码直接存入数据库,黑客/管理员可以直接查看用户密码。加盐的目的是为了防止服务器上只能直接查看两个密码相同的用户。

哈希可用于密钥派生。我们可以看到银行使用的U盾生成的随机数是通过哈希函数生成的。其次,哈希函数在RFID和卫星通信等密码系统中也有广泛的应用。

哈希函数也用于数字签名。学完下一节的知识,我们就知道数字签名使用的是椭圆曲线签名,计算速度非常慢。待签名的数据量越大,签名速度越慢。因此,一般的方法是,在签名前对要签名的信息进行Hash压缩,得到一个很短的比特串,然后进行签名操作。让我们看看下图是一个金融安全的模型。

哈希函数在比特币和区块链中也有很好的应用。比特币挖矿其实是在寻找一个随机数n,使得与交易信息拼接的n的哈希值的前m位为零。前 m 位为零,表示挖掘的计算复杂度。如果要找到前60位为0的hash值,那么他的计算复杂度是260次操作。电子货币:替代货币的电子签名,可以通过用户的公钥(数字证书)验证货币的合法性。