(来源:https://github.com/slowmist/Blockchain-dark-forest-selfguard-handbook)
序幕
首先,恭喜您找到这本手册!无论你是谁——如果你是加密货币持有者或者你想将来进入加密世界,这本手册都会对你有很大帮助。您应该仔细阅读本手册并将其教导应用到现实生活中。
此外,要完全理解本手册需要一些背景知识。不过,请不要担心。对于初学者来说,不要害怕可以克服的知识障碍。如果你遇到不懂的东西,需要进一步探索,强烈推荐Google。此外,记住一条安全规则也很重要:保持怀疑!无论您在网络上看到什么信息,您都应该始终寻找至少两个来源以进行交叉引用。
再次强调,始终保持怀疑态度 🙂 包括本手册中提到的知识。
区块链是一项伟大的发明,带来了生产关系的改变,一定程度上解决了信任问题。具体来说,区块链创造了许多不需要中心化和第三方的“信任”场景,例如不变性、按约定执行、防止否认等。然而,现实是残酷的。人们对区块链存在很多误解,不法之徒就会利用这些误解来钻漏洞,窃取人们的钱财,造成大量的经济损失。如今,加密世界已经变成了一片黑暗森林。
请记住以下两条安全规则,才能在区块链黑暗森林中生存。
- 零信任:简单来说,保持怀疑,并始终保持如此。
- 持续安全验证:为了相信某件事,你必须验证你怀疑的东西,并让验证成为一种习惯。
注:以上两条安全规则是本手册的核心原则,本手册中提到的所有其他安全原则均源自它们。
好了,我们的介绍就到这里了。让我们从一张图开始,探索这片黑暗森林,看看我们会遇到哪些风险以及我们应该如何应对。
图表
您可以先浏览一下此图,然后再仔细查看手册的其余部分。它是关于这个世界上的关键活动(无论你想怎么称呼它:区块链、加密货币或 Web3),它由三个主要过程组成:创建钱包、备份钱包和使用钱包。
让我们跟随这三个过程并逐一分析。
创建钱包
钱包的核心是私钥(或助记词)。
私钥如下所示:
0xa164d4767469de4faf09793ceea07d5a2f5d3cef7f6a9658916c581829ff5584
此外,种子短语如下所示:
残酷的周末尖峰点无辜头晕外星人使用唤起棚调整错误
注意:我们在这里使用以太坊作为示例。请自行查看私钥/助记词的更多详细信息。
私钥是您的身份。如果私钥丢失/被盗,那么您就丢失了您的身份。有许多著名的钱包应用程序,本手册不会涵盖所有这些应用程序。
不过,我会提到一些特定的钱包。请注意,这里提到的钱包在某种程度上是可信的。但我不能保证它们在使用过程中不会出现预期或预期之外的安全问题或风险(我不再重复,请始终牢记序言中提到的两个主要安全规则)
按应用分类,有PC钱包、浏览器扩展钱包、手机钱包、硬件钱包和网页钱包。从网络连接方面来说,主要可以分为冷钱包和热钱包。在我们进入加密世界之前,我们必须首先考虑钱包的用途。用途不仅决定了我们应该使用哪个钱包,还决定了我们如何使用钱包。
无论你选择哪种钱包,有一点是肯定的:当你在这个世界上有了足够的经验之后,一个钱包是不够的。
这里我们要牢记另一个安全原则:隔离,即不要把所有鸡蛋放在一个篮子里。钱包使用得越频繁,风险就越大。永远记住:尝试任何新事物时,首先准备一个单独的钱包,然后用少量的钱尝试一段时间。即使对于我这样的加密老手来说,如果你玩火,你也更容易被烧伤。
下载
这听起来很简单,但实际上并不容易。原因如下:
- 很多人找不到真正的官方网站,或者合适的应用市场,最终安装了假钱包。
- 很多人不知道如何识别下载的应用程序是否被篡改。
因此,对于很多人来说,在进入区块链世界之前,钱包就已经空了。
解决上面的第一个问题,有一些技巧可以找到正确的官网,比如
- 使用谷歌
- 使用知名官方网站,例如CoinMarketCap
- 询问值得信赖的人和朋友
您可以对照从这些不同来源获得的信息,最终只有一个真相:)恭喜您,您找到了正确的官方网站。
接下来,您必须下载并安装该应用程序。 如果是PC钱包,从官网下载后,需要自行安装。强烈建议在安装前验证链接是否被篡改。虽然这种验证可能无法防止源代码被完全篡改的情况(由于内部诈骗、内部黑客、或者官网可能被黑客攻击等),但是可以防止源代码部分篡改等情况,中间人攻击等
验证文件是否被篡改的方法就是文件一致性检查。通常有两种方式:
- 哈希检查:比如MD5、SHA256等。MD5适用于大多数情况,但仍然存在微小的哈希冲突风险,所以我们一般选择SHA256,足够安全。
- GPG签名验证: 这个方法也很流行。强烈建议掌握GPG工具、命令和方法。虽然这个方法对于新手来说有点困难,但是一旦熟悉了就会发现非常有用。
然而,加密世界中提供验证的项目并不多。所以,能找到一个人是一件很幸运的事。例如,这是一个名为 Sparrow Wallet 的比特币钱包。它的下载页面上写着“Verifying the Release”,真是令人印象深刻,而且上面提到的两种方法都有明确的指导方针,大家可以参考一下:
下载页面提到了两个GPG工具:
- GPG 套件,适用于 MacOS。
- Gpg4win,适用于 Windows。
如果您留意的话,您会发现这两种 GPG 工具的下载页面都提供了一些有关如何检查两种方法的一致性的说明。不过,没有一步一步的指导,也就是说,需要你自己学习和练习:)
如果是浏览器扩展钱包,比如MetaMask,你唯一要注意的是Chrome网上商店中的下载数量和评级。例如,MetaMask 的下载量超过 1000 万次,评分超过 2000 条(尽管总体评分不高)。有些人可能认为下载量和收视率可能被夸大了。说实话,造假这么大的数字是非常困难的。
手机钱包 类似于浏览器扩展钱包。不过需要注意的是,App Store针对每个地区都有不同的版本。加密货币在中国大陆是被禁止的,所以如果你是用中国的App Store账号下载的钱包,只有一个建议:不要使用,换成美国等其他地区的账号再重新下载它。另外,正确的官网也会引导你正确的下载方式(如imToken、Trust Wallet等)。官网保持较高的网站安全性非常重要,如果官网被黑了,就会出大问题。 )。
如果是硬件钱包,强烈建议从官方网站购买。不要从网上商店购买它们。收到钱包后,还应注意钱包是否完好。当然,包装上也有一些难以察觉的恶作剧。无论如何,在使用硬件钱包时,您应该从头开始至少创建三次助记词和钱包地址。并确保它们不重复。
如果是网页钱包,我们强烈建议不要使用它。除非你别无选择,否则请确保它是正品,然后谨慎使用,切勿依赖它。
助记词
创建钱包后,我们直接处理的关键是助记词/助记词,而不是私钥,这样更容易记住。助记词有标准约定(例如BIP39);英语单词一般有12个;可以是其他数字(3的倍数),但不能超过24个字。否则太复杂,不容易记住。如果字数少于12,则安全性不可靠。常见的是 12/15/18/21/24 个字。在区块链世界里,12个字已经很流行,也足够安全。但是,仍然有硬核硬件钱包,比如Ledger,是24个字开头的。除了英文单词外,还可以使用一些其他语言,例如中文、日文、韩文等。以下是 2048 个单词列表供参考:
https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md
创建钱包时,您的助记词很容易受到攻击。请注意,您周围没有人、网络摄像头或任何其他可能窃取您助记词的东西。
另外,请注意助记词是否是随机生成的。通常知名钱包可以生成足够数量的随机种子短语。但是,您应该始终小心。很难知道钱包是否有问题。请保持耐心,因为养成这些习惯对于您的安全非常有益。最后,有时您甚至可以考虑断开与互联网的连接来创建钱包,特别是如果您要将钱包用作冷钱包。断开与互联网的连接总是有效的。
无钥匙
无钥匙意味着没有私钥。这里我们将Keyless分为两大场景(为了便于解释。这样的划分不是行业标准)
- 保管。例如中心化交易所和钱包,用户只需要注册账户,不拥有私钥。他们的安全性完全依赖于这些中心化平台。
- 非托管。用户拥有类似私钥的控制权,但它不是实际的私钥(或助记词)。它依赖于知名的云平台进行托管和身份验证/授权。因此云平台的安全性成为最脆弱的部分。其他公司利用安全多方计算 (MPC) 来消除单点风险,并与流行的云平台合作以最大限度地提高用户体验。
就我个人而言,我使用过各种 Keyless 工具。财力雄厚、信誉良好的中心化交易所提供了最好的体验。只要您个人不对丢失代币负责(例如您的账户信息被黑客入侵),中心化交易所通常会补偿您的损失。基于MPC的Keyless方案看起来很有前景,值得推广。我对 ZenGo、Fireblocks 和 Safeheron 有很好的经验。优点很明显:
- MPC算法工程在知名的区块链上越来越成熟,只需要针对私钥进行操作。
- 一套思路就可以解决不同区块链多重签名方案差异巨大的问题,创造一致的用户体验,也就是我们常说的:通用多重签名。
- 通过多重签名计算,可以保证真正的私钥永远不会出现,解决单点风险。
- 与云(或Web2.0技术)相结合,使得MPC不仅安全,而且创造了良好的体验。
然而,仍然存在一些缺点:
- 并非所有开源项目都能满足业界公认的标准。还需要做更多的工作。
- 很多人基本上只使用以太坊(或基于EVM的区块链)。因此,像 Gnosis Safe 这样基于智能合约方法的多重签名解决方案就足够了。
总的来说,无论你使用哪种工具,只要你感到安全可控、体验良好,就是一个好工具。
到目前为止,我们已经介绍了有关创建钱包需要注意的事项。其他一般安全问题将在后面的部分中介绍。
备份你的钱包
这就是很多好手会落入陷阱的地方,包括我自己。我没有正确备份,我知道这种情况迟早会发生。幸运的是,这不是一个有大量资产的钱包,慢雾的朋友帮我找回了它。尽管如此,这仍然是一次可怕的经历,我认为没有人愿意经历。因此,系好安全带,让我们学习如何安全备份您的钱包。
助记词/私钥
当我们谈论备份钱包时,本质上是在谈论备份助记词(或私钥,为了方便起见,下面我们将使用助记词)。大多数助记词可以分为以下几类:
- 纯文本
- 有密码
- 多重签名
- 沙米尔的秘密共享,简称 SSS
我将简要解释每种类型。
纯文本,纯文本很容易理解。一旦你掌握了这 12 个英文单词,你就拥有了钱包中的资产。您可以考虑进行一些特殊的改组,甚至用其他单词替换其中一个单词。两者都会增加黑客侵入你钱包的难度,但如果你忘记了这些规则,你会很头疼。你的记忆力并不是刀枪不入的。相信我,几年后你的记忆就会变得混乱。几年前,当我使用Ledger硬件钱包时,我改变了24个单词助记词的顺序。几年后,我忘记了顺序,也不确定是否替换了任何单词。如前所述,我的问题是通过一个特殊的代码解密程序解决的,该程序使用暴力来猜测正确的序列和单词。
有密码,根据标准,助记词可以有密码。它仍然是相同的短语,但使用密码时,将获得不同的种子短语。种子短语用于派生出一系列私钥、公钥和相应的地址。所以不仅要备份助记词,还要备份密码。顺便说一句,私钥也可以有密码,它有自己的标准,例如比特币的 BIP 38 和以太坊的 Keystore。
多重签名,顾名思义,需要多人签名才能访问钱包。它非常灵活,因为您可以设置自己的规则。例如,如果有 3 个人拥有密钥(助记词或私钥),则可以要求至少两个人签名才能访问钱包。每个区块链都有自己的多重签名解决方案。大多数知名的比特币钱包都支持多重签名。然而,在以太坊中,多重签名主要通过智能合约来支持,例如 Gnosis Safe。此外,MPC(安全多方计算)变得越来越流行。它提供了类似于传统多重签名的体验,但采用了不同的技术。与多重签名不同,MPC 与区块链无关,并且可以适用于所有协议。
SSS,Shamir 的秘密共享,SSS 将种子分解为多个共享(通常每个共享包含 20 个单词)。要恢复钱包,必须收集并使用指定数量的份额。有关详细信息,请参阅以下行业最佳实践:
https://support.keyst.one/advanced-features/recovery-phrase/import-or-create-shamir-backup
https://wiki.trezor.io/Shamir_backup
使用多重签名、SSS等解决方案可以让您安心,避免单点风险,但管理相对复杂,有时会涉及多方。便利性和安全性之间总是需要妥协。由个人决定,但原则上决不能偷懒。
加密
加密是一个非常非常广泛的概念。加密是对称的、非对称的还是使用其他先进技术都没关系;只要加密的消息可以被您或您的应急处理团队轻松解密,但几十年后其他人都无法解密,那么它就是好的加密。
基于“零信任”的安全原则,我们在备份钱包时,必须假设任何一步都可能被黑客入侵,包括保险箱等物理环境。请记住,除了你自己之外,没有人可以完全信任。事实上,有时你甚至不能相信自己,因为你的记忆可能会消失或放错地方。不过,我不会一直做出悲观的假设,否则会导致一些不想要的结果。
备份时,必须特别考虑灾难恢复。灾难恢复的主要目的是避免单点风险。如果您离开或存储备份的环境出现故障,会发生什么情况?所以重要的东西一定要有容灾人员,一定要有多重备份。
我不会过多阐述如何选择灾难恢复人员,因为这取决于您信任的人。我将重点介绍如何进行多重备份。让我们看一下备份位置的一些基本形式:
- 云
- 纸
- 设备
- 脑
云许多人不信任云备份,他们认为云备份很容易受到黑客攻击。归根结底,关键在于哪一方(进攻方或防守方)在人力和预算方面投入更多努力。就我个人而言,我对谷歌、苹果、微软等公司提供的云服务很有信心,因为我知道他们的安全团队有多强大,以及他们在安全方面花了多少钱。除了对抗外部黑客,我也非常关心内部安全风控和隐私数据保护。我信任的少数服务提供商在这些领域做得相对更好。但没有什么是绝对的。如果我选择这些云服务中的任何一个来备份重要数据(例如钱包),我肯定会至少再加密一次钱包。
我强烈建议掌握 GPG。可用于“签名验证”,同时提供强大的加密和解密安全性。您可以在以下位置了解有关 GPG 的更多信息:
好的,你已经掌握了 GPG :) 现在你已经在离线安全环境中使用 GPG 加密了钱包中的相关数据(助记词或私钥),你现在可以将加密文件直接放入这些云服务中并保存在那里。一切都会好起来的。但我需要在这里提醒你:永远不要丢失 GPG 的私钥或忘记私钥的密码……
此时,您可能会发现这种额外的安全级别相当麻烦:您必须了解 GPG 并备份您的 GPG 私钥和密码。事实上,如果您已经完成了上述所有步骤,那么您已经熟悉了该过程,并且不会感到困难或麻烦。我不再多说了,因为熟能生巧。
如果你想省点力气,还有另一种可能,但它的安全性可能会打折扣。我无法衡量确切的折扣,但有时当我使用一些众所周知的工具来寻求帮助时,我会偷懒。该工具是 1Password。最新版本的1Password已经支持直接存储钱包相关数据,如助记词、密码、钱包地址等,方便用户使用。其他工具(例如 Bitwarden)也可以实现类似的功能,但没有那么方便。
纸许多硬件钱包都附带几张高质量的纸卡,您可以在上面写下助记词(明文、SSS 等)。除了纸之外,有些人还用钢板(耐火、耐水、耐腐蚀的,当然这些我没试过)。复制助记词后进行测试,如果一切正常,请将其放在您感到安全的地方,例如保险箱。我个人非常喜欢使用纸张,因为如果存放得当,纸张的使用寿命比电子产品长得多。
设备,指各类设备;电子产品是常见的备份类型,例如电脑、iPad、iPhone、硬盘等,依个人喜好而定。我们还必须考虑设备之间的安全传输。我觉得使用 AirDrop 和 USB 等点对点方法很舒服,中间人很难劫持该过程。我只是自然地担心电子设备可能会在几年后出现故障,所以我保持了每年至少检查一次设备的习惯。有一些重复的步骤(例如加密),您可以参考云部分。
脑,依靠你的记忆是令人兴奋的。其实,每个人都有自己的“记忆宫殿”。记忆并不神秘,可以通过训练来更好地发挥作用。有些事情用记忆确实更安全。是否仅仅依靠大脑是个人的选择。但要注意两个风险:一是记忆会随着时间的推移而消失,容易造成混乱;另一个风险是您可能会发生事故。我就停在这里,让你探索更多。
现在你们都得到了支持。不要加密太多,否则几年后你会吃亏的。根据“持续验证”的安全原则,你的加密和备份方式,无论是否过度,都必须持续验证,既可以定期验证,也可以随机验证。验证频率取决于您的记忆,您不必完成整个过程。只要过程正确,部分验证也是有效的。最后,还需要注意认证过程的保密性和安全性。
好吧,让我们在这里深吸一口气。入门是最难的部分。现在你已经准备好了,让我们进入这个黑暗森林吧 🙂
如何使用您的钱包
创建并备份钱包后,真正的挑战就来了。如果你的资产不经常移动,或者很少与 DeFi、NFT、GameFi、Web3 这些时下经常提及的智能合约进行交互,那么你的资产应该是相对安全的。
反洗钱
然而,“相对安全”并不意味着“完全没有风险”。因为“你永远不知道哪个先发生,明天还是事故”,对吗?为什么?想一想,你从哪里得到加密货币?它不是凭空而来的,对吧?您随时可能会遇到针对您获得的所有加密货币的 AML(反洗钱)。这意味着你此刻持有的加密货币可能是脏的,如果你不幸运的话,它甚至可能会被直接冻结在链上。据公开报道,Tether曾根据执法机构的要求冻结了部分USDT资产。冻结资金列表可在此处找到。
您可以通过 USDT 合约验证某个地址是否被 Tether 冻结。
https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract
使用目标钱包地址作为输入 int isBlackListed 进行检查。其他接受USDT的链也有类似的验证方式。
但是,您的 BTC 和 ETH 永远不应该被冻结。如果有一天这种情况真的发生,去中心化的信念也会崩溃。我们今天听到的大多数加密货币资产冻结案例实际上都发生在中心化平台(例如Binance、Coinbase等),而不是区块链上。当您的加密货币留在中心化交易平台时,您实际上并不拥有它们中的任何一个。当中心化平台冻结你的账户时,他们实际上是在撤销你的交易或提现权限。冻结的概念可能会误导该领域的新手。于是,一些鲁莽的自媒体就会散布各种关于比特币的阴谋论。
虽然您的 BTC 和 ETH 资产不会被冻结在区块链上,但一旦您的资产转移到这些平台,并且涉及执法部门正在处理的任何未决案件,中心化交易所可能会根据 AML 的要求冻结您的资产。
为了更好地避免反洗钱问题,请务必选择信誉良好的平台和个人作为交易对手。对于此类问题实际上有几种解决方案。例如,在以太坊上,几乎所有坏人和非常关心隐私的人都使用 Tornado Cash 进行混币。我不会再深入探讨这个话题,因为这里的大多数方法都被用来作恶。
冷钱包
使用冷钱包的方式有多种。从钱包的角度来看,只要不连接任何网络,就可以被视为冷钱包。但是离线时如何使用呢?首先,如果你只是想接收加密货币,那没什么大不了的。冷钱包可以与手表钱包配合使用,例如imToken、Trust Wallet等,提供良好的体验。只需添加目标钱包地址,这些钱包就可以变成手表钱包。
如果我们想使用冷钱包发送加密货币,以下是最常用的方式:
- 二维码
- USB
- 蓝牙
所有这些都需要一个专门的应用程序(这里称为Light App)来与冷钱包配合使用。 Light 应用程序将与上述的 Watch-only 钱包一起上线。一旦我们理解了底层的基本原理,我们就应该能够理解这些方法。基本原则是:最终,这只是弄清楚如何将签名内容广播到区块链上的问题。详细流程如下:
- 待签名的内容由 Light App 通过以下方式之一传输到冷钱包。
- 签名由拥有私钥的冷钱包处理,然后使用相同的方式传输回Light App
- Light App 在区块链上广播签名内容。
所以无论使用二维码、USB还是蓝牙哪种方式,都应该遵循上述流程。当然,不同的方法,细节可能会有所不同。例如,二维码的信息容量有限,当签名数据太大时,我们就必须将其拆分。
看起来有点麻烦,但是习惯了就好多了。你甚至会感受到满满的安全感。不过,不要认为100%是安全的,因为这里仍然存在风险,而且已经有很多因为这些风险而造成重大损失的案例。以下是风险点:
- 没有仔细检查转币的目标地址,导致币被转给了别人。人有时是懒惰和粗心的。例如,大多数时候他们只检查钱包地址的开头和结尾几位,而不是完全检查整个地址。这给坏人留下了后门。他们将运行程序来获取与您所需的目标地址相同的前几位和后几位的钱包地址,然后使用一些技巧将您的硬币转移目标地址替换为他们控制下的目标地址。
- 硬币被授权到未知的地址。通常授权是以太坊智能合约代币的机制,即“批准”功能,一个参数是目标授权地址,另一个是数量。很多人不理解这个机制,所以他们可能会向目标地址授权无限数量的代币,此时目标地址就有权限将所有这些代币转走。这称为授权硬币盗窃,并且该技术还有其他变体,但我不会在这里进行扩展。
- 有些看似不重要的签名,其实背后隐藏着巨大的陷阱,我现在不深究,稍后会详细解释。
- 冷钱包可能没有提供足够的必要信息,导致您粗心、误判。
这一切都归结为两点:
- 缺少“所见即所签”的用户交互安全机制。
- 用户缺乏相关背景知识。
热钱包
与冷钱包相比,热钱包基本上具有冷钱包所具有的所有风险。另外,还有一个:秘密短语(或私钥)被盗的风险。此时热钱包还有更多的安全问题需要考虑,比如运行环境的安全性。如果存在与运行环境相关的病毒,则存在被盗的风险。还有一些热钱包存在一定的漏洞,可以通过这些漏洞直接窃取密语。
除了常规的转币功能外,如果您想与其他 DApp(DeFi、NFT、GameFi 等)进行交互,您要么需要使用自己的浏览器直接访问它们,要么通过 PC 浏览器中打开的 DApp 进行交互WalletConnect 协议。
注意:本手册中提及的 DApp 默认指的是在以太坊区块链上运行的智能合约项目。
默认情况下,此类交互不会导致秘密短语被盗,除非钱包安全设计本身存在问题。从我们的安全审计和安全研究历史来看,存在钱包秘密短语被目标页面上的恶意 JavaScript 直接窃取的风险。然而,这种情况很少见,因为这实际上是一个极低级的错误,任何知名钱包都不会犯。
这些实际上都不是我真正关心的问题,它们对我来说是可以管理的(对你来说也是如此)。我最大的担忧/担忧是:知名钱包的每次迭代如何确保不被植入恶意代码或后门?这个问题的含义很明确:我验证了当前版本的钱包没有安全问题,并且我很舒服地使用它,但我不知道下一版本的安全性如何。毕竟,我或我的安全团队不可能有那么多时间和精力来完成所有验证。
这里已经发生了多起恶意代码或者后门导致的盗币事件,比如CoPay、AToken等,具体事件大家可以自行搜索。
在这种情况下,作恶的方式有以下几种:
- 当钱包运行时,恶意代码会将相关密语直接打包上传到黑客控制的服务器中。
- 当钱包运行时,用户发起转账时,目标地址、金额等信息会在钱包后台秘密替换,用户很难察觉。
- 破坏与秘密短语生成相关的随机数熵值,这使得它们相对容易被破译。
安全是一个无知和知识的事情,有很多事情很容易被忽视或错过。因此,对于持有重要资产的钱包,我的安全规则也很简单:足够使用时,不要轻易更新。
什么是 DeFi 安全
当我们谈论DApp时,它可以是DeFi、NFT或GameFi等。这些的安全基础基本相同,但它们也会有各自的特点。我们先以 DeFi 为例来解释一下。当我们谈论 DeFi 安全时,我们到底在说什么?业内人士几乎总是只看智能合约。看来智能合约好了,一切都会好起来的。事实上,这远非事实。
DeFi 安全至少包括以下几个部分:
- 智能合约安全
- 区块链基础安全
- 前端安全
- 通讯安全
- 人类安全
- 财务安全
- 合规安全
智能合约安全
智能合约安全确实是安全审计最重要的切入点,慢雾智能合约的安全审计标准可以参见:
https://www.slowmist.com/service-smart-contract-security-audit.html
对于高级玩家来说,如果智能合约部分本身的安全性是可控的(是否能够自我审计或者看懂专业机构出具的安全审计报告),那么其他部分是否安全并不重要。可控是一个棘手的概念,其中一些取决于玩家自身的实力。例如,玩家对智能合约权限过高的风险有一定的要求。如果项目本身很强大,并且背后的人有很好的声誉,那么完全中心化就没有关系。然而,对于那些不太知名、有争议或新兴的项目,如果你意识到该项目的智能合约存在过多的权限风险,尤其是这种权限也会影响你的本金或收益,你肯定会不愿意。
过度许可的风险非常微妙。在许多情况下,项目的管理员可以进行相关的治理和风险应急。但对于用户来说,这是对人性的考验。如果团队决定作恶怎么办?所以业界有一种权衡做法:添加Timelock来降低此类权限过多的风险,例如:
Compound,老牌知名 DeFi 项目,其核心智能合约模块 Comptroller 和 Governance 均在管理权限中添加了 Timelock 机制:
控制器(0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b)
治理(0xc0da02939e1441f497fd74f78ce7decb17b66529)
管理员这两个模块是
时间锁(0x6d903f6003cca6255d85cca4d3b5e5146dc33925)
可以直接在链上查到Timelock(延迟变量)为48小时(172,800秒):
也就是说,如果Compound的管理员需要更改目标智能合约的某些关键变量,则该交易在区块链上发起后就会被记录,但必须等待48小时才能最终确定并执行。这意味着,如果您愿意,您可以审核管理员的每一项操作,并且您将有至少 48 小时的时间采取行动。例如,如果您不确定,您可以在 48 小时内提取资金。
另一种降低管理员权限过多风险的方法是添加多重签名,例如使用 Gnosis Safe 进行多重签名管理,这样至少不会出现独裁者。这里需要注意的是,多重签名可以是“皇帝的新衣”。例如,一个人可能持有多把钥匙。因此,需要明确目标项目的多重签名策略。谁持有钥匙,每个钥匙持有者的身份必须是有信誉的。
这里值得一提的是,任何安全策略都可能导致“皇帝的新衣”问题,看似策略做得很好,但实际上却做得不好,造成安全假象。再举个例子,Timelock 在纸面上看起来不错。事实上,曾经有过一些项目部署的Timelock存在后门的情况。一般来说,用户不会查看Timelock的源代码,即使查看也不一定能理解,因此管理员在那里放置了一个后门,并且在足够长的时间内没有人会真正注意到。
除了过度许可的风险之外,智能合约安全的其他要素也至关重要。不过,考虑到理解的前提,我这里就不展开了。我的建议是:你至少应该学会阅读安全审计报告,熟能生巧。
区块链基础安全
区块链基础安全是指区块链本身的安全,比如共识账本安全、虚拟机安全等。如果区块链本身的安全性令人担忧,那么链上运行的智能合约项目将直接受到影响。选择一个具有足够安全机制和声誉的区块链非常重要,并且更好地具有更高的长寿概率。
前端安全
前端安全确实是魔鬼。离用户太近,特别容易让用户上当受骗。也许大家主要关注的是钱包和智能合约的安全,导致前端安全很容易被忽视。我想再次强调,前端安全是魔鬼!请允许我更深入地挖掘。
我对前端安全性最关心的是:我如何知道我从这个特定前端页面与之交互的合约是我期望的智能合约?
这种不安全感主要源于两个因素:
- 内部工作
- 第三者
了解内部工作很简单。例如,开发者偷偷将前端页面中的目标智能合约地址替换为有后门的合约地址,或者植入授权钓鱼脚本等。当您访问这个被操纵的前端页面时,一系列涉及您钱包中的加密货币的后续操作可能会在陷阱中完成。在你意识到之前,硬币已经不见了。
第三方主要指两类:
-
一是依赖链被渗透。例如,前端页面使用的第三方依赖存在后门,该后门会随着打包和发布而潜入目标前端页面。以下是SushiSwap的包依赖结构(仅供参考,并不一定意味着截图中的项目存在此类问题):
-
另一个例子是前端页面导入的第三方远程 JavaScript 文件。如果这个 JavaScript 文件被黑客攻击,目标前端页面也可能受到影响,例如 OpenSea(仅用于说明,并不一定意味着屏幕截图中的项目存在此类问题):
我们之所以说这是可能但不确定的原因是,如果开发人员通过以下方式引用前端页面上的第三方远程 JavaScript 文件,则可以减轻风险:
<script src=”https://example.com/example-framework.js” 完整性=”sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7″ crossorigin=”匿名”>
这里的关键点是HTML5的一个很好的安全机制:标签中的完整性属性(SRI机制)。完整性支持 SHA256、SHA384 和 SHA512。如果第三方 JavaScript 文件不符合哈希完整性检查,则不会加载这些文件。这是防止意外代码执行的好方法。然而,利用这种机制需要目标资源支持CORS响应。详细信息请参考以下内容:
https://developer.mozilla.org/zh-CN/docs/Web/Security/Subresource_Integrity
通讯安全
本节我们重点关注 HTTPS 安全性。首先,目标网站必须使用HTTPS,绝不允许HTTP明文传输。这是因为HTTP明文传输太容易被中间人攻击劫持。如今,HTTPS 作为一种安全传输协议非常普遍。如果HTTPS存在中间人攻击,并且攻击者将恶意JavaScript注入到Web应用程序的前端,则用户的浏览器中将显示非常明显的HTTPS证书错误警报。
我们以MyEtherWallet事件为例来说明这一点。
MyEtherWallet曾经是一个非常流行的网络应用钱包,直到现在它仍然非常有名。然而,它不再只是一个网络应用程序钱包。如前所述,出于安全原因,我强烈反对使用网络应用程序钱包。除了前端安全方面的各种问题外,HTTPS劫持也是一个很大的潜在风险。
2018年4月24日,MyEtherWallet发生一起HTTPS劫持重大安全事件。该事件的回顾可以在这里找到:
https://www.reddit.com/r/MyEtherWallet/comments/8eloo9/official_statement_regarding_dns_spoofing_of/
https://www.reddit.com/r/ethereum/comments/8ek86t/warning_myetherwalletcom_highjacked_on_google/
在此次攻击中,黑客通过古老的路由协议BGP劫持了MyEtherWallet大量用户使用的DNS服务(Google Public DNS),直接导致每个用户在尝试访问时,浏览器中都会显示HTTPS错误警报MyEtherWallet 网站。事实上,用户在看到此警报时应该停止,因为它基本上表明目标网页已被劫持。但实际上,许多用户很快就忽略了该警报,并继续与被劫持的网站进行交互,因为他们根本不了解 HTTPS 错误警报背后的安全风险。
由于目标网页已被劫持,黑客在其中注入了恶意JavaScript,通过用户的交互,黑客将成功窃取用户的明文私钥并转移他们的资金(主要是ETH)。
这绝对是黑客利用BGP劫持技术窃取加密货币的经典案例。这简直是太过分了。此后类似的案例还有好几个,这里就不一一赘述了。对于用户来说,只有一件事真正需要注意:如果您决定使用网络应用程序钱包,或尝试与 DApp 交互,请务必确保在看到 HTTPS 证书错误警报时停止并关闭页面!而且你的资金会很好。安全中有一个残酷的现实:当存在风险时,不给用户任何选择。如果你这样做了,总会有用户因为某种原因落入陷阱。事实上,项目团队需要承担起责任。截至目前,针对上述HTTPS劫持问题,已经有了非常有效的安全解决方案:项目组需要正确配置HSTS。 HSTS 代表 HTTP 严格传输安全;它是大多数现代浏览器支持的网络安全策略机制。如果启用 HSTS,如果 HTTPS 证书错误,浏览器将强制用户停止访问目标 Web 应用程序,并且无法绕过该限制。现在你明白我的意思了吗?
人性安全
这一部分很容易理解。例如,项目团队心怀邪恶,行事不诚实。相关内容我在前面已经提到过,这里不再赘述。更多内容将在后面的章节中介绍。
财务安全
金融安全应受到高度尊重。在 DeFi 中,用户最关注的是代币价格和收益。他们想要卓越的,或者至少是稳定的投资回报。换句话说,作为一名用户,我玩游戏是为了赢,如果我输了,至少我需要确信这是一场公平的游戏。这就是人性。
DeFi 中的金融安全容易受到以下形式的攻击:
- 预挖、预售等不公平的启动行为;
- 加密鲸鱼攻击;
- 泵送和倾倒;
- 黑天鹅事件,就像突发的市场瀑布;或者说,当一个 DeFi 协议与其他 DeFi/Token 嵌套或互操作时,其安全性/可靠性将高度依赖于其他协议
- 其他技术攻击或我们所说的科学技术,例如抢先交易、三明治攻击、闪贷攻击等
合规要求
合规要求是一个很大的话题,前面提到的AML(反洗钱)只是其中的一点。还有像KYC(了解你的客户)、制裁、证券风险等方面,其实对于我们用户来说这些都不是我们能控制的。当我们与某个项目互动时,由于该项目可能受到某些国家的相关法规的约束,我们的隐私信息可能会被收集。您可能不关心此类隐私问题,但有人关心。
例如,2022年初发生了一个小事件:一些钱包决定支持地址所有权证明协议(AOPP)协议:
我看了一下协议设计,发现支持AOPP的钱包可能会泄露用户隐私。监管机构可能会了解受监管的加密货币交易所和未知的外部钱包地址之间的互连。
难怪许多注重隐私的钱包如此关心用户的反馈,并迅速从其产品中删除了 AOPP 支持。但说实话:协议设计还是挺有趣的。我注意到有些钱包没有计划取消对 AOPP 的支持,例如 EdgeWallet。他们认为,AOPP并不一定会暴露更多的用户隐私,相反有助于增强加密货币的流通。在许多受监管的加密货币交易所中,用户在证明其所有权之前不得提取到特定的外部钱包地址。
起初,知名硬件钱包 Trezor 拒绝取消 AOPP 支持。但后来迫于社区和推特用户的压力,它被迫妥协才这么做。
正如您所看到的,这是一个很小的事件,但对于某些人来说,隐私确实很重要。这并不是说我们应该违反法规,完全忽视合规要求。事实上,我确实认为有必要对合规性要求做出一定程度的妥协。我们不会继续深入探讨这个话题,请随意以自己的方式消化内容。
到目前为止,我们已经涵盖了 DeFi 安全部分的大部分内容。
此外,未来的添加或更新也会带来安全问题。我们常说“安全态势是动态的,而不是静态的”。例如,现在大多数项目团队都会进行安全审计并显示干净的安全审计报告。如果您仔细阅读过高质量的报告,您会发现这些报告会清楚地解释审核内容的范围、时间范围和唯一标识符(例如经过验证的开源智能合约地址,或 GitHub 存储库上的提交地址,或目标源代码文件的哈希值)。也就是说,报告是静态的,但是如果在项目中你发现与报告中提到的内容有任何偏差,你可以指出来。
NFT安全
前面提到的所有关于 DeFi 安全的内容都可以应用到 NFT 安全上,而 NFT 本身也有几个非常具体且独特的安全主题,例如:
- 元数据安全
- 签名安全
元数据主要是指嵌入的图片、动画等内容。具体标准建议参考OpenSea:
这里可能会出现两个主要的安全问题:
- 一是图像(或动画)所在的 URI 可能不可信。它可以只是随机选择的中心化服务,一方面无法保证可用性,另一方面项目团队可以随意修改图像,因此NFT将不再成为一成不变的“数字收藏品”。一般建议使用IPFS、Arweave等中心化存储解决方案,并选择知名的URI网关服务。
- 另一个是隐私泄露的可能性。随机选择的 URI 服务可能会捕获用户的基本信息(例如 IP、User-Agent 等)
签名安全性是这里的另一个大问题,我们将在下面进行说明。
签名要小心!
我想特别提到签名安全性,因为存在很多陷阱,您应该始终小心。已经发生了几起事件,尤其是在 NFT 交易方面。然而,我注意到并没有太多人了解如何准备和处理此类安全问题。根本原因是很少有人把问题说得足够清楚。
签名安全中第一个也是最重要的安全原则是: 你所看到的就是你所签署的。也就是说,您收到的签名请求中的消息是您在签名后应该期望的内容。当你签字之后,结果应该是你所期望的,而不是让你后悔的。
签名安全的一些细节在“冷钱包”部分已经提到。如果您不记得了,我建议您重新访问该部分。在本节中,我们将重点讨论其他方面。
2022 年左右,OpenSea 发生了几次著名的 NFT 黑客攻击事件。2022 年 2 月 20 日,发生了一次重大爆发。根本原因是:
- 用户在 OpenSea 上签署了 NFT 上币请求。
- 黑客通过网络钓鱼获取用户的相关签名。
对于黑客来说,获得相关签名其实并不难。黑客需要 1)。构造要签名的消息,2)。散列它,3)。欺骗目标用户签署请求(这将是盲签名,这意味着用户实际上并不知道他们正在签署什么),4)。获取签名内容并构造数据。此时,该用户已被黑客攻击。
我将以 Opensea 为例(实际上,它可以是任何 NFT 市场)。当目标用户授权在市场上进行 NFT 上币操作后,黑客将构建需要签名的消息。使用Keccak256对其进行哈希处理后,钓鱼页面上会弹出签名请求。用户会看到类似以下内容:
仔细看看。我们可以从这个 MetaMask 弹出窗口中获得什么样的信息?帐户信息和帐户余额、签名请求的来源网站、用户即将签名的消息以及……仅此而已。用户怎么会怀疑灾难已经来临呢?他们怎么会意识到,一旦他们点击“签名”按钮,他们的 NFT 就会被盗。
这实际上是盲签名的一个例子。用户无需在 NFT 市场内签名。相反,用户可能会被诱骗进入任何网络钓鱼网站来签署消息,而无需完全理解这些签名的实际含义和后果。不幸的是,黑客知道。作为用户,请记住:切勿盲目签署任何内容。 OpenSea 曾经存在盲签名问题,他们在 2022 年 2 月 20 日之后通过采用 EIP-712 解决了这个问题。但是,如果没有盲签名,用户仍然可能会因不小心而以其他方式被黑客攻击。
发生这种情况的最根本原因是签名不限于遵循浏览器的同源策略。你可以简单地理解为:同源策略可以保证某个动作只发生在特定域下,不会跨域,除非项目组有意希望发生跨域。如果签名遵循同源策略,那么即使用户签署了非目标域生成的签名请求,黑客也无法利用该签名在目标域下进行攻击。在讨论更多细节之前我会先停在这里。我注意到了关于协议层面安全性改进的新提议,希望这种情况能够尽快得到改善。
我们已经提到了签名消息时可能发生的大多数主要攻击格式,但实际上有很多变体。无论它们看起来多么不同,它们都遵循相似的模式。理解它们的最好方法就是自己从头到尾重现一次攻击,甚至创造一些独特的攻击方法。比如这里提到的签名请求攻击,其实包含了很多细节,比如要签名的消息是如何构造的,签名后到底生成了什么?除了“Approve”之外是否还有其他授权方式(有,例如:increaseAllowance)。好吧,如果我们在这里扩展,那就太技术性了。好处是您应该已经了解签署消息的重要性。
用户可以通过取消授权/审批的方式从源头上杜绝此类攻击。以下是您可以使用的一些知名工具。
-
代币批准
https://etherscan.io/tokenapprovalchecker
这是以太坊官方浏览器提供的授权检查和取消工具。其他EVM兼容的区块链也有类似的东西,因为它们的区块链浏览器基本上是由Etherscan开发的。例如:
https://bscscan.com/tokenapprovalchecker
https://hecoinfo.com/tokenapprovalchecker
https://polygonscan.com/tokenapprovalchecker
https://snowtrace.io/tokenapprovalchecker
https://cronoscan.com/tokenapprovalchecker -
Revoke.cash
https://revoke.cash/
名气大的超级老派多链支持日渐发力 -
Rabby扩展钱包
https://rabby.io/
我们经常合作的钱包之一。提供“授权检查和取消”功能的EVM兼容区块链数量是我见过最多的
⚠️笔记:如果您想更全面、深入地了解 SIGNATURE SECURITY,请检查以下存储库添加中的扩展作为参考:
https://github.com/evilcos/darkhandbook
确实,SIGNATURE SECURITY 的知识对于初学者来说相当具有挑战性。存储库汇编了相关内容,仔细阅读它将帮助您掌握安全知识。因此,您将不再觉得困难。(如果您能阅读并理解所有内容,我相信安全知识对您来说将不再是困难的🙂
小心违反直觉的签名请求!
我想特别提一下另一个风险: 反直觉风险.
什么是反直觉的?比如,你已经对以太坊非常熟悉,并且已经成为各种 DeFi 和 NFT 的 OG。当您第一次进入 Solana 生态系统时,您可能会遇到一些类似的钓鱼网站。你可能会觉得自己已经做好了充分的准备,以至于你开始思考“我在以太坊生态系统中已经见过这些一千次了,我怎么会被愚弄呢?”
与此同时,黑客会很高兴,因为你已经被愚弄了。人们遵循自己的直觉,这使得他们粗心大意。当出现反直觉的攻击时,人们就会陷入陷阱。
好吧,让我们看一个利用反直觉的真实案例。
首先,警告:Solana 上的授权网络钓鱼要残酷得多。上面的例子发生在2022年3月5日,攻击者向用户批量空投NFT(图1)。用户通过空投NFT描述中的链接(www_officialsolanares_net)进入目标网站并连接钱包(图2)。点击页面上的“Mint”按钮后,弹出审批窗口(图3)。请注意,此时弹出窗口中没有任何特殊通知或消息。一旦他们批准,钱包中的所有 SOL 都将被转移。
当用户点击“批准”按钮时,他们实际上是在与攻击者部署的恶意智能合约进行交互: 3VtjHnDuDD1QreJiYNziDsdkeALMT6b2F9j3AXdL4q8v
该恶意智能合约的最终目标是发起“SOL 转账”,转账几乎所有用户的 SOL。从链上数据分析,该钓鱼行为持续了数天,期间受害者人数不断增加。
这个例子有两个陷阱需要注意:
- 用户批准后,恶意智能合约可以转移用户的原生资产(本例中为 SOL)。这在以太坊上是不可能的。以太坊上的授权钓鱼只会影响其他代币,不会影响ETH原生资产。这是违反直觉的部分,会让用户降低警惕性。
- Solana 上最知名的钱包 Phantom 的安全机制存在漏洞,没有遵循“所见即所得”原则(我们尚未测试其他钱包),并且不支持给用户提供足够的风险提示。这很容易造成安全盲点,从而导致用户损失金钱。
一些高级攻击方法
事实上,先进的攻击手段有很多,但从公众的角度来看,它们大多被视为网络钓鱼。然而,有些攻击并非正常的网络钓鱼攻击。例如:
黑客发送了一封带有这样附件的钓鱼电子邮件:
稳定币的巨大风险(受保护).docx
老实说,这是一份有吸引力的文件。但一旦打开,用户的计算机就会被植入木马(一般通过Office宏或0day/1day漏洞利用),木马通常包含以下功能:
- 收集各种凭据,例如浏览器相关的或SSH相关的等。通过这种方式,黑客可以将其访问权限扩展到目标用户的其他服务。因此,感染后,一般建议用户不仅要清理目标设备,还要清理相关的账户权限。
- 键盘记录器,特别针对那些临时出现的敏感信息(例如密码)。
- 收集相关截图、敏感文件等。
- 如果是勒索软件,目标系统中的所有文件都会被高度加密,并等待受害者支付赎金,通常是比特币。但在这种情况下,它不是具有更明显和嘈杂的行为和直接意图的勒索软件。
此外,针对加密行业的木马会经过专门定制,从知名钱包或交易所收集敏感信息,以窃取用户资金。据专业人士分析,上述木马会针对Metamask进行针对性攻击:
https://securelist.com/the-bluenoroff-cryptocurrency-hunt-is-still-on/105488/
该木马会用带有后门的假冒的 MetaMask 替换用户的 MetaMask。后门 MetaMask 基本上意味着您存储在其中的任何资金都不再属于您。即使您使用的是硬件钱包,这个假 MetaMask 也会通过操纵目标地址或金额信息来窃取您的资金。
这种方法是专为具有已知钱包地址的知名目标而设计的。我注意到,许多这样的人过于傲慢,以至于无法防止自己被黑客攻击。黑客入侵后,许多人会吸取教训,进行全面审查,取得重大改进,并与值得信赖的安全专业人士或机构建立长期合作和友谊。然而,这个世界上总有例外。有些人或项目不断遭到黑客攻击。如果每次都是因为没有人遇到过的事情,我会非常尊重他们,称他们为先驱者。随着时间的推移,他们很有可能取得成功。不幸的是,许多事件都是由非常愚蠢和重复的错误造成的,而这些错误是很容易避免的。我建议远离这些项目。
相比之下,那些大规模的网络钓鱼攻击根本就不全面。攻击者会准备一堆看起来相似的域名,并通过在 Twitter 或其他社交平台上购买帐户、关注者和转发来传播有效负载。如果管理得当,很多人都会掉入陷阱。这种钓鱼攻击其实并没有什么特别之处,通常攻击者只是粗暴地让用户授权代币(包括NFT),然后将其转走。
还有其他类型的高级攻击,例如使用 XSS、CSRF、反向代理等技术来平滑攻击过程。我不会在这里详细说明所有这些情况,除了一种非常特殊的情况(Cloudflare 中间人攻击),这是反向代理中的场景之一。确实存在利用这种极其隐蔽的方法造成经济损失的攻击。
这里的问题不是 Cloudflare 本身邪恶或被黑客攻击。相反,受到威胁的是项目团队的 Cloudflare 帐户。一般流程是这样的:如果你使用Cloudflare,你会注意到仪表板中有一个“Worker”模块,其官方描述是:
构建无服务器应用程序并在世界各地立即部署它们,实现卓越的性能、可靠性和规模。详情请参阅 https://developers.cloudflare.com/workers/
我很早之前做了一个测试页面:
当您访问该页面时,会弹出一个窗口,显示:
xssor.io,被 Cloudflare 劫持。
事实上,这个弹出窗口,甚至x.html的全部内容,都不属于文档本身。所有这些都是由 Cloudflare 提供的。其机制如下图所示:
屏幕截图中代码片段的指示非常简单:如果我是黑客并且我控制了您的 Cloudflare 帐户,我可以使用 Workers 将任意恶意脚本注入到任何网页。而且用户很难意识到目标网页已被劫持和篡改,因为不会出现任何错误警报(例如HTTPS证书错误)。如果不花费大量时间检查服务器和人员的安全性,即使项目团队也无法轻易识别问题。当他们意识到是 Cloudflare Workers 时,损失可能已经很严重了。
Cloudflare实际上是一个很好的工具。许多网站或Web应用程序都会使用它作为他们的Web应用程序防火墙、反DDoS解决方案、全球CDN、反向代理等。因为有免费版本,所以他们拥有很大的客户群。另外,还有 Akaimai 等服务。
用户必须注意此类账户的安全。随着互联网的兴起,帐户安全问题随之出现。这是世界上一个非常普遍的话题,几乎每个人都在谈论它,但仍然有很多人因此而遭到黑客攻击。一些根本原因可能是他们没有为重要服务使用唯一的强密码(像 1Password 这样的密码管理器无论如何都不那么流行),有些可能是他们懒得打开 2 因素身份验证 (2FA),或者可能是他们甚至不知道这件事。更不用说对于某些特定服务,密码应该至少每年重置一次。
好了,本节就到此结束。你只需要明白,这确实是一个黑暗森林,你应该了解尽可能多的攻击方法。在纸上看够了之后,如果您至少陷入过一次或两次陷阱,您可以将自己视为业余安全专业人员(无论如何这对您自己都有好处)。
传统隐私保护
恭喜,您已经完成了这一部分。传统的隐私保护是个老话题了:这是我2014年写的文章。
在隐私泄露的时代,你必须学习一些保护自己的技巧。
https://evilcos.me/yinsi.html
重读这篇文章,虽然这是2014年的入门文章,但是里面的大部分建议并没有过时。重读这篇文章后,我在这里介绍一些新内容:事实上,隐私保护与安全息息相关。传统隐私是安全的基石。此部分包括您的私钥,属于隐私的一部分。如果基石不牢靠,基石的隐私就没有意义,那么上层建筑就会像空中楼阁一样脆弱。
强烈推荐以下两个资源:
监视自卫
更安全在线通信的提示、工具和操作方法
https://ssd.eff.org/
监视自卫是 SSD 的缩写。由著名的电子前沿基金会(EFF)发起,专门发布了相关指南,告诉你如何在监控互联网世界中避免老大哥监视你,其中包括几个有用的工具(如Tor、WhatsApp、Signal、 PGP 等)
隐私指南:使用加密和隐私工具对抗监视
https://www.privacytools.io/
上面的网站全面列出了许多工具。它还推荐了一些加密货币交易所、钱包等。但是,需要注意的是,我并没有使用网站上列出的很多工具,因为我有自己的方式。所以,你也应该开拓自己的路,不断比较、不断提高。
以下是我建议您应该使用的一些工具的亮点。
操作系统
Windows 10 版本(及更高版本)和 macOS 都是安全选项。如果你有能力,你可以选择Linux,例如Ubuntu,甚至是非常注重安全和隐私的Linux,例如Tails或Whonix。
就操作系统而言,最直接的安全原则是:密切关注系统更新,并在有更新时尽快应用。其次是掌握操作系统的能力。人们可能会问,为了掌握 Windows 或 MacOS 这样的操作系统,你到底需要学习什么?不就是随便点击一下吗?嗯,这实际上还远远不够。对于新手用户来说,一款好的杀毒软件是必须的,比如卡巴斯基、BitDefender,而且它们都可以在MacOS上使用。
然后,不要忘记我之前提到的下载安全性。如果您不鲁莽地下载和安装程序,您将消除大部分风险。
接下来,想想如果您的计算机丢失或被盗,您将做什么。拥有启动密码显然还不够。如果未打开磁盘加密,坏人就可以取出硬盘并检索其中的数据。因此我的建议是重要计算机应该打开磁盘加密。
https://docs.microsoft.com/en-us/windows/security/encryption-data-protection
https://support.apple.com/en-us/HT204837
我们还有VeraCrypt(原TrueCrypt)等强大且传奇的工具,如果您感兴趣,请随意尝试:
您可以更进一步启用 BIOS 或固件密码。我自己做过,但这完全取决于你自己的选择。请记住:如果您这样做,请非常清楚地记住密码,否则没有人可以帮助您。我很幸运,自己曾经掉进过兔子洞,这让我损失了一台笔记本电脑、一些加密货币和一周的时间。另一方面,这也是一次非常好的学习经历。
手机
目前iPhone和Android是仅有的两个主流手机类别。我曾经是黑莓手机的忠实粉丝,但它的辉煌随着时间的流逝而消失。过去,Android手机的安全状况让我非常担心。一方面还处于早期阶段,另一方面版本非常碎片化,每个品牌都会有自己的fork Android版本。但现在情况已经有了很大的改善。
在手机上我们还需要注意安全更新和下载安全。此外,还应注意以下几点:
- 不要越狱/root你的手机,除非你正在做相关的安全研究,否则没有必要。如果你是为了盗版软件,那真的取决于你对这项技能的掌握程度。
- 不要从非官方应用商店下载应用程序。
- 除非您知道自己在做什么,否则不要这样做。更不用说官方应用商店中甚至还有很多假冒应用。
- 使用官方云同步功能的前提是,你必须确保你的账户安全,否则一旦云账户被盗,手机也会被盗。
就我个人而言,我更依赖iPhone。并且您至少需要两个 iCloud 帐户:一个中国帐户和一个海外帐户。您将需要它们来安装具有不同区域限制的应用程序。 (这听起来很奇怪,但欢迎来到现实)
网络
网络安全问题曾经是一个令人头疼的问题,但近年来已经有了显着的改进,特别是自从大规模采用 HTTPS Everywhere 策略以来。
如果发生网络劫持(中间人攻击)攻击,将会有相应的系统错误警报。但总有例外,因此当您有选择时,请使用更安全的选项。例如,不要连接到不熟悉的 Wi-Fi 网络,除非更流行且安全的 4G/5G 网络不可用或不稳定。
浏览器
最流行的浏览器是 Chrome 和 Firefox,在加密领域有些浏览器也会使用 Brave。这些知名浏览器都有强大的团队,并且会有及时的安全更新。浏览器安全的主题非常广泛。以下是一些需要您注意的提示:
- 尽快更新,不要心存侥幸。
- 如果没有必要,请勿使用扩展。如果您这样做,请根据用户的评论、用户数量、维护公司等做出决定,并注意其请求的权限。确保您从浏览器的官方应用商店获取该扩展程序。
- 多个浏览器可以并行使用,强烈建议您在一个浏览器中执行重要操作,而使用另一个浏览器进行更常规、不太重要的操作。
- 这里有一些著名的注重隐私的扩展(例如 uBlock Origin、HTTPS Everywhere、ClearURLs 等),请随意尝试。
特别是在 Firefox 中,我还将使用传奇的古老扩展 NoScript,它在抵御恶意 JavaScript 有效负载方面拥有良好的记录。现在的浏览器变得越来越安全,因为它们增加了对同源策略、CSP、Cookie 安全策略、HTTP 安全标头、扩展安全策略等的支持。因此,使用 NoScript 等工具的需求变得越来越小,比较小,有兴趣的话可以看看。
密码管理器
如果您还没有使用过密码管理器,要么您不知道使用密码管理器的便利性,要么您有自己强大的记忆宫殿。大脑记忆力的风险之前也提到过,一是时间会削弱或扰乱你的记忆力;二是时间会削弱或扰乱你的记忆力。另一个是你可能会发生意外。无论哪种情况,我仍然建议您使用密码管理器来配合您的大脑记忆,使用众所周知的密码管理器,例如 1Password、Bitwarden 等。
这部分我不需要过多介绍,网上相关教程非常多,甚至不需要教程就可以轻松上手。
这里我需要提醒大家的是:
- 永远不要忘记您的主密码,并确保您的帐户信息安全,否则一切都会丢失。
- 确保您的电子邮件安全。如果您的电子邮件遭到泄露,它可能不会直接泄露密码管理器中的敏感信息,但坏人有能力破坏它。
- 我已经验证了我提到的工具(例如1Password)的安全性,并一直在密切关注相关安全事件、用户评论、新闻等。但我不能保证这些工具绝对安全,不发生黑天鹅事件将来会发生在他们身上。
例如,我确实欣赏的一件事是 1Password 安全页面的介绍和描述。
这个页面有安全设计理念、相关隐私和安全证书、安全设计白皮书、安全审计报告等,这种程度的透明度和开放性也方便了行业内必要的验证。所有项目团队都应该从中吸取教训。
Bitwarden 更进一步,因为它是完全开源的,包括服务器端,因此任何人都可以验证、审核和贡献。现在你明白了吗? 1Password 和 Bitwarden 的意图非常明确:
我非常有安全感并且很关心隐私。不仅我自己这么说,第三方权威机构也这么说。请随意审核我,为了方便您的审核,我花了很多精力尽可能地保持开放。如果我做的与我所说的不符,那么就很容易挑战我。这就是所谓的安全信心。
双因素身份验证
说到你在互联网上的身份安全,第一层依靠密码,第二层依靠双因素认证,第三层依靠目标项目本身的风控能力。我不能说二因素身份验证是必须具备的。例如,如果你使用的是去中心化钱包,一层密码就够烦人的了(现在基本上都支持面部识别或指纹等生物识别,以提高用户体验),没有人愿意使用第二个因素。但在中心化平台中,你必须使用2FA。任何人都可以访问集中式平台,如果您的凭据被盗,您的帐户就会被泄露,您的资金将会丢失。相反,你的去中心化钱包的密码只是本地身份验证,即使黑客获得了密码,他们仍然需要访问你的钱包所在的设备。
现在你看到区别了吗?一些著名的双因素身份验证(2FA)工具包括:Google Authenticator、Microsoft Authenticator 等。当然,如果你使用密码管理器(如 1Password),它也附带了 2FA 模块,这非常方便。始终记得进行备份,因为丢失 2FA 可能会很麻烦。
另外,双因素认证也可以是一个更广泛的概念。例如,当使用账户标识符和密码登录目标平台时,我们的账户标识符通常是电子邮件或手机号码。这时,邮箱或者手机号码就可以作为2FA来接收验证码。但这种方法的安全级别不太好。例如,如果邮箱被泄露或SIM卡被劫持,或者用于发送电子邮件和短信的第三方服务被黑客入侵,那么平台发送的验证码也会被泄露。
科学上网
出于政策原因,这个我们就不过多谈论了,只选一个众所周知的解决方案。如果你能构建自己的解决方案,事情就会更加可控。毕竟,我们的出发点是科学、安全地上网。
如果您没有使用自建解决方案,则不能完全排除中间人攻击的可能性。如前所述,互联网安全状况已不像以前那么糟糕,尤其是在大规模采用 HTTPS Everywhere 策略之后。然而,有些平静可能只是表面,表面之下已经暗流涌动,不易被察觉。说实话,我对此确实没有什么灵丹妙药。构建自己的解决方案并不容易,但绝对值得。如果不能,请确保使用多个来源进行检查,并选择一个历史悠久、信誉良好的来源。
电子邮件
电子邮件是我们基于网络的身份的基石。我们使用电子邮件来注册许多服务。我们使用的几乎所有电子邮件服务都是免费的。它就像空气一样,你不认为它会消失。如果有一天你的电子邮件服务消失了,那么所有依赖它的其他服务将处于一种相当尴尬的境地。如果发生战争、自然灾害等,这种极端情况确实不是不可能。当然,如果发生这些极端情况,电子邮件对你来说就不如生存重要了。
当谈到电子邮件服务提供商时,您应该选择科技巨头,例如Gmail、Outlook或QQ邮箱。恰好我之前的安全研究也涉及到这个领域。这些邮箱的安全状况足够好。但您仍然必须小心电子邮件网络钓鱼攻击。您不需要处理每封电子邮件,尤其是嵌入的链接和附件,其中可能隐藏着木马。
如果您的电子邮件服务提供商遇到高度复杂的攻击,那么您只能靠自己了。
除了这些科技巨头的电子邮件服务外,如果您非常关心隐私,可以看看这两个著名的隐私友好型电子邮件服务:ProtonMail 和 Tutanota。我的建议是将这些私密邮箱与日常使用分开,只将它们用于需要特别关注隐私的服务。您还需要定期使用免费电子邮件服务,以防止您的帐户因长时间不活动而被暂停。
SIM卡
SIM卡和手机号码在很多情况下也是非常重要的基本身份,就像电子邮件一样。近年来,我国各大运营商在手机号码的安全保护方面做得非常好。例如,取消和重新发行SIM卡有严格的安全协议和验证流程,并且全部在现场进行。关于SIM卡攻击,我举个例子:
2019.5,某人的Coinbase账户遭遇SIM Port Attack(SIM卡转账攻击),不幸损失超过10万美元的加密货币。攻击过程大致如下:
攻击者通过社交工程等方式获取目标用户的隐私信息,并欺骗手机运营商为其发放新的SIM卡,然后通过同一手机号码轻松接管目标用户的Coinbase账户。 SIM卡已经转移了,很麻烦。如果您的 SIM 卡被攻击者转移,那就非常麻烦了,因为现在许多在线服务都使用我们的手机号码作为直接身份验证因素或 2FA。这是一种非常中心化的认证机制,手机号码成为弱点。
详细分析请参考:
对此的防御建议实际上很简单:启用众所周知的 2FA 解决方案。
SIM卡还有一个风险:那就是如果手机丢失或被盗,坏人能把SIM卡拿出来使用,那就尴尬了。我是这样做的:启用SIM卡密码(PIN码),这样每次我打开手机或在新设备上使用SIM卡时,我都需要输入正确的密码。请向 Google 询问详细的操作方法。这里我提醒一下:这个密码千万不要忘记,不然会很麻烦。
GPG
这部分的很多内容在前面的章节中已经提到过,在这里我想补充一下更多的基本概念:有时你会遇到类似的名称,例如 PGP、OpenPGP 和 GPG。简单区分如下:
- PGP 是 Pretty Good Privacy 的缩写,是一款已有 30 年历史的商业加密软件,现隶属于赛门铁克旗下。
- OpenPGP 是源自 PGP 的加密标准。
- GPG,全称GnuPG,是一款基于OpenPGP标准的开源加密软件。
它们的核心是相似的,并且使用 GPG 你可以与其他的兼容。在这里我再次强烈建议:在安全加密方面,不要试图重新发明轮子; GPG如果正确使用,可以显着提高安全级别!
隔离
隔离安全原则背后的核心价值是零信任心态。你要明白,无论我们多么强大,我们迟早都会被黑客攻击,无论是外部黑客、内部黑客还是我们自己。当被黑时,止损应该是第一步。止损能力被很多人忽视,这也是他们一次又一次被黑的原因。根本原因是没有安全设计,尤其是隔离等简单的方法
良好的隔离实践可以确保在发生安全事件时,您只会丢失与受感染目标直接相关的资产,而不会影响其他资产。
例如:
- 如果您的密码安全措施良好,当您的一个帐户遭到黑客攻击时,相同的密码不会危及其他帐户。
- 如果您的加密货币没有存储在一组助记词种子下,那么即使您陷入陷阱,您也不会失去一切。
- 如果您的计算机被感染,幸好这只是一台用于休闲活动的计算机,里面并没有什么重要的东西,所以您不必惊慌,因为重新安装计算机可以解决大部分问题。如果您擅长使用虚拟机,那就更好了,因为您可以只恢复快照。好的虚拟机工具有:VMware、Parallels。
- 总结一下,你至少可以拥有两个账户、两个工具、两个设备等,熟悉之后完全创建一个独立的虚拟身份也不是不可能。
我之前提到过一个比较极端的观点:隐私不是我们要保护的,隐私应该受到控制。
产生这种观点的原因是:在当前的互联网环境下,隐私实际上已经被严重泄露。幸运的是,近年来,与隐私相关的法规被越来越广泛地采用,人们也越来越关注。一切确实都在朝着正确的方向发展。但在此之前,无论如何,当你掌握了我列出的知识点后,你就能够轻松掌控自己的隐私了。在互联网上,如果你习惯了,你可能会拥有几个几乎相互独立的虚拟身份。
人性的安全
人类始终处于最高且永恒的风险之中。 《三体》中有一句话:“软弱和无知不是生存的障碍,傲慢才是。”
- 不要傲慢:如果你认为自己已经很强大,那你就对自己没问题。不要小看整个世界。特别是,不要过于骄傲,认为自己可以挑战全球黑客。学无止境,障碍还很多。
- 不要贪婪:贪婪在很多时候确实是前进的动力,但是想一想,为什么这么好的机会只留给你呢?
- 不要冲动:冲动是魔鬼,它会让你陷入陷阱。鲁莽的行动就是赌博。
人性中有说不完的事情,你必须要小心。请特别注意以下几点,看看不法分子如何利用人性的弱点,利用各种便利的平台。
电报
我之前说过 Telegram 是最大的暗网。不得不说,人们喜欢 Telegram 是因为它的安全性、稳定性和开放的设计特性。但 Telegram 的开放文化也吸引了坏人:大量用户、高度可定制的功能、足够容易构建各种 Bot 服务。结合加密货币,实际的交易体验远远超出Tor的暗网市场。而且里面的鱼也太多了。
通常,社交媒体帐户的唯一标识符只是用户名、用户 ID 之类的东西,但这些可以被不良行为者完全克隆。有些社交平台有账户验证机制,比如添加蓝色V图标什么的。公共社交媒体账户可以通过一些指标来验证,例如关注者数量、发布的内容、与粉丝的互动等。非公共社交媒体账户的难度更大一些。很高兴看到 Telegram 发布了“我们在哪些组”的功能。
凡是有漏洞可钻、收益可观的地方,一定已经有一堆坏人了,这就是人性。
因此,社交媒体平台充满了网络钓鱼陷阱。比如:在群聊中,突然出现一个貌似官方客服的人,发起私聊(any2any私聊是Telegram的功能,不需要好友请求),然后就出了经典的战术垃圾邮件,鱼会接连咬钩。
或者攻击者可能会更进一步,将您添加到另一个组中。所有参与者给你买的都是假的,但对你来说却显得那么真实。我们将这种技术称为地下社会的群体克隆。
这些只是操纵人性的基本方法,先进的技术会与漏洞结合在一起,因此更难以预防。
Discord
Discord是近两年兴起的新晋热门社交平台/IM软件。核心功能是社区服务器(不是传统服务器的概念),正如官方的说法:
Discord 是一款免费的语音、视频和文本聊天应用程序,数千万 13 岁以上的人使用它与社区和朋友聊天和闲逛。
人们每天都使用 Discord 谈论很多事情,从艺术项目和家庭旅行到家庭作业和心理健康支持。它是任何规模社区的家园,但最广泛使用的是经常交谈的小而活跃的群体。
它看起来很棒,但需要相当强大的安全设计标准。 Discord 有特定的安全规则和政策,如下所示:
不幸的是,大多数人不会费心去仔细阅读它。更重要的是,Discord 并不总是能够清楚地说明某些核心安全问题,因为他们将不得不戴上攻击者的帽子,而这并不总是可行的。
例如:
Discord 上的 NFT 盗窃案如此之多,主要的攻击方式有哪些?在我们弄清楚这一点之前,Discord 安全建议是没有用的。
许多项目Discordhacks背后的关键原因实际上是Discord Token,它是HTTP请求头中授权字段的内容。它已经在 Discord 中存在了很长时间。对于黑客来说,如果他们能找到办法获得这个Discord Token,他们几乎就可以控制目标Discord服务器的所有权限。也就是说,如果目标是管理员、具有管理权限的帐户或 Discord 机器人,黑客就可以为所欲为。比如发布一个NFT钓鱼网站,让人以为是官方发布的,鱼就会上钩。
有人可能会问,如果我向我的 Discord 帐户添加双因素身份验证 (2FA) 会怎么样?绝对是个好习惯!但 Discord Token 与您的帐户 2FA 状态无关。一旦您的帐户被泄露,您应立即更改您的 Discord 密码,以使原始 Discord 令牌失效。
对于黑客如何获得Discord Token的问题,我们已经弄清楚了至少三种主要技术,我们将在以后尝试详细解释。对于普通用户来说,可以做的事情有很多,但核心点是:不着急、不贪心、多方验证。
“官方”网络钓鱼
坏演员善于利用角色扮演,尤其是官方角色。比如我们之前提到过假客服的方法。除此之外,2022年4月,知名硬件钱包Trezor的许多用户收到了来自trezor.us的钓鱼邮件,该邮件并非Trezor官方域名trezor.io。域名后缀略有不同。此外,以下域名也通过网络钓鱼电子邮件传播。
这个域名有一个“亮点”,仔细观察其中的字母ẹ,你会发现它不是字母e。令人困惑?它实际上是Punycode,标准描述如下:
应用程序国际化域名的 Unicode 引导字符串编码 (IDNA) 是一种国际化域名编码,表示 Unicode 和 ASCII 代码中的有限字符集。
如果有人解码trẹzor,它看起来像这样:xn-trzor-o51b,这才是真正的域名!
多年来,黑客一直在使用 Punycode 进行网络钓鱼,早在 2018 年,一些币安用户就受到了同样的伎俩的危害。
这类钓鱼网站已经能让很多人沦陷,更不用说那些更高级的攻击,比如官方邮箱被控制,或者SPF配置问题导致的邮件伪造攻击。结果,这封邮件的来源看起来和官方的一模一样。
如果是内部流氓,用户就无能为力。项目团队应该投入大量精力来防止内部威胁。内部人员是最大的特洛伊木马,但他们经常被忽视。
Web3 隐私问题
随着Web3的日益普及,越来越多有趣或无聊的项目出现:像各种Web3基础设施、社交平台等。其中一些项目做了海量数据分析,识别出目标的各种行为画像,而不仅仅是在区块链上方面,而且也在著名的 Web2 平台上。肖像一旦出来,目标基本上就是一个透明人。而Web3社交平台的出现也可能会加剧这样的隐私问题。
想一想,当你玩弄这些Web3相关的东西,比如签名绑定、链上交互等等,你是不是泄露了更多的隐私?许多人可能不同意,但随着许多部分整合在一起,将会有一个更准确和更全面的画面:您喜欢收集哪些 NFT、您加入了哪些社区、您在哪些白名单上、您与谁有联系、哪些 Web2 帐户您有义务、您活跃的时间段等等。你看,区块链有时会让隐私变得更糟。如果您关心隐私,则必须小心所有新出现的事物,并保持隔离身份的好习惯。
此时,如果私钥不小心被盗,损失的不仅仅是金钱那么简单,而是所有精心维护的Web3权益。我们常说私钥就是身份,现在你遇到了真正的身份问题。
永远不要考验人性。
区块链恶作剧
区块链技术创造了一个全新的行业。无论你称之为BlockFi、DeFi、加密货币、虚拟货币、数字货币、Web3等等,一切的核心仍然是区块链。大多数炒作都集中在金融活动上,例如加密资产,包括不可替代的代币(或 NFT,数字收藏品)。
区块链行业充满活力且令人着迷,但作恶的方式实在太多。区块链的特殊性导致了一些相当独特的罪恶,包括但不限于加密货币盗窃、加密货币劫持、勒索软件、暗网交易、C2攻击、洗钱、庞氏骗局、赌博等。我早在2019年就做了一张思维导图以供参考。
https://github.com/slowmist/Knowledge-Base/blob/master/mindmaps/evil_blockchain.png
与此同时,慢雾团队一直在维护和更新慢雾黑客——一个不断增长的区块链相关黑客活动数据库。
本手册介绍了许多安全措施,如果您能够将它们应用到您自己的安全中,那么恭喜您。我不会过多阐述区块链的恶作剧。如果你有兴趣,你可以自学,这绝对是一件好事,特别是因为新的骗局和欺诈行为正在不断演变。你学得越多,你就能更好地保护自己,让这个行业变得更好。
当你被黑客攻击时该怎么办
最终被黑客攻击只是时间问题。那么该怎么办呢?我就直接切入主题吧。以下步骤不一定按顺序排列;有时你必须来来回回,但总体思路是这样的。
先止损
止损就是限制你的损失。它至少可以分为两个阶段。
- 立即行动阶段。立即行动!如果您看到黑客正在转移您的资产,请不要再想了。赶紧把剩余的资产转移到安全的地方吧。如果您有抢先交易的经验,那就抓住并跑吧。根据资产类型,如果可以冻结区块链上的资产,请尽快执行;如果你能做链上分析,发现你的资产被转移到中心化交易所了,你可以联系他们的风控部门。
- 行动后阶段。一旦局势稳定,您的重点应该是确保不会发生二次或三次攻击。
保护现场
当你发现事情不对劲时,保持冷静并深呼吸。一定要记得保护现场。以下是一些建议:
- 如果事故发生在连接互联网的计算机、服务器或其他设备上,请立即断开网络,并保持设备通电。有人可能会说,如果是破坏性病毒,本地系统文件就会被病毒破坏。他们是对的,但是只有当你的反应速度比病毒更快时,关闭才会有帮助......
- 除非您有能力自己处理此问题,否则等待安全专业人员介入分析始终是更好的选择。
这非常重要,因为我们已经遇到过很多次,当我们介入进行分析时,场景已经很混乱了。甚至在某些情况下,关键证据(例如日志、病毒文件)似乎已被清除。如果没有保存完好的犯罪现场,可能会对后续的分析和追踪造成极大的干扰。
根本原因分析
分析原因的目的是了解对手,输出黑客画像。此时,事件报告就非常重要,也称为事后报告。事故报告和验尸报告指的是同一件事。
我们遇到过很多人在硬币被盗后向我们寻求帮助,其中许多人很难清楚地讲述发生了什么。他们更难制作一份清晰的事件报告。但我认为这是可以练习的,并且参考例子会很有帮助。以下可能是一个很好的起点:
- 摘要1:谁参与了,这件事是什么时候发生的,发生了什么,总共损失了多少?
- 总结2:与损失相关的钱包地址、黑客的钱包地址、币种、币量。只需一张表的帮助就可以更清楚。
- 流程描述:这部分是最难的。你需要描述事件的各个方面和所有细节,这有助于分析与黑客相关的各种痕迹,并最终从中得到黑客画像(包括动机)
当涉及到特定情况时,模板会复杂得多。有时人类的记忆也可能不可靠,甚至故意隐藏关键信息,从而导致时间的浪费或时间的延迟。所以在实践中会有很大的消耗,我们需要用我们的经验来指导好工作。最后,我们与丢失代币的个人或团队一起制作一份事件报告,并继续更新该事件报告。
溯源
根据罗卡定律,哪里有入侵,哪里就有踪迹。如果我们足够努力地调查,我们总会找到一些线索。调查的过程实际上就是取证分析和溯源。我们会根据取证分析得到的黑客画像进行溯源,并不断丰富,这是一个动态的、迭代的过程。
溯源主要包括两个部分:
- 链上智能。我们分析钱包地址的资产活动,例如进入中心化交易所、混币器等,对其进行监控并获取新转账的警报。
- 链下情报:这部分涵盖了黑客的IP、设备信息、电子邮件地址以及来自这些关联点的关联的更多信息,包括行为信息。
基于这些信息有大量的溯源工作,甚至需要执法部门的参与。
案件结案
当然,我们都希望有一个圆满的结局,以下是我们参与的公开披露的一些取得良好成果的事件的例子:
- Lendf.Me,价值$25百万
- SIL Finance,价值$1215万
- 保利网络,价值$6.1亿
我们经历过许多其他未发表的案例,但都取得了良好或良好的结果。然而大多数的结局都是不好的,这是相当不幸的。我们在这些过程中获得了很多宝贵的经验,希望未来能提高好结局的比例。
这部分内容上面已经简单提到了。与这个领域相关的知识非常多,而我对其中的一些还不是很熟悉。因此,我不打算在这里给出详细的解释。根据场景的不同,我们需要掌握的能力有:
- 智能合约安全分析与取证
- 链上资金转移的分析和取证
- 网络安全分析和取证
- Linux 服务器安全分析与取证
- Windows 安全分析和取证
- macOS 安全分析和取证
- 移动安全分析和取证
- 恶意代码分析和取证
- 网络设备或平台的安全分析和取证
- 内部安全分析和取证
- …
它几乎涵盖了安全的各个方面,本手册也是如此。但是,这些安全点仅作为介绍性指南在此处简要提及。
误解
从一开始,本手册就告诉您要保持怀疑!这包括这里提到的所有内容。这是一个极其充满活力和前景的行业,同时也充满了各种陷阱和混乱。下面我们就来看看一些误区,如果想当然地认为这些误区是真理,很容易让你掉入陷阱,成为混乱本身的一部分。
代码即法律
代码就是法律。然而,当一个项目(尤其是与智能合约相关的项目)遭到黑客攻击或遭到破坏时,没有一个受害者会希望“代码就是法律”,事实证明他们仍然需要依赖现实世界中的法律。
不是你的钥匙,不是你的硬币
如果你不拥有你的钥匙,你就不拥有你的硬币。事实上,很多用户未能妥善管理自己的私钥。由于各种安全不当行为,他们甚至失去了加密资产。有时您会发现将您的加密资产放在大型且信誉良好的平台上实际上更安全。
我们信任区块链
我们信任它,因为它是区块链。事实上,区块链本身确实有能力解决许多基本的信任问题,因为它具有防篡改、抗审查等特点;如果我的资产和相关活动都在链上,我可以默认相信没有人能够在未经授权的情况下拿走我的资产或篡改我的活动。然而现实往往是残酷的,首先并不是每个区块链都能做到这些基本点,其次人性总是成为最薄弱的环节。如今的许多黑客技术超出了我们大多数人的想象。虽然我们总是说攻击和防御是成本和影响之间的平衡,但当你没有大量资产时,没有黑客会浪费时间来瞄准你。但当像你这样的目标有多个时,黑客发起攻击就会非常有利可图。
我的安全建议很简单:默认不信任(即默认质疑一切),并进行持续验证。验证是这里的关键安全操作,持续验证基本上意味着安全永远不会处于静态状态,现在安全并不意味着明天安全。正确验证的能力是我们所有人面临的最大挑战,但这很有趣,因为您将在这个过程中掌握很多知识。当你足够强大的时候,没有人可以轻易伤害你。
密码安全就是安全
密码学非常强大且重要。没有密码学家的辛勤工作,没有可靠的密码算法和工程实现,就不会有现代通信技术、互联网或区块链技术。然而,有些人认为密码安全是绝对安全的。于是一系列奇怪的问题就出现了:
区块链不是非常安全,以至于需要数万亿年才能破解私钥吗? FBI为何能解密暗网比特币?周杰伦的NFT到底为何会被盗?
我可以忍受这些新手问题……我不能忍受的是,许多所谓的安全专业人士使用密码安全概念来愚弄公众,他们提到诸如军用级加密、世界上最好的加密、宇宙级加密等术语。级加密、绝对的系统安全、不可破解等
黑客?他们才不在乎……
被黑客攻击很丢人吗?
确实,被黑客攻击会带来复杂的感觉,有时还会有一种羞耻感。但你需要明白,被黑客攻击几乎是 100% 的保证,所以没有什么可羞耻的。
一旦被黑了,只要你自己负责也没关系。但是,如果您要对许多其他人负责,那么在处理事件时就必须保持透明和公开。
尽管人们可能会质疑甚至指责你自己进行黑客攻击,但透明和开放的更新过程总会带来好运和理解。
可以这样想:如果您的项目不知名,就没有人会攻击您。耻辱不是被黑客入侵,而是被黑客攻击。耻辱是你的傲慢。
从概率的角度来看,被黑客攻击是一种常见现象,通常情况下,大多数安全问题都只是小问题,这可以帮助您的项目成长。但严重的大问题还是要尽量避免。
立即更新
本手册多次建议注意更新。如果有可用的安全更新,请立即应用。现在仔细想想,这是灵丹妙药吗?
事实上,在大多数情况下,“立即更新”才是正确的做法。然而,历史上曾有过这样的情况:更新解决了一个问题,但却引入了另一个问题。 iPhone 和 Google Authenticator 就是一个例子:
新的iOS 15更新存在一个风险,即iPhone升级后Google Authenticator中的信息可能会被擦除或翻倍。在这种情况下,如果您发现重复的条目重复了,千万不要删除它们,因为这可能会导致重新打开后谷歌身份验证器中的所有信息丢失。
对于尚未升级到iOS 15系统且正在使用谷歌身份验证器的用户,强烈建议在升级前进行备份。
后来,谷歌更新了Authenticator应用程序,永久解决了这个问题。
此外,我不建议频繁更新钱包,尤其是对于重资产的钱包,除非有重大安全补丁,或者非常重要的功能导致不可避免的更新。在这种情况下,您必须自行进行风险评估并做出决定。
结论
回想一下,本手册就是从这张图开始的:)
大家注意到了吗,我把图中的人用红色标出了,我这样做是为了再次提醒大家,人是万物之本(宇宙学中称为“人择原理”)。无论是人性安全,还是掌握安全技能的能力,都取决于你。是的,当你足够强大的时候,没有人可以轻易伤害你。
我根据图开始展开,讲解了创建钱包、备份钱包、使用钱包这三个过程中的很多安全要点。然后我介绍了传统的隐私保护。我说过,这些传统的方法是我们在区块链生态系统中保持安全的基石和构建模块。人性安全部分不能过分修饰。多了解一下各种各样的作恶方式是有好处的,尤其是如果你踩过几个坑,纸上的安全意识最终可能会成为你的安全体验。没有绝对的安全,所以我解释了当你被黑客攻击时该怎么做。我不希望不幸的事件发生在您身上,但万一发生了,我希望这本手册能够对您有所帮助。最后说一下一些误区。我的意图很简单,希望你能建立起自己的批判性思维,因为世界既美丽又可怕。
好久没有写这么多字了。我想上一次是10年前我写这本书的时候了“Web黑客技术揭秘”。真是苦乐参半。在网络安全和网络安全领域工作多年后,我带领一个团队创建了 ZoomEye,一个网络空间搜索引擎。在网络安全领域,我涉足过很多领域,但我只能说我擅长其中的几个领域。
现在在区块链安全领域,我和慢雾被认为是先驱者。这些年我们遇到的案例太多了,你几乎可以认为我们每天都处于恍惚状态。遗憾的是,很多感悟没有被记录和分享。于是,在几位朋友的敦促下,这本手册诞生了。
当你读完本手册后,一定要练习、熟练、举一反三。当你以后有自己的发现或者经验的时候,希望你贡献一下。如果您认为存在敏感信息,您可以将其屏蔽或匿名化。
最后,得益于全球安全和隐私相关立法和执法的成熟;感谢所有先驱密码学家、工程师、道德黑客以及所有参与创造更美好世界的人们的努力,其中包括中本聪。
附录
安全规则和原则
本手册中提到的安全规则和原则总结如下。上面的文字中已经包含了相当多的规则,这里不再具体细化。
两大安全规则:
- 零信任。简单来说,保持怀疑,并始终保持如此。
- 持续验证。为了相信某件事,你必须验证你怀疑的东西,并让验证成为一种习惯。
安全原则:
- 对于所有来自互联网的知识,请至少参考两个来源,相互印证,并始终保持怀疑态度。
- 分离。不要把所有的鸡蛋放在一个篮子里。
- 对于拥有重要资产的钱包,不要进行不必要的更新。
- 你所看到的就是你所签署的。您需要了解您正在签署的内容,以及发送签名交易后的预期结果。不要做事后让自己后悔的事情。
- 注意系统安全更新。一旦可用就立即应用它们。
- 不要鲁莽地下载和安装程序实际上可以预防大多数风险。
贡献者
感谢贡献者,此列表将不断更新,如果您对本手册有任何想法,请与我联系。
因为,推特(@evilcos)、即刻(@余弦.jpg)
贡献者
我的妻子 SlowMist,Twitter (@SlowMist_Team),例如 Pds、Johan、Kong、Kirk、Thinking、Blue、Lisa、Keywolf...Jike app 一些匿名朋友...更多:https://darkhandbook.io/contributors.html
如果您的贡献被接受并纳入本手册,您将被添加到贡献者列表中。
例如:提供具体的安全防御建议或案例;参与翻译工作;纠正较大的错误等
官方网站
SlowMist https://www.slowmist.com CoinMarketCap https://coinmarketcap.com/ Sparrow 钱包 https://sparrowwallet.com/ MetaMask https://metamask.io/ imToken https://token.im/ Trust 钱包 https ://trustwallet.com/ Gnosis Safe https://gnosis-safe.io/ ZenGo https://zengo.com/ Fireblocks https://www.fireblocks.com/ Safeheron https://www.safeheron.com/ Keystone https://keyst.one/ Trezor https://trezor.io/ Rabby https://rabby.io/ EdgeWallet https://edge.app/ MyEtherWallet https://www.myetherwallet.com/ Phantom https: //phantom.app/ 龙卷风现金 https://tornado.cash/ 币安 https://www.binance.com/ Coinbase https://coinbase.com 复合 https://compound.finance/ SushiSwap https://www .sushi.com/ OpenSea https://opensea.io/ Revoke.cash https://revoke.cash/ APPROVED.zone https://approved.zone/ 即刻 https://okjike.com/ 卡巴斯基 https:// www.kaspersky.com.cn/ Bitdefender https://www.bitdefender.com/ Cloudflare https://www.cloudflare.com/ Akamai https://www.akamai.com/ 监控自卫 https://ssd .eff.org/ 隐私指南 https://www.privacytools.io/ OpenPGP https://www.openpgp.org/ GPG https://gnupg.org/ GPG 套件 https://gpgtools.org/ Gpg4win https: //www.gpg4win.org/ 1Password https://1password.com/ Bitwarden https://bitwarden.com/ Google 身份验证器 https://support.google.com/accounts/answer/1066447 Microsoft 身份验证器 https://www .microsoft.com/en-us/security/mobile-authenticator-app ProtonMail https://protonmail.com/ Tutanota https://tutanota.com/ VMware Workstation https://www.vmware.com/products/workstation- pro.html Parallels https://www.parallels.com/