常用加密算法和HTTPS工作的简化过程
一、常用的加密算法
加密算法
- 对称加密
- 非对称(公钥)加密
- 单向加密
1、对称加密算法
明文data--加密(key1)-->密文--解密(key2)-->明文data
对称算法:key1=key2(加密和解密使用同一个密钥)
特性:
- 加密、解密使用同一个密钥,效率高
- 将原始数据分割成固定大小的块,逐个进行加密
缺陷:
- 密钥过多
- 密钥分发
- 数据来源无法确认
常见对称加密算法:
- DES:Data Encryption Standard,56bits
- 3DES:
- AES:Advanced (128, 192, 256bits)
2、非对称加密算法
明文data--加密(key1)-->密文--解密(key2)-->明文data
非对称算法:key1 != key2 (通信双方都有两个key,一个公钥public key ,一个私钥:secret key,private key)
非对称加密:密钥是成对出现
- 公钥:public key,公开给所有人,主要给别人加密使用
- 私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名
特点:
- 用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
- 数据加密:适合加密较小数据,比如: 加密对称密钥
- 数字签名:主要在于让接收方确认发送方身份
缺点:
- 密钥长,算法复杂
- 加密解密效率低下
常见非对称加密算法:
- RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可 变的,可实现加密和数字签名
- DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)
- ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥, 提供相当的或更高等级的安全
3、单向哈希算法
哈希算法:也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为digest,即摘要
特性:
- 任意长度输入,固定长度输出
- 若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大。
- 无法从指纹中重新生成数据,即不要逆,具有单向性
功能:验证数据完整性
常见算法
- md5: 128bits
- sha1: 160bits、sha224 、sha256、sha384、sha512
常用工具
- md5sum | sha1sum [ --check ] ?le
- openssl、gpg
- rpm -数字签名
4、综合应用多种加密算法
4.1 实现数据加密
4.1.1 实现数据加密,无法验证数据完整性和来源
4.2实现数字签名
4.2.1不加密数据,可以保证数据来源的可靠性、数据的完整性和一致性
4.3 综合加密和签名
4.3.1 即实现数据加密,又可以保证数据来源的可靠性、数据的完整性和一致性
方法1:Pb{Sa[hash(data)]+data}
方法2:对称key{Sa[hash(data)]+data}+Pb(对称key)
应用比较广泛
总结:
加密数据:公钥加密,私钥解密
数字签名:私钥加密,公钥解密
二、HTTPS
HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over SSL 或 HTTP over TLS ,对http协 议的文本数据进行加密处理后,成为二进制形式传输
1、HTTPS 结构
2、HTTPS 工作的简化过程
1、客户端发起HTTPS请求
2、服务端把自己的证书发送给客户端
3、客户端解析验证服务器证书并生成随机值
4、客户端再用证书中公钥对该随机值进行非对称加密给传服务器
5、服务端用自己的私钥解密得到随机值作为后续的会话密钥来进行加密数据
6、客户端用之前生成的随机值解密服务端传来的数据,于是获取了解密后的内容