https作为网络数据安全传输的重要工具,在互联网时代扮演着重要的角色,它可以保障数据的保密性、完整性,以及完成身份安全验证。而在https完成数据加密和身份验证的过程中,也离不开加密算法的协作。下面我们就来了解一下RSA算法在https协议中的应用。

RSA算法简介

RSA算法是一款著名的非对称加密算法,它的安全性依赖于大整数因子分解的困难性,其密钥越长安全性就越高,但与此同时所消耗的时间也就越长。目前RSA算法在线支付、电子邮件、数据传输等方面有着广泛的应用。

RSA算法

RSA算法在https协议中的应用

在https协议中,公钥发放给使用者,而私钥则保留在服务器端。在https通信过程中,服务器只会传递公钥,而私钥永远不会被传输。并且,使用公钥加密的信息只能用私钥才能解开,而能被公钥解密的信息则一定是被私钥加密过的。

当浏览器和一个https服务器建立连接后,服务器会向浏览器发送一个包含RSA公钥、签名、签发机构、持有者信息、域名模式和有效期等信息的证书。

其中,签名就是用上一级证书里的RSA公钥对应的私钥来对下一级证书内容的散列值进行加密,并将加密后得到的数字以及所用的散列算法类型写入下一级证书中。证书内容的散列算法经历了MD5-SHA1-SHA2的变迁,目前仅有SHA2被认为是安全的。

RSA算法

校验签名的步骤如下:

  1. 对证书除签名以外的部分按证书的散列算法类型计算出散列值,将这个值记作H1;
  2. 对证书签名S用上级证书中的公钥进行解密,将这个值记作H2;
  3. 如果H1和H2相等,签名校验通过,否则不通过。

在https协议中,一般仅使用RSA这种非对称加密算法来传输用于加密实际页面数据的对称加密算法的一个伪随机数k。目前比较主流和安全的对称加密算法是AES-128。采用AES-128时,k是一个128-bit的随机数,k被通过RSA加密传输后,实际页面数据的加解密就以k为密钥用AES-128进行。这主要是由于RSA无法加密长度超过大质数乘积的字节长度的数据,实际应用中,一般不超过4096bits,即512字节,而普通页面的数据长度远大于这个值。

免责声明:素材源于网络,如有侵权,请联系删稿。