北邮王励成:密码学研究与区块链实践应该打破隔空喊话

2017-11-17 王励成 金融科技研究
11月11日,上海。由中国金融科技50人论坛(CFT50)与证券信息技术研究发展中心(上海)举办的“区块链里的密码学技术”闭门研讨会议,在上海证券大厦举行。北京邮电大学副教授王励成进行了主题演讲并参与了圆桌研讨,以下为发言实录(经本人审核修改)。

非常感谢中国金融科技50人论坛的邀请,我一直希望能跟各位坐在一起做跨界的交流,特别希望听一些真正的需求。刚才白老师(白硕)的发言非常精彩,白老师讲了很多的需求点。我拿到邀请函发现这是一个命题作文,就做了一些调研。我之前对区块链了解的不多,可能调研得不全,欢迎大家批评指正。
在区块链中使用的密码学首先就是哈希函数。哈希函数在区块链里用得最多的,大家都知道是Merkle Tree。第一张照片就是Merkle,他是图灵奖获得者。然而跟区块链、比特币有关的哈希使用,是到了1997年的Adam Back(即第二张照片)。他最早提出了所谓的hashcash概念,是作为一种DDOS对抗的机制。但是这里已经有了工作量证明的思想,后来这个思想也直接被比特币采用。从数学上,就是连着哈希两次,中间有一个nonce,找出来使得两次哈希的值小于Target,相当于决定了工作量。

先看一下我们常用的哈希。首先就是所谓的SHA系列哈希算法,从SHA0到SHA3。SHA0和MD5都在2004年就被我国的密码专家王小云攻破到了。SHA1也在2005年被王小云攻破。现在还推荐使用的主要是SHA2系列,这里包括SHA256、SHA512、还有一些输出长度方面的变种,像SHA224和SHA384。这里还要提一下SHA3,因为现在它也已经进入区块链领域了。SHA3实际上是国际竞争的结果,最终,2012年,属于Keccak的算法胜出。前面的这些哈希(SHA0到SHA2)都是美国的NSA设计的,而SHA3是全球征集的,所以它是非NSA设计的结果。2014年、2015年相关的一些国际的标准也发布了。

再看一下SHA的安全强度,我这里列了相关的结果。作为一个哈希算法,它的安全性有三层含义,第一个就是抗碰撞,第二层抗第二原像,第三层是抗第一原像。从攻破的难度讲,找到碰撞是最容易的,找到第一原像是最难的。抗第一原像实际上等同于单向性,就是给一个H(x),你拿不出x,但是目前真正用到这个属性的很少。我们讲哈希函数的安全性,主要是看它的抗碰撞性。那么这个(表中)安全强度指的就是抗碰撞的安全强度,所谓的小于64的含义,就是找到一对碰撞,计算量大概是在2的64次方级别,通常叫比特强度,是以位运算复杂性来衡量的。看一下我加量的这一条,这就是目前区块链中所使用的SHA256的强度的一个情况,(抗碰撞的比特强度为128)。下面的SHA3也作为一个参考。当然,除了刚才的这些,区块链中还有用到其他哈希函数的,比方说Zcash使用的Equihash、以太坊的用的Ethash哈希函数,还有sCrypt是莱特币所使用的等。关于这一块,周邺飞先生做了一个系统的图示,比较形象,我就借用一下。哈希函数我就简单的回顾到这里。

第二个绕不开的密码原语是数字签名。数字签名概念的提出者是Diffie和Hellman,1976年他们开辟了公钥密码学方向。最终到2015年,(他们两位)获得了图灵奖,可谓实至名归。数字签名作为公钥密码学的基本原语之一,它的安全目标主要是确保消息源的认证性、不可抵赖性、完整性,它有一个标准安全性定义,是指在选择消息攻击下存在性不可伪造(EUF-CMA)。

有了这个概念以后,我们来看数字签名方案的设计。最早的就是作为概念证明的RSA签名方案。但最初这个版本不安全,一直到了1998年,才有了比较安全的用来做签名的RSA版本,即RSA-PSS,目前这个签名在区块链里来说比较少使用,我们这就略过。

1984年,ElGamal的签名方案和他的加密方案一块提出,他的签名方案很快就演变成了DSA和ECDSA,这是我们区块链所使用的,所以这里要强调一下。然后在1989年,Schnorr签名发表,后来还发展成了EdDSA,这也是在区块链当中有用的。这里我简单对照了一下ECDSA和EdDSA。原则上说它们都是基于椭圆曲线的,只不过ECDSA是比特币、以太坊都在使用,而EdDSA是Zcash、门罗比等在使用,它用的是扭爱德华曲线——一种平面模型的椭圆曲线。相比来说,EdDSA计算效率更高,安全性也更好,而且已经被互联网研究专业工作组选为TLS下一代椭圆曲线。

标准的数字签名说完,我们再说一些关于数字签名的一些变种原语在区块链里的使用情况。

首先是一次签名在门罗币里的应用。一次签名的概念很简单,就是一个签名私钥只能使用一次,第二次使用就会泄露签名私钥,所以不可能轻易去使用第二次。这个概念是Lamport提出的,他也是图灵奖获得者。门罗币拿一次签名做什么?用来隐藏收方和发方的地址。假设在区块链上的某一个用户有两个长期的公私钥对,就按照这个式子来简单组合成一个临时的公私钥对。红色的都代表私钥,黑色的值代表公钥,通过这样一个组合方式,因为有随机性就达到了隐藏长期公钥的目的。

第二个在区块链里有用的就是环签名。环签名的概念就是任意组环,环中任何一个人均可能是签名人,达到的是无条件匿名。这个概念是Rivest、Shamir、tauman他们在2001年发表的。他的环的机制是这样的——这个图就是代表环方程,那么从第一个看,Y1是第一个人的公钥,这个V是要签名的人自己选的一个初始值,然后K是消息的哈希值,然后加密。然后再一直这么做成环状。这个环方程满足一个特点:在(构成环的)N个人里,知道任何一个人的私钥就可以解这个方程。所以签名的人先拉别人的公钥做一个加密环,到了自己跟前的时候,利用自己的私钥做一个解密就ok了,使这个环方程成立,就达到了无条件的隐匿性。如果大家不去细抠这个环公式的话,可以通过下面这句话来理解环签名的霸道之处,就是:“拉您入环,与您何干?”打个比方,我要泄密一个东西,我可以拉地球上随便一个人构成环,我只要知道他的公钥就行,不需要他知道,不需要他同意。

那么这个无条件匿名太厉害了,所以现在要加一点限制,特别是反洗钱的要求。所以这两年提出了可链接环签名,环中同一个人的两次环签名可连接起来,但签名人的身份仍然是匿名的。这个是2015年出现在门罗币里面隐藏交易金额的。到2017年,区文浩教授把RingCT改进成RingCT2.0,对它的效率进行了很大的提升。笼统的来讲,RingCT的技术演进层次如图所示:(左边)环签名是任意组环,无条件匿名;但是(右边)群签名就稍微温和一点,这个群是一个特定群组,比如说我们CFT50人这个群组就是指定的,是有一个群主的,群主可以打破这个匿名性。但是签名仍然保持不可连接性,两次签名连接不起来。大家注意到群签名这个概念比这个概念要早10年。然后在这之上逐渐的演进,对无条件的匿名性做限制,形成可追踪的环签名,集成它们的一些技术优势,再加上一些承诺技术,形成了RingCT的技术,然后再上面就是区文浩的改进。在群签名这里,我把David Chuam的照片放进来,因为群签名的概念也是他提出的。大家可能都知道,他就是电子货币概念的提出人,他也是一个探路英雄,最早成立了一个公司做电子货币。

接下来我会说同态加密,同态加密就是不需解密,基于密文进行运算,它可用于安全多方计算、云计算等场景,包括刚才白老师讲到的很多需求我感觉用同态加密都可以做。

还是先来做一个历史回顾。同态加密的概念是1978年,由Revist等人提出数字银行的概念里提到的,在数字银行里就希望做隐私同态。同态加密早期的发展:大家围绕加法同态做了很多工作。为什么不关注乘法同态呢?道理很简单,RSA和Elgamal天然就是乘法同态,乘法同态不是特别难的事情,加法同态是研究的重点,但是在加法同态之上,再怎么让它同时支持乘法同态又成为了一个难题。围绕加法同态最早的工作就是GM82方案。它的后续改进和发展就是这一张图——这是我的导师曹珍富教授总结出来的,其中我们也做了一些设计,如V1方案、V2方案和V3方案,就是对上面这些所有方案的集成,中间这个CDWS13这个方案也是我们自己设计的。这里感兴趣的朋友可以看一下这里rho,代表的是密文扩张率,当然越小越好了。理论上,要做到安全的同态密码,扩张率是必须要大于1的,不大于1是没有办法做(到语义安全)的。加法同态加密目前是很成熟的,特别是中间提到的这几个方案,DJ01方案以及下面的V1、V2、V3这几个方案扩张率都可以做到接近于1,效率是非常高的。

全同态加密真正的突破是2009年Gentry提出的,是基于格的,抗量子的,这是Gentry的照片。目前虽然围绕全同态加密,大家做了很多改进,但是参数尺寸特别是公钥尺寸很难降得下来,离实用还有一定的距离。

接下来说说零知识证明。零知识证明方面区块链用的最多的是zk-SNARK,它的原理我这简单列了一下,这可以说是十八般(密码)武艺的一个大集成,它的创新度很大。但看每一个密码原语都不是新的,但把它们集成起来做这么一件事情,就是一个很大的创新。

我们再提一下最近的一个应用,叫做密码掷签或者叫做秘密抽签,它可以看作是一个有效的民主化的共识机制——Algorand,是Micali提出的,他是12年获得图灵奖的。他基本的思想是用加密历史区块的方式产生随机数。我比较看好这个方式。而其他的方式,例如PoW,工作量证明,就等于说谁拳头硬谁说了算,PoS谁腰包鼓谁说了算,总觉得不是一个民主化的社会。Algorand怎么说呢?让运气来决定,就是靠密码算法得出了随机数,上一个区块里的一些数据作为一个随机数的种子,再加上后续的一些数据,使得在下一个区块诞生之前,攻击者或任何人,包括自己都不知道谁会不会是记账者、会不会是验证者。这就实现了真正的民主,也就是说靠运气,看上帝选中谁了,这就是最公平、最理想的。工程界是不是看好这个Algorand机制,我不知道。其每一步都是用的可证明安全的方法,我们做密码的人非常喜欢,这在理论上是没有任何问题的;但是工程上到底行不行我们需要测试。他的论文也一直在更新,现在已经更新到第九版,已经超过了70多页。

身份鉴别也是不得不提的一个概念。身份鉴别的概念有点像我们常说的“证明你是你”。“证明你是你”这句话不好做,最后通过证明你拥有某个秘密来达到证明你是你,必须以零知识的方式来证明。这个图是比较成熟的两个证明方案,我就不细说了。

最后,密码里还有一样东西,素数,也是非常关键的。与素数有关的我看也有一个素币,PrimeCoin。我这里就简单介绍一下素数检测技术。这个图表示素数的分布,这个πX表示不超过X的素数的个数,这两条曲线大致接近,从这个意义上来说,素数还是比较稠密的,因为是X除以logX,所以是认为比较稠密的。素数检测的主要方法有这些,目前用的比较多的就是米勒-拉宾(概率性)方法;AKS方法作为学术制高点,很多人在做这个方面的工作,这个方法虽然是确定性的,但是只有学术价值,工程上用的比较少。

最后我们谈一下相关密码研究现状。从基础设施来说,我们一直强调淡化中心或去中心;从通信模式上来说,强调基于并超越身份——围绕这个主题,我们专门在CFT50论坛讲过一次,也在去年的区块链大会上讲过一次。此外,密码原语的语义更加丰富,密码学界现在也叫做expressive cryptography,就是基于属性做各种丰富的表达。密码理论提案的标配就是可证明安全加抗量子,这是目前我们密码研究的一个热点。安全应用的硬杠杠就是要轻量化。

关于区块链结合密码的安全优势,有几个方面:首先是区块链开源的精神。开源的精神拥抱Kerckhoff原则,它是密码学公开研究的一个原则,其含义就是密码算法必须是公开的,这跟区块链开源精神是一致的。可证明安全,是一个很好的工具。区块链结合密码学,特别是结合公钥密码学的可证安全方法,可能会是区块链从艺术走向科学的必由之路。当然,工程可以先行。从研究的角度来说,安全现在离科学还差一点点,安全还停留在艺术的层次,这儿加了一个补丁,那儿想一个妙招,而密码学已经进入了科学发展的阶段,它有严整的体系,一套数学化的体系。

目前区块链采用密码学的脆弱性及应对策略。一个是现在有很多新的链出来,使用的一些哈希都根本没有经过密码圈充分的攻击。一个密码算法要能够投入使用,国际范围内对它的分析和攻击是必不可少的。现在那些新的币和新的链使用了自己的哈希,这是不是一个问题?我的建议就是,尽量选用国际标准的哈希算法。再一个就是ECC类的算法不抵抗量子攻击,我们需要逐步切换到抗量子密码上。

刚才白老师也特别讲到了量子攻击,我这里想插讲一点关于量子攻击的内容。一方面我们要逐步过度,一方面我们也不必太恐惧。微软做了一个分析,攻破2048的比特RSA需要的量子比特的位数超过4000个量子比特,还要在量子比特之间要保持很好的纠缠,这个纠缠一丢失就没有办法用了。前一段时间我们国家宣布了二十个量子比特的量子计算机,谷歌说是到年底要做得到49个量子比特。那攻破ECC呢?以我们国家256位的ECC-SM2算法为参考的话,需要9倍的量子比特长度,也是200多乘以9,大概是2000多。因此,从目前来看,靠量子算法攻破这些密码算法暂时还没有那么危险。况且做经典密码的人有两个信心,一方面国际上已经在征集后量子密码的标准,这个标准一旦公布,我们就可以切换到抗量子的(密码)标准上去;另一方面,每一个经典密码的设计寿命其实是有限度的,有时候还没有到那个年限,我们早就换掉了。所以我觉得量子攻击要考虑,但不是区块链当前特别严重的问题。

最后,区块链密码其他的局限性:速度与能量。特别是区块链现在应用到物联网当中去了,只有速度还不行,还要能耗低。轻量级密码除了能耗、速度之外,还有一个要求,就是可串型化,碰到大的服务器要能过得去、碰到传感器也要能过得去。这一块大家有没有考虑呢?

下面说说国家标准与国际标准。我们国家的密码产品要投放市场,必须经过商密的认证,现在这么多的区块链产品是不是已经在投入市场了?但是它里面用到的密码算法是不是都经过了商密的认证?我不知道。现在的区块链里用的多是国际密码算法,而并不是国标。有一个利好的消息是:我国的SM2、SM9最近刚刚升格为国际标准了。

最后再补充一点,我觉得围绕共识机制,密码圈里很多人做了很严肃的研究,我认为链圈的创新是很大的。特别是它推动了密码学研究,提出了一些很好的挑战。区块链是对于密码学的反哺。我的报告就到这里了,谢谢大家!

研讨最后,王励成教授建议:现在可能业界跟学术界隔空喊话太多。从纯技术原理上讲,大家提的问题其实不是可行性问题,而是可用性的问题,这两个差别在哪。可行性就是原理上通,这个就可行,可用性就是如果效率上制约了,用不成就是不可用。可用性问题有时候撇给我们(做理论的),我们解决不掉,我们必须是跟工程技术人员,特别是跟具体的业务系统的实现,做深度的融合,才有可能解决底层的可用性问题。

(转)密码学研究与区块链实践应该打破隔空喊话相关推荐

  1. 微众银行张开翔: FISCO BCOS - 开放的区块链实践之道 | 11月25日【区块链技术与实践】论坛...

    张开翔老师,微众银行区块链首席架构师. 张老师在互联网业和金融行业工作多年,有丰富的分布式系统和海量服务实践经历,于2015年专注投入区块链.隐私计算的技术和行业研究,主持微众银行区块链全栈技术体系设 ...

  2. 宜信区块链|一篇干货文读懂宜信的区块链实践

    12月6日下午,每月一次的CEO座谈会在北京如期举办,近百位同事到场参加.本期座谈会邀请了宜信首席技术官向江旭.宜信区块链实验室主任.翼启云服区块链业务总监于明扬.宜信金融科技产业基金合伙人秦琴等三位 ...

  3. 北斗计划|区块链实践课·清华大学专场

    3 月 17 日,清华大学选修<区块链与加密数字货币>课程的同学们在清华经管数字金融资产研究中心罗玫教授的带领下,来到 Conflux 参与了"北斗计划"区块链实践课· ...

  4. 近五分之一央企发展区块链 ——非银行类央企区块链实践梳理

    文丨互链脉搏·金走车 未经授权,不得转载! 时局之下,"中国科技实力"与国内推动科技发展的企业,日益成为社会关注的焦点.据我们观察,不仅仅是"深圳市粤海街道"的 ...

  5. 【ConfluxNews】2023.3.20 清华大学罗玫教授带领学生来到 Conflux 参与了“北斗计划”区块链实践课

    [ConfluxNews]2023.3.20 ----------------------------- 1.[网络状态]当前版本V2.2.1-fixpos,全网算力≈10T,昨日交易次数54K,昨日 ...

  6. 复盘银行的区块链实践:从分布式账本,到产业数字化

    自2019年2月15日,<区块链信息服务管理规定>正式实施,网信办至今已发布了四批次境内区块链信息服务名称及备案编号,金融是其中毫无疑问的主角,据钛媒体不完全统计,与银行直接关联的,共涉及 ...

  7. 技术沙龙出海日本:分享京东区块链实践与创新

    上周四,京东云技术沙龙首次出海前往日本东京,联合SBI和BC College与日本当地企业进行了分享与交流,这次沙龙的主题<京东区块链的技术创新与商业实践>. 现场首先由京东云技术布道师张 ...

  8. 宜信区块链实践-案例及探索

    前段时间,在苏州的中国基金博物馆,举行了一场由中国基金博物馆以及中国区块链应用研究中心共同主办的"博物馆金融大讲堂第129期区块链大讲堂".宜信区块链实验室主任.翼启云服区块链业务 ...

  9. 区块链实践(一) 以太坊网络+geth搭建私有网络实战

    一.以太网网络  理解以太坊 PrivateNetwork 先要理解以太坊的两种官方网络, 目前以太坊官方提供了两种网 生产环境网络 测试网络 TestNet **  1 以太坊生产网络 以太坊的生产 ...

  10. 零伽壹链改研究:区块链技术在支付及清结算的变革与创新!

    区块链不易篡改.公开透明.可追溯等特性提供了信任机制,与金融行业各业务场景的需求,例如,安全性.稳定性.隐私性.可监管性等高度契合,因此具备改变金融基础架构的潜力.区块链凭借其自身的特点,在支付和清结 ...

最新文章

  1. IDEA中Maven项目创建单元测试(JUnit4)
  2. java在己有的类创子类怎么创_使用Java创建自己的异常子类
  3. Ghost的相关问题
  4. 使用单独的解决方案(类库)来开发DNN的模块-C#版本(2)
  5. 初识Mysql(part18)--我需要知道的4个关于联结的小知识点
  6. ASCII码与字符串的相互转换
  7. 竞赛发布|100万奖金寻DT时代“最强大脑”!
  8. 常见的电子商务模式理解
  9. [SDUT](3468)广度优先搜索练习之神奇的电梯 ---BFS(图)
  10. linux常用命令详解(二)
  11. 用科学数据求真:月球的激光发射器有用吗?
  12. 如何让测试RFC2544更便捷——RFC2544测试实操
  13. 云笔记横向评测:印象笔记、有道云笔记、为知笔记、OneNote、Notion
  14. 为“烦人的“QuickTime播放器设置快进,快退以及加速播放快捷键!!!
  15. 计算机word无法打开,电脑中office文件无法打开的三种解决方法
  16. Acme CAD Converter 命令行模式
  17. 基本SQL命令表命令
  18. apktool下载安装
  19. WAR3改键工具FinalKey beta 1.0制作完成
  20. ElasticSearch实战(七)-BKD-Tree 多维空间树算法(范围查询算法)

热门文章

  1. js拦截全局ajax请求
  2. IPv6的地址表达形式
  3. 从盒子到“云”——让用户享受更轻松的应用交付
  4. ExecuteScalar的使用
  5. CF1151FSonya and Informatics
  6. 如何使用js判断视频是否可以成功访问
  7. Redis3.0--集群安装部署
  8. javascript的dom选择器
  9. 改变MyEclipse默认编码方式
  10. android SDK 常见安装方法