10.4.2 加密算法概述
1.常用加密算法
常用加密算法主要用来对敏感数据、摘要、签名等信息进行加密,其典型代表及特点见表10-2。
表10-2 常用加密算法的典型代表及特点
按照密钥方式可将常用加密算法分为对称加密算法和非对称加密算法两类。
(1)对称加密算法 对称加密算法有时也称传统密码算法、私钥算法或单密钥算法,即加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数对称加密算法中,加密密钥和解密密钥是相同的。
对称加密算法要求发送方和接收方在安全通信之前商定一个密钥。对称加密算法的安全性依赖于密钥,泄露密钥就意味着任何人都可以对他们发送或接收的消息进行解密,所以密钥的保密性至关重要。
对称加密算法主要有分组密码和流密码两类。分组密码是指将明文分成固定长度的组(块),用同一密钥和算法对每一组加密,输出固定长度的密文,典型代表有DES、3DES、IDEA、AES等。流密码是对明文逐位进行加密,在军事和外交场合使用较为广泛。
(2)非对称加密算法 非对称加密算法有时也称公开密钥算法。这种加密算法中用作加、解密的密钥并不相同,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。非对称加密算法之所以又叫作公开密钥算法,是由于加密密钥可以公开,即陌生人可以得到它并用来加密信息,但只有用相应的解密密钥才能解密信息。在这种加密算法中,加密密钥叫作公开密钥,而解密密钥叫作私有密钥。常用的非对称加密算法有RSA公钥算法、Diffie-Hellman算法和ECC椭圆曲线算法。
2.单向散列算法
除了上述加密算法,基本加密算法还涉及单向散列算法。单向散列算法一般用于产生消息摘要、密钥加密等。常见的单向散列算法有:
(1)MD5(即消息摘要算法) MD5是RSA数据安全公司开发的一种单向散列算法。MD5被广泛使用,可以用来对任意长度的数据块进行编码运算,生成一个128位的数值。
(2)SHA(即安全哈希算法) SHA是一种较新的散列算法,可以对任意长度的数据块进行编码运算,生成一个160位的数值。
(3)MAC(即消息验证码) MAC是一种使用密钥的单向函数,可以用它在系统或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列算法)就是此类函数的一个例子。
(4)CRC(即循环冗余校验码) CRC校验由于实现简单、纠错能力强而被广泛使用在各种数据校验中。CRC占用系统资源少,用软硬件均能实现,是进行数据传输差错检测的一种很好的手段[69]。
3.国产加密算法
为确保我国密码算法的自主可控,降低敏感信息泄露和信息系统遭受攻击的风险,我国国家密码管理局制定并发布了国产加密算法及相关密码行业标准。
目前,我国自主研发的国产密码算法包括SM1(芯片加密算法)、SM2(非对称加密算法)、SM3(密码杂凑算法)和SM4(对称加密算法),基本构建了一整套国产加密算法体系。国家密码管理局与中国人民银行提出了“总体规划、分步实施、稳步推进”的工作原则,分近期、中期、远期三个工作阶段,推动银行业金融机构国产加密算法的升级改造。