TLS简介(二)

2021-06-01  本文已影响0人  lingguo610

七、对称密码学

首先,双方已经协商好了共享秘钥,Alice使用共享秘钥对明文进行加密,加密数据在公共区域传输,Bob使用相同的共享秘钥对密文进行解密。

如果此时,有一个黑客,他能在公共网络上截取密文,因为数据已经加密了,他不能解密,但是可以改变,也就是所谓的“比特位翻转攻击”。

7.1 比特位翻转攻击

这是非常危险的,那如何保证加密数据在传输过程中,没有被改变呢?

7.2 认证的加密(AE)

第一步,Alice使用对称加密算法 AES-256-GCM或CHACHA20,对明文进行加密;

这种加密算法,需要三个输入:初始向量,共享秘钥,明文,这将产生加密信息。

第二步,认证。

加密信息,共享秘钥,初始向量三者作为输入,通过报文认证算法MAC(AES-256-GCM的认证算法是GMAC, CHACHA20的认证算法是POLY1305)。

MAC就向一个加密散列函数,它将生成一个消息认证码MAC。

MAC将和加密数据一起发送给Bob。

那Bob收到数据后,首先用同样的加密信息、共享秘钥、初始向量进行MAC运算,如果和收到的标签一致,那么说明数据未被更改。

7.2.1 带关联数据的认证加密 AEAD

在TLS1.3中,除了加密数据,我们也想认证一些关联数据,比如IP , PORT, protocol version等。

那么把这些关联数据作为输入加入到MAC算法,所以整个过程也叫做 Authenticated encryption with associated data, 简称AEAD.

Bob的解密和认证过程如下:

7.3 秘钥交换

现在有个问题:Alice和Bob如何在公共网络中分享秘钥,而不泄漏呢?

答案就是:他么需要使用非对称或公钥加密技术来实现这一目的。

具体来说,就是使用Deffie-Hellman Ephemetral, 或 Elliptic-Curve Diffie-Hellman

Ephemeral.

7.3.1 Diffie-Hellman 秘钥交换

首先,双方协商好了g 和P,当然,网络上所有人都知道这两个数字。

然后,Alice选择a作为私钥,并计算出公钥A。Bob也一样, 并且把公钥发给对方。

双方得到对方的公钥,和自身的私钥,计算出交换秘钥,而没有泄露给公众。

7.3.2 密钥推导函数 ---KDF

每种加密算法要求秘钥是不同的长度。

所以,为了生成加密秘钥,Alice和Bob必须将S通过相同的KDF生成指定长度的共享秘钥。

在TLS1.3中,我们使用一个基于HMAC的秘钥推导函数,所以叫做HKDF.(HMAC key derivation function).

7.3.3 陷阱门功能

现在,我们回到DH秘钥交换。

我们知道,攻击者是知道p,g,A,B, 那这种交换机制是安全的吗,攻击者能够通过p,g,A,B计算出秘密数据a,b,S?

幸运的是,如果选择好p,g,A,B,那么将很难破解a,b,S.

例如:

- 选择p为2048-bit的素数

- 选择a、b为256-bit的随机整数

从a计算出A只要O(log(a))的时间,那么从A计算出a就很难,这是一个离散对数问题,我们这一代的计算机需要花很长时间去解决。

到目前为止,是安全的,或者说在下一代强量子计算机出现之前是安全的。

7.3.4 静态或短暂的秘钥

如果Alice和Bob在所有会话中,都使用相同的私钥a和b,那么,虽然黑客话花费很长时间计算机出S,那么他也可以解密出他们之间所有的会话。

听起来是不是很可怕?那么,如何预防?

答案就是使用短暂的秘钥。

也即是每个会话使用不用的私钥。

这在TLS称为完美的向前保密性。

所以,Diffie-Hellman Ephemeral 意味着使用短暂的秘钥的Deffie-Hellman。

八、椭圆曲线密码学

椭圆曲线密码学Elliptic-curve cryptography 简称ECC, 是一种非对称密码学的方法,其算法类似,但是使用的是不同的陷阱门函数。

这个陷阱门函数是基于椭圆曲线的代数结构。(我也不懂)

和RSA比较的话,它需要更小的秘钥来提供同等的安全水平。

美国国家安全局NSA曾经用ECC 384-bit来保护他们的最高机密,这与RSA-7680-bit的秘钥提供相同的安全级别。

上一篇下一篇

猜你喜欢

热点阅读