golang[34]-区块链-对称加密与非对称加密

对称加密

对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。

常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。

非对称加密

公开密钥加密(英语:Public-key cryptography),也称为非对称加密(英语:asymmetric cryptography),是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给要通信的另一方,即使他被信任。

基于公开密钥加密的特性,它还提供数字签名的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。

公开密钥基础建设透过信任数字证书认证机构的根证书、及其使用公开密钥加密作数字签名核发的公开密钥认证,形成信任链架构,已在TLS实现并在万维网的HTTP以HTTPS、在电子邮件的SMTP以STARTTLS引入。

非对称加密过程

在数学上,d(c(x))=x,让我们使用典型的爱丽丝与鲍伯假设来解释:

爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要透过不安全的互联网向鲍伯发送信息
爱丽丝撰写好原文,原文在未加密的状态下称之为明文 x
鲍伯使用密码学安全伪随机数生成器产生一对密钥,其中一个作为公钥为 c,另一个作为私钥 d
鲍伯可以用任何方法发送公钥c 给爱丽丝,即使伊夫在中间窃听到 c 也没问题
爱丽丝用公钥c 把明文 x 进行加密,得到密文c(x)
爱丽丝可以用任何方法传输密文c(x) 给鲍伯,即使伊夫在中间窃听到密文 c(x)也没问题
鲍伯收到密文,用私钥d 对密文进行解密 d(c(x)),得到爱丽丝撰写的明文x
由于伊夫没有得到鲍伯的私钥d,所以无法得知明文 x
如果爱丽丝丢失了她自己撰写的原文x,在没有得到鲍伯的私钥d 的情况下,她的处境将等同伊夫,即无法透过鲍伯的公钥c 和密文c(x)重新得到原文x

对比

对称密钥加密牵涉到密钥管理的问题,尤其是密钥交换,它需要作者和读者在通信之前先透过另一个安全的渠道交换共享的密钥,才可以安全地把密文透过不安全的渠道发送;对称密钥一旦被窃,其所作的加密将即时失效;而在互联网,如果通信双方分隔异地而素未谋面,则对称加密事先所需要的“安全渠道”变得不可行;非对称加密则容许加密公钥随便散布,解密的私钥不发往任何用户,只在单方保管;如此,即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,极为适合在互联网上使用。
另一方面,公钥解密的特性可以形成数字签名,使数据和文件受到保护并可信赖;如果公钥透过数字证书认证机构签授成为电子证书,更可作为数字身份的认证,这都是对称密钥加密无法实现的。
不过,公钥加密在在计算上相当复杂,性能欠佳、远远不比对称加密;因此,在一般实际情况下,往往通过公钥加密来随机创建临时的对称秘钥,亦即对话键,然后才通过对称加密来传输大量、主体的数据

image.png

猜你喜欢

转载自blog.51cto.com/13784902/2329701