虚拟货币的所有权是通过数字密钥、货币地址和数字签名来确立的。
数字密钥实际上并不是存储在网络中,而是由用户生成并存储在一个文件或简单的数据库中,这个数据库以及运行此数据库的硬件被称为钱包。存储在用户钱包中的数字密钥完全独立于虚拟货币协议,可由用户的钱包软件生成并管理,而无需区块链或网络连接。密钥实现了虚拟货币的许多有趣特性,包括去中心化信任和控制、所有权认证和基于密码学证明的安全模型。
公钥加密和加密货币
公钥加密发明于20世纪70年代。它是计算机和信息安全的数学基础。
自从公钥加密被发明之后,一些合适的数学函数被提出,譬如:素数幂和椭圆曲线乘法。这些数学函数都是不可逆的,就是说很容易向一个方向计算,但不可以向相反方向倒推。基于这些数学函数的密码学,使得生成数字密钥和不可伪造的数字签名成为可能。比特币正是使用椭圆曲线乘法作为其公钥加密的基础算法。
在比特币系统中,我们用公钥加密创建一个密钥对,用于控制比特币的获取。密钥对包括一个私钥,和由其衍生出的唯一的公钥。公钥用于接收比特币,而私钥用于比特币支付时的交易签名。
公钥和私钥之间的数学关系,使得私钥可用于生成特定消息的签名。此签名可以在不泄露私钥的同时对公钥进行验证。
支付比特币时,比特币的当前所有者需要在交易中提交其公钥和签名(每次交易的签名都不同,但均从同一个私钥生成)。比特币网络中的所有人都可以通过所提交的公钥和签名进行验证,并确认该交易是否有效,即确认支付者在该时刻对所交易的比特币拥有所有权。
每笔虚拟货币交易都需要一个有效的签名才会被存储在区块链。
只有有效的数字密钥才能产生有效的数字签名,因此拥有虚拟货币的密钥副本就拥有了该帐户的虚拟货币控制权。
密钥是成对出现的,由一个私钥和一个公钥所组成。
公钥就像银行的帐号,而私钥就像控制账户的PIN码或支票的签名。
虚拟货币的用户很少会直接看到数字密钥。
一般情况下,它们被存储在钱包文件内,由比特币钱包软件进行管理。
与之对应的助记词则会被用户自行记录下来。
在虚拟货币交易的支付环节,收件人的公钥是通过其数字指纹表示的,称为虚拟货币地址,就像支票上的支付对象的名字(即“收款方”)。一般情况下,虚拟货币地址由一个公钥生成并对应于这个公钥。然而,并非所有虚拟货币地址都是公钥;他们也可以代表其他支付对象,譬如脚本,这样一来,虚拟货币地址把收款方抽象起来了,使得交易的目的地更灵活,就像支票一样:这个支付工具可支付到个人账户、公司账户,进行账单支付或现金支付。虚拟货币地址是用户经常看到的密钥的唯一代表,他们只需要把地址告诉其他人即可。
私钥和公钥
一个比特币钱包中包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。私钥(k)是一个数字,通常是随机选出的。有了私钥,我们就可以使用椭圆曲线乘法这个单向加密函数产生一个公钥(K)。有了公钥(K),我们就可以使用一个单向加密哈希函数生成比特币地址(A)。私钥、公钥和比特币地址之间的关系如下图所示。
私钥
私钥就是一个随机选出的数字而已。一个比特币地址中的所有资金的控制取决于相应私钥的所有权和控制权。在比特币交易中,私钥用于生成支付比特币所必需的签名以证明资金的所有权。私钥必须始终保持机密,因为一旦被泄露给第三方,相当于该私钥保护之下的比特币也拱手相让了。私钥还必须进行备份,以防意外丢失,因为私钥一旦丢失就难以复原,其所保护的比特币也将永远丢失。