客官:小二,我记得你之前说要给我讲公钥和私钥的,我这就又来了。
小二(我):客官您来了,我当然记得,这就给您准备公钥和私钥的菜式,您稍等。
小二(我):客官您的公钥和私钥来了(微笑)。
客官:??公钥和私钥呢,不是上来了吗?
小二(我):客官,这公钥和私钥都十分宝贵啊,我不能把我的公钥和私钥都给您了,咱们这的厨师也只做自己的公钥和私钥,我带客官您去厨房,客官您自己做属于自己的公钥和私钥,那么这宝贵的公钥和私钥就属于您的。
客官:做这公钥和私钥这般麻烦啊,也好,那你给我解释解释这公钥和私钥这般宝贝。
小二(我):好嘞。
在讲公钥和私钥之前,我想讲一下加密技术。
加密技术有两种:一个是对称加密,一个是非对称加密。
1、对称加密:是为我们所熟知的加密技术,现在很多的登录界面所用到的加密就是对称加密这个对称加密技术,用户只拥有一个密钥,注册用的是什么密钥登录就用什么密钥来登录进去。即加密和解密使用的是相同的密钥。
我们由此可以看出对称加密存在一种容易被破解的隐患,只要我获取了用户的密码我就可以获取该用户的各种操作权限(为所欲为),所以使用对称加密,用户需要增加密码长度才能减少被破解而被获取的可能,那么黑客即使是暴力破密也需要些许时间才行。
所谓的加密技术,事实上是由密钥和加密算法组成的。算法是将普通的文本(或者可以理解的信息)与一串数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。
2、非对称加密:咱们这公钥与私钥的菜式就是来自这里了。即非对称加密需要两个密钥(公钥和私钥)。公钥顾名思义就是公共密钥,是可以分享出去的;私钥的话就是用户私密的不能给任何人的密钥,当别人获取到用户的私钥,同时又知道了该用户的公钥,呵呵,又可以(为所欲为)了。
所以既然公钥可以是公开出去的,只要您的朋友需要发送加密信息给客官您,那么客官可以把您自己的公钥分享给您的朋友,那么私钥就必须是自己唯一的,不能给别人知道获取,客官您得把这个私钥当成是您的银行卡密码一样珍惜保存好,这公钥就相当于客官您的银行卡号,私钥就是您的银行卡密码,呵呵(笑),银行卡号可以分享给别人给您转钱,银行卡密码吧,客官您都懂的(笑),如果给了别人,(为所欲为)。
在这里小二我和客官都中场休息下,上张图缓缓,顺便喝杯水(笑)。
好了,客官我们可以继续了。
小二我在这里再扩展一下这非对称加密的故事。首先我想先推荐一本书给客官您啊,这是我们客栈的推荐劵——《深网:Google搜不到的世界》。这本书里面为什么提到了非对称加密呢。我再给客官您开开小灶。
这本书的作者是匿名的,这名作者是位德国记者,因为这本书涉及比较多可能是的敏感问题,所以作者匿名了。为什么说敏感,其实我们有必要认识一下深网是什么?
深网在我所理解的定义里是互联网深处的网络。我解释一下,我和客官您平时日常所上的网都是互联网中的表面的网络,为什么是表面的网络呢?这是因为我们平时所上的网加载速度都很快,刷,网站就出来了。这是表面网络的特征。
我们处在这个表面的网络其实就相当于小二我和客官您都赤果果的暴露在人前一样,因为表面网所有的网络都可以被侦查到,并被窃取到其中的大量数据库,一旦这些用户数据被窃取到,要么或许会自己行动威胁用户,“你的所有信息都在我手里”,要么把窃取到的用户数据高价在深网中卖给其他企业商,如保险公司,房地产公司,然后我们就会时不时收到各种推销短信和电话。或许这只是比较小的麻烦。那么,我和客官您不就形同没穿衣服暴露在公众中吗。
我们可以把互联网比喻成一座冰山,那个我们所在的网络世界只是其冰山一角,只占整个冰山的微小部分,而冰山那巨大的山体是大量的数据,组成全球互联网,而这部分往往隐藏在水下,隐藏在暗处为人所不见,我们称这部分为深网(DeepWeb)它由数据库,被封闭的网站和新的网站组成,这些网站在搜索引擎是搜不到的,有人判断我们使用搜索引擎可以搜索的网络占全互联网10%,那就相当于有90%的网站和数据都处在深网中。
深网加载的速度是很慢很慢的,且不说加载图片了,就是文字加载也得数秒数十秒,这很容易理解:冰山的主体都在水下,山体越深,其水压就越强,客官您要下去这水下也得克服克服水压和水中的阻力。至于真正加载速度慢的原理是什么,小二我想留给客官您自己去看看这本书,里面把这个过程写得十分详细生动,用了一个抢劫银行犯怎么逃脱被追捕的例子说明白的,保证您能懂。
为什么计算机大牛,或者说精通计算机的人喜欢在深网中做一个御宅呢,那是因为深网可以隐藏自己啊,处在深网中就相当于自己穿上了厚厚的装备,在深网里面每个人都是骗子,所有的注册用户的名称都会是化名,几乎没有人能够在深网中查到对方会是谁,所以,深网足够安全让更多的黑暗存在于这里,足够安全的隐藏自己,他们都喜欢栖息在这里,虽然换来的代价可能是要有足够的耐心和时间来等待进入深网,不过在那本书上中提到的深网作者在后面写的时候叫它为Tor网。
回到主题前,让我们再次休息会,伸伸腰,弯弯腿,看张图。
好了,终于要回归主题了,公钥和私钥怎么就被提到的呢。
安全意识高的人总会想方设法的保护自己的数据和隐私,甚至是跟别人私信也得把自己发出去的信息加密才放心。这加密就来了,公钥和私钥就出现了。非对称加密方式种类百千,在深网这本书里提到一个PGP(Pretty Good Pravicy)加密,中文意思是“相当好的私密性”,书中提到,进行PGP加密信息进行沟通交流的话,必须交流双方都下载了PGP软件,通过这个软件来进行信息加密。
在这个PGP软件中,会给用户生成一对密钥,公钥和私钥。书中继续解释了怎么通过公钥和私钥完成加密然后解密交流的。假如小二我和客官您都拥有了PGP软件,都有自己的一对密钥了,首先我们加密交流的条件就成立了。然后,假如小二我要给客官您要发送信息,有个前提条件:就是我和客官您都已经获得对方的公钥先,也就是我要知道客官您的银行卡号我才能给您转账啊,所以我们双方得都有公钥了,这个公钥可以是我们相互分享给对方,或者可以同过PGP服务器有个类似电话簿的东西记录用户的公钥,只要搜索对方的名字就能知道对方的公钥,当然这就得要求对方已经把公钥放到PGP电话簿里。
因为是我要给客官您发信息,所以我得用您的公钥来加密我给您写的信息,然后这些信息就只能您才能看到,其他人是看不到的,因为这信息使用您的公钥加密给您的,所以只有使用您的私钥解密了才能获取到我里面的内容,然后客官您回信给我的话就要用我的公钥加密,然后我使用我的私钥解密来查看您给我写的信息。所以,这些信息就只有我们两个人知道,实现只有两个人的交流。这只是因为客官您在的原因,我举了个我俩发信息交流的例子理解,书中的呢是两人邮件加密的例子,都是一个道理。
客官:小二啊,这说了这么多的公钥和私钥的东西,那他在区块链中又如何应用的?
小二(我):是的,所以接下来我就要说到它们在区块链中有什么用。
公钥用来加密或验证,私钥用来解密或签名,加密和解密是一对,验证和签名是一对。
在比特币系统中,私钥是32个字节组成的数组,有了私钥就能生成公钥和比特币地址,就能花费对应地址的比特币,而私钥话费比特币的方式就是对这个私钥所对应的未花费的交易进行签名。
说白了就是,在比特币系统里,比特币地址是由公钥通过进行散列运算得出来的,就是我们说的HASH运算,而公钥是由私钥推算出来的,所以获得私钥就相当于获得公钥和地址了,所以私钥必须保管好。
私钥是对每一笔自己所发起的交易消息进行签名,来证明交易消息的发布者是相应比特币地址的所有者,也就是说,假如我向客官您发起交易,给您一个比特币,我需要用我的私钥对我的比特币进行签名,证明这一个比特币是我给客官您的,这枚比特币是从我钱包扣的,不是别人的比特币。而这个用私钥签名就叫做数字签名。
公钥是给对方验证的。我给客官您一个比特币,这一笔交易需要客官您用我的公钥进行验证,验证这笔交易是由我发起,不是其他人的,然后验证成功,这确实是有我用私钥加密过的。然后完成我和客官您的交易了。这就是公钥的验证。
总结一下一笔交易过程的两个对象都用公钥和私钥干了什么:
发送者(例如小二我):用私钥对信息进行签名,使用信息接收方的公钥对信息加密。
接收方(例如客官):用信息发送者的公钥验证信息发送者的身份,使用私钥对加密信息解密
我给客官您看张图或许会更清晰:
小二(我):这就是我所了解到的公钥和私钥了,不知客官是否理解,若客官有发现小二的错误,您尽管指出,小二我虚心受教(微笑)。
客官:嗯,现在脑袋可能装了挺多东西,变得晕晕乎乎的了。
小二(我):哈哈,确实如此,客官您可能得好好休息休息,然后等脑袋清醒了,您的思路可能就会打开了。小二我在这感谢您聆听多时,欢迎再次光临(微笑)。