最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • TLS/SSL:对称加密与非对称加密

    正文概述 掘金(红白十万一只)   2021-01-18   990

    对称加密与非对称加密的变迁

    2021年水的第一篇文章

    HTTP明文分段

    TCP将HTTP明文分段,最大段取决于Min(MTU,MSS)
    MTU:最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,主要取决于物理环境(光纤、路由器、交换机、服务器等)。
    MSS:TCP(Maximum Segment Size,最大报文长度),一般1500字节。再减去IP与TCP头部各20字节,所以一般1460字节。
    SMSS = Min(MTU,MSS)

    SMSS就是报文最大段

    对称加密

    TLS/SSL:对称加密与非对称加密

    使用相同的密钥进行加密解密

    对称加密是如何加密的

    TLS/SSL:对称加密与非对称加密

    对明文的二进制以密钥进行异或操作。

    密钥:0110
    明文:1010
    
    client                     serve
    密文 = 明文 ⊕ 密钥         明文 = 密文 ⊕ 密钥
           0110                      0110
            ⊕                        ⊕
           1010                      1100
            =                         =
           1100                      1010
    

    填充 padding 会将明文以密钥长度分段,但是最后一段可能小于密钥长度,需要填充

    位填充:以bit位填充
    密文:1101 1111 0010 1010 1101 1111 0110
    明文:1101 0111 1100 1101 0000 0000 0000
    4位bit一组,不足4位补1其余补0

    字节填充:以字节填充(以两个16字节为一组)
    密钥:AA AA AA AA AA AA AA AA AA AA AA AA AA AA
    补零:DD DD DD DD DD DD DD DD DD 00 00 00 00 00 使用00补齐
    ANSI X9.23:DD DD DD DD DD DD DD DD DD 00 00 00 00 05 00补齐,最后一位一共补几个就是几
    ISO 10126:DD DD DD DD DD DD DD DD DD 86 86 A1 33 05 随机补齐,最后一位一共补几个就是几
    PKCS7 (RFC5652):DD DD DD DD DD DD DD DD DD 05 05 05 05 05 总共补齐个数,都使用这个个数填充
    PKCS7 (RFC5652)是主流方法

    实际应用的对称加密算法需要很快的运算速度,加密解密明文在网络环境中传递数据。

    对称加密的加密算法

    ECB模式

    明文 ⊕ 密钥直接加密解密
    优点:可并发,速度很快
    缺点:数据特征明显,只是简单的异或很容易破解
    TLS/SSL:对称加密与非对称加密 SMSS = 对于图片的加密数据特征明显,最后一个才是我们想要的

    ECB模式

    TLS/SSL:对称加密与非对称加密

    简简单单,明文按照密钥长度分段。最后明文与密钥异或操作形成密文。

    优点:可并发,速度快

    缺点:数据特征明显,容易破解

    CBC模式

    TLS/SSL:对称加密与非对称加密

    1:明文分段
    2:明文1密钥异或加密生成密文1
    3:密文1明文2异或,再与密钥异或加密生成密文2
    4:循环第三步,直至加密结束

    优点:摸除了数据特征

    缺点:串行执行,无法并发加密

    CTR模式

    TLS/SSL:对称加密与非对称加密

    使用一个计数器Counter密钥key先异或,再与明文加密生成密文

    优点:摸除数据特征,可并发

    缺点:无法校验数据完整性

    MAC

    这不是个加密算法,但是解决了数据完整性

    client                             serve
            密文                                密文
                             
    密钥    Hash算法       密文+MAC     密钥     Hash算法
            
            MAC                                MAC(client)===MAC(serve)
    

    密文+密钥使用Hash算法生成MAC,服务端同样对密文+密钥使用Hash算法生成MAC。最后进行比对就能确认数据文字性。

    GCM模式

    TLS/SSL:对称加密与非对称加密

    GCM=CTR+MAC组合

    加密密文并行执行,计算MAC值会串行执行

    iv:初始化向量,防止Hash碰撞发生

    EK:对密钥与iv进行AES加密操作,使得每个明文的加密密钥都不同

    Auth Data1:额外参数,端口号、IP地址等进一步保证数据安全性

    mult(h):MAC算法加密

    Tag:MAC操作后的标识

    AES加密

    TLS/SSL:对称加密与非对称加密

    三种不同密钥长度,加密轮数

    AES-128加密步骤

    1,把明文按128bit(16字节)拆分为多个明文块,每个明文块就是44的矩形(AES-192是66,AES-256是8*8)
    2,按照上面介绍的字节填充填充方式填充最后一个明文块
    3,每一个明文块利用AES加密器和密钥,加密为密文块
    4,拼接所有密文块,形成最终密文

    明文块加密

    TLS/SSL:对称加密与非对称加密 TLS/SSL:对称加密与非对称加密

    AddRoundKey 轮密加密

    TLS/SSL:对称加密与非对称加密

    明文块a与密钥块k,进行异或XOR运算

    密钥块k也不是原始秘钥而是经过秘钥扩展算法的

    密钥扩展

    TLS/SSL:对称加密与非对称加密

    1,将密文块以列的形式组合成一个字符w(每个4字节,总共16字节)
    2,形成字符w0,w1,w2,w3
    3, w3进行g函数操作得到w'
    4,w'与w0进行XOR运算得到w4,w4与w1进行XOR运算得到w5...
    5,得到一组新的密钥,在拆分成密钥块

    g函数

    1,把输入的w拆分B0,B1,B2,B3,每个4字节
    2,左移操作B1,B2,B3,B0
    3, S盒替换为B4,B5,B6,B7
    4,RC(j),0,0,0与B4,B5,B6,B7对应XOR加密
    RC根据j值数组中获取:{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1B,0x36,}
    5,输出w'

    SubBytes 字节替换

    TLS/SSL:对称加密与非对称加密

    将加密文块已行列位置与S盒中替换

    TLS/SSL:对称加密与非对称加密

    ShiftRows 行位移

    TLS/SSL:对称加密与非对称加密

    每行根据行数-1,向左移位字节

    MixColumns 列混合

    TLS/SSL:对称加密与非对称加密

    矩阵

    0E 0B 0D 09
    09 0E 0B 0D
    0D 09 0E 0B
    0B 0D 09 0E
    

    每列与矩阵中对应列的相乘

    好了对称加密的介绍完了,之后问题是如何将对称加密的密钥安全的传输给客户端。

    TLS/SSL:对称加密与非对称加密

    加密套件和client-random、service-random 的传输过程却是明文的。黑客可以获得client-random和service-random在进行计算获得密钥,对密文传递进行解密。

    非对称加密

    TLS/SSL:对称加密与非对称加密

    发布公私钥,私钥服务器保留。私钥解密只有公钥能解,公钥加密只有私钥能解。

    加密解密过程

    我们来看RSA算法就能理解非对称加密是如何加密解密的

    1,随机两个不相等的质数p和q
    2,计算p和q的乘积n,明文长度小于n
    3,计算n的欧拉函数v
    4,随机一个整数k,1<k<v,且k与v互质
    5,计算k对v的模反元素
    6,公钥 (k,n)
    7,私钥 (d,n)
    
    1,p , q
    2,n = p * q
    3,v = (p - 1)*(q - 1)
    4,gcd(k,v) = 1
    5,(d * k) % v = 1
    6,(k,n)
    7,(d,n)
    密文C = M^k mode n
    明文M = C^d mode n
    

    向前安全

    黑客可以大量保存你的数据包,当你的私钥被泄漏或破解时就可以对以往的数据进行解密。

    这就有了ECDHE利用椭圆函数与离散对数进行计算临时密钥,哪怕密钥被攻破也只是一段时间内的数据包被解密。这样也就有了向前安全性

    这块加密方式u1s1我没读懂,应该是我数学能力不够。

    andrea.corbellini.name/2015/05/17/…

    混合加密

    RSA混合加密

    TLS/SSL:对称加密与非对称加密

    1,客户端生成Client Random随机数,将加密套件列表等数据发送给服务端
    2,服务端生成Server Random随机数,将加密套件和数字证书发送给客户端
    3,客户端校验证书,从中获取RSA私钥
    4,随机生成pre-master随机数,利用RSA公钥加密发送给服务端。
    黑客没有私钥无法解密改数据,也就无法获得pre-master随机数。
    5,客户端与服务端利用pre-master、Client Random和Server Random生成对称加密所用的master sercret
    6,用master sercret加密传递数据
    

    ECDHE混合加密

    TLS/SSL:对称加密与非对称加密

    1,客户端生成Client Random随机数,将加密套件列表等数据发送给服务端
    2,服务端生成Server Random随机数和Server Params,将加密套件和数字证书发送给客户端
    3,客户端校验证书,验证通过生成Client Params发送给服务端
    4,用Server Params和Client Params通过ECDHE生成pre-master随机数。
    5,客户端与服务端利用pre-master、Client Random和Server Random生成对称加密所用的master sercret
    6,用master sercret加密传递数据
    

    TLS1.3的变化

    TLS1.3删除了许多不安全的算法

    • 伪随机数函数由 PRF 升级为 HKDF(HMAC-based Extract-and-Expand Key Derivation Function);
    • 明确禁止在记录协议里使用压缩;废除了 RC4、DES 对称加密算法;
    • 废除了 ECB、CBC 等传统分组模式;废除了 MD5、SHA1、SHA-224 摘要算法;
    • 废除了 RSA、DH 密钥交换算法和许多命名曲线。

    删除的原因是中间人攻击,修改加密套件列表删除加密性强的加密方法只留下指定的加密方法。 TLS/SSL:对称加密与非对称加密

    同时也优化了ECDHE的握手速度,减少了2次RTT时间 TLS/SSL:对称加密与非对称加密

    除了标准的“1-RTT”握手,TLS1.3 还引入了“0-RTT”握手

    1-RTT

    session

    保存当前master secret密钥信息在服务端,客户端保存session信息。当再次握手时通过校验服务端session信息是否存在,存在直接使用。

    问题:负载均衡时确保所有服务器的session存储的一致,session存储在服务器中消耗内存

    ticket

    使用票据,服务端利用私钥加密密钥给客户端保存。当再次握手时传递ticket,服务端私钥解密ticket获得master secret。

    所有服务器的秘钥基本能确保一直,且ticket由客户端存储。

    0-RTT

    ticket传递时同时添加http资源请求。

    重放攻击

    如果0-RTT的数据包被拦截了,黑客可以一直使用这个数据包,无需解密就能一直修改你服务器中的数据。

    所以session、ticket和0-RTT都要设置一个合理的过期时间。

    证书

    有了这么复杂的加密算法为什么还需要CA证书。当黑客DNS污染,将IP地址引导到自己的服务器,那么后续操作都是在他的服务器上操作的,也就不存在破解加密算法的问题。

    所有需要CA证书验证目标网络的正确性。

    数字证书组成:CA信息、公钥信息、公钥、权威机构的数字签名、有效日期

    • 校验有效日期
    • 将CA信息用Hash生成Hash值,用CA机构的秘钥加密生成加密信息A。验证时将CA证书中的CA信息用相同的Hash生成Hash值,用CA的公钥解密加密信息A,对比两个哈希值是否相同
    • CA证书中还有一个证书链,从Root CA、Issure CA、自身CA。Root CA内嵌与浏览器与操作系统中。

    问题: 参考文档,建议按顺序阅读。

    《图解HTTP》
    《透视HTTP协议》罗剑锋 极客时间
    《Web协议详解与抓包实战》陶辉 极客时间
    AES加密:https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
    TLS1.3 RFC8446:https://tools.ietf.org/html/rfc8446
    椭圆曲线安全性 RFC7748:https://tools.ietf.org/html/rfc7748

    《Web协议详解与抓包实战》里的TCP内容是《TCP/IP详解》卷1中的可以买来辅助阅读。


    起源地下载网 » TLS/SSL:对称加密与非对称加密

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元