Moneroにはステルスアドレスという受取人を秘匿する技術と、送金者を秘匿するリング署名技術が利用されています。しかしながら、ステルスアドレスは送金者のアドレスを秘匿化する仕組みになっています。ここでさらに送金者を秘匿するリング署名が必要な理由をこの記事で見ていきます。
なお、過去にはMoneroで利用されている技術概要を記事にしたのでこちらもリンクを貼っておきます。
ステルスアドレスの説明
ステルスアドレスは送金者がランダムな秘密鍵データrを生成し、受取人の公開鍵(A,B)と組み合わせてステルスアドレスを生成します(Moneroでは公開鍵が2つのペアで存在する)。このステルスアドレスは使い捨てになります。以下はCryptoNoteのWhitepaperに載っている図です。
受取人は秘密鍵(a,b)を持って各トランザクションをチェックし、自分宛のものがあるか確認します。下図にあるように、P'とPが一致すれば受取人は自身への送金であることを証明できます。
MRIが秘匿化について調査した資料が金融庁から発表されており、ステルスアドレスの解説があったため掲載しておきます。
リング署名の概要
リング署名は複数のユーザーを混ぜることによって特定のユーザーを判別しづらくする技術です。MoneroではUTXOの複数のインプットを混ぜることによって送信者を判別しづらくするために利用されています。以下はCryptonoteに載っているリング署名を用いたトランザクション作成手法です。UTXOのInputに、他のトランザクションを混ぜるようにしています。また、二重支払いを防ぐためにキーイメージという公開鍵の写像を登録し、過去に同一キーイメージが利用されていないかをチェックします。これをワンタイムリング署名として名付けています。
MRIが秘匿化について調査した資料に、Monero利用のリング署名の解説があったため掲載しておきます。
ステルスアドレスは送信元アドレスも秘匿するのにリング署名がなぜ必要なのか
既に見たように、Moneroではステルスアドレスへの送信が行われます。そして次のトランザクションもステルスアドレスから送信を行います。ここで、気づく点としてMoneroのトランザクションはステルスアドレス同士の送信になっていきます。つまり、送信者もリング署名を利用するまでもなく本来のアドレスは秘匿されているはずです。リング署名を利用することで、ステルスアドレスも秘匿する必要がなぜあるのでしょうか。
こちらについて、Chaintopeの安土氏(https://techmedia-think.hatenablog.com/ の著者)に答えをいただいたのでまとめます。
インプットとアウトプットのリンクを難読化するためかと。
— Shigeyuki Azuchi (@techmedia_think) June 2, 2020
結論からいうとインプットとアウトプットの難読化という点をあげていただきました。これは、例えばUTXOで複数のinputが1つのoutputにまとめられて送られる時、同じ人からのinputであることを隠せるといった利点になります。ただし、ステルスアドレス自体からのトランザクションであるため具体的に困るケースはどのようなものがあるでしょうか。
Bitcoinみたいにトランザクショングラフが透過的だとコインの流れが分かってしまいプライバシーの課題があるので、トランザクショングラフが分からないようにすることでその改善をしようということだと思います。fungibilityのあるコインにしたいのかと。
— Shigeyuki Azuchi (@techmedia_think) June 2, 2020
ビットコインのトランザクションは完全に透明性があり、また連なっているので、トランザクションがどのような使われ方をして、それがどこに繋がっているかが容易に推定できます。
その他にそういったコインをワザと送ってコインを汚染させていくことで、使用可能なコインの総量を減らすような通貨に対する攻撃も考えられますね。
— Shigeyuki Azuchi (@techmedia_think) June 3, 2020
基本的には現在現金が持っているFungilibityの性質を暗号通貨にも実装しようというものだと思います。
そして、それが問題になる具体的な例として、自分が正当に受け取ったコインが、犯罪に関与したものであった場合、使用不可能になるか同じ価値を持たなくなってしまうという点があります。トランザクションのInputとOutputの関係性が断たれていない以上、トランザクションの特性はステルスアドレス間を辿っていきます。また、大きな局面だと、これを利用して問題のあるわざと送ってコインを汚染させていくことで、使用可能なコインの総量を減らすような通貨全体に対する攻撃もあげていただきました。
まとめ
これを考えると、リング署名は送信者を秘匿化するだけでなく、トランザクションの関連性を秘匿するという特性を持ちます。Moneroのコンセプトとして暗号通貨を用いる際のプライバシー問題として「自分がビジネスで何かを販売しており、相手からBitcoinを受け取り、相手がたまたま犯罪活動に関わっていた場合、犯罪者への資金提供といういわれのない疑いを受ける可能性がある」ことをあげていました。このため、トランザクションの関連性を秘匿化することも非常に重要なトピックとなっていることが伺えます。