美文网首页
TLS简介(二)

TLS简介(二)

作者: lingguo610 | 来源:发表于2021-06-01 16:30 被阅读0次

    七、对称密码学

    首先,双方已经协商好了共享秘钥,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的秘钥提供相同的安全级别。

    相关文章

      网友评论

          本文标题:TLS简介(二)

          本文链接:https://www.haomeiwen.com/subject/dgawsltx.html