رجل ثري، تم سرقة 1155 بيتكوين منه بواسطة هاكر. 68000000 دولار بسبب خطأ صغير، قد لا يمكن استردادها مرة أخرى. قام الهاكر بمراقبة محفظة الضحية، واكتشف أنه يقوم غالبًا بتحويل مبالغ كبيرة إلى عنوان معين. لذا أنشأ الهاكر عنوان محفظة مشابه للرقم الأول، وحول للضحية مبلغًا صغيرًا. الضحية أخطأ وظن أن محفظة الهاكر هي محفظته الأخرى، وقام بتحويل الأموال إلى عنوان الهاكر. وتم تحويل 68000000 دولار مرة واحدة، وهكذا ضاعت هذه الأموال.


هذا يخبرنا أنه في عالم العملات الرقمية، كل شخص هو المسؤول الأول عن أمان ممتلكاته. في عالم الغابة المظلمة للبلوك تشين، تذكر القاعدتين الأمنيتين التاليتين:
零信任. ببساطة يعني الحفاظ على الشك، والأهم: الحفاظ على الشك دائمًا.
持续验证。你要相信,你就必须有能力去验证你怀疑的点,并把这种能力养成习惯。
新手必学(دليل نجاة الغابة السوداء الخاصة بالبلوكشين)
一张图

在仔细看后文之前,你可以先粗略过下这张图。这从流程上包括三大部分:创建钱包、备份钱包及使用钱包。
我们顺着这三大流程,将涉及到的每个关键点展开分析。
创建钱包
钱包最最最核心的就是那个 المفتاح الخاص(أو عبارة الاسترداد/المذكرة التذكارية)。
私钥即身份。如果私钥丢了或被盗了,那么这个身份也就不再属于你了。钱包应用其实很多,知名的也不少。我并不打算也不可能一一介绍。不过该手册确实会提到一些具体的钱包,请注意:能被提到的必然是我有基本信任的,但我不担保你在使用过程中可能出现的安全问题,或目标钱包可能出现并不在我预期内的安全风险(后文我不会再不断去废话这些)。你在引子里提到的两大安全法则希望你牢记心中。
从应用分类来说,钱包主要包括几种:محافظ الكمبيوتر (PC)، ومحافظ إضافات المتصفح (扩展钱包)、محافظ الهاتف المحمول (移动端钱包)、محافظ الأجهزة (硬件钱包) ومحافظ الويب (网页钱包) 等。从是否联网来说,主要可以分为 محافظ باردة (冷钱包) ومحافظ ساخنة (热钱包)。当我们要进入这个 العالم,首先要思考你所拥有的钱包用途是什么;用途决定了你会用哪个钱包,同时用途也决定了你会如何对待这个钱包。
无论你选择什么钱包,但至少有一点可以肯定的:在这个世界玩久了后,你不可能只有一个钱包。
于是这里我们又需要记住一个安全原则:做好隔离,也就是鸡蛋不要放在一个篮子里。一般来说使用越频繁的钱包,自然也加大了出问题的风险。时刻牢记:面对一个新事物时,先准备个单独的钱包,用单独的小资金去玩一段时间。除非你已经如我这般,经历无数,对许多事物都了然于心。但,常在河边走,哪有不湿鞋呢?
Download
单这么简单的一点,其实也不简单,原因是:
许多人(真是许多人)找不到正确的官网、正确的应用市场,于是安装了假钱包。
许多许多人对下载了的应用不知道如何确认是否被篡改过。
于是,出师未捷身先死。还没来得及进入这个世界,就已经钱包空空了。
针对上面的第 1 点,找到正确的官网是有技巧的,比如:
Google(注意搜索结果里的广告条目,非常不靠谱)
行业知名收录,如 CoinMarketCap
多问一些比较信任的人
好,上面这几点得到的信息可以全部结合起来参考,互相佐证,最终真相只有一个:)恭喜你,找到了正确的官网。
接着,你要下载安装应用了。如果是 PC 钱包,根据官网提供的下载链接,下载后需要自己去安装。但在安装之前,建议做下是否篡改的校验工作。虽然这种做法并无法防止源头就被完全篡改的情况(比如官方自己内部作恶、内部被黑、官网被入侵替换了相关信息等等),但可以防止诸如:源头被部分篡改、被中间人劫持篡改等这些情况。
是否篡改的校验,实际上就是文件一致性校验。常见的方式有两种:
一种是校验哈希,比如 MD5、SHA256 等。MD5 在绝大多数情况下够用,但存在被哈希碰撞的极小风险。所以业内一般选择 SHA256:够用且够安全。
另一种是校验 GPG 签名。这其实也很流行。强烈建议掌握 GPG 工具、命令、方法。虽然对于新人来说有那么些费力,但上手后,相信我,你会很快乐的。
话虽至此,其实业内这样做的项目方并不多,所以一旦遇到,真是难能可贵,弥足珍惜。比如一款比特币钱包 Sparrow Wallet,下载页面的“Verifying the Release”简直良心了。提到的两种方式都有清晰指南,可以直接参考学习。
这个页面提到的 GPG 工具有两个:
GPG Suite,运行于 macOS。
Gpg4win,运行于 Windows。
如果你细心观察,你会发现这两个 GPG 工具的下载相关页面其实都有给出两种方法的一致性校验说明,但不好意思的是,并没手把手教你如何校验。估计吧,都是认为你会是聪明人,该补上的知识你已经补上了:)
如果是浏览器扩展钱包,比如这世界家喻户晓的 MetaMask,你唯一有机会注意的就是目标扩展下载页面里的用户数多不多、评分情况如何。比如 MetaMask 在 Chrome 网上应用店里,用户数可是超过一千万的,同时有两千多用户评分。虽然最终评分并不高。有人要说这不可以刷出来吗?这位朋友,是这样的:刷,我相信。不过刷的量如此之巨大,当各方是傻子呢。
如果是移动端钱包,判断方式类似扩展钱包。不过需要注意的是,iPhone 的 App Store 是分区的。所以如果你用 App Store 国区账号下载到了钱包,建议只有一个:别用!换成如美区的 App Store 账号下载吧。另外,通过正确的官网也能引导到正确的下载位置(比如全球知名的 Trust Wallet 等)。官网安全一定要做好。官网都被黑了,那这安全责任就真大了。
如果是硬件钱包,简单来说,可以从官网源头的引导下购买,不要直接去在线商城。到手后也需要留意是否存在被动过手脚的情况。当然,有些针对硬件包装的动手脚是很高明的,不一定都能看得出。此时建议:无论如何,使用时,先连续至少三次从头开始的创建,记录下生成的助记词、相关钱包地址;只要不会重复就行。
如果是网页钱包,非常不建议使用这种在线钱包,除非你不得已。那就先识别好是官方的后,速战速决吧,千万别有任何感情依赖。
Mnemonic Phrase
一般来说,我们创建了钱包后,直接打交道的关键信息是 عبارة الاسترداد/助记词(而不是 المفتاح الخاص)。毕竟助记词是方便人类记忆的。助记词是有标准约定的(如 BIP39),这就对助记词提了要求,比如一般 12 个英文单词,也可以是其他数量(3 的倍数),不过不会超过 24 个单词。要不然太复杂也就不助记了。数量少于 12 的话,安全性也不靠谱。12、15、18、21、24 都好说。不过从业内习惯来说,一般流行的是 12 位,安全性足够。有些安全严谨到变态的,比如 Ledger 这类硬件钱包,24 位标配走起。还有除了英文单词,也可以是其他的,比如中文、日文、韩文等等。但也不是什么单词都可以,有一个固定的 2048 个单词列表。
创建钱包时,助记词的出现是非常敏感的。请留意你身边没有人、摄像头等一切可以导致偷窥发生的情况。同时留意助记词是否足够随机出现。正常来说,这些知名钱包生成的助记词随机数是绝对足够的。这不就是防万一?你真的很难知道,拿到手的钱包到底有没有万一的猫腻。你也不要嫌麻烦,这些安全小习惯形成后,相信我,你真的会很快乐的。最后,有的场景下,你甚至可以考虑断网来创建钱包,尤其是你准备把该钱包当成冷钱包使用时,断网简直就是暴力美学。
Keyless،顾名思义是无私钥的意思。这里把 Keyless 分为两大场景(注意:这里的区分不代表业内公认区分方式,只能说是方便我讲解):
Custodial,即 طريقة الإيداع/الاستيداع. 比如 مركزية البورصات、محافظ حيث用户只需注册账号,并不拥有私钥,安全完全依托于这些中心化平台。
Non-Custodial,即 غير إيداع. 用户唯一掌握类似私钥的权力,但却不是直接的私钥(أو عبارة الاسترداد)。比如依托知名 Cloud 平台做托管、认证授权,此时知名 Cloud 平台就成为木桶的短板那一块。还有利用安全多方计算(MPC)来确保不存在单点风险,同时也结合知名 Cloud,把用户体验做到最好。
对我来说,我使用了 Keyless 的几种方式。实力雄厚且口碑良好的中心化平台体验好。只要不是因为自身原因导致的被盗币(比如账号相关权限被盗),这些平台也会兜底赔付。至于以 MPC 为主的 Keyless 方案,我觉得很有前景且应该尽快普及。我用过不错的,如(ZenGo、Fireblocks、Safeheron)。优势很明显,我简单提几点:
MPC 算法工程实践在这些知名区块链上,越来越成熟,只需针对私钥开展即可。
一套思路可以解决不同区块链的多签方案差异巨大的问题,使其在用户感知上通用——这就是我们常说的:تعدد توقيع عام (通用多签)。
可以确保真实的私钥从不出现,通过多方计算解决单点风险。
结合知名 Cloud(或有人提的 Web2)让 MPC 不仅安全,而且体验更顺滑。
优点明显,但缺点也是有的,我也简单提几点:
满足业内公认标准且开源的。就这方面的成熟度来说还远远不够,各位仍需努力。
不少人说基本只玩以太坊系列(或者说基于 EVM 的区块链),那么 Gnosis Safe 这种智能合约方式的多签方案也就够了。
无论哪种方式,只要是你觉得安全可控的、用起来舒服的,那么都是好方式。仁者见仁智者见智。
好,创建钱包的相关安全注意点就先介绍这些,有一些通用性的安全问题会统一在之后介绍,先不着急:)
备份钱包
许多挺厉害的人都在这踩坑了,其中包括我。常在河边走,湿鞋我也认。好在这不是个大资产钱包,并且最终我在慢雾的兄弟帮我破解解决了。这也是厉害的地方:我没备份好,我踩坑了,但我却有厉害的资源能帮我解决这个坑。不过我也会冒冷汗,人之常情。冒冷汗的感觉你肯定也不喜欢,那就集中精力学习下如何安全地备份钱包吧。
类型:عبارة الاسترداد / المفتاح الخاص
我们所说的备份钱包,其实归根结底是备份助记词(أو المفتاح الخاص)。为了方便介绍,后文一般情况下只提助记词。我们拿到的助记词其实可以主要分为几种类型:
明文
带密码
多签
Shamir's Secret Sharing,简称 SSS
这几种类型,我简单展开说说。
明文,很好理解,那 12 个英文单词你拿到了,里面的资产就是你的了。其实这个时候可以考虑做些特别的“乱序规律”,甚至把某个单词替换为其他的单词。这样做对于坏人来说头疼了。但如果这个“规律”你自己忘记了,就轮到你头疼了。千万不要觉得你头疼是不可能的。相信我:一年、两年、五年后,记忆这东西真的会错乱。几年前,我玩 Ledger 硬件钱包时,就踩坑了。助记词是 24 个单词,我抄写备份时打乱了顺序。几年后我忘记了排序规律,且不记得自己是不是替换了其中的单词。正如前面说的,我的问题后来解决了,专门的破解程序碰撞出了正确的助记词顺序且纠正了其中的个把单词。
带密码。根据标准,助记词是可以带密码的。助记词还是那样的助记词,只是带上密码后会得到不一样的种子。这个种子就是之后拿来派生出一系列私钥、公钥及对应地址。此时,你不仅要备份好助记词,这个密码也千万别忘记了。顺便说下:带密码的形式,除了配套助记词,私钥也有相关标准(如 BIP38),还有如以太坊系列常见的 Keystore 文件。
多签。可以理解为目标资金需要多个人签名授权才可以使用。多签很灵活,可以设置审批策略。比如 3 个人都有钥匙(助记词或私钥),需要满足至少 2 人的签名审批,目标资金才可以使用。每个区块链都会有自己的多签解决方案。比特币系列的很好理解,知名的比特币钱包都原生支持多签。不过以太坊系列的,主要通过智能合约来实现多签,例如 Gnosis Safe。另外,除了这些比较普遍的多签方案,还有一类正在流行的:MPC(Secure Multi-Party Computation) ,即安全多方计算,和传统多签体验接近,但原理却很不一样。通过 MPC,可以实现通用多签,并不需要不同链不同的多签方式。
SSS,Shamir 秘密共享方案,作用就是将种子分割为多个分片(常见的每个分片有 20 个单词)。恢复钱包时,需要使用指定数量的分片才能恢复。
用了多签、SSS 这类方案,其实会放心很多,避免了单点风险,但管理上也相对复杂了,而且这很多时候会涉及到多个人。便捷与安全是永恒的矛盾,具体看自己。但在法则、原则上千万别偷懒。
Encryption
加密是个非常非常大的概念,无论对称、非对称还是其他什么高级的,只要加密了后,过多年以后,你或者你的灾备人都可以很好解开,而其他人解不开的加密,就是好加密。
根据“零信任”这个安全法则,当我们在备份钱包时,每个环节都要假设可能会被入侵,哪怕是物理环境,如保险箱。别忘了,这个世界除了你自己,并没有其他人是完全可信的。其实有的时候自己也不可信,比如记忆可能会淡忘、错乱等。但我不会把这个世界假设得如此可怕,否则最终还是会把事情搞砸了。
备份时一定要特别考虑灾备(التعافي من الكوارث)。灾备主要就是要避免单点风险。万一你没了,万一你备份目标所在的环境没了,该怎么办?所以重要的东西,一定要有灾备人;重要的东西,一定有多处备份。
那么,灾备人的选择我就不废话了,看你信任谁吧。我重点提提多处备份。先看看备份位置的几个基本形态:
Cloud
Paper
Device
Brain
Cloud,许多人谈云备份色变,似乎黑客真的就上天入地,来无影去无踪的。其实攻防对抗永远都是成本对抗,看谁投入的大,无论是人才还是钱。对于我来说,我会比较信任 Google、Apple、微软等提供的相关云端服务,因为我知道他们的安全团队实力如何,以及安全投入有多么巨大。但除了对抗外部黑客入侵,我还很关心内部安全风控的能力以及隐私数据保护相关的约束力。我比较信任的几个,都算是把这些我在意的安全风险规避得不错的。但凡事绝无绝对。如果我选择这些云来备份非常重要的数据(如钱包),我一定还会给钱包再做至少一次加密的。
好,你掌握了 GPG:) 现在你已经在离线安全环境下用 GPG 加密了你的钱包(助记词或私钥)相关内容。你可以把加密后的文件直接扔到这些云服务里去了,保存好,就行。但这里我需要提醒下:你 GPG 的私钥别丢了、私钥密码别忘记了...
到这,安全带来的麻烦似乎还没适应。GPG 好不容易入门了,你还得备份好 GPG 的私钥及私钥密码。其实真到这步了,你也熟悉了,再备份这点东西其实也就不麻烦了。这点我不展开,留给实践出真知的你。
如果你想偷懒,还有一种方案是可以考虑的,只是安全性上会打点折扣。我不好衡量具体折扣多少,但有时候有的场景下我也会偷懒,于是我会考虑用知名的工具来做辅助。这个工具就是 1Password。1Password 新版本已经支持直接保存钱包相关内容,如助记词、密码、钱包地址等,这方便用户。其实其他同类型工具(如 Bitwarden)也可以,只是使用起来不像这样方便。
Paper,许多硬件钱包都会附带几张质量上乘的纸卡片。你可以将助记词(明文、SSS 等形式的)抄写在上面。除了纸质的,还有钢板的(抗火抗水抗腐蚀,当然我没验证)。助记词抄写完成后,会做一次验证,没问题后,放进你觉得安全的位置,比如保险箱。其实我个人挺喜欢 Paper 的。只要 Paper 所处环境不错,它的寿命远大于电子设备。
Device,各种设备吧。电子设备是常用的一种,电脑、iPad、iPhone、الهارد ديسك المحمول、فلاشة USB 等都可以拿来做备份,看个人喜好。然后是设备间的安全传输。让我的安全感更强的是:隔空投送(AirDrop)、USB 等这类点对点且不容易出现中间人劫持情况的方式。只是我对电子设备一直不太放心的一点是多年后可能会坏,所以我会保持每年至少一次的检查习惯。有一些重复做法(如加密)参考 Cloud 小点里的说法就行。
Brain,حفظ الذاكرة(حفظ في الدماغ)很爽很刺激。其实每个人都有自己的“قصر الذاكرة” الخاصة،这玩意不玄乎,可以训练,熟能生巧,加深记忆。有不少东西确实还是脑记好。至于到底是不是只用脑记看你自己。反正注意两种风险:一是时间会让记忆淡忘或错乱;二是自己可能出意外。这块不多说了,请自行扩展。
现在你都备份好了。加密不能太过分了,否则多年以后等于“同归于尽”,因为到时候你可能自己都解不开。根据安全法则“持续验证”,无论过不过分的加密及备份方法,一定要做到定期和不定期地验证。验证频率得看你的记忆:有时候转头可能就忘记了。验证不代表一定都要完整解开看看,只要整个过程不会错,采用部分验证也是可以的。最后,也需要注意验证过程的机密性及安全性。
好了,长舒一口气。其实入门是最难的。以上你都准备好后,咱们开始真正进入这个黑暗森林吧:)
欢迎关注 榕榕,可以看实盘学习交流,还能市场清楚方向和策略。无论市场是什么风格,能提前知道,才便有时间去更好的掌握!!!

