a16z:关于钱包安全的“非托管”谬误
市场中的投资者通常引用的那句话“不是你的私钥,就不是你的加密货币”传达了纯粹主义者的加密密钥管理哲学。在这种钱包的安全模式中,只有个人(或通过 “multisig”的团体)对自己的私钥有直接和唯一的控制权,因此,对他们的加密资产有真正的所有权。坚持这种强硬做法的加密货币钱包被称为 “非托管型”,这意味着没有任何外界人士能够接触到密钥。只是,没那么快。情况并不那么简单。一些高调的 “非托管”钱包黑客攻击——包括8月泄露8000多个账户的Slope钱包黑客攻击,2020年丢失的价值200多万美元IOTA代币的Trinity钱包黑客攻击,2017年允许攻击者窃取15万ETH的Parity钱包黑客攻击,加上发现的各种硬件钱包漏洞,以及其他事件,破坏了托管和非托管钱包之间的传统区别。在许多这样的案例中,认为自己在使用非托管钱包的受害者发现攻击者能够劫持他们梦寐以求的密钥。这不就矛盾了吗?事实上,这个故事比一个口号所能捕捉到的更复杂。非托管钱包并没有真正让用户完全控制他们的私钥。这是因为钱包通常是由其他人的软件或硬件创建和操作的。用户不断把他们的信任放在其他人、产品和计算机程序上。他们接受使用区块链命令行界面、钱包软件和设备、中心化平台、智能合约代码、去中心化应用程序,以及中间的各种钱包连接集成。每个接触点都会增加风险;所有这些环环相扣的部分的总和打破了非托管钱包的假象。保管权在现实中是非二元的。乍看之下可能是非托管的,实际上可能涉及许多托管要素,人们往往认为这些要素的可靠性是理所当然的。传统的二分法(监管与非监管)是一种错误的二分法。相反,最好是以更细微的差别来看待钱包。要问的关键问题是:我可以接受多大的攻击面,在寻求消除对第三方的信任方面,我愿意承担多少责任?一般来说,密钥管理(钱包安全的基础)可以分为三个领域,每个领域都有独特的暴露机会。这些子类别如下: 密钥生成(创建加密密钥) 秘钥存储(保证静态秘钥的安全) 秘钥使用(将秘钥用于工作) 这个概述是为了帮助Web3用户更好地理解通过上述红线来保护他们的资产所涉及的错综复杂的问题。此外,我们的目的是帮助工程师识别和修复钱包开发中经常出现的故障点。我们希望应用本指南(源自我们多年来在Docker、Anchorage、Facebook和a16z加密系统中构建加密货币和安全系统的综合经验)能够帮助投资者避免安全事故,无论他们是在与Web3技术互动、参与还是构建。 下面,我们将介绍目前存在的加密货币钱包安全和监管平台的共同特征和陷阱。我们还涵盖了我们认为在未来几个月和几年内需要最关注和发展的领域,以提高用户的Web3体验的安全性。 密钥生成钱包安全 任何关于钱包安全的讨论必须从密钥生成开始,即创建加密密钥的过程。无论钱包被认为是保管型的还是非保管型的,密钥生成步骤的安全属性对此后的密钥安全是最重要的。在密钥生成过程中,有三个首要问题需要牢记:使用可靠的代码,正确实现代码,以及安全处理输出。 如果你不是一个密码专家,可能很难验证以下所有因素都是按部就班进行的。检查一下你是否可以获得一份可信的审计报告,一些钱包供应商会在他们的官方网站或Github资源库中公布。取而代之的是,做你自己的研究,试图确定钱包背后是否有一个有信誉的公司。如果信息稀少,重要的用户和开发者活动可能是声誉的下一个指标。 遵循这些准则来减少你的风险暴露。如果一个钱包没有通过下面的检查,那就赶紧跑吧! 不要推出自己的加密货币钱包 密码学家们有一句话:“不要推出你自己的加密货币”。其要点类似于 “不要重新发明车轮 ”的格言。轮子现在已经很好了,任何试图从头开始重建的尝试都可能导致更糟糕的产品。密码学也是如此,这是一门很难完全正确的科学。组成钱包的代码应该有一个良好的工作声誉。选择写得不好的软件或试图从头开始开发自己的替代品可能会导致错误,如密钥泄漏或将秘密信息透露给未授权方。这就是最近Profanity的vanity地址工具中被利用的漏洞背后的原因。在做任何事情之前,应该明确有关的钱包使用的是经过审计的、有信誉的密钥生成库和程序。 使用两次测量并反复切割的钱包 即使代码使用了信誉良好的密码学库,仍然必须正确地进行整合。经过审查的软件通常会在默认情况下设置正确的参数,但在执行中可能会出现漏洞。例如,需要一个强大的熵源,或数学随机性的剂量,以使将要生成的密钥不可预测,因此,更安全。对于某些密钥生成过程,如许多多方计算(MPC)算法,其中必须生成和协调许多单独的密钥或碎片、密钥的片段,钱包应该遵循算法规定的精确协议。该算法可能还需要多轮计算以及刷新密钥,钱包必须适当地整合,以维护资金的安全。 使用一个可以保密的钱包 […]






