説明

量子公開鍵暗号システム、鍵生成装置、暗号化装置、復号装置、鍵生成方法、暗号化方法、及び復号方法

【課題】最大エンタングルメント状態の特性を利用し、より安全で利便性の高い量子公開鍵暗号システムを実現すること。
【解決手段】発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子ゲートU、L、Rを生成し、m量子ビットの入力状態に応じて量子ゲートUの動作が制御されるように制御化された量子ゲートCUを生成し、量子ゲートCUに量子ゲートL、Rを付加して量子ゲートGを生成し、量子ゲートGを難読化して公開鍵Pを生成し、量子ゲートCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子ゲートCUと、ユニタリ演算Rの複素共役Rに対応する量子ゲートRとを生成し、量子ゲートCUと量子ゲートRとを接続して秘密鍵Sを生成する鍵生成装置が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子公開鍵暗号システム、鍵生成装置、暗号化装置、復号装置、鍵生成方法、暗号化方法、及び復号方法に関する。
【背景技術】
【0002】
情報処理技術や通信技術の急速な発展に伴い、公文書、私文書を問わず、文書の電子化が急速に進んでいる。これに伴い、多くの個人や企業は、電子文書の安全管理に大きな関心を寄せている。こうした関心の高まりを受け、各方面で電子文書の盗聴や偽造等のタンパリング行為に対する安全性が盛んに議論されるようになってきた。電子文書の盗聴に対する安全性は、例えば、電子文書を暗号化することにより確保される。また、電子文書の偽造に対する安全性は、例えば、電子署名を利用することにより確保される。但し、暗号や電子署名には十分なタンパリング耐性が求められる。
【0003】
現在広く利用されている公開鍵暗号は、古典的なコンピュータの計算量的複雑性を安全性の根拠としている。例えば、RSA暗号は、「大きな合成数に対する素因数分解の困難性(以下、素因数分解問題)」を安全性の根拠としている。また、DSA暗号やElGamal暗号は、「離散対数問題に対する解答の困難性」を安全性の根拠としている。しかし、量子コンピュータは、素因数分解問題や離散対数問題に対する解答を効率的に算出することができると言われている。つまり、現在広く利用されている上記の暗号は、量子コンピュータが実用化されると、その安全性が保証されない。
【0004】
なお、上記の「古典」という表現は、「量子」ではないという意味で用いている。また、「量子」という表現は、量子力学の原理に基づいているか、量子力学の原理を応用していることを意味している。例えば、量子コンピュータは、量子力学における重ね合わせの原理を応用した計算機である。また、BB84等の量子鍵配送方式は、量子力学の不確定性原理を利用している。
【0005】
こうした実状を背景に、量子コンピュータが実用化された際にも安全性が保証されるような公開鍵暗号系の研究が盛んに行われている。その一つの方向性は、量子コンピュータを用いても効率的に計算することが困難な問題(例えば、多変数多項式に対する解答の困難性)を安全性の根拠として古典通信路における公開鍵暗号系を実現しようとするものである。また、他の方向性は、量子通信路と量子演算とを用いて、量子コンピュータを用いた攻撃に対する安全性が保証されるような量子公開鍵暗号系を実現しようとするものである。例えば、下記の非特許文献1、特許文献1、2には、量子公開鍵暗号系に関する研究成果の一例が示されている。
【0006】
非特許文献1、特許文献1に記載の量子公開鍵暗号系は、ナップサック問題の特殊な場合である部分和問題の計算量的な複雑性を安全性の根拠としている。この部分和問題とは、「与えられたn個の整数a,…,aから部分集合をうまく選び、その部分集合に属する数の和を、与えられた数Nに等しくすることができるか」を判定する問題である。この部分和問題は、計算量クラスNP完全に属している。しかし、量子コンピュータを用いて部分和問題を解くことが極めて困難であるか否かは自明ではない。そのため、上記非特許文献1、特許文献1に記載の量子公開鍵暗号系は、量子コンピュータを用いた攻撃に対して必ずしも安全であるとは言えない。
【0007】
また、特許文献1に記載の量子公開鍵暗号系は、量子状態を公開鍵として利用している。そのため、特許文献1に記載の量子公開鍵暗号系を利用すると、次のような問題が生じてしまう。通常、公開鍵暗号系で用いる公開鍵は認証局により認証を受ける。公開鍵が古典的に記述された情報(以下、古典情報)であれば、その公開鍵が確かに認証局による認証を受けたものであるか否かを検証できる。しかし、量子状態で表現された公開鍵(以下、量子公開鍵)に対する認証の有無を検証できるか否かは必ずしも自明ではない。例えば、量子状態は、測定により状態が変化してしまうため、量子公開鍵に対する認証の有無を検証すると、その量子公開鍵が公開鍵としての用を成さなくなる可能性がある。
【0008】
一方、下記の特許文献2に記載の量子公開鍵暗号系は、量子状態と古典情報とを組み合わせたハイブリッド型の公開鍵(以下、ハイブリッド公開鍵)を利用している。ハイブリッド公開鍵は、古典情報の部分を含んでいる。そのため、古典情報の部分を利用して認証を行い、古典情報の部分を利用して認証の有無を検証することで、量子状態を攪乱せずに認証の有無を検証することが可能である。もちろん、量子状態に対する検証は行われない。しかし、量子状態が何らかの改竄を受けると、検証済みの古典情報との齟齬が生じるため、ハイブリッド公開鍵を用いた暗号化や秘密鍵を用いた復号に失敗する。従って、実際上、量子状態に対する検証が行われなくても問題はない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特許第3615132号公報
【特許文献2】特開2008−294666号公報
【非特許文献】
【0010】
【非特許文献1】T. Okamoto, K. Tanaka, S. Uchiyama. “Quantum Public Key Cryptosystems&quot”,Proc. of CRYTPTO 2000, LNCS 1880,pp.147−pp.165, Springer−Verlag(2000).
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、上記の特許文献2に記載のハイブリッド公開鍵は、やや利便性が低い。上記の通り、ハイブリッド公開鍵は、古典情報と量子状態との組み合わせで構成されている。つまり、配布される一つ一つの古典情報に対して個々に量子状態の鍵が対応する。従って、鍵生成に要するコストが増大してしまう。また、暗号化・復号の成否が復号処理の完了を待って確定されるため、暗号化・復号が失敗する場合、復号処理の完了まで余分な通信を行うこととなり、低効率化に繋がってしまう。以上説明した理由から、量子コンピュータによる攻撃に対して安全性が保証され、公開鍵の認証が可能であり、かつ、量子公開鍵暗号系の中で暗号化・復号処理の非効率化を招かないような仕組みが望まれている。
【0012】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、より安全で利便性の高い量子公開鍵暗号系を実現することが可能な、新規かつ改良された量子公開鍵暗号システム、鍵生成装置、暗号化装置、復号装置、鍵生成方法、暗号化方法、及び復号方法を提供することにある。
【課題を解決するための手段】
【0013】
上記課題を解決するために、本発明のある観点によれば、第1の量子情報処理装置と、量子通信路を介して前記第1の量子情報処理装置に接続された第2の量子情報処理装置と、古典通信路を介して前記第1及び第2の量子情報処理装置に接続された認証局と、を含み、前記第1の量子情報処理装置は、公開鍵と秘密鍵とを生成する鍵生成部と、前記鍵生成部により生成された公開鍵を、前記古典通信路を介して前記認証局に送信する第1古典送信部と、前記第2の量子情報処理装置から前記量子通信路を介して送信された、暗号化された量子状態を受信する第1量子受信部と、前記鍵生成部により生成された秘密鍵を用いて、前記第1量子受信部により受信された、前記暗号化された量子状態から元の量子状態を復元する復号部と、を有し、前記認証局は、前記第1の量子情報処理装置から前記古典通信路を介して送信された公開鍵を受信する第1古典受信部と、前記第1古典受信部により受信された公開鍵を認証する認証部と、前記認証部により認証された公開鍵を前記古典通信路を介して前記第2の量子情報処理装置に送信する第2古典送信部と、を有し、前記第2の量子情報処理装置は、前記認証局から前記古典通信路を介して送信された公開鍵を受信する第2古典受信部と、前記第2古典受信部により受信された公開鍵を用いて量子状態を暗号化する暗号化部と、前記暗号化部により暗号化された量子状態を前記量子通信路を介して前記第1の量子情報処理装置に送信する量子送信部と、を有する、量子公開鍵暗号システムが提供される。
【0014】
また、前記鍵生成部は、乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して前記公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、前記量子プログラムCUと前記量子プログラムRとを接続して前記秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、を含んでいてもよい。
【0015】
また、前記暗号化部は、量子コンピュータから成り、2m量子ビットの最大エンタングルメント状態を生成し、当該2m量子ビットの最大エンタングルメント状態のうち、m量子ビットの量子状態と、送信すべきn量子ビットの量子状態|ψ>と、を前記公開鍵に対応する量子プログラムPに入力して前記暗号化された量子状態を算出するように構成されていてもよい。
【0016】
また、前記復号部は、量子コンピュータから成り、前記暗号化された量子状態を前記秘密鍵に対応する量子プログラムSに入力して元の量子状態|ψ>を算出するように構成されていてもよい。
【0017】
また、前記暗号化部は、2m量子ビットの最大エンタングルメント状態を生成し、当該2m量子ビットの最大エンタングルメント状態のうち、m量子ビットの量子状態を保持しておき、残りm量子ビットの量子状態を、前記量子状態|ψ>と共に前記量子プログラムPに入力し、前記量子状態|ψ>に対応する量子プログラムPの出力に、保持しておいたm量子ビットの量子状態を付加して前記暗号化された量子状態を算出するように構成されていてもよい。
【0018】
また、前記量子プログラム難読化部は、前記量子プログラムGを、前記量子プログラムGに対応するユニタリ演算と同じ演算内容を有する別の量子プログラムG’に置き換えることで前記量子プログラムGを難読化するように構成されていてもよい。
【0019】
また、前記量子プログラム難読化部は、前記量子プログラムGの一部を成す部分量子プログラムgを、当該部分量子プログラムgと同じ演算内容を有する別の量子プログラムg’に置き換えることで前記量子プログラムGを難読化するように構成されていてもよい。
【0020】
また、上記課題を解決するために、本発明の別の観点によれば、乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、を備える、鍵生成装置が提供される。
【0021】
また、上記課題を解決するために、本発明の別の観点によれば、乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、を有する鍵生成装置により生成された公開鍵に対応する量子プログラムPを保持する公開鍵保持部と、量子コンピュータを利用して、2m量子ビットの最大エンタングルメント状態を生成するエンタングルメント状態生成部と、前記エンタングルメント状態生成部により生成された最大エンタングルメント状態と、送信すべきn量子ビットの量子状態と、を前記公開鍵に対応する量子プログラムPに入力して前記暗号化された量子状態を算出する暗号化部と、を備える、暗号化装置が提供される。
【0022】
また、上記課題を解決するために、本発明の別の観点によれば、乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、を有する鍵生成装置により生成された秘密鍵に対応する量子プログラムSを保持する秘密鍵保持部と、量子コンピュータを利用し、前記公開鍵に対応する量子プログラムPを用いて生成された、暗号化された量子状態を前記秘密鍵に対応する量子プログラムSに入力して元の量子状態を算出する復号部と、を備える、復号装置が提供される。
【0023】
また、上記課題を解決するために、本発明の別の観点によれば、乱数を発生させる乱数発生ステップと、前記乱数発生ステップで発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成ステップと、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化ステップと、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加ステップと、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化ステップと、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成ステップと、前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続ステップと、を含む、鍵生成方法が提供される。
【0024】
また、上記課題を解決するために、本発明の別の観点によれば、量子コンピュータを利用して、2m量子ビットの最大エンタングルメント状態を生成するエンタングルメント状態生成ステップと、乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、を有する鍵生成装置により生成された公開鍵に対応する量子プログラムPに対し、量子コンピュータを利用して、前記エンタングルメント状態生成ステップで生成された2m量子ビットの最大エンタングルメント状態のうち、m量子ビットの量子状態と、送信すべきn量子ビットの量子状態と、を入力して前記暗号化された量子状態を算出する暗号化ステップと、を含む、暗号化方法が提供される。
【0025】
また、上記課題を解決するために、本発明の別の観点によれば、乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、を有する鍵生成装置により生成された秘密鍵に対応する量子プログラムSに対し、量子コンピュータを利用して、前記公開鍵に対応する量子プログラムPを用いて生成された、暗号化された量子状態を入力して元の量子状態を算出する復号ステップを含む、復号方法が提供される。
【発明の効果】
【0026】
以上説明したように本発明によれば、最大エンタングルメント状態の表現基底が非一意であるという性質を利用して、より安全で利便性の高い量子公開鍵暗号系が実現される。
【図面の簡単な説明】
【0027】
【図1】本発明の一実施形態に係る量子公開鍵暗号システムの全体構成の一例を示す説明図である。
【図2】同実施形態に係る鍵生成装置の機能構成例を示す説明図である。
【図3】同実施形態に係る鍵生成方法における処理の流れを示す説明図である。
【図4】ユニバーサル量子回路の構築に利用する量子回路の一例を示す説明図である。
【図5】同実施形態に係る量子プログラム生成方法の一例を示す説明図である。
【図6】同実施形態に係る制御化方法の一例を示す説明図である。
【図7】同実施形態に係る量子プログラム付加方法の一例を示す説明図である。
【図8】同実施形態に係る難読化方法の一例を示す説明図である。
【図9】同実施形態に係る難読化方法の一例を示す説明図である。
【図10】同実施形態に係る難読化方法の一例を示す説明図である。
【図11】同実施形態に係る逆量子プログラムの生成方法の一例を示す説明図である。
【図12】同実施形態に係る逆量子プログラムの接続方法の一例を示す説明図である。
【図13】同実施形態に係る暗号化装置の機能構成例を示す説明図である。
【図14】同実施形態に係る暗号化方法における処理の流れを示す説明図である。
【図15】同実施形態に係る暗号化方法の一例を示す説明図である。
【図16】同実施形態に係る復号装置の機能構成例を示す説明図である。
【図17】同実施形態に係る復号方法における処理の流れを示す説明図である。
【図18】同実施形態に係る復号方法の一例を示す説明図である。
【発明を実施するための形態】
【0028】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0029】
[説明の流れについて]
ここで、以下に記載する本発明の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、本実施形態に係る量子公開鍵暗号システムの全体構成について説明する。次いで、図2を参照しながら、本実施形態に係る量子公開鍵暗号システムにおいて用いられる公開鍵、秘密鍵を生成するための鍵生成装置100が有する機能構成について説明する。また、図3〜図12を参照しながら、鍵生成装置100により実行される鍵生成処理の流れ及び処理内容について説明する。
【0030】
次いで、図13を参照しながら、本実施形態に係る量子公開鍵暗号システムにおいて、送信すべき量子状態を暗号化するための暗号化装置200の機能構成について説明する。また、図14、図15を参照しながら、暗号化装置200により実行される暗号化処理の流れ及び処理内容について説明する。次いで、図16を参照しながら、本実施形態に係る量子公開鍵暗号システムにおいて、暗号化された量子状態から元の量子状態を復号するための復号装置300の機能構成について説明する。また、図17、図18を参照しながら、復号装置300により実行される復号処理の流れ及び処理内容について説明する。
【0031】
(説明項目)
1:量子公開鍵暗号システムの構成について
2:鍵生成方法について
2−1:鍵生成装置100の機能構成
2−1−1:公開鍵生成部110の機能
2−1−2:秘密鍵生成部130の機能
2−2:鍵生成処理の詳細
2−2−1:公開鍵Pの生成方法
2−2−2:秘密鍵Sの生成方法
3:暗号化方法について
3−1:暗号化装置200の機能構成
3−2:暗号化処理の詳細
4:復号方法について
4−1:復号装置300の機能構成
4−2:復号処理の詳細
5:まとめ
【0032】
<1:量子公開鍵暗号システムの構成について>
まず、図1を参照しながら、本発明の一実施形態に係る量子公開鍵暗号システムの全体像について説明する。図1は、本実施形態に係る量子公開鍵暗号システムの全体像、及び公開鍵認証・量子暗号文の送受信の流れについて説明するための説明図である。
【0033】
図1に示すように、本実施形態に係る量子公開鍵暗号システムは、暗号文の受信者10、暗号文の送信者20、及び認証局30により構成される。但し、暗号文の受信者10は、説明の都合上、後述する鍵生成装置100、復号装置300を含む処理ブロックを擬人化したものである。同様に、暗号文の送信者20は、説明の都合上、後述する暗号化装置200を含む処理ブロックを擬人化したものである。また、認証局30は、信頼できる第三者機関又は認証機関である。
【0034】
(鍵生成→認証→暗号化→復号の流れ)
まず、暗号文の受信者10は、公開鍵、秘密鍵のペアを生成する(Step.1)。次いで、暗号文の受信者10は、認証局30に公開鍵を登録する。このとき、暗号文の受信者10は、古典通信路を通じて公開鍵を認証局30に送信する(Step.2)。なお、本実施形態に係る量子公開鍵暗号システムで用いられる公開鍵は、後述するように古典情報のみで構成されている。また、秘密鍵は、暗号文の受信者10により秘匿される。
【0035】
次いで、認証局30は、暗号文の受信者10により登録された公開鍵を認証する(Step.3)。次いで、認証局30は、認証を与えた公開鍵を公開する。このとき、認証局30は、古典通信路を通じて認証後の公開鍵を暗号文の送信者20に送信する(Step.4)。
【0036】
暗号文の送信者20は、古典通信路を通じて公開された公開鍵を入手すると、入手した公開鍵が認証済みのものか否かを検証する。そして、入手した公開鍵が認証済みであることを確認すると、暗号文の送信者20は、量子コンピュータを利用し、その公開鍵を用いて暗号文を生成する(Step.5)。
【0037】
まず、暗号文の送信者20は、送信したい古典情報を符号化して量子状態を生成するか、送信したい量子状態を用意する。次いで、暗号文の送信者20は、最大エンタングルメント状態を生成する。次いで、暗号文の送信者20は、生成又は用意した量子状態と、生成した最大エンタングルメント状態の一部とを公開鍵が示す量子プログラムの入力として与え、量子コンピュータにより暗号文(暗号化された量子状態)を生成する。
【0038】
次いで、暗号文の送信者20は、量子通信路を通じて、生成した暗号文を暗号文の受信者10に送信する(Step.6)。暗号文の受信者10は、量子通信路を通じて受信した暗号文を秘密鍵が示す量子プログラムの入力として与え、量子コンピュータにより元の量子状態を復元する(Step.7)。
【0039】
以上説明したように、本実施形態に係る量子公開鍵暗号システムにおいて用いられる公開鍵は古典情報の形で記述された量子プログラムである。そのため、公開鍵が古典情報のみで記述されているため、公開鍵に対する認証の有無を容易に検証することができる。なお、暗号文の受信者10による鍵生成(Step.1)は、後述する鍵生成装置100により実行される。また、暗号文の送信者20による暗号文の生成(Step.5)は、後述する暗号化装置200により実行される。さらに、暗号文の受信者10による復号(Step.7)は、後述する復号装置300により実行される。
【0040】
(量子コンピュータのモデルについて)
上記の通り、本実施形態に係る量子公開鍵暗号システムは、暗号文の生成(Step.5)、暗号文の復号(Step.7)の際に量子コンピュータを用いる。また、本実施形態に係る公開鍵及び秘密鍵は、量子プログラムを示す古典情報である。そこで、本実施形態の説明を進めるにあたって、まず、量子コンピュータのモデル、及び量子プログラムの表現方法について概説する。
【0041】
量子コンピュータは、量子プログラムと量子データとを入力とする。量子プログラムとは、量子アルゴリズムの実行方法を記述した古典情報である。一方、量子データとは、量子アルゴリズムの実行対象となる量子状態である。量子プログラムの表現方法は、利用する量子計算モデルにより異なる。
【0042】
代表的な量子計算モデルとしては、例えば、量子回路モデル、量子チューリング機械モデル、観測ベース量子計算モデル等が知られている。量子回路モデルの場合、量子プログラムは、量子回路図を用いて表現される。量子チューリング機械モデルの場合、量子プログラムは、状態遷移図を用いて表現される。観測ベース量子計算モデルの場合、量子プログラムは、グラフ図を用いて表現される。以下の説明においては、量子回路モデルの表現を用いる。但し、量子回路モデルの違いは表現の違いであり、本実施形態の技術的範囲が量子回路モデルに限定されるものではない点に注意されたい。
【0043】
なお、量子回路モデル、量子チューリング機械モデルについては、例えば、“Nielsen and Chuang, Quantum Computation and Quantum Information,
Cambridge University Press”を参照されたい。また、観測ベース量子計算モデルについては、例えば、“R. Raussendorf and H. J. Briegel, Phys. Rev. Lett.,
86(5188), 2001.”を参照されたい。
【0044】
以上、本実施形態に係る量子公開鍵暗号システムの全体像について説明した。以下では、本実施形態に係る公開鍵暗号システムにおける鍵生成方法、暗号化方法、復号方法について、順次、より詳細に説明する。
【0045】
<2:鍵生成方法について>
まず、本実施形態に係る鍵生成方法について説明する。本実施形態に係る鍵生成方法により生成される公開鍵及び秘密鍵は、量子プログラムで表現される。量子プログラムとは、量子コンピュータにより実行されるユニタリ演算の組み合わせで表現された設計図である。上記の通り、量子プログラムの表現は幾通りも存在するが、本稿では一例として量子回路モデルの表現方法(以下、量子回路図)を採用する。
【0046】
量子回路図は、例えば、図4に示すような量子回路を組み合わせて設計される。量子回路図に含まれる量子回路は、ユニタリ演算の表現である。なお、以下の説明では、量子回路のことを量子プログラムと表現する場合がある。さらに、ユニタリ演算と、そのユニタリ演算を実行する量子プログラムとを同一視し、同じ記号で表現する。例えば、ユニタリ演算U、Vの積UVに関し、ユニタリ演算U、Vに対応する量子プログラムをU、Vと表現し、それらの積UVに対応する量子プログラムをUVと表現する。
【0047】
なお、量子プログラムで表現されるユニタリ演算の実現方法としては、例えば、古典的なコンピュータによる量子コンピュータのエミュレータを用いる方法、イオントラップ、キャビティQED、NMR、超伝導体、光学系等を用いた量子コンピュータを用いる方法等、様々な方法が考えられる。また、後述する本実施形態に係る暗号化方法、復号方法の実現に用いられる量子コンピュータは、いずれの動作原理に基づいてユニタリ演算を実行するものであってもよいし、将来新たに考案された他の動作原理に基づくユニタリ演算の実行手段であってもよい。
【0048】
[2−1:鍵生成装置100の機能構成]
以下、図2を参照しながら、本実施形態に係る鍵生成方法を実現するための鍵生成装置100の機能構成について説明する。図2は、本実施形態に係る鍵生成装置100の機能構成例を示す説明図である。
【0049】
図2に示すように、鍵生成装置100は、主に、公開鍵生成部110、及び秘密鍵生成部130により構成される。公開鍵生成部110は、公開鍵P(量子プログラムP)を生成する処理ブロックである。一方、秘密鍵生成部130は、秘密鍵S(量子プログラムS)を生成する処理ブロックである。以下、量子回路図を用いて各処理ブロックの機能について、より詳細に説明する。
【0050】
なお、ここでは一例として量子回路図を用いるが、本実施形態の技術的範囲は量子回路モデルに限定されない。例えば、後述する量子回路図を構成するユニバーサル量子回路をグラフ図に置き換えることにより、量子回路モデルに基づく構成を観測ベース量子計算モデルに基づく構成に変形することができる。
【0051】
このような変形を行っても、本実施形態に係る鍵生成処理の内容に影響を与えることはない。また、ユニバーサル量子回路をグラフ図に変換するのではなく、後述するユニバーサル量子回路の構築方法と同様の操作ステップを経てグラフ図を構築することでグラフ図に基づく鍵生成方法を実現することができる。
【0052】
(2−1−1:公開鍵生成部110の機能)
まず、公開鍵生成部110の機能構成について説明する。
【0053】
図2に示すように、公開鍵生成部110は、主に、乱数発生部112と、量子プログラム生成部114と、制御化部116と、量子プログラム付加部118と、難読化部120とにより構成される。以下、公開鍵の生成過程に沿って各構成要素の機能を説明する。
【0054】
(乱数発生部112の機能)
まず、乱数発生部112は、乱数発生器を用いて乱数列を生成する。乱数発生器としては、例えば、熱雑音を利用した物理乱数発生器や、メルセンヌツイスター法等に基づく疑似乱数発生器等が利用される。乱数列を生成すると、乱数発生部112は、生成した乱数列を量子プログラム生成部114に入力する。
【0055】
(量子プログラム生成部114の機能)
量子プログラム生成部114は、n量子ビットの量子状態を入力とするユニタリ演算U,…,Uの量子プログラムU,…,Uと、m量子ビットの量子状態を入力とするユニタリ演算L、Rの量子プログラムL、Rとを生成する。このとき、量子プログラム生成部114は、乱数発生部112により入力された乱数列を利用し、予め用意されたユニバーサル量子回路と呼ばれる数種類の量子回路をランダムに組み合わせて量子プログラムU,…,U、L、Rを生成する。
【0056】
ここで、図4、図5を参照しつつ、量子プログラム生成部114による量子プログラムX(X=U,…,U、L、R)の生成方法について、より具体的に説明する。
【0057】
図4には、量子プログラムXの生成に用いるユニバーサル量子回路の例が示されている。この例では、1量子ビットに対するアダマール回路H、1量子ビットに対するπ/8位相シフト回路T、1量子ビットに対する位相回路S、2量子ビットに対する制御NOT回路CNが量子プログラムXの生成に用いるユニバーサル量子回路として利用される。また、量子プログラムXの生成には、π/8位相シフト回路Tに対応するユニタリ演算Tのエルミート共役Hに対応するエルミート共役π/8位相シフト回路T、位相回路Sに対応するユニタリ演算Sのエルミート共役Sに対応するエルミート共役位相回路Sが利用される。
【0058】
また、ユニバーサル量子回路H、T、S、CNには、図4に示すように、互いに異なる数字が予め割り当てられる。さらに、エルミート共役が元のユニバーサル量子回路と異なる場合、そのユニバーサル量子回路のエルミート共役T、Sにも、互いに異なる数字が予め割り当てられる。
【0059】
図4の例では、アダマール回路Hに0、π/8位相シフト回路Tに1、エルミート共役π/8位相シフト回路Tに2、位相回路Sに3、エルミート共役位相回路Sに4、制御NOT回路CNに5が割り当てられている。量子プログラム生成部114は、これらのユニバーサル量子回路を組み合わせて量子プログラムXを生成する。ユニバーサル量子回路の組み合わせは、図5に示す方法により決定される。
【0060】
なお、ここでは具体例として3本の量子レジスタ(量子レジスタ1〜3)を含む量子プログラムXを生成する方法について考える。まず、量子プログラム生成部114は、0〜5の数字を乱数発生部112に生成させ、乱数発生部112から入力された数字を用いてユニバーサル量子回路を1つ選択する(Step.1)。例えば、乱数発生部112から0が入力された場合、量子プログラム生成部114は、0が割り当てられたアダマール回路Hを選択する。
【0061】
Step.1で選択したユニバーサル量子回路が1量子ビットに対する量子回路である場合、量子プログラム生成部114は、1〜3の数字を乱数発生部112に1つ生成させ、乱数発生部112から入力された数字を用いてユニバーサル量子回路を配置する量子レジスタを選択する(Step.2)。
【0062】
一方、Step.1で選択したユニバーサル量子回路が2量子ビットに対する量子回路である場合、量子プログラム生成部114は、1〜3の数字を乱数発生部112に2つ生成させ、乱数発生部112から入力された数字を用いてユニバーサル量子回路を配置する量子レジスタを選択する(Step.2)。
【0063】
例えば、Step.1で制御NOT回路CNを選択した場合、量子プログラム生成部114は、乱数発生部112から最初に入力された数字に対応する量子レジスタを制御レジスタに設定し、次に入力された数字に対応する量子レジスタをターゲットレジスタに設定して、制御NOT回路CNを配置する。但し、乱数発生部112から同じ数字が2つ入力された場合、量子プログラム生成部114は、乱数発生部112に再び乱数を生成させる。
【0064】
量子プログラム生成部114は、上記のStep.1、Step.2の操作をnの多項式関数p(n)回程度繰り返し、乱数発生部112から入力される乱数列に基づいてユニバーサル量子回路を順次量子レジスタに配置して量子プログラムXを生成する。上記の例では量子レジスタの数を3としたが、量子プログラム生成部114の機能はこれに限定されない。なお、図5は、上記のStep.1、Step.2の操作を5回繰り返して得られた量子プログラムXの一例である。
【0065】
量子プログラム生成部114は、上記の方法を繰り返し実行し、量子プログラムU,…,U、L、Rを生成する。但し、n量子ビットに対する量子プログラムU,…,Uは、n本の量子レジスタにより構成される。また、m量子ビットに対する量子プログラムL、Rは、m本の量子レジスタにより構成される。
【0066】
このようにして量子プログラム生成部114により生成された量子プログラムU,…,Uは、図2に示すように、制御化部116に入力される。また、量子プログラム生成部114により生成された量子プログラムL、Rは、量子プログラム付加部118に入力される。さらに、量子プログラム生成部114により生成された量子プログラムRは、後述する秘密鍵生成部130の逆量子プログラム生成部132に入力される。
【0067】
(制御化部116の機能)
制御化部116は、量子プログラム生成部114から入力された量子プログラムU,…,Uを制御化して量子プログラムCUを生成する。ここで言う制御化とは、m本の制御レジスタに入力される量子状態に応じて、演算に利用される量子プログラムU,…,Uを選択できるようにすることを意味する。量子プログラムCUは、例えば、図6に示す量子回路図で表現される。
【0068】
図6に示すように、量子プログラムCUは、m+n本の量子レジスタを含む。そして、m+n本の量子レジスタのうち、m本の量子レジスタは、量子プログラムU,…,Uの選択に利用される制御レジスタ(制御レジスタ1〜m)である。また、残りn本の量子レジスタは、量子プログラムU,…,Uが配置されるデータレジスタである。なお、量子プログラムCUの処理は、左側から右側に向かって進行する。また、各量子レジスタには、それぞれ1量子ビットの量子状態が入力される。
【0069】
図6の例では、データレジスタ上に、左側から右側に向かって量子プログラムU,…,Uが順に配置されている。そして、量子プログラムUには制御レジスタ1が接続され、量子プログラムUには制御レジスタ2が接続され、量子プログラムUには制御レジスタ3が接続され、…、量子プログラムUには制御レジスタmが接続されている。そして、量子プログラムUを含む回路を第1量子ビット制御U回路、量子プログラムUを含む回路を第2量子ビット制御U回路、量子プログラムUを含む回路を第3量子ビット制御U回路、…、量子プログラムUを含む回路を第m量子ビット制御U回路と呼ぶことにする。
【0070】
量子プログラムCUは、制御レジスタ1に1量子ビットの量子状態|1>が入力された場合、データレジスタに入力された量子状態に対して量子プログラムUが実行されるように構成されている。同様に、量子プログラムCUは、制御レジスタk(k=2〜m)に1量子ビットの量子状態|1>が入力された場合、データレジスタに入力された量子状態に対して量子プログラムUが実行されるように構成されている。
【0071】
そのため、データレジスタに入力された量子状態に対して実行される量子プログラムU,…,Uの組み合わせは、制御レジスタ1〜mに入力される量子状態により制御される。なお、制御レジスタk’(k’=1〜m)に量子状態|0>が入力された場合には、データレジスタに入力された量子状態に対して量子プログラムUk’が実行されない。
【0072】
このような制御化された量子プログラムCUは、次のようにして生成される。上記の通り、量子プログラム生成部114により生成された量子プログラムUは、ユニバーサル量子回路で構成されている。
【0073】
ユニバーサル量子回路を第1量子ビット制御U回路のように制御化する方法は、“Nielsen and Chuang, Quantum Computation and Quantum Information,
Cambridge University Press”に記載されている。そこで、この方法を量子プログラムUに含まれる全てのユニバーサル量子回路に適用し、制御レジスタ1に対して全てのユニバーサル量子回路を制御化することで、第1量子ビット制御U回路が生成される。同様に、第k量子ビット制御U回路(k=2〜m)が生成される。
【0074】
このようにして制御化部116により生成された量子プログラムCUは、図2に示すように、量子プログラム付加部118に入力される。また、この量子プログラムCUは、後述する秘密鍵生成部130の逆量子プログラム生成部132に入力される。
【0075】
(量子プログラム付加部118の機能)
上記の通り、量子プログラム付加部118には、量子プログラム生成部114により生成された量子プログラムL、R、及び制御化部116により生成された量子プログラムCUが入力される。量子プログラム付加部118は、量子プログラムCUに対して量子プログラムL、Rを付加し、図7に示すような量子プログラムGを生成する。
【0076】
まず、量子プログラム付加部118は、量子プログラムRを第1量子ビット制御U回路の前段に配置する。このとき、量子プログラム付加部118は、制御レジスタ1〜mへの入力が量子プログラムRへの入力となり、量子プログラムRの出力が量子プログラムCUの制御レジスタ1〜mへの入力となるように量子プログラムRを配置する。
【0077】
次に、量子プログラム付加部118は、量子プログラムLを第m量子ビット制御U回路の後段に配置する。このとき、量子プログラム付加部118は、量子プログラムCUの制御レジスタ1〜mへの入力が量子プログラムLの入力となるように量子プログラムLを配置する。
【0078】
ここで、量子プログラムCUに量子プログラムR、Lを付加する意義について述べる。
【0079】
例えば、量子プログラムCUに含まれる量子プログラムUを実行させる場合、量子プログラムCUの制御レジスタkに1量子ビットの量子状態|1>を入力する必要がある。そのため、量子プログラムRの実行後に量子プログラムCUの制御レジスタkに対して量子状態|1>が入力されるよう、量子プログラムRの入力を制御する必要がある。
【0080】
量子プログラムRの回路構成を知っている者は、量子プログラムRの入力を適切に制御して量子プログラムCUの制御レジスタkに量子状態|1>を入力することができる。しかし、量子プログラムRの回路構成を知らない者は、量子プログラムCUの制御レジスタkに量子状態|1>を入力することができない。
【0081】
つまり、量子プログラムRを知らない者は、量子プログラムCUに含まれる量子プログラムUを指定するために、どのような量子状態を量子プログラムGに入力すればよいかが分からない。言い換えると、量子プログラムRを付加する意義は、量子プログラムCUに含まれる量子プログラムUの指定方法を隠蔽することにある。
【0082】
一方、量子プログラムLを付加する意義は、量子プログラムRの秘匿性を高めることにある。仮に、量子プログラムCUが特徴的な構造を有する場合、量子プログラムLを付加しないと、後述する難読化後に得られる量子プログラムGの情報から量子プログラムRが分離されてしまう恐れがある。そのため、量子プログラムCUに対して量子プログラムR、Lが付加される。
【0083】
このようにして量子プログラム付加部118により生成された量子プログラムGは、難読化部120に入力される。
【0084】
(難読化部120の機能)
難読化部120は、図8に示すように、量子プログラム付加部118から入力された量子プログラムGを別の量子プログラムPへと変換(難読化)する。この量子プログラムPは、量子プログラムGに対応するユニタリ演算Gと同じ内容を有するユニタリ演算Pに対応する。
【0085】
つまり、難読化部120は、ユニタリ演算の内容を変えずに量子プログラムGを量子プログラムPに変換する。この変換により量子プログラムPから量子プログラムRの情報を得ることが困難になる。その結果、量子プログラムCUの情報が秘匿される。難読化部120は、公開鍵Pとして量子プログラムPを出力する。
【0086】
ここで、図9、図10を参照しながら、上記の難読化の方法について、より詳細に説明する。なお、ここでは多項式関数p(n)個程度のユニバーサル量子回路で構成される量子プログラムUに対する難読化の方法について説明する。
【0087】
まず、難読化部120は、量子プログラムUを構成するユニバーサル量子回路を全て左側に詰める。この操作を行うことにより、同時に実行可能なユニバーサル量子回路の組が区別し易くなる。
【0088】
次いで、難読化部120は、図9に示すように、同時実行可能なユニバーサル量子回路の組み合わせに対して個々に数字を割り当てる(ラベリング;Step.1)。このとき、同時実行可能なユニバーサル量子回路の組み合わせは、各量子レジスタに対して1つ程度になる。
【0089】
そのため、難読化部120は、量子レジスタの番号(以下、レジスタ番号)と、同時実行可能なユニバーサル量子回路の組み合わせに割り当てた番号(以下、組み合わせ番号)とを指定することにより、図10に示すように、1つのユニバーサル量子回路を指定できるようになる。
【0090】
次いで、難読化部120は、乱数発生器を利用して乱数rを発生させる。但し、乱数rは、1から組み合わせ番号の最大数までの数字である。そして、難読化部120は、乱数rに等しい組み合わせ番号に対応するユニバーサル量子回路の組を1つ指定する。次いで、難読化部120は、1〜nの乱数を発生させる乱数発生器を用いてs=log(n)個程度の乱数列(r,r,…,r)を発生させる。
【0091】
次いで、難読化部120は、発生させた乱数列を用いて、指定した組に含まれるユニバーサル量子回路(r,r)={(r,r),(r,r),…,(r,r)}を指定する。但し、難読化部120は、指定した位置にユニバーサル量子回路が存在しない場合、その位置を無視する。また、難読化部120は、指定した位置の全てにユニバーサル量子回路が存在しない場合、乱数発生器を用いて乱数列を再度発生させる。
【0092】
次いで、難読化部120は、指定したユニバーサル量子回路について、時間が正の方向に隣り合うユニバーサル量子回路を順次グループに加える。但し、難読化部120は、ユニバーサル量子回路をグループに加える過程で、制御NOT回路CNの制御部又はターゲット部のいずれか一方が、指定した量子レジスタの組(r,r,…,r)とは異なる量子レジスタrs+1を指定する場合、その量子レジスタrs+1を新たに量子レジスタの組に加えて新たな量子レジスタの組(r,r,…,r,rs+1)を生成する。
【0093】
そして、難読化部120は、新たな量子レジスタの組(r,r,…,r,rs+1)を対象として、時間が正の方向に隣り合うユニバーサル量子回路を順次グループに加える。難読化部120は、ユニバーサル量子回路の合計がlog O(p(n))程度になるまでグループにユニバーサル量子回路を加え続ける。
【0094】
このようにして生成されたユニバーサル量子回路の組[{(r,r)},{(r,r)},…,{(r,r)}]を部分量子プログラムgと呼ぶことにする。上記の方法により、難読化部120は、量子プログラムUの中から部分量子プログラムgを選択する(Step.2)。
【0095】
なお、部分量子プログラムgを選択する過程で、ユニバーサル量子回路の選択に任意性がある場合には乱数を用いて選択するものとする。次に、難読化部120は、選択した部分量子プログラムgを、その部分量子プログラムgにより表現されるユニタリ演算gを変更せずに、別の等価な部分量子プログラムg’に置き換える。
【0096】
例えば、難読化部120は、部分量子プログラムgに等価な部分量子プログラムの全数検索を実施し、検出された部分量子プログラムの中からランダムに1つの部分量子プログラムg’を選択する。
【0097】
この例では、量子プログラムUに含まれるユニバーサル量子回路の数がlog O(p(n))程度であるため、置き換え可能な部分量子プログラムの表現は、O(p(n))以下となる。従って、部分量子プログラムの全数検索は、多項式時間以内に終了する。なお、置き換え可能な部分量子プログラムが存在しない場合には、ユニバーサル量子回路の数をlog O(p(n))+2程度に拡張すればよい。
【0098】
上記の処理を多項式回数だが十分に繰り返すことにより、量子プログラムGの難読化が実現される。なお、上記の難読化で、量子プログラムRと量子プログラムCUとを跨ぐ部分の部分量子プログラムがnの多項式回数だが十分な回数行われることが望ましい。
【0099】
(難読化により実現される計算量的複雑性について)
これまで説明してきた通り、本実施形態に係る量子公開鍵暗号システムは、量子プログラムRを取り出すことの困難性を安全性の根拠としている。逆に言えば、盗聴者は、量子プログラムRを取り出すことができれば量子公開鍵暗号システムを破ることができる。本実施形態に係る量子公開鍵暗号システムにおいて、量子プログラムRを取り出すことの困難性は上記の難読化により実現されている。本実施形態に係る難読化方法を用いると、量子プログラムに高い計算量的複雑性が実現される。
【0100】
本実施形態に係る難読化方法を用いて生成された量子プログラムPから量子プログラムRを取り出す盗聴者の攻撃は、量子計算量的複雑性クラスQuantum Merlin Arthur困難(QMA困難)に属する。なお、本実施形態に係る難読化方法は任意の量子プログラムにも適用可能である。
【0101】
また、量子プログラムPに加え、盗聴者以外の者が送信した暗号文を盗聴者が取得し、これらの情報から量子プログラムRを取り出そうと試みるのではないか、と考えるかもしれない。しかし、このような攻撃は意味がない。なぜなら、盗聴者自身も公開鍵Pである量子プログラムPを用いて任意の量子状態を暗号化できるからである。
【0102】
つまり、量子プログラムPと暗号文との組み合わせから量子プログラムRを取り出す攻撃は、量子プログラムPから量子プログラムRを取り出す攻撃と等価である。このように、本実施形態に係る難読化方法を適用することにより、高い安全性が保証される。
【0103】
以上、公開鍵生成部110の機能について説明した。
【0104】
(2−1−2:秘密鍵生成部130の機能)
次に、秘密鍵生成部130の機能について説明する。
【0105】
図2に示すように、秘密鍵生成部130は、主に、逆量子プログラム生成部132と、接続部134とにより構成される。以下、秘密鍵の生成過程に沿って各構成要素の機能を説明する。
【0106】
(逆量子プログラム生成部132の機能)
公開鍵生成部110の説明において述べた通り、逆量子プログラム生成部132には、量子プログラム生成部114により生成された量子プログラムR、及び制御化部116により生成された量子プログラムCUが入力される。
【0107】
まず、逆量子プログラム生成部132は、量子プログラムRに対応するユニタリ演算Rの複素共役Rに対応する量子プログラムRを生成する。また、逆量子プログラム生成部132は、量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUを生成する。これら量子プログラムR、CUの生成は、図11のようにして実行される。
【0108】
図11には、ユニバーサル量子回路A、B、C、Dが左側から右側へと配置された量子プログラムYに対する複素共役化及びエルミート共役化の方法が例示されている。
【0109】
量子プログラムYをエルミート共役化する場合、逆量子プログラム生成部132は、まず、ユニバーサル量子回路A、B、C、Dの並び順を逆に並べ替え、ユニバーサル量子回路D、C、B、Aの順で左側から右側へと配置する。次いで、逆量子プログラム生成部132は、個々のユニバーサル量子回路A、B、C、Dをそれぞれエルミート共役化したユニバーサル量子回路A、B、C、Dに置き換える。その結果、量子プログラムYをエルミート共役化した量子プログラムYが得られる。
【0110】
また、量子プログラムYを複素共役化する場合、逆量子プログラム生成部132は、量子プログラムYを構成するユニバーサル量子回路A、B、C、Dを複素共役化したユニバーサル量子回路A、B、C、Dに置き換える。その結果、量子プログラムYを複素共役化した量子プログラムYが得られる。
【0111】
なお、転置化した量子プログラムYは、ユニバーサル量子回路A、B、C、Dの並び順を逆にした後、ユニバーサル量子回路A、B、C、Dをそれぞれ転置化したユニバーサル量子回路A、B、C、Dに置き換えることにより生成される。これらの各演算過程は、多項式関数p(n)個のユニバーサル量子回路で構成される量子プログラムに対し、2p(n)回程度の演算で完了する。
【0112】
このようにして逆量子プログラム生成部132により生成された量子プログラムCU、Rは、接続部134に入力される。なお、量子プログラムCUは、量子プログラムCUの逆ユニタリ演算を実行するための量子プログラムである。また、量子プログラムRは、量子プログラムRの逆ユニタリ演算を実行するための量子プログラムである。
【0113】
(接続部134の機能)
接続部134は、図12に示すように、逆量子プログラム生成部132により生成された量子プログラムCU、Rを接続して量子プログラムSを生成する。このとき、接続部134は、量子プログラムCUの前段に量子プログラムRを配置する。また、接続部134は、量子プログラムRの出力が量子プログラムCUの制御レジスタ1〜mの入力となるように量子プログラムRと量子プログラムCUとを接続する。そして、接続部134は、秘密鍵Sとして量子プログラムSを出力する。
【0114】
以上、秘密鍵生成部130の機能について説明した。
【0115】
以上説明した通り、鍵生成装置100は、古典情報で記述される量子プログラムP、Sをそれぞれ公開鍵P、秘密鍵Sとして出力する。このように、公開鍵Pが古典情報で記述されているため、公開鍵Pの同定を行っても暗号鍵としての利用可能性を失わずに済む。また、量子プログラムPが本実施形態に係る難読化方法で難読化されているため、量子コンピュータを用いた攻撃に対しても極めて高い安全性が保証される。
【0116】
[2−2:鍵生成処理の詳細]
次に、図3を参照しながら、本実施形態に係る鍵生成処理の流れについて説明する。図3は、本実施形態に係る鍵生成処理の流れを示す説明図である。なお、図3に示した鍵生成処理の各処理ステップは、上記の鍵生成装置100により実行される。
【0117】
(2−2−1:公開鍵Pの生成方法)
まず、公開鍵Pの生成方法に係る処理の流れについて説明する。ここで説明する処理は、上記の公開鍵生成部110により実行される。
【0118】
公開鍵の生成処理がスタートすると、公開鍵生成部110は、まず、乱数発生部112の機能により乱数を発生させる(S102)。次いで、公開鍵生成部110は、発生した乱数列を利用して、量子プログラム生成部114の機能によりm個の量子プログラムU,…,U、及び2個の量子プログラムL、Rを生成する(S104)。
【0119】
ステップS104にて生成されたm個の量子プログラムU,…,Uは、次のステップS106の処理にて利用される。また、ステップS104にて生成された量子プログラムL、Rは、後段のステップS108にて利用される。さらに、ステップS104にて生成された量子プログラムRは、秘密鍵生成方法に係る処理のステップS112にて利用される。
【0120】
ステップS106に処理が進行すると、公開鍵生成部110は、ステップS104で生成されたm個の量子プログラムU,…,Uを利用し、制御化部116の機能により制御化された量子プログラムCUを生成する(S106)。ステップS106にて生成された量子プログラムCUは、次のステップS108、及び秘密鍵生成方法に係る処理のステップS112にて利用される。
【0121】
次いで、公開鍵生成部110は、ステップS104にて生成された量子プログラムL、R、及びステップS106にて生成された量子プログラムCUを利用し、量子プログラム付加部118の機能により量子プログラムGを生成する(S108)。ステップS108にて生成された量子プログラムGは、次のステップS110にて利用される。
【0122】
次いで、公開鍵生成部110は、難読化部120の機能によりステップS108にて生成された量子プログラムGを難読化し、量子プログラムPを生成する(S110)。ステップS110にて生成された量子プログラムPは、公開鍵Pとして出力される。
【0123】
以上、公開鍵Pの生成方法に係る処理の流れについて説明した。
【0124】
(2−2−2:秘密鍵Sの生成方法)
次に、秘密鍵Sの生成方法に係る処理の流れについて説明する。ここで説明する処理は、主に上記の秘密鍵生成部130により実行される。
【0125】
秘密鍵の生成処理がスタートすると、秘密鍵生成部130は、まず、公開鍵生成方法に係る処理のステップS104、S106にて生成された量子プログラムR、CUを利用し、逆量子プログラム生成部132の機能により量子プログラムCU、Rを生成する(S112)。ステップS112にて生成された量子プログラムCU、Rは、次のステップS114にて利用される。
【0126】
次いで、秘密鍵生成部130は、接続部134の機能によりステップS112にて生成された量子プログラムCU、Rを接続して量子プログラムSを生成する(S114)。ステップS114にて生成された量子プログラムCU、Rは、秘密鍵Sとして出力される。
【0127】
以上、秘密鍵Sの生成方法に係る処理の流れについて説明した。
【0128】
以上説明したように、公開鍵P、秘密鍵Sは、古典情報として記述可能な量子プログラムP、Sにより構成される。そのため、公開鍵Pの確実な認証が容易になる。また、公開鍵Pは、ステップS110にて難読化部120により実施される難読化処理により量子コンピュータの攻撃に対する十分な安全性が保証されている。このように、本実施形態に係る鍵生成方法を適用することにより、より安全で利便性の高い量子公開鍵暗号システムが実現される。
【0129】
<3:暗号化方法について>
次に、本実施形態に係る暗号化方法について説明する。本実施形態に係る暗号化方法は、上記の鍵生成方法により生成された公開鍵Pを用いて実行される。つまり、本実施形態に係る暗号化方法による暗号化処理は、公開鍵Pである量子プログラムP、及び暗号化したい量子状態を量子コンピュータに入力することにより実行される。
【0130】
以下で説明する本実施形態に係る暗号化処理は、最大エンタングルメント状態を利用する点に1つの特徴がある。特に、本実施形態に係る暗号化方法は、最大エンタングルメント状態の基底の非一意性を利用することで、暗号文の送信者20が量子プログラムRの情報を一切知らずに正しく量子状態を暗号化できるようにする点に1つの特徴がある。
【0131】
以下、このような本実施形態に係る暗号化方法を実現することが可能な暗号化装置200の機能構成、及び暗号化方法について順番に説明する。
【0132】
[3−1:暗号化装置200の機能構成]
まず、図13を参照しながら、本実施形態に係る暗号化装置200の機能構成について説明する。図13は、本実施形態に係る暗号化装置200の機能構成例を示す説明図である。但し、暗号化装置200は、鍵生成装置100により生成された公開鍵P(量子プログラムP)を既に取得しているものとする。また、暗号化装置200は、量子コンピュータ、又は量子コンピュータを利用する装置であるものとする。
【0133】
図13に示すように、暗号化装置200は、主に、エンタングルメント状態生成部202と、量子状態入力部204と、暗号化部206とにより構成される。また、暗号化部206は、鍵生成装置100により生成された公開鍵Pである量子プログラムPを保持している。なお、この公開鍵Pは、認証局30により認証され、暗号文の送信者20により同定されているものとする。以下、量子状態の暗号化過程に沿って各構成要素の機能を説明する。
【0134】
(エンタングルメント状態生成部202の機能)
まず、エンタングルメント状態生成部202は、2m量子ビットの最大エンタングルメント状態を生成する。例えば、エンタングルメント状態生成部202は、下記の式(1)で表現される2m量子ビットの基底状態を用意する。そして、エンタングルメント状態生成部202は、下記の式(1)のテンソル積で結合された基底状態のうち、前半m量子ビットの各々の量子状態に対してアダマール演算を実行する。このアダマール演算を実行すると、下記の式(2)で表現される量子状態が生成される。
【0135】
次いで、エンタングルメント状態生成部202は、下記の式(2)で表現される量子状態のうち、アダマール演算の結果に対応する各量子ビットを制御量子ビットとして当該量子状態に制御NOT演算を施す。この制御NOT演算により、下記の式(3)で表現される2m量子ビットの最大エンタングルメント状態が生成される。このようにしてエンタングルメント状態生成部202により生成された最大エンタングルメント状態|Φ>は、暗号化部206に入力される。
【0136】
【数1】

…(1)


…(2)


…(3)

【0137】
なお、上記の式(1)〜(3)に現れるiは、二進表示したビット列を十進表示で表現したものである。例えば、2量子ビット状態について考えると、二進表示|00>は十進表示|0>、二進表示|01>は十進表示|1>、二進表示|10>は十進表示|2>、二進表示|11>は十進表示|3>と表現される。また、上記の式(1)〜(3)に関する量子計算は、イオントラップを用いた量子コンピュータを用いて実行可能である。
【0138】
(量子状態入力部204の機能)
量子状態入力部204は、暗号文の受信者10へと送信したい量子状態を用意し、暗号化部206に入力する機能を提供する。例えば、量子状態入力部204は、送信したい古典情報を符号化し、その古典情報に対応するn量子ビットの量子状態|ψ>を生成する。あるいは、量子状態入力部204は、暗号化装置200の外部で生成された量子状態|ψ>を取得する。そして、量子状態入力部204は、生成又は取得した量子状態|ψ>を暗号化部206に入力する。
【0139】
(暗号化部206の機能)
暗号化部206は、量子状態入力部204により入力されたn量子ビットの量子状態|ψ>を公開鍵Pである量子プログラムPを用いて暗号化する。この暗号化は、量子コンピュータを利用し、図15に示すような方法で実行される。まず、暗号化部206は、最大エンタングルメント状態生成部202により生成された2m量子ビットの最大エンタングルメント状態をm量子ビット毎に分け、一方(前半)をそのまま保持する。
【0140】
次いで、暗号化部206は、他方(後半)m量子ビットの量子状態を量子プログラムPの制御レジスタ1〜mに入力する。さらに、暗号化部206は、量子状態入力部204から入力された量子状態|ψ>を量子プログラムPのデータレジスタに入力する。量子プログラムPの実行が完了すると、暗号化部206は、量子プログラムPの制御レジスタ1〜mから得られる出力を破棄する。そして、暗号化部206は、保持していたm量子ビットの量子状態に対し、量子プログラムPのデータレジスタから得られる出力を付加して暗号文(暗号化された量子状態)を生成する。
【0141】
このようにして生成された暗号文は、下記の式(4)で表現される。また、暗号化部206により生成された暗号文は、量子通信路を介して暗号文の送信者20から暗号文の受信者10へと送信される。
【0142】
【数2】

…(4)

【0143】
(最大エンタングルメント状態の基底の非一意性について)
ここで、最大エンタングルメント状態の基底の非一意性について説明する。本実施形態に係る量子公開鍵暗号システムにおいては、この著しい性質により、量子プログラムRの情報を一切用いずに正しく暗号化することができるのである。その結果、暗号文の受信者10は、量子状態を含む暗号化用の鍵(公開鍵P)を用意しなくて済むようになる。以下、これらの点について説明する。
【0144】
2m量子ビットの最大エンタングルメント状態|Φ>は、上記の式(4)で表現される。ユニタリ演算の性質(ユニタリ演算Rに対してR=Rが成り立つ。また、Rjk=<j|R|k>=<k|R|j>である。)を用いて上記の式(4)を展開すると、最大エンタングルメント状態|Φ>は、下記の式(5)のように変形される。
【0145】
【数3】

…(5)

【0146】
上記の式(5)から明らかなように、最大エンタングルメント状態|Φ>の基底は、ユニタリ変換Rを用いて変換することができる。ここでは後段の説明に対する理解を助けるためにユニタリ変換をRで表現したが、任意のユニタリ変換Rに対して上記の変換が実現される。この性質を最大エンタングルメント状態の基底の非一意性と呼ぶ。
【0147】
次に、上記の式(5)で表現される最大エンタングルメント状態|Φ>及び量子プログラムPを用いてn量子ビットの量子状態|ψ>を暗号化する過程を式で示す。なお、本実施形態に係る量子公開鍵暗号システムにおいて量子プログラムPは難読化した状態で用いられるが、ここでは簡単のために難読化前の量子プログラムGを用いて量子状態|ψ>を暗号化する過程を式で示す。なお、量子プログラムPは、量子プログラムGの等価変形である。そのため、最終的に生成される暗号化された量子状態は同じものとなる。
【0148】
最大エンタングルメント状態|Φ>の前半m量子ビットは保持され、後半m量子ビットが量子プログラムGの制御レジスタ1〜mに入力される。そして、量子プログラムGに含まれるユニタリ演算Rが最大エンタングルメント状態|Φ>の後半m量子ビットに施される。この演算操作は、下記の式(6)で表現される。
【0149】
なお、最大エンタングルメント状態|Φ>は、上記の式(5)で表現した最大エンタングルメント状態の基底の非一意性により、量子プログラムRに対応するユニタリ演算Rを用いて表現することができる。そのため、下記の式(5)のように式を展開することができる。
【0150】
次に、下記の式(5)で表現される演算操作の結果が量子プログラムCUの制御レジスタ1〜mに入力される。量子プログラムCUの演算は、制御レジスタ1〜mに入力された量子状態と、データレジスタに入力される暗号化対象の量子状態|ψ>と施される。この演算操作は、下記の式(7)で表現される。量子プログラムCUの内容は、制御レジスタ1〜mの入力に応じて選択された量子プログラムUiをデータレジスタに入力された量子状態に|ψ>に作用させるというものである。そのため、量子プログラムCUによる演算は、下記の式(7)に示すように式展開される。
【0151】
次に、下記の式(7)で表現される演算操作の結果が量子プログラムLに入力される。但し、量子プログラムCUの演算結果のうち、制御レジスタ1〜mの出力が量子プログラムLに入力される。そのため、量子プログラムLの出力は、下記の式(8)で表現される。さらに、量子プログラムLの出力L|i>が破棄されるため、この破棄する状態に関する部分トレースととることで、量子プログラムGの最終的な出力(下記の式(9)に示される密度行列)が得られる。
【0152】
【数4】

…(6)


…(7)


…(8)


…(9)

【0153】
上記の式展開で重要なことは、最大エンタングルメント状態の基底の非一意性により、量子プログラムP(量子プログラムG)に対して量子プログラムRの情報を入力していないにも関わらず、上記の式(6)で展開されたようにユニタリ演算Rの情報を用いて量子状態|ψ>が暗号化される点にある。言い換えると、暗号文の送信者20は、量子プログラムRの情報を全く知らないにも関わらず、ユニタリ演算Rの効果を打ち消して量子状態|ψ>の暗号化を実行できるのである。
【0154】
このように、最大エンタングルメント状態の著しい性質を有効に利用することで、完全に量子プログラムRの情報が秘匿された安全な量子公開鍵システムが実現されるのである。なお、特開2008−294666号公報に記載の量子公開鍵暗号システムは、量子プログラムRを打ち消すような変換を与える量子情報を暗号文の送信者20に与える必要があった。
【0155】
そのため、本実施形態に係る量子公開鍵暗号システムは、量子プログラムRを打ち消すための情報を一切与えずに済むのであるから、より安全性の高いものであると言える。また、上記の性質により、暗号化用の鍵(公開鍵P)に量子状態を含めずに済むため、公開鍵Pを古典情報だけで記述することが可能になる。その結果、量子公開鍵暗号システムにおける公開鍵Pの確かな認証を可能にすることができる。
【0156】
[3−2:暗号化処理の詳細]
次に、図14を参照しながら、本実施形態に係る暗号化処理の流れについて説明する。図14は、本実施形態に係る暗号化処理の流れを示す説明図である。なお、図14に示した暗号化処理の各処理ステップは、上記の暗号化装置200により実行される。
【0157】
暗号化処理がスタートすると、暗号化装置200は、エンタングルメント状態生成部202の機能により2m量子ビットの最大エンタングルメント状態を生成し、暗号化部206の機能により前半m量子ビットの量子状態を保持する(S202)。
【0158】
次いで、暗号化装置200は、暗号化部206の機能により後半m量子ビットの量子状態を量子プログラムPの制御レジスタ1〜mに入力する(S204)。次いで、暗号化装置200は、量子状態入力部204の機能により暗号化すべきn量子ビットの量子状態を生成し、暗号化部206の機能により量子プログラムPのデータレジスタに入力する(S206)。
【0159】
次いで、暗号化装置200は、暗号化部206の機能により制御レジスタ1〜m、データレジスタに入力された量子状態を用いて量子プログラムPの演算を実行する(S208)。次いで、暗号化装置200は、暗号化部206の機能により量子プログラムPの制御レジスタ1〜mから出力された量子状態を破棄する(S210)。
【0160】
次いで、暗号化装置200は、暗号化部206の機能により、保持していた前半m量子ビットの量子状態に対し、量子プログラムPのデータレジスタから出力された量子状態を付加する(S212)。そして、暗号化装置200は、ステップS212の付加処理にて得られた量子状態を暗号文として出力する。
【0161】
以上、本実施形態に係る暗号処理の流れについて説明した。
【0162】
以上説明したように、本実施形態に係る暗号化方法は、最大エンタングルメント状態の基底の非一意性を利用して、量子プログラムRの情報を用いずに量子状態を暗号化するものである。その結果、暗号化用の鍵(公開鍵P)に量子状態を含めずに済むため、公開鍵Pを古典情報だけで記述できるようになる。さらに、量子プログラムRの情報が完全に秘匿されるため、非常に高い安全性が実現される。
【0163】
<4:復号方法について>
次に、本実施形態に係る復号方法について説明する。本実施形態に係る復号方法は、上記の鍵生成方法により生成された秘密鍵Sを用いて実行される。つまり、本実施形態に係る復号方法による復号処理は、秘密鍵Sである量子プログラムS、及び暗号文(暗号化された量子状態)を量子コンピュータに入力することにより実行される。以下、本実施形態に係る復号方法を実現することが可能な復号装置300の機能構成、及び復号方法について順番に説明する。
【0164】
[4−1:復号装置300の機能構成]
まず、図16を参照しながら、本実施形態に係る復号装置300の機能構成について説明する。図16は、本実施形態に係る復号装置300の機能構成例を示す説明図である。但し、復号装置300は、鍵生成装置100により生成された秘密鍵S(量子プログラムS)を既に取得しているものとする。また、復号装置300は、量子コンピュータ、又は量子コンピュータを利用する装置であるものとする。
【0165】
図16に示すように、復号装置300は、主に、暗号文入力部302と、復号部304とにより構成される。また、復号部304は、鍵生成装置100により生成された秘密鍵Sである量子プログラムSを保持している。以下、暗号化された量子状態の復号過程に沿って各構成要素の機能を説明する。
【0166】
(暗号文入力部302の機能)
暗号文入力部302は、暗号文の送信者20から量子通信路を介して送信された暗号文(暗号化された量子状態)を取得する。そして、暗号文入力部302は、取得した暗号文を復号部304に入力する。
【0167】
(復号部304の機能)
復号部304は、n+m量子ビットの量子状態である暗号文を秘密鍵Sである量子プログラムSを用いて復号する。この復号は、量子コンピュータを利用し、図18に示すような方法で実行される。まず、復号部304は、暗号化装置200にて付加されたm量子ビットの量子状態に対応する暗号文の一部を量子プログラムSの制御レジスタ1〜mに入力する。また、復号部304は、暗号化装置200にて量子プログラムPのデータレジスタから出力された量子状態を量子プログラムSのデータレジスタに入力する。
【0168】
そして、復号部304は、量子コンピュータを利用して量子プログラムSの演算を実行する。演算の実行後、復号部304は、量子プログラムSの制御レジスタ1〜mから出力された量子状態を破棄する。さらに、復号部304は、量子プログラムSのデータレジスタから出力されたn量子ビットの量子状態を取得する。このn量子ビットの量子状態は、暗号化元の量子状態|ψ>である。このようにして復号部304は、暗号文から元の量子状態|ψ>を復元する。
【0169】
(復号の処理過程について)
ここで、復号部304による復号処理の処理過程を式により表現する。復号を開始すると、復号部304は、m量子ビットの量子状態に対応する暗号文の一部に対し、量子プログラムSに含まれる量子プログラムRを実行する。
【0170】
この実行操作は、下記の式(10)で表現される。次いで、復号部304は、量子プログラムRの出力を量子プログラムCUの制御レジスタ1〜mに入力し、暗号文の残りn量子ビットの量子状態を量子プログラムCUのデータレジスタに入力する。そして、復号部304は、量子プログラムCUの演算を実行する。この演算操作は、下記の式(11)で表現される。この操作の結果、量子プログラムCUのデータレジスタから暗号化前の量子状態|ψ>が出力される。
【0171】
【数5】

…(10)


…(11)

【0172】
以上、復号装置300の機能について説明した。
【0173】
[4−2:復号処理の詳細]
次に、図17を参照しながら、本実施形態に係る復号処理の流れについて説明する。図17は、本実施形態に係る復号処理の流れを示す説明図である。なお、図17に示した復号処理の各処理ステップは、上記の復号装置300により実行される。
【0174】
復号処理がスタートすると、復号装置300は、暗号文入力部302の機能により取得した暗号文を復号部304の機能により量子プログラムSに入力する(S302)。次いで、復号装置300は、復号部304の機能により量子プログラムSの演算を実行し、量子プログラムSの制御レジスタ1〜mの出力を破棄する(S304)。
【0175】
さらに、復号装置300は、復号部304の機能により、量子プログラムSのデータレジスタから出力された量子状態|ψ>を取得する(S306)。そして、復号装置300は、ステップS306にて取得された量子状態|ψ>を出力する。
【0176】
以上、本実施形態に係る復号処理の流れについて説明した。
【0177】
以上説明したように、本実施形態に係る復号方法を適用することにより、秘密鍵Sである量子プログラムSを用いて、本実施形態に係る暗号化方法により生成された暗号文を容易に復号することができる。
【0178】
<5:まとめ>
最後に、本発明の実施形態に係る技術内容について簡単に纏める。
【0179】
本実施形態に係る技術は、量子公開鍵暗号系における鍵生成方法、暗号化方法、復号方法に関する。本実施形態に係る技術は、古典情報を符号化した量子状態、又は量子状態そのものを暗号化するものである。また、量子通信路を利用するものの、この量子公開鍵暗号系のエンティティ構成は古典的な公開鍵暗号系のものと同じ形式に設定することができる。従って、現在の安全性概念に適合させることが容易である。もちろん、高い安全性レベルが実現されることは既に述べた通りである。
【0180】
また、本実施形態に係る量子公開鍵暗号システムは、全ての暗号化処理を暗号文の送信者20側にある量子コンピュータの動作だけで実行する。また、本実施形態に係る量子公開鍵暗号システムは、全ての復号処理を暗号文の受信者10側にある量子コンピュータの動作だけで実行する。
【0181】
そのため、暗号文の送信者20側にある量子コンピュータと暗号文の受信者10側にある量子コンピュータとを量子通信路により接続したり、両量子コンピュータを協調的に動作させる必要がない。そのため、暗号文の送信者20と暗号文の受信者10との間で暗号化・復号に係る処理を実行する量子暗号系に比べて利便性が非常に高い。
【0182】
また、本実施形態に係る量子公開鍵暗号システムにおける暗号化は、認証された公開鍵と暗号文の送信者20が生成する最大エンタングルメント状態とを用いて実施される。そのため、公開鍵は古典情報で記述することが可能になる。その結果、公開鍵に与えられる認証の有無を容易に検証することが可能になる。そして、認証が与えられた公開鍵を用いて暗号化が行われるため、確実に量子状態を暗号化することができる。
【0183】
(認証に関する補足説明)
上記の通り、本実施形態に係る量子公開鍵暗号システムは、古典情報として記述された公開鍵を用いる。そのため、暗号文の送信者20は、公開鍵に対する認証の有無を容易に検証できる。また、古典情報のみで公開鍵を構成することにより安全性を向上させる効果が得られる。以下、これらの効果について説明を補足する。
【0184】
まず、量子公開鍵暗号システムにおける公開鍵の認証を確かに実現するための二つの要求について議論する。一つ目の要求は、配布された公開鍵が認証局30により認証を受けたものであるかを暗号文の送信者20が容易に検証(公開鍵の同定)できるようにすることである。二つ目の要求は、公開鍵の同定を行った後でも、その公開鍵が暗号化に利用可能な状態に維持されることである。
【0185】
ここで、公開鍵を量子状態で構成する場合について考えてみよう。公開鍵の同定を行うと、同定の結果が古典情報となる。つまり、同定により量子状態に対する何らかの測定が行われたことになる。このとき、量子状態の一部が、測定により古典情報に射影されてしまう。その結果、古典情報に射影された部分は、量子性を利用した暗号化に利用することができない。一方、古典情報に射影されていない部分は、同定が行われていない。つまり、同定と暗号鍵としての利用可能性とはトレードオフの関係にある。
【0186】
このトレードオフの関係は、量子状態の測定に関する問題に起因しており、解決することは極めて困難である。その点、本実施形態に係る公開鍵は、古典情報のみで記述されているため、公開鍵の同定に関する上記の問題は生じない。
【0187】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0188】
10 暗号文の受信者
20 暗号文の送信者
30 認証局
100 鍵生成装置
110 公開鍵生成部
112 乱数発生部
114 量子プログラム生成部
116 制御化部
118 量子プログラム付加部
120 難読化部
130 秘密鍵生成部
132 逆量子プログラム生成部
134 接続部
200 暗号化装置
202 エンタングルメント状態生成部
204 量子状態入力部
206 暗号化部
300 復号装置
302 暗号文入力部
304 復号部


【特許請求の範囲】
【請求項1】
第1の量子情報処理装置と、量子通信路を介して前記第1の量子情報処理装置に接続された第2の量子情報処理装置と、古典通信路を介して前記第1及び第2の量子情報処理装置に接続された認証局と、を含み、
前記第1の量子情報処理装置は、
公開鍵と秘密鍵とを生成する鍵生成部と、
前記鍵生成部により生成された公開鍵を前記古典通信路を介して前記認証局に送信する第1古典送信部と、
前記第2の量子情報処理装置から前記量子通信路を介して送信された、暗号化された量子状態を受信する第1量子受信部と、
前記鍵生成部により生成された秘密鍵を用いて、前記第1量子受信部により受信された、前記暗号化された量子状態から元の量子状態を復元する復号部と、
を有し、
前記認証局は、
前記第1の量子情報処理装置から前記古典通信路を介して送信された公開鍵を受信する第1古典受信部と、
前記第1古典受信部により受信された公開鍵を認証する認証部と、
前記認証部により認証された公開鍵を、前記古典通信路を介して前記第2の量子情報処理装置に送信する第2古典送信部と、
を有し、
前記第2の量子情報処理装置は、
前記認証局から前記古典通信路を介して送信された公開鍵を受信する第2古典受信部と、
前記第2古典受信部により受信された公開鍵を用いて量子状態を暗号化する暗号化部と、
前記暗号化部により暗号化された量子状態を、前記量子通信路を介して前記第1の量子情報処理装置に送信する量子送信部と、
を有する、量子公開鍵暗号システム。
【請求項2】
前記鍵生成部は、
乱数を発生させる乱数発生器と、
前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、
m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、
前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、
前記量子プログラムGを難読化して前記公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、
前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、
前記量子プログラムCUと前記量子プログラムRとを接続して前記秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、
を含む、請求項1に記載の量子公開鍵暗号システム。
【請求項3】
前記暗号化部は、量子コンピュータから成り、
2m量子ビットの最大エンタングルメント状態を生成し、当該2m量子ビットの最大エンタングルメント状態のうち、m量子ビットの量子状態と、送信すべきn量子ビットの量子状態|ψ>と、を前記公開鍵に対応する量子プログラムPに入力して前記暗号化された量子状態を算出する、請求項2に記載の量子公開鍵暗号システム。
【請求項4】
前記復号部は、量子コンピュータから成り、
前記暗号化された量子状態を前記秘密鍵に対応する量子プログラムSに入力して元の量子状態|ψ>を算出する、請求項3に記載の量子公開鍵暗号システム。
【請求項5】
前記暗号化部は、
2m量子ビットの最大エンタングルメント状態を生成し、当該2m量子ビットの最大エンタングルメント状態のうち、m量子ビットの量子状態を保持しておき、残りm量子ビットの量子状態を前記量子状態|ψ>と共に前記量子プログラムPに入力し、前記量子状態|ψ>に対応する量子プログラムPの出力に、保持しておいた前記m量子ビットの量子状態を付加して前記暗号化された量子状態を算出する、請求項4に記載の量子公開鍵暗号システム。
【請求項6】
前記量子プログラム難読化部は、前記量子プログラムGを、前記量子プログラムGに対応するユニタリ演算と同じ演算内容を有する別の量子プログラムG’に置き換えることで前記量子プログラムGを難読化する、請求項2に記載の量子公開鍵暗号システム。
【請求項7】
前記量子プログラム難読化部は、前記量子プログラムGの一部を成す部分量子プログラムgを、当該部分量子プログラムgと同じ演算内容を有する別の量子プログラムg’に置き換えることで前記量子プログラムGを難読化する、請求項6に記載の量子公開鍵暗号システム。
【請求項8】
乱数を発生させる乱数発生器と、
前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、
m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、
前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、
前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、
前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、
前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、
を備える、鍵生成装置。
【請求項9】
乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、を有する鍵生成装置により生成された公開鍵に対応する量子プログラムPを保持する公開鍵保持部と、
量子コンピュータを利用して、
2m量子ビットの最大エンタングルメント状態を生成するエンタングルメント状態生成部と、
前記エンタングルメント状態生成部により生成された最大エンタングルメント状態の一部と、送信すべきn量子ビットの量子状態と、を前記公開鍵に対応する量子プログラムPに入力して前記暗号化された量子状態を算出する暗号化部と、
を備える、暗号化装置。
【請求項10】
乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、を有する鍵生成装置により生成された秘密鍵に対応する量子プログラムSを保持する秘密鍵保持部と、
量子コンピュータを利用し、前記公開鍵に対応する量子プログラムPを用いて生成された、暗号化された量子状態を前記秘密鍵に対応する量子プログラムSに入力して元の量子状態を算出する復号部と、
を備える、復号装置。
【請求項11】
乱数を発生させる乱数発生ステップと、
前記乱数発生ステップで発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成ステップと、
m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化ステップと、
前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加ステップと、
前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化ステップと、
前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成ステップと、
前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続ステップと、
を含む、鍵生成方法。
【請求項12】
量子コンピュータを利用して、2m量子ビットの最大エンタングルメント状態を生成するエンタングルメント状態生成ステップと、
乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、を有する鍵生成装置により生成された公開鍵に対応する量子プログラムPに対し、
量子コンピュータを利用して、前記エンタングルメント状態生成ステップで生成された最大エンタングルメント状態のうち、m量子ビットの量子状態と、送信すべきn量子ビットの量子状態と、を入力して前記暗号化された量子状態を算出する暗号化ステップと、
を含む、暗号化方法。
【請求項13】
乱数を発生させる乱数発生器と、前記乱数発生器を用いて発生させた乱数に基づき、n量子ビットに対するm種類のユニタリ演算U(i=1〜m)、及び、m量子ビットに対する2種類のユニタリ演算L、Rに、それぞれ対応する量子プログラムU、L、Rを生成する量子プログラム生成部と、m量子ビットの入力状態に応じて前記量子プログラムUの動作が制御されるように制御化された量子プログラムCUを生成する量子プログラム制御化部と、前記量子プログラムCUに前記量子プログラムL、Rを付加して量子プログラムGを生成する量子プログラム付加部と、前記量子プログラムGを難読化して、公開鍵に対応する量子プログラムPを生成する量子プログラム難読化部と、前記量子プログラムCUに対応するユニタリ演算CUのエルミート共役CUに対応する量子プログラムCUと、前記ユニタリ演算Rの複素共役Rに対応する量子プログラムRと、を生成する逆量子プログラム生成部と、前記量子プログラムCUと前記量子プログラムRとを接続して、秘密鍵に対応する量子プログラムSを生成する量子プログラム接続部と、を有する鍵生成装置により生成された秘密鍵に対応する量子プログラムSに対し、
量子コンピュータを利用して、前記公開鍵に対応する量子プログラムPを用いて生成された、暗号化された量子状態を入力して元の量子状態を算出する復号ステップを含む、復号方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2011−130120(P2011−130120A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−285698(P2009−285698)
【出願日】平成21年12月16日(2009.12.16)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】