耐量子暗号特性の仮想通貨とその技術概要
※注意:大雑把な説明であり、私なりの解釈もありますので「耐量子暗号」について興味があれば、ご自分で勉強してみてください。
目次
前回の記事耐量子コンピューター技術の概要は、
「この銘柄は耐量子性があるから凄い」
と手放しで凄いと思わぬようにとの問題提起の内容でした。
あの記事を書いた後に気づいたのですが、
耐量子暗号技術の開発とは、別に量子コンピューターが完成してからではないと検討できない訳ではなく、量子コンピューターで想定されている処理能力では解読できない鍵を作成できる技術を作ればいいのです。
※私はこの部分を勘違いしていました・・・。浅はかでした・・・・。
耐量子性の実装を計画している銘柄をまとめてみました。
(実装済とか言う人いますが、まだ出来てないですよ😅)
※XRPは、誰かが耐量子性を備えていると言っているのを見た気がするのですが、
公式に発表されているのか読み取れませんでした・・・。
IOTAもDAG構造だから耐量子性であるという説明のようですが、理解できないので対象外とします。
1.耐量子性暗号の必要性
ビットコインや仮想通貨で利用されている暗号技術も、セキュリティが高く盗まれてはいけない「秘密鍵」を解読されるようなことはほぼ不可能です。
しかし、量子コンピューター技術が実用化された場合は、その桁外れな処理能力で、現在世の中で利用されている暗号はあっという間に解読されてしまうと言われています。
そこで研究されているのが「耐量子性暗号技術」です。
耐量子性暗号として考えられている署名技術には「ハッシュベース署名」、「格子ベース署名」、「符号ベース署名」、「多変数多項式公開鍵暗号」などがありますが、
仮想通貨のホワイトペーパーを確認すると仮想通貨で採用予定の耐量子性暗号方式は大きく分けて2つの方式が採用されていました。
ハッシュベース署名と格子ベース署名です。
2 ハッシュベース署名
ハッシュ関数を利用した公開鍵暗号による署名は、ビットコインなどでも利用されているものです。SHA-256やECDSAなどを応用して暗号鍵サイズを大きくすれば耐量子コンピュータ特性を持てるのですが暗号鍵サイズが大きい事が実用化に支障があるのです。
ハッシュ関数を利用して更なるセキュリティを高めるためには、一度限りで暗号鍵を利用する「ワンタイム署名(OTS)」方式が考えられました。
Lamport OTS署名、Winternitz OTS署名というものです。
しかし、安全に使えるのは一度キリというものであるため、実用化に耐えられるものではありません。
そこでOTS署名と「マークル木」構造を利用した署名スキーム「MSS」を組み合わせた
「XMSS署名」というものが、耐量子性暗号署名としていくつかの仮想通貨に採用される予定になっています。
これは、一度しか使えない「秘密鍵」「公開鍵」の組み合わせを、あたかも別の組み合わせの鍵であるが如く振舞えるようにするものです。
XMSS署名の仕組み
※下図のトーナメント表みたいなものが「マークル木」です。
数字が書かれた丸は、ハッシュ関数です。
これが、XMSS署名の概念図です。
(1)今回、秘密鍵は、赤の矢印のルートに辿って公開鍵を生成し署名をすることとしたので、6⇒11⇒14⇒15 と辿って行きます。
(2)11のハッシュを利用するためには、6と対の5のハッシュも必要です。
(3)14のハッシュを利用するためには、11と対の12のハッシュが必要です。
(4)15のハッシュを利用するためには、14と対の13のハッシュが必要です。
今回は6のルート使ってスタートしましたが次は3のルートからスタートすることで別の秘密鍵と公開鍵の組み合わせが生成されるのです。
そして公開鍵から秘密鍵を解読しようとする第三者が居たとしてもルートの途中で、次々にハッシュ関数が着いてくるため、
まるで桃太郎の鬼退治に着いてきたお供(猿、犬、雉)達のように次々と仲間が増えて強力な暗号になっているので膨大な解読時間が必要なのです。
さらに、マークル木のツリー構造の階層を深くすることで、強力な暗号と無限の組み合わせが出来上がります。
桃太郎の仲間に虎や熊、イノシシが追加されるような感じですね(w)
XSHについては、「SHIELDプロトコルは、ECDSAをLamport署名、Winternitz署名またはBLISSシグネチャに置き換え、アドレスを「耐量子化」します。」
とだけ書かれており、ハッシュベース署名方式なのか? 次に紹介する格子ベース署名方式を採用するのか、よくわからない書き方になっていました。
※XSHはQRLとADAのホワイトペーパーの耐量子暗号技術の項目を読んでざっと書き込んだのではないかと思うほど雑な印象を受けてしまいました・・・。
NXSは、SHA-3というハッシュを利用した署名方式を採用するようです。
現在SHA-2シリーズが主流ですが、その後継シリーズとして名称が付けられています。
しかしSHA-3は元はKeccakと呼ばれていたもので、厳密にはSHA-2シリーズとは構造が異なります。
(追記:以下 コメントで指摘をされたため訂正いたします。
Nexusはハッシュベース署名を使用していません。
SHA-3は一方向ハッシュ関数のことですから署名方式とは異なります。ECDSAを使用しているので量子耐性はありません。)
3 格子ベース署名
格子ベース署名とは、格子暗号の「格子点探索問題」という数学における難解な計算に基づいた公開鍵暗号方式の総称です
格子暗号の基本原理を説明するには、ベクトルと行列が登場します。
後述しますが、行列が「秘密鍵」と「公開鍵」、ベクトルは暗号化、複合化に必要な数値になります。
行列とベクトルって数学で学んだ気がしますが、こんなところで利用されるんですね・・・
※理解しやすいように2次元の座標で図説します。
(1)格子状の座標に存在する点の集合(行列)が「秘密鍵」です。
これをベクトル化します。
座標(0,1)をベクトルα、(1,0)をベクトルβ とします。
ベクトルαとβはお互いに直交しているため原点と呼ぶことにします。
(2)「秘密鍵」のベクトルα・βの角度をゆがませて非直交なベクトルに変換したものを「基底」と呼ぶことにします。
この非直交に変換されたベクトルα¹とβ¹を行列にしたものが「公開鍵」です。
(3)この公開鍵(ベクトルα¹、β¹)にノイズを加えるべく、m倍して足して点を格子点Gと呼びます。(計算式は、 G=m¹ x α¹ + m² x β¹ )
(4)生成された格子点Gに、さらにベクトルγを足すことにより
暗号文Tが出来上がります。
暗号文Tと公開鍵から秘密鍵を解読するためには、まず格子点Gを見つけることが必要です。
今回の例では、分かり易いように2次元の格子ベクトルで説明しましたが、
行列は、以下のように3次元や多次元でのベクトル計算で暗号化をするために格子点の座標を見つける難易度は格段に高まるのです。
そして格子点を見つけても、秘密鍵に辿り着くにはさらに困難です!
上記のような格子暗号を利用した電子署名を「格子ベース署名」と呼びます。
「格子ベース署名」の暗号化と復号処理の動作は 以下。
ノイズベクトルというのが前述した「格子点G」です。
しかし格子ベースの暗号署名方式には、問題があり暗号文ベクトルがメディアの破損などにより元と異なってしまった場合に復号できなる可能性があるとのことです。
また悪意ある攻撃者がわざと暗号文ベクトルを破損させて、復元不可能にさせるなどの危険もあるようです。
実用化させるには、このようなベクトルが変形しないような技術が必要だということでしょうね?
NICT-情報通信研究機構では「LOTUS」という技術を開発中で、ベクトルの変形への対処も研究中とのこと
のサイトを参照。
量子コンピュータ時代に向けた新暗号技術を開発 | NICT-情報通信研究機構
この格子ベースの暗号署名方式の「BLISS」という技術を採用する予定なのが
ADA,HSRです。
※ADA(Cardano)のホワイトペーパーにBLISSに関する論文へのリンクがあったのですが、BLISSについてはADAとHSR関連しか検索しても出てこないんですよね・・。(本当にそのような技術があるのか分からない。)
BLISSの論文PDFリンク
https://eprint.iacr.org/2014/874.pdf
NEOは、NeoOsという独自の技術を開発しているようです。
※NeoOsは一般の論文としては見ていないため、どのような研究をしているんでしょうね・・・。
まとめ
勉強不足ですが、いろいろ調べてみたところ(仮想通貨に関わらず)世界中の研究機関で耐量子性暗号技術の実用化は、まだまだのように思えました。
個人的には量子コンピューターの開発の進捗動向が非常に気になっています。
仮想通貨で「耐量子性」の技術を取り入れられているから凄い!
と思うのは勝手ですが、人の言うことを鵜呑みにせず、実際にどのように凄いのか調べてみると面白いと思います。