原文标题:《慢雾余弦:揭密 IOTA 主网暂停、bZx 与 SIM 被黑背后玄机, 做到这些可提高账户安全|算力大学视频公开课全文》
原文来源:算力智库
算力说
全球疫情危机,分布式办公,仅 2 月份以来,已经发生多起交易所、主流公链与热门 DeFi 项目 bZx 甚至个人的数字资产被盗。在数字资产领域,安全是一个永恒的话题。本期算力大学请来区块链安全专家,慢雾科技创始人余弦,分享数字资产安全保护的重点。
余弦从私钥的使用、项目安全的判断、硬件钱包的选择等角度解读了如何保护数字资产的安全,其表示,从私钥和钱包等管理上,都有非常多的细节会产生漏洞。
我们这次讲的是一些交易所、公链、钱包和个人的安全事件,更重要的是之后我们如何更好地保护自己。我们希望这个分享能够让大家知道可能的威胁会发生在哪。有可能我们现在参与这个直播的听众,不仅是个人,也有一些交易所,或者说承包甚至做供应链的,希望也能够通过我的这个分享得到一些启发。
1
私钥、钱包、SIM 卡被黑,近期安全事件暴露出的安全漏洞
先脱敏谈一下最近一个月披露出来的一些安全事件。
第一个是意大利的加密货币交易所 Altsbit 被黑,虽然说金额比较小,而且是一家比较新的交易所,但是这家交易所本来资金量就比较少,盗取的资金量其实占了他们大概有一半左右,所以他们宣布倒闭。
第二个是 IOTA,我们注意到这个事件主要是因为 IOTA 因为此次事件整个主网暂停了。
大家可以想象一下,一条很知名的公链,它能够把主网暂停,是什么会导致他们去做这种事情?
公链的主网暂停了,比如说比特币、以太坊,如果它们暂停了,等于就没法进行任何的交易,上面运行的各种合约也没法正常执行,损失会非常大。IOTA 当时做了这样一个事情,因为的官方钱包因为引入了第三方的组件,而第三方的组件被黑,间接影响了他们官方钱包的很多用户,导致他们的私钥、密码被盗。已经统计出来的损失,被盗的 IOTA 大概是 855 万枚,价值大概 230 万美金。
这个事情刚开始整个社区跟官方都非常惊恐,他们不知道问题出现在哪,只是收到许多用户的投诉,说他们的币丢了。为了调查这个事情,他们不得不暂停了整个主网。
这个影响在我们看来是一个非常深远的事件,但是这个事件在国内除了像我们有主动去跟进,并且把它给披露出来,并在推特上跟官方以及社区里面的相关的一些人有相关的互动以外,基本上也没有看到其他的安全团队去应急这个事情。
当时我们发现了它被黑的原因是因为官方钱包发布了新版本,内置了一个交易模块,等于钱包内有一个交易所的功能。
这样的一个钱包,它的桌面版本使用的是一个非常知名的 JavaScript 的开发框架。他进入第三方也是通过 JavaScript 的一个远程调用的方式嵌入的。这样的话会导致一个问题,如果第三方他被劫持或者说他被黑了,JavaScript 的内容被改了之后,是可以直接影响 IOTA 的钱包,因为它的整个的运行环境都是 JavaScript。
所以说基本上可以认为第三方出问题了,用户只要打开这个钱包,并联上网,你的私钥,你的密码以及你可能操作的一些相关的信息,都是有能力对这个恶意的 JavaScript 代码给获取。这个是一个非常真实的攻击案例。我们也输出了中文跟英文的研究报告。
接着是 bZx,bZx 是一个 DeFi 项目,其实在它被黑之前,我们听的都非常少,毕竟在国内也不是宣传的特别多,用的人也是比较少。我们是因为它被黑了一次之后,接着又被黑了第二次,我们才非常去在意它为什么会被黑?
其实根本的原因在于整个经济模型,风控上是有缺陷的。包括这些协议上的一些资金的互相流动等等在我们看来是一个系统内跟系统外整体的一个经济模型上的风控缺陷。所以这个事情在我们在理解上,它不是一个非常传统的,比如说像之前智能合约出现的像一出漏洞,或者说一些权限过大,越权等等这样的一个非常简单的漏洞。
这次的波动是一个整个经济模型上系统内跟系统外结合起来才能够出现的一个攻击事件。在他们被攻击之前,其实已经有其他的团队给他们提醒过,可能会有这样的问题。但是这些做地下黑客的,比较奉行的一个执行法则就是干起来。就是你要做出来,让人看到,你要真的能做到,而不是说它可能会有什么样的问题。
当然这样一个提前预警也是好的,只是说很多时候官方他们会觉得他们非常熟悉,智能合约,非常熟悉 DeFi 的世界,反而过于骄傲。真的被干起来之后,所有人才知道原来这种理论上的风险,却会真实发生。这个是 bZx 给我们带来的一个启示。
它在我们看来是一个去中心化这个标签的代表。但是,无论去中心化还是中心化,都有相关风险。
最近一次的话,大家印象应该是非常深刻的,就是前几天周末的时候,这个叫 Josh Jones。我们也做了相关的推测。当时他是在 Reddit 上说他被盗了,大概是 1500 多枚比特币,还有近 6 万枚的 BCH。他说是他的 SIM 卡被黑,SIM 卡是手机里面非常重要的一个模块,如果 SIM 卡被黑掉,比如说我的 SIM 卡被黑客做了一个复制,等于拥有我这个手机号了,可以接收到任何信息,比如说相关平台的验证码就可以直接导致我在这个平台上的这些资金的风险会受到影响。
为什么他说 SIM 卡被黑我们会比较相信,是因为在去年的时候,Coinbase 交易所的用户有好些个都是因为 SIM 卡被黑,导致他们在 Coinbase 上的资金被盗,这个在我们看来可以归结为同一类的风险,就是第三方。
其实跟之前说的 IOTA 的感觉非常像,IOTA 是因为钱包嵌入了第三方的交易所的组建导致被黑的。这个和 Coinbase 和 Josh Jones 被黑都是因为第三方。
SIM 卡攻击手法,其实是挺流行的,但是在国内大家可以不用太担心,因为国内已经度过了早期运营商各种混乱,甚至运营商内部做恶这些情况,包括我们相关的一些法律以及监管,大家的手机号不会轻易被别人给复制。
放在我们国家大概 10 年前,这个现象还是挺普遍的。但是在国外运营商的实力,不一定有我们国内的这么强,大家都都知道我们国家基建的水平是非常强的。而很多海外运营商属于私人企业在运作,技术实力等等都不一定那么高,包括相关的一些内部协议,可能都是很古老的版本,以及风控管理上可能都比较落后,确实会存在海外的手机号被社会工程学等方式复制。
这个我们是会去提醒,如果是海外的用户,除了用手机号作为双因素之外,最好还用像谷歌身份认证器这类二次认证的 APP,或者一些硬件级解决方案。
以上是最近这一个月公开披露的一些事,其实还有很多未公开的。
2
如何管理你的私钥?
最近一个月我们看到很多的问题,其实内外都会有。比如说内部大家都知道,私钥即身份。私钥里面有非常重要的资产,这里面涉及到三个关键点,从私钥的生成到存储以及使用这三个环节,如果有任何一个环节没有警惕,就有可能随着时间的推移,当某些风险暴露出来的时候,想往回或者说去调查,这个的可能性都是非常低的。
我们一般提到私钥的话,还会提到像多签,包括现在很流行的一个算法叫做安全多方计算,但是在早期的时候,其实很多人他们管理一些重资产的需要的时候,尤其是有一些币种,他对多签的支持上,并不是让人觉得非常的放心。
比如以太坊,大家都知道以太坊的流行的多签方案是通过智能合约来实现的。但是多签的智能合约历史上也是出过安全问题,不能百分之百去相信通过链上智能合约的方式达到多签绝对安全这个目的。
即使不通过智能合约,我在协议集上,在链下去做多签的生成,也不能保证是绝对的安全。但是这里面我们会更加的放心。原因是这样的方式在历史上已经经过无数次的校验,如果出问题的话,基本上大家可以认为整个公链或者说这些知名的公链的基础设施出现非常非常大的问题。这个时候就不是某些个案了,绝对是一个非常大范围的事件。
所以从概率以及从相关的代码审计上,包括使用频率上,很多人会比较喜欢类似于 BTC 这样的原生透明的解决方案,而不是由第三方写出来的多签智能合约,虽然这些智能合约也通过了安全审计,但是我们对智能合约以及智能合约底层的虚拟机,本身我们就不是很信任。
所以在早期,有很多人的私钥生成是属于非常石器时代的方式。说当私钥生成之后,比如说私钥或者说助记词,通过多份的抄送、抄写,就是有多人掌管。这几个人刚开始可能会非常互相信任,比如说三个人,任意两个人拿到私钥,或者说助记词的片段,他们就能够组成一个完整的私钥。
但这里面第一个问题,就是生成私钥的时候,由谁来做的?他做的这个环境是否是安全的?他说他做完之后把它给删了,删除的这些数据,这些东西是有一定的办法能够恢复的。这里面没有解决第一步的时候的可信问题,会埋下一个值得质疑或者说怀疑的种子。这些问题由于早期,想调查清楚是非常难的。
接着是存储,怎么把私钥放在一个安全的地方。
另外一个是使用,你最终还是要使用,你要把这些币打出去,或者说你要转移等等。你只要用,你无论直接还是间接,你都会有联网的可能性,或者说你当时的操作环境是否安全?
最近几个内部的案例,其实很多都是围绕私钥的,刚才说的私钥在区块链层面上非常核心,也是非常基础,非常底层的一个东西。
在整个系统层面,比如交易所或者钱包,要跑起来,有各种业务模块,比如币币交易、法币交易、钱包间的跨转、充值、体现等等。包括现在的一些新玩法,比如合约交易、杠杆以及你可能会有资金托管,你可能用的是第三方。
我们看待安全问题的时候,当一个事物越往上层,越面向用户的时候,整个的安全的复杂度就放大了。所以我们也发现有不少被黑的,或者说被盗币的案例,是出现在比较上层的风控缺失,或者相关管理平台被黑掉。
很多人可能会觉得我的管理平台,黑客怎么能够看到?实际上你只要触网,你的电脑就有可能会因为被植入木马或者说病毒导致这些相关平台的权限可能被盗。
当我们做一个被黑事件或者说被盗币事件剖析的时候,我们的做法绝对是从上到下拆分很多层,很多模块,我们会采用最简单的方式,叫做排除法。每一块、每一块的排除,最终确定它的根源是在哪。
但这个过程实际上非常耗时,有最耗时的大概是耗时两个多月,我们才把真相给发现。当时我们整个团队知道真相的那一刻,眼泪都快掉下,瞬间觉得索然无味。
我们深刻知道任何事件,在我们看来就像是破案,需要用排除法把任何的可能性列出来,然后把它给逐一排除掉。而且很多时候很多人的描述是有问题的,你要去推敲,他的记忆可能也是有问题的,甚至他可能是故意使坏,你都要去推敲。
我们历史上能够成功破案的其实也不是很多,能够破案的比例可能也就一半以上,不是说做到绝对。破完案之后还能把被盗的币找回来的概率就更低了。
因为大家都知道加密货币交易在链上是透明可见的,但这个透明可见只限于交易,不会去记录你的 IP,你真实世界里的隐私。
在链上追踪的时候,最终有一个比较有意思点在于,最终这些币他一定会兑换成法币出来,只是一个时间长短的问题。
我可能几年之后,等风波过了我再来兑也行,你最终会兑换成法币出来。我们发现的很多案例它是急于把它给兑换出来。
如果我们是地下黑客,无论通过怎样的手法,是通过这些交易所钱包的漏洞把币给盗了,还是说把各种用户钓鱼把他币给盗了,还是说通过勒索软件把你的服务器和你的电脑加密了,你必须支付我比特币或者门罗币等等。那无论怎么样,我盗了这些币,我会想办法把它给变现出来。
这里就涉及到你的币会到交易所里面去,进入交易所之前,现在越来越多职业的做法是会经过一个混币平台。这些混币平台的存在,对于其他的需要去洗币的人来说,是一种博弈。我在里面洗的这个资金,每一次我肯定不能多,这个不能多意味着我的速度就会慢,另外一个我可能会多找几家一起去洗,原因是如果你这家万一被搞了,我在你上面洗币的所有证据链都能查到,甚至你上面还会记录我的 IP 等等。
这些方式如果在一些超级力量面前,都不是特别有效。所以大家可以看到洗币也是一门艺术,它不容易,动静越大,也有可能会被暴露。
最终你从混币出来之后,要进入到一些知名的交易所,因为他们有法币通道可以出来,这里又涉及到你在这个交易所上的身份、账号问题。职业的黑客是绝对不会拿自己的身份去注册这些交易所,他们的各种 KYC,各种身份甚至视频识别,都可以是假的。
这是非常完整的一个地下黑客产业链,都是要靠钱去买的。所以说比如我盗了 1 亿美金的币,最终洗出来会被各种中间环节,有可能踩了一个坑,我的币就出不来了等等,最终会被扒掉百分之二三十,已经算是很幸运了。
3
如何判断这个项目安不安全?
很多人关心的主要问题,在于一个项目到底安全不安全,怎么去判断?
这不是一个非常容易的事情,但是我们还是给了一些判断的依据出来,可以作为大家的一个参考。
第一,内部有没有实力不错的安全团队?或者富有丰富安全经验的核心人物在把关,这个是非常关键的。我可能没有一个安全团队,但没关系,我经验非常的丰富,我能够连接研发、运维、运营等等,把整个的安全建设工作有序的推进,也可以。
那怎么去判断的内部有安全团队,或者核心人物,到底是真的假的?这个不好回答,这个行业很多时候也是靠口碑的。所以说我们可能要见得多,或者说认识的这个人多,判断才能准确一些。
第二,近半年内也没有被第三方专业安全机构安全审计过,并且有公开安全审计结果。这个要求在我们看来还是有点困难的。
因为整个行业发展速度非常快,半年内有没有被一个安全机构审计过,最好是一个非常专业知名的,并且有相关报告可以公开审查。但是我们发现有很多的项目方其实不大愿意把内部的审计报告公开,毕竟里面可能会涉及到项目隐私,这个我们也很能理解。
不过我们也有看到在海外有不少项目方,实际上非常愿意让这些审计机构把他们的报告透明的公布出来。
第三,有很长期持续紧密合作的第三方安全机构。因为前面也说了安全需要长期发展的,所以会有一个或者多个非常紧密的第三方专业安全机构去合作。如果有这样一个持续的关系在,出现了一些黑天鹅的被攻击事件,也能做到更快止损。
在我们看来被黑这个是必然的,没有一家敢说自己没被黑过,这是肯定的。当然有没有盗币就不一定了,确实有一些做得比较好,币没有被盗过。
但是被黑在互联网上这种公开网络上是确实是时时刻刻都有可能发生的,甚至包括内部人员做的。所以说这个既然是一个非常普遍的现象,那就坦然应对。
只要你没有丢失太多,或者说你本来就不是带有一个作恶的或者不透明的心理,实际上你坦然反而你能赢得社区更广泛的支持。
这也是我们说的这个第四点,需要核心成员,他们对安全的态度要坦然开放,有问题那就承认错误,而不是仅仅喊喊口号。
比如我们看到有很多项目方,他们的官网上写,我的安全非常强、非常棒。甚至是宙斯级的,感觉各种名词形容词都会出来,当然这些口号实际上是没什么意义的。我们知道他的问题可能会出现在哪,因为我们是一个很专业的安全团队,对于那些专业地下黑客来说,他们当然也能够知道,他们是可以把你这个口号定成未来你打脸的重要的依据。
第五,对安全工作充满敬畏和尊重。其实这个东西我觉得不仅是对安全,在这个行业内,无论做什么,整个产业链上上下下,中间环节每一个人都要充满敬畏,包括应有的尊重。
4
选择怎样的硬件钱包才安全?
最近我们也审了一些硬件钱包,做完这些硬件钱包的审计之后,我们做了一个总结,怎样的一个硬件钱包是安全且强大的。
1. 支持的主流币种最好是要足够的多;
这也不是绝对的,我们只是为了从省心的角度去考虑,因为一个人的手上的硬件钱包,原则上不会超过两种,因为你太多了也不一定是个好事,而且真安全也不是说绝对的安全,真安全硬件钱包其实也非常少。
2. 硬件层面使用的相关硬件模组都是国际顶级标准且生产及发货供应链也是顶级;
做硬件钱包的很多的团队,对硬件的各种芯片、模组和元件等等,绝对不是完全的顶级、专业。这时候就得依赖于很多本身就是国际顶级的标准,哪怕你不会做,你要用好嘛。包括你选择的供应链,你的生产,包括你发货,都是要选择这些优质顶级的。
3. 固件和硬件模组的耦合安全设计绝对得一流;
固件简单来说就是一个操作系统,绝对不是基于安卓改改,安卓的使命也不是为了去做硬件钱包的。固件跟硬件的模组的耦合,它们之间有个耦合的安全设计绝对得一流。
4. 硬件使用蓝牙、USB 等对外通信模组都是最新安全标准工艺;
5. 硬件钱包最好有屏幕,方便转账出去时用户肉眼确认目标地址的正确性;
6. 配套硬件钱包使用的联网电脑或手机环境保证纯洁单一;
没把握就别在其他环境下混用,比如像我是有把握的,那我就没关系,因为我对我的电脑的安全性我很了解。但没把握的,我们最好说是独立的一个虚拟机,独立的一个电脑,专门去做重要资产的一些操作。
7. 硬件钱包最好能支持多签的安全管理方式;
多签或者说多方计算,是一个很好的方式。当然多方还有很长的路要走,多方能够比较好解决不同的供应链,因为多签机制都不大一样,没一个通用的解决方案,当然多方它是可以把这个方案变成一个比较通用的解决方案,这是我们非常期待的。
8. 助记词记录和保管甚至共管上的设计最好能引入 SSSS 实践;
简单的说的话,我在拆分助记词的时候,比如说也可以被设计成 2-3 或者说 3-5。我在抄写上不会说一个人完全去记住所有的词。当然如果抄写完之后,我能确保我抄写出来的这几份,比如说我这个 2-3 我愿意拿两份,它就可以拼成一个完整的助记词单。
9. 不能忽视硬件钱包的物理安全;
比如说能不能比较好的防水、防火、防雷击等等,比如说我掉到地板上,可能就坏了,这个就很尴尬。并且其被破坏的时候,能够不被完美复原,可以防止我在发货过程中的供应链环节,半途中被一些人动手脚。
10. 不能忽略固件及配套软件的升级安全机制;
你现在可能没问题,也许你升级的一个固件,私钥生成万一是非常弱的随机,被人恶意植入的一个后门,那就很麻烦了。它跟传统互联网说要及时升级不大一样,我们的建议是基于一个前提,就是说当你够用的情况下,或者没有严重漏洞的情况下,别轻易的去升级。
11. 硬件钱包安全团队拥有足够实力剖析同行的不足,且披露得到业内广泛技术口碑;
搞安全的人实际上他的背面就是黑客,就像我们做安全的,如果你不掌握黑客的一些相关的底子的话,怎么能够把安全做好?就该有的脾气还是有的,互相怼一怼也正常。关键点就在于你得真有实力,你能把你的一些研究报告给公布出来,而不是说你老发一些 PR 文,说你很安全很安全。
12. 私钥生成、存储到使用,私钥的几乎绝对安全性是最基本要求;
13. 开源。
我们对开源的看法是这样的,不是说你一上来就开源,这是不现实的。
大家都知道这个行业,其实很多时候商业是一个比较狗血的事情,你开源了,有可能你被同行直接就抄了。所以开源是一个过程,不是意气用事,我说开源就开源,我也要搞商业,我也要赚钱,我也要活的。但开源是一个循序渐进的过程,我们非常期待的是当你成为业内顶级的时候,你可以大胆的开源,你永远在前面领跑,让他们来追着就 OK 了,这个感觉非常好。
以上就是我的分享,谢谢。
来源链接:weixin.qq.com
区块律动 BlockBeats 提醒,根据银保监会等五部门于 2018 年 8 月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件,请广大公众理性看待区块链,不要盲目相信天花乱坠的承诺,树立正确的货币观念和投资理念,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。
bZx IOTA 科普