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

news2024/9/24 15:19:50

本篇将介绍密码套件中加密常用的协议并将他们进行比较,包括: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux从0到1 基础完整知识

1. Linux系统概述 Linux是一种开源操作系统,与Windows或macOS等操作系统不同,Linux允许用户自由地查看、修改和分发其源代码。以下是Linux系统的一些显著的优势。 稳定性和可靠性: 内核以其稳定性而闻名,能够持续运行数月甚至数…

Codeforces Round 971 (Div. 4)——C题题解

本题的大意是一个青蛙从原点开始跳格子(0,0),最终要跳到点(x,y)去,并且每一步的步长不能超过k,问最短几步可以跳到终点 分析: 本题利用贪心思想,肯定是先跳最大的步长这样总体用的步数最长 代码演示: #inc…

等待唤醒机制和阻塞队列

1. 等待唤醒机制 由于线程的随机调度,可能会出现“线程饿死”的问题:也就是一个线程加锁执行,然后解锁,其他线程抢不到,一直是这个线程在重复操作 void wait() 当前线程等待,直到被其他线程唤醒 void no…

【QT】自制一个简单的时钟(跟随系统时间)

目录 源代码: 输出结果如下: 使用QT完成一个简单的时钟图形化界面,功能是完成了时分秒指针能够跟随系统时间移动 设计思路: 1、首先将时钟的边框绘制出来 2、定义出一个定时器t1,将定时器连接到update_slot槽内&#…

CSS 常用元素属性

CSS 属性有很多, 可以参考文档 CSS 参考手册 1. 字体属性 设置字体 多个字体之间使用逗号分隔. (从左到右查找字体, 如果都找不到, 会使用默认字体. )如果字体名有空格, 使用引号包裹.建议使用常见字体, 否则兼容性不好. <style>.one {font-family:"Microsoft Ya…

Docker数据卷介绍及相关操作

数据卷的介绍 数据卷&#xff08;Data Volumes&#xff09;&#xff1a;是一个虚拟目录&#xff0c;是容器内目录与宿主机目录之间映射的桥梁。 对数据卷的修改会立马生效数据卷可以在容器之间共享和重用对数据卷的更新&#xff0c;不会影响镜像数据卷默认会一直存在&#xf…

Element UI:初步探索 Vue.js 的高效 UI 框架

Element UI&#xff1a;初步探索 Vue.js 的高效 UI 框架 一 . ElementUI 基本使用1.1 Element 介绍1.2 Element 快速入门1.3 基础布局1.4 容器布局1.5 表单组件1.6 表格组件1.6.1 基础表格1.6.2 带斑马纹表格1.6.3 带边框表格1.6.4 带状态的表格 1.7 导航栏组件讲解 二 . 学生列…

动态规划(一)——斐波那契数列模型

文章目录 斐波那契数列模型第N个泰波那契数 补充&#xff1a;空间优化——滚动数组三步问题最小花费爬楼梯解码方法 斐波那契数列模型 回头总结&#xff1a; 斐波那契数列模型一般都是线性dp&#xff0c;对于这类DP题目的状态表示一般是 以i为结尾&#xff0c;… 分析状态转移方…

google vr 入门之VrPanoramaView制作全景图列表(1)

展示图片的列表我这里使用RecycleView&#xff0c;activity_main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android“http://schemas.android.com/apk/res/android” xmlns:tools“http://schemas.android.com/tool…

又一个iPhone时代开始

今年的苹果秋季发布会在昨晚召开了&#xff0c;今天早上我们也看到了很多相关的新闻。我猜你看完后的感觉可能是&#xff0c;这不过又是一次普普通通的参数升级。又是提升了百分之多少&#xff0c;又是增加了多少倍——非常简单的一些更新。比如说芯片升级了、相机的摄像头一会…

【机器学习】7 ——k近邻算法

机器学习7——k近邻 输入&#xff1a;实例的特征向量 输出&#xff1a;类别 懒惰学习&#xff08;lazy learning&#xff09;的代表算法 文章目录 机器学习7——k近邻1.k近邻2.模型——距离&#xff0c;k&#xff0c;分类规则2.1距离——相似程度的反映2.2 k值分类规则 算法实…

Datawhale X 李宏毅苹果书 AI夏令营 《深度学习详解》第十九章 ChatGPT

19.1 ChatGPT 简介和功能 1、对话框可以输入任何东西 2、可以继续追问 19.2 对于 ChatGPT 的误解 1、第一个误解是 ChatGPT 的回答是罐头讯息 2、另外一个常见的误解是 ChatGPT 的答案是网络搜索的结果 3、那 ChatGPT 真正在做的事情是什么呢&#xff1f;一言以蔽之就是做…

【F179】基于Springboot+vue实现的幼儿园管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 系统管理也都将通过计算机进行整体智能化操作&#xff…

Adobe Acrobat DC无法将图片转换成PDF?教你用Python快速解决,最后附上集成小程序!

存在问题 当用Adobe Acrobat DC想将图片转换成PDF的时候&#xff0c;有时候会报错&#xff0c;如下&#xff1a; 多次尝试还是出现这个问题。 解决方案 基于Python代码实现 from PIL import Image import osdef images_to_pdf(input_folder, output_pdf):""&quo…

Emlog程序屏蔽用户IP拉黑名单插件

插件介绍 在很多时候我们需要得到用户的真实IP地址&#xff0c;例如&#xff0c;日志记录&#xff0c;地理定位&#xff0c;将用户信息&#xff0c;网站数据分析等,其实获取IP地址很简单&#xff0c;感兴趣的可以参考一下。 今天给大家带来舍力写的emlog插件&#xff1a;屏蔽…

【办公类】大组工会学习(文心一言+Python批量)

背景需求&#xff1a; 每学期要写一份工会的大组政治学习读后感&#xff08;9月-1月&#xff0c;共5次&#xff09; 学习内容 9月、10月、11月、12月、1月的学习内容文字稿 在班级里&#xff0c;我擅长电脑工作&#xff0c;所以这种写的工作都包了。 中2班三位老师一共写3篇&…

社区版IDEA连接MySQL数据库以及使用的详细方法

1、下载插件 由于社区版没有为我们提供DataBase&#xff0c;所有需要我们自己去下载DataBase插件。 步骤如下&#xff1a;1、File->Settings &#xff08;图片序号标错&#xff09;2、Plugins->搜索DataBase Navigator&#xff0c;点击install安装&#xff0c;安装…

新火种AI|估值飙升到千亿美元!OpenAI拿什么去支撑这惊人身价?

作者&#xff1a;小岩 编辑&#xff1a;彩云 OpenAI又有大动作了。 近期&#xff0c;有消息曝出&#xff0c;OpenAI正在进行新一轮的融资。此次融资阵仗极大&#xff0c;OpenAI很可能在本轮融资后估值飙升至千亿美元&#xff0c;成为全球范围内的“超级巨头”。 千亿估值的…

【机器学习-监督学习】集成学习与梯度提升决策树

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

erlang学习: Mnesia Erlang数据库3

Mnesia数据库删除实现和事务处理 -module(test_mnesia). -include_lib("stdlib/include/qlc.hrl").-record(shop, {item, quantity, cost}). %% API -export([insert/3, select/0, select/1, delete/1, transaction/1,start/0, do_this_once/0]). start() ->mnes…