OpenSSL算法
两台主机之间怎样进行安全的数据传输呢?安全
ssl/TLS 是什么?为何能够实现数据的加密传输?bash
ssl/TLS是安全的套接字层,在应用层和传输层又虚拟了一个层,当http封装完后传输给TCP层时候,调用SSL层来对数据进行加密服务器
什么是openssl?并发
openssl 是SSL的开源的实现。它有三部分构成。ide
libcrypto:加密库(不通讯时候能够单纯加密本地数据)工具
libssl (ssl/TLS的实现。基于会话的、实现身份认证、数据机密性和会话完整性的ssl/TLS库)openssl 多用途的命令行工具编码
***类型: 威胁保密性的***:窃听、通讯量分析; 威胁完整性的***:更改、假装、重放、否定 威胁可用性的***:拒绝服务(DoS) 解决方案: 技术(加密和解密)、 服务(用于抵御***的服务,也便是为了上述安全目标而特意设计的安全服务) 服务: 认证机制 、访问控制机制
密钥算法和协议加密
对称加密spa
特性:
一、加密、解密使用同一个密钥;
二、将原始数据分割成为固定大小的块,逐个进行加密; 注:能够保证数据的机密性
缺陷:
一、密钥过多;
二、密钥分发困难;
算法:3DES,AES,Blowfish
公钥加密 密钥分为公钥与私钥
特色:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
用途:数字签名:主要在于让接收方确认发送方的身份;
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
数据加密
算法:RSA(主要用于密钥交换,也可签名,也能够加密和解密数据), DSA(只能用于签名), ELGamal
单向加密
特性:定长输出、雪崩效应;提出数据指纹;只能加密,不能解密;
算法:md5: 128bits sha1 160bits sha224, sha256, sha384, sha512
你知道怎样保证密钥传输的安全性?密钥交换: IKE
公钥加密RSA(使用对方的公钥加密) 缺点是:在网上传输了
Diffie-Hellman(密码不在网上传输)
A和B传输数据如何保证数据机密性、完整性、身份验证的呢? 以下图
一、同理B收到数据后,用本身的私钥解密,获得对称密钥。
二、而后用对称密码解密整个数据,保证了数据的机密性。B用A的公钥可以解密数据特征码,能够验证数据来自于A。
三、B再次用单向加密算法就算出数据特征码进行比对,若是同样表示数据没有改动,验证了数据的完整性。
为何要用到pki?
PKI: 公钥基础设施:能够用来验证数据来源的合法性
组成: 签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:
SSL会话主要三步:
客户端向服务器端索要并验正证书;
双方协商生成“会话密钥”;
双方采用“会话密钥”进行加密通讯;
如图:
client server
A-----------------------------------B
------->hello
hello <---------------
验证证书,公钥加密随机数--------->
B计算全部的随机密钥,生成一个对称密钥
服务端握手结束通知
SSL Handshake Protocol:
第一阶段:ClientHello:
支持的协议版本,好比tls 1.2;
客户端生成一个随机数,稍后用户生成“会话密钥”
支持的加密算法,好比AES、3DES、RSA;
支持的压缩算法;
第二阶段:ServerHello
确认使用的加密通讯协议版本,好比tls 1.2;
服务器端生成一个随机数,稍后用于生成“会话密钥”
确认使用的加密方法;
服务器证书;
第三阶段:
验正服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)
发送如下信息给服务器端:一个随机数;
编码变动通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
客户端握手结束通知;
第四阶段:
收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话全部到的“会话密钥”;
向客户端发送以下信息:
编码变动通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
服务端握手结束通知;