想要在以太坊网络上发送交易,就需要一个签名交易:一个由私钥签名的交易。无论用户使用何种类型的钱包 (例如,硬件钱包、秘密恢复短语、密钥库文件),交易始终使用私钥签名,该私钥来自用户的硬件钱包、秘密恢复短语或密钥库文件 (除非用户已经在使用普通私钥)。
除了私钥,用户还需要公钥,因为以太坊使用非对称加密 (也称为公钥加密)。这是一种加密方式,其中有一对密钥 : 一个私有密钥和一个公有密钥。但是,当用户想要向某人发送资金时,用户需要他们的地址,这与公钥 (或私钥) 不同。在本文中,将解释私钥、公钥和地址之间的区别,以及它们如何联系在一起。
不同类型的密码学
**
**
让我们从密码学的基础知识开始。基本上有三种不同的类型 :
-
对称密码学 (或秘钥密码学)
-
非对称密码学 (或公钥密码学)
-
加密哈希函数
使用对称密码学,用户只有一个 (秘密) 密钥。其就可以使用此密钥加密数据,然后使用相同的密钥解密该数据。要与他人共享数据,用户和接收方必须访问相同的密钥。对称加密的一个用例是保护用户的敏感数据,例如,通过使用 BitLocker 加密用户的计算机驱动器。重要的是要保密这个密钥,否则任何知道它的人都能够访问用户的敏感数据。
对称加密 : 使用单个密钥对数据进行加密和解密。
_
_
与对称密码学不同,非对称密码学涉及到一个密钥对:一个私钥和一个公钥。数据使用公钥加密,只能使用对应的私钥解密。换句话说,发送方只需要接收方的公钥,而接收方可以使用自己的私钥解密数据。用户只需要将私钥保密,与他人共享公钥即可。
_
_
非对称加密:使用单独的公钥和私钥加密和解密数据。
_
_
例如,可以使用非对称密码学在双方之间共享敏感信息。事实上,用户用来阅读本文的网站使用的是非对称加密:HTTPS 基于非对称加密。在以太坊中,它更常用于签名数据,而不是加密数据。这使得有人可以验证用户是否拥有私钥,而不暴露私钥本身。
非对称密码学和以太坊
**
**
如上所述,非对称密码学在以太坊中用于发送交易和签名消息。当用户向网络发送交易时,用户显然不希望在交易中包含自己的私钥。因此,相反,该交易包括一些证明用户可以访问私钥的证据。这是为了让网络在不暴露您的私钥的情况下验证您的余额(或特定消息)。
以太坊使用椭圆曲线密码学 (ECC):基于椭圆曲线的加密,具体使用椭圆曲线数字签名算法 (ECDSA) 和 secp256k1 椭圆曲线。ECDSA 是一种专门用于签名和验证数据以及从签名中恢复公钥的算法。
当用户想发送一个交易时,整个交易首先被签名,从而产生一个签名{r, s, v}。这个签名被添加到交易中,然后可以向网络广播。交易不包括发送地址。相反,使用 ECDSA 从签名中恢复地址。
以太坊中的非对称加密 : 用私钥签名交易,然后从签名 (简化) 中恢复公钥。
_
_
通过这种方式,我们可以在以太坊上安全地发送交易 (或签名消息),而不暴露我们的私钥。
密钥是如何创建的?
**
**
私钥可以来自另一个来源(比如秘密恢复短语或硬件钱包),也可以使用强大的加密安全伪随机数生成器 (CSPRNG) 随机生成。私钥本质上是一个随机的 32 字节 (256 位) 数字。不过,它确实有一些要求 :
-
私钥不能为 0。
-
私钥必须小于曲线的序号 (n)。这是椭圆曲线上最大点数。
要生成私钥,用户只需获取一个随机的 32 字节数 (由强 CSPRNG 生成),然后检查上面的要求。如果满足了要求,那么现在就有了一个有效的私钥。
公钥的获取涉及到基于私钥的椭圆曲线数学。公钥不是随机生成的,而是通过私钥与椭圆曲线上的基点 (G)“相乘”来计算的。这在椭圆曲线上产生了一个新的点,即公钥。此乘法是单向操作,因此不可能从公钥计算私钥。
公钥和地址
**
**
一个常见的误解是,公钥与以太坊中的地址相同。然而,它们是两个不同的东西,并且地址是从公钥派生的。
对于未压缩的公钥 (
0x04 || uncompressed public key
) ,公钥长度为 65 字节;对于压缩的公钥 0x02 or 0x03 || compressed public key,公钥长度为 33 字节。不同之处在于,未压缩的公钥包含椭圆曲线上点的 y 值,而压缩的公钥不包含。使用未压缩的公钥可以加快计算速度,但代价是增加存储空间。第一个字节是公钥头,它决定密钥是否被压缩或未压缩。对于压缩的公钥,第一个字节还决定奇偶校验,因为一个 x 坐标在椭圆曲线上有多个 y 值。
为了从一个公钥转换到一个地址,我们使用压缩的公钥,省略第一个头字节 (以获得一个 32 字节长的公钥),并使用 kecmack -256 对其进行散列。然后,取最后 20 个字节,这是地址。
地址比公钥短,同时仍然为在以太坊上发送交易提供足够的唯一性和安全性。
私钥与硬件钱包、秘密恢复短语和密钥存储文件。
私钥与硬件钱包、秘密恢复短语和密钥存储文件
当使用诸如硬件钱包、秘密恢复短语或密钥存储文件之类的东西时,仍然使用私钥对交易进行签名。用户不能直接使用像秘密恢复短语这样的东西来签署交易。在这些情况下,私钥派生自硬件钱包、秘密恢复短语或密钥存储文件,这些文件本身涉及一组加密函数。
结论
**
**
要在以太坊上发送交易,就需要一个密钥对,由私钥和公钥组成。其他访问账户的方法也可以用于在以太坊上发送交易,但在幕后,派生出一个私钥 (和公钥,地址) 来实际签署交易。
使用非对称密码学 (公钥密码学),我们可以通过包含签名安全地发送交易,而不暴露私钥本身。交易通过恢复公钥进行验证,使用椭圆曲线密码学,然后可以进一步哈希以获得实际的以太坊地址。
对称密码学和非对称密码学的主要区别在于前者只有一个密钥 : 秘密密钥。虽然不 (通常) 用于以太坊,但它有很多其他可能性,比如保护敏感数据或使用相同密钥的人之间共享数据。
Source: https://blog.mycrypto.com/the-basics-of-public-key-cryptography/