OpenSSL 入门:密码学基础知识( 四 )

【OpenSSL 入门:密码学基础知识】诸如 Google 之类的主要网站通常会发送多个证书进行身份验证 。
输出以有关 TLS 会话的摘要信息结尾,包括加密算法套件的详细信息:
SSL-Session:Protocol : TLSv1.2Cipher : ECDHE-RSA-AES128-GCM-SHA256Session-ID: A2BBF0E4991E6BBBC318774EEE37CFCB23095CC7640FFC752448D07C7F438573...client 程序中使用了协议 TLS 1.2,Session-ID 唯一地标识了 openssl 实用程序和 Google Web 服务器之间的连接 。Cipher 条目可以按以下方式进行解析:

  • ECDHE( 椭圆曲线 Diffie-Hellman(临时)(Elliptic Curve Diffie Hellman Ephemeral))是一种用于管理 TLS 握手的高效的有效算法 。尤其是,ECDHE 通过确保连接双方(例如,client 程序和 Google Web 服务器)使用相同的加密/解密密钥(称为会话密钥)来解决“密钥分发问题” 。后续文章会深入探讨该细节 。
  • RSA(Rivest Shamir Adleman)是主要的公共密钥密码系统,并以 1970 年代末首次描述了该系统的三位学者的名字命名 。这个正在使用的密钥对是使用 RSA 算法生成的 。
  • AES128( 高级加密标准(Advanced Encryption Standard))是一种 块式加密算法(block cipher),用于加密和解密 位块(blocks of bits) 。(另一种算法是 流式加密算法(stream cipher),它一次加密和解密一个位 。)这个加密算法是对称加密算法,因为使用同一个密钥进行加密和解密,这首先引起了密钥分发问题 。AES 支持 128(此处使用)、192 和 256 位的密钥大小:密钥越大,安全性越好 。通常,像 AES 这样的对称加密系统的密钥大小要小于像 RSA 这样的非对称(基于密钥对)系统的密钥大小 。例如,1024 位 RSA 密钥相对较小,而 256 位密钥则当前是 AES 最大的密钥 。
  • GCM( 伽罗瓦计数器模式(Galois Counter Mode))处理在安全对话期间重复应用的加密算法(在这种情况下为 AES128) 。AES128 块的大小仅为 128 位,安全对话很可能包含从一侧到另一侧的多个 AES128 块 。GCM 非常有效,通常与 AES128 搭配使用 。
  • SHA256( 256 位安全哈希算法(Secure Hash Algorithm 256 bits))是我们正在使用的加密哈希算法 。生成的哈希值的大小为 256 位,尽管使用 SHA 甚至可以更大 。
加密算法套件正在不断发展中 。例如,不久前,Google 使用 RC4 流加密算法(RSA 的 Ron Rivest 后来开发的 Ron’s Cipher 版本 4) 。RC4 现在有已知的漏洞,这大概部分导致了 Google 转换为 AES128 。
总结我们通过安全的 C Web 客户端和各种命令行示例对 OpenSSL 做了首次了解,使一些需要进一步阐明的主题脱颖而出 。下一篇文章会详细介绍 ,从加密散列开始,到对数字证书如何应对密钥分发挑战为结束的更全面讨论 。


推荐阅读