苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

前言:

本文首先总结一次虚拟货币的“丢失”过程,然后陪读者一起重读一份“我同意”的用户协议。

一方面,作者会尽最大的努力保证“丢失事件”记录的忠实与客观,保证所有内容均有真凭实据支持。另一方面,在记录之外,作者将从技术和法律的双重角度剖析整个故事中各方的角色,引申出对数字货币资产安全问题之外,普遍存在的互联网产品或服务的使用者不注重用户协议与个人隐私安全的现象的讨论;并给予读者(不仅仅是虚拟货币的购买者)一些针对这些问题的忠诚的建议。

对于不熟悉比特币等虚拟资产基础概念的小伙伴,可先移步这篇文章:写给普通人:比特币的技术、意义与象征(第一部分)。直接开始阅读本文对理解全文核心亦没有影响。

第一部分:发现钱包无法使用

二月中旬,我在旧iPhone上装了一款钱包应用imToken,转了一些ETH和一些EOS进去。数额不大不小,我准备将手机放在家里作为存储数字资产的“硬件钱包”,不携带外出。大概三周之前,我突然发现imToken应用打不开了,提示应用需要验证后再使用。刚刚发现打不开的时候我是不慌的,因为之前安装的一些应用也有类似的提示,解决方法往往是到通用设置中进行验证授权即可重新使用应用了。在我多次点击“验证”而手机没有任何反应之后,我意识到可能出了一些问题。

imToken提供了导入钱包功能,需要使用助记词(助记词是私钥的另一种表现形式,有了助记词就能打开钱包,下文第四部分会详细介绍)将钱包导入其他版本的imToken应用。我在创建钱包时在纸上备份了助记词,但是在找了大概三十分钟之后,我意识到写着助记词的那张纸应该成了我某次找演算纸时的牺牲品。

就这样,尽管我清楚地记着imToken钱包本身的密码,却无法打开应用;又因为自己将纸质助记词丢失,无法将资产导入其他的钱包。我*成为了一位数字资产的价值投资者(或者可笑的冒失鬼——如果这款应用永远无法打开的话)。

我想搞清楚在我自己的责任之外,究竟发生了什么。

第二部分:与imToken官方的初次沟通

我首先想搞明白的,是为什么这款应用打不开了。我是于2018年2月中旬在imToken的官网下载的iPhone版本的应用,链接是https://token.im/download. 彼时imToken的应用被苹果从应用商店下架(目前即2018年4月14日已上架),通过网页下载是公众号指定的下载方式。下载链接获取方式如下,截屏于2018年4月14日。下文中部分图像与文字混合,所以有些文字通过加粉色背景色的方式突出表示。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

imtoken官方微信号下载方式截屏

我发邮件给imToken的官方支持邮箱 [email protected]了解情况,发出邮件如下:

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

imToken官方很快进行了回复,效率还是很高的。回复内容如下。在imToken的官方微信号中,也通报了这一情况:公告:关于 imToken iOS 体验版无法正常使用说明

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

我承认备份的助记词丢失并需求帮助,imToken提出了一个解决方案。即通过越狱的方式获得一些文件的访问权限以获得keystore文件或者助记词文件(这两个文件的意义将在后文详述)。出于隐私考虑,imToken发给我的附件便不再公开,简单来说是一份获得ios9系统文件系统权限的方法。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

在得到imToken的答复之后,我有些疑惑。如果越狱可以获得和私钥有关的文件,那岂不是说我的资产的安全性在实践上是由iOS系统的安全性保证的?尽管有这个疑惑,我还是继续尝试越狱,自己“偷”自己的信息。

在搜索尝试完我所能找到的所有的越狱手段之后,我确认11.2.6版本的iOS是没有公开可行的越狱手段的。我联系imToken的邮件如下:

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

以及再次确认

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

至此,通过越狱方式获得keystore的尝试已经失败。imToken表示目前的情况只可以等待新的越狱手段诞生。搜索了一众越狱大佬的最近言论之后,我认为这一目标遥遥无期。

彼时,我的关注点回到最初的问题,为什么一款应用突然就无法使用了呢?既然是证书的问题,那么是不是有可能让证书恢复使用呢?

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

imToken告知没有能力解封。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

*是要给理由的。彼时彼刻,imToken在我眼中俨然成为了无辜的弱者形象,于是我询问被封的具体原因。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

并提出可以提供帮助。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

相信熟悉苹果的政策的朋友看到此时已经忍俊不禁了。imToken的回复如下:

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

我觉得这样的讨论意义不是很大了,这个答案表示对方不愿意回答这个问题。我决定打苹果客服咨询更多的关于证书的细节。

第三部分:与苹果的沟通以及与imToken再次沟通

拨通了苹果的客服电话,电话那头的小哥获取了iPhone屏幕的分享权限(我之前不知道苹果是可以在你授权的情况下获得手机屏幕的分享权限的),指导着我点来点去。在他和他的manager多次尝试之后表示他们并不清楚具体发生了什么内容,但是可以确认苹果是会在开发者违反相应政策规定时revoke(吊销)企业应用的证书的。具体的吊销理由,他们是无权得知的,建议我再次联系开发者。

通过和苹果客服的对话,我大致了解了企业证书应用的工作模式——开发者开发供企业或组织内部员工使用的软件,绕过app store上架步骤,供小范围特定人群使用(准确定义在第四部分详细解读)。

于是,我再次联系了imToken询问证书相关的问题。这次,通过********联系到的客服提到可能是”蒲公英“的问题(简单来说,蒲公英是一家可以为开发者提供代签名服务的公司,下个部分会详细介绍)。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

我想看下imToken是如何看待下面这两个问题的

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

imToken的客服告诉我去百度。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

于是我”百度“了之后回复。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

在接下来的回复中,imToken客服表示错误在我,我部分认同。备份钱包马虎大意的责任在我。我很满意客服对第二个问题的答案,为什么很满意我将在第四部分从技术角度解释。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

苹果是苹果,橘子是橘子,不可以混淆。在我发出下面这封邮件至今两周的时间里,imToken再没有任何回复。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

当然我也不指望imToken愿意直面这一问题了。

第四部分:技术与商业角度的分析

首先回答上文遗留的几个问题。

第一个问题,为什么说我认同imToken客服说的获得keystore文件(不是助记词文件)资产也是安全的这一说法。这里就要理解以太坊平台提出的三种等价于私钥的信息。第一种即明文私钥,这个比较好理解(有兴趣的读者可以阅读本公众号之前的两篇文章)。第二种是助记词。助记词其实是明文私钥的另外一种表达形式,帮助使用者记忆复杂的明文私钥,在bip-0039中提出。bip 即bitcoin improvement proposals——提高比特币(系统)的提案。目前,可以看到除了英文之外,还支持西班牙语、日语、简体中文、繁体中文等等。拥有了助记词,就等价于拥有了私钥。但是keystore文件不同,可以理解为存储被加密的私钥的文件,用来加密私钥的“私钥”,便是用户设置的钱包密码。Keystore需要配合用户的钱包密码(也即交易确认密码)才可以获得钱包的完全控制权限。Keystore与用户的钱包密码一一对应,所以复杂的用户钱包密码是可靠Keystore的保证。如果你将你的Keystore文件和密码同时给了某人,那么就等价于将自己的私钥拱手让出了。

从效果上来讲,助记词=keystore+密码。也就是说,想要打开我的imToken钱包,可以使用助记词,或者同时使用keystore和密码。 

第二个问题:什么是企业证书。当你在餐厅点菜的时候,可能餐厅服务生的iPad上有一个专门的点菜软件。这样的软件你在app store上是搜索不到的,只有该餐厅的服务生可以使用这款软件或者只有在该餐厅内,顾客才可以使用这款点菜软件。这种服务于特定企业或组织成员、面向特殊场景的应用即为企业应用。和安卓系统可以从任意来源安装应用不同的是,苹果对企业应用的安装进行了严格的规定,在中文网页(https://support.apple.com/zh-cn/HT204460)的第一句话即是:本文适用于学校、企业或其他组织的系统管理员。同时,苹果在Apple Developer Term and Agreements中明确规定了最重要的一条:使用企业账号签名后的应用,只可以用于企业内部员工安装,不可以公开下载。

我不是imToken的员工,我相信绝大多数的imToken用户也不是它的员工,那么我们是怎么下载到的imToken的应用的呢,于是我再次打开下载链接,在网页的最下面赫然有一行小字:仅供团队内部使用。

因为有了这一行小字,你可以认为imToken没有错,是用户不老实下载了不该下载的应用。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

imToken下载页面的小字

在进入下一部分之前,简单介绍下imToken客服提到的蒲公英(http://www.pgyer.com)。蒲公英是一个网站,为开发者处理应用测试等服务。因为苹果对企业应用开发者的审核十分严格而且有299美元的年费,蒲公英为无力或不愿注册成为企业开发者的小团队提供代签名服务。但是在蒲公英的文档(https://www.pgyer.com/doc/view/inhouse_notice)中,也明确建议开发者做到“不要将应用的安装链接公开,做到只在企业内部安装使用”并声明:苹果企业账号能否正常安全的使用,和“蒲公英”并没有关系。

在很多用户眼里,下载应用使用是一件很自然的事情,没有任何风险。但是在imToken的企业证书被吊销的情况下,我无法再继续使用应用,那么这笔损失要算在谁头上呢?用户按照官方公众号的指导来到了下载页面,在“忽视”内部使用的说明的情况下下载了应用,imToken的这种行为属不属于误导用户呢?

属不属于误导用户的行为,需要结合一款产品的用户协议来判断。在理解了故事的大概之后,在一位有法学背景的朋友的帮助下,我深入阅读了imToken的用户协议和apple的开发者协议,希望理清楚更多的脉络。

第五部分:用户协议与法律规定剖析

如下截图是2018年4月初访问imToken用户协议截图获得,我挑选了几个具有重要意义的条款和读者一起解读。

产品可用性

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

新版本发行之后,旧版本不保证可用。imToken要求用户“随时”核对并下载最新版本。这里的“随时”对用户是十分强的要求,如果用户突然发现无法继续使用旧版钱包应用,那么根据这一条款imToken可以被视为无责,因为用户没有“随时”更新至新版本应用。

产品安全性

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

这里,imToken指出用户应当避免不安全的网络下使用应用,越狱和root行为,还是十分负责的。

协议本身的更新

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

在用户协议更新之后,imToken不另行通知。一般情况下,用户协议更新往往会以邮件的方式告知用户(比如不久前脸书用户隐私泄漏事件爆出后,不少软件和网站密集更新了用户协议,通知了用户)。在这里,imToken摆脱了另行通知的义务,将“随时”检查用户协议的义务留给了用户。

赔偿额度

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

这张截图里除了不提供保证的诸条,imToken对于“任何”情况下的赔偿上限做了规定。这里的上限是人民币500元或者0.1ether(按照2018年4月13日价格,约为200元人民币)

服务关系变更与终止

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

我不是很理解这一点与旧版产品不保证可用性是如何自洽的。

用户个人信息收集这一点imToken做得很好,没有收集各种各样的个人信息。

看完了imToken的用户协议,我们来看下苹果开发者协议对证书吊销的说明。下面这一段话是我一位有法律背景的朋友的判断:

根据2017年9月19日版的《苹果开发者企业项目许可协议》(下称《苹果许可协议》),使用企业证书的APP仅限“内部使用”。如果开发者想要将APP提供给一般用户使用,需要满足严格的条件(参见《苹果许可协议》第2.1.f项)(1)设备条件,应当在你或者你的合作方所有或者控制的设备上使用;如果设备是由你的雇员或者合作方的相关人员所有或控制的,则你或者你的合作方应当有能力在该设备上删除或者禁用这个APP。(2)场所条件,应当在你或者你的合作方的场地使用;如果在其他场所,则这种使用应当在你的雇员或者合作方的相关人员直接的监督控制之下(比如顾客在销售人员的监督控制之下使用)。也就是说,在面向所有用户的公共网页上开放APP的下载,然后写上一句“仅供团队内部使用”,并不构成《苹果许可协议》中所要求的“内部使用”。一旦开发者违反苹果“内部使用”的规定,苹果有权随时撤销企业证书(参见《苹果许可协议》第5.2款)。

所以,imToken的企业版应用证书吊销是完全合规的。而imToken有意或者无意,没有将这一风险告知用户。

第六部分:作为“上帝”的用户

至此,整个事件的全貌已经清楚了,可以见下图。

 

苹果版imToken钱包的用户注意了-从imToken丢失数字货币后维权谈起

 

具体而言,我们可以总结如下:

  • 如果我记得助记词,那么问题迎刃而解,但不幸的是助记词因为我的疏忽而丢失了;
  • keystore储存在我的iPhone中,如果旧版的imToken应用仍然可以正常使用,那么我可以用密码配合keystore打开钱包,但不幸的是旧版imToken应用无法打开,因为它的企业证书被苹果吊销了;
  • 如果可以获得iPhone文件系统完整的访问权限,那么我可以获取储存在iPhone中的keystore文件,然后配合密码,将旧版imToken应用中的钱包转移到新版imToken应用中继续使用,但不幸(也是幸运的)是,为了保护手机的安全和用户隐私,我无法越狱获取keystore文件,而且因为iOS版本的更新,以往的越狱手段也不灵了。
  • 如果应用记录的是储存在中心化的系统上的传统资产,那么我可以拿着自己的有效身份证件去挂失,但不幸的是,imToken钱包是建立在去中心化的区块链上,无法进行挂失。
    所以你看,多个的“巧合”凑在一起,才导致了目前的局面:一个粗心大意的用户+一个被撤销了证书的应用+一个坚固的封闭手机系统+一个去中心化的区块链=数字资产被冻结了。

在整个过程中,我是有责任的——我犯的错误有两点,第一点是丢失了助记词(没有外泄);第二点是没有完全理解使用的产品的用户协议便使用一产品。鉴于此,我最近备份了自己各个平台的密码并注销了大量的社交网络帐户,包括脸书、微博、知乎等等。

苹果作为行业巨头,对自己的生态圈进行了严格的规定。对于这样的做法,我是支持的。从用户的角度来看,我宁愿拿不到keystore文件,也不愿意手机不安全,让别有用心的人可以拿到包含自己隐私的文件。对于苹果在这方面的批评,可以参看这篇文章苹果,你对区块链应用的审查边界在哪?

imToken是有责任的,它的责任主要在于风险告知。在明知(这一点存疑)面向普通用户分发企业应用的风险的情况下公开内部软件下载链接。不过从另一个角度我也理解:企业获取用户往往不会顾及太多规则上的约束,因为“中国人可以更加开放,对隐私问题没有那么敏感”,自然也可以对安全和权益更不敏感。

临近全文末尾再次声明,我无意否认自己的错误,无意向imToken索赔。我可以给读者提供的忠实建议有: