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