《图解密码技术》读书笔记

  之前对现代密码学的相关技术一直处于一知半解的状态,直到这两天读了结城浩的《图解密码技术》才对密码技术有了较为全面和深入的了解。首先要指出的是,“密码”一词在中文里的意义十分含糊,因为它在一般人眼里具有多个意思:

  1. 登录网站时所输入的“密码”,严格意义上应该叫做口令(password);
  2. 我们暂时看不懂的内容,比如“DNA 密码”,实际上这只是一种神秘的编码(encode);
  3. 保证信息安全的技术,这才是真正意义上的密码(cryptography)。

  密码学和密码技术中的“密码”指的都是上面的第 3 个意思,口令和编码不属于密码学的范畴。

  被称作“密码学家的工具箱”的 6 种基本密码技术是:对称密码公钥密码单向散列函数消息认证码数字签名伪随机数生成器

对称密码

  使用相同的密钥进行加密和解密。用于确保消息的机密性,但需要解决密钥配送问题。对称密码算法:

  • DES:不应再用于任何新的用途
  • 三重 DES:不应再用于任何新的用途,仅在一些重视兼容性的环境中仍使用,会逐渐被 AES 取代
  • AES(Rijndael):安全、快速,应该使用
  • AES 最终候选算法:可以作为 AES 的备份
  • 自制算法:不应该使用

公钥密码

  使用公钥进行加密,使用私钥进行解密。用于确保消息的机密性,能够解决密钥配送问题。但速度慢,且存在被中间人攻击的风险。公钥密码算法:

  • RSA
  • ElGamal
  • Rabin
  • 椭圆曲线密码(ECC)

单向散列函数

  将长消息转换为短散列值。用于确保消息的完整性。单向散列函数算法:

  • MD5:不安全,不应该使用
  • SHA-1:不应该被用于新的用途
  • SHA-2(SHA-224、SHA-256、SHA-384、SHA-512):安全,可以使用
  • SHA-3:安全,可以使用

消息认证码

  识别通信对象发送的消息是否被篡改。用于验证消息的完整性,以及对消息进行认证,但无法对第三方进行认证,也无法防止否认。消息认证码算法:

  • HMAC

数字签名

  对第三方进行消息认证,防止通信对象做出否认。相当于公钥密码的逆过程:通过私钥进行签名,通过公钥对签名进行验证。证书=公钥+认证机构的数字签名。数字签名算法:

  • RSA
  • ElGamal
  • DSA
  • 椭圆曲线 DSA(ECDSA)
  • 爱德华曲线 DSA(EDDSA)

伪随机数生成器

  生成具备不可预测性的比特序列,由密码和单向散列函数等技术构成。