钱包安全:“非托管”谬误柏拉图区块链数据智能。垂直搜索。人工智能。

钱包安全:“非托管”谬误

常用的表达“不是你的密钥,不是你的密码”传达了纯粹主义者的密码密钥管理哲学。 在这种钱包安全模型中,只有个人(或通过“多重签名”的团体)可以直接和唯一地控制他们自己的私钥——因此,他们拥有其加密资产的真正所有权。 坚持这种强硬方法的加密钱包被称为“非托管”,这意味着没有外部各方可以访问密钥。

除了,没那么快。 情况没那么简单。 一些备受瞩目的“非托管”钱包黑客——包括 斜坡钱包黑客 8,000 月,该公司的 XNUMX 多个账户遭到入侵, 三位一体钱包黑客 在 2 年损失了价值超过 2020 万美元的 IOTA 代币, 平价钱包黑客 这使得攻击者在 150,000 年窃取了 2017 ETH,并发现了各种 硬件钱包漏洞和其他事件——破坏了托管钱包和非托管钱包之间的传统区别。 在其中许多案例中,认为自己使用的是非托管钱包的受害者发现攻击者能够劫持他们梦寐以求的钥匙。 矛盾,不是吗?

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

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

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

  1. 密钥生成 (创建加密密钥)
  2. 密钥存储 (在静止时固定密钥)
  3. 密钥用法 (让钥匙工作)

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

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

密钥生成钱包安全

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

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

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

  • 使用不使用自己的加密货币的钱包

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

  • 使用两次测量并一次又一次切割的钱包

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

  • 使用可以保守秘密的钱包

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

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

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

密钥存储钱包安全

生成密钥后, 它们需要被存放在某个地方——从不以明文形式,总是加密。 但仅仅是 拥有存储密钥的设备并不一定等同于密钥所有权和控制权。 必须考虑许多因素,例如设备的供应链安全性、设备的连接方式以及设备与哪些其他组件交互。 此外,每种存储方法在安全性、可访问性、可维护性和可用性之间都有自己的权衡取舍。

下面,我们根据相关的感知风险水平对最常见的类别进行细分。 

更高的风险:“热”钱包

这个概念实际上与温度没有太大关系。 当谈到密钥存储选项时,如果钱包连接到互联网,它就会被认为是“热的”。 另一方面,如果钱包处于离线状态且被隔离,则它被认为是“冷钱包”。 在其他条件相同的情况下,冷钱包比热钱包更安全——但它们也更难访问和使用。 连接到任何网络的钱包更容易受到黑客攻击,因为它让攻击者有更多机会发现和利用漏洞。

热钱包可以采取几种形式。

  • 连接的软件:在线数据库、电话或网络服务器应用程序内存、浏览器扩展

这些是风险最大的选择。 在这里,无论是否托管,钱包软件都可以直接访问密钥——同时连接到外部互联网。 理想情况下,密钥应加密,用于加密的另一组密钥应存储在具有高度受限访问控制的专用密钥管理系统 (KMS) 中,例如操作系统密钥链或云密钥管理系统。

对于基于软件的热钱包,将密钥管理和授权与其他软件组件隔离开来是至关重要的。 日志记录、错误管理和内存管理(尤其是基于堆的,其中密钥可能未正确“归零”或擦除)可能会出现问题,所有这些都可能错误地泄露密码、加密密钥、签名密钥或其他敏感信息加密材料。 发生这种情况时,入侵者可以通过连接的应用程序或 Web 服务器、旁道攻击或内部威胁获得未经授权的访问。

无论服务如何标记自己,如果在线系统内存中的签名密钥随时未加密,则该模型应被视为热软件钱包。 (即使密钥后来被静态存储在安全飞地中。)

  • 连接硬件:专用设备、移动安全飞地、在线硬件安全模块 (HSM)

连接的硬件通常被认为比连接的软件风险小,但它仍然不如冷存储安全。 在连接的硬件中,密钥仅在专用硬件设备中生成并存在。 然后这些可以连接到内部或公共网络。 此类设备通常承担与密钥管理相关的多项职责,包括密钥生成、签名和存储的安全性。

连接的硬件有多种。 有一些硬件钱包,例如 Trezor 和 Ledger 设备,稍微复杂的加密用户通常会使用它们。 (应该有更多的人使用这些设备,因为它们比单独使用连接软件要安全得多。)还有硬件安全模块或 HSM,通常用于更传统的业务环境,例如处理敏感数据处理的业务环境,例如信用卡付款。

设备的安全性取决于生产和配置它们的供应链。 在考虑连接的硬件时,问问自己:设备或固件在进入您之前被篡改的可能性有多大? 为了降低这种风险,最好直接从受信任的供应商处购买设备。 让它们直接从源头发货。 确保包裹看起来没有受损——没有撕裂、撕裂、破损的密封等——这可能表明在运输过程中被篡改。 还建议在使用前验证固件版本和配置。 执行此操作的步骤因硬件而异,但都应提供说明。

当然,硬件钱包以后总是有可能被未经授权的一方窃取或访问。 鉴于这些威胁,确保硬件钱包也具有安全的访问控制层非常重要——确保它们不会盲目地签署任何和所有交易。 控制可以包括密码要求、要求对交易的每一步明确许可的提示,以及描述交易实际执行情况的简明英文摘要。 此外,大多数硬件钱包都支持私钥加密,也称为“密钥包装”。 更好的是,安全钱包不允许以原始明文形式导出密钥,即使有人希望它们如此。

这是真正保护加密资产所需的安全级别。

风险较小:“冷”钱包

热量少,风险低。 在其他条件相同的情况下,冷钱包通常被认为比热钱包更安全,尽管它们通常也不太可用。 冷钱包通常被称为“气隙”钱包,这意味着它们与任何内部或公共网络无关。

在这种情况下,孤独是一种美德。 气隙涉及实施严格的物理隔离和授权措施。 这些措施可以包括使用法拉第笼(屏蔽无线信号)、生物识别访问(如指纹或虹膜扫描仪)、运动传感器(在未经授权的情况下触发警报)和 SCIF,或敏感隔间信息设施(特殊处理机密信息的区域)。

让我们更详细地回顾一些冷钱包选项。

  • Airgrapped 软件:离线服务器应用程序

因为攻击者可以随时窃取或使机器上线,所以冷钱包应设计有安全系统,即使它们上线也能正常运行。 应通过标准方法(例如 Shamir 的秘密共享或多方计算)将密钥拆分为密钥碎片 - 要求重新连接碎片以使其可用。 与连接的软件相比,强烈建议使用专用硬件(例如 HSM),因为它们通常提供更多控制。

  • Airgrapped硬件:离线硬件钱包,离线硬件安全模块(HSM)

该解决方案被认为是最安全的。 与前一类类似,人们应该假设硬件可以被盗并在线获取。 出于这个原因,这些系统再次重要的是要包括正确实施的访问控制层,如前所述。 许多 HSM 供应商需要将一定数量的物理智能卡放在一起,然后才能解锁对密钥的访问。 即使设备没有显示屏,它也应该为用户提供一些验证交易细节的方法。

因为冷钱包或气隙钱包是最安全的类别,所以大玩家管理的大多数资金都是以这种方式存储的。 主要零售服务,如 Coinbase、Gemini、Kraken 等,以及为机构用户提供的服务,如 Anchorage,都在这样做的范围内。 这些玩家中的许多人选择以备份和恢复的形式设置另一道防线,以防万一——天堂禁止——他们失去访问权限,或者机器被损坏、被盗或被破坏。

备份和恢复

签名密钥应始终在加密后备份。 具有加密签名密钥和密钥包装密钥的冗余至关重要。 备份签名密钥的方法不同,但应该始终首选硬件原生解决方案。

对于硬件钱包,备份通常涉及一个 12 字的明文种子短语,从中派生出私钥。 这个种子短语应该以非数字方式存储(想想纸、金属)并以最安全的方式存储(家里的物理保险库、银行保险库内)。 该短语可以分成地理分布的部分,以防止整个秘密被轻易泄露。 (人们有时通过引用虚构的魂器来解释这种方法,黑巫师有效地使用这些魂器来“备份”他们的灵魂 哈利·波特.)

许多 HSM 本身就可以处理与备份和恢复相关的一些挑战。 标准的具有可以导出默认情况下使用访问控制加密的密钥的机制。 如果满足访问控制,则可以将密钥导入其他 HSM。 有用的是,还可以为 HSM 队列提供公共加密密钥,该密钥源自智能卡的法定人数。 以这种方式将硬件与关键材料解耦有助于避免单点故障。

最后,人为因素需要解决。 恢复机制应该能够承受参与帐户管理操作的任何个人的临时或永久不可用。 个人应确保为近亲或其他受信任方提供在死亡或其他紧急情况下找回密钥的方法。 与此同时,团体运营应该定义一个法定人数——例如三分之二或五分之三——尽管有生活事件、旅行、疾病或事故,仍能合理运作。

密钥使用钱包安全

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

  • 信任但要验证

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

  • 不要推出自己的加密货币(再次!)

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

  • 随机数重用

一个经过充分研究的密钥使用陷阱是某些加密签名参数的无意重用。 一些签名方案可能需要 教廷大使 意思是“使用一次的数字”,一个任意数字,仅意味着在系统中使用一次。 椭圆曲线数字签名算法 (ECDSA) 就是这样一种签名方案。 如果使用 ECDSA 重用 nonce,则可能导致密钥泄露。 其他各种算法不受影响,因此,像往常一样,确保使用完善的密码库。 (某些加密库通过散列交易数据来确保唯一的随机数,其中包括其他唯一数据,例如帐户随机数。)但是这种攻击向量之前已经在 web3 之外的备受瞩目的黑客攻击中被利用,例如这个 2010 索尼 PlayStation 3 黑客.

  • 每个目的一键

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

结论

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

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

  • 跨移动和桌面操作系统共享安全开源密钥管理和事务签名库
  • 共享的开源交易审批框架

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

  • 密钥生成库可在不同的存储后端(在磁盘上加密、安全硬件等)实现一流的安全性
  • 用于移动和桌面操作系统的密钥管理和事务签名库
  • 交易批准流程框架,实施强大的因素验证,例如生物识别、基于 PKI 的批准、授权恢复等。

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

如果您已经在从事解决上述任何问题的项目,或者有兴趣这样做,请与我们联系! 我们期待在这些方面取得更多进展。

***

编辑:罗伯特·哈克特,@rhhackett

***

此处表达的观点是引用的个人 AH Capital Management, LLC (“a16z”) 人员的观点,而不是 a16z 或其关联公司的观点。 此处包含的某些信息是从第三方来源获得的,包括来自 a16z 管理的基金的投资组合公司。 虽然取自被认为可靠的来源,但 a16z 并未独立验证此类信息,也不就该信息的当前或持久准确性或其在特定情况下的适用性做出任何陈述。 此外,该内容可能包含第三方广告; a16z 未审查此类广告,也不认可其中包含的任何广告内容。 

此内容仅供参考,不应被视为法律、商业、投资或税务建议。 您应该就这些事项咨询您自己的顾问。 对任何证券或数字资产的引用仅用于说明目的,并不构成投资建议或提供投资咨询服务的要约。 此外,本内容并非针对也不打算供任何投资者或潜在投资者使用,并且在任何情况下都不得在决定投资于 a16z 管理的任何基金时作为依据。 (投资 a16z 基金的要约仅通过私募备忘录、认购协议和任何此类基金的其他相关文件提出,并应完整阅读。)任何提及、提及或提及的投资或投资组合公司所描述的并不代表对 a16z 管理的车辆的所有投资,并且不能保证这些投资将是有利可图的,或者将来进行的其他投资将具有类似的特征或结果。 由 Andreessen Horowitz 管理的基金进行的投资清单(不包括发行人未允许 a16z 公开披露的投资以及对公开交易的数字资产的未宣布投资)可在 https://a16z.com/investments 获得/。

其中提供的图表仅供参考,在做出任何投资决定时不应依赖。 过去的表现并不预示未来的结果。 内容仅在所示日期生效。 这些材料中表达的任何预测、估计、预测、目标、前景和/或意见如有更改,恕不另行通知,并且可能与他人表达的意见不同或相反。 有关其他重要信息,请参阅 https://a16z.com/disclosures。

时间戳记:

更多来自 安德森霍洛维茨