<aside> 💡 本期讨论活动已结束,更多有意思的活动和分享,欢迎关注 0xFFFF 网站 和群聊
</aside>
学习材料
The Missing Semester 第9讲讨论 - 安全与密码学 - 3.26_哔哩哔哩_bilibili
请不要 试图创造或者修改加密算法
Entropy (熵)
xkcd 的漫画
如何度量:更安全的密码
熵 - 信息量
Cryptographic Hash Function
定义
hash(value: array<byte>)
-> vector<byte, N> (N对于该函数固定)
sha1 函数,sha1sum 工具
散列函数的性质(设计目标):确定 / 不可逆 / 弱 or 强抗碰撞
脑洞:计算机世界的实体一般可以理解为是有限的,从个数的角度去看;寻找碰撞的艰难性,所以可以信任(概率问题,如王小云破解 md5)
应用场景
不再使用 md5 的考虑:弱碰撞性
Key Derivation Functions
hash 和 加密 的差异
Symmetric key cryptography
keygen() -> key (这是一个随机方法)
encrypt(plaintext: array<byte>, key) -> array<byte> (输出密文)
decrypt(ciphertext: array<byte>, key) -> array<byte> (输出明文)
必须满足:decrypt(encrypt(m, k), k) = m
应用:从技术视角上确保隐私安全
理想情况:Vernam
两种工作模式:
加密算法的安全性:(关键在于密钥的保护)
openssl 加密某文件
Asymmetric cryptography
keygen() -> (public key, private key) (this function is randomized)
encrypt(plaintext: array<byte>, public key) -> array<byte> (the ciphertext)
decrypt(ciphertext: array<byte>, private key) -> array<byte> (the plaintext)
sign(message: array<byte>, private key) -> array<byte> (the signature)
verify(message: array<byte>, signature: array<byte>, public key) -> bool (whether or not the signature is valid)
比喻:一把打开状态下的挂锁,只有私钥可以打开
签名的场景
非对称密钥系统
非对称应用场景
Hybrid encryption(有对称也有非对称)
理解 TLS 架构 TLS 简单入门
Key Distribution
使用场景
何时使用何种加密