リング署名とは?暗号資産が送信者を隠す仕組み

· 9 分で読めます

リング署名を使うと、グループを代表して署名でき、誰でもその署名がグループの鍵のどれかによるものだと確認できる一方で、どの鍵かは誰にもわかりません。この記事では、リング署名を導入した 2001 年の論文からキーイメージ、CLSAG まで、リング署名の仕組みを説明し、Blocknet が 16 のリングを使ってすべての支払いの送信者をプライベートに保つ方法を紹介します。

リング署名とは何ですか?

簡単な答え

リング署名とは、1 つの秘密鍵と、ほかの人たちの公開鍵の組を使って作るデジタル署名です。検証者は、それらの鍵のうちどれかの持ち主が署名したことを確認できますが、どれかはわかりません。署名者はその場でグループを選び、事前設定もほかのメンバーの協力も必要ありません。

通常のデジタル署名は、メッセージを 1 つの公開鍵に結び付けます。リング署名は、メッセージをリングと呼ばれる公開鍵の組に結び付けます。署名者に必要なのは自分の秘密鍵だけで、ほかのメンバーは、すでに公開している公開鍵以外には何も提供しません。外部の人から見ると、リングのどのメンバーも等しく署名者でありえます。

リング署名はどこから生まれたのですか?

Ron Rivest、Adi Shamir、Yael Tauman は、ASIACRYPT 2001 で発表した論文 「How to Leak a Secret」でリング署名を導入しました。論文で使われている例は、ある閣僚が記者に情報をリークする場面です。その閣僚は、情報が内閣から出たものであることは証明しつつ、自分が誰かは明かしたくありません。その閣僚は自分の鍵とほかの閣僚の公開鍵を使って署名し、記者は誰が書いたかを知ることなく署名を検証できます。

この発想が際立っていたのは、2 つの性質があったからです。署名者の正体を暴ける管理者が存在しないことで、これがリング署名を従来のグループ署名と区別しています。そしてリングは即興で作れることです。署名者は署名する瞬間に、公開されている任意の鍵からリングを組み立てられます。著者たちがこの名前を選んだのは、「リングは周縁が均一で中心のない幾何学的な領域」だからです。すべてのメンバーが縁に位置し、誰も主導権を持ちません。署名アルゴリズムも同じ形をしていて、計算の連鎖がぐるりと元に戻ってきます。

リング署名はどのように機能しますか?

暗号資産で使われている現代の方式では、このループをハッシュと楕円曲線の鍵で組み立てます。16 個の公開鍵のリングを例に、考え方を簡単な手順で説明します。

  1. 自分の位置から始める。 署名者はランダムな秘密の数を選び、それをメッセージと一緒にハッシュ化します。そのハッシュが、リングの次の位置のチャレンジになります。
  2. ほかのすべての位置のレスポンスを偽造する。 ほかの 15 人のメンバーそれぞれについて、署名者はランダムなレスポンスを選び、それをそのメンバーの公開鍵と現在のチャレンジと組み合わせて、次の位置のチャレンジを計算します。
  3. リングを閉じる。 一周すると、連鎖は署名者自身の位置に戻ってきます。連鎖をちょうど始まりの位置に着地させる唯一のレスポンスを計算できるのは、その位置の秘密鍵を持っている人だけです。

署名は、開始時のチャレンジと 16 個のレスポンスです。検証者はどこからでも始めて、公開鍵とレスポンスから各チャレンジを計算し直しながらリングを一周し、ループが閉じることを確認します。どの位置も、公開鍵とランダムに見えるレスポンスがあるだけで、見た目は同じです。署名者がどこから始めたかを示すものは何もないので、検証者にわかるのは、どれか 1 つの秘密鍵がリングを閉じたということだけで、それがどれかはわかりません。

キーイメージはどのように二重支払いを防ぎますか?

単純なリング署名には、お金として使ううえで 1 つの穴があります。すべての支払いがほかのアウトプットの中に紛れると、同じコインが 2 回使われてもネットワークにはわかりません。リンク可能なリング署名がこれを解決します。Joseph Liu、Victor Wei、Duncan Wong は、ACISP 2004 で最初のそのような方式である LSAG を発表しました(ePrint 2004/027)。同じ秘密鍵で作った 2 つの署名は互いに結び付けられますが、署名者はリングの中に紛れたままです。

2013 年の CryptoNote の設計は、これをキーイメージにしました。秘密鍵 x と公開鍵 P を持つアウトプットについて、ウォレットは I = x · Hp(P) を計算します。ここで Hp は公開鍵を曲線上の点にハッシュする関数です。署名は、I が署名したリングメンバーのものであることを、どのメンバーかは明かさずに証明します。キーイメージは使われるアウトプットだけで決まるので、そのアウトプットをもう一度使うと必ず同じ I が生まれます。各ノードはすでに見たキーイメージのリストを保持し、それを繰り返すトランザクションを拒否します。

MLSAG から CLSAG へ

金額も隠す暗号資産では、リング署名でもう 1 つの事実を証明する必要があります。隠されたインプットの金額が、トランザクションが使う金額と一致していることです。Shen Noether による 2015 年の論文 「Ring Signature Confidential Transactions for Monero」(RingCT)は、2 組の鍵、つまり所有権のための鍵と金額コミットメントのための鍵にわたるリング署名である MLSAG でこれを実現しました。

Brandon Goodell、Sarang Noether、Arthur Blue による CLSAG(ePrint 2019/654)は、同じ 2 つの事実をよりコンパクトに証明します。Monero は 2020 年 10 月のアップグレードで MLSAG から CLSAG に切り替えました。Monero のドキュメントによると、検証が約 20% 速くなり、一般的な 2 インプット・2 アウトプットのトランザクションは約 2.5 kB から 1.9 kB に縮小しました。

リングサイズはプライバシーにとってどんな意味がありますか?

簡単な答え

リングサイズとは、各リングに含まれるアウトプットの数で、本物のアウトプットとデコイを合わせた数です。リングが 16 なら、観察者にはインプットごとに同じくらい有効な候補が 16 個見えます。サイズが固定されていることは、サイズが大きいことと同じくらい重要です。すべてのインプットが同じサイズを使えば、サイズそのものからは誰がトランザクションを作ったかについて何もわからないからです。

デコイはチェーン上の実在のアウトプットなので、どれも実際に使われているコインである可能性があります。リングのサイズが変えられると、珍しいサイズを選んだウォレットは自分のトランザクションに目印を付けてしまいます。Monero は 2022 年 8 月のアップグレードでリングサイズを 11 から 16 に引き上げ、Blocknet はコンセンサスによってすべてのインプットで 16 を使います。

Blocknet でのリング署名の使い方

Blocknet のすべてのインプットは、ちょうど 16 個のアウトプットからなるリングに対して CLSAG と RingCT で署名されます。ルールはコンセンサスで強制されるので、どのウォレットも適用外にはできません。

トランザクション形式には公開モードがないので、チェーン上のすべての支払いがこのようなリングを持っています。リング署名は送信者を隠し、ワンタイムのステルスアドレスは受信者を隠し、ペダーセンコミットメントと Bulletproofs は金額を隠します。Blocknet が支払いをプライベートに保つ仕組みでは、それぞれの層と、誰かに支払うときにそれが何を意味するかを順に説明しています。

Faraday アップグレードで次に来るもの

blocknetcrypto.com によると、Blocknet は Faraday というネットワークアップグレードを予定しており、2027年2月16日 ごろの有効化が計画されています。サイトの言葉では、「現在、支払いは 16 個のアウトプットの中に紛れています。Faraday の後は、チェーン上のすべてのアウトプットの中に紛れます」。Faraday では新しい支払い証明も導入され、サイトはそれを「量子コンピューターでも支払いを偽造できないように作られている」と説明しています。設計、テスト、敵対的な検証が進められており、日程は確定ではなく予定です。

プライベートに送れる BNT を手に入れる

これらのリングを使うコインを手に入れる簡単な方法は、マイニングすることです。マイナー seine は無料のオープンソースで、お使いのコンピューターに合わせて自動で設定され、bntpool.com がデフォルトのプールなので、数分でマイニングを始められます。設定方法はマイニングガイドで説明しています。自分のアドレスや Blocknet ID の名前宛てに直接マイニングできます。

よくある質問

リング署名とグループ署名の違いは何ですか?

グループ署名には、事前にグループを設定し、誰が署名したかを明かせる管理者が必要です。リング署名には管理者も事前設定もありません。署名者はその場で任意の公開鍵の組を選び、鍵を使われた本人たちを含め、誰も後からどのメンバーが署名したかを証明できません。

リング署名のキーイメージとは何ですか?

キーイメージは、使われるアウトプットの秘密鍵から計算される値です。同じアウトプットからは常に同じキーイメージが生まれるので、ネットワークは 2 回目の使用を拒否しますが、キーイメージからはリングのどのメンバーが本物かはわかりません。これによりリング署名は、二重支払いを防ぐリンク可能なリング署名になります。

CLSAG とは何ですか?

CLSAG は、Brandon Goodell、Sarang Noether、Arthur Blue が 2019 年に発表したリンク可能なリング署名方式です。署名者がリング内のアウトプットの 1 つを所有していることと金額が釣り合っていることを証明し、キーイメージで二重支払いを防ぎます。Monero は 2020 年 10 月に採用し、Blocknet はすべてのインプットを CLSAG と RingCT で署名します。

Blocknet のリングサイズはいくつですか?

Blocknet はすべてのインプットで、ちょうど 16 のリングを使います。本物のアウトプット 1 つと、すでにチェーン上にある実在のアウトプットであるデコイ 15 個です。コンセンサスはそれ以外のサイズを拒否します。すべてのインプットが同じサイズなので、リングサイズで取引が特定されることはなく、本物のアウトプットはリング内のランダムな位置に置かれます。

リング署名は支払いの金額も隠しますか?

いいえ。リング署名が隠すのは、どのアウトプットが支払ったかです。金額は別の層で隠されます。数値を見せずに固定するペダーセンコミットメントと、各金額が有効であることを証明する Bulletproofs の範囲証明です。Blocknet はすべてのトランザクションでこれらすべてを組み合わせ、受信者を隠すワンタイムのステルスアドレスも併用しています。