学习
实践
活动
专区
工具
TVP
写文章

区块链中的密码学:非对称加密

本文由币乎(bihu.com)优质内容计划支持

在区块链世界中,我们都能经常看到一个词,叫非对称加密,究竟什么是非对称加密呢?

非对称加密,又称为公开密钥加密,是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密;

由私钥可以推算出公钥,但是知道公钥,在实际情况中不可能推算出私钥,所以公钥是公开的,而私钥由用户自行秘密保管。

非对称加密类似于一个公开的邮箱,投递口是任何人都可以寄信进去的,这可视为公钥;而只有邮箱主人拥有钥匙可以打开邮箱,这就视为私钥。

在了解非对称加密前,我们需要了解什么是对称加密?

对称加密,也称为单密钥加密,是指采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密。

用一个现实世界上的例子是,一个传统保管箱,开门和关门都是使用同一条钥匙,这是对称加密;

但是对称加密在互联网中传输信息,就会产生两个问题:

没有创建安全通道前,如何实现安全通讯?

这是一个先有鸡还是先有蛋的问题,如果在先发送加密数据,但是不知道解密密钥,无法正确解密数据;如果先明文发送密钥,这种加密又有什么意义呢?

如何确保是由发送人发出的信息?

在这个虚拟的互联网中,就算把数据加密,但是如果黑客劫持了你的网络,发送加密信息,这种数据又有什么意义呢?

为了解决这两个问题,所以产生了非对称加密,这个加密思想是 1974 年由 Merkle 提出,1976 年由斯坦福大学的两位教授 Diffie 和 Hellman 完善。

我们先来看看第一个问题,如何实现安全通讯?

维基百科上举了一个爱丽丝与鲍伯的例子:

爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要通过不安全的互联网向鲍伯发送信息

爱丽丝撰写好原文,原文在未加密的状态下称之为明文 x

鲍伯使用密码学伪随机数产生一对密钥,其中一个作为公钥为 c,另一个作为私钥 d

鲍伯可以用任何方法发送公钥 c 给爱丽丝,即使黑客在中间窃听到 c 也没问题

爱丽丝用公钥 c 把明文 x 进行加密,得到密文 c(x)

爱丽丝可以用任何方法传输密文 c(x) 给鲍伯,即使伊夫在中间窃听到密文 c(x) 也没问题

鲍伯收到密文,用私钥 d 对密文进行解密 d(c(x)),得到爱丽丝撰写的明文 x

由于黑客没有得到鲍伯的私钥 d,所以无法得知明文 x

这个过程简单来说就是公钥加密明文 c(x) 只有用私钥才能解密,即 d(c(x)),最终得出了明文 x。

我们再来看第二个问题,如何确保是由发送人发出的信息?

如果某一用户使用他的私钥加密明文,任何人都可以用该用户的公钥解密密文;由于私钥只由该用户自己持有,故可以肯定该文件必定出自于该用户。

这就引申了一个概念叫:数字签名,即只有信息的发送者才能产生的,别人无法伪造的数据,这段数据同时也是对信息的发送者,发送信息真实性的一个有效证明。

由此可见非对称加密的优点:

创建了一个信息安全通道

为信息发送者提供数字身份的认证

但是缺点也很明显,计算太复杂,性能欠佳。

常见的公钥加密算法有:RSA、椭圆曲线加密算法、ElGamal等等,使用最广泛的是RSA算法。

由公钥为什么不能推算出私钥呢?RSA 算法又究竟是怎么实现的呢?这个问题比较复杂,有兴趣可以去看一下,华南理工大学的计算机网络安全课程公开密钥密码学。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180206A0WFS900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券