从实际角度来看,私钥就是一个数字(这个数字的大小在一定范围内),可以用来花费资金(这就是我们为什么要好好保管私钥的原因)。从数学角度来看,私钥就是一个随机生成的正整数。
以下是从技术角度给出的更准确的描述:
私钥是一个在特定的正数范围内通过随机数生成器得到的数字,具有密码学意义上的强随机性特点。
在大多数情况下,计算机使用伪随机数生成器(PRNG)生成这些随机正整数(真正的随机数生成器很难找到。这些生成器通常需要专门的硬件,并使用物理源,如电路中的热噪声或盖革计数器的精确计时)。PRNG 是一种密码学加强型函数,需要输入一个熵足够大的值作为随机种子。
熵是一个复杂的概念,但是它的目的很简单:为函数带来不可预测性。通过使用安全的熵源,PRNG 可以创建出伪随机数,其非随机性概率是可以忽略不计的(在可接受的特定范围内)。
在创建以太坊或比特币私钥时,PRNG 的取值范围是从1 到 2^256 - 1(想象一个由数字 0 到 9 组成、长达 78 位的密码锁)。由于这个范围很大,生成两个相同私钥的概率低到可以忽略不计,这就是为什么其他用户不太可能创建出跟你一模一样的私钥。你的私钥是从一个巨大的整数集合中选出来的 —— 几乎与整个宇宙中可见原子的总数差不多。
由于私钥必须保密,我们还需要一种机制来标记发帐的目的地。因此,所有区块链都引入了“地址”这一概念。地址就是密码学资产的存储位置,(如有需要)可以分享给任何人,这样他们就能知道你的密码学资产余额。
区块链地址是通过公钥创建的,以确保你是这个地址的所有者。再往回推,公钥是通过私钥生成的。这个过程是单向的,也就是说你可以通过私钥计算出账户地址,但是不能通过账户地址倒推计算出私钥。
上图的过程是从私钥生成公钥的过程,这一单向过程是通过密码学陷门函数(cryptographic trapdoor function)实现的。陷门函数是一种单向函数,一个输入值只能导致唯一的输出值,但是不能根据输出值倒推原始的输入值。不同的区块链生态系统采用不同的单向函数。例如,最流行的区块链系统使用基于椭圆曲线的代数结构来生成公钥。无论这些代数结构具备哪些特征,其结果始终是确定的:公钥是与私钥一一对应的,同一个私钥永远只能生成同样的公钥。
上图的过程是公钥生成地址的过程,区块链地址也是用单向函数计算出来的,用的就是所谓的哈希函数。比特币和以太坊地址都是在公钥的基础上通过一个或多个密码学加强型哈希函数创建的,只不过不同的区块链会采用不同的算法。鉴于这些哈希函数的运作方式,你绝对可以相信你的公钥和私钥对应的区块链地址是唯一的。
归根结底,持有密码学货币就是持有私钥。在现实世界中,拥有实物财产通常指的是拥有写有你的名字的契据或收据,但是在密码学货币世界中,拥有某个资产就是掌握某个信息。简言之,掌握了私钥就等于拥有了(这把私钥所能掌控的)密码学资产。
所有资产都可以通过交易来操控。在现实世界,交易通常都需要签名授权。然而,在密码学货币世界,所有交易的授权都必须使用相关的私钥。私钥的作用是配合密码学算法,生成一笔交易的数字签名。签过名的交易表示私钥持有人许可了他人对自己所持有资产的权限。虽然任何人都能生成与你的数字资产相关的交易,但是只有持有对应私钥的人才能签署该交易。
虽然在现实世界中虚假签名是个问题,但是密码学货币世界的安全性受其密码学性质保护。迄今为止,还没有听说过哪个黑客在没有私钥的情况下成功签署交易的。
参考文章:https://medium.com/portis/part-one-understanding-private-keys-311389737fbe