リモートで働くブロックチェーンエンジニアのブログ

ブロックチェーン領域のエンジニアとして働いています

Moneroにステルスアドレスに加えてリング署名が必要な理由

Moneroにはステルスアドレスという受取人を秘匿する技術と、送金者を秘匿するリング署名技術が利用されています。しかしながら、ステルスアドレスは送金者のアドレスを秘匿化する仕組みになっています。ここでさらに送金者を秘匿するリング署名が必要な理由をこの記事で見ていきます。

なお、過去にはMoneroで利用されている技術概要を記事にしたのでこちらもリンクを貼っておきます。

www.blockchainengineer.tokyo

www.blockchainengineer.tokyo

ステルスアドレスの説明

ステルスアドレスは送金者がランダムな秘密鍵データrを生成し、受取人の公開鍵(A,B)と組み合わせてステルスアドレスを生成します(Moneroでは公開鍵が2つのペアで存在する)。このステルスアドレスは使い捨てになります。以下はCryptoNoteのWhitepaperに載っている図です。

f:id:naomasabit:20200607235100p:plain

受取人は秘密鍵(a,b)を持って各トランザクションをチェックし、自分宛のものがあるか確認します。下図にあるように、P'とPが一致すれば受取人は自身への送金であることを証明できます。

f:id:naomasabit:20200607235713p:plain

MRIが秘匿化について調査した資料が金融庁から発表されており、ステルスアドレスの解説があったため掲載しておきます。

f:id:naomasabit:20200607234126p:plain

リング署名の概要

リング署名は複数のユーザーを混ぜることによって特定のユーザーを判別しづらくする技術です。MoneroではUTXOの複数のインプットを混ぜることによって送信者を判別しづらくするために利用されています。以下はCryptonoteに載っているリング署名を用いたトランザクション作成手法です。UTXOのInputに、他のトランザクションを混ぜるようにしています。また、二重支払いを防ぐためにキーイメージという公開鍵の写像を登録し、過去に同一キーイメージが利用されていないかをチェックします。これをワンタイムリング署名として名付けています。

f:id:naomasabit:20200608004903p:plain

MRIが秘匿化について調査した資料に、Monero利用のリング署名の解説があったため掲載しておきます。

f:id:naomasabit:20200607234134p:plain

ステルスアドレスは送信元アドレスも秘匿するのにリング署名がなぜ必要なのか

既に見たように、Moneroではステルスアドレスへの送信が行われます。そして次のトランザクションもステルスアドレスから送信を行います。ここで、気づく点としてMoneroのトランザクションはステルスアドレス同士の送信になっていきます。つまり、送信者もリング署名を利用するまでもなく本来のアドレスは秘匿されているはずです。リング署名を利用することで、ステルスアドレスも秘匿する必要がなぜあるのでしょうか。

こちらについて、Chaintopeの安土氏(https://techmedia-think.hatenablog.com/ の著者)に答えをいただいたのでまとめます。

結論からいうとインプットとアウトプットの難読化という点をあげていただきました。これは、例えばUTXOで複数のinputが1つのoutputにまとめられて送られる時、同じ人からのinputであることを隠せるといった利点になります。ただし、ステルスアドレス自体からのトランザクションであるため具体的に困るケースはどのようなものがあるでしょうか。

ビットコイントランザクションは完全に透明性があり、また連なっているので、トランザクションがどのような使われ方をして、それがどこに繋がっているかが容易に推定できます。

そして、それが問題になる具体的な例として、自分が正当に受け取ったコインが、犯罪に関与したものであった場合、使用不可能になるか同じ価値を持たなくなってしまうという点があります。トランザクションのInputとOutputの関係性が断たれていない以上、トランザクションの特性はステルスアドレス間を辿っていきます。また、大きな局面だと、これを利用して問題のあるわざと送ってコインを汚染させていくことで、使用可能なコインの総量を減らすような通貨全体に対する攻撃もあげていただきました。

まとめ

これを考えると、リング署名は送信者を秘匿化するだけでなく、トランザクションの関連性を秘匿するという特性を持ちます。Moneroのコンセプトとして暗号通貨を用いる際のプライバシー問題として「自分がビジネスで何かを販売しており、相手からBitcoinを受け取り、相手がたまたま犯罪活動に関わっていた場合、犯罪者への資金提供といういわれのない疑いを受ける可能性がある」ことをあげていました。このため、トランザクションの関連性を秘匿化することも非常に重要なトピックとなっていることが伺えます。