通信加密和解密,公钥,私钥,CA

news/2024/5/18 11:52:21 标签: udp, tcp/ip

监听模式:打开ip和端口=套接字 等待别人来连接
为众所周知的服务--固定的端口<1024
客户端程序都是打开一个大于40000 的端口

一个主机与另外主机进程通信过程:
客户端应用层进程本身负责封装应用层的报文,包括添加应用层首部等。
不是所有进程都可以
wget就是可以网络通信的程序
都需要处理应用层的处理

封装好应用层程序向内核发起系统调用,内核负责完成通信子网功能。
封装传输层首部,网络层首部,帧首部,最后通过物理传输介质,

接受的主机就会解封数据包,解封后会根据端口将应用层报文教给应用层注册这个端口的进程。
对应的进程负责处理。比如i请求页面就会磁盘io到磁盘分区将请求页面由进程加载进来封装。

真正的封装就是编码为特定格式。比如base64格式。。
http协议 
实际是需要加解密的

文本编码是没有多余的功能,流视化 可加密对方可还原

不具备加解密的http服务应该怎么办呢?

通信加密和解密

在这里插入图片描述

为http协议研发了可被调用的公共功能模块
以库的方式放在 在应用层和传输层之间

只要调用了这个库就是 ssl 安全套接字层

开发程序的程序员只要开发的时候调用了这个库,这个库自身可以帮我们完成加解密功能以及密钥分发功能。

大部分协议还是没有加解密的  
用户输入密码会被窃取的
Http协议本身是不支持加解密的

因此http调用ssl库--->https

你会发现浏览商品都是http输入密码就变成https
现在全栈https--浏览商品也被加密了,很多运营商很流氓,分析通信功能,替换为自己的广告等、
为了避免劫持 就使用了https

增加了很多cpu压力  但是是值得的

安全的目标:
  保密性,完整性,可用性

攻击类型:
在这里插入图片描述但是密码如何实现密钥的传送呢?  密钥算法和协议就是为了解决  DH算法--专门交换的
在这里插入图片描述
Linux系统为了实现上述目标需要一些服务:
在这里插入图片描述

用于实现加密解蜜的库:libencrypt
实现ssl安全通信机制的库:libssl
openssl多用途命令行工具

DES  56bit密钥
AES支持 128bit 192bit  256bit密钥

密钥长度多了一倍 安全强度不止一倍为止

在这里插入图片描述服务器和1000个人通信 因此需要1000个密码  因为如果使用同一个 那么a就可以看到b的数据

密钥分发--DH算法 看到你俩眉来眼去 也不知道真实的数据

公钥加密比私钥加密慢得多

完整性,可用性,保密性 一起

alice使用单项加密算法加密数据得到特征码,然后把这个特征码使用自己的私钥加密生成数字签名附加在数据后面,alice生成临时的对称密钥。并使用对称密钥加密整段数据。为了保证bib解蜜,alice机组使用bob公钥继续加密临时的对称加密密钥 附加在后面 一并发送过去

之所以使用对称加密算法是因为通信过程中如果一直使用公钥加密会造成资源浪费等。

bob私钥解蜜 得到对称加密的密码 也就是密钥交换 解蜜数据后 得到数据和特征码 用alice的公钥验证特征码的签名看是否是alice发送的 使用单项加密加密数据 和特征码比较 如果一样 说明没有被篡改

保证了保密性,完整性以及身份认证
在这里插入图片描述alice和bob彼此不认识

存在中间人攻击
eve把公钥给alice假装是bob eve再伪装为alice去找bob 再把公钥给bob假装是alice 这样整个通信都会经过eve进行

bob无法验证那个人不是alice

因此这个时候需要一个机构CA 保证可靠的获取到对方的公钥 设立的第三方可信机构

在这里插入图片描述bob把公钥给ca ca经过签名后把证书给bob 所以alice之后通信bob就发证书过去 alice认证证书 才会确认是bob本人

如何验证CA呢?

证书:拥有者名称,公钥,证书有效期限,ca私钥加密特征码

CA 会有自签名证书,然后发送给每一个信任他的用户。
所以alice拿到ca的证书获得她的公钥。然后验证bob证书她的签名。

如何可靠的获得ca的证书?

根ca下面有很多机构 可以传递

微软系统会内置ca证书 不用再通过互联网获取了

如果盗版系统就不一定了

bob私钥丢失了,要立即向ca申请撤销

DSA仅仅能签名
RSA可签名可加密
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
办理身份证去公安局(注册机构)–>但是派出所没有制作身份证的技术

谁签证?区公安局 发身份证 全国认可

吊销列表:xx公司章子已作废

证书存取库:证书签发机构的在自己的机构还有一个存储的证书 用户可以下载查看

证书组织结构:
在这里插入图片描述

客户端和服务器基于ssl是如何通信的呢?

say hello 以及各自加密的算法 密钥交换的算法
客户端请求要证书
服务器发送
客户端验证合法性,
但是客户端一般没有证书 比如访问淘宝 不在乎你是谁 除了网银页面
客户端选择随机数生成当成密码(第一阶段已经确定对称还是非对称加密了) 用对方的公钥加密 发给服务器
服务器用密码加密客户端请求的网页
客户端即可解蜜
然后浏览完毕

客户端请求断开连接
服务器会话断开 会话截至

双向认证 SSL 协议的具体过程

① 浏览器发送一个连接请求给安全服务器。

② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。

③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA
中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。

④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。

⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。

⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。

⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。

⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。

⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。

上面所述的是双向认证 SSL 协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。

加密算法如何在通信中确保安全性??两种使用机制。
1.手工机制 用户<–>用户
在这里插入图片描述

数据特征码取处来,私钥加密。即数字签名。bob对整个数据加密(对称加密算法-临时密钥)使用对方公钥加密临时的对称密钥然后附加在数据后面一起发送过去。 结果发送给alice alice使用私钥解蜜得到对称密钥。解蜜数据得到数字签名和数据。因此使用对方公钥解蜜特征码,解密成功验证身份成功。然后计算数据特征码对比解蜜后得到的特征码,数据完整性得到验证。然后确定是对方了就可以通信了。

以上依赖用户写的软件自行完成的

很多协议没这种功能。

出现了ssl协议

http依赖ssl/tls去完成

任何一种协议的实现都需要程序

比如http协议就是httpd

ssl实现就是openssl
三部分:
用于实现加密解蜜的库:libencrypt
实现ssl安全通信机制的库:libssl
openssl多用途命令行工具

在这里插入图片描述
以https为例子
客户端向网页发起请求

ssl会话详细版本:

浏览器向服务器发起clienthello请求:主要是发送自己支持的协议版本,客户端生成随机数,支持的加密算法,压缩算法

第二阶段如果服务器段需要客户端证书也发送请求,但是一般情况不需要
在这里插入图片描述第三阶段
随机数用于服务器公钥加密
编码变更通知:随后信息用对方商定的密钥和算法加密
三个随机数确保临时性的

在这里插入图片描述
以上只是握手

后续就是根据生成的会话密钥进行通信加密了

在这里插入图片描述

在这里插入图片描述
具体的加密实现方式可以借助openssl 支持各种加密的

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
openssl 加密
enc加密
-e加密
-des3加密算法
-a bash64编码格式
-salt 随机数
-in加密的文件
-out输出的文件

在这里插入图片描述手动加解密的认证

在这里插入图片描述

在这里插入图片描述可以发现直接使用md5sum和openssl dgst计算的结果一样

##68 openssl未完 1:00


http://www.niftyadmin.cn/n/779137.html

相关文章

lamp配置

上一篇链接-------------------apache的配置 httpd的压力测试&#xff1a; 主机上线之前需要进行压力测试&#xff0c;评估其响应能力 并发请求 最多并发启动256个进程 十万个请求100路并发 1000路并发 对比单个请求的响应时间 一个资源请求三秒是否能够得到响应 -k 就是看…

nginx反向代理配置+lnmp优化+七层负载upstream+keepalived

反代服务器取得内容缓存到本地&#xff0c;然后加速返回给客户端。 缓存命中率高 可以极大的缓解后端服务器压力。影响&#xff4e;&#xff47;&#xff49;&#xff4e;&#xff58; 一般&#xff4e;&#xff47;&#xff49;&#xff4e;&#xff58;作为负载均衡器&…

zabbix续

官方文档都有 全新的 自动解决依赖安装了php httpd等 数据库准备ok了 更改数据库密码 Admin 定义触发器还需要依赖关系 万一是路由器坏了 后端的真实主机都是好的 zabbix proller 数据采集轮询器 其实就是zabbix 进程 就是到定义的被监控主机去拉取数据 采集的指…

linux笔记(一)----linux基础知识

#### 虚拟机管理 rht-vmctl redhat virt machine control          ###红帽虚拟机控制器 [kioskfoundation0 Desktop]$ rht-vmctl start desktop   ##开启 Starting desktop.   ##正在开启 [kioskfoundation0 Desktop…

linux笔记(二)————基础命令

文件管理 一、新建 #1.新建文件 touch file file1 file2 … 注意&#xff1a; touch默认用来建立文件&#xff0c;同时此命令具备修改文件时间戳功能 -a 或–timeatime或–timeaccess或–timeuse  只更改存取时间。 -c 或–no-create  不建立任何文档。 -d  使用指定…

linux笔记(三)————vim;输入输出

vim Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器&#xff0c;在Vi的基础上改进和增加了很多特性。vim是自由软件。 1.命令模式 浏览文件&#xff0c;临时更改vim的工作方式&#xff0c;对字符批量处理 2.插入模式 对文件内容进行编辑 3.退出模式 正确安…

linux笔记(四)————用户管理

用户管理 1.用户存在的意义 安全 用户概念在系统中是系统安全机制的一部分 2.组存在的意义 共享 开放权力 通过建立用户组&#xff0c;或者控制新建用户所在的用户组&#xff0c;可以控制用户访问系统的权限。 3.用户的查看 &#xff08;1&#xff09;查看当前用户    …

linux笔记(五)————权限管理

文件权限 1.文件权限存在的意义 系统最底层安全设定方法之一 保证文件可以被可用的用户做相应操作 2.文件权限的查看 ls -l file ls -ld dir ll file #查看文件 ll -d dir #查看目录 3.文件权限的读取 - |rw-rw-r--| 1 |kiosk | kiosk | 0 | Jul 21 09:18 | file [1] …