加密货币:A16z:“是你的密钥也不一定是你的币”澄清关于非托管钱包的谬误_ECD

“不是你的密钥,不是你的加密货币”,这句话在加密圈很流行,它传达了纯粹主义者的加密密钥管理哲学。在这种钱包安全模型中,只有个人可以直接和唯一地控制他们自己的私钥——因此,他们拥有其加密资产的真正所有权。坚持这种强硬方法的加密钱包被称为“非托管”钱包,这意味着没有外部力量可以访问获取这些密钥。

然而,情况并非如此简单。一些备受瞩目的“非托管”钱包黑客攻击事件——包括今年8月份入侵8,000多个账户的Slope钱包黑客攻击、2020年损失价值超过200万美元的IOTA代币的Trinity钱包黑客攻击、导致攻击者在2017年窃取150,000ETH的Parity钱包黑客攻击,以及发现各种硬件钱包漏洞和其他事件——破坏了托管钱包和非托管钱包之间的传统区别。在其中许多案例中,认为自己使用的是非托管钱包的受害者发现攻击者能够劫持他们的钥匙。这就有点矛盾了,不是吗?

事实上,这里面的故事比一句流行语所能捕捉到的要复杂得多。非托管钱包并没有真正让用户完全控制他们的密钥。这是因为这些钱包通常是由其他人的软件或硬件创建和操作的。用户不断地信任其他人、产品和计算机程序。他们接受使用区块链命令行界面、钱包软件和设备、中心化平台、智能合约代码、去中心化应用程序以及介于这些东西之间的所有各种钱包连接集成。每个接触点都会增加风险;所有这些互锁部分的总和打破了非托管钱包的幻想。

实际上,托管权是非二元的。乍一看似乎是非托管的,实际上里面可能涉及许多托管要素,人们通常把这些要素的可靠性视为理所当然。传统的二分法——托管与非托管——是错误的。

相反,最好更加细微地看待钱包。关键问题是:我愿意接受多大的攻击面,以及我愿意承担多少责任来消除对第三方的信任?一般来说,密钥管理——钱包安全的基础——可以分为三个区域,每个区域都有独特的曝光机会。子类别如下:

密钥生成

密钥存储

密钥使用

本概述旨在帮助Web3用户更好地了解通过上述标准保护其资产所涉及的复杂性。此外,我们的目标是帮助工程师识别和支持钱包开发中的常见故障点。我们希望通过应用本指南——源自我们在Docker、Anchorage、Facebook和a16z加密领域构建加密和安全系统的多年综合经验——将帮助人们避免安全事故,无论他们是在与之交互、参与还是构建Web3技术的过程中。

下面,我们将介绍当今存在的加密钱包安全和托管平台的常见特征和缺陷。我们还涵盖了我们认为在未来几个月和几年内最需要关注和发展的领域,以提高用户Web3体验的安全性。

密钥生成:钱包安全性

任何关于钱包安全性的讨论都必须从密钥生成开始,即创建加密密钥的过程。无论钱包被认为是托管的还是非托管的,密钥生成步骤的安全属性对于此后的密钥安全至关重要。在密钥生成过程中,需要牢记三个首要问题:使用可靠的代码、正确实现代码以及安全地处理输出。

如果您不是加密专家,则可能很难验证本书是否完成了以下所有因素。检查您是否可以获得受信任的审计报告,一些钱包提供商会在其官方网站或Github存储库上发布该报告。此外,自己进行研究,以确定钱包背后是否有一家信誉良好的公司。如果背景信息稀少,重要的用户和开发人员活动可能是衡量该钱包声誉的下一个指标。

请遵循这些准则以减少您的风险敞口。如果钱包未通过以下检查,请逃离这个钱包。

使用不是自己推出密码的钱包

密码学家有一句话:“不要推出自己的加密。”这个要点类似于“不要重新发明轮子”的格言。车轮完好无损,任何从头开始重建车轮的尝试都可能导致产品质量更差。加密也是如此,这是一门很难完全正确的科学。组成钱包的代码应该以运行良好而闻名。选择写得不好的软件——或试图从头开发自己的替代软件——可能会导致诸如密钥泄露或向未经授权的各方泄露秘密信息等事故。这就是Profanity的虚荣地址工具中最近被利用的漏洞背后的原因。首先,应该清楚有问题的钱包使用了经过审核且信誉良好的密钥生成库和流程。

使用再三测量的钱包

即使代码使用有信誉的密码库,它仍然必须正确集成。经过审查的软件通常会默认设置正确的参数,但在执行过程中可能存在差距。例如,需要强大的熵源或数学随机性剂量来使要生成的密钥不可预测,因此更安全。对于某些密钥生成过程,例如对于许多多方计算(MPC)算法,其中必须生成和协调许多单独的密钥,钱包应该遵循算法指定的精确协议。该算法可能还需要多轮计算以及刷新密钥,钱包必须正确集成以维护资金的安全性。

使用可以保守秘密的钱包

密钥生成过程的最后阶段涉及软件的实际操作和输出。请注意密钥的生成位置和形式。

理想情况下,密钥应该在独立的硬件中生成,并且信息应该使用有信誉的算法加密。一个需要避免的例子是数据加密标准,或DES,今天被认为是糟糕的。以明文形式留下的密钥——尤其是在内存中、磁盘上或位于被称为“交换”的这两个地方之间的中间区域——是一个主要的安全风险。一般来说,密钥材料不应离开生成它的硬件,也不应放到其他人可以访问的网络上。

今年夏天被黑的钱包Slope的密钥在生成后以明文形式登录到外部服务器。这种安全漏洞可能会出现在代码的审计或开源实现中。对缺乏透明度的钱包——以封闭源代码为特色,没有对公众可用的第三方安全审计——应该发出危险信号。

密钥用途:钱包安全

生成和存储密钥后,它们可用于创建授权交易的数字签名。组合中的软件和硬件组件越多,风险就越大。为降低风险,钱包应遵守以下授权和身份验证指南。

信任,但也要验证

钱包应该需要身份验证。换句话说,他们应该验证用户是他们所说的人,并且只有授权方才能访问钱包的内容。这里最常见的保护措施是PIN码或密码。与往常一样,这些应该足够长和复杂——使用许多不同类型的字符——才能最大限度地发挥作用。更高级的身份验证形式可以包括生物识别或基于公钥加密的批准,例如来自多个其他安全设备的加密签名。

不要自己制作密码库

钱包应该使用完善的密码库。做一些研究以确保它们经过审计和安全,以避免密钥材料泄漏或私钥完全丢失。使问题复杂化的是,即使是受信任的库也可能具有不安全的接口,就像最近这些Ed25519库的情况一样。当心!

随机数重用

一个经过充分研究的密钥使用陷阱是某些加密签名参数的无意重用。一些签名方案可能需要一个nonce含义,“使用一次的数字”,一个仅意味着在系统中使用一次的任意数字。椭圆曲线数字签名算法(ECDSA)就是这样一种签名方案。如果使用ECDSA重用nonce,则可能导致密钥泄露。其他各种算法不受影响,因此,像往常一样,确保使用完善的密码库。但这种攻击向量之前已经在web3之外的高调黑客攻击中被利用,例如2010年索尼PlayStation3黑客攻击。

一个密钥只用于一个目的

另一个最佳实践是避免将密钥重复用于多个目的。例如,应为加密和签名保留单独的密钥。这遵循了在被攻破情况下的“最小特权”原则,这意味着对任何资产、信息或操作的访问应仅限于系统工作绝对需要它的各方或代码。如果实施得当,“最小特权”原则可以极大地限制成功攻击的“爆炸半径”。不同的密钥将根据其用途对备份和访问管理有不同的要求。在web3的背景下,最好的做法是在资产和钱包之间分离密钥和助记词,因此一个账户的泄露不会影响其他账户。

结论

密钥所有权的托管或非托管性质并不像传统思维所认为的那样非黑即白。密钥管理中涉及的许多活动部分使情况变得复杂——从密钥生成到存储再到使用。区块链涉及的每一个硬件或软件都会带来风险,即使是所谓的非托管钱包选项也会面临托管类型的风险。

对于未来,我们预计将进行更多的开发工作,以保护钱包免受攻击并减轻上述风险。改进领域包括:

跨移动和桌面操作系统共享安全开源密钥管理和事务签名库

共享的开源交易审批框架

具体来说,我们会特别兴奋地看到共享和开源的发展:

密钥生成库可在不同的存储后端实现一流的安全性

用于移动和桌面操作系统的密钥管理和事务签名库

交易批准流程框架,实施强大的因子验证,例如生物识别、基于PKI的批准、授权恢复等。

上面的列表并不详尽,但它是一个很好的起点。这就是说,情况比“不是你的密钥,不是你的加密货币”的口号所暗示的要复杂得多。考虑到从生成和存储到使用的许多交互部分和阶段,密钥拥有权是一件棘手的事情。

希望这篇文章对大家有一定的帮助。

对本文感兴趣的可以私我哦~欢迎志同道合的币圈人一起探讨~

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:0ms0-3:166ms