〒186-0002
東京都国立市東2-21-3

TEL : 042-843-0268

製品進化とマネジメント風景 第135話 耐量子計算機を意識した暗号導入のマネジメント

量子計算機の開発が世界中で進んでいます。その理由は結局の所、安全保障上の要求に端を発しているのでしょうが、実際に普及すれば個人レベルにも大きな影響を及ぼします。仮に耐量子計算機暗号が普及していなければ、安心してネットショッピングやネット銀行も使えなくなってしまうからです。 

卑近な例を挙げてみましょう。最近は、コンビニエンスストアだけでなく、ファーストフード店でも人の居るレジが減り、代わりに無人レジが増えてきました。無人レジでは現金は使えず、電子マネーでしか決済できませんので電子マネーを使いますが、この決済時に暗号が活躍しています。 

仮に量子計算機が一般化した時代に、耐量子計算機暗号がまだ完全には普及していないとしても、暗号を解読するには一定の時間とコストがかかるので、投資したリソースに見合う対象が狙われるはずであり、すべての人の生活がすぐに脅かされることはないだろうと推察します。 

しかし、暗号解読に要する時間とコストが下がるにつれ、この種の犯罪は急速に広まる可能性があり、それが人々の心に不安を植え付けます。不安の感情は人を動かす大きなドライバーとなるので、リスクはそれほど大きくなくても多くの人はそれを嫌います。 

その結果、便利さと安全性をはかりに掛けて、後者を優先し、電子マネーを使わなくなる人も増えるのではないでしょうか。そうなると無人レジが減り、人の居る現金レジが増えるという逆転現象が起こることになるかもしれません。 

後から振り返ると、暗号の専門家を除けば、2024年という年はおそらく耐量子計算機暗号が本格的に意識され始めた最初の年になるのではないかと思います。なぜなら、2024年8月に米国国立標準技術研究所(NIST)が耐量子計算機暗号として、今後、標準的に使用する暗号を選定し、一般メディアでも報道されたからです。 

NISTは、国家安全保障にかかわる機密情報を2030年から2033年までにすべて耐量子計算機暗号で保護することを求めていました。実際に暗号を実装して安全に使えるようになるには数年の時間が掛かるでしょうから、そろそろどの暗号を使うかを決める時期にあったわけです。 

暗号の専門家は、1994年には耐量子計算機暗号の必要性を意識していたでしょう。その年に、現在、共通鍵暗号として使用されている主要暗号(RSA、ECDH、ECDSAなど)が量子計算機により「短時間」で解かれてしまうことが証明されたからです。 

共通鍵暗号として使用されている中でも有名なのは、大きな数字の素因数分解を扱うRSA暗号です。クレジットカードの認証などでも使われていると聞きます。 

「短時間」とはどれくらいかと言えば、2048ビットのRSA暗号を約8時間で解けるという報告が出ていました。1日をかけずに解けてしまうので、十分、短い時間で解けると言って良いでしょう。 

では、どうやって解くのかと言えば、それはshorのアルゴリズムを使うのです。すでに量子計算機用のpythonプログラムまで作成されています。このアルゴリズムを大雑把に述べると以下のようになります。 

素因数分解は「位数発見問題」に置き換えて解くことができます。素数を含む大きな数字をある数字Nで割った余りを求める演算がありますが、これを利用することで、素数の周期性を見つけることができ、その周期性を位数と呼んでいます。この位数を見つければ、暗号に使用している素因数分解をできるのです。 
 
今のコンピュータでも同じ事はできるのですが、短時間では解くことができません。これに対して量子計算機は、その超並列性を活かして短時間で解くことができるのです。 

米国では2024年に耐量子計算機暗号を標準化したと述べましたが、ここからは耐量子暗号がどういうものなのかを見ていくことにします。 

NISTが2024年8月に標準化したのは4つの暗号です。1つは暗号化の鍵共有時に使う共通鍵であり、これにはCRYSTALS-KYBERが選定されました。残りの3つはデジタル署名時に使用するものであり、CRYSTALS-DILITHIUM、FalconおよびSPHINCS+です。 

なお、鍵共有時の暗号方式については1つしかないので、引き続き、別の暗号を探索する活動が行われる予定です。上記の4つの暗号のうち、3つは格子暗号の系統であり、唯一、SPHINCS+のみが他の方式、具体的にはハッシュ関数を用いたものです。 

格子暗号は、多次元の格子を考え、その格子上の点をベクトルの和で表現します。暗号化に際しては格子を少しだけ傾けて誤差項を導入し、この誤差項を暗号に関連づけることで解読の難易度が高まると言われています。暗号の鍵として使われるのは多次元のベクトルです。当然のことですが、このベクトルの次元数を上げることでも解読の難易度を上げることが可能です。 

格子暗号が採用された理由は、古典コンピュータはもちろん、量子計算機においても短時間で解読するアルゴリズムがまだ見つけられていないからです。ハッシュ関数も同様です。ハッシュ関数は今日でもあちこちで使われていますが、実は、格子暗号よりも安全だと考えられています。 

安全性が高いならば、なぜ、格子暗号の方がより多く採用されたのでしょうか? それは、ハッシュ関数が代数的な構造に依存しないため、処理効率が悪く、電子署名に適用するとその署名長が格子暗号の10倍以上にもなってしまうからです。署名長が長いということは、同じコンピュータで処理すると待たされる時間が長くなるということを意味します。

特定の構造を持たないということは、暗号としての安全性が高いことを意味しますが、効率的に処理できないことが実用上の問題を生じさせるので、この方式を普及させるべきかどうかの議論が分かれているのです。

鍵共有方式についてはKyberの1つだけであり、今後も他の方式が検討されていくのですが、それらの候補は格子暗号の系統とは異なる系統で探索する方針が決まっています。なぜなら、もし、格子暗号の1つについてその解読方法が見つかってしまったら、他の格子暗号も安全と言えなくなってしまうからです。別の系統として有力なのは符号暗号です。 

符号理論で我々に馴染みがあるのは、情報の損失を抑制しつつ情報を圧縮するという用途です。具体的には動画や音声データの圧縮に適用されています。その中でもH264が有名ですね。 H264は古いXIDと比べると、多くの場合、動画サイズを1/5以下に圧縮できます。ハードディスク容量を減らすだけでなく、動画の編集性にも大きな影響を及ぼします。

さて、符号理論の中にはいくつか系統があり、暗号に用いられているのは、圧縮理論の系統とは異なり、誤差誤り訂正の系統です。これに基礎をおいて作られた暗号にマックエリス暗号があります。RSA暗号とほぼ同時期の1974年に発表されましたが、公開鍵と秘密鍵のサイズがRSAと比べて大きく、実装性で劣ったため、これまで注目されてきませんでした。 

しかし、量子計算機の実用化が見えてきた今、温故知新ではないですが、再び、注目され始めました。その結果、今では耐量子計算機暗号のベンチマーク指標になっています。1409次元暗号というものがあり、それらはかつて安全だと考えられていたのですが、日本の機関が1日強の時間で解読できるようにしてしまいました。そのため、耐量子計算機の暗号にするには、次元数を3488次元以上に上げる必要があると指摘されています。 ちなみに符号暗号では、マックスエリス暗号以外にもBIKE、HQCがありますが、内容が数学的になりすぎるのでここでは述べません。

今後、耐量子計算機暗号が米国で標準化され、他国においてもまずは国家機密の暗号化の更新に適用されることになると予想されますが、日本の民間企業はいつから真剣に考える必要があるのでしょうか? 

1つ確かなことは、暗号の鍵のサイズが大幅に大きくなることです。よって、実装した際に、今と同レベルの時間内に処理するためには、メモリやプロセッサのスピードを大きく高めなければなりません。既存タイプのCPUとメモリだけで対応できるならば大きな問題は生じないと思いますが、GPUと専用のメモリが必要になる可能性もあります。

今のGPUおよび専用メモリははっきりいって高価です。GPU搭載のPCの価格は、非搭載のPC価格の5~6倍です。仮に耐量子計算機暗号のインフラとしてGPU搭載PCが必須条件であるということになってしまったら、一部の企業を除いて量子暗号が普及するようには思えません。 

銀行や国家の機密情報を扱う一部の企業は、早い時期から耐量子計算機暗号を採用するでしょうが、一般の民間企業は、暗号インフラの価格が下がってきた時期を見極めて動きはじめることになるのではないでしょうか? 

そう考えると、耐量子計算機暗号の普及にとって大事なのは、月並みな話になってしまいますが、CPUであれGPUであれ、解読に必要な高性能半導体の製造コストを安くすることになりそうですね。