主页 > token.im > 什么是私钥?

什么是私钥?

token.im 2023-01-17 17:10:16

科普:什么是私钥

私钥是加密货币世界中最敏感和最重要的东西。我们建议所有有抱负的用户学习私钥的来源、相关推理和功能。在本文中,我们将解释私钥的来源以及它与您的加密资产的关系。

私钥对加密货币意味着什么

归根结底,持有加密货币就是持有私钥。在现实世界中,拥有实物财产通常意味着拥有带有你名字的契约或收据,但在加密货币的世界中,拥有资产就是拥有一条信息。简而言之,掌握了私钥就等于拥有了加密资产(私钥可以控制)。

在加密货币的世界里,“你所知道的就是你得到的”是绝对真理

所有资产都可以通过交易进行操纵。在现实世界中,交易通常需要签名授权。但是,在加密货币世界中,所有交易都使用相关的私钥进行授权。私钥的作用是配合密码算法生成交易的数字签名。签署的交易表明私钥持有人已授权其他人访问他们持有的资产。虽然任何人都可以生成与您的数字资产相关的交易,但只有持有相应私钥的人才能签署交易。

虽然虚假签名在现实世界中是一个问题,但加密货币世界的安全性受到其加密属性的保护。迄今为止,还没有听说没有黑客在没有私钥的情况下成功签署交易。

币圈有句名言,“没有私钥,币就不是你的”。这是因为签署交易和转移资产的能力完全依赖于私钥。拿到私钥后,不管你是谁,都可以转走。此私钥对应的资产

什么是私钥?

从实用的角度来看,私钥是一个数字(在一定的大小范围内),可以用来花费资金(这就是为什么我们要妥善保管我们的私钥)。从数学的角度来看,私钥是一个随机生成的正整数。以下是从技术角度给出的更准确的描述:

私钥是在特定正数范围内由随机数发生器得到的数字,具有密码学意义上的强随机性的特点。

在大多数情况下,计算机使用伪随机数生成器 (PRNG) 生成这些随机正整数(真正的随机数生成器很难找到。这些生成器通常需要专门的硬件并使用物理源,例如电路内热噪声或精确定时盖革计数器)。PRNG 是一个密码学上的强函数,它需要足够大的熵值作为随机种子。

熵是一个复杂的概念,但它的目的很简单:给函数带来不可预测性。通过使用安全的熵源,PRNG 可以创建具有可忽略不计的非随机概率的伪随机数(在某个可接受的范围内)。

Linux 系统中的“/dev/urandom”和 Microsoft Windows 系统中的“rand_s”通常用作 PRNG 生成安全随机数的熵源。在上图中,“范围”既是数学概念中的范围,也是计算机用来生成随机数的字节大小。(从图中可以看出,RPNG的作用是取出一个大范围内的值;而熵保证了这个过程足够随机)

在创建以太坊或比特币私钥时,PRNG 可以取 1 到 2256 - 1 之间的值(想象一个由数字 0 到 9 组成的 78 位密码锁)。由于这个范围很大,生成两个相同私钥的概率低到可以忽略不计,这就是为什么其他用户不太可能创建与您完全相同的私钥。您的私钥是从大量整数中选择的——几乎与整个宇宙中可见原子的总数一样多。

比特币和以太坊都使用 1 到 2256-1 的范围,这在这两条链的公钥生成算法下是可行的。例如,以太坊使用椭圆曲线(尤其是 SECP-256k1) 来生成公钥。在原始黄皮书中一个私钥可以存多少个比特币,Gavin Wood 博士将私钥定义为在 [1, secp256k1n - 1] 正整数范围内随机选择(大端格式的长度为 32 的字节数组)。有关所有正式定义,请参阅黄皮书。

私钥、公钥和地址

由于私钥必须保密,我们还需要一种机制来标记计费的目的地。因此,所有区块链都引入了地址的概念(从私钥计算出的唯一数字串)。该地址是存储加密资产的地方,可以与任何人共享(如果需要),以便他们可以向您转账(并了解您的加密资产余额)。

区块链地址是使用公钥创建的,以确保您是该地址的所有者。进一步推后,公钥是从私钥生成的。这个过程是单向的,也就是说,你可以从私钥计算出账户地址,但不能从账户地址逆向计算私钥(甚至你自己也做不到)。

私钥可以推演公钥,公钥可以推演区块链地址。但是,不能用区块链地址推导出公钥,也不能用公钥推导出私钥。

这种单向过程是通过密码陷门功能实现的。陷门函数是一种单向函数。一个输入值只能导致一个唯一的输出值,但不能根据输出值反转原始输入值。不同的区块链生态系统采用不同的单向功能。例如,最流行的区块链系统使用基于椭圆曲线的代数结构来生成公钥。不管这些代数结构的特点如何,结果始终是确定性的:公钥与私钥一一对应,同一个私钥只能生成同一个公钥。

虽然比特币或以太坊等流行的区块链使用 ECDSA 算法,但将私钥乘以椭圆曲线 secp256k1 上的固定点会产生公钥。其他区块链项目也采取了类似的方法。例如,Monero 使用 EdDSA 算法和 Curve25519 曲线一个私钥可以存多少个比特币,Polkadot 和 Substrate 使用 sr25519 算法和 Ed25519 曲线。所有这些区块链都基于 1 到 2256 - 1 范围内的私钥生成公钥。

区块链地址也是使用单向函数计算的,称为哈希函数。比特币和以太坊地址都是使用一个或多个基于公钥的加密增强哈希函数创建的,尽管不同的区块链使用不同的算法。鉴于这些散列函数的工作方式,您完全可以相信您的公钥和私钥对应于唯一的区块链地址。

以太坊账户是公钥的 Keccak-256 哈希,但只保留计算结果的最右边 20 个字节。比特币私钥使用 SHA-256 和 RIPEMD-160,Polkadot 和 ZCash 使用 Blake2b。所有这些哈希函数都是抗碰撞的,因此两个公钥生成相同帐户地址的概率很低,并且可以保证从地址中反转私钥的唯一方法是经济上低效的暴力攻击。不能保证这些哈希函数不能被破解,但迄今为止没有区块链使用已被证明被破解的哈希函数。

一点点数学就能保守秘密

加密资产的安全性来自于私钥背后的密码学和数学——只要我们保证我们的私钥安全。到目前为止,没有人能够暴力破解与您的区块链地址对应的私钥,因为这需要的能量比太阳所能存储的要多。在 Portis,我们采取了谨慎的措施,以确保您的私钥是根据只有您知道的数据安全生成的(有关详细信息,请阅读我们的白皮书)。

在下一篇文章中,我们将探讨流行的区块链生态系统和公钥生成背后的数学原理。我们将提供一些代码示例,以便您可以根据每个区块链描述的过程计算密钥,并使用一些代码库来简化生成过程。敬请关注!