【专题课堂】密码学之现代密码——杂凑算法
发布时间:2023-01-16
密码学之杂凑算法
上篇我们了解了非对称密码算法,接下来介绍密码杂凑算法。
密码杂凑算法也称作“散列算法”或“哈希算法”,现在的密码行业标准统称其为密码杂凑算法,简称“杂凑算法”或“杂凑函数”。
密码杂凑算法对任意长度的消息进行压缩,输出定长的消息摘要或杂凑值,可用于数字签名、完整性保护、安全认证、口令保护等。
用于完整性保护时,杂凑算法常常与密钥一同使用,生成的杂凑值称为MAC,这样的杂凑算法称为带密钥的杂凑算法(Keyed-hash Message Authentication Code,HMAC)
(一)国外密码杂凑算法
1. MD5密码杂凑算法
MD5的全称是Message-DigestAlgorithm5(信息—摘要算法),在20世纪90年代初由麻省理工学院计算机科学实验室的Rivest提出的,其前身有MD2、MD4等密码算法。MD5算法可用于数字签名、完整性保护、安全认证、口令保护等。
根据王小云教授提出的分析方法,2005年国际密码学家给出了MD5算法的碰撞实例,一系列研究表明MD5算法已不再适合实际应用。MD5已被警示为有风险的密码算法。
2.安全杂凑算法(Secure Hash Algorithm,SHA)系列算法
SHA系列算法主要包括SHA-0、SHA-1、SHA-2和SHA-3。
SHA-1算法是1995年由美国国家安全局(NSA)和NIST提出的标准算法。2005年,我国王小云教授首次给出了SHA-1的碰撞攻击,针对SHA-1算法的攻击从理论变为现实,继续使用SHA-1算法存在重大安全风险。2017年4月,国家密码管理局发布了使用SHA-1密码算法的风险警示。
SHA-2算法是由NSA和NIST于2001年提出的标准算法。SHA-2算法包含6个算法:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。其中,SHA-256和SHA-512是主要算法,其他算法都是在这两者基础上输入不同初始值,并对输出进行截断。目前没有发现对SHA-2算法的有效攻击。
与MD5、SHA-1、SHA-2算法等采用经典M-D结构不同,SHA-3算法在设计上采用了新的结构——“海绵”结构。与SHA-2算法类似,SHA-3算法也包含多个算法:SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256。
(二)国内密码杂凑算法
1.SM3密码杂凑算法
SM3密码杂凑算法是国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法采用M-D结构,在结构上和SHA-256相似,但是SM3算法增加了多种新的设计技术,从而在安全性和效率上具有优势。SM3算法能够抵抗目前已知的攻击方法,具有较高的安全冗余。在实现上,SM3算法运算速率高,灵活易用,支持跨平台的高效实现,具有较好的实现效能。
SM3于2012年发布为密码行业标准GM/T 0004-2012《SM3密码杂凑算法》,并于2016年转化为国家标准GB/T 32905-2016《信息安全技术SM3密码杂凑算法》。2018年10月,SM3算法正式成为ISO/IEC国际标准。
密码杂凑算法也称作“散列算法”或“哈希算法”,现在的密码行业标准统称其为密码杂凑算法,简称“杂凑算法”或“杂凑函数”。
密码杂凑算法对任意长度的消息进行压缩,输出定长的消息摘要或杂凑值,可用于数字签名、完整性保护、安全认证、口令保护等。
用于完整性保护时,杂凑算法常常与密钥一同使用,生成的杂凑值称为MAC,这样的杂凑算法称为带密钥的杂凑算法(Keyed-hash Message Authentication Code,HMAC)
(一)国外密码杂凑算法
1. MD5密码杂凑算法
MD5的全称是Message-DigestAlgorithm5(信息—摘要算法),在20世纪90年代初由麻省理工学院计算机科学实验室的Rivest提出的,其前身有MD2、MD4等密码算法。MD5算法可用于数字签名、完整性保护、安全认证、口令保护等。
根据王小云教授提出的分析方法,2005年国际密码学家给出了MD5算法的碰撞实例,一系列研究表明MD5算法已不再适合实际应用。MD5已被警示为有风险的密码算法。
2.安全杂凑算法(Secure Hash Algorithm,SHA)系列算法
SHA系列算法主要包括SHA-0、SHA-1、SHA-2和SHA-3。
SHA-1算法是1995年由美国国家安全局(NSA)和NIST提出的标准算法。2005年,我国王小云教授首次给出了SHA-1的碰撞攻击,针对SHA-1算法的攻击从理论变为现实,继续使用SHA-1算法存在重大安全风险。2017年4月,国家密码管理局发布了使用SHA-1密码算法的风险警示。
SHA-2算法是由NSA和NIST于2001年提出的标准算法。SHA-2算法包含6个算法:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。其中,SHA-256和SHA-512是主要算法,其他算法都是在这两者基础上输入不同初始值,并对输出进行截断。目前没有发现对SHA-2算法的有效攻击。
与MD5、SHA-1、SHA-2算法等采用经典M-D结构不同,SHA-3算法在设计上采用了新的结构——“海绵”结构。与SHA-2算法类似,SHA-3算法也包含多个算法:SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256。
(二)国内密码杂凑算法
1.SM3密码杂凑算法
SM3密码杂凑算法是国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法采用M-D结构,在结构上和SHA-256相似,但是SM3算法增加了多种新的设计技术,从而在安全性和效率上具有优势。SM3算法能够抵抗目前已知的攻击方法,具有较高的安全冗余。在实现上,SM3算法运算速率高,灵活易用,支持跨平台的高效实现,具有较好的实现效能。
SM3于2012年发布为密码行业标准GM/T 0004-2012《SM3密码杂凑算法》,并于2016年转化为国家标准GB/T 32905-2016《信息安全技术SM3密码杂凑算法》。2018年10月,SM3算法正式成为ISO/IEC国际标准。