Page 347 - 《软件学报》2021年第7期
P. 347

姚前  等:区块链系统中身份管理技术研究综述                                                          2265


                 UTXO 属于用户 A,并通过 A 来控制 UTXO 的支付.比特币的支付过程是由交易脚本(script)来完成的,对于属于
                 A 的 UTXO 进行支付的交易脚本可描述为
                                      SigP DUP HASH 160 A EQUALVERIFY CHECKSIG
                    为了花费 UTXO,用户必须提供公钥P和对应的私钥 d 所生成的交易数字签名Sig,并通过判断公钥P的
                 HASH 160 运算结果是否与A相等和签名验证是否通过来进行支付确权.比特币使用了基于堆栈结构的脚本
                 语言来完成上述操作,脚本的执行过程如下.
                    (1)  将用户数字签名Sig压入堆栈;
                    (2)  将用户公钥P压入堆栈;
                    (3)  执行栈顶元素复制指令 DUP,将用户公钥P复制并压入堆栈;
                    (4)  弹出栈顶元素P并执行指令 HASH 160 计算 HASH 160(P),并将计算结果压入栈中;
                    (5)  将身份标识A压入栈中并执行指令 EQUALVERIFY,弹出栈顶两个元素并判断二者是否相等;
                    (6)  弹出Sig和P并执行指令 CHECKSIG,计算交易哈希值并判断签名是否正确.
                    由上述操作可见,比特币基于非对称密码算法的公私钥对和签名验签实现了对链上数字资产的权属标识
                 和支付确权.
                    此外,为了实现交易过程中的身份隐私保护,交易地址在每次交易时可动态生成,即同一个用户通过使用多
                 个不同的身份标识符(假名)来降低交易地址与真实身份以及不同交易之间的关联性,这带来了钱包端密钥管理
                 的问题.目前,比特币提供了两种解决方案.第 1 种方案中用户私钥通过随机数动态地临时生成,再计算对应的公
                 钥.随着密钥数量的增加,这会极大地增加密钥管理的开销;第 2 种方案中用户在比特币钱包中存储根私钥,使用
                 时通过密钥派生算法来生成临时公私钥对,支持这一方法的钱包也称为 HD(hierarchical deterministic)钱包                    [19] .
                 在比特币 BIP 32 协议中对生成算法有详细的描述,它基于椭圆曲线的密钥叠加特性,即私钥叠加对应的公钥也
                 会叠加,利用父密钥和索引逐级派生出子密钥,这一方法可以有效地降低钱包端的密钥管理开销.其基本结构如
                 图 3 所示.



















                                            Fig.3    Key derivation in bitcoin HD wallet
                                              图 3   比特币 HD 钱包密钥派生结构

                    此外,在点对点分布式存储系统 IPFS           [20] 中,还将公钥标识方法用于节点地址生成,采用公钥哈希作为节点
                 的身份标识.更多的公有链将这一方法用于用户身份生成.例如,以太坊平台同样采用椭圆曲线密码算法生成用
                 户身份标识(账户地址),并直接用于标识账户所有权,与比特币不同的是,以太坊使用 Keccak 256 哈希函数来生
                 成用户地址.公有链中的门罗币则采用了两对公私钥对来实现身份标识,同时也采取了类似的密钥派生技术来
                 实现钱包端的密钥管理,详细内容可参见第 4.3 节.零币在交易接收地址上使用了一对公私钥对来作为身份标
                 识,但在货币权属标记方面则采用了基于零知识证明的方案.零知识证明是指一种证明者向验证者证明他知道
   342   343   344   345   346   347   348   349   350   351   352