5、单向加密:即提出数据指纹(即特征码);只能加密,不能解密;
特性:定长输出、雪崩效应;
功能:数据完整性的验证;
算法:
md5:Message Digest(消息摘要) 5(版本号), 128bits
sha1:Secure Hash Algorithm 1, 160bits
sha224, sha256, sha384, sha512
6、证书
将自己的公钥给CA进行特殊加工,通过特殊加工的公钥称之为 证书
7、PKI:Public Key Infrastructure
公钥基础设施:
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:CB
X.509v3:定义了证书的结构以及认证协议标准
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者的惟一标识
主体的惟一标识
扩展
发行者的签名
8、SSL/TLS
SSL: 安全套接字层(ssl 1.0, ssl 2.0, ssl 3.0)
TLS:传输层安全 (tls 1.0, tls 1.1, tls 1.2, tls 1.3)
协议的开源实现:OpenSSL
*提供了加密解密库:libencrypto库
*libssl库
*openssl多用途命令行工具
OpenSSL使用详解
1、SSL会话主要三步:
第一步:客户端向服务器端索要并验正证书;
第二步:双方协商生成“会话密钥”;
第三步:双方采用“会话密钥”进行加密通信;
2、SSL Handshake Protocol:会话阶段(为会话的前两步)
第一阶段:ClientHello(客户端向服务器端发送加密通信请求):
向服务器端发送自己支持的协议版本,比如tls 1.2;
客户端生成一个随机数,稍后用户生成“会话密钥”
向服务器端发送自己支持的加密算法,比如AES、3DES、RSA;
向服务器端发送自己支持的压缩算法;
第二阶段:ServerHello(服务器端回应客户端)
向客户端确认使用的加密通信协议版本,比如tls 1.2;
服务器端生成一个随机数,稍后用于生成“会话密钥”
向客户端确认使用的加密方法;
发送服务器证书;
第三阶段:
客户端验正服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)
客户端发送以下信息给服务器端:
一个随机数;(秘钥,用于服务器上的公钥加密)
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
客户端握手结束通知;
第四阶段:
收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有到的“会话密钥”;
向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
服务端握手结束通知;
3、PKI:公钥基础设施(其功能主要是维护证书提供证书的,发放证书只是PKI中的一个功能)
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库
4、OpenSSL功能应用
(1)组件:
libcrypto, libssl主要由开发者使用;
openssl:多用途命令行工具;
(2)openssl子命令:(当输入一个错误命令时,会跳出一个子命令使用提示窗口eg:openssl ?)
许多子命令,分为三类:
标准命令:enc, ca, req, genrsa, ...
消息摘要命令(dgst子命令)
加密命令(enc子命令)