网络安全-常用安全算法简介

Posted by 周思进 on March 27, 2022

对称加密

在安全要求不高的情况下,数据通讯以明文传输,即被截取就可查看。但对于敏感数据,需要提高数据的保密性,就需要通讯双方协商一个密钥来对数据进行加解密,为此引入了对称加密算法,其传输过程如下图所示。

image

要点:
1、对称加密算法在加密和解密时使用的是同一个密钥
2、密钥作为算法的输入,算法进行加密操作取决于这个密钥。
3、对称加密的安全取决于密钥的保密而非算法的保密。
对称加密算法包含对称分组密码DES、AES和对称流密码RC4


非对称加密

上面存在的问题是双方如何安全的协商对称密钥,使其不被第三方得知;另如何验证消息的来源是可靠的,这就引入了非对称加密算法(如RSA)。

要点:
1、非对称加密算法需要两个密钥来进行加密和解密,分为公钥和私钥。
2、每个用户都可以生成私钥和公钥,公钥是对外公开的,私钥由生成者自己持有。
3、公钥加密的数据只能私钥解密;私钥加密的数据只能公钥加密。

认证过程:持有公钥的一方A,发送挑战字符串给对方B,B使用私钥对经过 HASH 计算的数据进行加密返回给A,A收到后用公钥解密(这里能解开就说明是所要通讯的对端了,因为只有私钥加密的数据,才能用公钥解开),比较数据一致(自己再对发送的字符串做摘要),则说明对端就是所要通讯的一方。

经过认证后,就是安全的协商对称密钥。A将对称密钥用公钥加密传输给B(第三方截获了数据也无法解开,因为只有B的私钥能够解开,保证了对称密钥传输的安全性),B用私钥解密得到该对称密钥,之后的通信就通过对称密钥加密传输。

这里说明下为什么不直接使用非对称加密算法进行数据加密传输,因为非对称加密算法开销大,速度慢。所以一般通过非对称加密算法来进行认证和协商对称密钥,之后通过对称密钥来进行数据的加密传输。


数字签名

接下来说另一个问题,上面的一切基础是公私钥是可靠的,但任何人都可以生成公私钥对,如何来确保所拿到的公钥是可信任的呢?这就要用到数字证书了。

数字证书由公钥加上所有者的一些相关信息及可信任的第三方签名组成。这里所讲的第三方就是CA机构了。

CA机构就是证书授证中心,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。

所谓数字签名,其实就是用CA的私钥对证书信息加密后的数据内容,如下图所示。

image

CA 证书会预置在本地,只要用 CA 证书能解密对端证书的数字签名,即说明对端证书是合法可信的,再确认证书持有者身份后,就可以放心的使用对端证书里的公钥了。


消息认证码

上面成功的协商了对称密钥,但用对称密钥对数据加密传输过程中,仍旧存在问题,即用对称算法加密的密文,被第三方篡改后,接收方解密后不能确定是否被篡改过,这就需要通过 HMAC 来实现了。

HMAC 依赖于摘要算法,其主要特质就是对消息经过散列函数(如MD4、MD5、SHA1)得到的固定长度的散列码,其结果是不能逆向得到原文的。但单单依赖摘要算法是不能确认消息是否被篡改了,因为有可能明文和摘要同时被篡改了。

而 HMAC 算法是一种基于密钥的消息认证码算法,其运算过程需要外部输入密钥,类似如下:

HMAC值 = 摘要算法(key, 明文输入)

只要攻击者不知道密钥,就无法篡改 HMAC 值。这样接收端收到数据,针对原始数据进行同样的 HMAC 计算,如果不一致,则说明数据被篡改了。