[密码学]对称密钥加密、非对称密钥加密和混合加密的基本原理

前言

在21世纪,最重要的莫过于情报了。任何公司、组织和国家都有非公开的机密情报,任何人都有自己的不能为他人所知的小九九。而21世纪是互联网的时代,当情报在互联网上传输的时候,不经加密直接传输的话,机密内容会被别有用心的第三者盗听的风险。为了使盗听者无法直接阅读或破译机密情报,有非常多的加密方式算法被发明。本文讨论其中最重要的三种。

本文不讨论具体的加密算法是如何工作的。仅讨论三种加密方式的原理。

对称密钥加密 (Symmetric-key Cryptography)

对称密钥加密,对笔者来说,中文版确实难以理解。在日本这被称为 「共通鍵暗号方式」。一言以蔽之,加密的人与解密的人用的密钥是一样的。这种加密方式被称为对称密钥加密

对称密钥加密的工作原理

对称密钥加密的工作机制首先参考下图。对于送信的一方,使用公共密钥加密明文之后传输给受信一方,受信一方用同一个公共密钥解密密文拿到明文。
对称密钥加密工作机制
看到这里我们可以清楚知道到,一旦密钥泄露那么盗听的人可以轻易地破解传输中的密文拿到机密情报。这也是为什么这种加密方式仅在早期被使用的原因。

对称加密的分类与典型对称加密算法

在介绍典型对称加密算法之前,我们先了解一下对称加密算法的分类。

块加密 (Block cipher) 与流加密 (Stream cipher)

对称加密算法按照是否把明文分割成块之后再进行处理来分类,分为块加密和流加密。具体参考下表。

加密方式 简介 从属算法
块加密 (Block cipher) 对明文按大小分块,对每一块分别进行加密,如AES的Block Size就是固定128bits。 DES,AES,FEAL,IDEA,Camellia
流加密 (Stream cipher) 对明文不分块,对每一bit进行加密 RC4,KCipher-2

典型对称加密算法

下面简单列举3个典型的对称加密算法。

算法 简介 参考
DES (Data Encryption Standard) 代表性对称加密算法,密钥长度为56bits,因此存在2⁵⁶种密钥,对明文每8字节进行分块(block),对每一块加密。现由于计算机处理速度大幅增加导致尝试2⁵⁶种密钥进行暴力破解成为可能。现已经不推荐使用DES。 DES_百度百科
AES (Advanced Encryption Standard) 作为DES后继者登场,区块的长度固定为128 bits,密钥的长度可以是128,192,256 bits。安全性相较于DES大大增加。大众产品大都默认使用128位密钥,而高度机密的情报,则推荐使用192位以上的密钥。 AES_百度百科
Triple DES 就像其名字所表示的,三重DES,即使用三次DES进行加密,每次分别使用独立密钥加密,变相增加了密钥长度至168 (3x56) bits。使暴力破解难度大大增加。 3DES_百度百科

其他的还有一些如FEAL、IDEA等,笔者就不一一列举了。有兴趣的读者可以自己查询。

非对称密钥加密 (Asymmetric Cryptography)

非对称密钥加密,不过这还是难以理解,非对称密钥加密别称公开密钥加密,通过公开的密钥进行加密,通过非公开的私有的密钥进行解密。也因这种公钥私钥不一致的特性,被称为非对称加密

非对称密钥加密工作原理

非对称密钥加密的工作机制首先参考下图。对于送信的一方,使用公开密钥加密明文之后传输给受信一方,受信一方用另同一个私有密钥解密密文拿到明文。
非对称密钥加密工作机制
看到这里我们可以与对称密钥加密做对比,即使公开密钥泄露,盗听的人也不能轻易地破解密文拿到机密情报。当然如果私有秘钥泄露了,那么破解就不是问题了。参考下表,非对称加密里唯一没被公开的就是私钥,只有私钥泄露会导致情报泄露。因此私钥保管是非常重要的。

是否公开?
公钥 (Public-Key)
私钥 (Private-Key)
公钥加密算法
私钥加密算法

典型非对称密钥加密算法

下面简单列举几个典型的非对称加密算法。

算法 简介 参考
RSA (Rivest–Shamir–Adleman) 代表性非对称加密算法,RSA是由三作者的名字组成,这个算法利用对极大整数做因数分解需要大量时间的特性来实现。 RSA_百度百科
ELGamal 目前笔者仅知道这是一种相对常见的非对称加密算法。有兴趣的读者可以自行查阅实现细节。 ELGamal_百度百科

非对称密钥加密算法面临的问题与对策

非对称密钥加密算法和对称密钥加密算法相比,加密・解密的花销十分庞大。处理时间十分缓慢,无法大量用在公众领域,这会占用大量计算资源。
为了解决这一问题,对策就是接下来一节笔者将要介绍的混合加密

混合加密 (Hybrid Cryptography)

混合加密,如其名,就是混用对称密钥加密和非对称密钥加密来实现加密。
混合加密被发明用来解决两个问题

  1. 对称加密的密钥泄露问题: 公共密钥传输或派发之时一旦泄露,机密情报有被破解的风险。
  2. 非对称加密的处理缓慢问题:公开密钥传输或派发之时即使泄露,也不会被破解。但处理速度慢,无法大量使用。

那么我们来看一下混合加密的工作原理。

混合加密的工作原理

混合加密的工作原理简单的来说就是分两步(下有图)

  1. 送信一方(※注意是送信一方,BS里就是浏览器的一方)把使用的公共秘钥本身作为内容通过非对称加密的方式与受信方共享。
  2. 送信一方用第一步共享的公共秘钥,和受信一方通过对称加密的方式共享数据。

这里第一步公共秘钥一般是临时的。如SSL里,这个公共秘钥被称为”symmetric session key”,笔者不知道中文叫什么,字面上可以理解为“会话对称密钥”。通常会话结束,这个密钥就失效了。参考下图。
混合加密的工作原理
通过这种混合的方式,仅用非对称加密解密公共秘钥的那一点数据(<100B)的话,并不会慢,也同时保证了安全性。

混合加密的应用场景

前一节提到了混合加密能同时保证速度和安全性,所以能大量在公众领域使用。笔者在下表中梳理了常见的应用场景。

应用场景 简介
SSL/TLS 全称SSL(Secure Sockets Layer) / TLS(Transport Layer Security),SSL和TLS虽然是各自独立的协议,不过经常被列在一块。TLS是SSL的后继者,基于SSL3.0开发。SSL现已经不推荐使用了(now-deprecated)。
S/MIME 全称Secure Multipurpose Internet Mail Extensions,安全的多用途Internet邮件扩展协议。MIME乍一看也许很陌生,不过你应该在HTTP头里讲过Content-Type这一项,里面所用的就是MIME Type,传输时使用的Public-Key由CA(证书颁发机构 - Link2Wiki)保证,需要注意的是这是一种服务,并不一定是免费的~
PGP 和S/MIME一样,提供了邮件加密和签名的功能。和S/MIME不同的是,PGP不走CA, Publick-Key由第三方保证。

结语

通过本文,希望能帮读者对集中加密有最基本的认识。理解TLS背后的加密工作原理。


ฅ( ̳• ·̫ • ̳ฅ)にゃ♡

发布了24 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ToraNe/article/details/102687858