首页 > 世链号 > Monero 技术详解(二):一次性地址
币小葱  

Monero 技术详解(二):一次性地址

摘要:目前在绝大多数采用地址作为标识符的密码货币项目中,地址都是由公钥采用确定性压缩、编码得出,这样同一用户的不同交易会根据地址的确定唯一性而相关联。这一特性是隐私保护所极力避开的。

UTXO 模型中,通常每一笔 UTXO 的都显示地标示出该 UTXO 的所属者,所属者的标识符为地址。目前在绝大多数采用地址作为标识符的密码货币项目中,地址都是由公钥采用确定性压缩、编码得出,这样同一用户的不同交易会根据地址的确定唯一性而相关联。这一特性是隐私保护所极力避开的。

由于地址与公钥是通过编码建立对应关系,并且为了方便叙述,以下描述中可能用公钥来代替地址。

Monero 采用了一次性地址的方案来解决此问题。Monero 的做法是让用户掌握一确定、唯一的公私钥对。与其他项目类似,公钥对外公布。每次发送交易时,发送方根据接收方的地址,随机产生临时公钥来接收交易。由于临时公钥的随机性,交易接收方的不同交易之间的关联性被打破了。而拥有临时公钥对应私钥的接收方,可以用该临时私钥将来消费这笔 UTXO。

1. 基于椭圆曲线的一次性公钥

比特币等使用的 ECDSA 方案,用户随机产生私钥,且令公钥Monero 技术详解(二):一次性地址,其中Monero 技术详解(二):一次性地址是椭圆曲线的基点(或称为生成元)。Monero 技术详解(二):一次性地址组成签名功能最基本的密钥对。由于椭圆曲线上的点具有同态可加性(留意这个性质,后面的很多功能都依赖于这个特性而实现),在该密钥对上添加随机噪声项,从而获得一次性公私钥来用于真正的交易。

2. 随机噪声化的公私钥

用户 Bob 如上产生一公私钥对Monero 技术详解(二):一次性地址。对外公布长期公钥Monero 技术详解(二):一次性地址,当另一用户 Alice 向 Bob 发送交易(传递 UTXO)时,可选取随机数,并令一次性公钥Monero 技术详解(二):一次性地址,Alice 讲交易发送到公钥Monero 技术详解(二):一次性地址,同时随着交易数据,将随机数传递给 Bob。注意到Monero 技术详解(二):一次性地址,对应的一次性私钥是Monero 技术详解(二):一次性地址。之后 Alice 需要通过这个私钥来消费刚接收到的 UTXO。

很容易看出来,以上的一次性密钥对方案并不能隐藏接收者 Bob 的地址信息。因为直接暴露的随机数让所有的参与者都可以从 Bob 的一次性公钥Monero 技术详解(二):一次性地址中恢复出长期公钥Monero 技术详解(二):一次性地址。导致这一问题的根本原用是随机数在传递过程中的暴露。那么如何将以私密的方式传递给 Bob?Monero 使用 Diffie-Hellman 秘密交换协议。

3. DH 秘密传递随机噪声

Alice 将选择的随机数,并用 Bob 公布的公钥Monero 技术详解(二):一次性地址对进行隐藏Monero 技术详解(二):一次性地址,将隐藏的结果通过公开信道传递给 Bob (如附加于交易上链)。根据 DH 方案的原理,这时 Alice 和 Bob 已经共享了一秘密消息,公开信道上的其他用户却获取不到该消息,该为Monero 技术详解(二):一次性地址。实际上,在 Alice 一侧,Monero 技术详解(二):一次性地址;在 Bob 一侧,Monero 技术详解(二):一次性地址。其他用户值看到,无法获取其中隐藏的。

这样 Alice 和 Bob 分享了一随机数Monero 技术详解(二):一次性地址(虽然不是直接随机选择的随机数),让其替代上一节中的的位置,就可以解决上一节的问题了。但是此处一个需要解决的问题:Monero 技术详解(二):一次性地址是椭圆曲线上的点,是二维向量。可以使用一安全的 Hash 函数Monero 技术详解(二):一次性地址将椭圆曲线上的点映射到标量。一次性公钥方案是:

  1. Alice 选取随机数,并令Monero 技术详解(二):一次性地址Monero 技术详解(二):一次性地址,在将公开发送;

  2. Bob 获取到,按照Monero 技术详解(二):一次性地址,比对对应的Monero 技术详解(二):一次性地址,若一致,则说明该一次性地址属于自己,恢复一次性私钥Monero 技术详解(二):一次性地址

4. 剥离成两对密钥

想象下,在以上的方案中,Bob 需要观察每笔交易中的每个 UTXO 中的数据,来确定 UTXO 是否发送给自己。需要计算获得Monero 技术详解(二):一次性地址,并比对该 UTXO 中Monero 技术详解(二):一次性地址。在这种做法中,用户都只能自己计算Monero 技术详解(二):一次性地址,因为计算需要长期私钥的参与。对于钱包终端用户,这种大量的计算会消耗大量终端资源。寻求一种可以代理观察 UTXO 并且不暴露长期私钥的方案。

Monero 的做法是分两组密钥,一组可以委托给钱包观察者,让其代为识别 UTXO,另一组用来真正的消费接受的 UTXO。

Bob 产生这样两对密钥Monero 技术详解(二):一次性地址,Monero 技术详解(二):一次性地址,分别被称为观察密钥(观察私钥+观察公钥)和消费密钥(消费私钥+消费公钥)。并且对外公布两个公钥Monero 技术详解(二):一次性地址作为其使用地址(或经过必要的编码)。一次性公钥方案是:

  1. Alice 选取随机数,并令Monero 技术详解(二):一次性地址Monero 技术详解(二):一次性地址,在将公开发送;

  2. Bob 获取到,按照Monero 技术详解(二):一次性地址,比对对应的Monero 技术详解(二):一次性地址,若一致,则说明该一次性地址属于自己,恢复一次性私钥Monero 技术详解(二):一次性地址

5. 代理观察

Bob 将其观察密钥Monero 技术详解(二):一次性地址交给一个代理人 Proxy。Proxy 没收到一笔 UTXO,都会计算Monero 技术详解(二):一次性地址,比对对应的Monero 技术详解(二):一次性地址,若一致,则将 UTXO 的数据全部发送给 Bob,Bob 记录该 UTXO,在需要消费该 UTXO 时,恢复一次性私钥Monero 技术详解(二):一次性地址

总之,在 Monero 种出现的地址或者公钥,基本都是一次性的。一次性地址的方案让每个 UTXO 都具有不同一次性地址,这样,即使不同的 UTXO 属于同一个接收人用户,也不会公开显示出来,消除了不同交易之间的关联性

本文作者:victorsun

来源链接:mp.weixin.qq.com

Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。