Flow Season#Day9| 区块链中的密码学(简明版本)

Date
Created
Apr 9, 2022 08:17 AM
Tags
翻译
原文:Blockchain in a Nutshell
作者:Benjamin Ebner
原文链接:https://medium.com/geekculture/cryptography-for-blockchain-simplified-89a1988a342
翻译:Jack, Flow社区大使,Flow 中国第一个生态项目 Mynft 商务拓展负责人。
目前所有区块链项目资产总值超过 2 万亿美金,这比加拿大、俄罗斯和澳大利亚的 GDP 都要多,而每周在主流 CEX 的交易量已经超过了诺克斯堡(Fort Knox)黄金储备的美元价值。
然而,与诺克斯堡不同,区块链是一个公共网络,全球各地的用户都可以参与这些去中心化的网络,查询数据,发送交易,甚至,尝试黑掉它们。
那么,如果我们没有像防火墙这样的措施来阻止坏人进入,这个巨大的数字金库如何能保证安全呢?毕竟,没有什么能比诺克斯堡的围墙更防弹,更安全。
这个问题的答案简单来说,就是密码学,而如果你想了解更详细的解释,那么接着读下面的文章吧。
notion image
没有身份,就没有所有权
任何有关所有权的问题都是从身份(Identity)开始的,如果我们想知道一个人是否是某一物品的所有者,是否有权决定该物品,我们首先需要确定用户的身份(即认证),这对于数字物品来说是一样的。
在现实世界中,各州政府向其公民发放身份证(护照),在你买房时这是公证人首先要求提供的东西,这是他们工作的必要前提,而全息、紫外线印刷或雕刻这些技术使文件难以被伪造,可用于判断文件的真实性。
notion image
然而在区块链网络中,没有中心化的实体为用户的身份作担保(这也是去中心化的意义),我们如何能确定某人的身份呢?数字签名可以帮助我们解决这个问题。
签名可验证身份
在链上和链下,签名可验证一个人的身份。就像用户在纸质合同上签名以接受其条款一样,向网络发送交易之前,用户也需要对交易进行签名。
以上两种情况都包含了两个步骤,首先,用户签名授权,然后再由另一方验证用户身份,收银台的柜员会对照你卡上的签名检验,就像区块链节点会检查用户的数字签名一样。在数字世界中,签名和验证的过程是由密码学实现的。
notion image
密码学保证了签名的安全
“密码学是有第三方在场情况下安全通信的实践和研究"
——Voshmgir, 2020
密码学并不独特,事实上,密码学已经存在了好几千年,它对社会有着深远的影响。由于密码通信,中世纪皇后被杀;密码学在战争时期拯救了数百万人的生命,而且它还是今天互联网上安全通信的支柱。
从本质上讲,密码学包括两个步骤。
  • 加密:将用户想要签署的东西变成一个不可被识别(理解)的文本,即密文
  • 解密:与加密相反的过程,将密文转回为可读的明文。
因此,与在现实世界中的签名不同,这个过程用户先加密需要签署的文本,之后再将其转回可读的明文,以便验证。但这个过程如何防止数字签名的伪造?这就是密钥发挥作用之处。
密钥即一切
notion image
数字密钥是一个非常非常大的数字,例如,在以太坊上,一个私人密钥由 64 个十六进制数字组成(256 位,32 字节),猜中这样一个数字的几率是1/115…..0,省略号代表了 115 后面有 75 个 0,这是一个极小极小的概率。
如果只使用一把密钥,就是对称密码学。简单可概述为:一个人用他的私钥签署(加密)一个信息,而如果要解密该信息,需要用完全相同的密钥。
这很像现实世界中的钥匙。只有当拥有它时,才能访问它锁定的东西,从而证明钥匙的有效性。但这就涉及到,需要将钥匙从一个人安全转移到另一个人,这中间存在很大的安全风险,所以对称密码学其实并不适合区块链,区块链使用的是更为复杂的非对称密码学。
目前有两种流行的密钥生成系统,ECC(椭圆曲线加密法)和 RSA( 3 位密码学姓氏首字母而成)。两者都是通过创建一个在一个方向上容易推导的函数(从私钥推导出公钥),但在另一个方向上却完全不可能倒推(即从公钥倒推私钥)。
私钥被用于签署区块链网络上的每一笔交易,它是用户唯一的身份证明,如果忘记、丢失或泄漏私钥,与之相关的资金可能会被丢失,私钥是用户在区块链上唯一的、也是最宝贵的物品。请极其小心地看管好私钥,并保证它的安全。
其他你需要了解的:钱包、账户、多重签名
notion image
■  Wallets | 钱包
钱包本质是存储私钥的地方,它将安全性与便利性结合起来。一方面,它能保证私钥安全;另一方面,它和区块链网络直接相连,所以用户可以直接从钱包签署和发送交易到区块链上。
然而,如果一个 DApp 要支持特定的钱包,通常情况下,开发者会发现自己需要写特定的代码,或依赖浏览器插件。但是,如今有了 Flow 这样的区块链项目,它提供了工具来提供钱包发现服务(即 FCL),所以用户喜欢的钱包可以在所有使用 FCL 的应用程序中使用。
■ Accounts | 账户
在选择区块链时,了解它的账户模型很重要,即密钥和账户之间的关系。
例如以太坊,它的账户地址直接从公钥生成,出于隐私和安全的考量,用户应该不时地更换密钥,而这意味着每次都要生成一个新的账户。
然而,也有一些区块链遵循的是以用户为中心的账户模式,其中最引人注目的是 Flow。在 Flow 上,用户的账户地址并不直接来自于公钥,你还可以为一个账户分配多个密钥对,这不仅将用户账户的地址长度缩短到 18 个字符,而且还使你在更换秘钥时不必切换到一个新的账户 ,同时它还内置了多重签名。
■ Multi-signature | 多重签名(MultiSig)
签署交易的过程可由多方执行,这个过程被称为多重签名,对于需要集体管理数字资产的组织或团队来说,这是一个非常实用的功能。以太坊需要使用专门的软件来达成多重签名,而像 Flow 这样的网络已经在协议层中嵌入了多重签名流程。
总结
正如我们所看到的,密码学通过提供透明和强大的身份验证机制来保障区块链上数字资产的安全,由公钥加密技术驱动的数字签名是区块链验证机制的核心,而私钥是验证数字资产所有权的唯一工具,所以请万分小心保管好。
钱包、账户和多重签名都与区块链的加密层紧密相连,而选择不同的区块链,则意味着,用户是否可以以及怎么利用这些功能,毫无疑问,Flow 给我们提供了非常灵活的选择。