首页 > 其他分享 >【学习笔记】SSL证书密码套件之加密

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

时间:2024-09-11 17:23:27浏览次数:3  
标签:CBC AES 加密 套件 明文 SSL 密钥 128

本篇将介绍密码套件中加密常用的协议并将他们进行比较,包括: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 vector,IV,对称密钥生成的随机值)相结合
        • 劣势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

标签:CBC,AES,加密,套件,明文,SSL,密钥,128
From: https://blog.csdn.net/Taki_UP/article/details/142097646

相关文章

  • 基于OpenSSL的密码管理系统-应用密码学课程报告
    第1章概要设计1.1设计目的本研究旨在设计并实现一个基于OpenSSL的密码管理系统,该系统具备密钥对的生成、密钥上传、密钥的核对、身份认证、文件与邮件的加密和解密、数字签名及数字证书管理等常用功能。研究的意义主要体现在以下几个方面:提升网络信息安全水平:通过集成多种密......
  • 【开源分享】PHP 在线客服系统源码 全开源无加密,支持自动刷新 网页即时接收消息
    智能化在线客服系统也是其中一个必备功能。其智能化主要体现在细节中,在保持客服人员工作正常进行的情况下,让效率变高。智能化在线客服系统采取“轮询”的工单分配方式,让合适的客服人员处理合适的问题;提供“视图”功能,让客服人员专注于重要工单;强大的“搜索”功能,迅速锁定目标客户......
  • java学习之HttpClient忽略安全证书(SSLContext)
    1.我们在写https请求时候,经常会遇见安全证书(SSL)验证失败的情况,如下图。 上图异常就是因为SSL验证失败导致的,常规的做法是忽略证书认证。方法如下:第一步:需要重写认证的证书类 X509ExtendedTrustManager。第二步:创建SSLContext对象。第三步:将SSLContext对象设置到HttpClien......
  • 加密芯片在游戏行业内的应用
    版权保护、数据安全存储与传输,这是游戏机厂商最迫切的需求。对于版权保护的实现,推荐算法移植方案、配合参数移植和对比认证,安全强度已是行业内最高级别,在此不做敷述。本次主要讲解如何利用LKT加密芯片实现数据安全存储与传输。LKT加密芯片内部具有一块NVM区,其特点是掉电不擦除,只......
  • Python 加密算法详解与应用
    引言随着互联网的普及,数据传输与存储中的安全性问题变得尤为重要。加密算法是一种有效保护数据的方法,广泛应用于文件加密、网络通信以及身份认证等场景中。Python作为一种易于上手且功能强大的编程语言,提供了多种加密库供开发者使用,如cryptography、pycryptodome等库。本篇文章将详......
  • C# 混淆加密大师1.2.5更新, 新增多个混淆选项和功能, 附免费版下载地址
    C#混淆加密大师支持 .NetFramework2.0到.NetFramework4.x,以及.NETCore2.0至最新的.NET8版本的C#程序,包括Winform、WPF、Unity游戏以及控制台程序的混淆加密,可有效保护C#程序代码,防止非法复制或篡改,保护知识产权.  特性1.支持多种不同的程序框架:包括Winform......
  • 源代码加密是什么?如何做源代码加密?
    源代码加密是什么?如何做源代码加密?在软件开发过程中,版本管理工具如SVN和GIT是不可或缺的组成部分,它们帮助团队管理源代码的变更和版本。然而,这些工具也面临着源代码泄露的安全风险。如果不针对数据进行加密保护,很容易出现“一锅端”的现象。所以源代码开发环境复杂,涉及的开发......
  • C#生态园:数据安全从我做起——C#加密库应用指南
    #C#生态园:数据安全从我做起——C#加密库应用指南在当今数字化时代,数据安全已经成为企业和个人不可忽视的重要议题。随着数据量的不断增长和数据价值的不断提升,保护数据免受未经授权的访问和恶意变得尤为重要。C#作为一种广泛使用的编程语言,提供了丰富的加密库和工具,帮助开发者构建......
  • 镭速加密上传大文件方法
    在当今的信息时代,大数据已经成为我们生活中不可或缺的一部分,尤其是对于企业来说,如何在网上传输大文件,保证这些文件在传输过程中的安全是非常重要的。对此,本文将详细介绍镭速如何通过加密技术将大文件安全上传到服务器。第一,文件加密的重要性文件加密是保护未经授权的第三方访问数据......
  • 镭速加密上传大文件方法
    在当今的信息时代,大数据已经成为我们生活中不可或缺的一部分,尤其是对于企业来说,如何在网上传输大文件,保证这些文件在传输过程中的安全是非常重要的。对此,本文将详细介绍镭速如何通过加密技术将大文件安全上传到服务器。第一,文件加密的重要性文件加密是保护未经授权的第三方访问数据......