密码学系列之:NIST和SHA算法

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 密码学系列之:NIST和SHA算法

目录



简介


SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种。这三种算法都是由美国NIST制定的。


NIST的全称是美国国家标准与技术研究所,主要来制定各种标准。


本文将会讲解下NIST和SHA各种算法的关系。


SHA1


在密码学中,SHA-1(Secure Hash Algorithm 1)是一种加密哈希函数,它接受一个输入,并产生一个160位(20字节)的哈希值,称为信息摘要。


我们先看下SHA1的加密流程图:


image.png


上面的A,B,C,D,E都是32bits的state。


F是一个非线性函数。


<<< 表示额是左移操作,红色的加号表示的是加法然后对232取模。


SHA1算法很简单,在2005年之后,SHA1被认为是不安全的,截至2010年,许多组织都建议更换SHA-1。


NIST在2011年正式废止了SHA-1的使用,并在2013年不允许将其用于数字签名。


所有主要的网络浏览器厂商在2017年都停止接受SHA-1 SSL证书。


SHA2


SHA-2(Secure Hash Algorithm 2)也是由美国国家安全局(NSA)设计的一组加密哈希函数,于2001年首次公布,它们采用Merkle-Damgård结构。


SHA-2和SHA-1相比,包括了重大的变化。SHA-2系列包含六个哈希函数,分别是SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。


我们看下SHA2的算法流程:


image.png


我们看下这几个函数表示什么意思:


image.png

SHA3



2006年,NIST组织了NIST哈希函数竞赛,以创建一个新的哈希标准SHA-3。SHA-3并不是要取代SHA-2,因为目前还没有证明对SHA-2的重大攻击。但是由于MD5、SHA-0和SHA-1的成功攻击,NIST认为需要一种可替代的、不同的加密哈希,这就是SHA-3。


在这个比赛中,最终Keccak算法胜出,被选为SHA3的标准。


SHA3算法是基于海绵结构的,我们看下海绵结构的工作原理:


image.png


这个函数被分成了两部分,左边部分叫做吸收部分,右边部分叫做输出部分,一吸一出,像是海绵一样,所以叫做海绵函数。


P表示的是输入的字符串,Z表示的时候输出字符串。


一个海绵函数由三部分组成,分别是state, 函数f和填充函数pad。


state就是上图的r+c部分,r被称为Bitrate, c被称为Capacity


P被分成n份,每一份都会跟Bitrate进行异或操作,如果P的长度不是Bitrate的整数倍,那么需要使用Pad函数进行填充。


每一轮,Bitrate跟P进行异或操作的结果作为最新的Bitrate, 然后生成新的state,然后这个state又被f(state)来替换。


其中函数 f 是 从n个{0,1} 到n个{0,1}的映射。


就这样一轮一轮进行下去,直到所有的P都参与了运算。


输出部分是将最终生成的state进行f运算,每次运算都取Bitrate部分作为输出,从而得到最终的输出。


相关文章
|
6月前
|
算法 数据安全/隐私保护
火山中文编程 -- MD5算法和SHA算法
火山中文编程 -- MD5算法和SHA算法
52 0
火山中文编程 -- MD5算法和SHA算法
|
1月前
|
存储 算法 安全
|
3月前
|
算法 安全 JavaScript
安全哈希算法:SHA算法
安全哈希算法:SHA算法
50 1
安全哈希算法:SHA算法
|
4月前
|
算法 安全 网络安全
网络安全&密码学—python中的各种加密算法
数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码学和密码分析学。
|
5月前
|
存储 算法 安全
深入理解SHA系列哈希算法:安全性的保障与演进
深入理解SHA系列哈希算法:安全性的保障与演进
|
5月前
|
算法 安全 Java
深入解析ECC(椭圆曲线密码学)加解密算法
深入解析ECC(椭圆曲线密码学)加解密算法
深入解析ECC(椭圆曲线密码学)加解密算法
|
6月前
|
安全 算法 数据库
MD5、SHA、DES、AES、RSA的算法说明
【5月更文挑战第10天】MD5、SHA、DES、AES、RSA的算法说明
248 2
|
6月前
|
算法 安全 JavaScript
安卓逆向 -- 算法基础(SHA)
安卓逆向 -- 算法基础(SHA)
85 0
|
6月前
|
算法 Android开发
安卓逆向 -- 自吐算法(MD5和SHA)
安卓逆向 -- 自吐算法(MD5和SHA)
50 0
|
16天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。