主页 > 软件下载imtoken > 哈希值区块链(《OK思享汇》区块链技术密码学:哈希函数)

哈希值区块链(《OK思享汇》区块链技术密码学:哈希函数)

软件下载imtoken 2023-08-28 05:07:52

哈希函数是密码学中的一个基本工具。 哈希函数可用于数字签名。 通过后面的介绍我们可以知道,数字签名使用的是椭圆曲线,计算复杂度很高。 在签名之前,我们通常会先对文件或信息进行哈希函数压缩后再进行签名。

散列函数也可用于检测数据完整性。 比如我们经常看到在网站上下载软件的时候,旁边会给出一个哈希值。 这个哈希值用来判断文件是否完整,是否被下载。 有人篡改了它。 我们从一个网站下载了一个文件,如何判断我们下载的文件是完整的呢? 我们可以将文件通过哈希函数后得到的值与网站上的值进行比较,看是否相同。

哈希函数也可以用于可证明安全的密码系统,我们稍后会谈到。 其次,hsah功能还可以检测消息在传输过程中是否被篡改,防止电子签名和消息认证码的伪造,设计多种密码体系和安全通信协议作为安全组件,比特币的核心技术和区块链。

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

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

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

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

下面说说哈希函数的5大安全特性。 首先,哈希函数具有抵抗图像攻击的安全特性。 抗二次原像攻击是指给定任何哈希值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也形成碰撞。

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

哈希值区块链(「OK思享汇」区块链技术里的密码学:哈希函数)

我的导师王小云教授在2004年的Crypto上提出了一种可以成功破解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已经被华人科学家王晓云破译,我了解到了王老师。 后来我很佩服王老师usdt哈希值,当了她的研究生。

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

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

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

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