Symmetric encryption and asymmetric encryption

对称加密与非对称加密

对称加密 vs 非对称加密

「对称加密」就是通信双方进行加密与解密使用相同的密钥,但除了双方都要保守密钥外,怎么让双方都持有相同的密钥本身就是个问题,存在被劫持的风险(中间人攻击)。

「非对称加密」通过一对密钥(Key Pair),也就是公钥与私钥来解决对称加密会遇到的问题。

假设 A 要与 B 通讯 > 则 A 只需使用 B 的公钥对信息进行加密 > 最终 B 使用私钥对信息进行解密。当中奇妙的地方在于:

  • 发出的加密消息不会被泄漏
  • A 与 B 保管好自己的私钥无需分享
  • 就算 A 的私钥被窃取,只有发送给 A 的加密消息会被泄漏

想象信箱,任何人都可以投递但只有信箱的主人才能打开,公钥和私钥的概念本质上是一个「上锁与开锁钥匙是不同的锁」的构造。

在数字世界中通过单向函数🔗从随机生成的私钥计算公钥很容易,但从公钥反推私钥在计算上几乎不可能。

结合两者优势

  • 非对称加密负责解决「密钥分发问题」:如何安全地让通信双方共享密钥
  • 对称加密负责解决「性能问题」:如何快速加解密大量数据

巧妙地结合了两种加密方式的优点,同时规避了各自的缺点,例如:

  • TLS🔗 握手阶段
    • 浏览器向服务器索取 SSL 证书,获得服务器的公钥
    • 双方协商加密算法
    • 浏览器生成随机的会话密钥
    • 用服务器公钥加密会话密钥并传送
    • 服务器用私钥解密,双方确认握手完成
  • 数据传输阶段
    • 所有网页内容、图片、视频都用会话密钥(AES)快速加密
    • 每次重新连接都会产生新的会话密钥

延伸阅读