加密货币钱包简介及如何确保其安全

  • QuickNode
  • 发布于 2024-11-20 21:31
  • 阅读 40

本文详细介绍了加密货币钱包的类型、安全风险及威胁,并提供了保护钱包安全的最佳实践。文章还讨论了MPC与Multi-Sig技术的安全性对比,并强调了钱包设计中需要关注的安全措施。

在你开始本指南之前

本指南将为你提供关于加密钱包的深入概述,列出各种类型的加密钱包及其常见的安全风险和威胁。为了增加安全性,我们建议使用 MistTrack 的 地址风险评分附加组件。通过此附加组件,你可以轻松访问钱包地址标签和风险评分,利用 SlowMist 强大的反洗钱(AML)数据和安全专业知识。

尝试 MistTrack 的地址风险评分附加组件

概述

加密钱包的攻击面广泛,许多漏洞和潜在问题往往位于多个缺陷的交叉点,这些缺陷可能存在于设计、安全、密码学、访问、认证和存储等方面。钱包安全和保护私钥安全是任何加密应用/平台基础设施中最重要的部分。私钥的误管理可以比作将安全存款箱的钥匙交给恶意行为者。

虽然每个单独的漏洞可能不会造成问题,但结合起来时攻击面可能会增加。与银行及一些更中心化的加密公司不同,公共区块链没有反欺诈、客户支持或在资金被盗的情况下逆转交易的能力。

本指南将重点解释钱包安全的关键术语以及加密钱包对于终端用户和开发者的威胁和风险。

钱包安全关键术语与概念

钱包类型(热钱包 vs 冷钱包,托管钱包 vs 非托管钱包)

加密钱包用于签署交易和存储用于与区块链网络交互的私钥。钱包包含一个公钥(即钱包地址)和一个完成和签署交易所需的私钥。控制私钥意味着控制资产。

有多种类型的加密钱包供个人和组织使用。不同钱包类型的安全等级不同。根据你的资产存储需求,你可以使用一种或多种类型:

  • 托管钱包 - 第三方(如交易所或保管人)负责账户/钱包的私钥、资产以及整体安全和功能。

示例:Coinbase、BlockFi、Gemini

  • 非托管钱包 - 由用户(无论是终端用户还是机构用户)完全控制的钱包,使用户对钱包的安全性、私钥和存储在钱包中的资产负责。

示例:Fireblocks、DAO、Gnosis Safe

  • 热钱包 - 以某种方式连接到互联网(移动设备、网页)

*示例:Coinbase Wallet、Metamask、Phantom*

  • 冷钱包 - 离线,硬件或纸质,不以任何方式连接到互联网,通常是空气隔离的。

示例:Ledger、Trezor

  • 智能合约钱包 - 这些钱包通过智能合约代码访问和控制,支持两种类型;通过私钥或助记词访问的外部拥有账户,以及通过智能合约控制的合约账户。这些钱包更像传统金融应用,具有以下功能:多重签名授权、账户冻结、交易限额、双重身份验证、允许列表和保护者。

示例:Argent、Gnosis Safe

重要的是要注意,虽然交易所钱包被视为热钱包,但它们是托管的,完全由第三方控制,这意味着所有的密钥管理和钱包安全均由托管人处理。

钱包类型

助记词与私钥

助记词和私钥是任何钱包的关键组成部分,无论其由谁控制。助记词和私钥都是访问你的加密货币钱包和账户的密钥。这些是授权用户访问钱包的凭证。虽然相似,但助记词和私钥也有所不同,不能互换。

  • 私钥 - 这是你的访问密钥,转换成十六进制值。这是你访问给定基础资产地址(例如:比特币)的密钥。该地址是存储特定资产的账户。为了全面访问资产地址,你需要正确的私钥。

  • 助记词 - 于 2013 年产生,作为将访问密钥转换为单词的一种方式而被发明。助记词是你加密货币钱包的主访问密钥。助记词也作为你钱包的备份。助记词同时代表访问密钥和如何以及设置哪些账户的指令。

你的助记词和私钥应始终备份并离线存储。数字副本容易受到广泛的数字威胁,这些备份应是非数字的副本,例如用纸和笔记录,或者使用加密钢板。加密钢板是你可以用来存储助记词的不锈钢装置,是纸钱包的金属版本。这些简单的金属板是防水、防篡改和防火的。加密钢板有多种不同的变种和品牌,然而从根本上来说,它们都实现了安全离线存储私钥和助记词的目标。

多方计算与多重签名

数字签名方案是钱包安全的重要组成部分。数字签名是区块链技术的基本组成部分,其主要用途是验证交易。大多数加密钱包使用多方计算(MPC)或多重签名(Multi-Sig)作为数字签名方案。MPC与Multi-Sig之间的争论由来已久,关于哪一个更安全。实际上,二者各有权衡,而整体安全性取决于设计和实施。

  • MPC - 利用多方计算确保没有单点故障,并且从不将单个私钥完全汇集在一起进行创建或签名。私钥从未集中在任何单个设备上,而是分成多个部分进行加密和分割。这是通过随机化各个秘密实现的。始终存在超过 3 个终端在服务器或移动设备上,这些秘密永远不会共享。终端参与去中心化的钱包创建协议,计算与一组个体私钥份额(3)的公共密钥。每当请求交易签名时,法定人数(终端数量通常为3或更多)参与谈判签名过程,其中每个终端均验证交易和政策,然后对交易进行签名。

  • Multi-Sig - Multi-Sig 在访问资金的单个密钥上增加了额外的安全层,这是相较于仅拥有一个访问资金的私钥的历史性改进。Multi-Sig 使两个或更多人或设备能够作为一个群体签署交易。与 MPC 类似,Multi-Sig 消除了单点故障,但 Multi-Sig 的问题出在互操作性和协议无关性。并不是所有加密货币或 DAO 都支持 Multi-Sig,因为每个协议都要求钱包提供商实现不同的代码。创建新钱包需要修改法定人数和更新任何密钥。这在 BTC 作为唯一货币时代建立时,就给不同协议层面带来了各种挑战。由于 Multi-Sig 一些限制,安全支持新资产的难度较大,并且在不同链上管理多个实现的过程可能难以掌控。

钱包生态

钱包漏洞与威胁

漏洞和威胁可能特定于加密钱包以及用于托管钱包的设备或操作系统。真正的钱包安全依赖于钱包与所用设备或平台之间的安全性结合和整合。

  • 移动应用钱包 - 保存于移动设备上的钱包容易受到移动漏洞的影响。许多应用程序,包括加密钱包应用,无法检测设备是否受信任、是否已越狱、是否存在恶意软件或有害工具。如果钱包应用不要求设备级别的密码,攻击者很容易解锁设备,甚至访问钥匙串和密钥存储。

  • 基于网络/浏览器的钱包 - 基于网络/浏览器的钱包面临无限的恶意软件可能性。浏览器通常是 exploits 和 0days 的目标,这可能授权攻击者获得内存访问权。常见的还包括钓鱼尝试,插入恶意版本的敏感交易界面,如“导入账户”或“发送交易”。用攻击者的钱包地址替换剪贴板的内容也是一种常见攻击。

  • 交易所/托管钱包 - 由于其托管性质,并且完全由第三方控制,这些钱包面临更广泛的威胁。例如,控制你资金的整个实体需要部署企业级安全、密钥管理、应用安全、数据安全等以保护你的资金和信息。用户信任一个组织来管理他们的钱包和数据。此外,使用托管服务的用户容易受到钓鱼骗局的攻击,从而窃取登录凭证。

  • 加密操作 - 加密钱包执行许多加密操作。这些操作有些源自密码学界,但仍然存在错误的空间。加密代码可能因设计缺陷和实现错误而受损,需要非常专业的开发技能。通常,加密问题是设计和实现错误的组合。

  • DeFi 和去中心化应用 - 与去中心化应用的集成是常见的钱包特性。一些钱包允许用户与预定义的去中心化应用列表交互,或将其嵌入为网页视图。与去中心化应用的钱包集成引入了多个威胁向量,例如:钱包与去中心化应用之间的通信、恶意去中心化应用以及网页和移动平台可能存在的风险。攻击者可能会因身份验证、数据传输加密不足和交易数据授权的缺陷而截获和修改请求。即使去中心化应用来自“可信源”,它们也可能是恶意的或被恶意行为者妥协。大多数区块链和钱包都没有反垃圾邮件或反滥用协议,因此恶意去中心化应用可能会通过欺诈请求对钱包进行攻击。

  • 第三方库和依赖项 - 加密钱包通常包含可能访问敏感钱包数据(如私钥)的依赖项和库。如果一个库或依赖项存在漏洞,这可能导致整个钱包面临相同的漏洞,甚至更严重的问题。

钱包的最佳实践与一般安全性

用户如何保护他们的钱包:

  • 通过使用密码管理器生成复杂且唯一的密码并进行安全存储,以保护你的密码。如果你通过密码管理器创建强大、复杂的密码,通常不需要频繁更换密码。如果你认为自己可能已被入侵,最好立即更新密码和双重身份认证。务必谨慎,谨记不要在多个账户上使用相同的密码,特别是在与银行应用、加密货币或你的电子邮件相关的敏感账户上。

  • 在所有账户上启用双重身份验证。

  • 使用仅用于与银行、加密相关的敏感账户的电子邮件地址(或多个)。这将扩大你受到恶意行为者攻击的面。

  • 离线保护你的助记/恢复短语,并制作多个副本。将短语分成两部分,分别存放在两个不同的地方,例如安全存款箱中。

  • 使用安全硬件钱包,并将其放置在安全的位置。

  • 保持浏览器/设备/操作系统的更新。

  • 在回复或共享任何信息之前核实发件人的电子邮件地址。

  • 在所有钱包和账户上启用允许列表。

  • 将助记词保留给自己,并确保它不存储在任何设备上。

  • 不要与任何人共享或暴露你的私钥。

  • 只能从可信供应商那里购买硬件钱包,并直接从供应商处购买。

  • 在网上购买硬件钱包时,要求其发送到亚马逊自提柜或其他类似地方。如果供应商出现数据泄露,你的家庭地址就不会被泄露。

  • 避免短信认证,使用基于应用的双重身份验证。

  • 将你的钱包连接到去中心化应用或其他第三方网站时,请仅在使用去中心化应用的期间保持连接。- 一旦不再使用该网站,立即断开钱包与网站的连接。

  • 保持资产的平衡。一个钱包不应储存所有的加密货币或 NFTs。

  • 使用一次性钱包连接到你不熟悉的网站或用于铸造/空投。在收集完成后,可以将资产转移到更安全、更长期的存储钱包中。

开发者如何创建安全的钱包:

  • 理解你正在使用的网络/生态系统。加密钱包的风险可能跨越区块链、平台和应用程序,这也可能根据每种加密资产而异。

  • 确定你需要哪种类型的钱包,以供你构建的应用使用。对于需要快速资产移动的情况,热钱包在速度上是最佳选择,但通常较不安全,因为它们连接到互联网。如果你不需要立即处理资产移动,冷存储在安全性方面更佳。

  • 使用 MPC 或 Multi-Sig 也是一种设计选择,通常涉及速度、成本和安全之间的权衡。请记住,如果你的数字签名方案不安全,则钱包实现将不安全。

  • 平衡是关键。热钱包的余额应始终保持在可接受的风险水平。

  • 如果使用托管/非托管解决方案,请确保你有备份和恢复计划,并且可以重新构成钥匙份额以单方面移动资产。在所有账户上启用双重身份验证,使用强密码,并为所有资产移动设置安全策略。

  • 对于敏感操作,为终端用户增加一些障碍。要求用户在敏感操作(如资资金移动)时提供密码或 PIN,增加提示,发出警告等。

  • 实践安全软件开发生命周期(SDLC)实践。利用静态代码分析(SAST)工具。

  • 在进行构建之前,检查所有依赖项和库。

  • 进行审计,并在可能的情况下持续审计库和依赖项。

  • 遵循最佳密码学实践。不要实施自定义的密码或者协议。使用强加密,并小心存储任何敏感密钥,如私钥。最佳实践是将私钥或签名密钥与处理资产移动的应用分开。对于签名和解密任何私钥材料,利用安全边界/受信计算环境。

  • 重视安全性和防止大规模攻击的保护。

  • 对集成和通信使用强传输加密。

  • 为钱包应用实施防篡改保护,并设法提醒用户设备是否不受信任。

  • 对于移动钱包,要求用户设置设备级密码并发送提醒。

  • 限制在越狱或要素化的设备上的钱包应用功能。

  • 注意不要支持过时的操作系统/设备。

  • 使用本地安全存储来限制敏感数据的生命周期。

  • 使用正确的加密原语。

  • 实践强有力的密钥管理。

  • 实践强有力的秘密内存管理。

结论

钱包安全是加密基础设施中的一个复杂话题,钱包的安全和保护至关重要。对于那些试图保护资产的人来说,加密钱包的攻击面非常广渺,也成为攻击者的丰富目标。重要的是要全面审视加密钱包的安全性,因为任何组合的漏洞、设计缺陷或错误都可能导致资金损失。

我们 ❤️ 反馈!

让我们知道 你的反馈或新的主题请求。我们期待你的来信。

  • 原文链接: quicknode.com/guides/web...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。