量子コンピュータ/耐量子暗号/量子暗号あたりの関係を整理しておく

このへん、結構誤解が多いので、整理しておきます。

#量子コンピュータで解ける暗号/解けない暗号

現状、アルゴリズムを実行できるハードウェアがない、という問題は後で話します。本節は、「理想的なハードウェアがあったとして」の話です。


## RSAと楕円曲線暗号は破られる (Shorのアルゴリズム)
現状は量子コンピュータですべての暗号が(ビット数に対し多項式時間で)解けるわけではありません。
解けるか解けないかは、解くための量子アルゴリズムが見つかっているかどうかで決まります。

巷でよく聞く「量子コンピュータで暗号が解かれる」は、ほぼすべて「Shorのアルゴリズム」を指しています。また、Shorのアルゴリズムで解ける暗号は、**有名なものでは、RSAと楕円曲線暗号だけ**と考えて特に差し支えありません。

たまに、「素因数分解しかできないから楕円曲線暗号は安全」と誤解されている方もいますが、離散対数問題も解けるため、楕円曲線暗号も解けます。[^Shor],[^Shor2]

[^Shor]: [P. Shor (1994) Algorithms for Quantum Computation: Discrete Logarithms and Factoring](https://ieeexplore.ieee.org/abstract/document/365700) ([PDF](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.123.5183&rep=rep1&type=pdf))
[^Shor2]: [P. Shor (1999) Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer](https://epubs.siam.org/doi/abs/10.1137/S0036144598347011) ([arXiv](https://arxiv.org/abs/quant-ph/9508027v2))

## 効果は限定的だが、より広汎的なGroverのアルゴリズム
なお、多項式時間にはなりませんが、Groverのアルゴリズムで計算量のオーダーが古典での総当りのルートになることは知られています。このアルゴリズムは、Shorのアルゴリズムと比べて、より広い用途に使えます。

Microsoft ResearchがAESをGroverのアルゴリズムで解いたときの計算量の予想をしていて[^MS]、それによると、回路の深さ(ざっくり、計算時間に相当します)は、以下のとおりです。

|ビット数|回路深さ|
|:--:|:--:|
|AES-128|$1.16 \cdot 2^{81}$|
|AES-192|$1.33 \cdot 2^{113}$|
|AES-256|$1.57 \cdot 2^{145}$|

ざっくり、Nビットに対し$O(2^{N/2})$と考えることができます。
この程度なら、ビット数を上げれば十分安全かと思いますが、ビット数の少ないものは危険になりうると考えられます。

[^MS]: [M. Grassl, et.al. (2015) Applying Grover’s algorithm to AES:quantum resource estimates](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/1512.04965.pdf)

ただし、以下に述べるように、暗号利用モードなどによっては危険になりうるので注意が必要です。

## Simonのアルゴリズムなど、その他、暗号解読の危険性があるもの
AESであっても、一部の暗号利用モードでは、Simonのアルゴリズムにより解かれるという報告もあります。[^nichigin],[^kaplan]

量子コンピュータだからって何でも解けるわけではありませんが、新たな攻撃方法として量子コンピュータによる攻撃が増えたと考えるべきです。


[^nichigin]: [伊藤, 他 (2019) 量子コンピュータによる脅威を見据えた暗号の移行対応](http://www.imes.boj.or.jp/research/papers/japanese/19-J-15.pdf)
[^kaplan]: [Kaplan, et.al. (2016) Breaking Symmetric Cryptosystems using Quantum Period Finding](https://arxiv.org/abs/1602.05973v3)

# 量子コンピュータのハードウェアの話
今あるハードウェアにはたくさんの課題があり、Googleの量子超越性を示した量子コンピュータをもってしても、暗号解読には全く使い物にならない状況です。

主にあるのは、エラーやノイズの問題です。

- 今の量子コンピュータは短時間(100マイクロ秒もないくらい)しか量子状態を保つことができません
- 量子状態を保っていられる間に計算が終わる必要があります。さすがにそこまでは速くなりません
- また、ゲートをかけたとき(つまり計算したとき)のエラーレートも高いため、たくさんのゲートをかけた計算は、まず合いません

また、そもそも量子ビット数も足りません。(アルゴリズムによりますが、RSAならビット数の数倍、AESは[^MS]にありますが、AES-128で2,953量子ビットが必要)

これからの数年で、もしかしたら、

- 量子ビット数が数百ビット
- 量子誤り訂正で、1量子ビットないし2量子ビットを長時間保つ

などは、開発が進む可能性がありますが、量子誤り訂正ありで数百〜数千量子ビットを保つのは、到底数年では無理と言えるでしょう。(20年以内とか50年はかかるとか、いろんな予想がありますが、どれも、大した根拠はありません)

# 耐量子暗号
「耐量子暗号」あるいは「ポスト量子暗号」とは、RSAや楕円曲線暗号の代わりとなる、量子コンピュータでも解けない(と信じられている)暗号です。

**耐量子暗号は、通常のコンピュータ等でも使うことができる暗号化方式です。**量子コンピュータがなくても利用できます。

何種類か提案されていますが、格子暗号[^lattice]などが有力です。2016年には、Chromeブラウザの開発者版(Canary)で、httpsで耐量子暗号を使えるようになっています。[^chrome]

[^lattice]: [青野, 2013](https://www.nict.go.jp/publication/NICT-News/1303/02.html)
[^chrome]: [ZDNet Japan, 2016/7/8 グーグルが耐量子計算機暗号の実験を開始](https://japan.zdnet.com/article/35085557/)

##耐量子暗号への移行の話
「暗号解読ができる量子コンピュータが当面は出来ないのなら、まだ耐量子暗号のことは考えなくていいのでは?」と思われた方もいるかもしれません。
ですが、RSAや楕円曲線暗号は既に多くの場面で広く利用されており、それらを置き換えるには長い年月がかかります。
そのため、米国NISTや日本国内でもCRYPTRECなど、各国の政府機関等は、既に移行に向けて動き始めています[^nichigin],[^nict]

[^nict]: https://www.pco-prime.com/2019cybersympo/pdf/shinohara.pdf

# 量子暗号
より正確な用語では「量子鍵配送」といいます。ざっくりというと、量子が複製不可能である、という性質を利用して、量子を送受信することで、送信者と受信者がランダムなビットを共有して、それをワンタイムパッド(一度しか使わない、使い捨ての暗号鍵)に使うのが量子暗号です。

理論上は盗聴不可能なことが示されている夢の暗号なのですが、送信者、受信者は、何らかの量子を送信あるいは受信する設備を持っている必要があります。
また、量子を通信するための経路も大変で、増幅器を噛ませない光ファイバーを用意するとか、人工衛星を経由して量子を送受信するとか、いずれにせよ、通常の通信よりも高コスト低スループットになります。

当面は、軍事などの特殊な用途に限られるのではないかと思われます。

# まとめ

- 今の量子コンピュータ
    - しょぼい。暗号解くの無理
- しょぼくない量子コンピュータ
    - いつ出るか分からないが、出たらヤバい
- RSAと楕円曲線暗号
    - しょぼくない量子コンピュータが出たら終わる
- その他の暗号方式
    - Groverで計算オーダーは減るので、鍵を伸ばすと良き
    - 攻撃方法が増えることには注意が必要。暗号利用モードとか、そういうのにも注意
- 耐量子暗号
    - 普通のコンピュータで使える、量子コンピュータに強い暗号
    - 近い将来、RSAや楕円曲線暗号は耐量子暗号に移行する予定
- 量子暗号
    - 大掛かりな設備が必要だけど、解読不可能な暗号