区块链技术使用非对称密钥加密(也称为公钥加密)。非对称密钥密码术使用一对密钥:公钥和私钥,它们在数学上彼此相关。在不降低进程安全性的情况下公开公钥,但如果数据要保留其加密保护,则私钥必须保密。即使在两个密钥之间存在关系,也不能基于公钥的知识有效地确定私钥。可以使用私钥加密,然后使用公钥解密。或者,可以使用公钥加密,然后使用私钥解密。
非对称密钥加密通过提供一种机制来验证交易的完整性和真实性,同时允许交易保持公开,从而在彼此不了解或彼此不信任的用户之间实现信任关系。为此,交易是“数字签名”。这意味着私钥用于加密事务,以便具有公钥的任何人都可以解密它。由于公钥是免费的,因此使用私钥加密事务证明了事务的签名者可以访问私钥。或者,可以使用用户的公钥对数据进行加密,以便只有具有私钥访问权限的用户才能对其进行解密。缺点是非对称密钥加密通常计算缓慢。
这与对称密钥加密形成对比,其中单个密钥用于加密和解密。使用对称密钥加密,用户必须已经建立了彼此建立的信任关系以交换预共享密钥。在对称系统中,可以使用预共享密钥解密的任何加密数据确认它是由具有对预共享密钥的访问权限的另一用户发送的; 没有访问预共享密钥的用户将无法查看解密数据。与非对称密钥密码术相比,对称密钥密码术的计算速度非常快。因此,当声称使用非对称密钥加密来加密某些内容时,通常使用对称密钥加密对数据进行加密,然后使用非对称密钥加密对对称密钥进行加密。
以下是在许多区块链网络中使用非对称密钥加密的总结:
· 私钥用于对交易进行数字签名。
· 公钥用于派生地址。
· 公钥用于验证使用私钥生成的签名。
· 非对称密钥加密提供了验证向另一个用户传输值的用户是否拥有能够签署事务的私钥的能力。
一些许可的区块链网络可以利用企业现有的公钥基础设施进行非对称密钥加密,以提供用户凭证 – 而不是让每个区块链网络用户管理自己的非对称密钥。这是通过利用现有的目录服务并在区块链网络中使用该信息来完成的。利用现有目录服务的区块链网络可以通过现有协议(如轻量级目录访问协议(LDAP)[10])访问它,并本地利用目录中的信息,或将其导入区块链网络内的内部证书颁发机构。
地址和地址推导
一些区块链网络利用地址,该地址是使用加密散列函数从区块链网络用户的公钥导出的短的字母数字字符串,以及一些附加数据(例如,版本号,校验和)。大多数区块链实现都使用地址作为事务中的“到”和“从”端点。地址比公钥短,并不是秘密。生成地址的一种方法是创建公钥,对其应用加密哈希函数,并将哈希转换为文本:
公钥≥哈希函数≥地址
每个区块链实现可以通过不同的方法来导出地址。对于允许匿名帐户创建的无权限区块链网络,区块链网络用户可以生成尽可能多的非对称密钥对,并因此根据需要进行寻址,从而允许不同程度的伪匿名性。地址可以充当用户的区块链网络中面向公众的标识符,并且通常地址将被转换为QR码(快速响应代码,可以包含任意数据的二维条形码)以便于移动使用设备。
区块链网络用户可能不是区块链网络中唯一的地址来源。一旦在区块链网络中部署了智能合约,就必须提供一种访问智能合约的方法。对于以太坊,可通过称为合同账户的特殊地址访问智能合约。部署智能合约时会创建此帐户地址(合同帐户的地址是根据智能合约创建者的地址确定计算的)。该合同账户允许合同在收到交易时执行,并依次创建额外的智能合约。
私钥存储
对于一些区块链网络(特别是使用无权的区块链网络),用户必须管理并安全地存储他们自己的私钥。他们经常使用软件来安全地存储它们,而不是手动记录它们。该软件通常被称为钱包。钱包可以存储私钥,公钥和相关地址。它还可以执行其他功能,例如计算用户可能拥有的数字资产的总数。
如果用户丢失私钥,则与该密钥相关联的任何数字资产都将丢失,因为重新生成相同的私钥在计算上是不可行的。如果私钥被盗,攻击者将可以完全访问由该私钥控制的所有数字资产。私钥的安全性非常重要,许多用户使用特殊的安全硬件来存储它们。或者,用户可以利用新兴的私钥托管服务行业。除了存储私钥之外,这些密钥托管服务还可以满足KYC法律,因为用户在创建帐户时必须提供其身份证明。
私钥存储是区块链技术的一个极其重要的方面。当新闻中报道“加密货币XYZ从…中被盗”时,几乎可以肯定地发现一些私钥被用来签署将钱汇入新账户的交易,而不是区块链网络本身被泄露。请注意,由于区块链数据通常无法更改,一旦犯罪分子窃取私钥并将相关资金公开转移到另一个帐户,该交易通常无法撤消。