SHA3

科技工作者之家 2020-11-17

SHA-3第三代安全散列算法(Secure Hash Algorithm 3),之前名为Keccak(念作/ˈkɛtʃæk/或/kɛtʃɑːk/))算法,设计者宣称在 Intel Core 2 的CPU上面,此算法的性能是12.5cpb(每字节周期数,cycles per byte)。不过,在硬件实做上面,这个算法比起其他算法明显的快上很多。

历史Keccak 是一个加密散列算法,由Guido Bertoni,Joan Daemen,Michaël Peeters,以及Gilles Van Assche在RadioGatún上设计。1

2012年10月2日,Keccak 被选为NIST散列函数竞赛的胜利者。SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5、SHA-0和SHA-1出现成功的破解,NIST感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的 SHA-3。

2014年,NIST发布了FIPS202 的草案 "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions"。

2015年8月5日,FIPS 202 最终被 NIST 批准。

设计Keccak 使用海绵函数,此函数会将数据与初始的内部状态做XOR运算,这是无可避免可置换的(inevitably permuted)。在最大的版本,算法使用的内存状态是使用一个5×5的二维数组,数据类型是64位的字节,总计1600比特 。缩版的算法使用比较小的,以2为幂次的字节大小w为1比特,总计使用25比特。除了使用较小的版本来研究加密分析攻击,比较适中的大小(例如从w=4使用100比特,到w=32使用800比特)则提供了比较实际且轻量的替代方案。2

Keccak 的置换置换方法是先定义字的长度为二的某次方,w=2比特。SHA-3的主要应用使用64位的字长,ℓ=6。

内存状态可以被视为5×5×w的三维数组。令a[i][j][k]代表内存状态的第(i×5 +j)×w+k个比特(使用小端序,little-endian,参见字节序)。

置换函数是五个子段落(sub-round)作12+2ℓ次的循环,每一个子段落都相当简单。

修改在整个 NIST 散列函数比赛里面,参赛者允许稍微修改算法解决已经出现的问题。Keccak 的修改有:

循环的数目从12+ℓ变成12+2ℓ,以增加安全度。

填充函数使用比起上述101的方式更加复杂的作法。

吸收比率r增加到安全限制,而非向下舍入到最接近某个2的幂次。

SHA-3 示例空字符串的散列值:

SHA3-224("")

6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7

SHA3-256("")

a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

SHA3-384("")

0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004

SHA3-512("")

a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26

SHAKE128("", 256)

7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26

SHAKE256("", 512)

46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be

由于雪崩效应,即使一个很小的改变都会产出几乎完全不同的散列值。举例来说,把 dog 改成 dof:

SHAKE128("The quick brown fox jumps over the lazy dog", 256)

f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e

SHAKE128("The quick brown fox jumps over the lazy dof", 256)

853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。