如果你知道区块链的交易信息是在互联网上发送且可以公开查询的,那么你是否会担心数据泄密?这些信息中包括金融数据,例如谁从什么账户里向谁的账户转了多少钱,谁来保证用户的隐私和数据安全?
传统的银行是通过限制对金融信息的访问实现隐私的控制和数据安全的,但区块链恰恰相反,它将交易信息公开,然后用其他方案来保证数据的安全。
那是什么方案呢?答案是匿名性和非对称加密。
关于匿名性,中本聪做了一个形象的比喻:这就像股市,公众能看见什么时间成交了多少量,但并不清楚参与方都有谁。
非对称加密听起来技术性更强,其实它只是实现了这样一件事:我要给你100 块钱,我往桌上一放,每个人都能看到是我放在这的,但只有你能拿得走。
你一定会好奇这是怎么做到的,下面就来说明。
在讲非对称加密之前,先简单讲一下对称加密。对称加密也叫作单密钥加密,指的是用同一个密钥对信息进行加密和解密。简单讲就是上锁和开锁用同一把钥匙。
例如在现实生活中,你想寄一封信给你的朋友,为了确保信的内容不被他人剽窃,你会想着把信件锁在安全的柜子里,然后将柜子寄给朋友,而你的朋友只能用你给的钥匙才能打开这个柜子,进而取出信件。这样一来就保证了信件在邮寄过程中不被他人看到。
“上锁”和“开锁”用同一把钥匙,这把钥匙相当于对称加密中的“私钥”,而“上锁”和“开锁”过程相当于“加密”和“解密”过程,“信件”则是我们要加密的信息,信息加密后是“密文”,解密后则是“明文”。
但是细心的你可能想到,信件上锁放入柜子固然安全,但是开这个柜子必须用上锁的那把钥匙,那么这把钥匙怎么给朋友?一旦选择邮寄钥匙,就存在安全隐患,除非亲手把钥匙交给朋友,这样的话为什么不直接亲手把信件给朋友呢?
所以, 对称加密的一个 难 题是密钥配送困难。 针对这一难题,密码学史上伟大的发明——非对称加密——诞生了。
非对称加密有一对密钥,分别是私钥和公钥,公钥和私钥一一对应,私钥需要保密,公钥则是可以公开的。加密和解密不用同一个密钥。
回到之前的例子,你朋友有一对钥匙(钥匙 A 和钥匙 B),钥匙 A 可以锁上柜子,钥匙 B 可以打开柜子。于是按如下步骤操作,便可保证信件的安全了。
1.朋友把钥匙 A 邮寄给你,钥匙B由自己保管。
2.你用钥匙 A 把信件锁到柜子中。
3.你将柜子邮寄给朋友。
4.朋友用钥匙 B 打开柜子,取出信件。
在非对称加密中,钥匙A 相当于公钥,它被人知道也没有关系;钥匙B 相当于私钥,它需要小心保存,不能丢失。“上锁”和“开锁”对应“加密”和“解密”过程。
细心的你又想到了,如果在朋友把钥匙A 寄给你的时候,快递人员偷配钥匙怎么办?
复制钥匙A(公钥)是没用的。因为快递人员即使有钥匙 A,也不能打开柜子,柜子被钥匙A 锁上之后,只能被钥匙B打开。这期间,钥匙B一直在朋友手上,只要朋友不把钥匙B弄丢,这个柜子就只能由朋友打开。
在非对称加密中,最重要的是加密和解密用的不是一把密钥,而是一对密钥,即私钥和公钥。比特币中的公钥就是通过私钥推导出来的,公钥再转换成账户地址,公钥和账户地址都是可以公开的。 最重要的是,你无法通过公钥反向推导出私钥。
上述过程简单来说就是“公钥加密,私钥解密”。在区块链中,当别人给你转账的时候,你的收款地址相当于公钥,是公开的,而只有持有私钥才可以“解密”转入的资产。
所以,当你能像看股票交易信息那样实时查看区块链加密资产交易信息时,别忘了,在非对称加密及其他技术的保驾护航下,这些彻底公开的数据,也彻底安全。
接下来,你会不会想:既然公钥是人人都能看到的,那么我们又如何确认发送人的信息可靠呢?
这正是非对称加密的另一种方式—— 私钥加密,公钥解密 。典型的应用场景就是数字签名,A用自己的私钥加密信息后发送给B,并将公钥发送给B,B利用公钥解密信息,如果C和D也有这个公钥,那么C和D也可以解密这个信息,但是只有持有私钥的A才能加密这个信息,因此可以确保这个信息是由A 发出的,这种方式比较适用于一些公司领导做电子签名。将这种方式对应在区块链中,你的收款地址相当于公钥,人人可以看到,但是如果你要转移资产给朋友,就需要输入密码(私钥)进行数字签名,来表示这个资产确确实实是由你转出的。