JP2004101846A - 暗号化・復号化装置および暗号化・復号化方法 - Google Patents
暗号化・復号化装置および暗号化・復号化方法 Download PDFInfo
- Publication number
- JP2004101846A JP2004101846A JP2002263311A JP2002263311A JP2004101846A JP 2004101846 A JP2004101846 A JP 2004101846A JP 2002263311 A JP2002263311 A JP 2002263311A JP 2002263311 A JP2002263311 A JP 2002263311A JP 2004101846 A JP2004101846 A JP 2004101846A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- encryption
- coefficient
- sentence
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
【課題】暗号化や復号化に要する時間が短く、かつ、論理ゲート数の少ない暗号化・復号化装置および暗号化・復号化方法を提供する。
【解決手段】演算部21は、実質的に次式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、係数記憶部17に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求める。したがって、所定の整数nおよび整数mに対応する2項係数を一度記憶させておけば、以後、同一の整数nおよび整数mに関する暗号化または復号化の時間を短縮することができる。
【選択図】 図1
【解決手段】演算部21は、実質的に次式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、係数記憶部17に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求める。したがって、所定の整数nおよび整数mに対応する2項係数を一度記憶させておけば、以後、同一の整数nおよび整数mに関する暗号化または復号化の時間を短縮することができる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は暗号化・復号化装置および暗号化・復号化方法に関し、とくに、正の整数nを法とする体系において、次式 Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を求める技術に関する。
【0002】
【従来の技術】
暗号のひとつとしてRSA暗号が知られている。RSA暗号の処理過程においては、任意の2つの素数p,qの積であるnと、素数p,qに対して所定の制限を満足する任意の数eとを公開鍵(n,e)として、次式にしたがって平文Mを暗号化して暗号文Cを得る。
【0003】
C=Me(mod n)
【0004】
また、上記e、素数pおよびqから一義的に導かれる数d、ならびに上記nを秘密鍵(n,d)として、次式にしたがって暗号文Cを復号化して平文Mを得る。
【0005】
M=Cd(mod n)
【0006】
この場合、第三者が公開鍵(n,e)のうちnを素因数分解して素数p,qを求めることができれば、これらとeとに基づいて容易にdを知ることができ、秘密鍵(n,d)を得ることができる。
【0007】
しかし、上述のnの値を大きくすれば素数p,qを求めるための素因数分解に膨大な時間が必要となるため、暗号の解読は事実上不可能となる。このように、RSA暗号においては、nの値を大きくすることで、暗号の安全性を確保している。
【0008】
【発明が解決しようとする課題】
しかしながら、従来のRSA暗号には次のような問題があった。すなわち、暗号化においては、平文Mについてe回のかけ算を行う必要がある。また、復号化においては、暗号文Cについてd回のかけ算を行う必要がある。したがって、安全性を確保するためにnを大きくすればするほど、暗号化や復号化に時間がかかるという問題があった。
【0009】
このような問題を解決するために、たとえばハードウェアのみで構成した暗号化回路を用いることも考えられる。図21は、bビットの平文をbビットの暗号文に変換するための暗号化回路のうち暗号文1ビット分に相当する回路1を示す図面である。
【0010】
回路1は、2b−1個のb入力ANDゲート3と1個の2b−1入力ORゲート5により構成されている。したがって、暗号化回路全体では、このb倍の論理ゲートが必要となる。このような暗号化回路を用いると、暗号化に要する時間を短くすることができるものの、膨大な数の論理ゲートが必要となる。復号化についても、同様の問題がある。
【0011】
一方、全ての平文を予め暗号化して記憶しておく方法も考えられる。この方法を用いれば、平文が入力される都度計算を行う場合に比較し暗号化に要する時間を短くできる上、ハードウェアのみで構成した暗号化回路を用いる場合のように膨大な数の論理ゲートを必要とすることもない。しかしながら、nが大きくなれば、膨大な数の記憶素子が必要となるため、やはり限界がある。
【0012】
この発明は、このような従来の暗号化方法や復号化方法の問題点を解消し、暗号化や復号化に要する時間が短く、かつ、膨大な数の記憶素子や論理ゲートを必要としない暗号化・復号化装置および暗号化・復号化方法を提供することを目的とする。
【0013】
【課題を解決するための手段、発明の作用および効果】
請求項1の暗号化・復号化装置は、正の整数nを法とする体系において、次式Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を求める暗号化・復号化装置であって、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶する係数記憶部と、実質的に次式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、係数記憶部に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求める演算部と、を備えている。
【0014】
請求項6の暗号化・復号化方法は、正の整数nを法とする体系において、次式Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を、記憶装置と演算装置とを用いて求める暗号化・復号化方法であって、2項係数iCj(1<=i<=m、0<=j<=i)の全部または一部を、記憶装置に記憶させる係数記憶ステップと、記憶装置に記憶されている2項係数を用いて、演算装置に、実質的に次式Xk i=Σ((j=0,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを含む与えられた定数と、記憶装置に記憶されている2項係数とを用いて、k=k0+1からk=k1まで順に計算させることにより、第2の文Yk1を求める演算ステップと、を備えている。
【0015】
したがって、請求項1の暗号化・復号化装置または請求項6の暗号化・復号化方法においては、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として記憶させておくとともに、所定の2項係数を係数記憶部に記憶させておき、これらの数値を用いて、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求めることができる。
【0016】
このため、全ての第1の文を予め第2の文に変換して記憶しておく場合に比較して、必要な記憶素子の数が少なくて済む。また、暗号化・復号化装置をハードウェアのみで構成する場合に比較して、論理ゲートの数が少なくて済む。さらに、所定の整数nおよび整数mに対応する2項係数を一度記憶させておけば、以後、同一の整数nおよび整数mに関する暗号化または復号化の時間を短縮することができる。
【0017】
すなわち、暗号化や復号化に要する時間が短く、かつ、膨大な数の記憶素子や論理ゲートを必要としない暗号化・復号化装置および暗号化・復号化方法を実現することができる。
【0018】
請求項2の暗号化・復号化装置においては、演算部は、1つのkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶する、べき乗値記憶部を備え、当該演算部は、係数記憶部に記憶されている2項係数と、べき乗値記憶部に記憶されている一群のべき乗値Xk−1 jとを用いて、実質的に式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを算出し、その後、べき乗値記憶部の記憶内容を当該新たに算出した一群のべき乗値Xk iに更新すること、を特徴とする。
【0019】
したがって、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを記憶できる記憶容量のべき乗記憶部を設けておけば、べき乗記憶部の記憶内容を順次書き換えて行くことで、一群のべき乗値Xk iをk=k0+1からk=k1まで順に計算することができる。このため、第2の文Yk1を算出するのに必要なべき乗値Xk iを記憶するための記憶素子が少なくて済む。
【0020】
請求項3の暗号化・復号化装置においては、演算部は、1つのkおよび1つのiに対応する1つのべき乗値Xk iを算出するために必要な1または2以上の2項係数を、係数記憶部に記憶されている2項係数の中から選択する係数選択部と、係数選択部で選択された2項係数と、べき乗値記憶部に記憶されている一群のべき乗値Xk−1 jのうち当該選択された2項係数に対応する1または2以上のべき乗値Xk−1 jと、の積をそれぞれ求める乗算部と、乗算部で得られた1または2以上の積および数値「1」の和を求める加算部と、加算部で得られた和を1つのkおよび1つのiに対応する1つのべき乗値Xk iとしてラッチするラッチ部と、係数選択部、乗算部、加算部、ラッチ部、べき乗値記憶部の動作を制御することにより、1つのkについてのi=1ないしmに対応する複数のべき乗値Xk iを順次算出して、これらをラッチ部に順次ラッチし、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iが全てラッチされた後、当該ラッチされた一群のべき乗値Xk iをべき乗値記憶部に転送して記憶させることによりべき乗値記憶部の記憶内容を当該新たに算出した一群のべき乗値Xk iに更新し、更新されたべき乗値Xk iを新たなべき乗値Xk−1 jとして、順次計算を行うことにより第2の文Yk1を得る制御部と、を備えたこと、を特徴とする。
【0021】
つまり、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを計算するにあたり、1つのkおよび1つのiに対応する1つのべき乗値Xk iを単位として順次、計算を繰り返すようにしている。このため、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを一度に計算する場合に比べて、乗算部などの数を少なくすることができる。したがって、装置に必要な論理ゲートの数を少なくすることができる。
【0022】
請求項4の暗号化・復号化装置においては、当該暗号化・復号化装置は、入力された整数mに基づいて、実質的に前記2項係数iCj(1<=i<=m、1<=j<=i)の全部を取得し、取得した当該2項係数を係数記憶部に記憶させる係数取得部を、さらに備えたこと、を特徴とする。
【0023】
したがって、たとえば、RSA暗号システムにおいて公開鍵として整数nおよび整数mが与えられた場合、これに基づいて所定の2項係数を、計算などにより取得することができる。このため、公開鍵を変更した場合であっても、暗号化に必要な2項係数を容易に取得することができる。復号化の場合も同様である。
【0024】
請求項5の暗号化・復号化装置においては、当該暗号化・復号化装置は、入力された複数の第1の文を、昇順で並べ替えて演算部に与える入力整列部と、演算部で算出された複数の第2の文を、対応する第1の文の入力順に対応させて並べ戻す出力整列部と、をさらに備え、演算部は、直前の第2の文を算出するときに得られた一群のべき乗値を利用して、つぎの第2の文を算出すること、を特徴とする。
【0025】
したがって、直前の第2の文を算出するときに得られた一群のべき乗値を利用して、つぎの第2の文を算出することで、当該つぎの第2の文を算出するための演算時間を短縮することができる。このため、複数の第1の文を暗号化または復号化する場合の全体の処理時間を短縮することができる。
【0026】
なお、この明細書(請求の範囲を含む)において、「a<=b」は、「aは、bより小さいか、または、bに等しい」ことを表す。また、「Σ((j=a,b)f(j))」は、「f(a)+f(a+1)+f(a+2)+…+f(b−1)+f(b)」を表す。「iCj」は、「コンビネーション」、すなわち、「i・(i−1)・(i−2)・…・(i−j+1)/j!」を表す。また、「00=1」と定義する。なお、とくに断らないかぎり、演算は、正の整数nを法とする体系において定義されるものとし、(mod n)の記載は省略する。
【0027】
【発明の実施の形態】
図1は、この発明の一実施形態による暗号化・復号化装置11の構成を示すブロック図である。暗号化・復号化装置11は、正の整数nを法とする体系において、次式 Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を求める装置であって、たとえば、RSA暗号の暗号化および/または復号化を行うために用いることができる。
【0028】
この実施形態においては、RSA暗号の暗号化および/または復号化を行う場合を例に、暗号化・復号化装置11を説明する。暗号化・復号化装置11は、入力部13,係数取得部15,記憶装置である係数記憶部17、入力整列部19,演算装置である演算部21,出力整列部23,出力部25を備えている。
【0029】
入力部13は、所定の整数nおよびmならびに第1の文Xk1を入力するために用いられる。係数取得部15は、入力部13から入力された整数nおよびmに基づいて、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を取得し、取得した当該2項係数を係数記憶部17に記憶させる。
【0030】
入力整列部19は、入力部13から入力された複数の第1の文Xk1を、昇順で並べ替えて演算部21に与える。
【0031】
演算部21は、実質的に次式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、係数記憶部17に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求める。演算部21は、直前の第2の文を算出するときに得られた一群のべき乗値を利用して、つぎの第2の文を算出する。
【0032】
出力整列部23は、演算部21で算出された複数の第2の文Yk1を、対応する第1の文Xk1の入力順に対応させて並べ戻す。出力部25は、出力整列部23により並べ戻された第2の文Yk1を出力する。
【0033】
上記演算部21は、制御部27,係数選択部29,乗算部31,加算部33,ラッチ部35,べき乗値記憶部37を備えている。
【0034】
係数選択部29は、1つのkおよび1つのiに対応する1つのべき乗値Xk iを算出するために必要な1または2以上の2項係数を、係数記憶部17に記憶されている2項係数の中から選択する。
【0035】
べき乗値記憶部37は、j=1ないしmに対応する一群のべき乗値Xk−1 jを記憶する。
【0036】
乗算部31は、係数選択部29で選択された2項係数と、べき乗値記憶部37に記憶されている一群のべき乗値Xk−1 jのうち当該選択された2項係数に対応する1または2以上のべき乗値Xk−1 jと、の積をそれぞれ求める。
【0037】
加算部33は、乗算部31で得られた1または2以上の積および数値「1」の和を求める。ラッチ部35は、加算部33で得られた和を1つのkおよび1つのiに対応する1つのべき乗値Xk iとしてラッチする。
【0038】
制御部27は、係数選択部29、乗算部31、加算部33、ラッチ部35、べき乗値記憶部37の動作を制御する。すなわち、制御部27は、1つのkについてのi=1ないしmに対応する複数のべき乗値Xk iを順次算出して、これらをラッチ部35に順次ラッチする。1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iが全てラッチされた後、制御部27は、当該ラッチされた一群のべき乗値Xk iをべき乗値記憶部37に転送して記憶させることにより、べき乗値記憶部37の記憶内容を、当該新たに算出した一群のべき乗値Xk iに更新する。制御部27は、このようにして更新されたべき乗値Xk iを新たなべき乗値Xk−1 jとして順次計算を行うことにより、第2の文Yk1を得る。
【0039】
つぎに図2は、図1に示す暗号化・復号化装置11を、コンピュータを用いて実現した場合のハードウェア構成の一例を示すブロック図である。図2において、暗号化・復号化装置11は、コンピュータを暗号化・復号化装置11として機能させるためのプログラムを記録した記録媒体であるハードディスク50(記憶手段)、メインメモリ52,ハードディスク50に記録されたプログラムを実行する制御手段であるCPU42,表示手段であるCRT44,入力手段であるキーボード46およびマウス48,演算部21および係数記憶部17を備えている。
【0040】
図2のキーボード46、マウス48、ハードディスク50,CPU42およびメインメモリ52が、図1の入力部13に対応する。CRT44、ハードディスク50,CPU42およびメインメモリ52が、出力部25に対応する。また、CPU42およびメインメモリ52が、係数取得部15、入力整列部19および出力整列部23に対応する。
【0041】
図3は、図2の係数記憶部17および演算部21の構成の一例を示すブロック図である。係数記憶部17および演算部21は、たとえば、1または2以上のLSI(大規模集積回路)として回路基板(図示せず)に装着されコンピュータに組み込まれる。図3に示すように、演算部21は、係数選択部29、乗算部31、加算部33、ラッチ部35、べき乗値記憶部37および制御部27を備えている。
【0042】
係数選択部29は、たとえば、アドレスデコーダー回路として実現される。乗算部31は、たとえば、整数nを次式 n≒2bで表現した場合、少なくともm個のbビット乗算器31a(乗算回路)(以下、単に「乗算器31a」と言うことがある。)により構成される。加算部33は、たとえば、少なくともm個のbビット加算器33a(加算回路)(以下、単に「加算器33a」と言うことがある。)により構成される。
【0043】
ラッチ部35およびべき乗値記憶部37は、たとえば、少なくともそれぞれm個のbビットRAM(ランダムアクセスメモリ)回路(以下、それぞれ、「ラッチ用RAM35a」、「記憶用RAM37a」と言うことがある。)により構成される。制御部27は、ハードウェアロジックおよび/またはソフトウェアにより構成されている。
【0044】
図4は、図3の係数記憶部17の構成の一例の一部を示す図面である。この例では、係数記憶部17は、複数のメモリセルMC00,MC01,…を行列配置した構成を備えている。たとえば、メモリセルMC00は、記憶素子を用いてデータを記憶する回路であり、記憶素子である強誘電体コンデンサCF、およびメモリ選択用素子であるトランジスタM3を備えている。他のメモリセルもこれと同様の構成である。このように強誘電体記憶素子を用いたメモリセルはFeRAM(強誘電体ランダムアクセスメモリ)と呼ばれることがある。
【0045】
係数記憶部17は、さらに、複数の列選択線であるビットラインBL0,BL1,…、複数のメモリ用行選択線であるメモリ用ワードラインWLM0,WLM1,…、複数の行選択プレート線であるプレートラインPL0,PL1,…、複数の規格電位発生回路であるセンスアンプSA0,SA1,…を備えている。
【0046】
ビットラインBL0,BL1、…は、係数記憶部17の同一列に属するメモリセルを選択するために係数記憶部17の各列に対応して設けられている。メモリ用ワードラインWLM0,WLM1、…は、係数記憶部17の同一行に属するメモリセルを選択するために係数記憶部17の各行に対応して設けられている。
【0047】
プレートラインPL0,PL1,…は、係数記憶部17の同一行に属するメモリセルを構成する強誘電体コンデンサのみに接続するために、係数記憶部17の各行に対応して設けられている。
【0048】
たとえば、プレートラインPL0は、強誘電体コンデンサCFに対するデータの書き込みおよび読み出し動作の際に、強誘電体コンデンサCFに所定の電位である、“H”電位(電源電位VDD)および“L”電位(接地電位GND)が交互にあらわれる矩形信号を印加する。他のプレートラインもこれと同様の構成である。
【0049】
センスアンプSA0,SA1、…は、各ビットラインBL0,BL1、…にそれぞれ接続され、強誘電体コンデンサCFに対するデータの読み出し動作の際に、当該データに対応する規格電位を発生させる。
【0050】
たとえば、センスアンプSA0は、ビットラインBL0に接続されている。センスアンプSA0は、強誘電体コンデンサCFに対するデータの読み出し動作の際に、当該データに対応する規格電位である“H”電位(電源電位VDD)または“L”電位(接地電位GND)を発生させる。他のセンスアンプもこれと同様の構成である。
【0051】
係数記憶部17を構成するメモリセルの個数はとくに限定されるものではないが、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶できる個数であれば問題ない。
【0052】
すなわち、メモリセルの個数としては、bビットの2項係数をm・(m+1)/2個記憶できる個数、つまり、b・m・(m+1)/2個あれば十分であるが、これより少ない個数でも、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶できる個数であれば問題ない。
【0053】
たとえば、メモリセルの個数が、b・m・(m−1)/4個程度でも問題はない。これは、値が「1」となる2項係数iCi用の記憶領域を必ずしも全て設ける必要がないことや、互いに同一値となる2項係数iCjおよびiCi−jのための記憶領域をいずれか一方の分だけ設けるようにすることができるからである。
【0054】
つぎに、図5に、暗号化・復号化装置11を用いて、RSA暗号システムにおける暗号化処理を行う場合の処理手順の一例を表すフローチャートを示す。なお、RSA暗号システムにおける暗号化処理における平文M、暗号文C、公開鍵(n,e)を構成する整数eは、それぞれ、上述の第1の文X、第2の文Y、整数mに対応する。
【0055】
図2に示すCPU42は、まず、入力処理を行う(ステップS1)。このステップにおいて、CPU42は、RSA暗号の公開鍵(n,e)を構成する整数nおよび整数eがキーボード46やマウス48を用いて入力されると、これらを、メインメモリ52に記憶させる。
【0056】
また、キーボード46やマウス48を用いて暗号化の対象となる文字列などが入力されると、これらを所定の数字列、すなわち、1または2以上の平文Mk1に置き換えて、メインメモリ52に記憶させる。もちろん、キーボード46やマウス48から、直接、平文Mk1である数字列を入力するようにしてもよい。
【0057】
図19Aは、メインメモリ52における平文Mk1の記憶状態の一例を模式的に表した図面である。この図から分かるように、平文Mk1をメインメモリ52に記憶する際、入力された順番を表す入力番号と関連付けて記憶するようにしている。この例では、複数の平文「5」、「7」、「5」、「3」、…が、それぞれ、入力番号「1」、「2」、「3」、「4」、…と関連付けて記憶されている。
【0058】
なお、メインメモリ52への入力は、キーボード46やマウス48から行われる場合に限定されるものではない。たとえば、ハードディスク50から読み込んだり、通信網(図示せず)を介して読み込んだりするようにしてもよい。
【0059】
つぎに、CPU42は、新たな公開鍵(n,e)が入力されたか否かを判断する(ステップS2)。
【0060】
新たな公開鍵(n,e)が入力された場合、CPU42は、入力された公開鍵(n,e)に基づいて、実質的に2項係数iCj(1<=i<=e、1<=j<=i)の全部を計算し、計算結果を係数記憶部17に記憶させる(ステップS3)。なお、この場合、値が「1」となる2項係数iCiは、必ずしも計算させる必要はない。また、互いに同一値となる2項係数iCjおよびiCi−jについては、いずれか一方のみを計算させるようにしてもよい。このステップS3が係数記憶ステップに対応する。
【0061】
なお、ステップS2において、新たな公開鍵(n,e)が入力されたかったと判断した場合、CPU42は、ステップS3を実行せずに、制御をステップS4に移す。
【0062】
つぎに、CPU42は、後述のステップS5〜ステップS7の処理をまだ行っていない平文Mk1がメインメモリ52にあるか否かを判断する(ステップS4)。
【0063】
ステップS4において、未処理の平文Mk1があると判断した場合、CPU42は、未処理の平文Mk1のうち入力番号の順に所定個数の平文Mk1を取り出し、これらを昇順で並べ替える(ステップS5)。
【0064】
上記並び替えの対象となる所定個数は、とくに限定されるものではなく、たとえば、入力された全ての平文Mk1を並べ替えの対象としてもよい。ただし、並べ替えの対象となる平文Mk1の個数があまり多すぎると、並べ替えに要する時間が長くなりすぎて全体の処理時間が長くなってしまうおそれがある。このような場合は、一度に並べ替えを行う平文Mk1の個数を制限し、2回以上に分けて処理するのが好ましい。
【0065】
図19Bは、メインメモリ52における、並べ替え後の平文Mk1の記憶状態の一例を模式的に表した図面である。この図から分かるように、所定個数の平文が「3」、「5」、「5」、「7」、…というように、昇順で並べ替えて記憶されている。この場合、各平文と入力番号との関係は失われずに記憶されている。このステップS5が入力整列ステップに対応する。
【0066】
つぎに、CPU42は、並べ替えられた所定個数の平文Mk1に対し、順番に暗号演算処理を施こす(ステップS6)。図6は、ステップS6の暗号演算処理の詳細を示すフローチャートの一例である。図7〜図18は、暗号演算処理における演算部21の状態の遷移の一例を示す図面である。図19Bに示す並べ替えられた所定個数の平文を例に、図6〜図18に基づいて、暗号演算処理を詳述する。
【0067】
図6に示すように、演算部21の制御部27は、CPU42から暗号演算処理開始の信号を受け取ると、演算部21の初期化を行う(ステップS11)。図7に示すように、初期化処理において、制御部27は、演算部21を構成するべき乗値記憶部37およびカウンター部(図示せず)の初期化を行う。
【0068】
べき乗値記憶部37の初期化は、べき乗値記憶部37を構成する複数個の記憶用RAM37a(bビットRAM)のうち、j=1ないしeに対応する一群のべき乗値Mk−1 jを記憶するためのe個の記憶用RAM37aを初期化することにより行う。
【0069】
具体的には、上記初期化は、e個の記憶用RAM37aに、k−1=k0についてのj=1ないしeに対応する一群のべき乗値Mk−1 jをそれぞれセットすることにより行う。この実施形態では k0=1であるから、べき乗値記憶部37を構成するe個の記憶用RAM37aには、j=1ないしeに対応する一群のべき乗値M1 j(=1)がセットされる。
【0070】
なお、べき乗値記憶部37の初期化処理において、べき乗値記憶部37を構成する全ての記憶用RAM37aを初期化するよう構成することもできる。
【0071】
カウンター部の初期化は、kカウンター(図示せず)を k=k0にセットすることにより行う。この実施形態においてはk0=1としている。したがって、kカウンターはk=1にセットされる。
【0072】
初期化処理を終了すると、制御部27は、平文Mk1を取り込むとともに、平文Mk1の添字であるk1の値(すなわち、Mk1の値そのもの)を記憶する(ステップS12)。ここでは、図8に示すように、最初の平文「3」が取り込まれるとともに、k1=3が記憶される。
【0073】
制御部27は、つぎに、kカウンターの値kがk1以上であるか否かを判断し(ステップS13)、k>=k1でなければ、k=k+1とするとともに、カウンター部のiカウンター(図示せず)を i=0にセットする(ステップS14)。
【0074】
制御部27は、つぎに、iカウンターの値iがe以上であるか否かを判断し(ステップS15)、i>=eでなければ、i=i+1とする(ステップS16)。
【0075】
制御部27は、つぎに、現在のkカウンターおよびiカウンターの示すkおよびiにより規定される1つのべき乗値Mk iを次式 Mk i=1+Σ((j=1,i)iCj・Mk−1 j) に基づいて算出するとともに、算出したべき乗値Mk iをラッチ部35の第iラッチ用RAM35a(図8では、左からi番目のラッチ用RAM35a)にラッチする(ステップS17)。
【0076】
ステップS17の処理を詳述する。制御部27は、係数記憶部17に記憶されている複数の2項係数のうちj=1ないしiに対応する第1ないし第iのi個の2項係数iCjを選択し、選択したi個の2項係数を、乗算部31を構成する複数の乗算器31aのうちj=1ないしiに対応する第1ないし第i乗算器31a(図8では、左端からi番目までのi個の乗算器31a)に、それぞれ送る。
【0077】
同時に、制御部27は、べき乗値記憶部37を構成する複数の記憶用RAM37a(bビットRAM)のうちj=1ないしiに対応する第1ないし第i記憶用RAM37a(図8では、左から1番目からi番目までのi個の記憶用RAM37a)に記憶されているMk−1 1ないしMk−1 iを読み出して、乗算部31のうち対応する第1ないし第i乗算器31aに送る。
【0078】
乗算部31の第1ないし第i乗算器31aは、係数記憶部17から選択されたi個の2項係数と、べき乗値記憶部37から送られてきたi個のべき乗値に基づいて、制御部27の制御下で、j=1ないしiに対応する iC1・Mk−1ないし iCi・Mk−1 iの値を、それぞれ算出する。
【0079】
つぎに、加算部33の第i加算器33a(図8では、左端からi番目の加算器33a)は、乗算部31において計算されたi個の計算結果と数値「1」との和を、制御部27の制御下で、計算する。これにより、1つのkおよび1つのiに対応する1つのべき乗値 Mk i=1+Σ((j=1,i)iCj・Mk−1 j) が得られる。
【0080】
このようにして得られた1つのべき乗値 Mk iは、制御部27の制御下で、ラッチ部35の第iラッチ用RAM35aにラッチされる。
【0081】
ここでは、図8に示すように、k=2,i=1であるから、べき乗値Mk i=M2が次式 M2=1+1C1・M1 に基づいて算出されるとともに、算出されたべき乗値M2=2がラッチ部35の第1ラッチ用RAM35a(図8では、左端のラッチ用RAM35a)にラッチされる。
【0082】
図6に戻って、制御部27は、ステップS15〜ステップS17の処理をi=eまで繰り返す。
【0083】
図9は、i=2におけるステップS17の処理を説明するための図面である。ここでは、k=2,i=2であるから、べき乗値Mk i=M2 2が次式 M2 2=1+2C1・M1+2C2・M1 2 に基づいて算出されるとともに、算出されたべき乗値M2 2=4がラッチ部35の第2ラッチ用RAM35a(図9では、左から2番目のラッチ用RAM35a)にラッチされる。
【0084】
図10は、i=eにおけるステップS17の処理を説明するための図面である。ここでは、k=2,i=eであるから、べき乗値Mk i=M2 eが次式 M2 e=1+eC1・M1+eC2・M1 2+…+eCe・M1 e に基づいて算出されるとともに、算出されたべき乗値M2 eがラッチ部35の第eラッチ用RAM35a(図10では、左からe番目のラッチ用RAM35a)にラッチされる。
【0085】
このようにして、1つのkについて、i=1ないしeに対応する一群(e個)のべき乗値Mk iが算出され、ラッチ部35の第1ないし第eラッチ用RAM35aにラッチされると、図11に示すように、制御部27は、ラッチ部35にラッチされた当該一群のべき乗値Mk iを、べき乗値記憶部37を構成する複数の記憶用RAM37aのうち、対応する第1ないし第e記憶用RAM37aにそれぞれ転送して記憶させる(図6、ステップS18)。
【0086】
ここでは、図11に示すように、k=2であるから、i=1ないしeに対応するe個のべき乗値M2 i、すなわち、M2=2、M2 2=4、…、M2 eが、べき乗値記憶部37に記憶される。
【0087】
図6に示すように、制御部27は、ステップS13〜ステップS18の処理をk=k1まで繰り返す。
【0088】
図12は、k=3,i=1におけるステップS17の処理を説明するための図面である。ここでは、k=3,i=1であるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値のうち1個のべき乗値M2に基づいて、べき乗値Mk i=M3が次式 M3=1+1C1・M2 にしたがって算出されるとともに、算出されたべき乗値M3=3がラッチ部35の第1ラッチ用RAM35aにラッチされる。
【0089】
図13は、k=3、i=eにおけるステップS17の処理を説明するための図面である。ここでは、k=3,i=eであるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値M2、M2 2、…、M2 eに基づいて、べき乗値Mk i=M3 eが次式 M3 e=1+eC1・M2+eC2・M2 2+…+eCe・M2 e にしたがって算出されるとともに、算出されたべき乗値M3 eがラッチ部35の第eラッチ用RAM35aにラッチされる。
【0090】
k=2の場合と同様に、k=3について、i=1ないしeに対応する一群(e個)のべき乗値Mk iが算出され、ラッチ部35の第1ないし第eラッチ用RAM35aにラッチされると、図14に示すように、制御部27は、ラッチ部35にラッチされた当該一群のべき乗値Mk iを、べき乗値記憶部37を構成する複数の記憶用RAM37aのうち、対応する第1ないし第e記憶用RAM37aにそれぞれ転送して記憶させる(ステップS18)。
【0091】
図6に示すように、ステップS13において、k=k1(=3)であると判断すると、図14に示すように、制御部27は、べき乗値記憶部37の第e記憶用RAM37aに記憶されているべき乗値Mk e=Mk1 eを、暗号文Ck1として出力する(ステップS19)。ここでは、k1=3であるから、暗号文Ck1=C3が出力される。
【0092】
図6に示すように、制御部27は、つぎに、ステップS5(図5参照)において並べ替えられた1個または2個以上の平文Mk1の取り込みが全て終了したか否かを判断する(ステップS20)。
【0093】
取り込みべき平文Mk1が残っている場合、制御部27は残りの平文Mk1全てについて、ステップS12〜ステップS20の処理を繰り返す。
【0094】
図15は、k1=5,k=4,i=1におけるステップS17の処理を説明するための図面である。ここでは、k=4,i=1であるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値のうち1個のべき乗値M3に基づいて、べき乗値Mk i=M4が次式 M4=1+1C1・M3 にしたがって算出されるとともに、算出されたべき乗値M4=4がラッチ部35の第1ラッチ用RAM35aにラッチされる。
【0095】
図16は、k1=5におけるステップS19の処理を説明するための図面である。k1=3の場合と同様に、制御部27は、べき乗値記憶部37の第e記憶用RAM37aに記憶されているべき乗値Mk e=Mk1 eを、暗号文Ck1として出力する。ここでは、k1=5であるから、暗号文Ck1=C5が出力される。
【0096】
図17は、同じ値の平文Mk1が連続して取り込まれた場合の処理を説明するための図面である。ステップS12において新たに取り込んだ平文Mk1が、直前に暗号演算処理をすませた平文Mk1と同じであるから、k1=kである。したがって、ステップS13の判断を経て、制御部27は、べき乗値記憶部37の第e記憶用RAM37aに記憶されているべき乗値Mk e=Mk1 eを、そのまま、暗号文Ck1として出力する(ステップS19)。
【0097】
ここでは、新たに取り込んだ平文Mk1=5であるから、暗号文Ck1=C5が出力されることになる。
【0098】
図18は、k1=7,k=6,i=1におけるステップS17の処理を説明するための図面である。ここでは、k=6,i=1であるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値のうち1個のべき乗値M5に基づいて、べき乗値Mk i=M6が次式 M6=1+1C1・M5 にしたがって算出されるとともに、算出されたべき乗値M6=6がラッチ部35の第1ラッチ用RAM35aにラッチされる。
【0099】
このように、複数の平文Mk1を昇順で並べ替えたあと暗号演算を実行するようにしておけば、新たな平文Mk1の暗号演算を行う際、前に行った平文Mk1についての暗号演算の結果や経過を次々と利用できるので、全体としての暗号演算の時間を短縮することができる。
【0100】
このようにして、ステップS5(図5参照)において並べ替えられた1個または2個以上の平文Mk1全てについての暗号演算処理が終了すると、制御部27は、ステップS6(図5参照)の処理を終了し(ステップS20)、制御をCPU42に戻す。このステップS6が演算ステップに対応する。
【0101】
図5に戻って、CPU42は、ステップS6で出力された暗号文Ck1の並べ戻しを行う(ステップS7)。なお、上述のステップS6で出力された暗号文Ck1は、図20Aに示すように、上述の入力番号との関連付けを維持したまま、出力順にメインメモリ52に記憶されている。この実施形態においては、図19Bに示す平文の記憶領域が、対応する暗号文で上書きされ、図20Aのようになっている。
【0102】
ステップS7において、CPU42は、図20Aで表される複数の暗号文を、対応する入力番号の順に並べ戻す。入力番号順に並べ戻された複数の暗号文を図20Bに示す。このステップS7が出力整列ステップに対応する。
【0103】
つぎに、CPU42は、まだ並べ替えを行っていない未処理の平文があるか否かを判断し(ステップS4)、未処理の平文が残っている場合は、ステップS4〜ステップS7の処理を繰り返す。
【0104】
ステップS4において、未処理の平文が残っていないと判断した場合、CPU42は、メインメモリ52に記憶されている図20Bに示す暗号文を入力番号順に出力する(ステップS8)。出力形式はとくに限定されるものではなく、図20Bに示す暗号文を入力番号順に、たとえば、CRT44に表示したり、ハードディスク50に転送したり、プリンタ(図示せず)を介して紙に印刷したり、通信網(図示せず)を介して外部に出力したりすればよい。
【0105】
なお、図5に示すステップS1〜ステップS2およびステップS4が、図1に示す入力部13に対応する。ステップS3が計数取得部15および計数記憶部17に対応する。ステップS5が入力整列部19に対応する。ステップS6が演算部21に対応する。ステップS7が出力整列部23に対応する。ステップS8が出力部25に対応する。
【0106】
また、図6に示すステップS11〜ステップS16およびステップS19〜ステップS20が、図1の制御部27に対応する。ステップS17が、係数選択部29,乗算部31,加算部33およびラッチ部35に対応する。ステップS18が、べき乗値記憶部37に対応する。
【0107】
なお、上述の実施形態においては、k0=1とした場合の一群のべき乗値Xk0 jを初期値として暗号化・復号化の演算を行うようにしたが、この発明はこれに限定されるものではない。たとえば、k0=0とした場合の一群のべき乗値Xk0 jを初期値として暗号化・復号化の演算を行うようにしてもよい。
【0108】
また、上述の実施形態においては、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを計算するにあたり、1つのkおよび1つのiに対応する1つのべき乗値Xk iを単位として順次、計算を繰り返すようにしているが、この発明はこれに限定されるものではない。
【0109】
たとえば、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを一度に計算するよう構成することもできる。ただし、前者のように構成すれば、乗算部などの数を少なくすることができるので、装置に必要な論理ゲートの数を少なくすることができる。
【0110】
また、上述の実施形態においては、べき乗値記憶部が、1つのkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶するよう構成したが、べき乗値記憶部は、このような構成に限定されるものではない。
【0111】
たとえば、べき乗値記憶部が、2つ以上のkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶するよう構成することもできる。しかし、前者のように構成することで、必要な記憶素子の数を少なくすることができる。
【0112】
また、上述の実施形態においては、係数取得部は、整数nおよびmに対応した必要な2項係数を計算により取得し、係数記憶部に記憶させるようにしたが、この発明はこれに限定されるものではない。たとえば、暗号化・復号化装置の内部または外部に設けた記憶領域に多数の2項係数を予め記憶しておき、必要な2項係数を当該記憶領域から係数記憶部に転送するようにしてもよい。
【0113】
また、上述の実施形態においては、係数記憶部のメモリセルを構成する記憶素子として強誘電体コンデンサを用いた場合を例に説明したが、メモリセルを構成する記憶素子は、これに限定されるものではない。メモリセルを構成する記憶素子として、たとえば、強誘電体トランジスタなど他の強誘電体記憶素子を用いることもできる。
【0114】
また、メモリセルを構成する記憶素子として、強誘電体記憶素子以外の不揮発性の記憶素子、たとえば、E2PROMを用いることもできる。さらに、メモリセルを構成する記憶素子として、揮発性の記憶素子、たとえば、クロスカップルドフリップフロップ等を用いることもできる。
【0115】
しかしながら、メモリセルを構成する記憶素子として、強誘電体記憶素子を用いることで、バックアップ電源や特別の書き込み装置が不要で、かつ高速の読み書き動作が可能となるため、好都合である。
【0116】
また、上述の実施形態においては、係数記憶部が、実質的に2項係数iCj(1<=i<=e、1<=j<=i)の全部を記憶するよう構成したが、この発明はこれに限定されるものではない。たとえば、係数記憶部が、2項係数iCj(1<=i<=e、0<=j<=i)の全部または一部を記憶するよう構成することもできる。
【0117】
すなわち、係数記憶部に、たとえば、iC0(1<=i<=e)をも記憶させるようにすることができる。この場合、演算部においては、たとえば、次式 Xk i=Σ((j=0,i)iCj・Xk−1 j) に基づいて、一群のべき乗値Xk iを計算させることもできる。
【0118】
一方、係数記憶部に、たとえば、実質的に2項係数iCj(1<=i<=e、1<=j<=i)一部のみをを記憶するよう構成することもできる。この場合、係数記憶部に記憶されていないが演算部において必要な2項係数は、その都度、計算などにより取得するようにすればよい。
【0119】
また、上述の実施形態においては、暗号化・復号化装置が、入力部13,係数取得部15,入力整列部19,出力整列部23および出力部25の機能全てを備えた場合を例に説明したが、この発明はこれに限定されるものではない。たとえば、暗号化・復号化装置が、これらの全部または一部の機能を持たないよう構成することもできる。この場合、外部機器にこれらの全部または一部の機能を持たせるようにすることもできる。
【0120】
また、上述の実施形態においては、暗号化・復号化装置がRSA暗号システムにおける暗号化処理を行う場合を例に説明したが、この発明はこれに限定されるものではない。暗号化・復号化装置がRSA暗号システムにおける復号化処理を行う場合にも、この発明を適用することができる。この場合、RSA暗号システムにおける復号化処理における暗号文C、平文M、秘密鍵(n,d)を構成する整数dが、それぞれ、上述の第1の文X、第2の文Y、整数mに対応することになる。
【0121】
また、上述の実施形態においては、暗号化・復号化装置が、RSA暗号の暗号化・復号化に用いられる場合を例に説明したが、この発明はこれに限定されるものではない。この発明は、RSA暗号以外の暗号の暗号化・復号化に用いることもできる。
【図面の簡単な説明】
【図1】この発明の一実施形態による暗号化・復号化装置11の構成を示すブロック図である。
【図2】図1に示す暗号化・復号化装置11を、コンピュータを用いて実現した場合のハードウェア構成の一例を示すブロック図である。
【図3】図2の係数記憶部17および演算部21の構成の一例を示すブロック図である。
【図4】図3の係数記憶部17の構成の一例の一部を示す図面である。
【図5】暗号化・復号化装置11を用いて、RSA暗号システムにおける暗号化処理を行う場合の処理手順の一例を表すフローチャートである。
【図6】図5の暗号演算処理の詳細を示すフローチャートの一例である。
【図7】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図8】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図9】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図10】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図11】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図12】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図13】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図14】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図15】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図16】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図17】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図18】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図19】図19Aは、メインメモリ52における、並べ替え前の複数の平文Mk1の一例を模式的に表した図面である。図19Bは、メインメモリ52における、並べ替え後の複数の平文Mk1の一例を模式的に表した図面である。
【図20】図20Aは、出力順にメインメモリ52に記憶されている複数の暗号文Ck1の一例を模式的に表した図面である。図20Bは、入力番号順に並べ戻された複数の暗号文Ck1の一例を模式的に表した図面である。
【図21】ハードウェアのみで構成した暗号化回路を示す図面である。
【符号の説明】
17・・・・・・係数記憶部
21・・・・・・演算部
【発明の属する技術分野】
この発明は暗号化・復号化装置および暗号化・復号化方法に関し、とくに、正の整数nを法とする体系において、次式 Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を求める技術に関する。
【0002】
【従来の技術】
暗号のひとつとしてRSA暗号が知られている。RSA暗号の処理過程においては、任意の2つの素数p,qの積であるnと、素数p,qに対して所定の制限を満足する任意の数eとを公開鍵(n,e)として、次式にしたがって平文Mを暗号化して暗号文Cを得る。
【0003】
C=Me(mod n)
【0004】
また、上記e、素数pおよびqから一義的に導かれる数d、ならびに上記nを秘密鍵(n,d)として、次式にしたがって暗号文Cを復号化して平文Mを得る。
【0005】
M=Cd(mod n)
【0006】
この場合、第三者が公開鍵(n,e)のうちnを素因数分解して素数p,qを求めることができれば、これらとeとに基づいて容易にdを知ることができ、秘密鍵(n,d)を得ることができる。
【0007】
しかし、上述のnの値を大きくすれば素数p,qを求めるための素因数分解に膨大な時間が必要となるため、暗号の解読は事実上不可能となる。このように、RSA暗号においては、nの値を大きくすることで、暗号の安全性を確保している。
【0008】
【発明が解決しようとする課題】
しかしながら、従来のRSA暗号には次のような問題があった。すなわち、暗号化においては、平文Mについてe回のかけ算を行う必要がある。また、復号化においては、暗号文Cについてd回のかけ算を行う必要がある。したがって、安全性を確保するためにnを大きくすればするほど、暗号化や復号化に時間がかかるという問題があった。
【0009】
このような問題を解決するために、たとえばハードウェアのみで構成した暗号化回路を用いることも考えられる。図21は、bビットの平文をbビットの暗号文に変換するための暗号化回路のうち暗号文1ビット分に相当する回路1を示す図面である。
【0010】
回路1は、2b−1個のb入力ANDゲート3と1個の2b−1入力ORゲート5により構成されている。したがって、暗号化回路全体では、このb倍の論理ゲートが必要となる。このような暗号化回路を用いると、暗号化に要する時間を短くすることができるものの、膨大な数の論理ゲートが必要となる。復号化についても、同様の問題がある。
【0011】
一方、全ての平文を予め暗号化して記憶しておく方法も考えられる。この方法を用いれば、平文が入力される都度計算を行う場合に比較し暗号化に要する時間を短くできる上、ハードウェアのみで構成した暗号化回路を用いる場合のように膨大な数の論理ゲートを必要とすることもない。しかしながら、nが大きくなれば、膨大な数の記憶素子が必要となるため、やはり限界がある。
【0012】
この発明は、このような従来の暗号化方法や復号化方法の問題点を解消し、暗号化や復号化に要する時間が短く、かつ、膨大な数の記憶素子や論理ゲートを必要としない暗号化・復号化装置および暗号化・復号化方法を提供することを目的とする。
【0013】
【課題を解決するための手段、発明の作用および効果】
請求項1の暗号化・復号化装置は、正の整数nを法とする体系において、次式Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を求める暗号化・復号化装置であって、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶する係数記憶部と、実質的に次式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、係数記憶部に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求める演算部と、を備えている。
【0014】
請求項6の暗号化・復号化方法は、正の整数nを法とする体系において、次式Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を、記憶装置と演算装置とを用いて求める暗号化・復号化方法であって、2項係数iCj(1<=i<=m、0<=j<=i)の全部または一部を、記憶装置に記憶させる係数記憶ステップと、記憶装置に記憶されている2項係数を用いて、演算装置に、実質的に次式Xk i=Σ((j=0,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを含む与えられた定数と、記憶装置に記憶されている2項係数とを用いて、k=k0+1からk=k1まで順に計算させることにより、第2の文Yk1を求める演算ステップと、を備えている。
【0015】
したがって、請求項1の暗号化・復号化装置または請求項6の暗号化・復号化方法においては、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として記憶させておくとともに、所定の2項係数を係数記憶部に記憶させておき、これらの数値を用いて、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求めることができる。
【0016】
このため、全ての第1の文を予め第2の文に変換して記憶しておく場合に比較して、必要な記憶素子の数が少なくて済む。また、暗号化・復号化装置をハードウェアのみで構成する場合に比較して、論理ゲートの数が少なくて済む。さらに、所定の整数nおよび整数mに対応する2項係数を一度記憶させておけば、以後、同一の整数nおよび整数mに関する暗号化または復号化の時間を短縮することができる。
【0017】
すなわち、暗号化や復号化に要する時間が短く、かつ、膨大な数の記憶素子や論理ゲートを必要としない暗号化・復号化装置および暗号化・復号化方法を実現することができる。
【0018】
請求項2の暗号化・復号化装置においては、演算部は、1つのkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶する、べき乗値記憶部を備え、当該演算部は、係数記憶部に記憶されている2項係数と、べき乗値記憶部に記憶されている一群のべき乗値Xk−1 jとを用いて、実質的に式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを算出し、その後、べき乗値記憶部の記憶内容を当該新たに算出した一群のべき乗値Xk iに更新すること、を特徴とする。
【0019】
したがって、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを記憶できる記憶容量のべき乗記憶部を設けておけば、べき乗記憶部の記憶内容を順次書き換えて行くことで、一群のべき乗値Xk iをk=k0+1からk=k1まで順に計算することができる。このため、第2の文Yk1を算出するのに必要なべき乗値Xk iを記憶するための記憶素子が少なくて済む。
【0020】
請求項3の暗号化・復号化装置においては、演算部は、1つのkおよび1つのiに対応する1つのべき乗値Xk iを算出するために必要な1または2以上の2項係数を、係数記憶部に記憶されている2項係数の中から選択する係数選択部と、係数選択部で選択された2項係数と、べき乗値記憶部に記憶されている一群のべき乗値Xk−1 jのうち当該選択された2項係数に対応する1または2以上のべき乗値Xk−1 jと、の積をそれぞれ求める乗算部と、乗算部で得られた1または2以上の積および数値「1」の和を求める加算部と、加算部で得られた和を1つのkおよび1つのiに対応する1つのべき乗値Xk iとしてラッチするラッチ部と、係数選択部、乗算部、加算部、ラッチ部、べき乗値記憶部の動作を制御することにより、1つのkについてのi=1ないしmに対応する複数のべき乗値Xk iを順次算出して、これらをラッチ部に順次ラッチし、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iが全てラッチされた後、当該ラッチされた一群のべき乗値Xk iをべき乗値記憶部に転送して記憶させることによりべき乗値記憶部の記憶内容を当該新たに算出した一群のべき乗値Xk iに更新し、更新されたべき乗値Xk iを新たなべき乗値Xk−1 jとして、順次計算を行うことにより第2の文Yk1を得る制御部と、を備えたこと、を特徴とする。
【0021】
つまり、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを計算するにあたり、1つのkおよび1つのiに対応する1つのべき乗値Xk iを単位として順次、計算を繰り返すようにしている。このため、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを一度に計算する場合に比べて、乗算部などの数を少なくすることができる。したがって、装置に必要な論理ゲートの数を少なくすることができる。
【0022】
請求項4の暗号化・復号化装置においては、当該暗号化・復号化装置は、入力された整数mに基づいて、実質的に前記2項係数iCj(1<=i<=m、1<=j<=i)の全部を取得し、取得した当該2項係数を係数記憶部に記憶させる係数取得部を、さらに備えたこと、を特徴とする。
【0023】
したがって、たとえば、RSA暗号システムにおいて公開鍵として整数nおよび整数mが与えられた場合、これに基づいて所定の2項係数を、計算などにより取得することができる。このため、公開鍵を変更した場合であっても、暗号化に必要な2項係数を容易に取得することができる。復号化の場合も同様である。
【0024】
請求項5の暗号化・復号化装置においては、当該暗号化・復号化装置は、入力された複数の第1の文を、昇順で並べ替えて演算部に与える入力整列部と、演算部で算出された複数の第2の文を、対応する第1の文の入力順に対応させて並べ戻す出力整列部と、をさらに備え、演算部は、直前の第2の文を算出するときに得られた一群のべき乗値を利用して、つぎの第2の文を算出すること、を特徴とする。
【0025】
したがって、直前の第2の文を算出するときに得られた一群のべき乗値を利用して、つぎの第2の文を算出することで、当該つぎの第2の文を算出するための演算時間を短縮することができる。このため、複数の第1の文を暗号化または復号化する場合の全体の処理時間を短縮することができる。
【0026】
なお、この明細書(請求の範囲を含む)において、「a<=b」は、「aは、bより小さいか、または、bに等しい」ことを表す。また、「Σ((j=a,b)f(j))」は、「f(a)+f(a+1)+f(a+2)+…+f(b−1)+f(b)」を表す。「iCj」は、「コンビネーション」、すなわち、「i・(i−1)・(i−2)・…・(i−j+1)/j!」を表す。また、「00=1」と定義する。なお、とくに断らないかぎり、演算は、正の整数nを法とする体系において定義されるものとし、(mod n)の記載は省略する。
【0027】
【発明の実施の形態】
図1は、この発明の一実施形態による暗号化・復号化装置11の構成を示すブロック図である。暗号化・復号化装置11は、正の整数nを法とする体系において、次式 Xk=Xk−1+1(1<=k<=n−1,X0=0)を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式 Yk1=Xk1 m(mは正の整数)で定義される第2の文Yk1を求める装置であって、たとえば、RSA暗号の暗号化および/または復号化を行うために用いることができる。
【0028】
この実施形態においては、RSA暗号の暗号化および/または復号化を行う場合を例に、暗号化・復号化装置11を説明する。暗号化・復号化装置11は、入力部13,係数取得部15,記憶装置である係数記憶部17、入力整列部19,演算装置である演算部21,出力整列部23,出力部25を備えている。
【0029】
入力部13は、所定の整数nおよびmならびに第1の文Xk1を入力するために用いられる。係数取得部15は、入力部13から入力された整数nおよびmに基づいて、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を取得し、取得した当該2項係数を係数記憶部17に記憶させる。
【0030】
入力整列部19は、入力部13から入力された複数の第1の文Xk1を、昇順で並べ替えて演算部21に与える。
【0031】
演算部21は、実質的に次式 Xk i=1+Σ((j=1,i)iCj・Xk−1 j)に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、係数記憶部17に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、第2の文Yk1を求める。演算部21は、直前の第2の文を算出するときに得られた一群のべき乗値を利用して、つぎの第2の文を算出する。
【0032】
出力整列部23は、演算部21で算出された複数の第2の文Yk1を、対応する第1の文Xk1の入力順に対応させて並べ戻す。出力部25は、出力整列部23により並べ戻された第2の文Yk1を出力する。
【0033】
上記演算部21は、制御部27,係数選択部29,乗算部31,加算部33,ラッチ部35,べき乗値記憶部37を備えている。
【0034】
係数選択部29は、1つのkおよび1つのiに対応する1つのべき乗値Xk iを算出するために必要な1または2以上の2項係数を、係数記憶部17に記憶されている2項係数の中から選択する。
【0035】
べき乗値記憶部37は、j=1ないしmに対応する一群のべき乗値Xk−1 jを記憶する。
【0036】
乗算部31は、係数選択部29で選択された2項係数と、べき乗値記憶部37に記憶されている一群のべき乗値Xk−1 jのうち当該選択された2項係数に対応する1または2以上のべき乗値Xk−1 jと、の積をそれぞれ求める。
【0037】
加算部33は、乗算部31で得られた1または2以上の積および数値「1」の和を求める。ラッチ部35は、加算部33で得られた和を1つのkおよび1つのiに対応する1つのべき乗値Xk iとしてラッチする。
【0038】
制御部27は、係数選択部29、乗算部31、加算部33、ラッチ部35、べき乗値記憶部37の動作を制御する。すなわち、制御部27は、1つのkについてのi=1ないしmに対応する複数のべき乗値Xk iを順次算出して、これらをラッチ部35に順次ラッチする。1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iが全てラッチされた後、制御部27は、当該ラッチされた一群のべき乗値Xk iをべき乗値記憶部37に転送して記憶させることにより、べき乗値記憶部37の記憶内容を、当該新たに算出した一群のべき乗値Xk iに更新する。制御部27は、このようにして更新されたべき乗値Xk iを新たなべき乗値Xk−1 jとして順次計算を行うことにより、第2の文Yk1を得る。
【0039】
つぎに図2は、図1に示す暗号化・復号化装置11を、コンピュータを用いて実現した場合のハードウェア構成の一例を示すブロック図である。図2において、暗号化・復号化装置11は、コンピュータを暗号化・復号化装置11として機能させるためのプログラムを記録した記録媒体であるハードディスク50(記憶手段)、メインメモリ52,ハードディスク50に記録されたプログラムを実行する制御手段であるCPU42,表示手段であるCRT44,入力手段であるキーボード46およびマウス48,演算部21および係数記憶部17を備えている。
【0040】
図2のキーボード46、マウス48、ハードディスク50,CPU42およびメインメモリ52が、図1の入力部13に対応する。CRT44、ハードディスク50,CPU42およびメインメモリ52が、出力部25に対応する。また、CPU42およびメインメモリ52が、係数取得部15、入力整列部19および出力整列部23に対応する。
【0041】
図3は、図2の係数記憶部17および演算部21の構成の一例を示すブロック図である。係数記憶部17および演算部21は、たとえば、1または2以上のLSI(大規模集積回路)として回路基板(図示せず)に装着されコンピュータに組み込まれる。図3に示すように、演算部21は、係数選択部29、乗算部31、加算部33、ラッチ部35、べき乗値記憶部37および制御部27を備えている。
【0042】
係数選択部29は、たとえば、アドレスデコーダー回路として実現される。乗算部31は、たとえば、整数nを次式 n≒2bで表現した場合、少なくともm個のbビット乗算器31a(乗算回路)(以下、単に「乗算器31a」と言うことがある。)により構成される。加算部33は、たとえば、少なくともm個のbビット加算器33a(加算回路)(以下、単に「加算器33a」と言うことがある。)により構成される。
【0043】
ラッチ部35およびべき乗値記憶部37は、たとえば、少なくともそれぞれm個のbビットRAM(ランダムアクセスメモリ)回路(以下、それぞれ、「ラッチ用RAM35a」、「記憶用RAM37a」と言うことがある。)により構成される。制御部27は、ハードウェアロジックおよび/またはソフトウェアにより構成されている。
【0044】
図4は、図3の係数記憶部17の構成の一例の一部を示す図面である。この例では、係数記憶部17は、複数のメモリセルMC00,MC01,…を行列配置した構成を備えている。たとえば、メモリセルMC00は、記憶素子を用いてデータを記憶する回路であり、記憶素子である強誘電体コンデンサCF、およびメモリ選択用素子であるトランジスタM3を備えている。他のメモリセルもこれと同様の構成である。このように強誘電体記憶素子を用いたメモリセルはFeRAM(強誘電体ランダムアクセスメモリ)と呼ばれることがある。
【0045】
係数記憶部17は、さらに、複数の列選択線であるビットラインBL0,BL1,…、複数のメモリ用行選択線であるメモリ用ワードラインWLM0,WLM1,…、複数の行選択プレート線であるプレートラインPL0,PL1,…、複数の規格電位発生回路であるセンスアンプSA0,SA1,…を備えている。
【0046】
ビットラインBL0,BL1、…は、係数記憶部17の同一列に属するメモリセルを選択するために係数記憶部17の各列に対応して設けられている。メモリ用ワードラインWLM0,WLM1、…は、係数記憶部17の同一行に属するメモリセルを選択するために係数記憶部17の各行に対応して設けられている。
【0047】
プレートラインPL0,PL1,…は、係数記憶部17の同一行に属するメモリセルを構成する強誘電体コンデンサのみに接続するために、係数記憶部17の各行に対応して設けられている。
【0048】
たとえば、プレートラインPL0は、強誘電体コンデンサCFに対するデータの書き込みおよび読み出し動作の際に、強誘電体コンデンサCFに所定の電位である、“H”電位(電源電位VDD)および“L”電位(接地電位GND)が交互にあらわれる矩形信号を印加する。他のプレートラインもこれと同様の構成である。
【0049】
センスアンプSA0,SA1、…は、各ビットラインBL0,BL1、…にそれぞれ接続され、強誘電体コンデンサCFに対するデータの読み出し動作の際に、当該データに対応する規格電位を発生させる。
【0050】
たとえば、センスアンプSA0は、ビットラインBL0に接続されている。センスアンプSA0は、強誘電体コンデンサCFに対するデータの読み出し動作の際に、当該データに対応する規格電位である“H”電位(電源電位VDD)または“L”電位(接地電位GND)を発生させる。他のセンスアンプもこれと同様の構成である。
【0051】
係数記憶部17を構成するメモリセルの個数はとくに限定されるものではないが、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶できる個数であれば問題ない。
【0052】
すなわち、メモリセルの個数としては、bビットの2項係数をm・(m+1)/2個記憶できる個数、つまり、b・m・(m+1)/2個あれば十分であるが、これより少ない個数でも、実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶できる個数であれば問題ない。
【0053】
たとえば、メモリセルの個数が、b・m・(m−1)/4個程度でも問題はない。これは、値が「1」となる2項係数iCi用の記憶領域を必ずしも全て設ける必要がないことや、互いに同一値となる2項係数iCjおよびiCi−jのための記憶領域をいずれか一方の分だけ設けるようにすることができるからである。
【0054】
つぎに、図5に、暗号化・復号化装置11を用いて、RSA暗号システムにおける暗号化処理を行う場合の処理手順の一例を表すフローチャートを示す。なお、RSA暗号システムにおける暗号化処理における平文M、暗号文C、公開鍵(n,e)を構成する整数eは、それぞれ、上述の第1の文X、第2の文Y、整数mに対応する。
【0055】
図2に示すCPU42は、まず、入力処理を行う(ステップS1)。このステップにおいて、CPU42は、RSA暗号の公開鍵(n,e)を構成する整数nおよび整数eがキーボード46やマウス48を用いて入力されると、これらを、メインメモリ52に記憶させる。
【0056】
また、キーボード46やマウス48を用いて暗号化の対象となる文字列などが入力されると、これらを所定の数字列、すなわち、1または2以上の平文Mk1に置き換えて、メインメモリ52に記憶させる。もちろん、キーボード46やマウス48から、直接、平文Mk1である数字列を入力するようにしてもよい。
【0057】
図19Aは、メインメモリ52における平文Mk1の記憶状態の一例を模式的に表した図面である。この図から分かるように、平文Mk1をメインメモリ52に記憶する際、入力された順番を表す入力番号と関連付けて記憶するようにしている。この例では、複数の平文「5」、「7」、「5」、「3」、…が、それぞれ、入力番号「1」、「2」、「3」、「4」、…と関連付けて記憶されている。
【0058】
なお、メインメモリ52への入力は、キーボード46やマウス48から行われる場合に限定されるものではない。たとえば、ハードディスク50から読み込んだり、通信網(図示せず)を介して読み込んだりするようにしてもよい。
【0059】
つぎに、CPU42は、新たな公開鍵(n,e)が入力されたか否かを判断する(ステップS2)。
【0060】
新たな公開鍵(n,e)が入力された場合、CPU42は、入力された公開鍵(n,e)に基づいて、実質的に2項係数iCj(1<=i<=e、1<=j<=i)の全部を計算し、計算結果を係数記憶部17に記憶させる(ステップS3)。なお、この場合、値が「1」となる2項係数iCiは、必ずしも計算させる必要はない。また、互いに同一値となる2項係数iCjおよびiCi−jについては、いずれか一方のみを計算させるようにしてもよい。このステップS3が係数記憶ステップに対応する。
【0061】
なお、ステップS2において、新たな公開鍵(n,e)が入力されたかったと判断した場合、CPU42は、ステップS3を実行せずに、制御をステップS4に移す。
【0062】
つぎに、CPU42は、後述のステップS5〜ステップS7の処理をまだ行っていない平文Mk1がメインメモリ52にあるか否かを判断する(ステップS4)。
【0063】
ステップS4において、未処理の平文Mk1があると判断した場合、CPU42は、未処理の平文Mk1のうち入力番号の順に所定個数の平文Mk1を取り出し、これらを昇順で並べ替える(ステップS5)。
【0064】
上記並び替えの対象となる所定個数は、とくに限定されるものではなく、たとえば、入力された全ての平文Mk1を並べ替えの対象としてもよい。ただし、並べ替えの対象となる平文Mk1の個数があまり多すぎると、並べ替えに要する時間が長くなりすぎて全体の処理時間が長くなってしまうおそれがある。このような場合は、一度に並べ替えを行う平文Mk1の個数を制限し、2回以上に分けて処理するのが好ましい。
【0065】
図19Bは、メインメモリ52における、並べ替え後の平文Mk1の記憶状態の一例を模式的に表した図面である。この図から分かるように、所定個数の平文が「3」、「5」、「5」、「7」、…というように、昇順で並べ替えて記憶されている。この場合、各平文と入力番号との関係は失われずに記憶されている。このステップS5が入力整列ステップに対応する。
【0066】
つぎに、CPU42は、並べ替えられた所定個数の平文Mk1に対し、順番に暗号演算処理を施こす(ステップS6)。図6は、ステップS6の暗号演算処理の詳細を示すフローチャートの一例である。図7〜図18は、暗号演算処理における演算部21の状態の遷移の一例を示す図面である。図19Bに示す並べ替えられた所定個数の平文を例に、図6〜図18に基づいて、暗号演算処理を詳述する。
【0067】
図6に示すように、演算部21の制御部27は、CPU42から暗号演算処理開始の信号を受け取ると、演算部21の初期化を行う(ステップS11)。図7に示すように、初期化処理において、制御部27は、演算部21を構成するべき乗値記憶部37およびカウンター部(図示せず)の初期化を行う。
【0068】
べき乗値記憶部37の初期化は、べき乗値記憶部37を構成する複数個の記憶用RAM37a(bビットRAM)のうち、j=1ないしeに対応する一群のべき乗値Mk−1 jを記憶するためのe個の記憶用RAM37aを初期化することにより行う。
【0069】
具体的には、上記初期化は、e個の記憶用RAM37aに、k−1=k0についてのj=1ないしeに対応する一群のべき乗値Mk−1 jをそれぞれセットすることにより行う。この実施形態では k0=1であるから、べき乗値記憶部37を構成するe個の記憶用RAM37aには、j=1ないしeに対応する一群のべき乗値M1 j(=1)がセットされる。
【0070】
なお、べき乗値記憶部37の初期化処理において、べき乗値記憶部37を構成する全ての記憶用RAM37aを初期化するよう構成することもできる。
【0071】
カウンター部の初期化は、kカウンター(図示せず)を k=k0にセットすることにより行う。この実施形態においてはk0=1としている。したがって、kカウンターはk=1にセットされる。
【0072】
初期化処理を終了すると、制御部27は、平文Mk1を取り込むとともに、平文Mk1の添字であるk1の値(すなわち、Mk1の値そのもの)を記憶する(ステップS12)。ここでは、図8に示すように、最初の平文「3」が取り込まれるとともに、k1=3が記憶される。
【0073】
制御部27は、つぎに、kカウンターの値kがk1以上であるか否かを判断し(ステップS13)、k>=k1でなければ、k=k+1とするとともに、カウンター部のiカウンター(図示せず)を i=0にセットする(ステップS14)。
【0074】
制御部27は、つぎに、iカウンターの値iがe以上であるか否かを判断し(ステップS15)、i>=eでなければ、i=i+1とする(ステップS16)。
【0075】
制御部27は、つぎに、現在のkカウンターおよびiカウンターの示すkおよびiにより規定される1つのべき乗値Mk iを次式 Mk i=1+Σ((j=1,i)iCj・Mk−1 j) に基づいて算出するとともに、算出したべき乗値Mk iをラッチ部35の第iラッチ用RAM35a(図8では、左からi番目のラッチ用RAM35a)にラッチする(ステップS17)。
【0076】
ステップS17の処理を詳述する。制御部27は、係数記憶部17に記憶されている複数の2項係数のうちj=1ないしiに対応する第1ないし第iのi個の2項係数iCjを選択し、選択したi個の2項係数を、乗算部31を構成する複数の乗算器31aのうちj=1ないしiに対応する第1ないし第i乗算器31a(図8では、左端からi番目までのi個の乗算器31a)に、それぞれ送る。
【0077】
同時に、制御部27は、べき乗値記憶部37を構成する複数の記憶用RAM37a(bビットRAM)のうちj=1ないしiに対応する第1ないし第i記憶用RAM37a(図8では、左から1番目からi番目までのi個の記憶用RAM37a)に記憶されているMk−1 1ないしMk−1 iを読み出して、乗算部31のうち対応する第1ないし第i乗算器31aに送る。
【0078】
乗算部31の第1ないし第i乗算器31aは、係数記憶部17から選択されたi個の2項係数と、べき乗値記憶部37から送られてきたi個のべき乗値に基づいて、制御部27の制御下で、j=1ないしiに対応する iC1・Mk−1ないし iCi・Mk−1 iの値を、それぞれ算出する。
【0079】
つぎに、加算部33の第i加算器33a(図8では、左端からi番目の加算器33a)は、乗算部31において計算されたi個の計算結果と数値「1」との和を、制御部27の制御下で、計算する。これにより、1つのkおよび1つのiに対応する1つのべき乗値 Mk i=1+Σ((j=1,i)iCj・Mk−1 j) が得られる。
【0080】
このようにして得られた1つのべき乗値 Mk iは、制御部27の制御下で、ラッチ部35の第iラッチ用RAM35aにラッチされる。
【0081】
ここでは、図8に示すように、k=2,i=1であるから、べき乗値Mk i=M2が次式 M2=1+1C1・M1 に基づいて算出されるとともに、算出されたべき乗値M2=2がラッチ部35の第1ラッチ用RAM35a(図8では、左端のラッチ用RAM35a)にラッチされる。
【0082】
図6に戻って、制御部27は、ステップS15〜ステップS17の処理をi=eまで繰り返す。
【0083】
図9は、i=2におけるステップS17の処理を説明するための図面である。ここでは、k=2,i=2であるから、べき乗値Mk i=M2 2が次式 M2 2=1+2C1・M1+2C2・M1 2 に基づいて算出されるとともに、算出されたべき乗値M2 2=4がラッチ部35の第2ラッチ用RAM35a(図9では、左から2番目のラッチ用RAM35a)にラッチされる。
【0084】
図10は、i=eにおけるステップS17の処理を説明するための図面である。ここでは、k=2,i=eであるから、べき乗値Mk i=M2 eが次式 M2 e=1+eC1・M1+eC2・M1 2+…+eCe・M1 e に基づいて算出されるとともに、算出されたべき乗値M2 eがラッチ部35の第eラッチ用RAM35a(図10では、左からe番目のラッチ用RAM35a)にラッチされる。
【0085】
このようにして、1つのkについて、i=1ないしeに対応する一群(e個)のべき乗値Mk iが算出され、ラッチ部35の第1ないし第eラッチ用RAM35aにラッチされると、図11に示すように、制御部27は、ラッチ部35にラッチされた当該一群のべき乗値Mk iを、べき乗値記憶部37を構成する複数の記憶用RAM37aのうち、対応する第1ないし第e記憶用RAM37aにそれぞれ転送して記憶させる(図6、ステップS18)。
【0086】
ここでは、図11に示すように、k=2であるから、i=1ないしeに対応するe個のべき乗値M2 i、すなわち、M2=2、M2 2=4、…、M2 eが、べき乗値記憶部37に記憶される。
【0087】
図6に示すように、制御部27は、ステップS13〜ステップS18の処理をk=k1まで繰り返す。
【0088】
図12は、k=3,i=1におけるステップS17の処理を説明するための図面である。ここでは、k=3,i=1であるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値のうち1個のべき乗値M2に基づいて、べき乗値Mk i=M3が次式 M3=1+1C1・M2 にしたがって算出されるとともに、算出されたべき乗値M3=3がラッチ部35の第1ラッチ用RAM35aにラッチされる。
【0089】
図13は、k=3、i=eにおけるステップS17の処理を説明するための図面である。ここでは、k=3,i=eであるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値M2、M2 2、…、M2 eに基づいて、べき乗値Mk i=M3 eが次式 M3 e=1+eC1・M2+eC2・M2 2+…+eCe・M2 e にしたがって算出されるとともに、算出されたべき乗値M3 eがラッチ部35の第eラッチ用RAM35aにラッチされる。
【0090】
k=2の場合と同様に、k=3について、i=1ないしeに対応する一群(e個)のべき乗値Mk iが算出され、ラッチ部35の第1ないし第eラッチ用RAM35aにラッチされると、図14に示すように、制御部27は、ラッチ部35にラッチされた当該一群のべき乗値Mk iを、べき乗値記憶部37を構成する複数の記憶用RAM37aのうち、対応する第1ないし第e記憶用RAM37aにそれぞれ転送して記憶させる(ステップS18)。
【0091】
図6に示すように、ステップS13において、k=k1(=3)であると判断すると、図14に示すように、制御部27は、べき乗値記憶部37の第e記憶用RAM37aに記憶されているべき乗値Mk e=Mk1 eを、暗号文Ck1として出力する(ステップS19)。ここでは、k1=3であるから、暗号文Ck1=C3が出力される。
【0092】
図6に示すように、制御部27は、つぎに、ステップS5(図5参照)において並べ替えられた1個または2個以上の平文Mk1の取り込みが全て終了したか否かを判断する(ステップS20)。
【0093】
取り込みべき平文Mk1が残っている場合、制御部27は残りの平文Mk1全てについて、ステップS12〜ステップS20の処理を繰り返す。
【0094】
図15は、k1=5,k=4,i=1におけるステップS17の処理を説明するための図面である。ここでは、k=4,i=1であるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値のうち1個のべき乗値M3に基づいて、べき乗値Mk i=M4が次式 M4=1+1C1・M3 にしたがって算出されるとともに、算出されたべき乗値M4=4がラッチ部35の第1ラッチ用RAM35aにラッチされる。
【0095】
図16は、k1=5におけるステップS19の処理を説明するための図面である。k1=3の場合と同様に、制御部27は、べき乗値記憶部37の第e記憶用RAM37aに記憶されているべき乗値Mk e=Mk1 eを、暗号文Ck1として出力する。ここでは、k1=5であるから、暗号文Ck1=C5が出力される。
【0096】
図17は、同じ値の平文Mk1が連続して取り込まれた場合の処理を説明するための図面である。ステップS12において新たに取り込んだ平文Mk1が、直前に暗号演算処理をすませた平文Mk1と同じであるから、k1=kである。したがって、ステップS13の判断を経て、制御部27は、べき乗値記憶部37の第e記憶用RAM37aに記憶されているべき乗値Mk e=Mk1 eを、そのまま、暗号文Ck1として出力する(ステップS19)。
【0097】
ここでは、新たに取り込んだ平文Mk1=5であるから、暗号文Ck1=C5が出力されることになる。
【0098】
図18は、k1=7,k=6,i=1におけるステップS17の処理を説明するための図面である。ここでは、k=6,i=1であるから、べき乗値記憶部37に記憶されている一群(e個)のべき乗値のうち1個のべき乗値M5に基づいて、べき乗値Mk i=M6が次式 M6=1+1C1・M5 にしたがって算出されるとともに、算出されたべき乗値M6=6がラッチ部35の第1ラッチ用RAM35aにラッチされる。
【0099】
このように、複数の平文Mk1を昇順で並べ替えたあと暗号演算を実行するようにしておけば、新たな平文Mk1の暗号演算を行う際、前に行った平文Mk1についての暗号演算の結果や経過を次々と利用できるので、全体としての暗号演算の時間を短縮することができる。
【0100】
このようにして、ステップS5(図5参照)において並べ替えられた1個または2個以上の平文Mk1全てについての暗号演算処理が終了すると、制御部27は、ステップS6(図5参照)の処理を終了し(ステップS20)、制御をCPU42に戻す。このステップS6が演算ステップに対応する。
【0101】
図5に戻って、CPU42は、ステップS6で出力された暗号文Ck1の並べ戻しを行う(ステップS7)。なお、上述のステップS6で出力された暗号文Ck1は、図20Aに示すように、上述の入力番号との関連付けを維持したまま、出力順にメインメモリ52に記憶されている。この実施形態においては、図19Bに示す平文の記憶領域が、対応する暗号文で上書きされ、図20Aのようになっている。
【0102】
ステップS7において、CPU42は、図20Aで表される複数の暗号文を、対応する入力番号の順に並べ戻す。入力番号順に並べ戻された複数の暗号文を図20Bに示す。このステップS7が出力整列ステップに対応する。
【0103】
つぎに、CPU42は、まだ並べ替えを行っていない未処理の平文があるか否かを判断し(ステップS4)、未処理の平文が残っている場合は、ステップS4〜ステップS7の処理を繰り返す。
【0104】
ステップS4において、未処理の平文が残っていないと判断した場合、CPU42は、メインメモリ52に記憶されている図20Bに示す暗号文を入力番号順に出力する(ステップS8)。出力形式はとくに限定されるものではなく、図20Bに示す暗号文を入力番号順に、たとえば、CRT44に表示したり、ハードディスク50に転送したり、プリンタ(図示せず)を介して紙に印刷したり、通信網(図示せず)を介して外部に出力したりすればよい。
【0105】
なお、図5に示すステップS1〜ステップS2およびステップS4が、図1に示す入力部13に対応する。ステップS3が計数取得部15および計数記憶部17に対応する。ステップS5が入力整列部19に対応する。ステップS6が演算部21に対応する。ステップS7が出力整列部23に対応する。ステップS8が出力部25に対応する。
【0106】
また、図6に示すステップS11〜ステップS16およびステップS19〜ステップS20が、図1の制御部27に対応する。ステップS17が、係数選択部29,乗算部31,加算部33およびラッチ部35に対応する。ステップS18が、べき乗値記憶部37に対応する。
【0107】
なお、上述の実施形態においては、k0=1とした場合の一群のべき乗値Xk0 jを初期値として暗号化・復号化の演算を行うようにしたが、この発明はこれに限定されるものではない。たとえば、k0=0とした場合の一群のべき乗値Xk0 jを初期値として暗号化・復号化の演算を行うようにしてもよい。
【0108】
また、上述の実施形態においては、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを計算するにあたり、1つのkおよび1つのiに対応する1つのべき乗値Xk iを単位として順次、計算を繰り返すようにしているが、この発明はこれに限定されるものではない。
【0109】
たとえば、1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを一度に計算するよう構成することもできる。ただし、前者のように構成すれば、乗算部などの数を少なくすることができるので、装置に必要な論理ゲートの数を少なくすることができる。
【0110】
また、上述の実施形態においては、べき乗値記憶部が、1つのkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶するよう構成したが、べき乗値記憶部は、このような構成に限定されるものではない。
【0111】
たとえば、べき乗値記憶部が、2つ以上のkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶するよう構成することもできる。しかし、前者のように構成することで、必要な記憶素子の数を少なくすることができる。
【0112】
また、上述の実施形態においては、係数取得部は、整数nおよびmに対応した必要な2項係数を計算により取得し、係数記憶部に記憶させるようにしたが、この発明はこれに限定されるものではない。たとえば、暗号化・復号化装置の内部または外部に設けた記憶領域に多数の2項係数を予め記憶しておき、必要な2項係数を当該記憶領域から係数記憶部に転送するようにしてもよい。
【0113】
また、上述の実施形態においては、係数記憶部のメモリセルを構成する記憶素子として強誘電体コンデンサを用いた場合を例に説明したが、メモリセルを構成する記憶素子は、これに限定されるものではない。メモリセルを構成する記憶素子として、たとえば、強誘電体トランジスタなど他の強誘電体記憶素子を用いることもできる。
【0114】
また、メモリセルを構成する記憶素子として、強誘電体記憶素子以外の不揮発性の記憶素子、たとえば、E2PROMを用いることもできる。さらに、メモリセルを構成する記憶素子として、揮発性の記憶素子、たとえば、クロスカップルドフリップフロップ等を用いることもできる。
【0115】
しかしながら、メモリセルを構成する記憶素子として、強誘電体記憶素子を用いることで、バックアップ電源や特別の書き込み装置が不要で、かつ高速の読み書き動作が可能となるため、好都合である。
【0116】
また、上述の実施形態においては、係数記憶部が、実質的に2項係数iCj(1<=i<=e、1<=j<=i)の全部を記憶するよう構成したが、この発明はこれに限定されるものではない。たとえば、係数記憶部が、2項係数iCj(1<=i<=e、0<=j<=i)の全部または一部を記憶するよう構成することもできる。
【0117】
すなわち、係数記憶部に、たとえば、iC0(1<=i<=e)をも記憶させるようにすることができる。この場合、演算部においては、たとえば、次式 Xk i=Σ((j=0,i)iCj・Xk−1 j) に基づいて、一群のべき乗値Xk iを計算させることもできる。
【0118】
一方、係数記憶部に、たとえば、実質的に2項係数iCj(1<=i<=e、1<=j<=i)一部のみをを記憶するよう構成することもできる。この場合、係数記憶部に記憶されていないが演算部において必要な2項係数は、その都度、計算などにより取得するようにすればよい。
【0119】
また、上述の実施形態においては、暗号化・復号化装置が、入力部13,係数取得部15,入力整列部19,出力整列部23および出力部25の機能全てを備えた場合を例に説明したが、この発明はこれに限定されるものではない。たとえば、暗号化・復号化装置が、これらの全部または一部の機能を持たないよう構成することもできる。この場合、外部機器にこれらの全部または一部の機能を持たせるようにすることもできる。
【0120】
また、上述の実施形態においては、暗号化・復号化装置がRSA暗号システムにおける暗号化処理を行う場合を例に説明したが、この発明はこれに限定されるものではない。暗号化・復号化装置がRSA暗号システムにおける復号化処理を行う場合にも、この発明を適用することができる。この場合、RSA暗号システムにおける復号化処理における暗号文C、平文M、秘密鍵(n,d)を構成する整数dが、それぞれ、上述の第1の文X、第2の文Y、整数mに対応することになる。
【0121】
また、上述の実施形態においては、暗号化・復号化装置が、RSA暗号の暗号化・復号化に用いられる場合を例に説明したが、この発明はこれに限定されるものではない。この発明は、RSA暗号以外の暗号の暗号化・復号化に用いることもできる。
【図面の簡単な説明】
【図1】この発明の一実施形態による暗号化・復号化装置11の構成を示すブロック図である。
【図2】図1に示す暗号化・復号化装置11を、コンピュータを用いて実現した場合のハードウェア構成の一例を示すブロック図である。
【図3】図2の係数記憶部17および演算部21の構成の一例を示すブロック図である。
【図4】図3の係数記憶部17の構成の一例の一部を示す図面である。
【図5】暗号化・復号化装置11を用いて、RSA暗号システムにおける暗号化処理を行う場合の処理手順の一例を表すフローチャートである。
【図6】図5の暗号演算処理の詳細を示すフローチャートの一例である。
【図7】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図8】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図9】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図10】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図11】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図12】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図13】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図14】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図15】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図16】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図17】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図18】暗号演算処理における演算部21の状態の遷移の一例を示す図面である。
【図19】図19Aは、メインメモリ52における、並べ替え前の複数の平文Mk1の一例を模式的に表した図面である。図19Bは、メインメモリ52における、並べ替え後の複数の平文Mk1の一例を模式的に表した図面である。
【図20】図20Aは、出力順にメインメモリ52に記憶されている複数の暗号文Ck1の一例を模式的に表した図面である。図20Bは、入力番号順に並べ戻された複数の暗号文Ck1の一例を模式的に表した図面である。
【図21】ハードウェアのみで構成した暗号化回路を示す図面である。
【符号の説明】
17・・・・・・係数記憶部
21・・・・・・演算部
Claims (7)
- 正の整数nを法とする体系において、次式
Xk=Xk−1+1(1<=k<=n−1,X0=0)
を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式
Yk1=Xk1 m(mは正の整数)
で定義される第2の文Yk1を求める暗号化・復号化装置であって、
実質的に2項係数iCj(1<=i<=m、1<=j<=i)の全部を記憶する係数記憶部と、
実質的に次式
Xk i=1+Σ((j=1,i)iCj・Xk−1 j)
に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを初期値として、前記係数記憶部に記憶されている2項係数を用いて、k=k0+1からk=k1まで順に計算してゆくことにより、前記第2の文Yk1を求める演算部と、
を備えた暗号化・復号化装置。 - 請求項1の暗号化・復号化装置において、
前記演算部は、
1つのkについてのj=1ないしmに対応する一群のべき乗値Xk−1 jを記憶する、べき乗値記憶部を備え、
当該演算部は、前記係数記憶部に記憶されている2項係数と、前記べき乗値記憶部に記憶されている前記一群のべき乗値Xk−1 jとを用いて、実質的に前記式
Xk i=1+Σ((j=1,i)iCj・Xk−1 j)
に基づいて、前記1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを算出し、その後、前記べき乗値記憶部の記憶内容を当該新たに算出した一群のべき乗値Xk iに更新すること、
を特徴とするもの。 - 請求項2の暗号化・復号化装置において、
前記演算部は、
1つのkおよび1つのiに対応する1つのべき乗値Xk iを算出するために必要な1または2以上の2項係数を、前記係数記憶部に記憶されている2項係数の中から選択する係数選択部と、
前記係数選択部で選択された2項係数と、前記べき乗値記憶部に記憶されている前記一群のべき乗値Xk−1 jのうち当該選択された2項係数に対応する1または2以上のべき乗値Xk−1 jと、の積をそれぞれ求める乗算部と、
前記乗算部で得られた1または2以上の前記積および数値「1」の和を求める加算部と、
前記加算部で得られた前記和を前記1つのkおよび1つのiに対応する1つのべき乗値Xk iとしてラッチするラッチ部と、
前記係数選択部、乗算部、加算部、ラッチ部、べき乗値記憶部の動作を制御することにより、前記1つのkについてのi=1ないしmに対応する複数のべき乗値Xk iを順次算出して、これらを前記ラッチ部に順次ラッチし、前記1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iが全てラッチされた後、当該ラッチされた一群のべき乗値Xk iを前記べき乗値記憶部に転送して記憶させることにより前記べき乗値記憶部の記憶内容を当該新たに算出した一群のべき乗値Xk iに更新し、更新されたべき乗値Xk iを新たなべき乗値Xk−1 jとして、順次計算を行うことにより第2の文Yk1を得る制御部と、
を備えたこと、
を特徴とするもの。 - 請求項1ないし3のいずれかの暗号化・復号化装置において、
当該暗号化・復号化装置は、
入力された前記整数mに基づいて、実質的に前記2項係数iCj(1<=i<=m、1<=j<=i)の全部を取得し、取得した当該2項係数を前記係数記憶部に記憶させる係数取得部を、さらに備えたこと、
を特徴とするもの。 - 請求項1ないし4のいずれかの暗号化・復号化装置において、
当該暗号化・復号化装置は、
入力された複数の第1の文を、昇順で並べ替えて前記演算部に与える入力整列部と、
前記演算部で算出された複数の第2の文を、対応する第1の文の入力順に対応させて並べ戻す出力整列部と、
をさらに備え、
前記演算部は、直前の第2の文を算出するときに得られた前記一群のべき乗値を利用して、つぎの第2の文を算出すること、
を特徴とするもの。 - 正の整数nを法とする体系において、次式
Xk=Xk−1+1(1<=k<=n−1,X0=0)
を満足する任意の正の整数Xk=Xk1を第1の文とするとき、当該第1の文Xk1に基づいて、次式
Yk1=Xk1 m(mは正の整数)
で定義される第2の文Yk1を、記憶装置と演算装置とを用いて求める暗号化・復号化方法であって、
2項係数iCj(1<=i<=m、0<=j<=i)の全部または一部を、前記記憶装置に記憶させる係数記憶ステップと、
前記記憶装置に記憶されている2項係数を用いて、前記演算装置に、実質的に次式
Xk i=Σ((j=0,i)iCj・Xk−1 j)
に基づいて、当該式における1つのkについてのi=1ないしmに対応する一群のべき乗値Xk iを、k−1=k0についてのj=1ないしmに対応する一群のべき乗値Xk0 jを含む与えられた定数と、前記記憶装置に記憶されている2項係数とを用いて、k=k0+1からk=k1まで順に計算させることにより、前記第2の文Yk1を求める演算ステップと、
を備えた暗号化・復号化方法。 - 請求項6の暗号化・復号化方法において、
前記演算ステップの実行に先立ち、入力された複数の第1の文を昇順で並べ替える入力整列ステップと、
前記演算ステップの実行後に、算出された複数の第2の文を、対応する第1の文の入力順に対応させて並べ戻す出力整列ステップと、
をさらに備え、
前記演算ステップにおいて、直前の第2の文を算出するときに得られた前記一群のべき乗値を利用して、つぎの第2の文を算出すること、
を特徴とするもの。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002263311A JP2004101846A (ja) | 2002-09-09 | 2002-09-09 | 暗号化・復号化装置および暗号化・復号化方法 |
US10/378,982 US7317794B2 (en) | 2002-09-09 | 2003-03-03 | Enciphering and deciphering apparatus, and enciphering and deciphering method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002263311A JP2004101846A (ja) | 2002-09-09 | 2002-09-09 | 暗号化・復号化装置および暗号化・復号化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004101846A true JP2004101846A (ja) | 2004-04-02 |
Family
ID=31986438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002263311A Pending JP2004101846A (ja) | 2002-09-09 | 2002-09-09 | 暗号化・復号化装置および暗号化・復号化方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7317794B2 (ja) |
JP (1) | JP2004101846A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012090286A (ja) * | 2004-12-21 | 2012-05-10 | Sandisk Corp | イン−ストリームデータ暗号化/復号の機能を有するメモリシステム |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2952774A1 (fr) * | 2009-11-18 | 2011-05-20 | Mohamed Bachkat | Procede et dispositif permettant d'optimiser le dechiffrement et la signature rsa pour mieux securiser les cartes bancaires et les telephones portables |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1500132A (en) * | 1974-03-07 | 1978-02-08 | Standard Telephones Cables Ltd | Multi-level data scramblers and descramblers |
US5031132A (en) * | 1990-02-27 | 1991-07-09 | Analogic Corporation | Circuit for convolving a set of digital data |
US6038581A (en) * | 1997-01-29 | 2000-03-14 | Nippon Telegraph And Telephone Corporation | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed |
US5987131A (en) * | 1997-08-18 | 1999-11-16 | Picturetel Corporation | Cryptographic key exchange using pre-computation |
EP0984357B1 (en) * | 1998-09-03 | 2003-04-16 | Nippon Telegraph and Telephone Corporation | Apparatus and method for elliptic-curve multiplication and recording medium having recorded thereon a program for implementing the method |
US7069287B2 (en) * | 2000-09-19 | 2006-06-27 | Worcester Polytechnic Institute | Method for efficient computation of odd characteristic extension fields |
US7088821B2 (en) * | 2001-05-03 | 2006-08-08 | Cheman Shaik | Absolute public key cryptographic system and method surviving private-key compromise with other advantages |
-
2002
- 2002-09-09 JP JP2002263311A patent/JP2004101846A/ja active Pending
-
2003
- 2003-03-03 US US10/378,982 patent/US7317794B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012090286A (ja) * | 2004-12-21 | 2012-05-10 | Sandisk Corp | イン−ストリームデータ暗号化/復号の機能を有するメモリシステム |
Also Published As
Publication number | Publication date |
---|---|
US20040047465A1 (en) | 2004-03-11 |
US7317794B2 (en) | 2008-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6578061B1 (en) | Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon | |
Aboytes-González et al. | Design of a strong S-box based on a matrix approach | |
US20050283714A1 (en) | Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation | |
US11190340B2 (en) | Efficient unified hardware implementation of multiple ciphers | |
KR20020063793A (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
WO2019087317A1 (ja) | 秘密計算装置、システム、方法、プログラム | |
WO2021029024A1 (ja) | 秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム | |
JPH05324277A (ja) | 暗号通信方法 | |
JP2001051832A (ja) | 乗算剰余演算方法および乗算剰余回路 | |
WO2023074133A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2023067928A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP2004101846A (ja) | 暗号化・復号化装置および暗号化・復号化方法 | |
KR102304992B1 (ko) | 동형 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법 | |
US11343070B2 (en) | System and method for performing a fully homomorphic encryption on a plain text | |
KR100564599B1 (ko) | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 | |
JP2017223822A (ja) | 暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法 | |
CN113467752A (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
JP5354914B2 (ja) | 暗号処理装置及び復号処理装置及びプログラム | |
JP3435473B2 (ja) | 暗号化・復号化方法及び装置 | |
Lian et al. | Bootstrapping of FHE over the integers with large message space | |
JP7187076B1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2023157118A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
US20230195943A1 (en) | Processor architecture and related techniques | |
JP7261502B2 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2022270080A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060307 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060725 |