IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 你了解TLS协议吗? -> 正文阅读

[网络协议]你了解TLS协议吗?

1.写在前面

前面的博客我们介绍了对应的网络的一些协议,比如说HTTP1协议,还有就是WebSocket协议,同时还HTTP2协议,今天我们要介绍对应的TLS/SSL协议。

2.TLS/SSL协议的工作原理

TLS设计目的

  • 身份验证
  • 保密性
  • 完整性

TLS/SSL发展

在这里插入图片描述

TLS协议

Record记录协议

  • 对称加密

Handshake握手协议

  • 验证通讯双方的身份
  • 交换加解密的安全套件
  • 协商加密参数

TLS安全密码套件解读

在这里插入图片描述

3.对称加密的工作原理:XOR与填充

对称加密

在这里插入图片描述

AES对称加密在网络中的应用

在这里插入图片描述

对称加密与XOR异或运算

在这里插入图片描述

填充padding

  • Block cipher 分组加密:将明文分成多个等长的Block模块,对每个模块分别加解密
  • 目的:当最后一个明文Block模块涨肚不足时,需要填充
  • 填充方法
    • 位填充:以bit位为单位来填充

    • 在这里插入图片描述

    • 字节填充:以字节为单位为填充

    • 在这里插入图片描述

4.对称加密的工作原理:工作模式

分组工作模式 block cipher mode of operation

  • 允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。

ECB(Electronic codebook)模式

  • 直接将明文分解为多个块,对每个块独立加密
  • 问题:无法隐藏数据特征
  • 在这里插入图片描述

CBC(Cipher-block chaining)模式

  • 每个明文块先与前一个密文块进行异或后,再进行加密
  • 问题:加密过程串行化
  • 在这里插入图片描述

CTR(Counter)模式

  • 通过递增一个加密计数器以产生连续的密钥流
  • 问题:不能提供密文消息完整性校验
  • 在这里插入图片描述

验证完整性:hash函数

在这里插入图片描述

验证完整性:MAC(Message Authentication Code)

在这里插入图片描述

GCM

  • Galois/Counter Mode
    • CTR + GMAC
    • 在这里插入图片描述

5.详解AES对称加密算法

AES(Advanced Encryption Standard)加密算法

  • 为比利时密码学家Joan Daemen 和Vincent Rijmen所设计,又称Rijndael加密算法
  • 常用填充算法:PKCS7
  • 常用分组工作模式:GCM

AES的三种密钥长度

  • AES分组长度是128位(16字节)
  • 在这里插入图片描述

AES的加密步骤

  1. 把明文按照128bit(16字节)拆分成若干个明文块,每个明文块是4*4矩阵
  2. 按照选择的填充方式来填充最后一个明文块
  3. 每一个明文块利用AES加密器和密钥,加密成密文块
  4. 拼接所有的密文块,成为最终的密文结果

AES加密流程

  • C=E(K,P),E 为每一轮算法,每轮密钥皆不同
    • 初始轮 AddRoundKey轮密钥加
  • 普通轮
    • AddRoundKey轮密钥加
    • SubBytes字节替代
    • ShiftRows行移位
    • MixColumns列混合
  • 最终轮
    • SubBytes字节替代
    • ShiftRows行移位
    • AddRoundKey轮密钥加
    • 在这里插入图片描述

AddRoundKey步骤

  • 矩阵中的每一个字节都与该次回合密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
  • 在这里插入图片描述

密钥扩展

  • 函数g步骤
    • a.字循环:左移1个字节
    • b.使用S盒字节代换
    • c.同轮常量RC[j]进行异或,其中j表示轮数
    • 在这里插入图片描述

SubBytes步骤

  • 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节
    • 提供非线性变换能力,避免简单代数性质的攻击
    • 在这里插入图片描述

S盒

在这里插入图片描述

ShiftRows步骤

将矩阵中每个横列进行循环式移位。

  • 第一行不变
  • 第二行循环左移1个字节
  • 第三行循环左移2个字节
  • 第四行循环左移3个字节
  • 在这里插入图片描述

MixColumns步骤

在这里插入图片描述

6.非对称密码与RSA算法

非对称密码

  • 每个参与方都有一对密钥
    • 公钥 向对方公开
    • 私钥 仅自己使用
    • 在这里插入图片描述

非对称加解密的过程

  • 加密 使用对方的公钥加密消息
  • 解密 使用自己的私钥解密消息
  • 在这里插入图片描述

RSA算法

  • 1977年由罗纳德李维斯特(Ron Rivest)阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)一起提出,因此名为RSA算法

RSA算法中的公私钥的产生

  1. 随机选择两个不相等的质数p和q

  2. 计算p和q的乘积n(明文小于n)

  3. 计算n的欧拉函数v

  4. 随机选择一个整数k 1<k<v,且k与v互质

  5. 计算k对于v的模反元素d

  6. 公钥(k,n)

  7. 私钥(d,n)

在这里插入图片描述

RSA算法加解密流程

  • 加密:c=m^k(mod n) m是明文,c是密文
  • 解密:m=c^d(mod n)
  • 举例:对明文数字123加解密
    • 公钥(3,319) 加密 123^mod319=140 对140密文用私钥(187,319)解密 140^187mod 319 =123
    • 私钥(187,319) 加密 123^187mod=161 公钥(3,319)解密 161^3mod319=123

7.基于openssl实战验证RSA

使用OpenSSL基于RSA算法生成公私钥

  • 生成私钥 openssl genrsa -out private.pem

    在这里插入图片描述

  • 从私钥中提取出公钥 openssl rsa -in private.pem -pubout -out public.pem

    在这里插入图片描述

  • 查看ASN.1格式的私钥 openssl an1parse -i -in private.pem

    在这里插入图片描述

  • 查看ASN.1格式的公钥 openssl asn1parse -i -in public.pem

    在这里插入图片描述

  • openssl asn1parse -i -in public.pem -strparse 19

    在这里插入图片描述

使用RSA公私钥加解密

  • 加密文件 openssl rsautl -encrypt -in hello.txt -inkey public.pem -pubin -out hello.en
  • 解密文件 openssl rsautl -decrypt -in hello.en -inkey private.pem -out hello.de

8.非对称密码应用:PKI证书体系

非对称密码应用:数字签名

  • 基于私钥加密,只能使用公钥解密:起到身份认证的使用
  • 公钥的管理:Public Key Infrastructure(PKI)公钥基础设施
    • 由 Certificate Authority(CA)数字证书认证机构将用户个人身份与公开密钥关联在一起
    • 公钥数字证书组成
      • CA 信息、公钥用户信息、公钥、权威机构的签字、有效期
    • PKI 用户
      • 向 CA 注册公钥的用户
      • 希望使用已注册公钥的用户

**签发证书流程 **

在这里插入图片描述

**签名与验签流程 **

在这里插入图片描述

**证书信任链 **

在这里插入图片描述

**PKI 公钥基础设施 **

在这里插入图片描述

**证书类型 **

在这里插入图片描述

**验证证书链 **

在这里插入图片描述

9.非对称密码应用:DH 密钥交换协议

RSA 密钥交换

  • 由客户端生成对称加密的密钥

    在这里插入图片描述

  • 问题:没有前向保密性

**DH 密钥交换 **

  • 1976 年由 Bailey Whitfield Diffie 和 Martin Edward Hellman 首次发表,故称为Diffie–Hellman key exchange,简称 DH

  • 它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥

    在这里插入图片描述

DH 密钥交换协议举例一

  • g、p、A、B 公开
  • a,b 保密
  • 生成共同密钥 K
  • 在这里插入图片描述

DH 密钥交换协议举例二

  • 协定使用 p=23 以及 base g=5.

  • 爱丽丝选择一个秘密整数 a=6, 计算A = ga mod p 并发送给鲍伯。

    • A = 56 mod 23 = 8.
  • 鲍伯选择一个秘密整数 b=15, 计算B = gb mod p 并发送给爱丽丝。

    • B = 515 mod 23 = 19.
  • 爱丽丝计算 s = B a mod p

    • 196 mod 23 = 2.
  • 鲍伯计算 s = A b mod p

    • 815 mod 23 = 2.

    在这里插入图片描述

DH 密钥交换协议的问题

  • 中间人伪造攻击
    • 向 Alice 假装自己是 Bob,进行一次 DH 密钥交换
    • 向 Bob 假装自己是 Alice,进行一次 DH 密钥交换
  • 解决中间人伪造攻击
    • 身份验证

10.ECC 椭圆曲线的原理

**ECC椭圆曲线的定义 **

  • 椭圆曲线的表达式:
    y 2 = x 3 + a x + b , 4 a 3 + 27 b 2 ! = 0 y^2=x^3+ax+b,4a^3+27b^2!=0 y2=x3+ax+b,4a3+27b2!=0

  • 始终关于 X 轴对称(y 平方的存在)

    在这里插入图片描述

**ECC 曲线的特性:+运算 **

  • P+Q=R

    • +运算的几何意义:R 为 P、Q 连续与曲线交点在 X 轴上的镜像
    • P+P=R

  • +运算满足交换律

    • a + b = b + a
  • +运算满足结合律

    • (a + b) + c = a + (b + c)

    在这里插入图片描述

**+运算的代数计算方法 **

  • 先计算出斜率 m,再计算出 R 点的坐标

    在这里插入图片描述

**ECC+运算举例 **

  • 设曲线:y2=x3-7x+10
  • 设 P=(1,2),Q=(3,4),计算出 R(-3,-2)
    • P 在曲线上,因为 22=4=13-71+10
    • Q 在曲线上,因为 42=16=33-37+10=27-21+10
    • R 在曲线上,因为 -22=4=-33-7*(-3)+10=-27+21+10
    • 在这里插入图片描述

**ECC 的关键原理 **

  • Q=K.P

    • 已知 K 与 P,正向运算快速

    • 已知 Q 与 P,计算 K 的逆向运算非常困难

      在这里插入图片描述

11.DH 协议升级:基于椭圆曲线的 ECDH 协议

**ECDH 密钥交换协议 **

  • DH 密钥交换协议使用椭圆曲线后的变种,称为 Elliptic Curve Diffie–Hellman key Exchange,缩写为 ECDH,优点是比 DH 计算速度快、同等安全条件下密钥更短
  • ECC(Elliptic Curve Cryptography):椭圆曲线密码学
  • 魏尔斯特拉斯椭圆函数(Weierstrass‘s elliptic functions):y2=x3+ax+b
  • 在这里插入图片描述

**ECC 的关键原理 **

  • Q=K.P

    • 已知 K 与 P,正向运算快速

    • 已知 Q 与 P,计算 K 的逆向运算非常困难

      在这里插入图片描述

**ECDH 的步骤 **

  1. Alice 选定大整数 Ka 作为私钥

  2. 基于选定曲线及曲线上的共享 P 点,Alice 计算出 Qa=Ka.P

  3. Alice 将 Qa、选定曲线、共享 P 点传递点 Bob

  4. Bob 选定大整数 Kb 作为私钥,将计算了 Qb=Kb.P,并将 Qb 传递给 Alice

  5. Alice 生成密钥 Qb.Ka = (X, Y),其中 X 为对称加密的密钥

  6. Bob 生成密钥 Qa.Kb = (X, Y),其中 X 为对称加密的密钥

    Qb.Ka = Ka.(Kb.P) = Ka.Kb.P = Kb.(Ka.P) = Qa.Kb

**X25519 曲线 **

  • 椭圆曲线变种:Montgomery curve 蒙哥马利曲线

    • By2 = x3 + Ax2 + x
    • A=7,B=3
    • 在这里插入图片描述
  • X25519:y2 = x3 + 486662x2 + x

    • p 等于 2255 – 19,基点 G=9
    • order N

12.TLS1.2 与 TLS1.3 中的 ECDH 协议

**TLS1.2 通讯过程 **

在这里插入图片描述

**FREAK 攻击 **

在这里插入图片描述

**openssl 1.1.1 版本对 TLS1.3 的支持情况 **

  • Ciphersuites 安全套件
    • TLS13-AES-256-GCM-SHA384
    • TLS13-CHACHA20-POLY1305-SHA256
    • TLS13-AES-128-GCM-SHA256
    • TLS13-AES-128-CCM-8-SHA256
    • TLS13-AES-128-CCM-SHA256

**TLS1.3 中的密钥交换 **

在这里插入图片描述

13.握手的优化:session 缓存、ticket 票据及 TLS1.3的0-RTT

**session 缓存:以服务器生成的 session ID 为依据 **

在这里插入图片描述

**session ticket **

在这里插入图片描述

**TLS1.3 的 0RTT 握手 **

在这里插入图片描述

**0-RTT 面临的重放攻击 **

在这里插入图片描述

14.TLS 与量子通讯的原理

TLS 密码学回顾

  • 通讯双方在身份验证的基础上,协商出一次性的、随机的密钥
    • PKI 公钥基础设施
    • TLS 中间件生成一次性的、随机的密钥参数
    • DH 系列协议基于非对称加密技术协商出密钥
  • 使用分组对称加密算法,基于有限长度的密钥将任意长度的明文加密传输
    • 密钥位数
    • 分组工作模式

**克劳德·艾尔伍德·香农:信息论 **

  • 证明 one-time-pad(OTP)的绝对安全性
    • 密钥是随机生成的
    • 密钥的长度大于等于明文长度
    • 相同的密钥只能使用一次

**QKD 与光偏振原理 **

  • 量子密钥分发 quantum key distribution,简称 QKD
    • 量子力学:任何对量子系统的测量都会对系统产生干扰
    • QKD:如果有第三方试图窃听密码,则通信的双方便会察觉
    • 在这里插入图片描述

15.量子通讯BB84协议的执行流程

**BB84 协议 **

在这里插入图片描述

**BB84 协议示意图 **

在这里插入图片描述

**QKD 密钥纠错与隐私增强 **

在这里插入图片描述

16.写在最后

这篇博客我们主要介绍了tls协议,后面会继续介绍TCP、IP协议

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 17:06:02  更:2022-06-26 17:06:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 21:54:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计