(57)【要約】  演算処理提供期間中の構成と同じ構成でサービスを再開することを防止する鍵保管装置、鍵保管方法、及びそのプログラムを提供することを目的とする。鍵保管装置は、鍵を用いた演算処理を提供している期間の終了前は鍵を秘密に管理し、その期間の終了に伴い鍵を出力するものとし、第一情報に対して一方向性関数を作用させて鍵を生成する一方向性関数部と、期間において、第一情報を秘密に保管する保管部と、期間の終了に伴い、保管部から第一情報を消去し、鍵を出力する終了判定部と、を含む。
2015008623.tif 000002
【特許請求の範囲】
【請求項１】
鍵を用いた演算処理を提供している期間の終了前は前記鍵を秘密に管理し、その期間の終了に伴い前記鍵を出力するものとし、
第一情報に対して一方向性関数を作用させて前記鍵を生成する一方向性関数部と、
前記期間において、前記第一情報を秘密に保管する保管部と、
前記期間の終了に伴い、前記保管部から前記第一情報を消去し、前記鍵を出力する終了判定部と、を含む、
鍵保管装置。
【請求項２】
請求項１記載の鍵保管装置であって、
前記演算処理が、前記鍵を用いて、乱数rによって元の情報との関係をかく乱させたかく乱情報に対して行われるものである、
鍵保管装置。
【請求項３】
鍵を用いた演算処理を提供している期間の終了前は前記鍵を秘密に管理し、その期間の終了に伴い前記鍵を出力するものとし、
一方向性関数部が、第一情報に対して一方向性関数を作用させて前記鍵を生成する一方向性関数ステップと、
保管部が、前記期間において、前記第一情報を秘密に保管する保管ステップと、
終了判定部が、前記期間の終了に伴い、前記第一情報を消去し、前記鍵を出力する終了判定ステップと、を含む、
鍵保管方法。
【請求項４】
請求項３記載の鍵保管方法であって、
前記演算処理が、前記鍵を用いて、乱数rによって元の情報との関係をかく乱させたかく乱情報に対して行われるものである、
鍵保管方法。
【請求項５】
請求項１または請求項２記載の鍵保管装置として、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理に用いられる鍵を秘密に管理する鍵保管装置、鍵保管方法、及びそのプログラムに関する。
【背景技術】
【０００２】
特許文献１が、演算処理に用いられる秘密鍵を秘密に保管する鍵保管装置の従来技術として知られている。特許文献１では、鍵保管装置が、端末装置から公開鍵暗号方式に則って暗号化された暗号文を受け取り、秘密鍵を用いて、暗号文を復号し、復号結果を端末装置に出力する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１５１７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
鍵保管装置は、鍵を用いた演算処理を提供している期間(以下「演算処理提供期間」という)の終了前には、鍵を秘密に保管し、外部に出力してはいけないものとする。また、鍵保管装置は、演算処理提供期間の終了に伴い鍵を、演算処理を提供される利用者に対して出力するものとする。この前提は、発明者が見出した以下の問題に対処するためのものである。例えば、特許文献１の復号システムにおいて、演算処理提供期間を終了した際に、秘密鍵を利用者に対して配布しない場合、利用者は暗号文を復号する術を失うという問題が生じ得る。この問題を解消するためには、利用者の利便性を考慮して復号処理の提供の終了に伴い、秘密鍵を利用者に対して配布する必要があると考えられる。【０００５】
しかしながら、演算処理提供期間の終了に伴い秘密鍵を演算処理の利用者に対して出力すると、新たに以下の問題が生じ得る。【０００６】
演算処理提供期間の終了後に、攻撃者が鍵保管装置に不正侵入し、全く同じ構成でサービスを再開する可能性がある。仮に、演算処理提供期間の終了後に、鍵保管装置から秘密鍵を消去したとしても、攻撃者は直接または間接的に（正規の利用者を介して）配布された秘密鍵を用いて全く同じ構成でサービスを再開することができる。そうすると、演算処理提供期間終了を知らない利用者やサービスが再開したと思った利用者が暗号文を攻撃者が操る鍵保管装置に対して送信し、情報が流出するという問題が生じ得る。【０００７】
本発明は、演算処理提供期間中の構成と同じ構成でサービスを再開することを防止する鍵保管装置、鍵保管方法、及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明の第一の態様によれば、鍵保管装置は、鍵を用いた演算処理を提供している期間の終了前は鍵を秘密に管理し、その期間の終了に伴い鍵を出力するものとし、第一情報に対して一方向性関数を作用させて鍵を生成する一方向性関数部と、期間において、第一情報を秘密に保管する保管部と、期間の終了に伴い、保管部から第一情報を消去し、鍵を出力する終了判定部と、を含む。
【発明の効果】
【０００９】
本発明の第一の態様によれば、攻撃者が演算処理提供期間中の構成と同じ構成でサービスを再開することを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】第一実施形態に係る鍵保管装置の機能ブロック図。
【図２】第一実施形態に係る鍵保管装置の処理フローを示す図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。
【００１２】
＜第一実施形態＞
図１及び図２を用いて、第一実施形態に係る鍵保管装置１００を説明する。図１は第一実施形態に係る鍵保管装置１００の機能ブロック図を、図２は第一実施形態に係る鍵保管装置１００の処理フローを示す。
【００１３】
鍵保管装置１００、端末装置２０−１及び端末装置２０−２は、通信回線３０を介して互いに接続されている。
【００１４】
鍵保管装置１００、端末装置２０−１及び端末装置２０−２は、ルータ装置、サーバ装置、携帯電話、ＩＣカードなどの計算機能及び記憶機能を備えた機器や、特別なプログラムが読み込まれたＣＰＵやＲＡＭを備えた公知又は専用のコンピュータなどである。
【００１５】
鍵保管装置１００は、演算処理部１０１、一方向性関数部１０３、保管部１０５及び終了判定部１０７を含む。
【００１６】
鍵保管装置１００は、演算処理提供期間終了前は鍵sを秘密に管理し、その演算処理提供期間の終了に伴い鍵sを出力するものとする。ここで「管理」とは、保管だけではなく、生成を含む概念であり、その他、追加、変更、削除、端末装置や情報τとの対応付け等を含む概念であってもよい。
【００１７】
鍵保管装置１００は、演算処理提供期間終了前、端末装置２０−１から演算処理の対象となる情報τを受け取り、鍵sを用いて、所定の演算処理を行い、演算結果zを端末装置２０−１に送信する。
【００１８】
保管部１０５は、演算処理の提供に先立ち、第一情報s’を秘密に保管しておく。
【００１９】
終了判定部１０７は、演算処理提供期間の終了に伴い、保管部１０５から第一情報s’を消去し、端末装置２０−１に鍵sを出力する（図中、一点鎖線で表す）。
【００２０】
終了判定部１０７は、情報τを受け取ると、演算処理提供期間が終了しているか否かを判定する（ｓ１）。演算処理提供期間が終了している場合、終了判定部１０７は、演算処理提供期間が終了している旨のエラーメッセージを端末装置２０−１に送信する（ｓ２）。一方、演算処理提供期間が終了していない場合、終了判定部１０７は、情報τを演算処理部１０１に出力し、一方向性関数部１０３に鍵sを要求する（ｓ３）。
【００２１】
一方向性関数部１０３は、鍵sを要求されると、保管部１０５から第一情報s’を取り出す。一方向性関数部１０３は、第一情報s’に対して一方向性関数を作用させて鍵sを生成し（ｓ４）、鍵sを演算処理部１０１に出力する。例えば、一方向性ハッシュ関数Hash()が存在すると仮定し、一方向性関数部１０３は、第一情報s’に対してこの一方向性ハッシュ関数Hash()を作用させて鍵s=Hash(s’)を生成する。
【００２２】
演算処理部１０１は、鍵sを用いて所定の演算処理を行い、演算結果zを端末装置２０−１に送信する（ｓ５）。演算処理部１０１は、鍵sを秘密に保管しておいてもよいし、演算処理を行った後に消去してもよい。鍵sを秘密に保管しておく場合、演算処理部１０１は、次回から上記ｓ３（鍵の要求）、ｓ４（鍵の生成）を省略することができる。一方、演算処理を行った後に演算処理部１０１が鍵sを消去する場合には、鍵保管装置１００の内部に鍵sは存在しなくなり、より安全性が高まる。また、情報τを受け取る前に、鍵保管装置１００が、事前に鍵ｓを生成しておき、鍵ｓを秘密に保管しておいてもよい。要は、鍵保管装置１００が、演算処理提供期間終了前は鍵sを秘密に管理し、演算処理提供期間の終了に伴い、鍵保管装置１００(より詳しくいうと保管部１０５)から第一情報s’を消去し、利用者に（この例では、端末装置２０−１）に鍵sを出力する構成とすればよい。
【００２３】
演算処理としては、暗号化、復号、署名生成等が考えられる。さらに、暗号化には、共通鍵暗号方式によるものが考えられる。復号には、共通鍵暗号方式や公開鍵暗号方式によるものが考えられる。共通鍵暗号方式としてはAESやDES等が考えられ、鍵sは共通鍵である。公開鍵暗号方式としては、RSA暗号、ElGamal暗号、楕円ElGamal暗号等が考えられ、鍵sは秘密鍵である。署名生成には、RSA署名等が考えられ、鍵sは署名鍵である。以下に、演算処理を例示する。
【００２４】
(共通鍵暗号方式による暗号化、復号)
共通鍵暗号方式の一例について説明する。まず、鍵保管装置１００は、第一情報s’を生成する。
【００２５】
端末装置２０−１は、通信回線３０を介して鍵保管装置１００に対し、平文Mの暗号化を依頼する。
【００２６】
鍵保管装置１００は、平文Mを受け取り、ｓ１〜ｓ４（演算処理提供期間の判定、鍵の要求、鍵生成）を行う。鍵保管装置１００は、共通鍵c(=s)を用いて、平文Mを暗号化し、暗号文C=Enc(M,c)を端末装置２０−１に送信する（ｓ５）。この場合、鍵保管装置１００は、所定の演算処理として暗号化を行い、演算処理の対象となる情報τとして平文Mを受け取り、演算結果zとして暗号文Cを出力する。
【００２７】
端末装置２０−１は、暗号文Cを受け取り、これを記憶する。この例では、この暗号文Cを端末装置２０−２に送信する。
【００２８】
端末装置２０−２は、暗号文Cを受け取り、これを記憶する。端末装置２０−２は、通信回線３０を介して鍵保管装置１００に対し、暗号文Cの復号を依頼する。
【００２９】
鍵保管装置１００は、暗号文Cを受け取り、ｓ１〜ｓ４（演算処理提供期間の判定、鍵の要求、鍵生成）を行う。共通鍵cを用いて、暗号文Cを復号し、復号結果M'=Dec(C,c)を端末装置２０−２に送信する（ｓ５）。この場合、鍵保管装置１００は、所定の演算処理として復号を行い、演算処理の対象となる情報τとして暗号文Cを受け取り、演算結果zとして復号結果M'を出力する。この例では、演算処理を依頼する端末装置２０−１及び２０−２が鍵保管装置１００の利用者である。
【００３０】
(RSA暗号を用いた公開鍵暗号方式について)
RSA暗号を用いた公開鍵暗号方式の一例について説明する。まず、tをセキュリティパラメータとする。p,q(p≠q)をt/2ビットの素数とし、m=pqとする。eをφ(m)未満の正の整数で、φ(m)と互いに素な数とし、dをφ(m)を法としたeの逆数（de≡1(modφ(m))）とする。ここでφ(m)はmのオイラー関数で、この場合は(p-1)(q-1)に等しい。0以上m未満の整数の集合をZmで表す。Mを平文空間Zmの元とする。
【００３１】
RSA暗号を用いた公開鍵暗号方式では、公開鍵y=(e,m)、秘密鍵d(=s)とする。例えば、鍵保管装置１００は、第一情報s’を生成し、第一情報s’に対して一方向性ハッシュ関数Hash()を作用させて秘密鍵d=Hash(s’)を生成する。さらに、鍵保管装置１００は、RSA暗号を用いた公開鍵暗号方式に則って、秘密鍵dに対応する公開鍵y=(e,m)を生成する。鍵保管装置１００は、秘密鍵dを秘密に保管してもよいし、削除してもよい。この例では、削除するものとする。また、鍵保管装置１００は、公開鍵y=(e,m)を公開する。
【００３２】
端末装置２０−２は、公開鍵y=(e,m)を用いて、平文Mを次式により暗号化し、暗号文Cを端末装置２０−１に送信する。
C=Me mod m
ここでは、群で定義された演算を乗法的に表現する。すなわちGを群とし、α∈Gに対する「αb」は、群Gで定義された演算をαに対してb回作用させることを意味する。
【００３３】
端末装置２０−１は、暗号文Cを受け取り、記憶し、この暗号文Cの復号を鍵保管装置１００に依頼する。
【００３４】
鍵保管装置１００は、暗号文Cを受け取り、ｓ１〜ｓ４（演算処理提供期間の判定、鍵の要求、鍵生成）を行う。秘密鍵dを用いて、暗号文Cを復号し、復号結果M'=Cdを端末装置２０−１に送信する（ｓ５）。この場合、鍵保管装置１００は、所定の演算処理として復号を行い、演算処理の対象となる情報τとして暗号文Cを受け取り、演算結果zとして復号結果M'を出力する。
【００３５】
端末装置２０−１は、公開鍵y=(m,e)と復号結果M'=Cdとを用いて、復号文M"=Cdmod mを求める。この例及び以下の例では、演算処理を依頼する端末装置２０−１が鍵保管装置１００の利用者である。
【００３６】
(ElGamal暗号)
ElGamalを用いた公開鍵暗号方式の一例について説明する。tをセキュリティパラメータとする。巡回群Gで、位数qが素数であり、かつqのビット数がtであるものが選ばれる。Gの生成元gが選ばれる。xが{0,…,q-1}からランダムに選ばれる。h=gxとする。平文空間はGであり、MはGの元である。暗号文空間はG2であり、(C1,C2)∈G×Gである。
【００３７】
ElGamal暗号を用いた公開鍵暗号方式では、公開鍵y=(G,q,g,h=gx)、秘密鍵x(=s)とする。例えば、鍵保管装置１００は、第一情報s’を生成し、第一情報s’に対して一方向性ハッシュ関数Hash()を作用させて秘密鍵x=Hash(s’)を生成する。さらに、鍵保管装置１００は、ElGamalを用いた公開鍵暗号方式に則って、秘密鍵xに対応する公開鍵y=(G,q,g,h=gx)を生成する。鍵保管装置１００は、秘密鍵xを秘密に保管してもよいし、削除してもよい。この例では、削除するものとする。また、鍵保管装置１００は、公開鍵y=(G,q,g,h=gx)を公開する。
【００３８】
端末装置２０−２は、公開鍵y=(G,q,g,h=gx)を用いて、情報Mを次式により暗号化する。
C=(C1,C2)
C1=gr
C2=Mhr
ただし、rは端末装置２０−２によって生成される乱数であり、0<r<qからランダムに選ばれる整数である。ここでは、群で定義された演算を乗法的に表現する。
【００３９】
端末装置２０−２は、暗号文Cを端末装置２０−１に送信する。
【００４０】
端末装置２０−１は、暗号文Cを受け取り、記憶し、この暗号文Cの復号を鍵保管装置１００に依頼する。
【００４１】
鍵保管装置１００は、暗号文Cを受け取り、ｓ１〜ｓ４（演算処理提供期間の判定、鍵の要求、鍵生成）を行う。鍵保管装置１００は、秘密鍵xを用いて、暗号文Cを復号し、復号結果M'=C2/C1xを端末装置２０−１に送信する（ｓ５）。
【００４２】
なお、端末装置２０−１は、暗号文Cの一部C1を鍵保管装置１００に送信してもよい。この場合、鍵保管装置１００は、ｓ１〜ｓ４を行い、暗号文Cの一部C1と秘密鍵xとを用いて、復号結果C1xを求め、端末装置２０−１に送信する。さらに、端末装置２０−１は、暗号文の他の部分C2と復号結果C1xとを用いて次式により復号結果M'を求める。
M'=C2/C1x
【００４３】
(楕円ElGamal暗号)
Eを楕円曲線パラメータ、J及びHを楕円曲線E上の点、qを楕円曲線E上の点Jの位数とする。楕円ElGamal暗号を用いた公開鍵暗号方式では、公開鍵y=(E,q,J,H=xJ)、秘密鍵x(=s)とする。例えば、鍵保管装置１００は、第一情報s’を生成し、第一情報s’に対して一方向性ハッシュ関数Hash()を作用させて秘密鍵x=Hash(s’)を生成する。さらに、鍵保管装置１００は、ElGamalを用いた公開鍵暗号方式に則って、秘密鍵xに対応する公開鍵y=(E,q,J,H=xJ)を生成する。鍵保管装置１００は、秘密鍵xを秘密に保管してもよいし、削除してもよい。この例では、削除するものとする。また、鍵保管装置１００は、公開鍵y=(E,q,J,H=xJ)を公開する。
【００４４】
端末装置２０−２は、公開鍵y=(E,q,J,H=xJ)を用いて、情報Mを次式により暗号化する。
C=(C1,C2)
C1=rJ
C2=M+rH
ただし、rは情報記憶装置１１によって生成される乱数であり、0<r<qからランダムに選ばれる整数である。ここでは、群で定義された演算を加法的に表現する。
【００４５】
端末装置２０−２は、暗号文Cを端末装置２０−１に送信する。
【００４６】
端末装置２０−１は、暗号文Cを受け取り、記憶し、この暗号文Cの復号を鍵保管装置１００に依頼する。
【００４７】
鍵保管装置１００は、暗号文Cを受け取り、ｓ１〜ｓ４（演算処理提供期間の判定、鍵の要求、鍵生成）を行う。秘密鍵xを用いて、暗号文Cを復号し、復号結果M'=C2-xC1を端末装置２０−１に送信する（ｓ５）。
【００４８】
なお、端末装置２０−１は、暗号文Cの一部C1を鍵保管装置１００に送信してもよい。この場合、鍵保管装置１００は、ｓ１〜ｓ４を行い、暗号文Cの一部C1と秘密鍵xとを用いて、復号結果xC1を求め、端末装置２０−１に送信する。さらに、端末装置２０−１は、暗号文の他の部分C2と復号結果xC1とを用いて次式により復号結果M'を求める。
M'=C2-xC1
【００４９】
(RSA署名)
RSA暗号を用いた署名方式の一例について説明する。
RSA暗号を用いた公開鍵暗号方式では、公開鍵y=(e,m)、署名鍵v(=s)とする。例えば、鍵保管装置１００は、第一情報s’を生成し、第一情報s’に対して一方向性ハッシュ関数Hash()を作用させて署名鍵v=Hash(s’)を生成する。さらに、鍵保管装置１００は、RSA暗号を用いた公開鍵暗号方式に則って、署名鍵vに対応する公開鍵y=(e,m)を生成する。鍵保管装置１００は、署名鍵vを秘密に保管してもよいし、削除してもよい。この例では、削除するものとする。また、鍵保管装置１００は、公開鍵y=(e,m)を公開する。
【００５０】
端末装置２０−１は、平文Mに対する署名の生成を鍵保管装置１００に依頼する。
【００５１】
鍵保管装置１００は、平文Mを受け取り、ｓ１〜ｓ４を行う。鍵保管装置１００は、署名鍵vを用いて、平文Mに対する署名σ=Mvを生成し、署名σを端末装置２０−１に送信する（ｓ５）。この場合、鍵保管装置１００は、所定の演算処理として署名生成を行い、演算処理の対象となる情報τとして平文Mを受け取り、演算結果として署名σを出力する。
【００５２】
端末装置２０−１は、署名σを受け取り、記憶し、端末装置２０−２に平文Mとその署名σをに送信する。
【００５３】
端末装置２０−２は、鍵保管装置１００から公開鍵y=(m,e)を受け取り、平文Mと電子署名σと公開鍵y=(m,e)とを用いて、次式が成り立つか否か検証し、成り立つ場合には電子署名σが真正であると判断する。
M=σe mod m
【００５４】
＜効果＞
一方向性関数を用いて、第一情報s'から鍵sを求めることはできるが、鍵sから第一情報s'を求めることは一方向性関数の逆演算を行うことを意味し、不可能である。そのため、演算処理提供期間終了後に、第一情報s'を消去すると、仮に鍵sを持っていたとしても、攻撃者が演算処理提供期間中の構成と同じ構成でサービスを再開することはできない。
【００５５】
＜変形例＞
本実施形態では、鍵保管装置１００が演算処理部１０１を備えているが、演算処理部１０１を別装置として構成してもよい。その場合には、演算処理装置から鍵保管装置１００に対して秘密鍵が要求される。
【００５６】
本実施形態の暗号化処理、復号処理では、ある端末装置が暗号文を他の端末装置に送信しているが、ある端末装置が暗号文を送信せずに、記憶しておき、その端末装置自身が暗号文の復号を鍵保管装置１００に依頼してもよい。例えば、端末装置２０−１内部の情報を暗号化し、端末装置２０−１自身でも復号できない構成とすることで、端末装置２０−１の盗難や紛失の際にも、情報の流出を防ぐことができる。
【００５７】
＜第二実施形態＞
第一実施形態と異なる部分を中心に説明する。第二実施形態では、クラウド鍵管理型暗号方式（特許文献１参照）を利用して、対象となる情報の復号を依頼する。
【００５８】
第一実施形態では、鍵保管装置１００の管理者が、暗号文Cの復号結果を知ることができる。したがって、鍵保管装置１００の管理者が端末装置２０−１の使用者と異なる場合、端末装置２０−１の使用者のみが知るべき情報が、鍵保管装置１００の管理者に知られる可能性がある。これに対して第二実施形態では、鍵保管装置１００がランダム帰着可能な暗号文(かく乱情報)の復号を行う点が第一実施形態と相違する。ランダム帰着可能な暗号化方式は、ランダム化アルゴリズムと復元アルゴリズムとからなる。ランダム化アルゴリズムは、暗号文と乱数とを用いて別の暗号文を出力する確率アルゴリズムで、出力は入力によらずランダムに選ばれた暗号文と識別できない確率分布に従う。復元アルゴリズムは、ランダム化アルゴリズムの出力である別の暗号文を復号した結果とランダム化アルゴリズムで用いられた乱数を入力として、もとの暗号文を復号した平文を出力するアルゴリズムである。このような暗号方式は、例えばElGamal暗号、楕円ElGamal 暗号、RSA暗号、Pailler暗号などの準同型暗号方式を用いて構成できる。第二実施形態は、準同型暗号方式を用いてランダム自己帰着可能な暗号方式を構成した例を示しながら記述する。
【００５９】
第二実施形態では演算処理が、鍵sを用いて、乱数rによって元の情報との関係をかく乱させたかく乱情報に対して行われる。
【００６０】
例えば、演算処理として公開鍵暗号方式による復号を行う場合、以下のように処理が行われる。
【００６１】
端末装置２０−１は、乱数rを生成し、乱数rによって暗号文Cとの関係をかく乱させたかく乱情報τ（演算処理の対象となる情報）を生成する。乱数rは、図示しない記憶部に記憶しておく。言い換えると、端末装置２０−１は、暗号方式のランダム自己帰着性から定義されるランダム化アルゴリズムに則り、暗号文Cと乱数rとに対応するかく乱情報τを生成する。例えば暗号文Cが準同型暗号方式の暗号文である場合、それと同じ準同型暗号方式に則って公開鍵yで乱数rを暗号化して得られる暗号文(乱数暗号文)をEnc(y,r)とし、端末装置２０−１は、Enc(y,r)とCとの乗法によってかく乱情報τ＝Enc(y,r)・Cを生成する。
【００６２】
端末装置２０−１は、鍵保管装置１００にかく乱情報τを送信し、その復号を依頼する。
【００６３】
鍵保管装置１００は、かく乱情報τを受け取り、ｓ１〜ｓ４を行う。
【００６４】
鍵保管装置１００の演算処理部１０１は、秘密鍵d(=s)を用いて、前述の準同型暗号化方式に則って、かく乱情報τを復号し、復号結果z=Dec(τ,d)を端末装置２０−１に送信する（ｓ５）。端末装置２０−１は、復号結果zを受け取る。
【００６５】
端末装置２０−１は、図示しない記憶部から乱数rを取り出し、暗号方式のランダム自己帰着性から定義される復元アルゴリズムに則り、かく乱情報τの復号結果zと乱数rとを用いて暗号文Cの復号結果M'を求める。例えば前述したかく乱情報τ＝Enc(y,r)・Cである例の場合、端末装置２０−１は、乱数rの逆元r−１を用い、zと元r−１との乗法M’=(r-1)・zによって暗号文Cの復号結果M’を得ることができる。これは準同型暗号方式の暗号化関数および復号関数が準同型性を持つことに基づく。
【００６６】
＜効果＞
このような構成により、第一実施形態と同様の効果を得ることができる。さらに本実施形態では、鍵保管装置１００で復号されるのは暗号文Cと乱数rとに対応するかく乱情報τであり、暗号文Cそのものではない。鍵保管装置１００はかく乱情報τの復号結果zを得ることができても、鍵保管装置１００は乱数rを知らないため復号結果zから暗号文Cの復号結果M'を復元することはできない。これにより、鍵保管装置１００の管理者に暗号文Cの復号結果M'が知られることを防止できる。なお、第二実施形態の構成と、他の公開鍵暗号方式（例えば、ElGamal暗号、楕円ElGamal暗号等）による復号や、共通鍵暗号方式による暗号化及び復号、RSA署名等とを組み合わせてもよい。
【００６７】
＜その他の変形例＞
本発明は上記の実施形態及び変形例に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【００６８】
＜プログラム及び記録媒体＞
また、上記の実施形態及び変形例で説明した各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００６９】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００７０】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。
【００７１】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００７２】
また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００７３】
２０−１，２０−２  端末装置
１００  鍵保管装置
１０１  演算処理部
１０３  一方向性関数部
１０５  保管部
１０７  終了判定部
【図１】
2015008623.tif 000003
【図２】
2015008623.tif 000004
【国際調査報告】
2015008623.tif 000005
2015008623.tif 000006
2015008623.tif 000007
2015008623.tif 000008