菜鸟学Linux 第043篇笔记 加密协议

简介:

菜鸟学Linux 第043篇笔记 加密协议




数据在互联网上加密传输原理

TCP/IP 安全

A-->B

机密性:明文传输(ftp, http, smtp, telnet)

完整性

身份验证

机密性:plaintext --> 转换规则 --> ciphertext 加密

ciphertext --> 转换规则 --> plaintext 解密

转换算法: 密钥

对称加密: 算法计算速度快 密钥相同

数据完整性 A-->B

Eve

单向加密算法:提取数据特征码

输入一样: 输出必然相同

雪崩效应: 输入的微小改变,将会引起结果的巨大改变

定长输出: 无论原始数据是多大,结果大小都是相同的

不可逆:   无法根据特征码还原成原来的数据

A: plaintext:footprint --> B

协商生成密码:密钥交换(Internet Key Exchange, IKE)

Diffie-Hellman协议

A --> B

P, g (大素数, 生成数)

A:x

B: y

A: g^x%p --> B

A: g^y%p --> A

互联网传输数据: g, p, g^x%p, g^y%p

A: (g^y%p)^x=g^yx%p

B: (g^x%p)^y=g^xy%p

公钥加密算法:  非对称加密算法

密钥对:

公钥:p

私钥:s

发送方用自己的私钥加密数据,可以实现身份验证

发送方用对方的公钥加密数据,可以保证数据机密性

公钥加密算法很少用来加密数据:速度太慢

CA 专用的认证发证机构

PKI (Public Key Infrastructure)

CA

分析数据加密传输步骤

A发送加密数据给B

1.A先将原数据用单向加密生成特征码

2.A将特征码用自己的私钥加密放在原数据包后

3.A使用对称加密算法随机生成一个随机数将原数据包和

 用私钥加密的特征码打包起来再加密

4.A再用B的公钥将此随机数加密, 并将上一步的加密数据包,

 和随机加密数据包传输给B

以上的第4步则为数据机密(密文)传输


B解密A发来的数据包

1. B用自己的私钥将随机加密数据包解密,解出随机数(机密传输解密)

2. B用解出的随机数再将打包的加密数据解密(打开密文数据包)

3. B再用A的公钥将特征码解出(身份验证)

4. B再用数据单向加密算法将A所发的原数据再进行一次

  单向加密得出的特征码和A所发的特征码做比较(即数据的完整性校验)

以上所讲的都关乎于非对称加密的私钥和公钥,所以这个很重要,也要进行验证即CA机构

CA机构首先产生的是自己的证书,然后就可以为别人做公钥证书

A、B双方要验证对方的公钥即需要CA机构,

A要和B发送数据之前,互相传送对方的公钥,然后将得到的公钥和CA机构给的公钥做对比验证

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1881552如需转载请自行联系原作者


Winthcloud

相关文章
|
18天前
|
Linux 数据安全/隐私保护 Windows
aes加密在linux下会生成随机key的解决办法
aes加密在linux下会生成随机key的解决办法
11 2
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
143 2
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
1月前
|
Linux 网络安全 开发工具
【Linux笔记】常用的Linux的指令
【Linux笔记】常用的Linux的指令
|
2月前
|
机器学习/深度学习 资源调度 安全
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
25 0
|
2月前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
26 0
|
2月前
|
安全 搜索推荐 API
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
91 0
|
2月前
|
机器学习/深度学习 安全 搜索推荐
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
41 0
|
2月前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
72 0