JP3930302B2 - 効率的な冪乗法および装置 - Google Patents
効率的な冪乗法および装置 Download PDFInfo
- Publication number
- JP3930302B2 JP3930302B2 JP2001356452A JP2001356452A JP3930302B2 JP 3930302 B2 JP3930302 B2 JP 3930302B2 JP 2001356452 A JP2001356452 A JP 2001356452A JP 2001356452 A JP2001356452 A JP 2001356452A JP 3930302 B2 JP3930302 B2 JP 3930302B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- substring
- processed
- index value
- power index
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 145
- 238000004422 calculation algorithm Methods 0.000 claims description 62
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- VBMOHECZZWVLFJ-GXTUVTBFSA-N (2s)-2-[[(2s)-6-amino-2-[[(2s)-6-amino-2-[[(2s,3r)-2-[[(2s,3r)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-2-[[(2s)-2,6-diaminohexanoyl]amino]-5-(diaminomethylideneamino)pentanoyl]amino]propanoyl]amino]hexanoyl]amino]propanoyl]amino]hexan Chemical compound NC(N)=NCCC[C@@H](C(O)=O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CCCCN)NC(=O)[C@H]([C@@H](C)O)NC(=O)[C@H]([C@H](O)C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@@H](N)CCCCN VBMOHECZZWVLFJ-GXTUVTBFSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 108010068904 lysyl-arginyl-alanyl-lysyl-alanyl-lysyl-threonyl-threonyl-lysyl-lysyl-arginine Proteins 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7276—Additional details of aspects covered by group G06F7/723
- G06F2207/7295—Additional details of aspects covered by group G06F7/723 using an addition chain, or an addition-subtraction chain
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
本発明は、概して、コンピュータ上で実現される冪乗法に関し、より具体的には、より高速かつコンピュータで実現される他の冪乗法よりメモリの要求が低い冪乗法に関する。
【0002】
【従来の技術】
コンピュータシステムを利用する、通信および格納用のデータ暗号が当該技術分野において周知である。データの暗号化は、暗号化されるデータに暗号を適用することによって達成される。暗号は、暗号器および受信器(「対称暗号化」方式)とってのみ既知であってもよいし、秘密に保持される暗号に結合された広く公知の暗号の組合せ(「公開鍵」方式)であってもよい。
【0003】
より一般的な方法として、暗号法の「公開鍵」システムなどがある。このシステムは、使用が容易であり、比較的解読されにくいので、一般的である。これらの方法は、大きな冪指数(すなわち、数百ビット以上の冪指数)を用いる複雑な数学式を利用して、認証されていない解読をより困難にする。
【0004】
この方法の一例として、RSA方法がある。この方法は、開発者のRivest、Shamir、Adlemanの名前から名付けられた。RSA方法は、「PKCS#1:RSA Cryptography Specifications Version 2.0」という名称のRFC−2437に、より詳細に記載されている。
【0005】
RSA公開鍵は、2つの成分からなる負でない整数である。係数nと、公開冪指数eであり、両方とも負でない整数である。有効なRSA公開鍵において、係数nは、2個の奇数の素数pおよびqの積であり、公開冪指数eは、gcd(e,λ(n))=1を満たす3からn−1の間の整数である。ここで、λ(n)=lcm(p−1,q−1)であり、gcd(x,y)は、xおよびyの最大公約数であり、lcm(x,y)は、xおよびyの最小公倍数である。
【0006】
RSA法は、以下の式を解くことを含む。
【0007】
c=me mod n
ただし、(n,e)は、RSA暗号公開鍵であり、mは、0からn−1の間の整数の、表されるメッセージであり、cは、冪乗法および法分割(modulo division)の暗号化された結果である。
【0008】
メッセージは、m=cd mod nを計算することによって、受信者によって解読される。ただし、dは、秘密冪指数である。従って、メッセージの符号化と復号との両方において冪乗法が用いられる。
【0009】
他の一般的な暗号化の方法として、T.ElGamalによって提案された公開鍵暗号法(PKC)がある。この方法によると、素数pが選択され、pの原始根gが選択される。ユーザUは、任意の数uを選択し、gu=α mod pを計算する。ただし、αは、pを法とするu乗のgの剰余である。ユーザVは、任意の数vを選択し、β=gvmod pを計算する。当事者間で剰余αとβを交換し、それぞれ、共通鍵値を計算する。ユーザUについては、k=βu modulo pであり、ユーザVについては、k=αv modulo pである。その後、暗号化されるデータは、データを変換するためにkを用いて、例えば、データおよびkの排他的論理和を形成することによって、算術に基づいて処理される。同じ演算が用いられて、データを解読する。再度、冪乗法が、メッセージ送信者とメッセージ受信者との両方によって用いられて、データの暗号化または解読に用いられた鍵が計算される。
【0010】
しかし、非常に大きい冪指数値は、必要な乗算の数、および/またはオペレーションを行うために用いられるコンピュータメモリの量に関して、ユーザに対価を要求する。これらのタイプの乗算演算は、乗算される値が、プロセッサのビット長を越え、多重精度演算として実現されるので、高くつく。
【0011】
e乗した数は、常に、その数自体を冪指数によって表される回数だけ乗算することによって、計算され得る。数学的には以下のように表される。
【0012】
ae=a*a*a...e回
他の方法として、大幅に速い乗算連鎖アルゴリズムがある。この場合、e=en-1en-2...e1e0を、nビット冪指数ei∈{0,1}、0≦i≦n−1、およびen-1=1となるようにする。アルゴリズムは、p1=aで開始し、以下のように続く。
【0013】
en-1-i=0の場合はpi+1=pi 2、または、en-1-i=1の場合はa*pi 2、ただし、1≦i≦n−2
この技術において、基数値の有効な冪指数を生成するために必要な、乗算の回数またはコンピュータメモリの量のいずれかを低減する、いくつかの方法が公知である。
【0014】
乗算の回数を低減することが公知である1つの方法として、符号付きの数字アルゴリズムがある。この方法において、冪指数は、値0および1を含むビットストリングとして表される。ビットストリング内で、1のシーケンス(または「ラン」)は、0のシーケンスによって置き換えられ、1が、ランの最上位ビット(MSB)位置に対して、次の上位のビット位置に配置され、「−1」が、ランの最下位ビット(LSB)位置に挿入される。このようにして、冪指数ビットストリングが効率的に記録され、予測される乗算の回数は、n/2からn/3に低減される。
【0015】
当該技術において、メモリを利用することによって乗算の回数を低減することが公知である他の方法として、「スライディングウィンドウ法」がある。この方法において、冪指数は、また、0ビットおよび1ビットのストリングとして表される。所定の固定長のサブストリングは、特定の冪乗した基数を含む基準ルックアップテーブルから取り出され、検査される。検査中のサブストリングは、ビットストリングの数値によって表される冪乗した基数をルックアップするための基準値として用いられ、パターンに対応するビットストリングにおける最下位ビットの位置を基準として、中間値が格納される。冪指数ビットストリングの移動の後、中間値は、乗算連鎖アルゴリズムを用いて共に乗算されて、元の冪指数値で冪乗した基数が決定される。
【0016】
【発明が解決しようとする課題】
コンピュータに基づく通信の暗号化および解読手段は、当該技術において周知である。しかし、最先端の暗号化および解読方法は、コンピュータ使用サイクルまたはメモリが制限されている小さいデバイスに用いるためには、時間がかかり過ぎるか、メモリを多く使い過ぎるか、またはその両方である。従って、コンピュータサイクル、および消費されるメモリ量の両方に関して、より効率的な冪乗法の需要がある。
【0017】
【課題を解決するための手段】
本発明の方法は、2進数の冪指数値によって表される冪乗したデータストリングを表す値を計算する方法であって、符号付きの数アルゴリズムを該2進数の冪指数値に適用して、処理された冪指数値を生成する工程と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される該冪乗したデータストリングに対応する、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出して、再符号化し、該処理された冪指数値における該適合サブストリングを0および該ルックアップテーブルへの基準と置き換えて、変更された該冪指数値の再符号化されたストリング表現を生成する工程と、該ルックアップテーブルを用いて乗算二乗連鎖アルゴリズムを該再符号化された冪指数値に適用して該再符号化された冪指数値で冪乗したデータストリングを表す値を計算する工程とを包含する。
【0018】
本発明の方法は、前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程が、1より大きい前記処理された冪指数値において予測された頻度で発生する各サブストリングについて、該テーブルにおけるエントリーを規定する工程を包含してもよい。
【0019】
本発明の方法は、前記処理された冪指数値が、100ビット〜200ビットの長さであり、前記ルックアップテーブルが、値3、5、7、9、11、13、15、17、19、および21の値を表すサブストリングに対応するエントリーを含んでもよい。
【0020】
本発明の方法は、前記ストリング置換方法の適用が、a)より下位のビット位置から、より上位のビット位置へと、非0ビットが見つかるまで前記処理された冪指数値を移動して、非0ビット位置にポインタを設定する工程と、b)前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最下位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0にする工程と、d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程と、を包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程a)〜d)を繰り返してもよい。
【0021】
本発明の方法は、前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値にポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、該値が負であることを示す印を付ける工程をさらに包含してもよい。
【0022】
本発明の方法は、前記ストリング置換方法の適用が反復的に行われてもよい。
【0023】
本発明の方法は、前記符号付きの数アルゴリズムの適用が反復的に行われてもよい。
【0024】
本発明の方法は、前記ストリング置換方法の適用が、a)より上位のビット位置から、より下位のビット位置へと、非0ビットが見つかるまで前記処理された冪指数値を移動して、非0ビット位置にポインタを設定する工程と、b)前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最上位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0にする工程と、d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程と、を包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程a)〜d)を繰り返してもよい。
【0025】
本発明の方法は、前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値に前記ポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、値が負であることを示す印を付ける工程をさらに包含してもよい。
【0026】
本発明の装置は、処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する装置であって、符号付きの数アルゴリズムを該処理された冪指数値に適用して、処理された冪指数値を生成する手段と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける値に、ポインタを記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された該冪指数値を生成する、手段と、該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該処理された冪指数値で冪乗したデータストリングを表す値を計算する手段とを含む。
【0027】
本発明の方法は、前記ルックアップテーブルが、値3、5、7、9、11、13、15、17、19、および21の値を表すサブストリングに対応するエントリーを含んでもよい。
【0028】
本発明のコンピュータ読み出し可能媒体は、処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する方法をコンピュータに実行させるコンピュータプログラム命令を含む、コンピュータ読み出し可能媒体であって、該方法が、符号付きの数アルゴリズムを該処理された冪指数値に適用して、処理された冪指数値を生成する工程と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、中間値である、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおけるポインタに記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された該冪指数値の再符号化されたストリング表現を生成する、工程と、乗算二乗連鎖アルゴリズムを変更された冪指数値に適用して、該冪指数値で冪乗したデータストリングを表す値を計算する工程とを包含する。
【0029】
本発明の方法は、基数値の冪指数を表すデータストリングを、暗号化/解読演算の一部として、処理する方法であって、一組の所定の値によって指数付けされたルックアップテーブルを生成する工程であって、各値が、それぞれ異なる冪指数値で冪乗した基数を表す、工程と、符号付きの数アルゴリズムを用いて、再符号化して、「1」のランを、最上位ビットのすぐ上のビット位置で「1」によって区切られ、ランの最下位ビット位置として「−1」を有する、「0」のランの埋め込まれたパターンに低減する工程と、ストリング置換方法を利用する冪指数からサブストリングパターンを抜き出し、該抜き出されたサブストリングパターンを該所定の値と比較して該ルックアップテーブルからそれぞれの値を中間値として入手して、該所定の値に対応するサブストリングを0にする工程と、該中間値を格納する工程と、該ビットストリングにおける任意の残りのビットを、乗算連鎖アルゴリズムを用いて該格納された中間値で処理して、冪指数で冪乗した基数の値を決定する工程とを包含する。
【0030】
本発明の方法は、冪指数値によって表される冪乗したデータストリングを表す、暗号化された値を計算することによって、データストリングを暗号化する方法であって、符号付きの数アルゴリズムを該冪指数値に適用して、処理された冪指数値を生成する工程と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出して、再符号化し、該処理された冪指数値における該適合サブストリングを0および該ルックアップテーブルへの基準と置き換えて、該冪指数値の変更された再符号化されたストリング表現を生成する、工程と、該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを再符号化された値に適用して、該暗号化されたデータストリングを表す値を計算する工程とを包含する。
【0031】
本発明の方法は、前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程が、1より大きい前記処理された冪指数値において予測された頻度で発生する各サブストリングについて、該テーブルにおけるエントリーを規定する工程を包含してもよい。
【0032】
本発明の方法は、前記2進数の冪指数値が、100ビット〜200ビットの長さであり、前記ルックアップテーブルが、値3、5、7、9、11、13、15、17、19、および21の値を表すサブストリングに対応するエントリーを含んでもよい。
【0033】
本発明の方法は、前記ストリング置換方法の適用が、a)より下位のビット位置から、より上位のビット位置へと、非0ビットが見つかるまで前記処理された冪指数値を移動して、非0ビット位置にポインタを設定する工程と、b)前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最下位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0にする工程と、d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程と、を包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程a)〜d)を繰り返してもよい。 本発明の方法は、前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値にポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、値が負であることを示すマーキングする工程をさらに包含してもよい。
【0034】
本発明の方法は、前記ストリング置換方法の適用が、a)より上位のビット位置から、より下位のビット位置へと、非0ビットが見つかるまで前記処理された冪指数値を移動して、該非0ビット位置にポインタを設定する工程と、b)前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最上位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0にする工程と、d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程とを包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程a)〜d)を繰り返してもよい。
【0035】
本発明の方法は、前記最長適合サブストリングに対応する、ルックアップテーブルにおける値にポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、値が負であることを示す印を付ける工程をさらに包含してもよい。
【0036】
本発明の装置は、2進数の冪指数値によって表される冪乗したデータストリングを表す暗号化された値を計算することによって、データストリングを暗号化する装置であって、符号付きの数アルゴリズムを該2進数の冪指数値に適用して、処理された冪指数値を生成する手段と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける値に、ポインタを記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された該冪指数値を生成する、手段と、乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、データストリングを表す暗号化された値を計算する手段とを含む。
【0037】
本発明の方法は、前記ルックアップテーブルが、値3、5、7、9、11、13、15、17、19、および21の値を表すサブストリングに対応するエントリーを含んでもよい。
【0038】
本発明のコンピュータ読み出し可能媒体は、2進数の冪指数値によって表される冪乗したデータストリングを表す値を計算することによってデータストリングを暗号化する方法を、コンピュータに行わせる、コンピュータプログラム命令を含む、コンピュータ読み出し可能媒体であって、該方法が、符号付きの数アルゴリズムを該2進数の冪指数値に適用して、処理された冪指数値を生成する工程と、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗した該データストリングに対応する、中間値である、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおけるポインタを該値に記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された該冪指数値の再符号化されたストリング表現を生成する、工程と、乗算二乗連鎖アルゴリズムを変更された冪指数値に適用して、該データストリングを表す暗号化された値を計算する工程とを包含する。
【0039】
本発明は、新規な方法で、冪乗法のための2つの再符号化方法を結合する。第1の方法は、「符号付き数アルゴリズム」であり、第2の方法は、以下で、ストリング置換方法と呼ばれる、改良された「スライディングウィンドウ」方法である。これら2つの方法の組合せは、用いられるコンピュータサイクルの数がより少なく、従来技術よりメモリが少ない状態で、データが暗号化および解読されることを可能にする。
【0040】
本発明は、基数および冪指数の両方が非常に大きい数(100ビットから数千ビットの間の任意の長さ)であり得る基数に基づいて、冪乗法演算を行う暗号化/解読システムにおいて実施される。冪指数は、ビットストリングとして表され得る。その後、ビットストリングは、符号付き数アルゴリズムを用いて再符号化されて、最上位ビットのすぐ上のビット位置において「1」によって区切られ、ランの最下位ビット位置として「−1」を有する「0」のランのパターンによってそのビットストリングを置き換えることによって、「1」のランが消去される。所定のサブストリングパターンが、スライディングウィンドウ方法に類似する様態で、冪指数から取り出される。取り出されたストリングは、比較的少ない数の所定のサブストリングについて、冪指数値を含む、以前に構築されたルックアップテーブルと比較される。冪指数における各非0ビットで、その位置で終了するこのようなサブストリングのうち、最も長いサブストリングがルックアップテーブルにおいて見受けられ、冪指数における、対応するビットは、最も右側のビットを除いて0に設定される。このビット位置には、ルックアップテーブル内の対応するエントリーに基準が格納される。ルックアップテーブルから戻る値は、サブストリングによって表される冪乗した基数値である。冪指数ビットは、このようなサブストリング全てが抜き取られ、ルックアップテーブルへの対応する基準が格納されるまで、右から左に(すなわち、最下位ビット位置から最上位ビット位置に)通過される。冪指数における残りのビット、および中間値は、その後、乗算連鎖アルゴリズム用いて処理されて、冪指数で冪乗した基数値が決定される。
【0041】
本発明の他の特徴および利点は、本発明の好適な実施形態の以下の詳細な説明において述べられるか、または、明らかである。
【0042】
【発明の実施の形態】
上記の要旨、および以下の本発明の例示的な実施形態の詳細な説明は、添付の図面を参照しながら読まれることによって、よりよく理解される。本発明を例示するため、本発明の例示的な実施形態をいくつか示す。しかし、本発明が、厳密に、示している配置および手段に限定されるものではないことが理解されるべきである。
【0043】
図1は、例示的な暗号化/解読プロセスの演算を示すフローチャートである。工程1において、ユーザは、暗号化されるデータまたはメッセージを選択する。工程2で、ユーザは、データの符号化またはデータの符号化に用いられる鍵の値の決定に冪乗法を用いる暗号化方法を用いて、データまたはメッセージを暗号化する。工程2では、また、暗号化されたデータが、受信者に転送される。次に、工程3で、受信者が暗号化されたデータまたはメッセージを受け取り、工程4で、受信者は、冪乗法を用いる解読方法を用いて、暗号化されたデータを解読する。
【0044】
本発明は、改良された冪乗法である。符号付きの数の方法に、ストリング置換方法および改良されたスライディングウィンドウ方法が組み合わされて、ストリング置換方法よりも用いるメモリが少なく、ストリング置換方法および符号付き数の方法の両方よりも速い冪乗法が、生成される。これらの2つの方法の組合せは、自明ではない。なぜなら、符号付き数のアルゴリズムの適用は、「1」または「−1」によって区切られる「0」のランに、ストリングパターンを低減し、これによってストリング置き換え法の有効性が打ち消されるからであり、「ウィンドウ」が殆ど「0」をフレームするからである。反対に、符号付き数アルゴリズムの適用の前に、ウィンドウを用いるビットストリングを移動することは、「1」のランを全てビットストリングから取り除き、符号付き数アルゴリズムの適用を不必要なものにする。本明細書中で開示される方法は、「ストリング置換方法」を利用することによって、これらの方法を組み合せて、符号付き数アルゴリズムの適用によって生じる所定のビット構造のみに鍵をかける。
【0045】
アルゴリズムの演算を、図2を参照しながら説明する。図2の工程10で、基数がメモリに格納される。この基数は、暗号化されるメッセージである。次に、工程20で、基数値の暗号化において生じる最確値に基づいて、ルックアップテーブルが構築される。これらの最確値は、以下で説明するように、多くの解析によって最も良好に決定される。ルックアップテーブルは、以下で説明する再符号化において生じる可能性の高いストリングであるルックアップフィールド、および、ルックアップフィールドによって表される冪乗した基数である基準値からなる。ルックアップテーブルの代表的なフォーマットを表1に示す。
【0046】
冪指数ビットストリングを移動する戻り値のルックアップテーブルの例
【0047】
【表1】
この表において、「+」は数「1」を表し、「−」は数「−1」を表す。
【0048】
工程30で、冪指数は、冪指数の2進数値のストリング形式の表現であるビットストリングとしてメモリに格納される。その後、工程40で、ビットストリングは、以下に説明するように、符号付き数アルゴリズムを用いて、処理された2進数の冪指数値を生成することによって再符号化される。
【0049】
冪指数ビットストリングは、最も右のビットから開始して、非0値が見つかるまで移動され、ポインタがその位置に置かれる。その点から、ストリングは、0ビットが見つかるまで移動され、第2のポインタが0ビットの位置に置かれる。ポインタ間の距離が1より大きい(すなわち、「1」のランが見つかった)場合、「1」が第2のポインタで挿入され、ポインタ間の全ての「1」が「0」によって置換され、最も右のポインタによって示される「1」は、「−1」によって置換される。第1のポインタは、第2のポインタの位置(最も最近のサブストリングの終了位置のすぐ左の新たな開始位置)に置かれ、冪指数ビットストリング全体が移動され、処理された2進数の冪指数値に再符号化されるまで、プロセスがまた適用される。
【0050】
表2に、上述したように、符号付き数アルゴリズムの適用の後に、冪指数において所定のビットパターンが発生する予測頻度を示す。結果は、1000のランダムな最大で160ビットの長さの冪指数に基づいて示され、特別なビット構造の発生を表す。ルックアップテーブルは、1.0より大きい発生の予測頻度を有する値からのみ、構築され得る。なぜなら、1.0より小さい発生の予測頻度を有する値は、アクセスされる可能性がより低く、テーブルを構築する時間が回復される可能性は低いからである。
【0051】
【表2】
従って、本発明による、前もって計算される冪指数のテーブルは、10個の値、m3、m5、m7、m9、m11、m13、m15、m17、m19、およびm21を含む。対応する負の値は、同様に計算され、格納されるか、または、以下で説明するように、負の値は、冪指数ビット位置における符号ビットを用いることによって処理され得る。最終的な冪指数が計算される乗算二乗連鎖アルゴリズムの間、これらの二進数の値の各々によって表される複数の乗算が、識別されたストリングのLSBに対応する冪指数のビットが処理される場合、累積された値を識別されたストリングについて格納された値で乗算する1つの乗算によって置き換えられる。格納された値の計算自体が、1つ以上の乗算の演算を表すので、符号付き数アルゴリズムを用いてストリングが処理された後の冪指数へのストリング置き換えアルゴリズムの適用は、変更された冪指数において1度より多く発生する可能性の高いストリングについてしか有益でない。
【0052】
表2のデータに基づいて、最大で160ビットの長さの冪指数について構築されるルックアップテーブルは、上記のストリングをルックアップ値として有効に用い得、工程10において格納される、対応する冪乗した基数を戻す。テーブルは、奇数乗のみを用いて構築されるが、これは、ストリング置換方法が、ウィンドウを非0ビットでフレーミングすることによって、奇数の冪指数のみが用いられることを確実にするからである。
【0053】
図3において詳細に示すように、工程50で、処理された2進数値(2進数ではなくなっている)は、以下のように、ストリング置換方法を用いて移動される。
【0054】
工程51で、処理された2進数の冪指数値の最も右側の位置にポインタが置かれる。工程52で、アルゴリズムは、非0ビットが見つかるまで、ビット位置ごとに、処理された2進数の冪指数値を移動する。工程52で非0ビットが見つからない場合、工程53に示すように、移動は終了する。工程52で非0ビットが見つかる場合、第1のポインタは、識別されたサブストリングの最も右側の非0(±1)数を示す。工程54では、第2のポインタは、最も左側の非0数の位置を示すように置かれる。工程55では、第2のポインタは、第1のポインタに対応するLSBを有する処理された2進数の冪指数値のより短いサブストリングを連続的に比較することによって右に移動され、次いでルックアップテーブルと比較されて、ポインタで終了する処理された2進数の冪指数値のサブストリングに適合する最も長い基準値を決定する。工程56において、アルゴリズムは、適合するものがあるかどうかを判定する。工程56が、適合するものがあることを示す場合、工程57では、適合サブストリングの非0数の全ては、0に設定される。工程58では、アルゴリズムは、サブストリングによって表される冪指数で冪乗した基数である、ルックアップテーブルに格納されている基準値の指数を、その冪指数における適合サブストリングのLSBの位置に挿入する。工程58または工程56の後、適合が見つからない場合には、上述した再符号化および置換方法が、第1のポインタの左側の次の非0ビット位置から開始して、再度適用される。工程56では、ルックアップテーブルにおいて適合が見つからない場合には、第1のポインタでの±1ビットは、変更されないまま残り、次の最も右側の±1が検査されて、ルックアップテーブルのエントリーに適合する、このビットを含む任意のサブストリングがあるかどうかが判定される。このプロセスは、処理された2進数の冪指数値全体が移動され、適合サブストリングが「0」およびルックアップテーブルの基準によって置き換えられるまで、継続される。ルックアップテーブルのサイズを2分の1まで低減するため、正のサブストリング値のみが格納され得る。負のサブストリングは、正のエントリーに基準を挿入し、値が負であることを示すように基準に印を付けることによって示される。
【0055】
符号付き数方法、ストリング置換方法のいずれか、または両方が、反復プロセスとして実現され得ることが考慮される。この代替例において、1のサブストリング、または冪指数における適合サブストリングを認識し、処理した後、プロセスは、プロセス自体内で、呼び出されて、次のサブストリングを認識し、処理する。反復プロセスの速度を上げるために、プロセスは、現在のサブストリングの冪指数値におけるMSB位置を表すパラメータを含み得る。このパラメータは、次のインスタンシエーションにおけるプロセスの開始位置である。初期的には、この値は0に設定される。
【0056】
工程60において、ルックアップテーブルにおける指数を有する、変更された2進数の冪指数、0ビットおよび残りの±1数は、乗算二乗連鎖アルゴリズムを用いて処理され、元の冪指数で冪乗した基数値である結果が得られる。乗算二乗連鎖アルゴリズムが、任意の格納されたテーブル指数で、変更された冪指数に適用される場合、対応するテーブル値は、指数が格納されたビット位置に対応する、アルゴリズムにおける工程で累積された値を乗算する。格納された指数が、冪指数のMSBである場合、アルゴリズムは、累積された値として、ルックアップテーブルからの対応する値で開始する。冪指数に残る全てのビットは、乗算二乗連鎖アルゴリズムが符号付き数変換の実行後に適用される場合と同じ方法で処理されるが、指数が負であることが示される場合、乗算演算ではなく除算演算が行われる点が異なる。その後、工程70において、この結果の値が、さらなるプロセスのために、暗号化アルゴリズムに戻される。
【0057】
冪指数がLSB位置からMSB位置まで移動されていることを、アルゴリズムが示すので、符号付き数プロセス、およびアルゴリズムのストリング置き換え部分の両方において、これらの工程のいずれか、または両方において、冪指数がMSB位置からLSB位置まで移動され得ることが考慮される。
【0058】
本発明を例示するために、一例を挙げる。
【0059】
キャラクター「6」が暗号化される。実際には、冪指数は100ビット以上であるが、この例で選択される冪指数は55である。キャラクター「6」は、6の整数値を有し、00000110の2進数表現を有する。従って、「6」55≒6.285195213566005e+42である。
【0060】
55は、「110111」のビットストリングとして表される。
【0061】
基数「6」は、数値6としてメモリに格納される。ルックアップテーブルは、上述したように、この例における冪指数は、160ビット(表2を作成するために用いられる値)より少ないので、奇数の冪指数の値63〜621について構築される。
【0062】
このストリングに符号付きアルゴリズムを適用して、ポインタが、まず、最も右側の「1」に置かれる。ビットストリングを、第2のポインタが、「0」に出会うまで、左側へと位置ごとに移動する。その後、第2のポインタは、サブストリング「111」のすぐ左の「0」ビットの位置に置かれる。これは、「+00−」に変換され、中間ストリング「11+00−」が生じる。そのアルゴリズムが、第2のポインタのビット位置(「+」)を示すように、第1のポインタをリセットし、その位置からビットストリングの移動を継続する。上述したように、ビットストリングは、「11+」に適合する「0」またはストリングの末端(すなわち、ビットストリングのMSBより上位の位置)に出会うまで、第2のポインタによって、左側へと位置ごとに移動され、「+00−」によって置き換えられ得る。得られる処理された2進数の冪指数値は、「+00−00−」=64−8−1=55である。従って、乗算演算の回数は、4から2に低減される。
【0063】
図3に詳細に示すように、乗算連鎖アルゴリズムにおいて用いられる、ルックアップテーブルから値を取り出すストリング置換方法の適用が、次の工程である。ポインタは、最も右側の非0値、「−」に置かれる。この例においては、ルックアップテーブルにおける最も大きい適合ストリングは、10077696(6の9乗である)のルックアップテーブル値に対応する、「−00−」であり、値が負であることを示すように指数には印が付けられている。サブストリング「−00−」は、「0」によって置き換えられ、中間ストリング「+00000(−9)」を残す。ただし、(−9)は、ルックアップテーブルの9エントリーへのポインタを表し、値が負であることを示す。
【0064】
その後、中間ストリングは、非0ビットが見つかるまで、処理されていない位置から、位置ごとに移動され、ポインタはその位置に置かれる。この例においては、適合がない。乗算連鎖アルゴリズムは、値+00000(−9)を用いて、冪乗値を計算する。この例においては、値6は、再符号化される冪指数における6ビット位置ごとに1回ずつ、6回二乗されて、約6.33e+49の値を生成する。ビット位置0で、得られる値は、ルックアップテーブル値10077696によって除算されて、得られる冪指数値(すなわち、664/10077696≒6.28e+42)を生成する。従って、改良されたストリング置換演算の適用は、さらに、2回の乗算演算から1回の乗算演算に低減される。
【0065】
暗号化方法は、素数を法とする冪指数値を決定し、暗号化されたメッセージにおいて、この値をキャラクター「6」の代わりに用いる。
【0066】
本発明は、方法として説明されてきたが、装置、例えば、特定用途向け集積回路(ASIC)または他の専用データ処理回路の一部として、実現されることも考慮され得る。さらに、コンピュータ読み出し可能媒体上のコンピュータソフトウェア、例えば、固体メモリまたは磁気メモリ、磁気ディスクまたは光学ディスク、テープまたはメモリカード、あるいは、無線周波数または音響周波数媒体において実現され得る。
【0067】
暗号化/解読方法は、基数および冪指数の両方が、大きい数(すなわち、100から数千ビットの任意の長さ)である基数に対して冪乗法演算を行う。冪指数は、ビットストリングとして表される。その後、ビットストリングは符号付きの数アルゴリズムを用いて再符号化される。所定のサブストリングパターンが、その後、ストリング置換方法を用いることによって、冪指数から抜き出され、比較的小さい数の所定のサブストリングについてのみ冪指数を含む、以前に構築されたルックアップテーブルと比較される。ルックアップテーブルから戻った値は、サブストリングによって表される冪乗した基数値である。冪指数内の各適合サブストリングのポインタが格納される。その後、冪指数における残りのビット、および中間値が乗算連鎖アルゴリズムを用いて処理されて、冪指数で冪乗した基数の値を決定する。
【0068】
本発明を、例示的な実施形態に関して説明してきたが、添付の特許請求の範囲内の変形例と共に、上述したように実施され得ることも考慮される。
【0069】
【発明の効果】
本発明のデータストリングを表す値を計算する方法は、符号付きの数アルゴリズムを2進数の冪指数値に適用して処理された冪指数値を生成する工程と、ストリング置換方法を適用して該処理された冪指数値を移動し、処理された冪指数値における適合サブストリングに対応する中間値をルックアップテーブルから取り出して再符号化し、処理された冪指数値における適合サブストリングを0およびルックアップテーブルへの基準に置換して変更さたストリング表現を生成する工程と、ルックアップテーブルを用いて乗算二乗連鎖アルゴリズムを再符号化された冪指数値に適用して再符号化された冪指数値で冪乗したデータストリングを表す値を計算する工程とを包含する。これによってコンピュータに基づく通信の暗号化および解読手段を効率的にすることができ、コンピュータ使用サイクルまたはメモリが制限されている小規模デバイスに用いることができる。
【図面の簡単な説明】
【図1】図1は、本発明の例示的な実施形態を例示するフローチャートである。
【図2】図2は、本発明のインプリメンテーションのフローチャートである。
【図3】図3は、ルックアップテーブルからの中間値の取り出しの詳細なフローチャートである。
Claims (22)
- データを暗号化または解読する方法であって、
該方法は、
計算デバイスが、2進数の冪指数値によって表される冪乗したデータストリングを表す値を計算するステップと、
該計算デバイスが、該計算された値を用いて、該データを暗号化または解読するステップと
を包含し、
該値を計算するステップは、
符号付きの数アルゴリズムを該2進数の冪指数値に適用して、処理された冪指数値を生成するステップと、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される該冪乗したデータストリングに対応する、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出し、記録し、該処理された冪指数値における該適合サブストリングを0および該ルックアップテーブルにおける該中間値へのポインタと置き換えて、該冪指数値の変更された再符号化されたストリング表現を生成する、ステップと、
該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを該冪指数値の変更された再符号化されたストリング表現に適用して、該再符号化された冪指数値で冪乗したデータストリングを表す値を計算するステップと
を包含する、方法。 - 前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップは、1より大きい前記処理された冪指数値において予測された発生の頻度を有する各サブストリングについて、該テーブルにおけるエントリーを規定するステップを包含する、請求項1に記載の方法。
- 前記処理された冪指数値は、100ビット〜200ビットの長さであり、前記ルックアップテーブルは、値3、5、7、9、11、13、15、17、19、および21を表すサブストリングに対応するエントリーを含む、請求項2に記載の方法。
- 前記ストリング置換方法の適用は、
a)非0ビットが見つかるまで、より下位のビット位置から、より上位のビット位置に前記処理された冪指数値を移動し、非0ビット位置へのポインタを設定するステップと、
b)前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最下位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0に設定するステップと、
d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける中間値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合サブストリングが見つからなくなるまで、ステップa)〜d)を繰り返す、請求項1に記載の方法。 - 前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける中間値へのポインタを記録するステップは、該サブストリングが負の値を表す場合に、該中間値が負であることを示す印を該ルックアップテーブルにおける中間値へのポインタに付けるステップをさらに包含する、請求項4に記載の方法。
- 前記ストリング置換方法の適用が反復的に行われる、請求項4に記載の方法。
- 前記符号付きの数アルゴリズムの適用が反復的に行われる、請求項1に記載の方法。
- 前記ストリング置換方法の適用は、
a)非0ビットが見つかるまで、より上位のビット位置から、より下位のビット位置に前記処理された冪指数値を移動し、非0ビット位置へのポインタを設定するステップと、
b)前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最上位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0に設定するステップと、
d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける中間値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合サブストリングが見つからなくなるまで、ステップa)〜d)を繰り返す、請求項1に記載の方法。 - 前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける中間値への前記ポインタを記録するステップは、該サブストリングが負の値を表す場合に、該中間値が負であることを示す印を該ルックアップテーブルにおける中間値へのポインタに付けるステップをさらに包含する、請求項8に記載の方法。
- 処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する装置であって、
該装置は、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける中間値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された冪指数値を生成する、手段と、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該処理された冪指数値で冪乗したデータストリングを表す値を計算する手段と
を含む、装置。 - 前記ルックアップテーブルは、値3、5、7、9、11、13、15、17、19、および21を表すサブストリングに対応するエントリーを含む、請求項10に記載の装置。
- コンピュータプログラム命令を含むコンピュータ読み出し可能媒体であって、該コンピュータプログラム命令は、処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する方法をコンピュータに実行させ、
該方法は、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応するそれぞれの中間値である、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおける中間値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された冪指数値を生成する、ステップと、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該冪指数値で冪乗したデータストリングを表す値を計算するステップと
を包含する、コンピュータ読み出し可能媒体。 - データを暗号化または解読する方法であって、
該方法は、
計算デバイスが、冪指数値によって表される冪乗したデータストリングを表す、暗号化された値を計算するステップと、
該計算デバイスが、該計算された値を用いて、該データを暗号化または解読するステップと
を包含し、
該暗号化された値を計算するステップは、
符号付きの数アルゴリズムを該冪指数値に適用して、処理された冪指数値を生成するステップと、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応する、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出し、記録し、該処理された冪指数値における該適合サブストリングを0および該ルックアップテーブルにおける該中間値へのポインタと置き換えて、該冪指数値の変更された再符号化されたストリング表現を生成する、ステップと、
該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを該冪指数値の変更された再符号化されたストリング表現に適用して、該データストリングを表す暗号化された値を計算するステップと
を包含する、方法。 - 前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップは、1より大きい前記処理された冪指数値において予測された発生の頻度を有する各サブストリングについて、該テーブルにおけるエントリーを規定するステップを包含する、請求項13に記載の方法。
- 前記2進数の冪指数値は、100ビット〜200ビットの長さであり、前記ルックアップテーブルは、値3、5、7、9、11、13、15、17、19、および21を表すサブストリングに対応するエントリーを含む、請求項14に記載の方法。
- 前記ストリング置換方法の適用は、
a)非0ビットが見つかるまで、より下位のビット位置から、より上位のビット位置に前記処理された冪指数値を移動し、非0ビット位置へのポインタを設定するステップと、
b)前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最下位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0に設定するステップと、
d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合値が見つからなくなるまで、ステップa)〜d)を繰り返す、請求項13に記載の方法。 - 前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値へのポインタを記録するステップは、該サブストリングが負の値を表す場合に、値が負であることを示す印を該ルックアップテーブルにおける値へのポインタに付けるステップをさらに包含する、請求項16に記載の方法。
- 前記ストリング置換方法の適用は、
a)非0ビットが見つかるまで、より上位のビット位置から、より下位のビット位置に前記処理された冪指数値を移動し、該非0ビット位置へのポインタを設定するステップと、
b)前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最上位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
c)該適合サブストリングにおける非0ビットに対応する、該処理された冪指数値における全ての非0ビットを0に設定するステップと、
d)該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合値が見つからなくなるまで、ステップa)〜d)を繰り返す、請求項13に記載の方法。 - 前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値へのポインタを記録するステップは、該サブストリングが負の値を表す場合に、値が負であることを示す印を該ルックアップテーブルにおける値へのポインタに付けるステップをさらに包含する、請求項18に記載の方法。
- 2進数の冪指数値によって表される冪乗したデータストリングを表す暗号化された値を計算することによって、該データストリングを暗号化する装置であって、
該装置は、
符号付きの数アルゴリズムを該2進数の冪指数値に適用して、処理された冪指数値を生成する手段と、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された冪指数値を生成する、手段と、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該データストリングを表す暗号化された値を計算する手段と
を含む、装置。 - 前記ルックアップテーブルは、値3、5、7、9、11、13、15、17、19、および21を表すサブストリングに対応するエントリーを含む、請求項20に記載の装置。
- コンピュータプログラム命令を含むコンピュータ読み出し可能媒体であって、該コンピュータプログラム命令は、2進数の冪指数値によって表される冪乗したデータストリングを表す値を計算することによってデータストリングを暗号化する方法をコンピュータに実行させ、
該方法は、
符号付きの数アルゴリズムを該2進数の冪指数値に適用して、処理された冪指数値を生成するステップと、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗した該データストリングに対応するそれぞれの中間値である、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおける該中間値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを0と置き換えて、変更された冪指数値を生成する、ステップと、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該データストリングを表す暗号化された値を計算するステップと
を包含する、コンピュータ読み出し可能媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/717,895 | 2000-11-21 | ||
US09/717,895 US6745220B1 (en) | 2000-11-21 | 2000-11-21 | Efficient exponentiation method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002207429A JP2002207429A (ja) | 2002-07-26 |
JP3930302B2 true JP3930302B2 (ja) | 2007-06-13 |
Family
ID=24883920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001356452A Expired - Fee Related JP3930302B2 (ja) | 2000-11-21 | 2001-11-21 | 効率的な冪乗法および装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6745220B1 (ja) |
JP (1) | JP3930302B2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133788A1 (en) * | 2003-01-07 | 2004-07-08 | Perkins Gregory M. | Multi-precision exponentiation method and apparatus |
FR2867289A1 (fr) * | 2004-03-02 | 2005-09-09 | France Telecom | Procede et dispositif pour accomplir une operation cryptographique |
US8015211B2 (en) * | 2004-04-21 | 2011-09-06 | Architecture Technology Corporation | Secure peer-to-peer object storage system |
US8364734B2 (en) * | 2005-09-15 | 2013-01-29 | International Business Machines Corporation | Converting from decimal floating point into scaled binary coded decimal |
US7698352B2 (en) * | 2005-09-15 | 2010-04-13 | International Business Machines Corporation | System and method for converting from scaled binary coded decimal into decimal floating point |
US7900022B2 (en) * | 2005-12-30 | 2011-03-01 | Intel Corporation | Programmable processing unit with an input buffer and output buffer configured to exclusively exchange data with either a shared memory logic or a multiplier based upon a mode instruction |
US20070157030A1 (en) * | 2005-12-30 | 2007-07-05 | Feghali Wajdi K | Cryptographic system component |
US20080270495A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Insert/extract biased exponent of decimal floating point data |
US8190664B2 (en) * | 2007-04-26 | 2012-05-29 | International Business Machines Corporation | Employing a mask field of an instruction to encode a sign of a result of the instruction |
US8051117B2 (en) | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Shift significand of decimal floating point data |
US8051118B2 (en) * | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Composition of decimal floating point data |
US9754130B2 (en) | 2011-05-02 | 2017-09-05 | Architecture Technology Corporation | Peer integrity checking system |
US10771237B2 (en) | 2017-01-20 | 2020-09-08 | Enveil, Inc. | Secure analytics using an encrypted analytics matrix |
US11290252B2 (en) | 2017-01-20 | 2022-03-29 | Enveil, Inc. | Compression and homomorphic encryption in secure query and analytics |
US10873568B2 (en) | 2017-01-20 | 2020-12-22 | Enveil, Inc. | Secure analytics using homomorphic and injective format-preserving encryption and an encrypted analytics matrix |
US11196541B2 (en) | 2017-01-20 | 2021-12-07 | Enveil, Inc. | Secure machine learning analytics using homomorphic encryption |
US11777729B2 (en) | 2017-01-20 | 2023-10-03 | Enveil, Inc. | Secure analytics using term generation and homomorphic encryption |
US11507683B2 (en) | 2017-01-20 | 2022-11-22 | Enveil, Inc. | Query processing with adaptive risk decisioning |
US10902133B2 (en) | 2018-10-25 | 2021-01-26 | Enveil, Inc. | Computational operations in enclave computing environments |
US10817262B2 (en) | 2018-11-08 | 2020-10-27 | Enveil, Inc. | Reduced and pipelined hardware architecture for Montgomery Modular Multiplication |
US11601258B2 (en) | 2020-10-08 | 2023-03-07 | Enveil, Inc. | Selector derived encryption systems and methods |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5299262A (en) | 1992-08-13 | 1994-03-29 | The United States Of America As Represented By The United States Department Of Energy | Method for exponentiating in cryptographic systems |
US5999629A (en) | 1995-10-31 | 1999-12-07 | Lucent Technologies Inc. | Data encryption security module |
US5828590A (en) * | 1996-11-27 | 1998-10-27 | United Microelectronics Corp. | Multiplier based on a variable radix multiplier coding |
US6055553A (en) * | 1997-02-25 | 2000-04-25 | Kantabutra; Vitit | Apparatus for computing exponential and trigonometric functions |
JPH10283340A (ja) * | 1997-04-10 | 1998-10-23 | Mitsubishi Electric Corp | 演算プロセッサ |
EP0935203A3 (en) * | 1998-02-04 | 2000-05-24 | Matsushita Electric Industrial Co., Ltd. | Exponential calculation device |
US6567832B1 (en) * | 1999-03-15 | 2003-05-20 | Matsushita Electric Industrial Co., Ltd. | Device, method, and storage medium for exponentiation and elliptic curve exponentiation |
-
2000
- 2000-11-21 US US09/717,895 patent/US6745220B1/en not_active Expired - Fee Related
-
2001
- 2001-11-21 JP JP2001356452A patent/JP3930302B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002207429A (ja) | 2002-07-26 |
US6745220B1 (en) | 2004-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3930302B2 (ja) | 効率的な冪乗法および装置 | |
US7995757B2 (en) | Closed galois field combination | |
Zhang et al. | An efficient and parallel R-LWE cryptoprocessor | |
US7236589B2 (en) | Device for point compression for Jacobians of hyperelliptic curves | |
US8340295B2 (en) | High-speed cryptographic system using chaotic sequences | |
JP4699610B2 (ja) | タイミングアタック防止暗号システム | |
US20090279688A1 (en) | Closed galois field cryptographic system | |
JP2008293034A (ja) | タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置 | |
JP2005017612A (ja) | カオス発生装置、カオス発生用プログラム、カオス発生用記録媒体、擬似乱数発生装置及び暗号装置 | |
US7024560B2 (en) | Power-residue calculating unit using Montgomery algorithm | |
CN114647857A (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
JP2000132376A (ja) | 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体 | |
JP2000010479A (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
JPH11109859A (ja) | 擬似乱数発生方法および装置 | |
JP2007187908A (ja) | サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法 | |
WO2002054664A2 (en) | R-conversion encryption method and system | |
KR100340102B1 (ko) | 알에스에이 공개키 암호 고속화 장치 및 방법 | |
JP4616169B2 (ja) | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム | |
JP2024012928A (ja) | 暗号処理装置、暗号処理方法、暗号処理プログラム | |
JP7371757B2 (ja) | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法およびプログラム | |
JP2005530212A (ja) | 公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクト | |
US20140105386A1 (en) | Computing genus-2 curves using general isogenies | |
KR20090004625A (ko) | 공개 키 암호화 연산의 순서 변경 방법 | |
JP4664514B2 (ja) | 素数生成装置及びプログラム | |
JP3591857B2 (ja) | 擬似乱数生成方法及び装置、通信方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060804 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061003 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061124 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070123 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070308 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100316 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110316 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110316 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120316 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130316 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130316 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140316 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |