密码学
2024-06-07 20:06:00 0 举报
AI智能生成
密码学知识体系
作者其他创作
大纲/内容
密钥套件(密码学算法的组合)
组成
身份验证算法
如RSA
密钥协商算法
用于协商出预备主密钥(PremasterSecret), DH参数及DH公钥由服务器发送
若使用RSA密钥协商算法,那么服务器的密钥对非常重要,服务器的公钥不仅要进行身份验证,还要进行密钥协商,一旦私钥泄露,就失去了前向安全性
若使用静态DH算法,服务器证书中会包含固定的DH参数及DH公钥,也会失去前向安全性。故现在密钥套件很少支持DH算法,CA机构在签发证书时也不会包含DH参数及DH公钥
为保证前向安全性,目前使用最多的密钥协商算法是DHE算法及ECDHE算法。这两个算法和服务器的密钥对关系不大,即密钥的协商不取决于服务器的密钥对,服务器的私钥即使泄露也不会造成太大风险
加密算法或加密模式
如 AES_CBC_128,使用AES对称加密算法,加密模式是CBC,密钥长度是128bit
HMAC算法的加密基元
如 HMAC_SHA1,该算法用于保证数据完整性
PRF的加密基元
实践
查看客户端和服务器支持的密钥套件
openssl ciphers -V
查看服务器是否支持某个特定的密钥套件
openssl s_client -cipher "ECDHE-RSA-AES128-SHA" -connect www.baidu.com:443 -tls1_1
秘钥协商算法
MAC 算法(Message Authentication Code)
由来
Hash 算法可以完成数据完整性校验,但却不能避免消息被篡改
两种形式
CBC-MAC
从块密码算法的 CBC 分组模式演变而来
HMAC(Hash-based MAC)
它是HTTP 中应用最多的MAC算法, 该算法使用 Hash 算法作为加密基元
变种
HMAC-SHA-1
HMAC-SHA256
HMAC-SHA512
AE (Authenticated Encryption)加密模式
结合对称加密算法及 MAC 算法提供机密性和完整性的模式
三种模式
Encrypt-and-MAC (E&M)
对消息分别进行加密运算及 MAC 运算,然后将两个结果结合起来发送给接收方
MAC-then-Encrypt (MtE)
对消息进行 MAC 运算,然后将消息及 MAC 值组合在一起进行加密,
最终加密值再发送给接收方. HTTPS 一般使用该方式
Encrypt-then-MAC (EtM)
对消息进行 加密,得到密文, 然后对密文再计算 MAC 值 , 最终将两者组合发送给接收方
ADAE (Authenticated Encryption with Associated Data)加密模式
底层组合加密算法及 MAC 算法, 能够同时保证数据机密性及完整性, 减轻使用者负担
三种模式
CCM(Counter with CBC-MAC)
GCM(Galois/Counter Mode)
目前较为流行的模式
采用 GHASH(MAC 算法) 进行 MAC 运算, 使用块密码 AES
算法 CTR 模式的一种变种进行加密运行, 性能及效率非常不错
ChaCha20-Poly1305
HTTP 不安全的原因
数据未加密
身份无法验证
数据易篡改
密码学 Hash 算法分类
MD5
摘要长度 128byte, 已被证明不安全,, 理论上经过 2 的 80 次方运算就会产生碰撞, 目前最快只要 2 的 63 次方就可出现碰撞
SHA族类
SHA-1
类似 MD5, 摘要长度为 160 byte. 已被证明不安全
SHA-2
SHA-256
摘要长度 256
SHA-512
摘要长度 512
SHA-384
摘要长度 384
SHA-224
摘要长度 224
SHA-3
SHA3-256
摘要长度 256
SHA3-512
摘要长度 512
SHA3-384
摘要长度 384
SHA3-224
摘要长度 224
数据加密算法
分类
对称加密算法( Synmmetric-key Algorithms)
流密码算法 (stream ciphers)
RC4
已被证明不安全
ChaCha
块密码算法 (block ciphers)
实现
AES
对称加密算法的标准算法. 美国国家标准与技术研究院 NIST 对众多对称加密算法进行考核,从安全性及效率进行多方面测评,最终选择 Rijindael 算法作为对称加密算法标准. 以 Rijindael算法为原型创建了 AES(Advanced Encryption Standard)算法, 即最终的对称加密算法
DES
3DES
Blowfish
不推荐使用
Rijindael
Camellia
IDEA
SEED
迭代模式
ECB 模式(Electronic Code)
CBC模式(Cipher Block Chaining)
CTR模式
非对称加密算法( Asynmmetric Cryptography), 也称公开秘钥算法
RSA
将两个大素数相乘十分容易,但是想要对其乘积进行因式分解极其困难,因此可以将乘积公开作为加密密钥
DSA (Digital Signature Algorithm)
数字签名算法,是一种标准的 DSS(数字签名标准)
ECC
基于椭圆曲线上离散对数计算问题(ECDLP)
区别
1. 对称加密算法主要用于加密解密, 而非对称加密算法还可以用于秘钥协商\数字签名
2. 对称加密算法秘钥是一串数字,而非对称则是一对,公钥及私钥
3. 非对称加密算法尤其是 RSA 算法运算非常慢
0 条评论
下一页