MoneroのRing Confidential Transactionによって利用された技術にMLSAGがありますが、元となった技術としてLWWのLSAG(Linkable Spontaneous Anonymous Group)があります。これはAdam Backが修正を加えることでRingCT利用可能だと伝えたものです。
MLSAGについてもまとめますが、まず基礎知識としてLWWのLSAGについてまとめます。元論文はMonero Research Labが出しているRing Confidential Transactionのペーパーです。
リング署名について
事前知識としてまずリング署名の基礎について触れます。リング署名をとても雑に表現すると、N人のメンバーがいる時、ランダムな値とダミーの公開鍵を用いて順番に署名していきます。
得られた最後の一人の署名を用い、自身の秘密鍵を用いて署名を行うと最初の値になるように値を調整することで循環するリングを作成します。この形を作成することで、第3者からはリング参加者の誰かが秘密鍵署名者であることはわかりつますが、誰かは特定することはできません。
これらの図は「How To Leak a Secret」というリング署名の提案がされた古典論文より引用しています。
LWW のLSAGの署名
LWWのLSAGはリング署名を基にした形です。利用される用語を以下にまとめています。
まず、最初にα、参加者n人全員のダミー公開鍵 ,ランダムな数値, を用意します。
jからスタートし、
- , を計算します。
- 次にから を計算します
- をもちいて , を計算します
- 2同様に を計算します。
- 3同様に を計算します。
4,5を繰り返して まで計算したら、 を となるように調整します。 はed25519の定数である素数。
そのように計算した結果が下図で , となり、 がリング状になります。
の等式変換は図参照。
最終的な署名セットは となる。
LWW のLSAGの署名検証
検証者は、 を用いて、 を計算し、 でリングになっていることを検証する。
キーイメージの利用方法
署名 のうち、 はコインの二重使用を防ぐために利用します。署名者の鍵からキーイメージを計算することで、同一のキーイメージが利用されたらそれは秘密鍵の二重使用とみなす。Moneroはアドレスは使い捨てのため、秘密鍵を二回利用するすなわちコインの二重使用とみなし、不正送金とする。
これを前提にしてMLSAGを次の記事は解説していきます。