|
千万别惹技术宅
--关于bwallet与trezor硬件钱包的若干问题研究
前言
之前写了一个分上下两篇的文章(上、下),里面提到了一代到三代不同的虚拟币硬件钱包,在做二代硬件钱包评论的时候提出来一些质疑,结果被bwallet硬件钱包厂家说我恶意诽谤,说他们是bootloader开源,说他们的方案没有问题,是安全的。因此我诚惶诚恐,生怕哪天收到律师信让我公开道歉然后再赔个百八十万的,于是乎我为了避免吃官司,而把之前搜集到的相关内容发布出来。
Bwallet如下图所示:
从bwallet到trezor
其实关于朵朵钱包里面二代币的评论确实是基于bwallet,我之前查了很多的资料,否则也不会随口乱说。
首先在整个巴比特我能找到的bwallet所有相关资料当中,都没有提到trezor这个关键字。然而在https://github.com/BWallet/bwallet-mcu
我们看到了一句话:本项目基于https://github.com/trezor/trezor-mcu/
实际上,在源码里面,trezor的字样随处可见。
Trezor是何方神圣,为什么bwallet的源码里面都是这个东东?
Trezor是第一个批量生产的比特币硬件钱包,预计下月到达客户手里。硬件钱包不是普通的比特币客户端钱包,而是允许用户离线保存他们的比特币,但仍能够方便的发送比特币。
Trezor钱包通过一个ARM微控制器、128KB的RAM和一个硬件随机数发生器来签署交易,用户可通过0.96英寸的OLED单色显示屏来与设备进行交互,有两个按键,用于取消或同意交易。
比特币协议使用私钥签署交易,这确保只有地址的真正主人能够使用资金。Trezor使用一系列12个随机字符生成的私钥,允许用户在钱包被丢失或被盗后,用这12个随机字符重新生成钱包。钱包使用的是开源软件,用户可以轻松的审核代码,以确保程序绝对安全可靠。
Ps:摘自比特币硬件钱包Trezor预计十月发货
Trezor钱包如下图所示:
从trezor Software Licensing 到bwallet (trezor clone)
那么我们的问题来了,既然是基于trezor源码的话,即便是基于源码开发原则,也应该在宣传材料里面说明,为什么bwallet只字不提,提一嘴也不会掉块肉,至于吗。
于是我上trezor官网查看了一下,在news里面找到了这篇文章:
http://satoshilabs.com/news/2015-01-30-trezor-software-license/
题目为:TREZOR Team on Software Licensing
内容大意就是,我们将trezor的firmware许可由完全的源码开放改为代码共享(Ms-RSL)。
Ps:微软目前有三种共享源码协议,ms-rsl的全名为Microsoft Reference Source License,也就是微软源码参考协议,这个协议有很大的限制,简单说就是只能看,不能改,更不能改完了换个名字说是自己,然后就用,否则就是侵权。而之前的completely open-source则非常的宽松,简单说随便改,随便用。
那为什么要将如此宽松的协议改为严格的协议呢?
下面开发者说明了问题:
当我们开始工作的时候,trezor选择的是开放式的开发平台,因为我们知道,一个安全设备的开发必须是透明的,而且我们也希望人们能将trezor的功能扩展。但是我们从未想到会发生这种事情,就是对开放源码没有任何附加价值的情况下进行肆意的拷贝。
当这种事情发生的时候,我们的反应就是换证,同时关于设备的安全性也不会受到影响。这个觉得可能有些冲动,但这是一个正式的声明,Our ideals were being crushed.(这句话就不翻译了,否则体会不到开发者的那种愤怒。)
为什么开发者会如此愤怒,将本来完全开源的软件修改为限制性共享?
这个是bitcoinwiki上面关于Hardware wallet的定义,其中在1.5项上面写的是:BWALLET TREZOR clone。
https://en.bitcoin.it/wiki/Hardware_wallet#BWALLET_TREZOR_clone
我截图给大家看:
大意就是,bwallet是trezor的一个clone,是一个中国公司做的。这个设备操作起来非常的像trezor。实际上,这个设备是可以在trezor网站上面使用的。(这句话是一个重点)。
请注意这个说明不是哪个论坛的小道消息,而是在wiki上面列出来的,大家可以看看这个词条上面的其他硬件钱包说明,做的很细很规范。
来自于trezor的忠告
我们将trezor的声明和这个wiki联系起来,应该能猜出来什么。如果还是不确定的话。我们可以看reddit.com上面的一篇文章,是由slush0写的,搜他的文章,可以发现他应该是trezor的一个开发者。这篇文章由作者在2015年1月28日发布。也就是trezor关于将共享协议升级之前的几天。链接如下:
http://www.reddit.com/r/Bitcoin/comments/2tyier/bwallet_review_by_trezor_developer/
我翻译的水平一般,大家注意几个技术要点就可以,不要基于一词一字的错误。
Hi Redditors,
也许你注意到中国版的trezor钱包-- BWallet。我应该是感到受宠若惊的,因为模仿就是最好的赞美。然而,关于这个产品,我还是觉得有句话要对Reddit社区说一下。
首先,我很惊讶,实际上比trezor更昂贵的是bwallet。我们现有的客户可以证实trezor成本为19美元,其余119美元为研究和开发成本,软件更新,客户支持,许多周边的开源标准等的。而bwallet可耻的进行了精确的复制,但它是更昂贵的,虽然他们没有花一美元以上(编者理解的意思就是trezor的成本是19+119,而bwallet则是在此基础上还需要花费一个拷贝的钱)。如果任何人谁怀疑trezor定价,我们会很高兴地将trezor为19美元+运费进行卖掉,并锁定闪存不允许上传我们的固件,因为19美元只是硬件价格。
我看了很多评论人的风格“哇,bwallet卖便宜的硬件,所以我可以把trezor的固件烧到bwallet里面,那么他就跟trezor一样安全了。
但因为一些原因,你不会那么做:
他们在bootloader里面改变了keys,因此用一个不是bwallet开发的固件会在启动的过程中显示非官方。很好,看样子你还可以上传trezor的固件,但自那时以来,你永远不知道如果有人取代了“官方”trezor固件的东西,因为非bwallet官方的固件和攻击者的固件触发启动同样的警告。而且trezor官方的安全性是通过整体保证的,而不是某一部分来保证。
同时,由于某种原因,他们使用不同的布线按钮。这意味着你可以加载trezor固件装置,但它不会工作。你根本无法点击“确定”或“取消”。没什么用,对吗?所以你只能用他们的固件。
这将会导致在bwallet上面出现另一个问题:
中本聪实验室为了确保你的隐私安全而投入了大量的精力进行工程设计。这意味着,每一个trezor从设计角度跟其余的trezor都完全一样,我们无法追踪你的身份(即使是在eshop上面)和你的trezor账户,交易历史等等。
而bwallet有趣的是,他们在固件源代码相对应trezor没有多大的变化,除了添加跟踪supercookie的API。这种特殊的线程应该引起你的注意:
https://github.com/BWallet/bwallet-mcu/blob/2427d396c29722e1ddd70791aaeb12b55ae5d609/firmware/fsm.c#L148.
Ps:由于这篇文章是在几个月前写的,所以这里现在是否修改了不为所知,不过可以确定的是,当时作者写这篇文章的时候,这段代码肯定存在,不会后面上百条的回复早骂死他了。
通过对bwallet的处理器信息报告,就意味着他们跟踪你,并知道你是谁(因为他们知道你的名字还有地址),你有多少钱(因为关于这个id的报告将发往mybwallet.com)。
本来我觉得上述的问题只是一个工程的错误。现在我倾向于认为它是一个目的,因为接线的不同,使得你很难去替换他们的固件,所以他们可以一直的跟踪你。几年前,骗子卖大钱的电子邮件。看来,社会在进步,很快黑市场将会列出富有bitcoiners包括他们的真实姓名和地址的住宅为几块钱。
如果这些争论的地方没有吓到你,那还有一些地方值得评论。他们事实上除了能编译外,对整个固件并不了解。一个证据就是他们在bootloader里面有一个致命的错误,但没有发现。尽管他们的固件是在我们的稳定版本固件发布后发布的,但我们可以在一天之内释放出来另一个重要版本。这种基于粘贴和复制的工程是无法接受的,除非你在用你的钱做游戏。或者你打算让一个一边从YouTube视频学习做手术的医生给你进行治疗。
最后我想说的是,每个人都完全可以我们的开源代码来自己做一个,但同时我们也在努力研究这个项目。我们已经建立了一个安全可信的硬件钱包解决方案,同时我们不想让trezor的名声毁了,被一个只会对项目进行粘贴复制,而且还具有潜在威胁的一些人毁了。因为对于我们来说,trezor更像是一个服务而不是一串冰冷的代码。
补充说明:
在https://github.com/BWallet/bwallet-mcu/blob/master/firmware/bwallet.c#L41里面
他们还特意禁用堆栈器,而这是常见的安全措施,防止尚未发现缓冲区溢出。
Ps:如果有异议,可以到这个帖子里面去回复,我想作者会认真解答的。
事实的真相
最后再用两篇文章来证明这些内容不是一家之词,一篇是发布在coinreport.net
https://coinreport.net/trezor-labs-switches-software-license-amid-controversy/
我只节选里面的第四段话
由于trezor开源的特征,这也意味着竞争对手可以进行精确的duplicates(不是复制的意思,而是几乎完全一样的复制品的意思),而使其产生彻底的失败。具体来说,中国的公司叫做bwallet开始在不到四分之一的价格制造trezor克隆体(虽然可能增加一些间谍软件)。trezor开发商已经回应?他们转而使用更严格的许可证,并追溯自己的Git仓库。
这篇新闻可以验证了之前的内容,也就是bwallet对trezor进行了未经声明的clone,并且进行价格倾销,而且在trezor对代码验证后,发现里面相对于trezor的源代码增加了一些奇怪的内容。
再就是一篇技术性的文章:
是stellaw.info网站进行的一个测试,是在2015年1月31日发布的blog
http://www.stellaw.info/blog/2015/1/31/running-trezor-firmware-on-bwallet
上面图文并茂的讲述了将trezor的firmware在bwallet上面运行的评测。也从另一个角度说明bwallet从构架和代码上跟trezor非常相似。
好了,到这里,整个问题都明朗了。
- Bwallet不敢在宣传文章声明和trezor的关系,一种可能是害怕大家通过关键字查到相关的负面文章,尤其是上面那篇。另一种可能就是宣传者和编程人员之间是独立的,找人编程,再找人推广,互不联系。编程者没说这玩意是从trezor克隆出来的,宣传者自然也懒得提。
- trezor开源的本意是为了让更多人参与到这个项目中来,结果有人直接克隆了bwallet出来卖,这种丝毫不尊重开发者的行为激怒了trezor的开发者,因此做了回击,并对bwallet里面的代码提出了意见。而通过trezor的描述,bootloader里面可能会存在的致命的bug,而这种bug也无法修改(因为bwallet的bootloader是无法修改的)。
- 外国的网站和媒体对这种行为持反对态度,从wiki和上面的那篇新闻的描述就可以看到。
- Bwallet的开发厂家没有什么能力,或者是他们雇的开发人员是临时工。因为在上次说我诽谤bwallet后,我还专门研究了一下bwallet(其实是trezor的代码),感觉除了bwallet修改的那些地方有点雷人,trezor本身的代码确实很不错。后来看巴比特上面又发了一篇文章描述bwallet的,我还以为找到程序员写了一篇技术文章回击我,没想到还是之前的那点玩意重新改了改发出来的。我在朵朵钱包文章里面其实就是想给bwallet提个醒,你的钱包有问题,注意点。却说我诽谤。我这个人偏偏很胆小,所以只好把之前查找的资料翻译一下并发出来。我数了一下,大概有四个网站,加一个厂家都在诽谤bwallet,我也觉得挺生气的,国货当自强,岂能允许老外去黑,因此都把来源出处都贴了出来。Bwallet可以给他们发律师函。
后 记
去年8月底的冰桶挑战热潮下,有“中国首善”之称的陈光标在其个人微博上发布了两段视频,自称其在0℃以下的冰水内浸泡了至少30分钟。“若有人能超越我,我捐款100万。”
对此,湖南性学界的泰斗文德元第一时间警告网友:“0℃左右的冰水中浸泡5分钟将致不育。”然而,这一言论随后被很多网友视为危言耸听之语。在天涯、猫扑、凯迪等论坛上,陈光标的粉丝甚至联合发布了声讨文德元的声明。
为了对自己的言论负责,阻止公众盲目模仿陈光标这一有损生殖健康的冒险行为,湖南性保健研究所所长、附属医院院长文德元以一场动物冰桶浸泡实验为自己正名——实验用的3只小白鼠在0℃的冰水中都没能坚持过5分钟,均出现了精囊冻结的现象。
在文德元的连番炮轰、乃至实验证伪之下,近日,陈光标终于通过媒体首度承认自己冰桶挑战造假。
其实每一个技术宅都是一样的,文德元也好,还是我也好,从来没有想过去黑那个商家或者开发者,现在币圈这么难混,谁做点东西都不容易,我只是在研究和查找资料的过程中发现有些硬件设备有未经确定不安全的因素,说句实话,然后给大家提个醒。
可既然反应这么强烈,我只好把自己搜集的资料分析并公布出来。并替文德元告诉老陈一声:千万别惹技术宅,尤其是懂点英文的技术宅。
作者:快乐的蘑菇
QQ59974015
新浪微博:@duoduoxitong
BTC:36kRTKeA4C6Gh81AambYXt9peXGQjZfLtM
PPC:PJoURPM4Y6yvpTcseXtwL3aaGmvHhcwJzb |