(57)【特許請求の範囲】
【請求項１】
データを暗号化または解読する方法であって、
該方法は、
計算デバイスが、２進数の冪指数値によって表される冪乗したデータストリングを表す値を計算するステップと、
該計算デバイスが、該計算された値を用いて、該データを暗号化または解読するステップと
を包含し、
該値を計算するステップは、
符号付きの数アルゴリズムを該２進数の冪指数値に適用して、処理された冪指数値を生成するステップと、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される該冪乗したデータストリングに対応する、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出し、記録し、該処理された冪指数値における該適合サブストリングを０および該ルックアップテーブルにおける該中間値へのポインタと置き換えて、該冪指数値の変更された再符号化されたストリング表現を生成する、ステップと、
該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを該冪指数値の変更された再符号化されたストリング表現に適用して、該再符号化された冪指数値で冪乗したデータストリングを表す値を計算するステップと
を包含する、方法。
【請求項２】
前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップは、１より大きい前記処理された冪指数値において予測された発生の頻度を有する各サブストリングについて、該テーブルにおけるエントリーを規定するステップを包含する、請求項１に記載の方法。
【請求項３】
前記処理された冪指数値は、１００ビット〜２００ビットの長さであり、前記ルックアップテーブルは、値３、５、７、９、１１、１３、１５、１７、１９、および２１を表すサブストリングに対応するエントリーを含む、請求項２に記載の方法。
【請求項４】
前記ストリング置換方法の適用は、
ａ）非０ビットが見つかるまで、より下位のビット位置から、より上位のビット位置に前記処理された冪指数値を移動し、非０ビット位置へのポインタを設定するステップと、
ｂ）前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最下位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０に設定するステップと、
ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける中間値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合サブストリングが見つからなくなるまで、ステップａ）〜ｄ）を繰り返す、請求項１に記載の方法。
【請求項５】
前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける中間値へのポインタを記録するステップは、該サブストリングが負の値を表す場合に、該中間値が負であることを示す印を該ルックアップテーブルにおける中間値へのポインタに付けるステップをさらに包含する、請求項４に記載の方法。
【請求項６】
前記ストリング置換方法の適用が反復的に行われる、請求項４に記載の方法。
【請求項７】
前記符号付きの数アルゴリズムの適用が反復的に行われる、請求項１に記載の方法。
【請求項８】
前記ストリング置換方法の適用は、
ａ）非０ビットが見つかるまで、より上位のビット位置から、より下位のビット位置に前記処理された冪指数値を移動し、非０ビット位置へのポインタを設定するステップと、
ｂ）前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最上位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０に設定するステップと、
ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける中間値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合サブストリングが見つからなくなるまで、ステップａ）〜ｄ）を繰り返す、請求項１に記載の方法。
【請求項９】
前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける中間値への前記ポインタを記録するステップは、該サブストリングが負の値を表す場合に、該中間値が負であることを示す印を該ルックアップテーブルにおける中間値へのポインタに付けるステップをさらに包含する、請求項８に記載の方法。
【請求項１０】
処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する装置であって、
該装置は、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける中間値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された冪指数値を生成する、手段と、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該処理された冪指数値で冪乗したデータストリングを表す値を計算する手段と
を含む、装置。
【請求項１１】
前記ルックアップテーブルは、値３、５、７、９、１１、１３、１５、１７、１９、および２１を表すサブストリングに対応するエントリーを含む、請求項１０に記載の装置。
【請求項１２】
コンピュータプログラム命令を含むコンピュータ読み出し可能媒体であって、該コンピュータプログラム命令は、処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する方法をコンピュータに実行させ、
該方法は、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応するそれぞれの中間値である、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおける中間値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された冪指数値を生成する、ステップと、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該冪指数値で冪乗したデータストリングを表す値を計算するステップと
を包含する、コンピュータ読み出し可能媒体。
【請求項１３】
データを暗号化または解読する方法であって、
該方法は、
計算デバイスが、冪指数値によって表される冪乗したデータストリングを表す、暗号化された値を計算するステップと、
該計算デバイスが、該計算された値を用いて、該データを暗号化または解読するステップと
を包含し、
該暗号化された値を計算するステップは、
符号付きの数アルゴリズムを該冪指数値に適用して、処理された冪指数値を生成するステップと、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応する、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出し、記録し、該処理された冪指数値における該適合サブストリングを０および該ルックアップテーブルにおける該中間値へのポインタと置き換えて、該冪指数値の変更された再符号化されたストリング表現を生成する、ステップと、
該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを該冪指数値の変更された再符号化されたストリング表現に適用して、該データストリングを表す暗号化された値を計算するステップと
を包含する、方法。
【請求項１４】
前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップは、１より大きい前記処理された冪指数値において予測された発生の頻度を有する各サブストリングについて、該テーブルにおけるエントリーを規定するステップを包含する、請求項１３に記載の方法。
【請求項１５】
前記２進数の冪指数値は、１００ビット〜２００ビットの長さであり、前記ルックアップテーブルは、値３、５、７、９、１１、１３、１５、１７、１９、および２１を表すサブストリングに対応するエントリーを含む、請求項１４に記載の方法。
【請求項１６】
前記ストリング置換方法の適用は、
ａ）非０ビットが見つかるまで、より下位のビット位置から、より上位のビット位置に前記処理された冪指数値を移動し、非０ビット位置へのポインタを設定するステップと、
ｂ）前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最下位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０に設定するステップと、
ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合値が見つからなくなるまで、ステップａ）〜ｄ）を繰り返す、請求項１３に記載の方法。
【請求項１７】
前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値へのポインタを記録するステップは、該サブストリングが負の値を表す場合に、値が負であることを示す印を該ルックアップテーブルにおける値へのポインタに付けるステップをさらに包含する、請求項１６に記載の方法。
【請求項１８】
前記ストリング置換方法の適用は、
ａ）非０ビットが見つかるまで、より上位のビット位置から、より下位のビット位置に前記処理された冪指数値を移動し、該非０ビット位置へのポインタを設定するステップと、
ｂ）前記ルックアップテーブルにおける各サブストリングと、該ポインタによって示される位置における、最上位ビットを有する該処理された冪指数値のサブストリングとを比較して、最長適合サブストリングを識別するステップと、
ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０に設定するステップと、
ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値へのポインタを記録するステップと
を包含し、
該処理された冪指数値において適合値が見つからなくなるまで、ステップａ）〜ｄ）を繰り返す、請求項１３に記載の方法。
【請求項１９】
前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値へのポインタを記録するステップは、該サブストリングが負の値を表す場合に、値が負であることを示す印を該ルックアップテーブルにおける値へのポインタに付けるステップをさらに包含する、請求項１８に記載の方法。
【請求項２０】
２進数の冪指数値によって表される冪乗したデータストリングを表す暗号化された値を計算することによって、該データストリングを暗号化する装置であって、
該装置は、
符号付きの数アルゴリズムを該２進数の冪指数値に適用して、処理された冪指数値を生成する手段と、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された冪指数値を生成する、手段と、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該データストリングを表す暗号化された値を計算する手段と
を含む、装置。
【請求項２１】
前記ルックアップテーブルは、値３、５、７、９、１１、１３、１５、１７、１９、および２１を表すサブストリングに対応するエントリーを含む、請求項２０に記載の装置。
【請求項２２】
コンピュータプログラム命令を含むコンピュータ読み出し可能媒体であって、該コンピュータプログラム命令は、２進数の冪指数値によって表される冪乗したデータストリングを表す値を計算することによってデータストリングを暗号化する方法をコンピュータに実行させ、
該方法は、
符号付きの数アルゴリズムを該２進数の冪指数値に適用して、処理された冪指数値を生成するステップと、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築するステップであって、該ルックアップテーブルにおける各エントリーは、それぞれのサブストリングによって表される冪乗した該データストリングに対応するそれぞれの中間値である、ステップと、
ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおける該中間値へのポインタを記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された冪指数値を生成する、ステップと、
乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該データストリングを表す暗号化された値を計算するステップと
を包含する、コンピュータ読み出し可能媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概して、コンピュータ上で実現される冪乗法に関し、より具体的には、より高速かつコンピュータで実現される他の冪乗法よりメモリの要求が低い冪乗法に関する。
【０００２】
【従来の技術】
コンピュータシステムを利用する、通信および格納用のデータ暗号が当該技術分野において周知である。データの暗号化は、暗号化されるデータに暗号を適用することによって達成される。暗号は、暗号器および受信器（「対称暗号化」方式）とってのみ既知であってもよいし、秘密に保持される暗号に結合された広く公知の暗号の組合せ（「公開鍵」方式）であってもよい。
【０００３】
より一般的な方法として、暗号法の「公開鍵」システムなどがある。このシステムは、使用が容易であり、比較的解読されにくいので、一般的である。これらの方法は、大きな冪指数（すなわち、数百ビット以上の冪指数）を用いる複雑な数学式を利用して、認証されていない解読をより困難にする。
【０００４】
この方法の一例として、ＲＳＡ方法がある。この方法は、開発者のＲｉｖｅｓｔ、Ｓｈａｍｉｒ、Ａｄｌｅｍａｎの名前から名付けられた。ＲＳＡ方法は、「ＰＫＣＳ＃１：ＲＳＡ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｓｐｅｃｉｆｉｃａｔｉｏｎｓ  Ｖｅｒｓｉｏｎ  ２．０」という名称のＲＦＣ−２４３７に、より詳細に記載されている。
【０００５】
ＲＳＡ公開鍵は、２つの成分からなる負でない整数である。係数ｎと、公開冪指数ｅであり、両方とも負でない整数である。有効なＲＳＡ公開鍵において、係数ｎは、２個の奇数の素数ｐおよびｑの積であり、公開冪指数ｅは、ｇｃｄ（ｅ，λ（ｎ））＝１を満たす３からｎ−１の間の整数である。ここで、λ（ｎ）＝ｌｃｍ（ｐ−１，ｑ−１）であり、ｇｃｄ（ｘ，ｙ）は、ｘおよびｙの最大公約数であり、ｌｃｍ（ｘ，ｙ）は、ｘおよびｙの最小公倍数である。
【０００６】
ＲＳＡ法は、以下の式を解くことを含む。
【０００７】
ｃ＝ｍe  ｍｏｄ  ｎ
ただし、（ｎ，ｅ）は、ＲＳＡ暗号公開鍵であり、ｍは、０からｎ−１の間の整数の、表されるメッセージであり、ｃは、冪乗法および法分割（ｍｏｄｕｌｏ  ｄｉｖｉｓｉｏｎ）の暗号化された結果である。
【０００８】
メッセージは、ｍ＝ｃd  ｍｏｄ  ｎを計算することによって、受信者によって解読される。ただし、ｄは、秘密冪指数である。従って、メッセージの符号化と復号との両方において冪乗法が用いられる。
【０００９】
他の一般的な暗号化の方法として、Ｔ．ＥｌＧａｍａｌによって提案された公開鍵暗号法（ＰＫＣ）がある。この方法によると、素数ｐが選択され、ｐの原始根ｇが選択される。ユーザＵは、任意の数ｕを選択し、ｇu＝α  ｍｏｄ  ｐを計算する。ただし、αは、ｐを法とするｕ乗のｇの剰余である。ユーザＶは、任意の数ｖを選択し、β＝ｇｖｍｏｄ  ｐを計算する。当事者間で剰余αとβを交換し、それぞれ、共通鍵値を計算する。ユーザＵについては、ｋ＝βu  ｍｏｄｕｌｏ  ｐであり、ユーザＶについては、ｋ＝αｖ  ｍｏｄｕｌｏ  ｐである。その後、暗号化されるデータは、データを変換するためにｋを用いて、例えば、データおよびｋの排他的論理和を形成することによって、算術に基づいて処理される。同じ演算が用いられて、データを解読する。再度、冪乗法が、メッセージ送信者とメッセージ受信者との両方によって用いられて、データの暗号化または解読に用いられた鍵が計算される。
【００１０】
しかし、非常に大きい冪指数値は、必要な乗算の数、および／またはオペレーションを行うために用いられるコンピュータメモリの量に関して、ユーザに対価を要求する。これらのタイプの乗算演算は、乗算される値が、プロセッサのビット長を越え、多重精度演算として実現されるので、高くつく。
【００１１】
ｅ乗した数は、常に、その数自体を冪指数によって表される回数だけ乗算することによって、計算され得る。数学的には以下のように表される。
【００１２】
ａe＝ａ＊ａ＊ａ．．．ｅ回
他の方法として、大幅に速い乗算連鎖アルゴリズムがある。この場合、ｅ＝ｅn-1ｅn-2．．．ｅ1ｅ0を、ｎビット冪指数ｅi∈｛０，１｝、０≦ｉ≦ｎ−１、およびｅn-1＝１となるようにする。アルゴリズムは、ｐ1＝ａで開始し、以下のように続く。
【００１３】
ｅn-1-i＝０の場合はｐi+1＝ｐi2、または、ｅn-1-i＝１の場合はａ＊ｐi2、ただし、１≦ｉ≦ｎ−２
この技術において、基数値の有効な冪指数を生成するために必要な、乗算の回数またはコンピュータメモリの量のいずれかを低減する、いくつかの方法が公知である。
【００１４】
乗算の回数を低減することが公知である１つの方法として、符号付きの数字アルゴリズムがある。この方法において、冪指数は、値０および１を含むビットストリングとして表される。ビットストリング内で、１のシーケンス（または「ラン」）は、０のシーケンスによって置き換えられ、１が、ランの最上位ビット（ＭＳＢ）位置に対して、次の上位のビット位置に配置され、「−１」が、ランの最下位ビット（ＬＳＢ）位置に挿入される。このようにして、冪指数ビットストリングが効率的に記録され、予測される乗算の回数は、ｎ／２からｎ／３に低減される。
【００１５】
当該技術において、メモリを利用することによって乗算の回数を低減することが公知である他の方法として、「スライディングウィンドウ法」がある。この方法において、冪指数は、また、０ビットおよび１ビットのストリングとして表される。所定の固定長のサブストリングは、特定の冪乗した基数を含む基準ルックアップテーブルから取り出され、検査される。検査中のサブストリングは、ビットストリングの数値によって表される冪乗した基数をルックアップするための基準値として用いられ、パターンに対応するビットストリングにおける最下位ビットの位置を基準として、中間値が格納される。冪指数ビットストリングの移動の後、中間値は、乗算連鎖アルゴリズムを用いて共に乗算されて、元の冪指数値で冪乗した基数が決定される。
【００１６】
【発明が解決しようとする課題】
コンピュータに基づく通信の暗号化および解読手段は、当該技術において周知である。しかし、最先端の暗号化および解読方法は、コンピュータ使用サイクルまたはメモリが制限されている小さいデバイスに用いるためには、時間がかかり過ぎるか、メモリを多く使い過ぎるか、またはその両方である。従って、コンピュータサイクル、および消費されるメモリ量の両方に関して、より効率的な冪乗法の需要がある。
【００１７】
【課題を解決するための手段】
本発明の方法は、２進数の冪指数値によって表される冪乗したデータストリングを表す値を計算する方法であって、符号付きの数アルゴリズムを該２進数の冪指数値に適用して、処理された冪指数値を生成する工程と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される該冪乗したデータストリングに対応する、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出して、再符号化し、該処理された冪指数値における該適合サブストリングを０および該ルックアップテーブルへの基準と置き換えて、変更された該冪指数値の再符号化されたストリング表現を生成する工程と、該ルックアップテーブルを用いて乗算二乗連鎖アルゴリズムを該再符号化された冪指数値に適用して該再符号化された冪指数値で冪乗したデータストリングを表す値を計算する工程とを包含する。
【００１８】
本発明の方法は、前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程が、１より大きい前記処理された冪指数値において予測された頻度で発生する各サブストリングについて、該テーブルにおけるエントリーを規定する工程を包含してもよい。
【００１９】
本発明の方法は、前記処理された冪指数値が、１００ビット〜２００ビットの長さであり、前記ルックアップテーブルが、値３、５、７、９、１１、１３、１５、１７、１９、および２１の値を表すサブストリングに対応するエントリーを含んでもよい。
【００２０】
本発明の方法は、前記ストリング置換方法の適用が、ａ）より下位のビット位置から、より上位のビット位置へと、非０ビットが見つかるまで前記処理された冪指数値を移動して、非０ビット位置にポインタを設定する工程と、ｂ）前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最下位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０にする工程と、ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程と、を包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程ａ）〜ｄ）を繰り返してもよい。
【００２１】
本発明の方法は、前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値にポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、該値が負であることを示す印を付ける工程をさらに包含してもよい。
【００２２】
本発明の方法は、前記ストリング置換方法の適用が反復的に行われてもよい。
【００２３】
本発明の方法は、前記符号付きの数アルゴリズムの適用が反復的に行われてもよい。
【００２４】
本発明の方法は、前記ストリング置換方法の適用が、ａ）より上位のビット位置から、より下位のビット位置へと、非０ビットが見つかるまで前記処理された冪指数値を移動して、非０ビット位置にポインタを設定する工程と、ｂ）前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最上位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０にする工程と、ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程と、を包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程ａ）〜ｄ）を繰り返してもよい。
【００２５】
本発明の方法は、前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値に前記ポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、値が負であることを示す印を付ける工程をさらに包含してもよい。
【００２６】
本発明の装置は、処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する装置であって、符号付きの数アルゴリズムを該処理された冪指数値に適用して、処理された冪指数値を生成する手段と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける値に、ポインタを記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された該冪指数値を生成する、手段と、該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、該処理された冪指数値で冪乗したデータストリングを表す値を計算する手段とを含む。
【００２７】
本発明の方法は、前記ルックアップテーブルが、値３、５、７、９、１１、１３、１５、１７、１９、および２１の値を表すサブストリングに対応するエントリーを含んでもよい。
【００２８】
本発明のコンピュータ読み出し可能媒体は、処理された冪指数値によって表される冪乗したデータストリングを表す値を計算する方法をコンピュータに実行させるコンピュータプログラム命令を含む、コンピュータ読み出し可能媒体であって、該方法が、符号付きの数アルゴリズムを該処理された冪指数値に適用して、処理された冪指数値を生成する工程と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、中間値である、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおけるポインタに記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された該冪指数値の再符号化されたストリング表現を生成する、工程と、乗算二乗連鎖アルゴリズムを変更された冪指数値に適用して、該冪指数値で冪乗したデータストリングを表す値を計算する工程とを包含する。
【００２９】
本発明の方法は、基数値の冪指数を表すデータストリングを、暗号化／解読演算の一部として、処理する方法であって、一組の所定の値によって指数付けされたルックアップテーブルを生成する工程であって、各値が、それぞれ異なる冪指数値で冪乗した基数を表す、工程と、符号付きの数アルゴリズムを用いて、再符号化して、「１」のランを、最上位ビットのすぐ上のビット位置で「１」によって区切られ、ランの最下位ビット位置として「−１」を有する、「０」のランの埋め込まれたパターンに低減する工程と、ストリング置換方法を利用する冪指数からサブストリングパターンを抜き出し、該抜き出されたサブストリングパターンを該所定の値と比較して該ルックアップテーブルからそれぞれの値を中間値として入手して、該所定の値に対応するサブストリングを０にする工程と、該中間値を格納する工程と、該ビットストリングにおける任意の残りのビットを、乗算連鎖アルゴリズムを用いて該格納された中間値で処理して、冪指数で冪乗した基数の値を決定する工程とを包含する。
【００３０】
本発明の方法は、冪指数値によって表される冪乗したデータストリングを表す、暗号化された値を計算することによって、データストリングを暗号化する方法であって、符号付きの数アルゴリズムを該冪指数値に適用して、処理された冪指数値を生成する工程と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する中間値を、該ルックアップテーブルから取り出して、再符号化し、該処理された冪指数値における該適合サブストリングを０および該ルックアップテーブルへの基準と置き換えて、該冪指数値の変更された再符号化されたストリング表現を生成する、工程と、該ルックアップテーブルを用いて、乗算二乗連鎖アルゴリズムを再符号化された値に適用して、該暗号化されたデータストリングを表す値を計算する工程とを包含する。
【００３１】
本発明の方法は、前記処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程が、１より大きい前記処理された冪指数値において予測された頻度で発生する各サブストリングについて、該テーブルにおけるエントリーを規定する工程を包含してもよい。
【００３２】
本発明の方法は、前記２進数の冪指数値が、１００ビット〜２００ビットの長さであり、前記ルックアップテーブルが、値３、５、７、９、１１、１３、１５、１７、１９、および２１の値を表すサブストリングに対応するエントリーを含んでもよい。
【００３３】
本発明の方法は、前記ストリング置換方法の適用が、ａ）より下位のビット位置から、より上位のビット位置へと、非０ビットが見つかるまで前記処理された冪指数値を移動して、非０ビット位置にポインタを設定する工程と、ｂ）前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最下位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０にする工程と、ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程と、を包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程ａ）〜ｄ）を繰り返してもよい。  本発明の方法は、前記最長適合サブストリングに対応する、前記ルックアップテーブルにおける値にポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、値が負であることを示すマーキングする工程をさらに包含してもよい。
【００３４】
本発明の方法は、前記ストリング置換方法の適用が、ａ）より上位のビット位置から、より下位のビット位置へと、非０ビットが見つかるまで前記処理された冪指数値を移動して、該非０ビット位置にポインタを設定する工程と、ｂ）前記ルックアップテーブルにおける各サブストリングを、該ポインタによって示される位置での最上位ビットを有する該処理された冪指数値のサブストリングと比較して、最長適合サブストリングを識別する工程と、ｃ）該適合サブストリングにおける非０ビットに対応する、該処理された冪指数値における全ての非０ビットを０にする工程と、ｄ）該処理された冪指数値におけるサブストリングの最下位ビット位置において、該最長適合サブストリングに対応する、該ルックアップテーブルにおける値にポインタを記録する工程とを包含する方法であって、該処理された冪指数値において適合値が見つからなくなるまで、工程ａ）〜ｄ）を繰り返してもよい。
【００３５】
本発明の方法は、前記最長適合サブストリングに対応する、ルックアップテーブルにおける値にポインタを記録する工程が、該サブストリングが負の値を表す場合に、該ルックアップテーブルにおける値へのポインタに、値が負であることを示す印を付ける工程をさらに包含してもよい。
【００３６】
本発明の装置は、２進数の冪指数値によって表される冪乗したデータストリングを表す暗号化された値を計算することによって、データストリングを暗号化する装置であって、符号付きの数アルゴリズムを該２進数の冪指数値に適用して、処理された冪指数値を生成する手段と、該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルであって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗したデータストリングに対応する、ルックアップテーブルと、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における適合サブストリングに対応する、該ルックアップテーブルにおける値に、ポインタを記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された該冪指数値を生成する、手段と、乗算二乗連鎖アルゴリズムを該変更された冪指数値に適用して、データストリングを表す暗号化された値を計算する手段とを含む。
【００３７】
本発明の方法は、前記ルックアップテーブルが、値３、５、７、９、１１、１３、１５、１７、１９、および２１の値を表すサブストリングに対応するエントリーを含んでもよい。
【００３８】
本発明のコンピュータ読み出し可能媒体は、２進数の冪指数値によって表される冪乗したデータストリングを表す値を計算することによってデータストリングを暗号化する方法を、コンピュータに行わせる、コンピュータプログラム命令を含む、コンピュータ読み出し可能媒体であって、該方法が、符号付きの数アルゴリズムを該２進数の冪指数値に適用して、処理された冪指数値を生成する工程と、
該処理された冪指数値において生じる可能性が高いサブストリングのルックアップテーブルを構築する工程であって、該ルックアップテーブルにおける各エントリーがそれぞれのサブストリングによって表される冪乗した該データストリングに対応する、中間値である、工程と、ストリング置換方法を適用して、該処理された冪指数値を移動し、該処理された冪指数値における該適合サブストリングに対応する、ルックアップテーブルにおけるポインタを該値に記録し、該処理された冪指数値における該適合サブストリングを０と置き換えて、変更された該冪指数値の再符号化されたストリング表現を生成する、工程と、乗算二乗連鎖アルゴリズムを変更された冪指数値に適用して、該データストリングを表す暗号化された値を計算する工程とを包含する。
【００３９】
本発明は、新規な方法で、冪乗法のための２つの再符号化方法を結合する。第１の方法は、「符号付き数アルゴリズム」であり、第２の方法は、以下で、ストリング置換方法と呼ばれる、改良された「スライディングウィンドウ」方法である。これら２つの方法の組合せは、用いられるコンピュータサイクルの数がより少なく、従来技術よりメモリが少ない状態で、データが暗号化および解読されることを可能にする。
【００４０】
本発明は、基数および冪指数の両方が非常に大きい数（１００ビットから数千ビットの間の任意の長さ）であり得る基数に基づいて、冪乗法演算を行う暗号化／解読システムにおいて実施される。冪指数は、ビットストリングとして表され得る。その後、ビットストリングは、符号付き数アルゴリズムを用いて再符号化されて、最上位ビットのすぐ上のビット位置において「１」によって区切られ、ランの最下位ビット位置として「−１」を有する「０」のランのパターンによってそのビットストリングを置き換えることによって、「１」のランが消去される。所定のサブストリングパターンが、スライディングウィンドウ方法に類似する様態で、冪指数から取り出される。取り出されたストリングは、比較的少ない数の所定のサブストリングについて、冪指数値を含む、以前に構築されたルックアップテーブルと比較される。冪指数における各非０ビットで、その位置で終了するこのようなサブストリングのうち、最も長いサブストリングがルックアップテーブルにおいて見受けられ、冪指数における、対応するビットは、最も右側のビットを除いて０に設定される。このビット位置には、ルックアップテーブル内の対応するエントリーに基準が格納される。ルックアップテーブルから戻る値は、サブストリングによって表される冪乗した基数値である。冪指数ビットは、このようなサブストリング全てが抜き取られ、ルックアップテーブルへの対応する基準が格納されるまで、右から左に（すなわち、最下位ビット位置から最上位ビット位置に）通過される。冪指数における残りのビット、および中間値は、その後、乗算連鎖アルゴリズム用いて処理されて、冪指数で冪乗した基数値が決定される。
【００４１】
本発明の他の特徴および利点は、本発明の好適な実施形態の以下の詳細な説明において述べられるか、または、明らかである。
【００４２】
【発明の実施の形態】
上記の要旨、および以下の本発明の例示的な実施形態の詳細な説明は、添付の図面を参照しながら読まれることによって、よりよく理解される。本発明を例示するため、本発明の例示的な実施形態をいくつか示す。しかし、本発明が、厳密に、示している配置および手段に限定されるものではないことが理解されるべきである。
【００４３】
図１は、例示的な暗号化／解読プロセスの演算を示すフローチャートである。工程１において、ユーザは、暗号化されるデータまたはメッセージを選択する。工程２で、ユーザは、データの符号化またはデータの符号化に用いられる鍵の値の決定に冪乗法を用いる暗号化方法を用いて、データまたはメッセージを暗号化する。工程２では、また、暗号化されたデータが、受信者に転送される。次に、工程３で、受信者が暗号化されたデータまたはメッセージを受け取り、工程４で、受信者は、冪乗法を用いる解読方法を用いて、暗号化されたデータを解読する。
【００４４】
本発明は、改良された冪乗法である。符号付きの数の方法に、ストリング置換方法および改良されたスライディングウィンドウ方法が組み合わされて、ストリング置換方法よりも用いるメモリが少なく、ストリング置換方法および符号付き数の方法の両方よりも速い冪乗法が、生成される。これらの２つの方法の組合せは、自明ではない。なぜなら、符号付き数のアルゴリズムの適用は、「１」または「−１」によって区切られる「０」のランに、ストリングパターンを低減し、これによってストリング置き換え法の有効性が打ち消されるからであり、「ウィンドウ」が殆ど「０」をフレームするからである。反対に、符号付き数アルゴリズムの適用の前に、ウィンドウを用いるビットストリングを移動することは、「１」のランを全てビットストリングから取り除き、符号付き数アルゴリズムの適用を不必要なものにする。本明細書中で開示される方法は、「ストリング置換方法」を利用することによって、これらの方法を組み合せて、符号付き数アルゴリズムの適用によって生じる所定のビット構造のみに鍵をかける。
【００４５】
アルゴリズムの演算を、図２を参照しながら説明する。図２の工程１０で、基数がメモリに格納される。この基数は、暗号化されるメッセージである。次に、工程２０で、基数値の暗号化において生じる最確値に基づいて、ルックアップテーブルが構築される。これらの最確値は、以下で説明するように、多くの解析によって最も良好に決定される。ルックアップテーブルは、以下で説明する再符号化において生じる可能性の高いストリングであるルックアップフィールド、および、ルックアップフィールドによって表される冪乗した基数である基準値からなる。ルックアップテーブルの代表的なフォーマットを表１に示す。
【００４６】
冪指数ビットストリングを移動する戻り値のルックアップテーブルの例
【００４７】
【表１】
0003930302.tif 000002
この表において、「＋」は数「１」を表し、「−」は数「−１」を表す。
【００４８】
工程３０で、冪指数は、冪指数の２進数値のストリング形式の表現であるビットストリングとしてメモリに格納される。その後、工程４０で、ビットストリングは、以下に説明するように、符号付き数アルゴリズムを用いて、処理された２進数の冪指数値を生成することによって再符号化される。
【００４９】
冪指数ビットストリングは、最も右のビットから開始して、非０値が見つかるまで移動され、ポインタがその位置に置かれる。その点から、ストリングは、０ビットが見つかるまで移動され、第２のポインタが０ビットの位置に置かれる。ポインタ間の距離が１より大きい（すなわち、「１」のランが見つかった）場合、「１」が第２のポインタで挿入され、ポインタ間の全ての「１」が「０」によって置換され、最も右のポインタによって示される「１」は、「−１」によって置換される。第１のポインタは、第２のポインタの位置（最も最近のサブストリングの終了位置のすぐ左の新たな開始位置）に置かれ、冪指数ビットストリング全体が移動され、処理された２進数の冪指数値に再符号化されるまで、プロセスがまた適用される。
【００５０】
表２に、上述したように、符号付き数アルゴリズムの適用の後に、冪指数において所定のビットパターンが発生する予測頻度を示す。結果は、１０００のランダムな最大で１６０ビットの長さの冪指数に基づいて示され、特別なビット構造の発生を表す。ルックアップテーブルは、１．０より大きい発生の予測頻度を有する値からのみ、構築され得る。なぜなら、１．０より小さい発生の予測頻度を有する値は、アクセスされる可能性がより低く、テーブルを構築する時間が回復される可能性は低いからである。
【００５１】
【表２】
0003930302.tif 000003
従って、本発明による、前もって計算される冪指数のテーブルは、１０個の値、ｍ3、ｍ5、ｍ7、ｍ9、ｍ11、ｍ13、ｍ15、ｍ17、ｍ19、およびｍ21を含む。対応する負の値は、同様に計算され、格納されるか、または、以下で説明するように、負の値は、冪指数ビット位置における符号ビットを用いることによって処理され得る。最終的な冪指数が計算される乗算二乗連鎖アルゴリズムの間、これらの二進数の値の各々によって表される複数の乗算が、識別されたストリングのＬＳＢに対応する冪指数のビットが処理される場合、累積された値を識別されたストリングについて格納された値で乗算する１つの乗算によって置き換えられる。格納された値の計算自体が、１つ以上の乗算の演算を表すので、符号付き数アルゴリズムを用いてストリングが処理された後の冪指数へのストリング置き換えアルゴリズムの適用は、変更された冪指数において１度より多く発生する可能性の高いストリングについてしか有益でない。
【００５２】
表２のデータに基づいて、最大で１６０ビットの長さの冪指数について構築されるルックアップテーブルは、上記のストリングをルックアップ値として有効に用い得、工程１０において格納される、対応する冪乗した基数を戻す。テーブルは、奇数乗のみを用いて構築されるが、これは、ストリング置換方法が、ウィンドウを非０ビットでフレーミングすることによって、奇数の冪指数のみが用いられることを確実にするからである。
【００５３】
図３において詳細に示すように、工程５０で、処理された２進数値（２進数ではなくなっている）は、以下のように、ストリング置換方法を用いて移動される。
【００５４】
工程５１で、処理された２進数の冪指数値の最も右側の位置にポインタが置かれる。工程５２で、アルゴリズムは、非０ビットが見つかるまで、ビット位置ごとに、処理された２進数の冪指数値を移動する。工程５２で非０ビットが見つからない場合、工程５３に示すように、移動は終了する。工程５２で非０ビットが見つかる場合、第１のポインタは、識別されたサブストリングの最も右側の非０（±１）数を示す。工程５４では、第２のポインタは、最も左側の非０数の位置を示すように置かれる。工程５５では、第２のポインタは、第１のポインタに対応するＬＳＢを有する処理された２進数の冪指数値のより短いサブストリングを連続的に比較することによって右に移動され、次いでルックアップテーブルと比較されて、ポインタで終了する処理された２進数の冪指数値のサブストリングに適合する最も長い基準値を決定する。工程５６において、アルゴリズムは、適合するものがあるかどうかを判定する。工程５６が、適合するものがあることを示す場合、工程５７では、適合サブストリングの非０数の全ては、０に設定される。工程５８では、アルゴリズムは、サブストリングによって表される冪指数で冪乗した基数である、ルックアップテーブルに格納されている基準値の指数を、その冪指数における適合サブストリングのＬＳＢの位置に挿入する。工程５８または工程５６の後、適合が見つからない場合には、上述した再符号化および置換方法が、第１のポインタの左側の次の非０ビット位置から開始して、再度適用される。工程５６では、ルックアップテーブルにおいて適合が見つからない場合には、第１のポインタでの±１ビットは、変更されないまま残り、次の最も右側の±１が検査されて、ルックアップテーブルのエントリーに適合する、このビットを含む任意のサブストリングがあるかどうかが判定される。このプロセスは、処理された２進数の冪指数値全体が移動され、適合サブストリングが「０」およびルックアップテーブルの基準によって置き換えられるまで、継続される。ルックアップテーブルのサイズを２分の１まで低減するため、正のサブストリング値のみが格納され得る。負のサブストリングは、正のエントリーに基準を挿入し、値が負であることを示すように基準に印を付けることによって示される。
【００５５】
符号付き数方法、ストリング置換方法のいずれか、または両方が、反復プロセスとして実現され得ることが考慮される。この代替例において、１のサブストリング、または冪指数における適合サブストリングを認識し、処理した後、プロセスは、プロセス自体内で、呼び出されて、次のサブストリングを認識し、処理する。反復プロセスの速度を上げるために、プロセスは、現在のサブストリングの冪指数値におけるＭＳＢ位置を表すパラメータを含み得る。このパラメータは、次のインスタンシエーションにおけるプロセスの開始位置である。初期的には、この値は０に設定される。
【００５６】
工程６０において、ルックアップテーブルにおける指数を有する、変更された２進数の冪指数、０ビットおよび残りの±１数は、乗算二乗連鎖アルゴリズムを用いて処理され、元の冪指数で冪乗した基数値である結果が得られる。乗算二乗連鎖アルゴリズムが、任意の格納されたテーブル指数で、変更された冪指数に適用される場合、対応するテーブル値は、指数が格納されたビット位置に対応する、アルゴリズムにおける工程で累積された値を乗算する。格納された指数が、冪指数のＭＳＢである場合、アルゴリズムは、累積された値として、ルックアップテーブルからの対応する値で開始する。冪指数に残る全てのビットは、乗算二乗連鎖アルゴリズムが符号付き数変換の実行後に適用される場合と同じ方法で処理されるが、指数が負であることが示される場合、乗算演算ではなく除算演算が行われる点が異なる。その後、工程７０において、この結果の値が、さらなるプロセスのために、暗号化アルゴリズムに戻される。
【００５７】
冪指数がＬＳＢ位置からＭＳＢ位置まで移動されていることを、アルゴリズムが示すので、符号付き数プロセス、およびアルゴリズムのストリング置き換え部分の両方において、これらの工程のいずれか、または両方において、冪指数がＭＳＢ位置からＬＳＢ位置まで移動され得ることが考慮される。
【００５８】
本発明を例示するために、一例を挙げる。
【００５９】
キャラクター「６」が暗号化される。実際には、冪指数は１００ビット以上であるが、この例で選択される冪指数は５５である。キャラクター「６」は、６の整数値を有し、０００００１１０の２進数表現を有する。従って、「６」55≒６．２８５１９５２１３５６６００５ｅ＋４２である。
【００６０】
５５は、「１１０１１１」のビットストリングとして表される。
【００６１】
基数「６」は、数値６としてメモリに格納される。ルックアップテーブルは、上述したように、この例における冪指数は、１６０ビット（表２を作成するために用いられる値）より少ないので、奇数の冪指数の値６3〜６21について構築される。
【００６２】
このストリングに符号付きアルゴリズムを適用して、ポインタが、まず、最も右側の「１」に置かれる。ビットストリングを、第２のポインタが、「０」に出会うまで、左側へと位置ごとに移動する。その後、第２のポインタは、サブストリング「１１１」のすぐ左の「０」ビットの位置に置かれる。これは、「＋００−」に変換され、中間ストリング「１１＋００−」が生じる。そのアルゴリズムが、第２のポインタのビット位置（「＋」）を示すように、第１のポインタをリセットし、その位置からビットストリングの移動を継続する。上述したように、ビットストリングは、「１１＋」に適合する「０」またはストリングの末端（すなわち、ビットストリングのＭＳＢより上位の位置）に出会うまで、第２のポインタによって、左側へと位置ごとに移動され、「＋００−」によって置き換えられ得る。得られる処理された２進数の冪指数値は、「＋００−００−」＝６４−８−１＝５５である。従って、乗算演算の回数は、４から２に低減される。
【００６３】
図３に詳細に示すように、乗算連鎖アルゴリズムにおいて用いられる、ルックアップテーブルから値を取り出すストリング置換方法の適用が、次の工程である。ポインタは、最も右側の非０値、「−」に置かれる。この例においては、ルックアップテーブルにおける最も大きい適合ストリングは、１００７７６９６（６の９乗である）のルックアップテーブル値に対応する、「−００−」であり、値が負であることを示すように指数には印が付けられている。サブストリング「−００−」は、「０」によって置き換えられ、中間ストリング「＋０００００（−９）」を残す。ただし、（−９）は、ルックアップテーブルの９エントリーへのポインタを表し、値が負であることを示す。
【００６４】
その後、中間ストリングは、非０ビットが見つかるまで、処理されていない位置から、位置ごとに移動され、ポインタはその位置に置かれる。この例においては、適合がない。乗算連鎖アルゴリズムは、値＋０００００（−９）を用いて、冪乗値を計算する。この例においては、値６は、再符号化される冪指数における６ビット位置ごとに１回ずつ、６回二乗されて、約６．３３ｅ＋４９の値を生成する。ビット位置０で、得られる値は、ルックアップテーブル値１００７７６９６によって除算されて、得られる冪指数値（すなわち、６64／１００７７６９６≒６．２８ｅ＋４２）を生成する。従って、改良されたストリング置換演算の適用は、さらに、２回の乗算演算から１回の乗算演算に低減される。
【００６５】
暗号化方法は、素数を法とする冪指数値を決定し、暗号化されたメッセージにおいて、この値をキャラクター「６」の代わりに用いる。
【００６６】
本発明は、方法として説明されてきたが、装置、例えば、特定用途向け集積回路（ＡＳＩＣ）または他の専用データ処理回路の一部として、実現されることも考慮され得る。さらに、コンピュータ読み出し可能媒体上のコンピュータソフトウェア、例えば、固体メモリまたは磁気メモリ、磁気ディスクまたは光学ディスク、テープまたはメモリカード、あるいは、無線周波数または音響周波数媒体において実現され得る。
【００６７】
暗号化／解読方法は、基数および冪指数の両方が、大きい数（すなわち、１００から数千ビットの任意の長さ）である基数に対して冪乗法演算を行う。冪指数は、ビットストリングとして表される。その後、ビットストリングは符号付きの数アルゴリズムを用いて再符号化される。所定のサブストリングパターンが、その後、ストリング置換方法を用いることによって、冪指数から抜き出され、比較的小さい数の所定のサブストリングについてのみ冪指数を含む、以前に構築されたルックアップテーブルと比較される。ルックアップテーブルから戻った値は、サブストリングによって表される冪乗した基数値である。冪指数内の各適合サブストリングのポインタが格納される。その後、冪指数における残りのビット、および中間値が乗算連鎖アルゴリズムを用いて処理されて、冪指数で冪乗した基数の値を決定する。
【００６８】
本発明を、例示的な実施形態に関して説明してきたが、添付の特許請求の範囲内の変形例と共に、上述したように実施され得ることも考慮される。
【００６９】
【発明の効果】
本発明のデータストリングを表す値を計算する方法は、符号付きの数アルゴリズムを２進数の冪指数値に適用して処理された冪指数値を生成する工程と、ストリング置換方法を適用して該処理された冪指数値を移動し、処理された冪指数値における適合サブストリングに対応する中間値をルックアップテーブルから取り出して再符号化し、処理された冪指数値における適合サブストリングを０およびルックアップテーブルへの基準に置換して変更さたストリング表現を生成する工程と、ルックアップテーブルを用いて乗算二乗連鎖アルゴリズムを再符号化された冪指数値に適用して再符号化された冪指数値で冪乗したデータストリングを表す値を計算する工程とを包含する。これによってコンピュータに基づく通信の暗号化および解読手段を効率的にすることができ、コンピュータ使用サイクルまたはメモリが制限されている小規模デバイスに用いることができる。
【図面の簡単な説明】
【図１】図１は、本発明の例示的な実施形態を例示するフローチャートである。
【図２】図２は、本発明のインプリメンテーションのフローチャートである。
【図３】図３は、ルックアップテーブルからの中間値の取り出しの詳細なフローチャートである。
【図１】
0003930302.tif 000004
【図２】
0003930302.tif 000005
【図３】
0003930302.tif 000006