韡武专栏:聊聊数字签名

张韡武是 AlphaWallet 团队的 CTO,同时也是区块链业内少有的真正的技术专家,擅长使用密码学,开源系统专家, R3 Corda 专家 (曾任职于 R3 全球构架师工作组)。拥有超过5年的区块链开发经验,从 alt 货币设计到交易算法等均有涉及,曾任澳大利亚联邦银行(澳大利亚最大的金融机构)区块链构架师,主导了12个区块链项目,咏春拳爱好者。

从今天开始 AlphaWallet 微信公众号开始推出专栏,将韡武对区块链的一些最新研究和思考发布出来,同时也希望可以让更多的伙伴一起探讨行业和的发展。

聊聊数字签名(Digital Signature)

01

数字签名——我指的不是用Apple Pen在PDF上的涂鸦,而是具有防伪功能,基于密码学的数学签名——在其发明40年之后,终于在各国都基本获得了认可。法律上认可的数学签名是需要证书的,用以证明签名者在真实世界里的身份。有些国家对发证机构有偏好,比如中国要求发证机构从工信部获得牌照。比如德国、丹麦等国政府直接发证。在我们这里新加坡,Netrust似乎是唯一一家按2010年新加坡电子交易法案认可的发证机构。

02

为了做一个听党的话的好公民,我从指定的发证机构为我们的创业公司申请了证书,以便完全合法地在在新加坡使用数字签名签合同。我觉得可以借这个机会做一下数字签名的科普,顺带点评一下各国数学签名技术的优劣。

03

我从Netrust获得的证书是2048位RSA,装在一个Alladin牌的U盾里。

2048位RSA如今算是比较标准的。不是因为它绝对安全仿伪,而是因为它是效率和安全性都不错。效率这里是指每秒钟一个U盾能签的次数。显然对于签合同这种事,每秒能签1000个和10秒能签1个实际差别不大。加上合同常常有十年有效期,所以这个2048位RSA比起10秒才能签一次的爱沙尼亚电子居民证书算是比较凑合的。实际上,用暴力伪造爱沙尼亚电子居民证书的难度是伪造新加坡这个的1亿亿亿倍(1后面24个零)。

04

为什么新加坡不使用这样高强度的签名系统?其实效率不是重点。有些公司要求每一封电子邮件都有数字签名,所以能签得快一点确实有好处(国内的区块链大牛谢剑唅每封电子邮件都用2048位RSA签名,尽管没有公司老板逼他),但是即使提高伪造难度1000倍,也没有人会感觉出区别。那么我们为什么还在用这套技术?

05

原因之一是软件支持落后。现在的合同文件大多是PDF 1.5版的,最多只能支持2048位RSA证书。在支持安全技术方面,Adobe公司可以算是屡教不改的反动分子,每次技术更新都是必不得己而后行。很多电子邮件软件不能验更安全的签名。

06

实际上,爱沙尼亚,作为全球数学签名技术领先的国家,使用了一种新的文件格式ASICE,应用欧盟标准(而非PDF),一部分的原因就是PDF还不支持它使用的安全签名技术384位ECDSA。还有其它原因是爱沙尼亚有更多安全要求,比如对数字签名的日期作证,还有管理方便的原因,比如一份合同和其多份附件可以一起签,不用做到同一个PDF文件里。不过,大家都觉得电脑文件格式已经太多了。

07

话既然讲到这里,就得解释一下为什么ECDSA是更为安全的技术。ECDSA发明几十年以来,虽然性能更好,却无人问津,直到比特币出现,使用了256位ECDSA,大家才重视。比特币的发明人中本聪知道数学签名的安全性是按十年计算的。我们现在流行的2048位RSA,20年前是美国禁止出口的军方技术,而当时的民间技术伪造难度只有约百万分之一。现在我们觉得2048位RSA算是安全,二十年后就是不够安全了。比特币完全可以活二十年,中本聪想,所以要使用最新密码学技术。

08

这里我要特别说明一下,密码学技术从发明到实用一般有30年周期。比如ECC是80年代发明的,到了中本聪发明比特币时候才刚刚开始有人用。最近这几年,密码学技术从发明到实用只有半年到一年的周期,这都是因为区块链,以前密码学家常常不指望着有生之年他们发明的新技术被广泛使用。

09

尽管密码学的应用非常缓慢,直到中本聪之后才进入大跃进模式,但是在新加坡这边看也不算差。政府要求建筑合同备案需要数字签名,要不然假签名不等到起官司是不知道有做假的。个人也常有申请数字签名的,虽然大多只用它报车辆管理资料这一件事(相关部门只收数学签名的文件)。

10

讲到这了我得说一个新闻。去年下半年(2017年),PDF 2.0新标准,即ISO32000-2:2017,终于,终于,在ECDSA发明30年之后,宣布PDF文件兼容ECDSA了!这样看来,不出十年,就会有人可以用ECDSA签PDF合同了,不过,到时候数学签名的PDF合同也就不流行了,因为都用智能合约签名了。

英文原文及参与讨论

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

扫码关注腾讯云开发者

领取腾讯云代金券