【学习笔记】SSL证书密码套件之加密

本篇将介绍密码套件中加密常用的协议并将他们进行比较,包括:CHACHA20、AES-256-GCM、AES-128-GCM、AES-256-CBC、AES-128-CBC、3DES-CBC、RC4-128、DES-CBC

一、概念

  • (选择以上合适协议)对称加密算法
    • 目的是保护批量数据传输
  • 流密码(Stream Ciphers)
    • CHACHA20、RC4-128
    • Stream Cipher是对称加密协议,需要Client和Server双方有相同的密钥;工作方式是输入明文,输出密文
    • 优势:更快地在软件中实施
      • 为移动端/嵌入式系统提供更好的性能
    • 劣势:容易受到流中比特顺序改变的影响
      • 必须与MAC配对以保证数据完整性(Integrity )
  • 块密码(Block Ciphers)
    • AES-256、AES-128、3DES、DES
    • Block Cipher(也是对称加密协议)将明文文本拆分成几个块,之后每个块将运行块密码加密,每个块将从明文加密成密文
    • 许多PC都有硬件AES芯片
      • 为PC、笔记本电脑、服务器等提供更好的性能
    • 劣势:明文中的图案(pattern)没有被隐藏 - 无扩散(no diffusion)
      • 必须与具体的操作模式相配对
      • 上图中,我们注意到第二段内容的第三个块重复了,相同的块用相同的密钥加密得到的密文是一样的,这是一个问题;再者,如果右上图,我们加密一个企鹅图片,如果使用的块加密模式中没有包含扩散,我们看到虽然企鹅不是白色了,但我们还是能知道原始图片是个企鹅,这会很不安全。因而,为了有效使用块加密,我们需要用特定的操作模式。
    • Block Cipher Modes(块加密模式)
      • ECB - Electronic Code Book,右上图用的就是ECB,我们可以看到它很不安全
      • CBC - Cipher Block Chaining
        • 工作方式:将每个明文块与前一个密文块结合起来,第一个块和初始化向量(Initialization vectorIV,对称密钥生成的随机值)相结合
        • 劣势1:明文的最后一个块必须被填充(这让每个块的大小都相同,比如下图加了ZZZ,每个块大小都为13),这也使CBC加密遭受各种“padding oracle”攻击
        • 劣势2:无法并行(要加密明文块9,我们必须知道密文块8)
      • CTR - Counter Mode
        • 工作方式:将每个明文块与唯一的Nonce(一个只被使用一次的任意或非重复的随机数值)结合起来
          • 通常,Nonce是IV(初始化向量)与递增计数器的组合
        • 劣势:密文块不和之前或之后的块绑定,因而必须要与MAC配对
        • 主要优势:能够并行(明文块9和Nonce 9是相结合的)(适合多处理器、多核CPU)
      • 由上图可知,CBC和CTR完全将图片虚化了,因为CBC和CTR都包含diffusion(扩散)
  • 块密码模式(Block Cipher Modes)
    • -CBC、-GCM
    • CBC - Cipher Block Chaining
    • GCM - Galois Counter Mode,CTR Mode with built-in MAC,AEAD加密
    • AEAD - Authentication Encryption with Associated Data
      • AEAD加密同时同步进行对称加密和MAC编码
      • TLS 1.2推荐使用,TLS 1.3+需要

二、比较

1、不安全的

  • DES - Data Encryption Standard,数据加密标准
    • 标准加密算法in the 1970s / 1980s
    • 56 bit key - 在数小时内能被暴力破解(brute forced)
  • RC4 - 128 - Ron’s Cipher 4
    • Ron Rivest - “R” in RSA
    • 被证明在数学上是不正确的
  • 3DES - Triple DES
    • DES算法,三次不同
      • 宣称的密钥强度:168 bits
    • 通常以 E.D.E 模式部署(Encrypt - Decrypt - Encryp)
      • 用明文密钥1加密明文,然后用明文密钥2运行解密算法,两个密钥不同,再然后用明文密钥1运行加密算法。注意,我们总共只用两个密钥。因而,有效密钥强度是112 bits(小于128 bits,所以不安全)
  • 因此,DES、RC4 - 128、3DES不安全

2、安全的块密码

  • AES - Advanced Encryption Standard,高级加密标准
    • 标准加密算法 since 2001
    • 由公开竞赛所创建
    • AES支持128位、192位或256位密钥(TLS/SSL用128和256的)
      • 256位的密钥大小据称比128位更安全(加密全对此是有争论的)
      • AES - 128当然不能被认为不安全
      • AES - 256需要更高的开销/CPU
    • 许多电脑有硬件AES芯片(让AES加解密处理更快)
      • 需要知道的是,这仅限于不受空间限制的computer(laptop、pc、server...etc),手机、智能电视等IOT设备没有AES芯片
    • GCM比CBC更安全
      • AEAD(Authentication Encryption with Associated Data,同时同步进行对称加密和MAC)加密是面向未来的
      • CBC容易受到填充预言攻击
    • 因此,AES-256-GCM和AES-128-GCM更安全(这两者谁更安全是有争议的)

3、安全的流密码

  • ChaCha20
    • 如此命名是因为它是Salsa20算法的一个变种
      • Salsa20被这样命名是创建者决定的
    • ChaCha20是流加密,用128或者256位密钥
      • 在web或HTTPS中(TLS/SSL中),用的是256位密钥,是非常安全的密码
    • 在软件中,比AES更快
      • 适合手机和IOT设备
    • 如果AES遭泄露(compromised),ChaCha20可以是后备方案
    • 当ChaCha20与哈希算法Poly 1305结合,也被认为是AEAD密码(本篇的AEAD密码是ChaCha20、AES-128-GCM和AES-256-GCM)

参考文献

1、Practical Networking.net:Practical TLS

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值