説明

公開鍵暗号の依頼計算の事前計算方法

【課題】冪乗計算を実行する必要のないRSA暗号等の公開鍵暗号の依頼計算の事前計算方法を提供し、多くのクライアント装置をPKIトークンとして実用に耐えられるようにする。
【解決手段】RSA暗号の依頼計算の事前計算方法を実行するクライアント装置1は、中央演算処理装置兼主記憶装置2と、記憶装置3とから構成される。記憶装置3には、従来技術の場合と同様な情報と共に、本発明により、冪乗情報FP[1]〜FP[γ],SP[1]〜SP[γ]が記憶される。クライアント装置1は、ステップ104、105の処理を繰り返すことにより、冪乗演算を行わず単に冪乗情報の乗算処理を行うだけで、事前計算情報fp,spを算出することができる。その後の依頼計算は、従来技術と同様にサーバ装置に行わせればよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、公開鍵暗号の依頼計算の事前計算方法に係り、暗号技術のうち公開鍵暗号の復号時や署名時に実行される冪乗計算の依頼計算の事前計算方法に関する。
【背景技術】
【0002】
公開鍵暗号の依頼計算方法は、秘密鍵を記憶しているクライアント装置が、秘密鍵を記憶していないサーバ装置に対して、秘密鍵の保護を図りながら冪乗計算の処理を依頼する処理時間短縮を目的として実行する分散計算方法である。すなわち、依頼計算は、クライアント装置からサーバ装置に秘密鍵が漏洩することなく、クライアント装置で実行すべき冪乗計算の処理の一部をサーバ装置に実行させるものである。公開鍵暗号の依頼計算の事前計算方法は、復号したい暗号文または署名したいメッセージが入力される前、すなわち、公開鍵暗号の依頼計算を実行する前に、クライアント装置で実行する計算方法である。
【0003】
公開鍵暗号の依頼計算方法に関する従来技術として、例えば、非特許文献1に記載された技術が知られている。この従来技術は、RSA暗号の依頼計算方法に関するもので、RSA暗号のRSA鍵情報と剰余群とを、楕円曲線暗号等の群を利用する公開鍵暗号の鍵情報と群とに変更することにより、公開鍵暗号の依頼計算方法に応用することができる。
【0004】
図3は従来技術によるRSA暗号の依頼計算の事前計算方法について説明する図であり、図3を参照して、従来技術による依頼計算の事前計算方法を説明する。図3において、1はクライアント装置、2は中央演算処理装置兼主記憶装置、3は記憶装置である。
【0005】
RSA暗号の依頼計算の事前計算方法を実行するクライアント装置1は、中央演算処理装置兼主記憶装置2と、記憶装置と3から構成される。
【0006】
記憶装置3には、RSA公開鍵情報e,nと、RSA秘密鍵情報dと、RSA秘密鍵二分割情報fd,sdと、RSA秘密鍵多分割情報D[1]〜D[α]と、第一指数情報FE[1]〜FE[α]と、第二指数情報SE[1]〜SE[α]と、セキュリティパラメータα,βとが記憶されている。
【0007】
但し、φ(n)はRSA公開鍵情報nのオイラー関数値,D[1]〜D[α]は1以上φ(n)−1以下の整数値,FE[1]〜FE[α]及びSE[1]〜SE[α]は0以上β−1以下の整数値であり、d=fd×sd modφ(n),fd=Σ(1≦i≦α)(D[i]×FE[i])modφ(n),sd=Σ(1≦i≦α)(D[i]×SE[i])modφ(n)が成り立つものとする。
【0008】
次に、従来技術によるRSA暗号の依頼計算の事前計算方法の動作について、図3の中央演算処理装置兼主記憶装置2の内部に示したフローを参照して説明する。この処理は、RSA暗号の依頼計算方法を実行する前に、毎回実行する必要のある処理である。
【0009】
(1)クライアント装置1の処理装置は、まず、記憶装置3からRSA公開鍵情報nと、RSA秘密鍵二分割情報sdを読み込む(ステップ301)。
【0010】
(2)次に、事前計算情報fpに1以上n−1以下のランダムな整数値を代入する(ステップ302)。
【0011】
(3)次に、事前計算情報spにfp^(−sd)mod n を代入する。但し、fp^(−sd)は、fpの(−sd)乗の値である(ステップ303)。
【0012】
(4)記憶装置3に、ステップ302、303の処理で得られた事前計算情報fp,spを書き込む(ステップ304)。
【0013】
以上がクライアント装置1で実行される事前計算であり、クライアント装置1は、この事前計算を行った後に、サーバ装置に対して計算の依頼を行う。
【0014】
図4は従来技術によるRSA暗号の依頼計算方法について説明する図であり、次に、図4を参照して、従来技術による依頼計算方法を説明する。図4において、2’は中央演算処理装置兼主記憶装置、4はサーバ装置であり、他の符号は、図3の場合と同一である。
【0015】
従来技術による依頼計算は、クライアント装置1とサーバ装置4とが接続されて実行され、RSA暗号の依頼計算方法を実行するクライアント装置1は、中央演算処理装置兼主記憶装置2と記憶装置3から構成され、サーバ装置4は、中央演算処理装置兼主記憶装置2’から構成される。記憶装置3には、図3で説明したRSA暗号の依頼計算の事前計算方法を実行した後の情報が記憶されている。
【0016】
なお、後述において、xは復号したい暗号文情報または署名したいメッセージ情報であり、zは復号結果情報または署名結果情報である。
【0017】
(1)クライアント装置1の処理装置は、まず、記憶装置3からRSA公開鍵情報nと、RSA秘密鍵多分割情報D[1]〜D[α]と、第一指数情報FE[1]〜FE[α]と、第二指数情報SE[1]〜SE[α]と、セキュリティパラメータαと、事前計算情報fp,spとを読み込む(ステップ401)。
【0018】
(2)次に、クライアント装置1は、サーバ装置4に、x,n,D[1]〜D[α]を送信する(ステップ402)。
【0019】
(3)サーバ装置4は、1≦i≦αについて、第一基底情報FB[i]にx^D[i]mod n を代入して、第一基底情報FB[1]〜FB[α]を算出する(ステップ403)。
【0020】
(4)その後、サーバ装置4は、クライアント装置1にステップ403で算出した第一基底情報FB[1]〜FB[α]を送信する(ステップ404)。
【0021】
(5)クライアント装置1は、第一基底情報FB[1]〜FB[α]を受け取ると、中間結果情報yにfp×Π(1≦i≦α)(FB[i]^FE[i])mod n を代入して、中間結果情報yを算出する(ステップ405)。
【0022】
(6)クライアント装置1は、サーバ装置4にステップ405で算出した中間結果情報yを送信する(ステップ406)。
【0023】
(7)サーバ装置4は、1≦i≦αについて、第二基底情報SB[i]にy^D[i]mod nを代入して、第二基底情報SB[1]〜SB[α]を算出する(ステップ407)。
【0024】
(8)サーバ装置4は、クライアント装置1にステップ407で算出した第二基底情報SB[1]〜SB[α]を送信する(ステップ408)。
【0025】
(9)クライアント装置1は、サーバ装置4から第二基底情報SB[1]〜SB[α]を受け取ると、zにsp×Π(1≦i≦α)(SB[i]^SE[i])mod n を代入する(ステップ409)。
【0026】
前述したような従来技術によるRSA暗号の依頼計算方法により、RSA暗号の復号時や署名時に実行される冪乗計算を正しく実行することができ、このことは、次のように確認することができる。
【0027】
z=sp×Π(1≦i≦α)(SB[i]^SE[i])mod n
=sp×Π(1≦i≦α)(y^D[i]^SE[i])mod n
=sp×y^{Σ(1≦i≦α)(D[i]×SE[i])}mod n
=sp×y^sd mod n
=sp×{fp×Π(1≦i≦α)(FB[i]^FE[i])}^sd mod n
=sp×fp^sd×{Π(1≦i≦α)(FB[i]^FE[i])}^sd m od n
={Π(1≦i≦α)(FB[i]^FE[i])}^sd mod n
={Π(1≦i≦α)(x^D[i]^FE[i])}^sd mod n
=x^{Σ(1≦i≦α)(D[i]×FE[i])}^sd mod n
=x^fd^sd mod n
=x^(fd×sd)mod n
=x^d mod n
前述したような従来技術により、RSA暗号の依頼計算を行った場合にも、クライアント装置からサーバ装置にRSA秘密鍵情報dが漏洩することはない。なぜなら、セキュリティパラメータα,βの値を大きくすれば、第一指数情報FE[1]〜FE[α]と第二指数情報SE[1]〜SE[α]との組み合わせの数は膨大になり、サーバ装置が第一指数情報FE[1]〜FE[α]と第二指数情報SE[1]〜SE[α]とを取得できないからである。例えば、セキュリティパラメータαの値を16,βの値を16とすると、第一指数情報FE[1]〜FE[α]と第二指数情報SE[1]〜SE[α]との組み合わせの数は2^128となる。
【0028】
そして、依頼計算を行わない場合のクライアント装置の処理量は、指数部ビット長がRSA秘密鍵情報dのビット長の冪乗計算1回である。一方、依頼計算方を行う場合のクライアント装置の処理量は、指数部ビット長がセキュリティパラメータβのビット長の冪乗計算2α回である。指数部のビット長がLの冪乗計算1回の処理量は、乗算1.5L回の処理量とほぼ等しい。例えば、RSA秘密鍵情報dのビット長を1024、セキュリティパラメータβのビット長を4、セキュリティパラメータαのビット長を16とすると、依頼計算を行わない場合のクライアント装置の処理量は、乗算1536回の処理量となり、依頼計算を行う場合のクライアント装置の処理量は、乗算192回の処理量となる。従って、前述した従来技術によるRSA暗号の依頼計算方法により、クライアント装置の処理量を大幅に削減することができる。
【非特許文献1】「情報理論とその応用シリーズ4 暗号と認証」、株式会社 培風館、1996年、p.114−115
【発明の開示】
【発明が解決しようとする課題】
【0029】
前述した従来技術によるRSA暗号の依頼計算の事前計算方法は、図3により説明したステップ303の処理で、指数部ビット長がRSA秘密鍵二分割情報sdのビット長の冪乗計算を1回を実行する必要がある。RSA秘密鍵二分割情報sdのビット長は、RSA秘密鍵情報dのビット長と等しいため、従来技術によるRSA暗号の依頼計算の事前計算の処理量は、依頼計算方法なしの場合のクライアント装置の処理量と等しくなる。また、この事前計算の結果は、サーバ装置に送信して依頼計算のために使用されるが、サーバ装置に毎回同一のデータを送信すると安全性を損なう可能性があるので、事前計算は、RSA暗号の依頼計算を実行する前に、毎回実行する必要がある。
【0030】
そのため、前述した従来技術によるRSA暗号の依頼計算の事前計算方法は、その処理量を削減しないと、クライアント装置によってはPKIトークンとして実用に耐えられないという問題点を生じさせてしまう。このことは、クライアント装置が携帯電話機等の携帯可能な機器のような処理能力の小さい機器である場合に特に大きな問題となる。
【0031】
本発明の目的は、前述したような従来技術の問題点を解決し、冪乗計算を実行する必要のないRSA暗号、楕円曲線暗号等の公開鍵暗号の依頼計算の事前計算方法を提供することにある。
【課題を解決するための手段】
【0032】
本発明によれば前記目的は、サーバ装置に公開鍵暗号の依頼計算を行わせるためにクライアント装置が事前計算を行う公開鍵暗号の依頼計算の事前計算方法において、前記クライアント装置内の記憶装置に事前計算情報の組と同様な関係が成立する冪乗情報を記憶しておき、前記クライアント装置がランダムに選んだ冪乗情報を乗算することにより事前計算情報を計算することにより達成される。
【0033】
公開鍵暗号がRSA暗号である場合について具体的にいえば、前記目的は、サーバ装置が、底部分が復号したい暗号文情報または署名したいメッセージ情報であり指数部分がRSA秘密鍵多分割情報である冪乗計算を実行することにより第一基底情報を計算し、クライアント装置が、底部分が第一基底情報であり指数部分が第一指数情報である冪乗計算を実行し、さらに、事前計算情報を掛け合わせることにより中間結果情報を計算し、サーバ装置が、底部分が中間結果情報であり指数部分がRSA秘密鍵多分割情報である冪乗計算を実行することにより第二基底情報を計算し、クライアント装置が、底部分が第二基底情報であり指数部分が第二指数情報である冪乗計算を実行し、さらに、事前計算情報を掛けあわせることにより復号結果情報または署名結果情報を計算するRSA暗号の依頼計算方法に対して、クライアント装置内の記憶装置に、冪乗情報の組が事前計算情報の組と同様な関係が成立する冪乗情報を記憶し、クライアント装置が、ランダムに選んだ冪乗情報を乗算することで事前計算情報を計算することにより達成される。
【発明の効果】
【0034】
本発明によれば、公開鍵暗号の依頼計算の事前計算において、冪乗計算を実行する必要がなくなるので、依頼計算の事前計算を行うクライアント装置の処理量を削減することができると共に、安全性を維持することができる。これにより、携帯電話のような処理能力の小さい機器を含め、より多くのクライアント装置をPKIトークンとして実用に耐えられるようにすることができる。
【発明を実施するための最良の形態】
【0035】
以下、本発明による公開鍵暗号の依頼計算の事前計算方法の実施形態を図面により詳細に説明する。
【0036】
図1は本発明の一実施形態によるRSA暗号の依頼計算の事前計算方法について説明する図であり、図1を参照して、本発明の実施形態による依頼計算の事前計算方法を説明する。図1における符号は、図3の場合と同様である。
【0037】
RSA暗号の依頼計算の事前計算方法を実行するクライアント装置1は、従来技術の場合と同様に、中央演算処理装置兼主記憶装置2と、記憶装置3とから構成される。図3には、本発明の説明に必要な構成だけを示しているが、クライアント装置1は、よく知られているように、CPU、ハードディスク装置、主記憶装置、ディスプレイ、キーボード、マウス、通信制御部等を備えて構成される携帯電話機、PDA、PC、ワークステーション等の情報処理装置であってよい。
【0038】
そして、記憶装置3には、RSA公開鍵情報e,nと、RSA秘密鍵情報dと、RSA秘密鍵二分割情報fd,sdと、RSA秘密鍵多分割情報D[1]〜D[α]と、第一指数情報FE[1]〜FE[α]と、第二指数情報SE[1]〜SE[α]と、セキュリティパラメータα,β,γ,δと、冪乗情報FP[1]〜FP[γ],SP[1]〜SP[γ]が記憶されている。なお、冪乗情報FP[1]〜FP[γ],SP[1]〜SP[γ]は、本発明のために予め算出されている情報である。
【0039】
但し、φ(n)はRSA公開鍵情報nのオイラー関数値,D[1]〜D[α]は1以上φ(n)−1以下の整数値,FE[1]〜FE[α]及びSE[1]〜SE[α]は0以上β−1以下の整数値であり、d=fd×sd modφ(n) ,fd=Σ(1≦i≦α)(D[i]×FE[i])modφ(n),sd=Σ(1≦i≦α)(D[i]×SE[i])modφ(n),1≦i≦γについてSP[i]=FP[i]^(−sd)mod n が成り立つものとする。
【0040】
次に、本発明の実施形態によるRSA暗号の依頼計算の事前計算方法の動作について、図1の中央演算処理装置兼主記憶装置2の内部に示したフローを参照して説明する。
【0041】
(1)クライアント装置1の処理装置は、まず、記憶装置3からRSA公開鍵情報nと、セキュリティパラメータγ,δと、冪乗情報FP[1]〜FP[γ],SP[1]〜SP[γ]とを読み込む(ステップ101)。
【0042】
(2)次に、事前計算情報fpに1を代入すると共に、事前計算情報spにも1を代入する(ステップ102)。
【0043】
(3)iに1を代入して、ステップ104、105の処理を繰り返すことを設定する(ステップ103)。
【0044】
(4)次に、R[i]に1以上γ以下のランダムな整数を代入する(ステップ104)。
【0045】
(5)事前計算情報fpにfp×FP[R[i]]mod nを代入し、事前計算情報spにsp×SP[R[i]]mod nを代入する(ステップ105)。
【0046】
(6)iにi+1を代入して、i≦δであるか否かを判定し、i≦δである間、ステップ104からの処理に戻って処理を繰り返す(ステップ106)。
【0047】
(7)前述までの処理で算出された事前計算情報fp,spを記憶装置3に書き込んで、ここでの処理を終了する(ステップ107)。
【0048】
前述した事前計算の後の依頼計算は、図4により説明した従来技術の場合と同様に、サーバ装置に計算させることができる。
【0049】
次に、前述した本発明の実施形態によるRSA暗号の依頼計算の事前計算方法により計算される事前計算情報fp,spが、従来技術によるRSA暗号の依頼計算の事前計算方法により計算される事前計算情報fp,spと同様なものとなることについて説明する。 sp=Π(1≦i≦δ)(SP[R[i]])mod n
=Π(1≦i≦δ)(FP[R[i]]^(−sd))mod n
={Π(1≦i≦δ)FP[R[i]]}^(−sd)mod n
=fp^(−sd)mod n
前述した本発明の実施形態によるRSA暗号の依頼計算の事前計算の処理量は、乗算2δ回である。従来技術によるRSA暗号の依頼計算の事前計算の処理量は、指数部ビット長がRSA秘密鍵二分割情報sdのビット長の冪乗計算1回である。例えば、セキュリティパラメータδを20、RSA秘密鍵二分割情報sdのビット長を1024とすると、本発明の実施形態でのRSA暗号の依頼計算の事前計算の処理量は、乗算40回の処理量であり、従来技術でのRSA暗号の依頼計算の事前計算の処理量は、乗算1536回の処理量である。このように、本発明の実施形態によるRSA暗号の依頼計算の事前計算方法は、クライアント装置の処理量を削減することができる。
【0050】
また、本発明の実施形態によるRSA暗号の依頼計算の事前計算方法を用いても、クライアント装置からサーバ装置にRSA秘密鍵情報dが漏洩することはない。なぜなら、セキュリティパラメータγ,δを大きくすれば、事前計算情報fp,spの組み合わせの数は膨大になり、サーバ装置が事前計算情報fp,spを取得することができないからである。例えば、セキュリティパラメータγを32,δを20とすると、事前計算情報fp,spの組み合わせの数は2^100という大きなものとなる。
【0051】
前述したように、本発明の実施形態により、安全性を維持しつつ公開鍵暗号の依頼計算の事前計算の処理量を削減することができ、より多くのクライアント装置をPKIトークンとして実用に耐えられるようにすることができる。
【0052】
前述した本発明の実施形態は、RSA暗号のRSA鍵情報と剰余群とを、楕円曲線暗号等の群を利用する公開鍵暗号の鍵情報と群とに変更することにより、公開鍵暗号の依頼計算の事前計算方法に応用することができ、次に、これについて説明する。
【0053】
図2は本発明の他の実施形態による楕円曲線暗号の依頼計算の事前計算方法について説明する図であり、図2を参照して、本発明の他の実施形態による依頼計算の事前計算方法を説明する。図2における符号は、図3の場合と同様であり、また、楕円曲線暗号の依頼計算の事前計算方法を実行するクライアント装置1は、図1の場合と同様に、中央演算処理装置兼主記憶装置2と、記憶装置3とから構成される。
【0054】
記憶装置3には、楕円曲線公開鍵情報E,G[1]〜G[2]と、楕円曲線秘密鍵情報dと、楕円曲線秘密鍵二分割情報fd,sdと、楕円曲線秘密鍵多分割情報D[1]〜D[α]と、第一指数情報FE[1]〜FE[α]と、第二指数情報SE[1]〜SE[α]と、セキュリティパラメータα,β,γ,δと、スカラー倍情報FP[1]〜FP[γ],SP[1]〜SP[γ]とが記憶されている。
【0055】
但し、Eは楕円曲線,Hは楕円曲線上の巡回群,|H|は楕円曲線上の巡回群の位数,G[1]〜G[2]及びFP[1]〜FP[γ]及びSP[1]〜SP[γ]は楕円曲線上の点,d及びfd及びsd及びD[1]〜D[α]は1以上|H|−1以下の整数値,FE[1]〜FE[α]及びSE[1]〜SE[α]は0以上β−1以下の整数値であり、楕円曲線E上の演算でG[2]=d×G[1],d=fd×sd mod|H|,fd=Σ(1≦i≦α)(D[i]×FE[i])mod|H|,sd=Σ(1≦i≦α)(D[i]×SE[i])mod|H|,1≦i≦γについて楕円曲線E上の演算でSP[i]=FP[i]×(−sd)が成り立つものとする。
【0056】
次に、本発明の他の実施形態による楕円曲線暗号の依頼計算の事前計算方法の動作について、図2の中央演算処理装置兼主記憶装置2の内部に示したフローを参照して説明する。
【0057】
(1)クライアント装置1の処理装置は、まず、記憶装置3から楕円曲線公開鍵情報Eと、セキュリティパラメータγ,δと、スカラー倍情報FP[1]〜FP[γ],SP[1]〜SP[γ]とを読み込む(ステップ201)。
【0058】
(2)次に、事前計算情報fpに無限遠点を代入すると共に、事前計算情報spにも無限遠点を代入する(ステップ202)。
【0059】
(3)iに1を代入して、ステップ204、205の処理を繰り返すことを設定する(ステップ203)。
【0060】
(4)次に、R[i]に1以上γ以下のランダムな整数を代入する(ステップ204)。
【0061】
(5)事前計算情報fpに楕円曲線E上の演算でfp+FP[R[i]]を代入し、事前計算情報spに楕円曲線E上の演算でsp+SP[R[i]]を代入する(ステップ205)。
【0062】
(6)iにi+1を代入して、i≦δであるか否かを判定し、i≦δである間、ステップ204からの処理に戻って処理を繰り返す(ステップ206)。
【0063】
(7)前述までの処理で算出された事前計算情報fp,spを記憶装置3に書き込んで、ここでの処理を終了する(ステップ207)。
【図面の簡単な説明】
【0064】
【図1】本発明の一実施形態によるRSA暗号の依頼計算の事前計算方法について説明する図である。
【図2】本発明の他の実施形態による楕円曲線暗号の依頼計算の事前計算方法について説明する図である。
【図3】従来技術によるRSA暗号の依頼計算の事前計算方法について説明する図である。
【図4】従来技術によるRSA暗号の依頼計算方法について説明する図である。
【符号の説明】
【0065】
1 クライアント装置
2、2’ 中央演算処理装置兼主記憶装置
3 記憶装置
4 サーバ装置

【特許請求の範囲】
【請求項1】
サーバ装置に公開鍵暗号の依頼計算を行わせるためにクライアント装置が事前計算を行う公開鍵暗号の依頼計算の事前計算方法において、前記クライアント装置内の記憶装置に事前計算情報の組と同様な関係が成立する冪乗情報を記憶しておき、前記クライアント装置がランダムに選んだ冪乗情報を乗算することにより事前計算情報を計算することを特徴とする公開鍵暗号の依頼計算の事前計算方法。
【請求項2】
前記公開鍵暗号がRSA暗号であることを特徴とする請求項1記載の公開鍵暗号の依頼計算の事前計算方法。
【請求項3】
前記公開鍵暗号が楕円曲線暗号であることを特徴とする請求項1記載の公開鍵暗号の依頼計算の事前計算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2006−78751(P2006−78751A)
【公開日】平成18年3月23日(2006.3.23)
【国際特許分類】
【出願番号】特願2004−262415(P2004−262415)
【出願日】平成16年9月9日(2004.9.9)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】