cryptography,

非对称加密/公开密钥加密是什么

DolorHunter DolorHunter Follow Nov 22, 2020 · 8 mins read

非对称加密/公开密钥加密是什么
Share this

在之前写的 为什么你应该用ECDSA椭圆曲线数字签名算法生成证书 说明了 ECDSA 算法是比 RSA 更好的非对称加密(Asymmetric cryptography)算法或公开密钥密码学(Public-key cryptography). 然而什么是非对称密码, 在之前的文章里面并没有写出来. 正巧最近的信安课程上也提到了这一算法, 因此今天就来说说什么是非对称加密/公开密钥加密.

对称密码学

对称密钥加密, 这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。

对称加密通常使用的是相对较小的密钥,一般小于256-bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1-bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。

非对称密码学

公开密钥密码学/非对称式密码学是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。基于公开密钥加密的特性,它还能提供数字签名的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。

如果公开解密密钥,并用不公开的加密密钥对信息进行加密后发布,则信息接收方可用公钥进行解密,从而可以验证持有私钥方发布信息的完整性,以及确认该信息确实是私钥持有者所发送。这里,私钥被称作数字签名,而公钥就是数字证书。非对称加密方法的出现带来了巨大的影响,甚至可以说是革命性的影响。特别是带来了一种新的安全属性:不可否认性,或称为抗抵赖性。传统抗抵赖基本依靠验笔迹、骑缝章、骑缝签名等方法,这些方法无法应用到数字媒介上。非对称加密方法的出现为抗抵赖提供了可能,这就是数字签名。

1976年,狄菲(Whitfield Diffie)与赫尔曼(Martin Hellman)在雷夫·莫寇(Ralph C. Merkle)思想的基础上,提出了以单向函数与单向暗门函数为基础全球第一个非对称加密算法,即公开密钥算法。1977年,美国麻省理工学院(MIT)的罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)共同发布了著名的RSA非对称公开密钥算法,并成为全世界最流行的公开密钥方法,被ISO推荐为公钥数据加密标准。

常见的公钥加密算法有:RSA、ElGamal、Rabin(RSA的特例)、DSA、ECDSA。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是著名的公开秘钥加密算法。

非对称密码学算法概述

如果任何人使用公钥加密明文,得到的密文可以透过不安全的途径(如网络)发送,只有对应的私钥持有者才可以解密得到明文;其他人即使从网络上窃取到密文及加密公钥,也无法(在数以年计的合理时间内)解密得出明文。典型例子是在网络银行或购物网站上,因为客户需要输入敏感消息,浏览器连接时使用网站服务器提供的公钥加密并上传数据,可保证只有信任的网站服务器才能解密得知消息,不必担心敏感个人信息因为在网络上传送而被窃取。

在现实世界上可作比拟的例子是,一个传统保管箱,开门和关门都是使用同一条钥匙,这是对称加密;而一个公开的邮箱,投递口是任何人都可以寄信进去的,这可视为公钥;而只有信箱主人拥有钥匙可以打开信箱,这就视为私钥。

算法应用参考 David Youd - What is a Digital Signature?

对称密码学和非对称密码学比较

对称密码是指在加密和解密时使用同一个密钥的方式,公钥密码则是指在加密和解密时使用不同密钥的方式。

对称密钥加密牵涉到密钥管理的问题,尤其是密钥交换,它需要通信双方在通信之前先透过另一个安全的渠道交换共享的密钥,才可以安全地把密文透过不安全的渠道发送;对称密钥一旦被窃,其所作的加密将即时失效;而在互联网,如果通信双方分隔异地而素未谋面,则对称加密事先所需要的“安全渠道”变得不可行;非对称加密则容许加密公钥随便散布,解密的私钥不发往任何用户,只在单方保管;如此,即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,极为适合在互联网上使用。

另一方面,公钥解密的特性可以形成数字签名,使数据和文件受到保护并可信赖;如果公钥透过数字证书认证机构签授成为电子证书,更可作为数字身份的认证,这都是对称密钥加密无法实现的。

不过,公钥加密在在计算上相当复杂,性能欠佳、远远不比对称加密;因此,在一般实际情况下,往往通过公钥加密来随机创建临时的对称秘钥,亦即对话键,然后才通过对称加密来传输大量、主体的数据。

参考资料:

Join Newsletter
Get the latest news right in your inbox. We never spam!
DolorHunter
Written by DolorHunter
Developer & Independenet Blogger