一、术语
明文、密文、加密、解密
明文(Plaintext)
一般认为明文是有意义的字符或者比特集,或者是通过某种公开编码就能获取的消息,通常用 m 或 p 表示
密文(Ciphertext)
对明文进行某种加密后就变成了密文
加密(Encrypt)
把原始的信息转换为密文的信息变换过程
解密(Decrypt)
把已经加密的信息恢复成明文的过程
二、加密方式
对称加密(Symmetrical Encryption)
加密和解密时使用的密钥都是同样的密钥,只要保证了密钥的安全性,则整个通信过程也就具有了机密性
常用对称加密算法
- DES(Data Encryption Standard)数据加密标准
- 数字数据加密,56位短密钥长度,不安全,基本被淘汰
- 3DES
- DES衍生,使用不多
- AES(Advanced Encryption Standard)高级加密标准
- DES 算法替代者,安全性强度高,性能好,应用最广泛
- 常用 AES-128、AES-192、AES-256
- ChaCha20
- Google 设计,密钥长度固定为 256 位,纯软件运行性能优于 AES
缺点
由于发送方和接收方共用一套密钥,即发送方必须对原始数据进行加密,并将密钥交给接收方,才能解密数据,若途中被拦截,会暴露数据信息,存在安全风险
非对称加密(Asymmetrical Encryption)
含有两个密钥,一个是公钥,一个是私钥,公钥进行加密,私钥进行解密;
公钥可供任何人使用,不需要具有安全性,私钥一般由网站保管
常用非对称加密算法
- RSA
- 安全性基于 整数分解,使用两个超大素数的乘积作为生成密钥的材料
- ECC
- 基于 椭圆曲线离散对数 的数学难题,使用特定的曲线方程和基点生成公钥和私钥,ECDHE 用于密钥交换,ECDSA 用于数字签名
- DSA
混合加密
RSA 运算速度非常慢,AES 加密速度快,在通信开始时使用非对称,解决 密钥交换 问题,再用随机数产生对称算法使用的 会话密钥,再用 公钥加密,拿到密文后用 私钥解密,取出会话密钥
三、加密数据的 完整性、身份认证
完整性实现 -> 摘要算法(Digest Algorithm)
一种特殊的压缩算法,能够把任意长度的数据 压缩 成一种固定长度的字符串
MD5(Message Digest Algorithm 5)
- 属于 密码哈希算法 的一种,MD5 可用于从任意长度的字符串创建 128 位字符串值
加盐值
- 盐 是一项随机数据,用作哈希数据,密码或密码的 单向 函数的附加输入,保护存储中的密码
- 单向 指的是这种算法没有密钥可以进行解密,只能进行单向加密,加密后的数据无法解密,不能逆推出原文
SHA-2 (Secure Hash Algorithm 2)
- 包含 SHA-224, SHA-256, SHA-338, SHA-512 对应生成 28字节,32字节,48字节,64字节的摘要
认证
数字签名:私钥加密(利用唯一性),公钥解密
!
公钥信任问题
CA(Certificate Authority),证书认证机构