——读《虚拟货币革命:比特币只是开始》
题记:日本经济学家野口悠纪雄,所写区块链应用通俗读物,看点是在技术上不泛泛而论,读者有机会了解接近本质的“公共密匙和电子签名”理论,却不用具备高等数学、计算机功底。时下不少人对于区块链,仅乐于嘲笑,以为自己超尘脱俗,“我知道你知道自己不懂得区块链……"之类,却不愿花时间去阅读。为此推荐此书。
你与我素不相识,都参加一个寻宝游戏,你、我分别淘汰对手,并列入围终极闯关。
按闯关规则,只许我们通过公开沟通(任何人可以见到我们沟通的全部内容)约定一组密码。
由于规则限定你、我的一切沟通都是公开的,显然,这组约定的密码,不可用语言(口头或书面)、动作或者其他任何外在方式告诉对方,只许在内心默记。否则就不是“密码”,谁知道都可以捷足先登了。
宝藏大门密码锁,有2组解锁输入口,你、我必须各输入一组约定好的密码,如果输入相同,宝藏立即打开。
规则允许用计算机运算。你、我约定这组密码,位数可以是几十位或者更多。位数越多越不易被别人破解。我们有没有可能成功?
1976年,一位教授和一位学生,分别来自美国两所不同的大学,共同发明一种计算方法,可以作为上述闯关工具,成功率达100%,而且一般人都有能力理解。
下面略作“语法编译”,描述这种计算方法。笔者以为,只要你的代数知识有初中水平,足可以明白。如果你看到代数就头晕,也可以跳过“原理描述”,直接看“实例试算”。顺便说明:本文描述只求易懂,不符合数学规范。
【原理描述】
目标:你、我希望约定一组共通密码。
第一步(可公开):定下N和n两个整数。
第二步(秘密):你、我各自决定秘密整数a,注意:各自秘密决定的a禁止公开,也禁止你、我互相告知。
第三步(可公开):你、我决定运用计算方法如下:“n的a次方,除以N,得整数商、余数b。”各自运算。
第四步(可公开):你、我向对方说出各自运算结果b。
第五步(始终保密a,其他可公开):用对方的b,与自己秘密决定的a,进行以下运算:“b的a次方,除以N,得整数商、余数K。”
第六步(秘密):你、我分别运算得到的K,必然是相同的一个数。至此约定一组共通密码完成,你、我各自默记和使用,无需互相告知。
【实例试算】
第一步(可公开):
下面两个数是你、我随意选定的。可选位数本来可以随意。但笔者用手机的计算器,运算能力有限,所以选了这两个:
N = 13 n = 4
第二步(秘密):
你决定了秘密数11,自始至终不公开,你、我亦不可互相告知。
同时,我决定了秘密数8,自始至终不公开,你、我亦不可互相告知。
第三步(你的秘密决定数11和我的秘密决定数8,必须保密。其他可公开):
第四步(可公开):交换余数
你将上一步运算得到的余数10告诉我。
同时,我将上一步运算得到的余数3告诉你。
第五步(运算结果余数9保密。其他可公开):
以上五步结束时,你、我得到的余数是相同的9,即共通密码。
实例试算综述:
以上五步,你、我使用的计算方法一致,各自决定的秘密数始终无需透露。公开选定两个任意数N和n,你、我分别运算,最终能达成一致的闯关密码。你、我各自决定的秘密数的位数越多,得到的共通密码越安全、越不易破解。■