ECDSA科普:大雄和静香的情人节

大雄和静香

题图:哆啦A梦动画片。图片来自于网络。

这是刘教链《比特币原理》番外篇。本节讲的是椭圆曲线数字签名算法ECDSA (Elliptic Curve Digital Signature Algorithm)。

一、大雄给静香邮寄比特币

2月14号,情人节。

大雄有哆啦A梦送的10个比特币。他想把这10个比特币送给静香。

比特币只能通过信件邮寄。

大雄准备了一个信封,写上静香家地址,把10个比特币装到信封里,贴上邮票,然后把信投递到邮筒里。

小镇的邮筒是完全开放式的,并没有一个中心邮局给它上锁和管理。

胖虎对大雄的10个比特币垂涎三尺,他寻机从邮筒下手,把比特币换到一个写着自己家地址的信封里。

哆啦A梦是邮递员。而且,是一个住在小镇中的本来就很聪明的邮递员。

它能在这种情况下确保比特币的寄达绝对安全可靠吗?

哆啦A梦在学校的教室外苦苦思索这个问题。

教室里,数学老师在给小学生们上数学课。

哆啦A梦忽然灵感出现,设计了一种特别的邮票。

二、哆啦A梦的邮票

哆啦A梦发现了小镇学校的一个惊天秘密。

这个秘密就是,数学老师只教加法、减法和乘法。

所有人也都只会做加法、减法和乘法。

哆啦A梦设计了一种特别的邮票。这种邮票需要寄信人写几个数字。而多拉A梦在送信的时候会先检查邮票,验算数字,如果不正确,它就退回这封邮件。

邮票是这么设计的:

首先,全国的小镇都有自己唯一的数字编号,大雄他们这个小镇编号是9。这个数字整个小镇都公开知道。

然后,每个人都选一个自己喜欢的秘密数字。每人各不相同,而且大家都互相猜不到对方的秘密数字。大雄选的秘密数字是3。

另外,小镇的每户人家都有一个门牌号作为地址。门牌号是用秘密数字乘以幸运数字计算出来的。大雄家门牌号是大雄的秘密数字3乘以幸运数字9等于27。静香家门牌号是45。

当大雄准备寄信给静香的时候,先随机另选一个秘密的幸运数字,别人绝对猜不到,比如大雄选了10。

然后大雄计算两个数字:

(1)用幸运数字10乘以小镇编号9得到前一个数字90。
(2)用前一个数字90乘以大雄的秘密数字3得到270,然后再加上静香家的门牌号45,得到后一个数字315。

最后,大雄把90和315前后两个数字写到邮票上,就可以了。

三、哆啦A梦的验算

当哆啦A梦送信的时候,就可以用算数来验算这个邮票是不是大雄贴的,而且寄送对象就是静香。

它同样算两个数字:

(1)用邮票上的后一个数字315乘以小镇编号9,得到第一个结果2835。
(2)用邮票上的前一个数字90乘以大雄家门牌号27得到2430,再用静香家门牌号45乘以小镇编号9得到405,最后把两个数字加起来,也就是2430加上405,得到第二个结果2835。

Bingo!两个结果一样。验证通过!恭喜大雄,邮件将被准确送达静香家。

亲爱的读者,您看到哆啦A梦这个邮票算法的精妙之处了吗?

哆啦A梦验算所使用的全部都只是公开信息,小镇编号9,大雄家门牌号27,静香家门牌号45,邮票上的两个数字90和315。

而大雄计算时所选的两个秘密数字完全不需要公开,这样就保证了,除了大雄,没有人可以伪造邮票。

四、胖虎的作弊

有了这个邮票的设计,胖虎就没有办法把邮件发往自己家的地址了。因为他不知道大雄的秘密数字,也就没有办法在邮票上写下正确的结果。

如果胖虎强行用自己的秘密数字来计算,会怎样呢?

胖虎自己的秘密数字是4,他家门牌号是36。

前一个数字,他直接抄袭了大雄的结果90。
然后他用前一个数字90乘以他自己的秘密数字4得到360,然后再加上自己家的门牌号36,得到后一个数字396。

他把这两个数字写到邮票上。

那么他的邮票能够通过哆啦A梦的验算吗?

哆啦A梦拿到邮件,先计算邮票的后一个数字396乘以小镇编号9,得到3564。

然后哆啦A梦用邮票的前一个数字90乘以大雄家门牌号27得到2430,再用静香家门牌号45乘以小镇编号9得到405,最后把两个数字加起来,也就是2430加上405,得到2835。

3564不等于2835。两个结果不相等!邮票无效!

Perfect! 哆啦A梦高兴地笑了起来。

等等!聪明的读者,你可能已经发现了一个致命漏洞:如果胖虎把寄件人也改成自己会怎么样呢?

那么哆啦A梦验算的时候,就会计算邮票的前一个数字90乘以胖虎家门牌号36,加上胖虎家门牌号36乘以小镇数字9,结果是同样的3564!

虽说胖虎把邮件发送给胖虎自己这件事看起来有点奇怪,可是既然数字验算通过,哆啦A梦也不得不遵照送达。

怎么办?于是哆啦A梦想到了一个办法:记账。

五、哆啦A梦的账本

哆啦A梦找了一个小本本。

每次它成功送达信件的时候,就把这次投递的比特币标上一个批次,然后把这个批次和投递记录记在小本本上。比如,第1829次投递,来自第278次投递的比特币,已送达给大雄。

这样一来,致命漏洞就堵住了。因为只要一查小本本,就知道这10个比特币上次是送到大雄家的。那么这一次寄送这10个比特币,寄件人只能是大雄,而不可能是胖虎。

胖虎也不能抹去或伪造这10个比特币的批次,因为没有批次或者批次伪造的比特币,哆啦A梦一查小本本就会发现根本不是胖虎的,并拒绝递送。

六、为什么秘密数字别人猜不到

第一个问题:大雄所选的秘密数字3和秘密的幸运数字10会不会很容易被胖虎“暴力穷举”尝试出来呢?

如果数字是这么小的话,的确有被“猜到“的可能性。

解决方法也特别简单,就是选择特别特别特别巨大的数字,巨大到超出想象。从0到2的256次方中间随机选择一个整数,另外一个人用100万年的时间能够“猜到”的可能性比你看完这句话地球马上毁灭的可能性还要低。

七、为什么我们都不会做除法

第二个问题:为什么我们都不会做除法呢?

为了向亲爱的读者朋友说明这个问题,笔者特别准备了这道“小学奥数题”:

下图中,苹果、香蕉、菠萝是三个正整数,请问它们分别是什么数字?


求正整数解

试试看?体验一下“除法”的难度。_

是的,如你所料,这货就是一个如假包换的椭圆曲线方程。也就是说,它可以变换成这种形式的方程:

ECC

加法是这么算的(红色就是椭圆曲线的样子——换了一条容易作图的):

ECC加法

乘法是连加:k乘以P就等于k个P相加。

至于除法嘛。假设k乘以P等于T,告诉你P和T,请计算k。虽然你明知道k就等于T除以P,但就是算不出来。

八、椭圆曲线数字签名(邮票)算法

比特币用了一条在中本聪之前鲜有人用的椭圆曲线secp256k1生成“邮票”:


secp256k1 equation

它在实数域长这个样子:


secp256k1

但是,其实它是定义在所谓的模素数上的,一下子就毁容成大概这个鬼样子了:


模素数

而大家常用的则是由美国国家标准和技术研究院NIST和美国国家安全局NSA联袂推荐的、1994年12月纳入标准的secp256r1。

2007年11月15日,美国知名IT杂志《连线》发表了对于NSA标准的质疑文章。


WIRED杂志报道

2013年6月,前美国中央情报局(CIA)职员、美国国家安全局(NSA)外包技术员爱德华·约瑟夫·斯诺登(Edward Joseph Snowden, 1983-)出逃。


斯诺登

(全文完)
欢迎垂询刘教链比特币原理课程和区块链线下培训,扫码加rose老师备注“培训”,谢谢:


QR_rose.jpeg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342