10

从密码学和私钥角度解析持有链上资产的风险

 2 years ago
source link: https://www.btc798.com/articles/90014.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

从密码学和私钥角度解析持有链上资产的风险

BTCWan17小时前1664

许多 Web3 的坚定拥护者将区块链视为一项了不起的新技术,可以完全消除一个由来已久的问题—交易对手风险(counterparty risk),即交易的一方不履约的风险。但跨链桥被攻击、NFT被盗的事件屡屡发生,这是为什么?当我们拥有链上资产时会承担哪些风险?区块链的安全性如何?

165040603779698331.png

尽管目前有许多区块链,但本文试图通过展示早期区块链作为示例来回答这些问题,即比特币以太坊,它们已经设定了安全标准。

要掌握对区块链安全性的基本了解,需要了解其主要组成部分:密码学、API 和博弈论经济激励。 API 允许管理数据(交易、谁拥有什么、哪些合约存储在哪里),激励措施有助于激励用户运行节点并参与网络,而密码学保护区块链安全。请注意,这些组成部分已经存在了一段时间——博弈论和经济激励自人类诞生以来就已经存在,API 自 40 年代以来就已经存在,而由于密码朋克们的努力,自 80 年代以来,密码学已经足够安全,区块链只是现有技术的组合。

如前所述,密码学主要负责区块链的安全性。尽管值得一提的是,存在一些与网络规则相关的安全风险;例如,有多少个节点、块之间的时间、难度、共识机制等。密码学通过利用非对称密码学和哈希函数来实现安全所有权。数字签名在技术上不是密码学,只是验证消息是否来自预期的发件人。

简而言之,哈希函数具有抗碰撞性(每个输入都有一个输出)、确定性(输入总是有相同的输出)、计算速度快、单向(不能从输出中获取输入)和伪随机(稍微改变输入会产生完全不同的输出)。它们有许多用例,但其核心是可以加密消息,可能生成私钥,还有助于有效地存储数据。非对称密码学是这样一种想法,即有一个安全保存的私钥,可以让一个人访问他们的资金或解密发送给他们的消息;并且有一个从任何人都可以看到的私钥派生的公钥。这在实践中的工作方式是 Bob 使用 Alice 的公钥加密消息。可以解码消息的唯一方法是使用只有 Alice 知道的 Alice 的私钥。请注意,Alice 不知道发送者是谁。

165040603893058843.jpeg

私钥是随机生成的,有时像 2 个素数一样简单(如 RSA)或像椭圆曲线上的坐标一样复杂(如 DSA)。公钥是通过将私钥插入函数中生成的——在 RSA 中,它是 2 个素数的乘积,在 DSA 中,它是椭圆曲线上的坐标。 DSA 用于区块链,因为它提供更短的密钥长度,从而更快的网络响应时间。它使用没有解决方案的椭圆曲线离散对数问题。因此,获取私钥的唯一方法是暴力破解。这与另一个广泛使用的私钥系统 RSA 不同,RSA 中的一些密钥可以从公钥中解码(大约 0.2%)。因此,使用 DSA 时,私钥非常安全。

创建私钥和公钥的方式因非对称密码学的实施以及各方设置的规则而异。计算机科学家和教授组成了各种联盟来制定标准,例如高效密码学标准 (SEC),其中概述了要使用的椭圆曲线域参数。以太坊使用来自 SEC 2:推荐椭圆曲线域参数的 secpk256k1。以太坊私钥是一个 32 字节长(64 个字符)的十六进制字符串。可以通过散列函数或使用 BIP(比特币改进提案)中概述的助记词标准来生成私钥。然后使用 secpk256k1 参数将私钥插入椭圆曲线数字签名算法 (ECDSA),然后在曲线上生成坐标。其中一个坐标是公钥,不同的区块链根据它来推导出地址。比特币只是将其缩短为公钥,而以太坊将 (x,y) 放入另一个哈希函数 keccak256。

这种派生私钥和公钥的方式适用于 Solana、Cardano、Cosmos 区块链、Algorand 等。它们都使用一种椭圆曲线密码学形式,只是具有不同的参数和不同的私钥长度和格式。许多都与 BIP 39 兼容,这是许多钱包用来从短语生成密钥的标准。

从这个关于如何创建公私密钥对的简化版本可以看出,他们帐户的安全性完全依赖于随机性和数学。

但是当一个人想要与一个节点交互并向他们的朋友发送一些代币时会发生什么?他们不需要出示他们的私钥来证明他们拥有资金吗?另外,是什么阻止有人建立网络篡改您的资金?这就是数字签名发挥作用的地方。在用别人的公钥加密消息的方式中,记住没有办法证明发件人是谁。 Bob 可以使用 Alice 的公钥加密一条消息,上面写着“向 Alice 发送 5 个代币”,但这没有任何意义。这是因为唯一可以解密消息的人是 Alice,甚至不是网络中的一个节点。所以,Alice 会收到消息,但不知道它来自谁,什么也不会发生。

165040603863115806.png

相反,数字签名有助于查看消息是否来自预期的发件人以及消息是否已被篡改。反之亦然:Bob 使用他自己的私钥签署消息——即“向 Alice 发送 5 个代币”——并且消息可以由节点使用 Bob 使用他的公钥来验证。请注意,Bob 的私钥永远不会暴露给除他之外的任何人;并且由于私钥和公钥在数学上是相互关联的,因此可以验证签名中使用的私钥是否与公钥相关联。

简而言之,数字签名是一种确保花钱的人无需出示所述密钥即可访问私钥的方法。因此,如果 Alice 试图用她的私钥签署一条消息,说“从 Paul 向 Bob 发送 5 个代币”,那么节点不会允许这种情况发生,因为 Paul 的私钥没有用于签署该消息。因此,数字签名只允许拥有资金的人转移资金。区块链的开发人员无法转移用户的资金,因为他们无法控制超过 50% 的网络,因此无法创建具有最大哈希能力的更改链。

从对数字签名和区块链上数据更改方式的理解来看,如果私钥永远不必暴露并且没有人可以恶意更改数据,还有什么可担心的呢?人们如何仍然被黑客入侵?

资金被盗或丢失的最普遍原因是私钥管理不善。丢失它或告诉“discord mod”骗子您的私钥是一些最常见的方式。窃取资金的另一种方式是智能合约黑客。尽管大多数错误发生在草率编码的新项目或桥梁上,但已经审计的智能合约中仍然可能存在错误。这很容易被忽略——一位因预防了 8 亿美元资产被盗而从Polygon中获得 200 万美元奖励的白帽黑客写道,这个错误就像合约错误地检查了 Plasma 退出 ID 的第一个半字节,允许为单个销毁交易创建多达 224 个退出 ID(这允许用户以相同的资金退出 L2 224 次)。而且这样的故事还有很多。

一个不太常见的威胁是冲突——两个人将创建相同的私钥的想法。 2 个人使用 BIP 39 生成助记词和私钥可能会发生这种情况。助记词只有这么多,但安全研究员 Adrian Bednarek 估计,二人随机选择了同一个私钥的可能性就像在海滩上找到一粒沙子,再把它扔回去,然后另一个人恰巧在地球上的千百个海滩中找到了它。然而,借助量子计算,猜测私钥可能会更容易一些——这不仅是对加密货币的真正威胁,也是对世界的真正威胁——我们的核代码将受到损害。

总体而言,区块链的安全性很强,不会被黑客入侵,除非个人放弃自己的私钥或者数千年来被暴力破解(只要不存在量子计算)。 因此,将资产上链时所承担的风险是私钥管理,如果资金随后被转移到任何协议中,那么合约中的代码错误将催生更大的风险。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK