上述提到的三个需要预置在钱包 TA 中的公钥 / 证书的作用是: 央行数字货币发行公钥 央行数字货币发行私钥用于签署每一个央行发行的数字货币。其对应公钥应内置于钱包 TA 中,以便在离线情况下也能验证数字货币的真伪。 若央行数字货币采用不定面额 UTXO 模型,那么只有最后一次联网交易时产生的 UTXO 可以由央行数字货币发行私钥签名,而离线交易中产生的 UTXO 无法由央行数字货币发行私钥签名,无法在后续流转中验签,因此,只能进行单次离线交易。 若央行数字货币采用固定面额 UTXO 模型,那么每一个数字货币都由央行在初始发行时用央行数字货币发行私钥签名,流通过程中不需要重新签名,因此,可以进行离线二次流转。 央行数字货币登记系统的服务器根证书 该根证书用于钱包软件连接央行数字货币登记系统时,验证央行数字货币登记系统是真实的,从而抗 DNS 攻击、中间人攻击等。央行数字货币登记系统可能有多个服务入口,根证书用于验证所有这些入口服务器的证书。 该证书亦用于协商远程通信的通信密钥。 央行钱包认证根公钥 央行钱包认证根公钥对用于在离线交易时,收付双方互相验证对方的数字钱包是经过央行认证的合法钱包。 因为用户知道自己的私钥,恶意用户有可能利用私钥签署形式合法的交易报文,在离线情况下,对自己的一个数字货币签发多次交易。为抵御离线双花攻击,收款方必须验证付款方的交易报文,是由经过央行认证的数字钱包发出的。 钱包在激活过程中,央行通过手机远程认证完成钱包和智能手机的绑定后,由央行钱包认证根私钥根据钱包标识、绑定时刻、密钥有效期等要素,派生出该钱包的认证子私钥,并通过央行数字货币登记系统的服务器根证书所建立的安全通道,下载到钱包内并保存在 TEE 中。 交易中,付款方必须使用上述钱包认证子私钥,对交易中通信的报文(其中包含派生该子私钥的要素和由用户私钥签名的交易报文)进行签名。收款方必须根据派生要素,从预置的央行钱包认证根公钥派生出与该付款钱包对应的子公钥,检查该密钥在有效期内,并验证交易通信报文是否来自合法钱包。 (责任编辑:admin) |