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 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 对称加密和非对称加密 -> 正文阅读

[系统运维]对称加密和非对称加密

通俗易懂的记录下自己对俩个加密原理的理解和实际项目中主要采用的加密方式

网络安全主要包括四点:

1.机密性:即我们常说的加密,解密

2.报文完整性:保证不被别人篡改

3.端点鉴别:证实对方确实有他们声称的身份

4.运行安全性:防火墙

一.对称密钥密码体系

发送方和接收方共享密钥

流密码用于无线LAN

块密码用于多种因特网协议加密,如:PGP(安全电子邮件),SSL(更安全的TCP),IPsec(更安全的网络层传输)

1.块密码

块密码将报文按块划分,比如一个块3比特,一个块64比特

简单示例:

三比特块密码映射表示例:

输入输出输入输出
000110100011
001111101010
010101110000
011100111001

这是一对一的映射,明文000对应密文110,想换个密文对应就要换一张表,能换多少种呢?可不是8种,其他明文对应密文变了那就又是一张新表了.所以要排列组合,8!=40320

即:k比特的块的映射表也就是可能的密钥有(2^k)!种.

一般都是64块,所以想穷举破解不太可能.

但是64位的表多大啊?怎么维护,所以现在

函数来模拟随机排列表,代表算法:DES,3DES,AES

2.密码块连接

之前缺陷:相同明文会产生相同密文,容易被猜出来.

解决方案:为明文块生成随机数,然后跟明文做异或.相同明文产生不同密文.

新的缺陷:宽带直接翻倍.

解决方案:开头随机一个数跟明文块1作异或,生成密文块1,用密文块1跟明文块2作异或生成密文块2,连锁反应.这个开头随机数就叫初始向量.相比之前传输长度只加了一个数的长度.这种技术称为密码块链接技术(Cipher Block Chaining,CBC).

?

二.非对称密钥体系/公开密钥加密体系

经典算法:RSA

明文无论是用公钥加密私钥解密还是私钥加密公钥解密结果相同

可以不看,我只是搬来严谨点

这依赖俩个事实:

1).模运算

19 mod 5 =4 取余

[(a mod n) · (b mod n)] mod n = (a·b) mod n

2).数论

p和q是素数,且有n=pq和z=(p-1)(q-1),则 x^y?mod n = [x^(y?mod z)] mod n(麻了,数学太牛了)

RSA的安全性依赖于这个事实:

3).因数分解难!

生成公私钥的步骤

①选俩个大素数p,q越大破解越难

②n=pq 和 z=(p-1)(q-1)

③选一个小于n的一个数e,使e和z没有除1以外的公因数

④求一个数d,使ed-1可以被z整除即:ed mod z = 1

⑤(n,e)为公钥;(n,d)为私钥.加密:c = (m^e) mod n 解密:m = (c^d) mod n

证明:不写了.我们是程序员,不是数学家

三.报文完整性和数字签名

1.散列函数

常用算法:MD5(MD4为其前身),SHA-1(Security Hash Algorithm)

使用方法:

①报文m使用算法生成散列H(m).

②m+H(m)即:明文+散列一起发送过去,报文为(m,H(m))

③收到报文(m,h)后验证散列,计算H(m)=h,则报文完整

已知缺点:算法已知,m直接替换m1生成H(m1),验证也发现不了任何问题

改进方案:使用秘密串s,称为鉴别密钥(Authentication Key),这个密钥是秘密的,不会被外人知道.

使用方法:

①用m+s生成散列为H(m+s),散列H(m+s)称为报文鉴别码(Message Authentication Code,MAC)

②还是用m+H(m+s)发送,报文为(m,H(m+s)).

③因为s即鉴别密钥是秘密的,同样验证成功后就一定是完整的,未被篡改的

目前最流行的标准HMAC

2.数字签名

用私钥加密即为加签.

同样三步:

①m用私钥s加密生成签名H(m)

②发送(m,H(m))

③收到(m,h)用公钥解密h得到m,验证成功

?项目中对接其中一个公司的加密

其中另一个公司的加密,其实不是很规范,直接发送签名串,利用了能用公钥解开就是正确的加密特性,与传统验签比少了对比明文的过程.

缺点:完整加密太费性能

改进方案:先对明文m使用散列,再加签,然后明文和签名一起发送

?

验证:明文m的散列=公钥解密签名

这种需要用私钥加签的,公钥一定要有认证,在我的项目中,与其他公司对接公钥证书就是从认证中心(Certification Authority, CA)申请的.CA对公钥签名,我们用CA来验证这个公钥可信.?

我对接的俩家公司采用的加密过程,标准的先摘要再加签,最后明文签名一起发送

参考文章:CBC模式解读_实践求真知-CSDN博客_cbc模式

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:26:30  更:2021-12-03 13:28:21 
 
开发: 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年11日历 -2024/11/16 2:54:49-

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