【从0到1】SHA Family Relationship 科普

今天查阅了相关文献,理一下SHA家族的成员关系。

不涉及算法具体实现,想知道的话文末相关链接里有。

该Blog大部分文案由笔者翻译整合官方文档而成,如有错漏还望斧正。

太长不看版

SHA256 属于 SHA2

Keccak 是 SHA3 的前身 ,因为填充算法不同,SHA3与Keccak不一样。


前瞻

SHA:Secure Hash Algorithm

SHA0和SHA1已经broken了,不再赘述。


SHA2

SHA-2可分为六个不同的算法标准,包括:

SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

其中,SHA224是SHA256的截短版(初始化向量不同,详见截图或文末文档);SHA384、SHA-512/224和SHA-512/256 是SHA-512截短板(初始化向量不同,详见截图或文末文档)。



SHA3

SHA3与Keccak

2013年,Keccak成为SHA-3竞赛最后的胜出者。

2015年,NIST调整了 填充算法 ,使得最终标准化后的SHA3与Keccak 略有不同


SHA3 family

SHA3 家族包括四种(常规)hash函数:SHA3-224,SHA3-256,SHA3-384,SHA3-512;以及两种可拓展输出函数(即XOFs,输出长度可自定义):SHAKE128和SHAKE256。


其中,SHAKE的后缀数字表示的是安全等级(security level)(而通常的SHA家族后缀数字表示的是hash值的bit长度),SHAKE这个名字由SHA和KECCAK的前两个字母结合而来。


SHA3的这六种形态可以看作是 KECCAKp[1600,24]KECCAK-p[1600,24] 的不同操作模式。这意味着将来或许会有更多的(基于KECCAK-p的)SHA3变体。


前文说到NIST调整了填充算法,其目的是:为了区分常规的四种hash函数和XOFs,以及促进SHA-3新变体的开发和方便个人使用。


P.S. KECCAKp[b,nr]KECCAK-p[b, nr]中b表示每次置换的bits的长度,关于b的取值NIST给出的标准有七种选择:{25,50,100,200,400,800,1600},nr表示轮常量,p表示置换(permutation)操作。


总结

想要知道各种计算机相关算法\函数的细节,准确性最高的方法是查询官方文档——但信息量太大了,可能无从下手(或许更致命的是当下cs相关的官方文档以英文居多),因此辅以各类website和blog甚佳。

巨人本身和站在巨人肩膀上的人,两手都要抓,两手都要硬……(bushi


参考

FIPS 202, SHA-3 Standard: Permutation-Based Hash & Extendable-Output Fcns | CSRC (nist.gov)

Secure Hash Standard (SHS) | NIST

https://en.wikipedia.org/wiki/Secure_Hash_Algorithms

nist-sha - _9_8 - 博客园 (cnblogs.com)

文章作者: 莫折眉
文章链接: https://m0d1.top/2022/03/06/shafamily/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 M0D1.TOP