はじめまして, 布衣と申します. 博士後期課程の学生で, 専攻は数学, 専門は暗号です. 私の研究テーマであるUOVについて説明します. 学部1, 2年程度の知識で読めると思います.
暗号という分野があります. 素因数分解の困難性が暗号に利用されているというのは聞いたことがあると思います. 暗号と聞くと, あるメッセージを特定の人物のみが読める状態にすることを想像すると思います. しかし実際は, この技術は暗号(cryptography)という広い概念の一つに過ぎません. かつてはこの暗号化(encryption)という目的のみに焦点が当てられていた暗号技術は, 現在では多種多様な課題を解決するための強力な技術群となっています. それらのうち, 私の研究テーマであるUOVは「署名」という方式に分類されます.
暗号化の敵が盗聴ならば, 署名の敵は何でしょうか. それは偽造です. 逆に言えば, 偽造できない文字列こそ署名であると言えます. 暗号技術のうち署名方式では偽造不可能性を提供します.
偽造できない文字列を実装すると何が嬉しいかというと, オンラインで契約書にサインしたり, 電子決済の際の本人確認が出来たりします. さらに現実のサインと異なり, 一度サインした文書を後から改竄できなくしたりできます.
署名の概要
署名方式は以下の手順で実現されます.
少し話が変わりますが, 量子計算機というものが台頭しつつあります. 「Shorのアルゴリズムというものがあり, 量子計算機は現在広く使われているRSA暗号や楕円曲線暗号を解読できる」というのは聞いたことがある人も多いと思います. この「暗号を解読する」というのは暗号化に限らず, 署名も, ハッシュ関数も, 乱数も, ゼロ知識証明も, マルチパーティ計算も, すべてを解読できることを意味します. 要するに安全性の根拠になっている問題を解くことができるので, その応用先は関係ないというわけです.
そのため量子計算機を用いた攻撃にも耐えうる新たな暗号, 耐量子計算機暗号を(各種の方式で)作る必要があります. 暗号の分野ではずっと前からこの耐量子計算機暗号の構築が目下の課題となっています. 新たな計算技術の脅威性はエニグマが身をもって教えてくれた教訓と言えるかもしれません.
量子計算機への対策は耐量子計算機暗号だけではありません. 他の対策としては量子暗号というものがあります. これは通信が量子化されている前提の方式で, 理論的に解読不可能と言われています. 耐量子計算機暗号の優れている点は, 古典通信, 古典計算機で動作するにもかかわらず, 量子計算機を用いても解読できないという点にあります. 今持ってるパソコンで量子計算機の脅威に対応できるのが耐量子計算機暗号です.
暗号というのはみんなが好き勝手な方式を使うと不便な上, その安全性が素人には判断できず, さらにはシステムの中に脆弱な暗号が紛れていると, そこを起点に芋づる式に攻撃されてしまう可能性があるという性質上, 普及の前に標準化という作業が行われます. 標準化では安全性だけでなく時間的, 空間的な効率も評価され, 総合的に優れた暗号が選出されます.
耐量子計算機暗号の標準化プロジェクトで代表的なのはNISTでの標準化です. これはコンペ形式で, ラウンドという区切りごとに少しずつ落選していきます. 標準化作業は現在も続いていて, UOVは現在生き残っている署名方式の一つです. UOVは20年以上様々な攻撃に耐えてきた実績と, 時間的な効率の良さが評価されています. 一方で公開鍵のデータサイズが大きい点が課題となっています.
RSA暗号の安全性の根拠は素因数分解問題です. ではUOVの根拠は何でしょうか. UOVは多変数公開鍵暗号に分類され, その安全性の根拠は(有限体上の多変数多項式からなる)連立方程式です.
線形な連立方程式は掃き出し法で解くことができます. では非線形な連立方程式はどうでしょうか. 実は解く方法がないわけではないのですが, その方法自体が計算量的に遅く, 非線形な連立方程式を解くのは困難であると言われています.
この非線形な連立方程式の求解困難性を安全性の根拠にした暗号を多変数公開鍵暗号といいます. UOVは最も基本的で最も洗練された多変数公開鍵暗号といえます. ちなみに多変数公開鍵暗号の具体的なアルゴリズムを最初に提案したのは日本人で, 松本-今井暗号と呼ばれています.
非線形であれば十分なので, よく二次多変数多項式からなる連立方程式が用いられます. この二次多項式多項式からなる連立方程式の求解問題はMQ問題といいます. UOVもMQ問題の困難性が根拠となっています.
さて, UOVの構成について説明します. UOVは前身となるOil and Vinegarが提案されてから20年以上, 安全性や効率について無数の議論を経て洗練に洗練を重ねた傑作です. ここではオリジナルとも最新版とも異なる, 最も説明しやすいバージョンで説明します.
UOVは多変数公開鍵暗号に属するため, 連立方程式が登場します.
変数
UOVは署名方式なので, 署名したいメッセージ
鍵生成では署名したい人が秘密鍵と公開鍵を生成します.
まず, oil変数のみからなる項を含まない二次形式を
と書くことができます. なんか数式が中央に来ないな.
この二次形式列は「oil変数のみからなる項を含まない」という性質があります. この性質により, 連立方程式としては全く難しくありません(署名のところで説明します). これを「難しい連立方程式」に変換します.
正則な
で二次形式列
もとの変数列
署名ではメッセージ
目標としては
(
では
このようにして
署名を偽造しようとする攻撃者は, なりすましたい相手の公開鍵
暗号は計算機が相手ですので, 非常に大きいパラメータで実装されます. しかし大きい数字で説明されてもわからないので, 小さいパラメータで具体例を構成して説明します. これを toy example といいます.
有限体だと計算しにくいので, ここでは
変数の数
(実際は
UOVでは
今,
まず, oil変数のみからなる項を含まない二次形式を
変数
このうちoil変数
の
に適当に係数を振り分けます.
これらをまとめて
ところで, 二次形式は対称行列としての表現を持ちます. 上の
となります. ここで二次形式
(
(この表現は今
次に正則な
とします. これが秘密鍵になります.
であるから, 真ん中の
を計算すると,
が得られます. 同様に
を計算すると,
が得られます. すなわち公開鍵
となります. (計算が合っていれば)
署名したいメッセージを
まず,
を解きます. そこで, vinegar変数
式を整理すると,
となり, oil変数
であるから,
公開鍵
と, メッセージ
公開鍵に署名を代入し, メッセージに一致するかどうかを調べます.
となり, この署名は正当なものであることがわかりました.
これが私の公開鍵です. これを使って署名を検証してください. と, ネット越しで言われても信用できません. そのため, 現実世界で公開鍵を事前に登録しておく必要があります.
マイナンバーカードを作成したときのことを思い出してください. 作成したことがない人は......想像力でカバーしてください. マイナンバーカードを作るとは, 上で言う鍵生成を行うことをいいます. 役所に行って本人確認をしたはずです. あれは電子的な公開鍵と現実の特定の個人を関連付けるために必要な作業だったのです. その後パスワードのようなものを設定したはずです. 具体的な実装は知りませんが, 秘密鍵を生成するための乱数シードにでも使っていると思います. このようにして秘密鍵と公開鍵を作り, 公開鍵は役所に知らせます.
次に役所は(外注してるかもしれませんが)自身で生成した鍵を使って公開鍵に署名します. この署名を電子証明書といい, 本人確認済みの公開鍵なので信用しろという意味が込められています.
今回はマイナンバーカードを例に説明しましたが, 署名はどの社会実装においてもこのように運用されています. この本人確認や電子証明書の発行, さらには古くなって廃棄した電子証明書の管理などを行う機関を「認証局」といいます. つまり認証局とは機能の集合で, その要素として本人確認を行う「登録局」, 電子証明書の発行と失効を行う「発行局」, 問い合わせのあった電子証明書が現在有効なのか失効済みなのかの情報を提供する「リポジトリ」によって構成されています.
どの程度の信頼性を要求するかにもよりますが, この電子証明書にも本物かどうか疑う余地があります. そのため電子証明書を生成したときの公開鍵にまた別の機関が署名することがあります. このように, 署名の運用はマシン上で完結せず社会システムとしての構造があります. この社会システムを特に公開鍵基盤といいます.
ちなみに今説明している技術は紙とペン(もしくは印鑑)で行う署名と区別して電子署名などと呼ばれますが, この電子署名は電子署名法により自署や印鑑と同等の法的効力が認められています.
ところで, 現在マイナンバーカードに実装されている署名は耐量子性を持ちません. そのため近いうちに方式が新しくなるはずです. 何になるかは知りませんが, UOVは有力な候補といえます.
多変数公開鍵暗号は量子計算機の脅威が明らかとなる前から研究されていて, 当時のモチベーションはカード類への実装でした. カードでピッと処理するには検証が高速である必要があります. UOVの検証は二次形式に値を代入するだけなので, 他の方式と比べても極めて高速です. この性質と, のちに明らかとなった耐量子性を考慮すると, マイナンバーカードにUOVが実装される可能性は低くありません.
UOVについてざっくり説明しました. まだまだ無限に話すことはあるのですが, 疲れたのでここで終わりにします. 気が向いたら続きを書きます. 続きというのは, 証明可能安全性, 安全性解析, 実装, 変種などについてです.
参考文献は面倒なので詳しく書きませんが, 興味がある人はNISTの標準化計画のUOVの仕様書を読むといいと思います↓
UOVの仕様書
ここまで読んでいただきありがとうございました.