对称加密、非对称加密以及哈希算法介绍

一、对称加密

对称加密,即明文加密及密文解密,用的同一组密钥,相对于非对称加密,对称加密速度快,加密效率高,对称加密通常在消息发送方需要加密大量数据时使用。

接下来为大家介绍几种常见的加密方式。

1.DES加密方式

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准,并授权在非密级政府通信中使用,随后该算法在国际上流传开来。

DES算法中密钥Key为8个字节64位,但每第8位为校验位不参与运算,所有有效密钥只有56位;Data为8个字节64位,是要被加密或解密的数据;DES采用16轮运算,每轮产生一个轮密钥参与到运算中。

密钥与明文运算时,采用按位异或的方法(明文的处理过程并不仅仅只有按位异或),而每一位存放数据只有0和1。因此,DES的密钥空间只有2^56。

2.3DES加密算法

由于DES密钥太短,所以被破译的可能性极大,因此产生了3DES的算法,也称为三重数据加密算法。3DES使用了48轮运算,这使得它对于差分密码分析有很强的抵御能力。但是,因为3DES需要执行额外的操作,所以严重影响其性能。3DES完成加密和解密所用的时间时DES的3倍。

3DES可以在不同模式下运行,选择模式决定它所使用密钥数量和执行的功能:
DES-EEE3:使用3个不同的密钥进行加密,数据被加密、加密、再加密。

DES-EDE3:使用3个不同的密钥进行加密,数据被加密、解密、再加密。

DES-EEE2:使用2个不同的密钥进行加密,与DES-EEE3相同,不过第一、三加密过程使用的相同密钥。

DES-EDE2:使用2个不同的密钥进行加密,与DES-EDE3相同,不过第一、三加密过程使用的相同密钥。

这里需要注意的时,DES-EDE3、DES-EDE2在第二个阶段被解密,使用的并不是第一个阶段加密的密钥,而是用的新密钥进行解密,这样并不会将加密的密文解密为明文,反而让密文更加混乱了而已。从一定意义上说,第二阶段的解密,其实也是一种加密。

3.AES加密

AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,简称AES),又称为Rijndael加密法,是美国联邦政府采用的一种区块加密标准。AES密码与分组密码Rijndael基本上完全一致。Rijndael分组大小和密钥大小可以为128、192或256位。由于密钥的大小不同,AES加入运算的轮次也不同。

密钥长度

轮次

128位

10轮

192位

12轮

256位

14轮

 

AES标准只要求分组为128位。因此,只有分组长度为128位的Rijndael才称为AES算法。这个标准替代了原来的DES,已经被多方分析且广为全世界所使用。经过五年甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPAS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

4.SM4

2006年我国公布了SM4密码算法。这是我国第一次公布自己的商用密码算法。DES、AES算法和国产的SM4算法的目的都是为了加密保护静态储存和传输信道中的数据。

从算法来看,国产SM4算法在计算过程中增加非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了密码分析,民间也对21轮SM4进行了差分密码分析,结论均为安全性较高。

5.SM1

SM1的算法并未公开,仅知密钥长度为128为,为对称加密方式,其加密强度与AES相当。调用该算法时,需要通过加密芯片的接口进行调用。

SM1加密与硬件相关,密钥随机数从硬件计算得来。常用来做国内小额支付(如:电子钱包等)、门禁等随身小件的加密。

 

二、非对称加密

在对称加密的过程中,通讯双方始终需要解决的一个问题是密钥如何传递。大部分情况下使用的消息信道传输都是不安全的。且通讯双方拥有密钥相同则能力相同,缺少不可抵赖性。

非对称加密即用两个密钥分别来进行加密和解密操作,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。加密者用来加密消息的公钥没有必要保密,重点在于接收者只有使用私钥才能解密。

但是由于非对称加密基于难以解决的数学难题上,因此非对称加密的算法效率比对称加密低很多(100-1000倍)。非对称加密常见的数学算法有:基于整数因式分解的解决方案、基于离散对数的解决方案和基于椭圆曲线的解决方案。

这里为大家介绍几种常见的非对称加密的算法:

1.RSA算法

RSA应用广泛,但在实际中却常用于数据小片段的加密,尤其用于密钥传输、数字签名。RSA作为非对称算法基础,逐渐被ECC取代,但大部分的数字证书依然使用RSA加密。所有非对称方案的一个显著特征就是,他们都有一个计算公钥和私钥的握手过程,密钥生成依赖于公钥方案。

2.基于离散对数(DLP)的密码学应用:Diffie-Hellman密钥交换

Whitfield Diffie和Martin Hellman在1976年提出的。Diffie-Hellman密钥交换方案提供了实际中密钥分配问题的解决方案,即它允许双方通过不安全的信道进行交流,得到一个共同密钥。许多公开和商业的密码协议中都实现了这种基本的密钥协议技术,比如安全外壳(SSH)、传输层安全(TLS)、和internet协议安全(IPSec)。

3.SM2

SM2算法由国家密码管理局于2010年12月17日发布,也是基于椭圆曲线算法。SM2算法使用的方程为:y^2=x^3 + ax +b。

国际上 ECC用于替代RSA。SM2与ECC算法都是采用椭圆曲线函数。由于国家相关法律规定,它是在国内的应用中用于取代RSA和ECC的加密算法。

SM2常用于中国金融体系中的签名和验签。

三、摘要算法

Hash函数通常又被称为单向散列函数,理论上是不可逆的。Hash函数通常用于构建数据的指纹,当数据发生变化时,指纹也会发生变化。hash函数在设计时有如下的规则:

1.对任意大小的消息x使用哈希函数,函数h在计算上必须是高校的。即使对几百MB左右的大消息进行处理,计算过程也必须足够快。

2.哈希函数输出长度必须是固定的,并且与输入长度无关。

3.为了计算指纹,必须对所有输入位高度敏感,这意味者,如果x发生了很小的改变,指纹必须看上去非常不同。

4.同时,哈希函数的设计至少需要抗第一原像性,甚至有些hash函数还需要做到抗第二原像性。

哈希函数理论上是不可逆的,但并非就是绝对安全的。例如有名的哈希函数MD5,2004年8月,中国密码学家王小云教授等首次公布了一种虚招MD5碰撞的新方法。目前利用该方法,用普通的计算机几分钟内即可找到MD5的碰撞。因此,2008年以后,MD5逐渐被更为安全的SHA-256替代。而在国内,则使用国密SM3代替。SM3是在SHA-256的基础上进行改进的,是中国国家密码管理局于2010年公布的中国商用密码算法标准。

猜你喜欢

转载自blog.csdn.net/weixin_47931795/article/details/107184175
今日推荐