【链得得Demo Day】第五期实录:安全专家详解,智能合约灾难点将在何处爆发?
摘要: 无论是对于数字货币持有人、智能合约开发工程师而言,安全意识问题理应受到重视,丝毫的疏忽可能将导致巨额的损失。
链得得APP注:2017年9月4日,这是一个令人难忘的日子。也就是在这天,中国发生了一件当时搅动整个数字货币市场的大事件。而今年的9月4日,链得得顺利举办第五期Demo Day活动。这期活动中,我们将探讨的主题是“智能合约安全与商业化出路”。
本期对话嘉宾:
郭宇-安比(SECBIT)实验室创始人
中科大博士、耶鲁大学访问学者。曾任中科大副教授,后担任知名金融科技公司副总裁。专注于形式化证明与系统软件研究领域十余年,具有丰富的金融安全产品研发经验,是国内早期关注并研究比特币与区块链技术的科研人员之一,二十余项区块链专利的核心发明人。
沈瑞-知道创宇安全服务部项目主管
从事安全服务行业8年,参与了众多传统的web渗透与区块链行业相关安全项目。
刘鹏-Armors Labs研究院院长
区块链安全研究专家、资深架构师、资深IT技术培训师;北京哈移族信息技术有限公司联合创始人;乐宠集团技术负责人。
主持人:张华楠-链得得音视频中心编辑
下面是圆桌会议现场精彩实录:
主持人:你好,郭宇老师,其实一直以来我挺好奇两个问题。第一个,因为记得你们的团队曾经在发现了Fomo3D和LastWinner这两款两款资金盘类游戏在智能合约安全方面的一些问题,您能跟我们讲一下,当时发现过程中的一些具体情况吗,以及因智能合约安全漏洞产生的实际损失大概到了什么程度?第二个,我们都知道,以太坊已经从最高点跌到如今算是谷底的一个位置了。那么在您看来,从性能还有安全方面,抑或是币价方面,以太坊在未来一年当中的前景如何?
郭宇:事实上,我们团队最近做了一个比较重要的工作,就是我们对Fomo3D和LastWinner这两款两款资金盘类游戏做了比较深入的分析,从这些工作中,我和我的团队也学习到非常多的东西。这个事情的前因后果大概是这样的,我们的一个联合创始人正好到了硅谷那边,当然他是别的原因过去的,恰好就认识了我的一个校友,就和他闲聊,发现他最近在做大数据安全,觉得他跟我们蛮互补的,便邀请他和我们一起做点事。提出不如看一下Fomo3D这个游戏有多少人在玩,做个统计,很快对方就做了这样一个demo,我便提出我们联合PR一下吧,写一篇文章,就是讲一下有多少人玩这个Fomo3D大概是什么情况,然后我那个联合创始人半夜就开始看那个,看完之后,然后第二天校友那边就觉得,说好像有几笔交易挺可疑的,但是大家也不知道为什么,就把这个交易发到苏州这边,然后我就开始看,一看越看越觉得不对劲,这里面交易量,交易特别的奇怪,因为交易涨的特别奇怪,那个交易就是,有一排的交易全是发0.1个ETH进去,然后出来的就是1个ETH或者是0.18,或者0.3、0.5,最多的是100倍的,扔进去0.1ETH出来的是几十个ETH,就是大量的这种交易,而且这个交易都是从一个交易,一个合约发出来的,就很奇怪,就好象Fomo3D和LastWinner是金矿一样,只要有人来掏就能掏出钱来。
我们觉得这里面肯定是有问题的,就开始研究,那中间走了很多很多弯路。以太坊的交易实际上非常难分析,这是我们发现的一个关键点,因为以太坊那边有智能合约,人们的交易会经过智能合约,而且智能合约可以调用,就是一笔交易他可能在一个合约里面转了一圈,里面产生了很多内部交易,但是这个内部交易你是很难看得见的,你只能把所有的交易全部抓到本地之后,用各种技术去做非常深入的分析,甚至我们要自己写自己虚拟机,去把那些交易原封不动的再回放一遍,才能把里面的很多交易抽出来,当我们抽出来之后,发现已经很恐怖了,我们发现了一个巨大的母合约,因为所有的攻击全是这个母合约发出来的,这个母合约只要去LastWinner,或者是Fomo3D那儿拿钱就能拿到钱,我们第一反映就是,这个太恐怖了,然后就把这个合约逆向一下,发现这个合约里面他只允许五个人来调,这五个人就是不知道什么人,我们就想,那这五个人里面,我们把其中一个换成我们自己试一下,然后就布在另外一个点,就怎么攻击都不行,你把钱扔进去,掏不出来。就是把钱打进去,出来什么都没有,浪费了很多ETH,一点进展都没有。
后来我想这样不行,我们不能这么鲁莽的玩,还是应该好好深入,已经发了3天时间,整个把那个母合约全部逆向,没有原代码的情况下全部理解完之后,终于发现了一个很复杂的攻击行为,做的非常巧妙。然后,发现这个合约的整套攻击系统正处于3.0状态的,根据它这些关联交易,我们能找到它的2.0状态和1.0状态,1.0状态实际上在Fomo3D刚上线的第二天就已经开始开发了,在大概上线的第5天、第6天就已经1.0在跑了,慢慢变成2.0。当它3.0造出来的时候,恰好国内的LastWinner出现了,LastWinner跟Fomo3D几乎一模一样,但是改了一个参数,什么参数呢?它把空投奖池的比例从新的1%改到10%了,因为这个掏钱恰好就是掏的空头漏洞。这个LastWinner它的空投奖金非常大,所以这帮黑客就很嗨,花了30天时间就直接掏了1万(我记不清具体的数字了,反正几千个是有的),每天都在不断的掏,扔进去0.1个,出来的就不知道有多少。然后,就这样弄了3、4次,整个奖池就快掏干了,大概有将近一大半的空头奖池全是为这帮人构造的。
这个是让我们感觉到很恐怖的一件事情,原来攻击者是一帮非常牛的专家,他写的那个合约里的每一点,他都把gas的消耗降到最低,所以他们把那个攻击合约已经优化到极致了,我们都想不出来,哇,原来还可以这么干。然后,他把这整个的空头奖池比例,他的成功率大概能控制在70%左右,我们给他算了一下,然后他那个母合约创建1000个子合约,然后1000个子合约攻击的时候,他会又创建一个临时合约,但是用完之后立即销毁,因为当一个合约一旦销毁之后,他是不会存在于区块链上的,你这样的话,就相当于你去区块链上找这些攻击合约,你根本就找不着,你只能将这个区块链历史追溯到若干天前,然后回放这些交易的所有过程,才能找得到里面的细节。
随后,我们将发现的情况汇总成一篇文章,在那一天的上午发了出来。当我们看见阅读量直线上涨,非常激动。这个时候LastWinner最后大奖公布了,就是那5个人里面的其中一个,因为我们对那个数字特别敏感,就那5个地址,一看就知道,他们拿了大奖。
然后,我们就不知道怎么回事儿。过了几天Fomo3D也出来大奖了,这个时候发现问题了,我们发现Fomo3D和LastWinner都有一堆很奇怪的交易块,又花了一天的时间仔细去分析这每个合约里面的每一笔交易到底是怎么回事儿,分析完之后发现问题了,原来是黑客他用了一招去拥堵以太坊的一种最简单的办法,然后最不耗gas的,用拥堵一下,把以太坊堵住。堵住之后,他就是最后一个买Key人,他离这个游戏倒计时结束他就能拿到大奖,但是这个游戏倒计时快结束的时候,比如说像还剩1分钟,他开始拥堵,他用一种非常有效的方法来拥堵。
为什么他能拥堵呢?他是因为很清楚矿池的打包策略,矿池打包策略是这样的,矿池打包会选交易费用最高的那个交易去优先打包,但有时候也不是这样,他会有一个选择的可能。于是他们就造了一个合约,造了一种交易,这个交易一上来,我们就把gas pro设的特别高,就是送你钱,送矿池钱,矿池一看见有钱,他就优先拿这笔钱。同时,他把握住了一个好的送钱时机,送钱是什么时候送呢?他会看这个攻击者当前是不是最后一个买Key的人?如果是,我就送钱,如果不是我就不送钱。所以,他在很长的一段时间内,他就不断的发这种交易,然后这个交易甚至都会预先放在能矿池的内存池里,但是他如果不交易,他如果不是买K的人,这个交易它耗gas非常小,所以他不会打包。但是,一旦有人买了K,他就会成为最优先打包的交易。所以,他这个设置的非常巧妙,而且非常简单,他这样一下就把以太坊瞬间就拥堵住了。
这个奖池拿到奖之后,立即就松开了,就是一个非常高效、拥堵以太坊拥堵的非常有艺术,这是我们让看见了,也是感觉很恐怖的一件事情,所以发现这件事情之后我们觉得,Fomo3D游戏已死,不会再有人玩了。
很多人就问,那这个漏洞能不能补上?实际上是能补的,有很多能补的手段,也有,现在我们能找到大概2、3种,能补最后那种拥堵,补随机数的方法更多一些。但是不管怎么样,很多开发游戏的人,他可能小看了网上这帮黑客,他小看了区块链里面这股力量、他小看了去中心化的成本,只看到好的,没看到不好的,所以说安全是很核心的,安全是有很多机会。
第二个问题我就简单说吧,我很看好以太坊,因为以太坊有很多技术都在做,有很多很棒的团队都在做,他们很快的就可以通过。我觉得1年内肯定会有2个到3个突破的点,但这个我很难预测。
主持人:大概是哪几个点能说说吗?
郭宇:我是比较看好casper pos的,还有其他的项目也挺不错的,我记不清名字了,我反正比较看好这几个,因为感觉上离实现已经不是很远了,包括分片,我觉得这个可能是在适当的时机就可以启动的。
主持人:刚才刘鹏先生说到“2018年上半年区块链的安全漏洞”,我们查了一下数据,发现上半年因为区块链安全漏洞而造成的损失已达27亿美元,那么从区块链行业的角度,想请三位来简单的讨论一下现在区块链最大的安全问题是什么?有什么很好的解决方式吗?思考一下。
沈瑞:我感觉这个问题还稍微有一点大,有点像宋高宗的岳飞,天下什么时候能安定一样。怎么说呢?因为我们做的很多项目,说的具体一点,它处在一个内忧外患,再加上形势不利的这么一个态势当中。
第一,今天照样又是9月4号,币价已经来了一次下跌,不管是怎么样吧,反正现在国内政府政策的力度是非常大的,很多我们的客户也都从北京、杭州、深圳搬到了新加坡、马来西亚这种地方来做政策的避险,这是政策层面的一个打压。然后,在内部,我们刚才说的他的团队,他的这些技术人员,其实你很难想象比如说一个年薪60万或者80万的工程师,他看到你平台钱包上几百个、几千个BTC的时候,他心里是怎么想的。其实他心里肯定是经不住诱惑的,这跟女人不要考验男人一样,平台你也不要考验工程师,工程师经不住考验。很多内部的盗币也很多,我们还发现有人盗币以后,他去对钱的时候也很担心,像国内大的交易平台,其实他们私底下关系都很好,要查交易记录的话应该跑不了。他要去国外、海外的平台去对,上了一个钓鱼网站,还损失了一点儿偷的钱。
所以,内部也是一个大的问题,再说外部问题,外部问题就是这个黑客现在就是利益相关的这种行为非常的多,其实创宇到现在,我来了3年的样子,创宇这个公司已经有11年的历史了,它最早从政府、小单位一直到政务信息化、到电商、到P2P、到区块链或者说是物联网,或者以后的AI智能或者什么东西,这些都不重要。重要的就是黑客技术始终围绕着外围应用安全这一块来给你做一些攻击,比如说你有什么平台、你有一个钱包,不管是币币交易还是怎么样法币、OTC或者是什么东西,它总是有一个APP,它总是有一个客户端要给你用,或者有一个网页给你用。它这个网页上就有这种传统的各种结石问题、脱库的漏洞,包括一些私钥泄漏的问题。
这种问题其实都没有脱离……在外部安全这一块,其实没有像区块链革命的这么狠。就是说你底层这个信息的同步,这个共识算法是很新的东西,没问题,但是你一旦到了落地的时候,比如说你提现、比如说你发奖励的时间,那就还是外部应用上的问题。所以,很多的黑客在结合着社工的方法,对这种区块链相关的行业做了大量的攻击,我们见过比如说他在掌控了公司的邮件网端和财务服务器以后,他是怎么做的呢?这家公司也是一个卖矿机的,他的销售方式是我接受这种数字货币或者是美元的打款,你付款以后我们的财务会确认付款,确认完以后,那你的机器已经在工厂和订单当中,你2个月以后会拿到这个机器,这个钱我就先收着。
其实这家矿机公司它有现货,它就不给你,我既收了钱,我还得再给你磨合2个月,我再挖点币,再挣点钱,2个月以后把东西发给你,这个模式一直运行的很好,尤其是一家上涨在2017年年中的时候,行情很好的时候,它收益非常多,所有人都不再关注说几个币或者几十万这种东西是怎么回事。
但是,慢慢的他就发现这个钱有点不对劲了,这个东西发出去,钱没到来,这是怎么回事儿呢?就是因为黑客用了一个定制的私有钱包地址,这个地址的后几位和前几位应该是和他们官方的付款地址是比较类似的,这个财务人员大家知道,在对账的时候,其实钱包地址非常长,基本上是不太会每一位都仔细去核对过,他一看前几位是一样的,是一个比较熟悉的感觉,然后给我OA上批一下,然后把东西给发了就完了。然后,付款方根本就不知道你真正的地址是什么,你邮件给我发的地址是什么,我就在网上打钱就行了。所以,在这种漫长的几十万、几十万这么偷的情况下,最后发现钱始终是对不上,就发现这个问题了。最后我们发现前端店销销售人员的电脑上就有这种木马的痕迹,但是它的产品也已经不销售了,换了一个几代几代的矿机,所以他当时的损失就比较大。
在经受了几百万的损失以后,这个公司最后愿意给安全掏的钱是多少钱呢?就是20万。他最后的决定也是比较……我觉得很有效吧,可能形式上不太好,但是很有效,就是我不再有这个网站了,我就通过朋友介绍去卖,因为他们的圈子,混圈子嘛,其实个人或者所谓的B2C形式在区块链有点行不太通。你个人的话你买矿机不太现实,你说我买一台放在阳台上或者哪儿,其实也不太现实,都是那种大的货厂的老板,他们这种老板都有自己的圈子,我与其维持一个我也保证不了安全的东西,我不如说我熟人销售,走人对人的、底下的交易就完了,这是一个。
其它的大多数像火币,其实它们自己不管是自己投资成立的子公司还是自己有一个专业的团队,其实它们对于安全的投入都是巨额的数字,安全还是IT里的一个奢侈品。很多公司可能还在说业务拥堵、网络攻击层面,在解决这个,其实很多人可能都想不到自己也有需要安全服务的这么一天,他可能也挺不到这么一天就倒下了。一直运行的话你肯定是需要这么一个团队的。接触到的这些客户损失的话,小的也得有大几十万,多的几百万,所以说整个区块链行业,我觉得如果没有政策封闭的话,可能它会像一个上交所或者深交所,它满足交易量的同时,安全性肯定也是没问题的。
但是,现在在政策的这种情况下,很多人只能是野路子出来,自己可能几十万招一个人帮着搞一搞,把典型的问题处理一下,真的有那种突发或者特别针对性的方案,也很难做出来。可能更多的就是有一些在你技术或者是这种管控能力不到位的时候,只能用传统的方法,那比如说我有一个线下的应用场景,可能是菠菜或者是什么东西,那你要转到钱,你怎么转呢?我们这个客户他又通过QQ来转,就是我天天QQ跟你说话,谈好了以后,那好,你给我某个账号,我往什么地址打钱,人民币也好、美元也好。你打了钱也好,我直接发给你一个硬件钱包,这个硬件钱包里面是存着我等额的代币,这个代币不会在市场上流通,只在我的线下商店里用,你拿到这个钱包,你出国去用,然后你回来以后,再通过这个渠道,再把这里面的币,不管是多了少了,还给你转到你之前的账户上,来帮你做兑现。
这个可能我觉得是一段时间内没有办法突破的,这个可能跟技术没有太大关系,更多的是政策层面在丰富它这个行业。所以,今后如果说政策上能进一步放开,或者说这种币价有好转的话,肯定会有新的办法,或者有新的形式来完成他们这种比较常规的交易,而不是说像现在这种,或者偷偷摸摸、或者很原始的方式,这种方式我觉得谈起来还是有点太早。
主持人:刘鹏老师,您对这个有什么想法嘛?
刘鹏:我这个也是对个人的一些想法。
第一,在安全这些方面,首先我们得先提高安全意识,而这就牵扯到有哪几种人要参与到这个情景当中来:
1、投资者或者说这些持币的人,那么你的安全意识如何提升?你的私钥怎么管控?你是不是会被钓鱼?你是不是在正规的平台交易?你是不是把你的这些代币用合理的方式、合理的方法去用?那么这些个人用户或者投资者,你的安全意识提升,其实对区块链的整个安全也是一个很大的,甚至是具有里程碑意义的一步,当我们认识到手里的数字货币并不安全的时候,我们应该怎么做才能让它更安全一点,这个是很关键的。
2、刚才也说到了工程师这一块,我们不能排除工程师作恶,我们也不能排除项目方作恶,但是因为每个人的人性决定了大家都禁不住诱惑,都一样。当看到这么大财富的时候,你会怎么去做?我们什么样的内部机制来管理?怎么样去隔离?怎么样去监控?你既然做了这个行业了,你就不可避免的要被监控到,那么这种方式其实也是提升的一种方式。
我们说整个生态上,智能合约这个层面其实更多的一个灾难发生点,这个刚才一些案例大家也看到了,智能合约发生了这么多问题。
那么发生这些问题我们总结一下,有几个原因:
一方面写智能合约的这一部分开发工程师,他其实并不是专业写智能合约的,很多人都是从其它的领域转行转移过来的,临时的,我看了一下语法、看了一下结构,了解了一下环境,OK,这个东西好像是这个样子,他写完了以后,一跑,好像没有问题,那么一个合约就产生了,这种合约我们在审计中经常见到,一些合约写的很随意,根本没有顾及到安全性。所以,这时候我们才会有我们的一个业务叫智能合约撰写辅导,我们会告诉你你这么写会有问题的,会有什么样的问题?什么样的问题会在你那儿发生?那我们的检测过不了,原因是什么?你要怎么调整?这方面需要说很多的工程师投入进来。
另一方面,我也调研了一下,国内的话,到现在为止,没有专门有一本书是来讲这个Solidity 语言开发、智能合约是什么样子的,没有专门的,都是以太坊的或者区块链的某本书里,抽出一章来讲是怎么回事儿,但是没有单独的一本书去讲Solidity 这个语言是怎么诞生的,原理、机制、运行方式、包括它的一些特性,没有任何一本书拿出来讲,这就是对于我们国内的很多开发工程师来说,他的英文水平又没有达到可以很自由的阅读英文文档的能力,所以大家就是你抄我,我抄你,所以A合约有问题,B合约可能会有类似的问题。
这种状态下,我们的智能合约想保证的,从编写的这个层面来保证安全,就很有难度。并不是工程师能力不行,只是说我们给他的这些相关的资料、相关的资源还达不到他能够编写出这种很健全的智能合约的程度。
包括作为传统互联网企业也好、新兴的这种项目方也好,他的测试工程师对整个区块链机制的理解、对这些区块链体系的理解不到位,你让他去测区块链的东西,他测不了。智能合约其实他也测不了,所以才会有我们这种专业的安全机构出来,OK,你们做不了的事情我们来做,你们不了解的事情我们了解,那我们来专业做这个事情。
所以说,对于安全的投入其实是每一个做区块链投资的这个项目方也好,投资者也好,你其实都应该关注这件事情,都应该有一定的投资,像作为项目方来说,你需要找安全公司做审计,帮你出解决方案,那作为投资者来说,最起码你资产大的时候,你得去买一个钱包来保证你的资产安全,你说你就一个以太坊、两个以太坊,无所谓,我估计没人看得上,但是你量大的话,你总是要……最起码的你是要购买一个钱包,你至少要把你的钱分散到几个账户里吧,不能放一个账户,让人一锅给你端了,这不合适。
实际上,安全意识的提升是整个行业中每一个角色都去做的,那么同样作为项目方来说,我们需要跟安全机构来合作,把智能合约层面的问题在部署之前尽可能的抹杀掉,不可能全抹杀,这个我们也保证不了100%,只是说让他的攻击者成本有一个提升,到你扛不住这个成本的话,攻击自然就会越来越少。
当然,这其实是我们说的一个构建意识和生态,这不是说靠我们一个人努力,也不是靠我们一个机构努力,而是整个行业都得努力。我们可以提供服务,对于项目方来说,你有没有意向来购买这个服务。
当然,我直接就用了“购买”这个词儿,因为毕竟我们的服务不是无偿的,是购买服务,那么你购买服务你愿意付出多大的代价?你认为你的东西价值是多少?你要怎么去匹配?
举一个自己身上发生的例子,我丢过一辆自行车,这辆自行车也不贵,还不到5000块钱。为什么丢了呢?我觉得这自行车没必要买个太好的锁,我就买了把20块钱的锁,然后它就丢了。现在我就是1000块钱的自行车,我也要买200块钱的锁,所以我的自行车再没丢过。你为安全投入多少,你就会得到相应的回报,是这样的。所以,大家对安全的投入一定要有这种意识。
郭宇:区块链的安全问题,我觉得还是人的问题比较重要。我接触最多的就是seed丢了,就是放到那个手机钱包里,然后seed找不着了,这是我见到最多的案例,挺感慨的。那怎么办?我找谁?有没有客服什么的?反正也很没办法,这个去中心化,高科技,没办法。
我觉得还是人的问题,就跟刚才说的这个例子,只愿意花20万块钱……我们也遇到过这样的坑,包括甚至是说我们有过一个客户,他这个合约已经上线了,已经部署了,明知道有个安全漏洞,然后我们就跟他说有安全漏洞,他没有直接跟我说,他是通过一个朋友,他说让他们闭嘴吧,不要去外面乱讲,就没了,就再也没有下文了,我们觉得这个怎么弄?对我们来说就是面临着一种道德上的……你要做个决断,到底这个事情你是要公之于众,还是说你永远捂着,怎么做?我犹豫到现在,我还在犹豫,不知道怎么做,哪个做是好、是坏,在这里面你找不到一个评价标准,已经失灵了。
所以说我觉得还是人的问题,当然大家都知道安全好,不安全不好,但是可能放在某种场景下,还真的不一定让你很容易做出一个决策,所以说我觉得人的问题很关键。
我觉得包括很多方面吧,包括项目方、包括每一个投资者,每一个投资者他也是,那出来一个漏洞,我要不要跟你说?他一听有安全漏洞,那要不要讲?讲了币价就会跌。然后不讲,那是不是就把自己较掩耳盗铃,别人都不知道,挺纠结的,我到现在都还在想,天天思考这个哲学问题。
主持人:接下来问一个比较细节的问题,也是一个老生常谈的问题,就是这个随机数的问题。很多都被黑客侵入,针对这个,郭宇老师,您怎么看?
郭宇:这个随机数,我觉得这是一个技术问题,而且还是很难解决的问题。我觉得从技术上来讲,随机数用在不同场景上,要求不一样,一个要求非常安全的随机数是很困难的,一个很完美的随机数是很困难的。可现实中我们又需要随机数,又需要在一个公开透明的环境下产生一个随机数,现在没有特别好的方案,但是有一些环节方案,没有那么随机,但是差不多。你在基于你要选择相信一些东西的情况下,去相信它没问题,我觉得这个还是可以做到的。
安全就是这样一个很奇怪的东西,你总要相信那么一点东西,你相信了,明天这个世界不会毁灭,今天还可以好好睡一觉,但你是相信,就把这个作为一个假设,出门骑自行车到底安不安全?你这也是有很多担心假设的,反正安全里面绝对没有完美的东西。现在的游戏里面这种场景是有解决方案的,我们后面也会做这样一系列的文章和科普,包括一些代码模板会放出来,希望也是给大家做点事情。
总的来说,但我们接触到另外一点,为什么说人的问题?我们接触到有一些游戏,特别是做游戏的找到我们,我们说这个地方有,他说我们要做个仿Fomo3D的,我说没问题,我说那个安全漏洞你知道吗?他说知道,我说那个要不要修?他说那个不需要修,先上线再说,先捞一锅再说,这种心态还是非常强烈的。
但我觉得这个当然是很不健康的,你可能捞那一波,一天后可能就出问题了。随机数我觉得也是人的问题,因为随机数里面有一个知道不知道的问题。主要的那个问题怎么解决没有人提前知道这个数,知道不知道这件事情它不是一个技术上的问题。当然,有机数可以做,但是现在还很难。
还有一个问题,随机数现在有很多就是多方通过经济激励来多方产生,每个人都不知道隐含的水平,每个人都不知道自己的水平,每个人提交一个数,然后通过一起算。可是最核心的问题是你怎么保证这些人不串门,如果这帮人去给一个世界上最大的赌场出随机数,其实这个很有问题的,你只要买通这个人,就能控制他给你发牌。所以说,很难吧,现在我们还没有找到一个非常完美的方案,相信也许未来会有。
主持人:沈瑞老师,对这个您有什么想法?
沈瑞:我们这边其实更多的是安全服务部门测试,就比如说我看到一个目标,他如果这个门实在是门卫特别厉害,我进不去的话,我可能就会考虑翻窗户进去了,这个随机数问题对于我们来讲可能是短期内没有什么现实收益的问题,可能我们不会太多的去考虑。在其它的方面发现问题,可能对我们做安全工作来说见效更快一点,随机数这个可能还是太遥远了一点。
主持人:刘老师呢?
刘鹏:其实随机数这一块,我个人当时发生问题也研究了一下,大家也知道本来计算机领域就没有真随机数,所以我们在一个伪命题上去讨论怎么安全,我觉得没有必要。只能说我们尽可能把随机数产生的这个复杂度增高,越来越复杂、越来越复杂,很难被撞到、猜测到,我们只能做到这一步,因为我们生产的不是真随机数,那我也无能为力。
我也看了一下,它能解决问题,但是你只要开源了,它还是有机会去撞的,因为我们还知道总有人技术比我们技术高,我们不是技术最好的,总有人技术比我们更好,他最有办法的。我们做防守的这群人就这样,我们只能被动,我们没有办法打出去,我也想打出去,但是做不到。所以,随机数这个问题我们也很无能为力。
主持人:感谢,还有一个问题是网友们想要问的问题,问三位,目前这个合约审计的技术,就是符号的执行、形式化验收这两者。针对审计部分,它们之间这个技术差异在哪里?形式化的验收和符号执行它的差异在哪里?
刘鹏:形式化验证这一块,郭宇老师是专家,我觉得还是他聊吧。
郭宇:他问的是形式化验证和符号执行是吧?符号执行是一种技术,形式化验证是一个领域,所以说面它们之间很难去做一个对比,但是形式化验证里面有一些别的技术,像mode checking和定力证明,符号执行也是一种,但是它很难被归到形式化验证里面,主要原因还是符号执行本身现在有一些技术上的缺陷。符号执行是工业界已经在用的一个工具,比如我举几个例子,像Microsoft的产品office,它在最终release的前一星期,然后会扔到Microsoft一个机群,大概几百台机器组成的机群,那里面就是大量用的符号执行这个技术,就是把这些软件扔进去,使劲在里面各种跑,穷尽各种测试中没有遇到的这些问题,尽可能去找到问题。
它在工业界实际上应用还是挺广的,包括BAT,也包括一些大家能摸到的工具来说,它都大量在用。但是符号执行里面天生有一些难题,有一些很难的天花板,这个就牵扯到具体技术细节了,但是其中一点就是符号执行有可能会重度的依赖背后自动定理证明器这样一类软件。
这类软件它最核心的思想就是它有一套自己的算法,你可以把一个定理(这个定理是个数学定理),你扔给它之后,它自动的去找到解答、找到证明。但是问题在于自动定理证明本身在理论上叫半可判定问题,就是它要么找就找出来了,找不出来的可能是死循环,它不能保证立即能返,它不能保证一定能返回结果,它的这个算法是个半判定的。那这样就意味着说实际在运营过程中,当你用符号执行去找到一个解决……走到某个地方要解一个命题的时候,发现你解不出来。
通常给一个软件,比如说100多行C写的代码软件,它可以会产生上万个定理去跑。那这样的话,对于实际的软件来看,它就会对每个定理证明器的容忍时间特别短,从几秒到1分钟、2分钟,这个是不同产品不一样,如果不返回,就不求解,解不出来,那这个会导致符号执行在实际运行过程中它很难去便利所有的……
另外,符号执行对于软件里面特有的一些状态是很难做的,比如说像C语言里面的指针,指针别名,符号执行是很难做到的,符号执行必须跟别的技术组合在一起才能做深入的代码漏洞找寻这样的一个工作。
当然,智能合约有智能合约方面的问题,但是也挺难的,智能合约上也有指针。包括循环产生的爆炸,比如说智能合约里面有自串、有bace这些不定常数组,对于不定常数组来说,对于符号执行这个技术来说,非常大的挑战,它很容易就状态爆炸,但定理证明器的工作能力非常有限,你就是放很多机器都没有用,它不是像深度学习一样,你堆机器就能搞定的事儿,这个你堆机器也不一定搞得定,它没有一个很容易并行化这样的一种算法存在。
总的来说,全自动就很容易产生一个天花板,你很难在天花板上再往上跨越了。但是,在人工构造声明里面有一类技术是通过人工深度干预构造成的这种技术,不太受这个限制,这是人工构造声明最大的问题就是人工构造的成本比较高。
所以,这个网友问的问题比较深了,但是现在没有一个很完美的单个技术在实际……不管是商业还是工业应用来说,包括理论研究也是,它通常是好几个技术绑在一起,想去探索新的方式,都是这样的,单个的一个符号执行checking,proofing等,都是这样的,单靠一个技术很容易到一个天花板,它每个技术都有它的长处和短处,一定是后来把这些技术绑在一起,就跟比特币一样,它有很多密码学技术是在一起的,不是其中一个东西特别厉害。
主持人:他其实有追加,可能说做这个合约审计都是用符号执行和形式化验收,他想问的其实是说不同平台之间的技术差异在哪儿?或者说具体一点,比如说币安实验室有什么突破性的研究?或者输出?
郭宇:这个我觉得两方面吧,一方面看论文,今年有个信息安全有个权威的顶级学术会议叫CCS2018,上面他们又发了一篇文章,就是类似的技术,怎么用这个东西去检测智能合约里面可能的这种安全漏洞,有这种学术文章出来,起码可以看到它非常创新的一些点,这是很明白摆出来的。
另外一类就是开源,也有一些用符号执行技术开源的一些平台,我们自己也有一个符号执行的引擎,就是说那这些东西实际上,我觉得也是要开源出来大家慢慢去比较,做这种评测,这个肯定是需要的,一个是工程上的实践,一个是理论上有没有一些新的技术出现。
所以,这个差异化现在不好说,现在PR的成分多一些,实际的东西我觉得这个慢慢时间沉淀下来,好的东西可能会漏出来,互相也可以学习,所以说我觉得这些不同平台之间,也互相取长补短,互相学习,很先进的技术很快都会融入到很多的平台里面去。
主持人:感谢,接下来我们再来聊一个问题,我们的主题题目是关于智能合约安全商业化的创立,针对这个商业化,就想问一下,未来哪些又会成为商业化产业最高的?
沈瑞:盈利的话,可能还是游戏会比较好点。其实赚男人的钱可能比赚女人的钱会不会更好赚一点?我也没太想明白这个问题,可能不太了解区块链现在挣钱的都是哪部分,刨掉ICO或者是这种币的ICO的话,其它的有待商榷。智能合约肯定要贴着风投走还行,如果ICO不行的话,可能就是区块链游戏,如果游戏不行的话,也有可能是博彩,可能在这种,应该就类似于黄赌毒这种比较挣钱。
主持人:走在法律的边缘。
沈瑞:我感觉他们已经是在灰色地带了,在往里走了。这块落地的话,合约审计现在看不到什么特别多的、新的路径能挣钱了。像平台的话,我们有像整体的运维服务、黑白粉的测试,包括公链、私链,像一些联盟链之类的,都是可以做这种相关的功能性的审计、安全性的审计,这些都没问题。
其实作为我们安全公司来讲,这个问题其实是比较好想的,你P2P火的时候你就做P2P就可以了,区块链火的时候你就做区块链安全就可以了。跟具体区块链他做那个行业没有太大的关系,就跟你什么公司都需要一个保安一样,我们其实是一个相对于服务性质的行业,并不会说因为你区块链从交易所改到……交易所特别火,现在变成智能合约特别火,所以我们也要跟着做很大的改变。其实我们没有特别大的改变的动机,也没有必要这么做。我理解的就是这样。
刘鹏:其实我觉得我们俩的角色比较相近,因为我们都是关注技术,我们确实不太关注商业化的问题,因为我们就是有问题我们解决问题,有问题我们把问题解决掉,至于这个东西怎么赚钱,我觉得这应该是另外一个团队来解决的问题。但是你要正常预测的话,说实话,我个人真没考虑过这个商业化应该怎么办,因为我个人还是感觉想把这些技术上的东西玩明白,比较好玩一些,所以商业化这个让他们操心去吧。
郭宇:区块链商业化,这个我们是不断在探索,因为我们才探索的4个月,现在技术方面还有很多工作还需要做。另外,我感觉智能合约审计这个趋势就是智能合约做的事情会越来越复杂,这是能感觉得到的。Fomo3D现在已经有1000多行的代码,包括还有一些没开源的,大概有2000多行。像半年前,我见过1000多行的代码,非常少。现在我觉得动辄上1000行就相当多了,特别是游戏类的许多,我觉得未来还会再增加,它的复杂度增加,实际上对安全审计的门槛相当于在提高,因为现在对于这个ERC20的Token审计的话,相对门槛会低一些。
但是,我觉得未来做复杂的事情,我觉得还是要出现几个现象级项目,包括以太坊这种,像一些智能合约新的技术在继续发展。技术驱动的时候,后来会出现很爆款的一些东西,那个东西是市场应该会非常大的。另外一个,也有一些门槛,所以说现在进入的这些公司,应该是能积累足够多的技术和产品、服务,各方面都准备好了以后,然后再一展身手。现在我觉得基本上这个市场也还可以,虽然有点低潮,但是还是有人在努力着去改善现状。做DAPP的团队还是越来越多的,我能感觉到。这是我的看法。
主持人:我再问最后一个问题,也是我们之前在介绍项目的时候总说这个方案特别贵,比如说如果是同样100万,然后只卖20万的效果不一样,卖200万的效果不一样,就是说舍不得孩子套不着狼这个概念。我想说以后未来会不会有可能变成免费的方案?就是这种方案,包括我们10多年前使用一些杀毒软件的时候都是要付费的,经过大战以后,慢慢向大家普及了,会不会以后也会有这样的趋势?
刘鹏:其实我们认为,我们希望推出一种叫做“安全合伙人”这么一种概念,安全合伙人是什么概念呢?其实就是说我跟你共存亡,我跟项目方是共存亡的,你的存在才能延续我的存在,所以我为你做安全的这些工作其实是为了大家一起成长,所以我们叫“安全合伙人”这么一个身份,就是我来帮你做一些安全,比如审计、保护、监控、检测等这些由我们来做,但同样的话,你可以不付现金,但你可以考虑给点东西给我们,这样我们共同成长。
我们以安全方式来入股这种方式来大家一起合作,这应该也是未来可以讨论的一种生态、一种方式,因为这样大家一荣俱荣、一损俱损,这样对大家都有好处,对行业也都有好处。
沈瑞:你说免费做我突然想起来了,我就想起了360,那你就要承受各种垃圾广告、私人信息的泄漏,我觉得个人用户……就是百度的人也说过,中国用户不在乎自己的隐私,其实开放记录露出去,他还很害怕,他在谷,他只是说现在想用付费的可能也找不到,这个我觉得对这种企业的安全来讲,我们是知道创新方面是绝对不会做类似战略上判断的,我觉得这个是绝对不行的,虽然我们面对过一些利用招标规则、一部分中标、一部分中标什么的这种。
事实上证明,它一块钱中标这个项目也做不好,我们都知道100万的项目,如果他10万报价去做的话,他也是做不好的,最后交付出来的只能是一个对不上号的东西。有一个故事(大家可能都听说过),一个爸爸让他的女儿给他接杯水,接完了,渴了,再接一杯水,再渴了再给我接一杯水,他在想这个女儿才刚刚两三岁怎么就会接水呢,她只能从马桶里弄水,因为高了她够不着,所以你就只能喝这个水。
如果你非要用一个特别低的价格,去采购一个不对等服务的话,其实你得到的是什么?这个就显而易见了。至于说价格(安全服务的价格),其实我刚才也说过几次了,安全是个奢侈品,其实它再奢侈,也超不过IT投资的10%或15%,也就是这些钱了。
这个还是要看整个公司对风险上的综合考虑,如果他觉得自己受保护资产的价格本身不高的话,他可能少一些这种的,多一些运营费用、推广费用,如果说它真的是一个以这种IT资产为核心竞争力的话,它相关的投入必然就会高。
所以,这个时候咱们准备的服务价格能不能降低,还是要看你的服务需求一个水平。但这个时候像大的公司、大的团队他会有一定的优势,比如像富士康做一个手机,它本身人工成本就很便宜,可能相对小的作坊,它不能做这种批量资产,它要做一些定制的,定一些DIY的东西可能会挣钱,这就像其实我们三家公司坐在这儿,应该就是三个不同规模的企业了,像我们做这种大的输出、这种战略级的合作,其实绑的大平台是很多的,这个就是不同的公司有自己不同的运营方向,资金的话,现在公司也比较开放了,像数字货币交付、支付,或者说××0149050(首款,尾款)的支付方式,其实都很灵活,这些都还可以谈。
我觉得只要是在一个业内相对合理的范围,因为我们不可能一个项目别人报5万块钱,我们非要报到10万块钱,这是不太可能的,不然也做不到现在这样,只要是一个相对的范围我们都是可以谈的,这个质量也是可以保证的,就这么一个状态。太低价,尤其是免费这事,我觉得特别不靠谱,尤其是你免费把代码,比如你白盒审计它不要钱,这个感觉还是不太行。
郭宇:反正最近看见了很多做自动化审计的场子,前一阵子腾讯也做了个自动化审计平台,包括应该有很多了,我们看下360当时为什么免费,其实360免费应该经历了一段时间,在做商业模式上的一个变革,它通过免费杀毒软件,它在什么地方赚钱,它是导进来流量通过它的浏览器去变现,就是说它虽然免费的是这个,它通过免费这个把竞争对手给压下去,同时引来大量的流量,把这个流量变现,所以它是有一套组合权的系统打法,不是说光简单的一个免费。
相信没有谁愿意直接去简单免费这个,没想清楚,那可能是自己死了,让同行不爽,自己也死了,我觉得这里可能会有侥幸者,就是他想到了一种别的变现手段,通过免费这个存进来在别的地方赚钱,这个有可能(很有可能),但我现在还不知道,我们也是在观察,看看这个未来的走势到底是什么样的,所以我觉得免费真的有可能,但第一个谁来干不知道。
主持人:非常感谢三位的回答,到现在我们活动已经进行了2个小时,三位也都辛苦了,也感谢各位朋友到场的支持,接下来我们来合个影纪念一下,请参与到我们活动的这些朋友们来到前台。
评论(0)
Oh! no
您是否确认要删除该条评论吗?