JP4718455B2 - 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム - Google Patents
擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム Download PDFInfo
- Publication number
- JP4718455B2 JP4718455B2 JP2006515524A JP2006515524A JP4718455B2 JP 4718455 B2 JP4718455 B2 JP 4718455B2 JP 2006515524 A JP2006515524 A JP 2006515524A JP 2006515524 A JP2006515524 A JP 2006515524A JP 4718455 B2 JP4718455 B2 JP 4718455B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- word
- value
- random number
- address
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/586—Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- 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
-
- 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/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Description
また、
「swap(S[I],S[B])」
は、S[I]とS[B]との入れ替えを意味する。
また、図25は、図24に示した「A初期化」、「B鍵スケジュール」、「Cストリーム」のそれぞれを図式化したものである。
図24、図25に示す様に、このアルゴリズムは、
「A.初期化」として内部テーブルを生成し、
「B.鍵スケジュール」として生成した内部テーブルのデータをswapし、
「C.ストリーム生成」として内部テーブルを使用して擬似乱数を生成する。
出典:Applied Cryptography, Bruce Schneier著, John Wiley & Sons, ISBN 0−471−11709−9
複数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
鍵情報を記憶する鍵メモリと、
複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、
ワードS2[I]をアクセスする第2メモリS2と、
第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する初期化部と、
鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1と第2メモリS2とに記憶する鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする。
第1メモリS1のワードの値から、第1メモリS1のアドレスを生成し、生成されたアドレスの第1メモリS1のワードの値から擬似乱数を生成する第1乱数生成部と、
第2メモリS2のワードの値から、第2メモリS2のアドレスを生成し、生成されたアドレスの第2メモリS2のワードの値から擬似乱数を生成する第2乱数生成部と、
を備えたことを特徴とする。
数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
鍵スケジュールされた値を記憶する複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、鍵スケジュールされた値を記憶する複数のワードからなり、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする。
n(1≦n≦N、Nは1以上の整数)バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
生成すべき乱数のストリーム長Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワードから構成されるメモリであって、アドレスI(Iは、0〜255の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
アドレスIとなる値を記憶する第1内部メモリと、
ワード単位の値を記憶する第2内部メモリと、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第1内部メモリの値Iを更新し、第1内部メモリの値をアドレスIとして、第1メモリS1の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第1メモリS1のアドレスIのワードS1[I]のn番目のバイトの値とをスワップし、さらに、第1内部メモリの値をアドレスIとして、第2メモリS2の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第2メモリS2のアドレスIのワードS2[I]のn番目のバイトの値とをスワップして、第1から第N番目のバイトまでスワップを繰り返し、第1メモリS1と第2メモリS2とに記憶されたワードに対して鍵スケジューリングをする鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする。
n(1≦n≦N、Nは1以上の整数)バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
生成すべき乱数のストリーム長Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワードから構成されるメモリであって、アドレスI(Iは、0〜255の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
アドレスIとなる値を記憶する第1内部メモリと、
ワード単位の値を記憶する第2内部メモリと、
固定値メモリに記憶された固定値を用いて、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する初期化部と、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第1内部メモリの値Iを更新し、第1内部メモリの値をアドレスIとして、第1メモリS1の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第1メモリS1のアドレスIのワードS1[I]のn番目のバイトの値とをスワップし、さらに、第1内部メモリの値をアドレスIとして、第2メモリS2の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第2メモリS2のアドレスIのワードS2[I]のn番目のバイトの値とをスワップして、第1から第N番目のバイトまでスワップを繰り返し、第1メモリS1と第2メモリS2とに記憶されたワードに対して鍵スケジューリングをする鍵スケジュール部と、
第2内部メモリに記憶されたワードの下位2バイトの値からアドレスI2、I3の値を生成し、
第1メモリS1の先頭ワードから最後のワードまでの各ワードS1[I1]の値と
第1メモリS1のアドレスI2のワードS1[I2]の値と
第2メモリS2のアドレスI3のワードS2[I3]の値と
を用いて擬似乱数R1を生成してバッファメモリに出力する第1乱数生成部と、
第1メモリS1のアドレスI2のワードS1[I2]の値と
第2メモリS2のアドレスI3のワードS2[I3]の値と
を演算してシフトし、シフトした値を用いて第1メモリS1のアドレスI1のワードS1[I1]の値を書き換える第1状態変更部と、
第2内部メモリに記憶されたワードの上位と下位の値を入れ替える第1入れ替え部と、
第2内部メモリに記憶されたワードの下位2バイトの値からアドレスI4、I5とする値を生成し、
第2メモリS2の先頭ワードから最後のワードまでの各ワードS2[I1]の値と
第2メモリS2のアドレスI4のワードS2[I4]の値と
第1メモリS1のアドレスI5のワードS1[I5]の値と
を用いて擬似乱数R2を生成して出力する第2乱数生成部と、
第2メモリS2のアドレスI4のワードS2[I4]の値と
第1メモリS1のアドレスI5のワードS1[I5]の値と
を演算してシフトし、シフトした値を用いて、第2メモリS2のアドレスI1のワードS2[I1]の値を書き換える第2状態変更部と、
第2内部メモリに記憶されたワードの上位と下位の値を入れ替える第2入れ替え部と、
ストリーム長メモリに記憶したストリーム長になるまで、第1乱数生成部と第1状態変更部と第1入れ替え部の動作と、第2乱数生成部と第2状態変更部と第2入れ替え部の動作とを繰り返すループ部と、
第1乱数生成部から出力される擬似乱数R1と第2乱数生成部から出力される擬似乱数R2とを入力して一時的に保持して擬似乱数ストリームとして出力するバッファメモリと、
バッファメモリに出力した擬似乱数のストリーム長が、所定の再スケジュール長になった場合に、鍵スケジュール部を動作させる再スケジュール部と
を備えたことを特徴とする。
鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成するコンピュータである擬似乱数生成装置が行う擬似乱数生成方法において、
初期化部が、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定し、
鍵スケジュール部が、鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1と第2メモリS2とに記憶し、
ストリーム生成部が、鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成する
ことを特徴とする。
鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成するコンピュータである擬似乱数生成装置に以下の(1)〜(3)の処理を実行させることを特徴とする。
(1)第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する処理
(2)鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1と第2メモリS2とに記憶する処理
(3)鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成する処理
図1〜図23を用いて実施の形態1を説明する。実施の形態1は、2つの内部テーブルを用いて擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラムに関する。
(1)生成すべき乱数のストリーム長Lを記憶するストリーム長メモリ111、
(2)固定値(後述するINI1[0]等)を記憶する固定値メモリ112、
(3)鍵情報(後述するK[0]等)を記憶する鍵メモリ113、
(4)初期値(後述する0x01、0x12345678)を入力して記憶する初期値メモリ114、
なお、ここで、初期値である0x01、0x12345678は一例にすぎず、これらの値に限定するものではない。0x01については、1バイトの値であればどのような値でもよく、また、0x12345678については、4バイトの値であればどのような値でもよい。
(5)256ワードから構成されるメモリであって、アドレスI(Iは、0〜255の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1(115)、
(6)第1メモリS1(115)と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2(116)、
(7)アドレスIとなる値を記憶する第1内部メモリ117(後述のB1)、
(8)ワード単位の値を記憶する第2内部メモリ118(後述の<B4>)
等のメモリを備える。これらのメモリは、キャッシュメモリや、フラッシュメモリや、ランダムアクセスメモリや、固定ディスクや、光ディスクにより実現することができる。
暗号化鍵Kは、鍵メモリ113が記憶する。暗号化鍵Kの長さを「Keylen」(バイト)とする。1バイト単位で、K[0]〜K[Keylen−1]と記載する。
(2)初期値IV(鍵情報の一例):
初期値IVは、鍵メモリ113が記憶する。初期値IVの長さを「Ivlen」(バイト)とする。1バイト単位で、IV[0]〜IV[Ivlen−1]と記載する。
(3)内部テーブルS1(第1メモリS1(115)):
内部テーブルS1は第1メモリS1(115)が記憶するワードにより実現される。以下では、第1メモリS1(115)を内部テーブルS1と同じ意味で使用する場合がある。内部テーブルS1は、4バイト×256エントリ=1024バイトである。4バイト単位で<S1[0]>〜<S1[255]>と記載できる。なお<S1[0]>の「<>」の記載は、S1[0]が1ワード(4バイト)であることを示すものとする。なお、1ワードは4バイトに限るものではなく、2バイト、6バイト、8バイトなどでもよい。
(4)内部テーブルS2(第2メモリS2(116)):
内部テーブルS2も内部テーブルS1同様に、4バイト×256エントリ=1024バイトである。内部テーブルS2は、第2メモリS2(116)により実現される。以下では、内部テーブルS1と同様に、第2メモリS2(116)を内部テーブルS2と同じ意味で使用する場合がある。4バイト単位で<S2[0]>〜<S2[255]>と記載する。
(5)乱数のストリーム長:
生成すべき乱数のストリーム長を「4×Strlen」と記載する。4バイト単位で<R[0]>〜<R[Strlen−1]>と記載できる。このストリーム長はストリーム長メモリ111が記憶している。
(6)第2内部メモリ118:
第2内部メモリ118は、4バイトの値を記憶する。第2内部メモリ118を<B4>と示す場合がある。
(7)第1内部メモリ117:
第1内部メモリ117は、1バイトの値を記憶する。第1内部メモリ117を「B1」と示す場合がある。
次に、図5〜図8を用いて初期化について説明する。「初期化」は、内部テーブルS1と内部テーブルS2とを生成する処理である。この「初期化」は、後述の図22におけるS101に対応する。図5は、初期化を行なう場合のプログラムを示す。また、図6は、図5のA.1〜A.4をフローチャート化した図である。なお、A.5〜A.8は、A.1〜A.4と同様であるので省略した。図7は、内部テーブルS1(第1メモリS1(115))、及び内部テーブルS2(第2メモリS2(116))を初期化する様子を示す図である。図8は、具体的な数値により図7の状態を説明するための図である。
(2)また、初期化部120は、第1内部メモリ117である「B1」と、第2内部メモリ118である<B4>とに初期値を設定する。この初期値は、初期値メモリ114に記憶されているものである。図5のA.9、A.10では、一例として、初期化部120が初期値として「B1」に「0x01」を設定し、<B4>に「0x12345678」を設定した場合を示した。
次に、図9〜図15を用いて、鍵スケジュール部130の実行する鍵スケジュールについて説明する。この「鍵スケジュール」は、後述の図22におけるS102に対応する。「鍵スケジュール」とは、鍵情報を用いて内部テーブルの中身を混ぜる処理をいう。本実施の形態では、「鍵スケジュール」の一例として、暗号化鍵Kと初期値IVとを鍵情報として用いることにより、初期化で生成した内部テーブルS1と内部テーブルS2との中身を混ぜる場合を説明する。
図9は、鍵スケジュール部130が実行するプログラムを示している。
図10は、図9のうちB.1〜B.10をフローチャート化した図である。
図11は、図9のうちB.11〜B.20をフローチャート化した図である。
「丸」を0バイト目、
「三角」を1バイト目、
「四角」を2バイト目、
「バツ」を3バイト目
と呼ぶこととする。
本鍵スケジュールでは、鍵スケジュール部130が次の処理を実行する。
(1)まず0バイト目(J=0)である「丸」の全部(0〜255)について、置換を行なう。0バイト目の「丸」を「丸0」とし、アドレスB1の0バイト目の「丸」を所定の「丸」とする。スワップ(swap)の対象となる所定の「丸」は、B.3、B.5、B.6等による「B1」の値で決まる。
即ち、「丸0」と所定の「丸」とをswapし(B.4)、
(2)次に、「丸1」と所定の「丸」とをswapし(B.4)、
(3)次に、「丸2」と所定の「丸」とをswapする(B.4)。
(4)以下、順次これを「丸255」まで実行する。swapの対象となる所定の「丸」は、B.3、B.5、B.6等による「B1」の値で決まる。
(5)そして、「丸」を示すJ=0について、「丸255」(I=255)まで終了すると、次に、J=1の場合、つまり、1バイト目である「三角」の全部について同様の処理を実行する。以下同様に、「四角」(J=2)、「バツ」(J=3)についても実行する。
(6)鍵スケジュール部130は、内部テーブルS2についても、内部テーブルS1と同様の処理を実行する(B.11〜B.20)。
(1)B.3において、暗号化鍵K(鍵情報の一例)をもとに第1内部メモリ117である「B1」にアドレスを設定する。
(2)B.4において、設定されたアドレス「B1」からS1[B1]Jが決まる。ここで、S1[B1]Jは、前記で述べたように4バイトである<S1[B1]>のうちJバイト目(J=0,1,2,3のいずれか)を示す。B.4において、S1[B1]JとS1[I]Jとを入れ替える(swapする)。なおIは0〜255の整数である。
(3)B.5において、初期値IV(鍵情報の一例)をもとに、「B1」(第1内部メモリ117)にアドレスを設定する。
(4)B.6において、B.5で設定された「B1」からS2[B1]Jが決まり、S2[B1]JとS2[I]Jとを元に、第1内部メモリ117である「B1」にアドレスを設定する。
(1)B.1において、J=0とする。すなわち、内部テーブルS1、内部テーブルS2の0バイト目についての処理である。
(2)B.2において、I=0とする。
(3)B.3において、B1=3となる。詳細は次の様である。
鍵スケジュール部130は、
B1=(B1+K[I%Keylen])%256
を設定する。この場合、図14に示す様に
B1=1(A.9による)、
I=0、
Keylen=16(仮定した)、
K[0]=2(仮定した)
とする。よって、
B1=(B1+K[I%Keylen])%256
=(1+K[0%16])%256
=(1+K[0])%256
=(1+2)%256
=3
となる。
よって、B1=3となる。
(4)B.4において、鍵スケジュール部130は、S1[0]0とS1[3]0とを入れ替える(スワップする)。
詳細は次の様である。
鍵スケジュール部130は、Swap(S1[I]J,S1[B1]J)を実行する。本設例では、
I=0、J=0、B1=3(前記B.3による)より、
Swap(S1[I]J,S1[B1]J)
=Swap(S1[0]0,S1[3]0)
である。
よって、鍵スケジュール部130は、S1[0]0とS1[3]0とを入れ替える。
(5)B.5において、鍵スケジュール部130は、B1=4を設定する。
詳細は次の様である。
鍵スケジュール部130は、
B1=(B1+IV[I%Ivlen])%256
によりB1を設定する。
この場合、
B1=3、I=0、Ivlen=16(仮定した)である。
また、IV[0]=1(仮定した)とする。
よって、
B1=(B1+IV[I%Ivlen])%256
=(3+IV[0%16])%256
=(3+IV[0])%256
=(3+1)%256
=4
となる。よって、B1=4である。
(6)B.6において、鍵スケジュール部130は、B1=12を設定する。
詳細は次の様である。
鍵スケジュール部130は、
B1=B1xor((S2[I]J+S2[B1]J)%256)
により、あらたにB1を設定する。
この場合、
B1=4(前記B.4による)、I=0、J=0である。
また、
S2[0]0=3、S2[4]0=5
と仮定する。
よって
B1=B1xor((S2[I]J+S2[B1]J)%256)
=4xor((S2[0]0+S2[4]0)%256)
=4xor((3+5)%256)
=4xor(8)
=12
となる。よって、B1=12である。
(1)B.7において、I=I+1となる。
よって、I=0+1=1となる。
(2)また、I=1であるので、B.8においてB.3へ進む。
(3)B.3において、鍵スケジュール部130は、B1=14を設定する。
詳細は次の様である。
鍵スケジュール部130は、
B1=(B1+K[I%Keylen])%256
により、あらたにB1を設定する。
この場合、
B1=12(前記B.6による)、I=1、Keylen=16である。
また、K[1]=2と仮定する。
よって、
B1=(B1+K[I%Keylen])%256
=(12+K[1%16])%256
=(12+K[1])%256
=(12+2)%256
=14
となる。よって、B1=14となる。
(4)B.4において、鍵スケジュール部130は、S1[1]0とS1[14]0とを入れ替える。
詳細は次の様である。
鍵スケジュール部130は、Swap(S1[I]J,S1[B1]J)を実行する。本設例では、
I=1、J=0、B1=14(前記B.3による)より、
Swap(S1[I]J,S1[B1]J)
=Swap(S1[1]0,S1[14]0)
である。
よって、鍵スケジュール部130は、S1[1]0とS1[14]0とを入れ替える。
(5)B.5において、鍵スケジュール部130は、B1=17を設定する。
詳細は次の様である。
鍵スケジュール部130は、
B1=(B1+IV[I%Ivlen])%256
によりB1を設定する。
この場合、
B1=14(前記B.3による)、I=1、Ivlen=16である。
また、IV[1]=3と仮定する。
よって、
B1=(B1+IV[I%Ivlen])%256
=(14+IV[1%16])%256
=(14+IV[1])%256
=(14+3)%256
=17
となる。よって、B1=17である。
(6)B.6において、鍵スケジュール部130は、B1=25を設定する。
詳細は次の様である。
鍵スケジュール部130は、
B1=B1xor((S2[I]J+S2[B1]J)%256)
により、あらたにB1を設定する。
この場合、
B1=17(前記B.5による)、I=1、J=0である。
また、
S2[1]0=7、S2[17]0=1
と仮定する。
よって、
B1=B1xor((S2[I]J+S2[B1]J)%256)
=17xor((S2[1]0+S2[17]0)%256)
=17xor((7+1)%256)
=17xor8
=25
となる。よって、B1=25である。
(7)このようにして、
内部テーブルS1において、B.1〜B.10を実行することにより、
内部テーブルS1において、
J=0(0バイト目)について、
S1[0]0と所定の相手とが入れ替えられ、
S1[1]0と所定の相手とが入れ替えられ、
・・・
S1[255]0と所定の相手とが入れ替えられる。
同様に
J=1(1バイト目)について、
S1[0]1と所定の相手とが入れ替えられ、
S1[1]1と所定の相手とが入れ替えられ、
・・・
S1[255]1と所定の相手とが入れ替えられる。
J=2(2バイト目)、J=3(3バイト目)の場合についても同様である。
以上のように、鍵スケジュール部130により、鍵スケジュールが実行される。
次に、図16〜図21を用いて、ストリーム生成部140の実行する擬似乱数の生成を説明する。ストリーム生成は、内部テーブルS1と内部テーブルS2との役割を交互に変えながら、乱数列を生成する処理である。
図16は、ストリーム生成部140の各構成要素が実行するプログラムを示している。
図17は、図16をフローチャート化した図である。
図18は、C.2〜C.4を図式化したものである。
(1)C.2において、第2内部メモリ118に設定されたB41から<S1[B41]>を決定し、B40から<S2[B40]>を決定する。そして、<S1[I]>と<S1[B41]>と<S2[B40]>とから<R[J]>を生成する。ここで、B40は、4バイトの値である<B4>の下位1バイト目の値を示す。B41は、4バイトの値である<B4>の下位2バイト目の値を示す。後述する図19の第2内部メモリ118を例に取れば、B40=78(16)であり、B41=56(16)である。なお以下の説明には、<B4>に16進数で記憶されている数値を使用するため「78(16)」等と記載し、添え字(16)により「78」が16進数であることを示す。添え字のない値は、10進数であることを示す。
(2)C.3において、<S1[B41]>と<S2[B40]>とに基づいて、<S1[I]>を新たに生成する。
(3)C.4において、<S2(I)>から新たにB4を更新する。
(4)以上において、<R[J]>は、<S1[B41]>,<S1[I]>,<S2[B40]>から生成されるが、次の内部状態を決定するのは、この3つの値と<B4>の他に<S2[I]>がある(C.4)。この<S2[I]>の値は、<R[J]>には直接的には影響を与えない。すなわち<R[J]>から<S2[I]>の値を推測することは不可能であり安全性が高まる。このため、攻撃者は生成された<R[J]>から<S2[I]>を推測することが困難となり安全性が向上する。
また、初期化部120が、第2内部メモリ118に
<B4>=0x12345678
を設定しているものとする。
詳細は次の様である。
第1乱数生成部141は、
<R[J]>=<S1[I]>xor<S1[B41]>xor<S2[B40]>
を実行して、乱数<R[J]>を生成する。
この場合、
J=0、I=0、B41=56(16)、B40=78(16)である。
また、図19に示す様に
<S1[0]>=2、<S1[56(16)]>=1、<S2[78(16)]>=4
と仮定する。
この場合、
<R[0]>=<S1[0]>xor<S1[56(16)]>xor<S2[78(16)]>
=2xor1xor4
=7
となる。よって、
<R[0]>=7となる。
(3)C.3において、第1状態変更部142が、<S1[B41]>と、<S2[B40]>とを演算してシフトし、シフトした値を用いて<S1[I]>の値を書き換える。
すなわち、第1状態変更部142は、
<S1[I]>=(<S1[I]>+ROTL((<S1[B41]>xor<S2[B40]>),1))%232
を実行する。
ここで、ROTL(x,s)は、32ビットデータxを左にsビット回転シフトすることを示す。
例えば、ROTL(5,1)であれば、10進数の「5」は、2進数表記で
「00・・・0101(2)」
である。
よって、
ROTL(5,1)=「00・・・・1010(2)」
となり、10進数表記で、10である。
よって、
ROTL(5,1)=10
である。
今I=0であるので、左辺は<S1[0]>である。また、右辺の<S1[0]>等は、C.2の<R[0]>の右辺の値と同じである。よって、右辺の各値は、
<S1[0]>=2、<S1[56(16)]>=1、<S2[78(16)]>=4
である。
よって、
<S1[0]>=(<S1[0]>+ROTL((<S1[56(16)]>xor<S2[78(16)]>),1))%232
=(2+ROTL((1xor4),1))%232
=(2+ROTL(5,1))%232
=(2+10)%232
=12
となる。
よって、<S1[0]>=12となる。
図19に示す様に、<S1[0]>は、2→12に書き換えられる。
すなわち、第1入れ替え部143は、
<B4>=ROTL(((<B4>+<S2[I]>)%232),16)
を実行する。
ここで、
右辺の<B4>=0x12345678、
また、I=0である。
また、
<S2[0]>=1と仮定する。
よって、
<B4>=ROTL(((<B4>+<S2[I]>)%232),16)
=ROTL(((<B4>+<S2[0]>)%232),16)
=ROTL(((0x12345678+1)%232),16)
=ROTL(((0x12345679)%232),16)
=0x56791234
となる。
よって、
<B4>=0x56791234
となる。
(5)C.5において、J=J+1となる。この場合、J=1となる。
(6)C.6ではJ≠Strlenとする。
(7)C.7において、第2乱数生成部144が、<R[1]>=19を生成する。
詳細は次の様である。
第2乱数生成部144は、
<R[J]>=<S2[I]>xor<S2[B41]>xor<S1[B40]>
を実行して、乱数<R[J]>を生成する。
この場合、
J=1、
I=0、
B41=12(16)、
B40=34(16)、
<S2[0]>=1
である。
また、
<S2[12(16)]>=2、<S1[34(16)]>=16
と仮定する。
この場合、
<R[0]>=<S2[0]>xor<S2[12(16)]>xor<S1[34(16)]>
=1xor2xor16
=19
となる。よって、
<R[1]>=19となる。
(8)C.8において、第2状態変更部145が、
<S2[B41]>と、<S1[B40]>とを演算してシフトし、シフトした値を用いて<S2[I]>の値を書き換える。
すなわち、第2状態変更部145は、
<S2[I]>=(<S2[I]>+ROTL((<S2[B41]>xor<S1[B40]>),1))%232
を実行する。
ここで、
右辺の<S2[I]>等は、C.7の<R[J]>の右辺の値と同じである。よって、右辺の各値は、
<S2[0]>=1
<S2[12(16)]>=2、
<S1[34(16)]>=16
である。よって、
<S2[0]>=(<S2[0]>+ROTL((<S2[12(16)]>xor<S1[34(16)]>),1))%232
=(1+ROTL((2xor16),1))%232
=37
となる。
よって、<S2[0]>=37となる。
図20に示す様に、<S2[0]>は、1→37に書き換えられる。
(9)C.9において、第2入れ替え部146が、第2内部メモリ118である<B4>に記憶されたワードの上位と下位の値を入れ替える。
すなわち、第2入れ替え部146は、
<B4>=ROTL(((<B4>+<S1[I]>)%232),16)
を実行する。
ここで、
<B4>=0x56791234、
I=0、
及び<S1[0]>=12(C.3で書き換えられている)である。
よって、
<B4>=ROTL(((<B4>+<S2[I]>)%232),16)
=ROTL(((<B4>+<S1[0]>)%232),16)
=ROTL(((0x56791234+12>)%232),16)
=ROTL((0x56791246),16)
=0x12465679
となる。
(10)ループ部147は、ストリーム長メモリ111に記憶したストリーム長になるまで、第1乱数生成部141と第1状態変更部142と第1入れ替え部143の動作と、第2乱数生成部144と第2状態変更部145と第2入れ替え部146の動作とを繰り返す。
(11)バッファメモリ148は、第1乱数生成部141から出力される擬似乱数R1と第2乱数生成部144から出力される擬似乱数R2とを入力して一時的に保持して擬似乱数ストリームとして出力する。
(12)再スケジュール部149は、バッファメモリ148に出力した擬似乱数のストリーム長が、所定の再スケジュール長になった場合に、鍵スケジュール部130を動作させ、鍵スケジュールをやり直す(C.11)。ここで、所定の「再スケジュール長」とは、例えば、
「内部テーブルのワード数×ワードのバイト数×メモリの数×第2内部メモリが一巡するシフト回数(32回、C.4及びC.9による))」を用いる。
ここで、
(a)「内部テーブルのワード数」とは、内部テーブルS1あるいは内部テーブルS2のワード数をいい本実施の形態1の場合は、256である。
(b)「ワードのバイト数」とは、内部テー部の1ワードのバイト数であり、4である。
(c)「メモリの数」とは、第1メモリS1と第2メモリS2との2つである。
(d)「第2内部メモリ118が一巡するシフト回数」とは、C.4あるいはC.9においてメモリ<B4>が一巡するシフト回数を意味し、32回である。
(a)〜(d)によれば、「再スケジュール長」は、一例として、
「再スケジュール長」=256×4×2×32
=65536バイト(16384ワード)
=64KBとなる。
図17のフローチャートで説明すれば、C.11において、再スケジュール部149は、擬似乱数列の長さ(Jの値)が所定の「再スケジュール長」であるStrlenになったかどうかを判断する。再スケジュール部149は、「再スケジュール長」になったと判断した場合には、図10の(A)に進み、鍵スケジュール部130を動作させ鍵スケジュールをやり直す。
(13)擬似乱数生成装置100は、ストリーム生成部140の生成した擬似乱数ストリームR[0]、R[1]・・・と平文とをXOR(排他的論理和)して、暗号文を作成する。
(1)S101は、初期化部が、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定するステップである。
(2)S102は、鍵スケジュール部が、鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジュールをして第1メモリS1と第2メモリS2とに記憶するステップである。
(3)S103は、ストリーム生成部が、鍵スケジュール部により鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するステップである。
(1)S201は、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する処理である。
(2)S202は、鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジュールをして第1メモリS1と第2メモリS2とに記憶する処理である
(3)S203は、鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成する処理である。
その場合、
C.2において
<R[J]>=<S1[I]>xor<S1[B41]> (式1)
を実行し、
C.7において
<R[J]>=<S2[I]>xor<S2[B41]> (式2)
を実行する。
この場合、図18(上記(式1)に対応)において、<R[J]>と<S2[B40]>との関係が遮断されるため、攻撃者は生成されたR[J]の値から内部状態を予想することが困難となるため安全性が向上する。
(1)ストリーム生成部140の第1乱数生成部141は、第1メモリS1(115)の値から、第1メモリS1(115)のアドレスを生成し、生成されたアドレスの第1メモリS1(115)のワードの値から擬似乱数を生成する(C.9及び上記(式1)としたC.2)。すなわち、図21に示す様に、第1乱数生成部141は、C.9において、第1メモリS1(115)の値S1[I]から、C.2で<S1[B41]>のアドレスとなるべき<B4>を生成する(ST1)。
そして、C.9において第1乱数生成部141は、生成されたアドレスB41の第1メモリS1(115)のワード値<S1[B41]>を特定し(ST2)、上記の(式1)により、特定したワード値<S1[B41]>と<S1[I]>とから擬似乱数<R>を生成する(ST3)。
(2)図21に示す様に、次にST4において、役割が内部テーブルS1(第1メモリS1(115))から内部テーブルS2(第2メモリS2(116))に移る。ストリーム生成部140の第2乱数生成部144は、第2メモリS2(116)の値から、第2メモリS2(116)のアドレスを生成し、生成されたアドレスの第2メモリS2(116)のワードの値から擬似乱数を生成する(C.4及び上記(式2)としたC.7)。すなわち、第2乱数生成部144は、C.4において、第2メモリS2(116)の値S2[I]から、C.7で<S2[B41]>のアドレスとなるべき<B4>を生成する(ST5)。そして、C.7において第1乱数生成部141は、生成されたアドレスB41の第2メモリS2(116)のワード値<S2[B41]>を特定し(ST6)、上記の(式2)により、特定したワード値<S2[B41]>と<S2[I]>とから擬似乱数<R’>を生成する(ST7)。
(3)以上(1)、(2)のように第1乱数生成部141と第2乱数生成部144とは、第1メモリS1(115)と第2メモリS2(116)とに記憶されたワードを交互に用いて擬似乱数R、R’等を生成する。
(1)従来例では内部テーブルが1つであるのに対して、本実施の形態1の擬似乱数生成装置100では同じサイズの内部テーブルを2つ持つ。このため、その内部状態を推測するのは困難であると考えられる。具体的には、従来例では、256バイトのテーブルの1状態から1バイトを生成するのに対し、本実施の形態1の擬似乱数生成装置100では、2048バイトのテーブルの1状態から4バイトの乱数R[J]を生成する。即ち擬似乱数生成装置100では、ストリーム1バイトあたりのエントロピーが従来例の倍あることになる。
(2)従来例の「Cストリーム生成」では、R[J]はS[B]とS[I]から生成され、しかも、この2つの値とBが次の内部状態を決定する。これに対して本実施の形態1の擬似乱数生成装置100は、例えば図18において、R[J]はS1[B41],S1[I],S2[B40]から生成されるが、次の内部状態を決定するのは、この3つの値とB4の他にS2[I]がある。このS2[I]の値はR[J]には直接的には影響を与えない。すなわちR[J]からS2[I]の値を推測することは不可能であり安全性が高まる。
(3)本実施の形態1の擬似乱数生成装置100では、内部テーブルS1と内部テーブルS2とが、その役割を変えながら交互に内部状態を変えていく。内部テーブルS1と内部テーブルS2との役割を変えた部分は、例えば図16の「C.2〜C.5」と、「C.7〜C.10」とが対応する。この2つの部分は、内部テーブルS1と内部テーブルS2とが入れ替わっただけなので、これらの内部テーブルの先頭アドレスへのポインタを入れ替えてやりさえすればプログラムを共用することができ、プログラムサイズ削減に役立つ。
(4)従来例では鍵スケジュールは最初に一回だけ行い、その後は決して行われなかった。これに対して、本実施の形態1の擬似乱数生成装置100では、64KBごとに鍵スケジュールをやり直す処理を行っている。鍵スケジュールは内部テーブルS1、S2の内部状態を完全に変えてしまうので、これによって解読者による内部状態の再現はほぼ不可能になってしまう。鍵スケジュールを頻繁に行うと処理速度の低下となるが、64KB程度であれば、その処理速度低下は問題にならない。
(5)ちなみに、64KBの根拠は以下の通りである。内部テーブルS1と内部テーブルS2とがすべて書き換えられるためには、Iが0から255まで動く必要がある。それまでにストリームRは、256×4バイト×2=2KB生成される。さらに内部に1ビットの回転シフト命令が存在するが、この回転は32回行うと元に戻る。したがって、2KB×32回=64KBでデータの変換が一巡するとみなすことができ、鍵スケジュールを行うにはよいタイミングである。
Claims (7)
- 複数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
鍵情報を記憶する鍵メモリと、
複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、
ワードS2[I]をアクセスする第2メモリS2と、
第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する初期化部と、
鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1と第2メモリS2とに記憶する鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする擬似乱数生成装置。 - 前記ストリーム生成部は、
第1メモリS1のワードの値から、第1メモリS1のアドレスを生成し、生成されたアドレスの第1メモリS1のワードの値から擬似乱数を生成する第1乱数生成部と、
第2メモリS2のワードの値から、第2メモリS2のアドレスを生成し、生成されたアドレスの第2メモリS2のワードの値から擬似乱数を生成する第2乱数生成部と、
を備えたことを特徴とする請求項1記載の擬似乱数生成装置。 - 数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
鍵スケジュールされた値を記憶する複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、鍵スケジュールされた値を記憶する複数のワードからなり、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする擬似乱数生成装置。 - n(1≦n≦N、Nは1以上の整数)バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
生成すべき乱数のストリーム長Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワードから構成されるメモリであって、アドレスI(Iは、0〜255の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
アドレスIとなる値を記憶する第1内部メモリと、
ワード単位の値を記憶する第2内部メモリと、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第1内部メモリの値Iを更新し、第1内部メモリの値をアドレスIとして、第1メモリS1の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第1メモリS1のアドレスIのワードS1[I]のn番目のバイトの値とをスワップし、さらに、第1内部メモリの値をアドレスIとして、第2メモリS2の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第2メモリS2のアドレスIのワードS2[I]のn番目のバイトの値とをスワップして、第1から第N番目のバイトまでスワップを繰り返し、第1メモリS1と第2メモリS2とに記憶されたワードに対して鍵スケジューリングをする鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする擬似乱数生成装置。 - n(1≦n≦N、Nは1以上の整数)バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
生成すべき乱数のストリーム長Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワードから構成されるメモリであって、アドレスI(Iは、0〜255の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
アドレスIとなる値を記憶する第1内部メモリと、
ワード単位の値を記憶する第2内部メモリと、
固定値メモリに記憶された固定値を用いて、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する初期化部と、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第1内部メモリの値Iを更新し、第1内部メモリの値をアドレスIとして、第1メモリS1の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第1メモリS1のアドレスIのワードS1[I]のn番目のバイトの値とをスワップし、さらに、第1内部メモリの値をアドレスIとして、第2メモリS2の先頭ワードから最後のワードまでの各ワードのn番目のバイトの値と第2メモリS2のアドレスIのワードS2[I]のn番目のバイトの値とをスワップして、第1から第N番目のバイトまでスワップを繰り返し、第1メモリS1と第2メモリS2とに記憶されたワードに対して鍵スケジューリングをする鍵スケジュール部と、
第2内部メモリに記憶されたワードの下位2バイトの値からアドレスI2、I3の値を生成し、
第1メモリS1の先頭ワードから最後のワードまでの各ワードS1[I1]の値と
第1メモリS1のアドレスI2のワードS1[I2]の値と
第2メモリS2のアドレスI3のワードS2[I3]の値と
を用いて擬似乱数R1を生成してバッファメモリに出力する第1乱数生成部と、
第1メモリS1のアドレスI2のワードS1[I2]の値と
第2メモリS2のアドレスI3のワードS2[I3]の値と
を演算してシフトし、シフトした値を用いて第1メモリS1のアドレスI1のワードS1[I1]の値を書き換える第1状態変更部と、
第2内部メモリに記憶されたワードの上位と下位の値を入れ替える第1入れ替え部と、
第2内部メモリに記憶されたワードの下位2バイトの値からアドレスI4、I5とする値を生成し、
第2メモリS2の先頭ワードから最後のワードまでの各ワードS2[I1]の値と
第2メモリS2のアドレスI4のワードS2[I4]の値と
第1メモリS1のアドレスI5のワードS1[I5]の値と
を用いて擬似乱数R2を生成して出力する第2乱数生成部と、
第2メモリS2のアドレスI4のワードS2[I4]の値と
第1メモリS1のアドレスI5のワードS1[I5]の値と
を演算してシフトし、シフトした値を用いて、第2メモリS2のアドレスI1のワードS2[I1]の値を書き換える第2状態変更部と、
第2内部メモリに記憶されたワードの上位と下位の値を入れ替える第2入れ替え部と、
ストリーム長メモリに記憶したストリーム長になるまで、第1乱数生成部と第1状態変更部と第1入れ替え部の動作と、第2乱数生成部と第2状態変更部と第2入れ替え部の動作とを繰り返すループ部と、
第1乱数生成部から出力される擬似乱数R1と第2乱数生成部から出力される擬似乱数R2とを入力して一時的に保持して擬似乱数ストリームとして出力するバッファメモリと、
バッファメモリに出力した擬似乱数のストリーム長が、所定の再スケジュール長になった場合に、鍵スケジュール部を動作させる再スケジュール部と
を備えたことを特徴とする擬似乱数生成装置。 - 鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成するコンピュータである擬似乱数生成装置が行う擬似乱数生成方法において、
初期化部が、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定し、
鍵スケジュール部が、鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1と第2メモリS2とに記憶し、
ストリーム生成部が、鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成する
ことを特徴とする擬似乱数生成方法。 - 鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、第1メモリS1と同一数の複数のワードから構成されるメモリであって、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成するコンピュータである擬似乱数生成装置に以下の処理を実行させる擬似乱数生成プログラム
(1)第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する処理
(2)鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1と第2メモリS2とに記憶する処理
(3)鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成する処理
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2005/016586 WO2007029330A1 (ja) | 2005-09-09 | 2005-09-09 | 擬似乱数生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2007029330A1 JPWO2007029330A1 (ja) | 2009-03-12 |
JP4718455B2 true JP4718455B2 (ja) | 2011-07-06 |
Family
ID=37835467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006515524A Active JP4718455B2 (ja) | 2005-09-09 | 2005-09-09 | 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US8443020B2 (ja) |
JP (1) | JP4718455B2 (ja) |
CN (1) | CN101040306B (ja) |
GB (1) | GB2444567B (ja) |
WO (1) | WO2007029330A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8670564B1 (en) * | 2006-08-14 | 2014-03-11 | Key Holdings, LLC | Data encryption system and method |
US9800410B1 (en) * | 2006-08-14 | 2017-10-24 | Key Holdings, LLC | Data encryption system and method |
JP4477616B2 (ja) * | 2006-10-19 | 2010-06-09 | 株式会社日立製作所 | 署名システム及び署名方法 |
JP4351731B2 (ja) * | 2006-10-31 | 2009-10-28 | 清人 由井 | 擬似乱数発生装置、擬似乱数発生プログラム及び擬似乱数発生プログラムを記録した媒体 |
JP4917478B2 (ja) * | 2007-05-25 | 2012-04-18 | 株式会社ケーヒン | 乱数発生装置及び車両制御装置 |
JP5044848B2 (ja) * | 2007-12-04 | 2012-10-10 | 剣 竜沢 | Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法 |
US9292259B2 (en) * | 2008-08-06 | 2016-03-22 | Cassy Holdings Llc | Uncertainty random value generator |
US9207911B2 (en) * | 2009-07-31 | 2015-12-08 | Cassy Holdings Llc | Modular uncertainty random value generator and method |
US9778912B2 (en) | 2011-05-27 | 2017-10-03 | Cassy Holdings Llc | Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules |
JP5813380B2 (ja) * | 2011-06-03 | 2015-11-17 | 株式会社東芝 | 半導体記憶装置 |
US8873750B2 (en) * | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
US10057250B2 (en) | 2013-05-14 | 2018-08-21 | Kara Partners Llc | Technologies for enhancing computer security |
US10594687B2 (en) | 2013-05-14 | 2020-03-17 | Kara Partners Llc | Technologies for enhancing computer security |
US9454653B1 (en) | 2014-05-14 | 2016-09-27 | Brian Penny | Technologies for enhancing computer security |
US10229282B2 (en) | 2016-06-12 | 2019-03-12 | Apple Inc. | Efficient implementation for differential privacy using cryptographic functions |
US10680810B2 (en) * | 2016-10-26 | 2020-06-09 | Nxp B.V. | Method of generating an elliptic curve cryptographic key pair |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07199808A (ja) * | 1993-12-06 | 1995-08-04 | Internatl Business Mach Corp <Ibm> | 暗号化方法及びシステム |
JP2002506243A (ja) * | 1998-03-06 | 2002-02-26 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 擬似ランダムシーケンス生成器及び生成方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755969A (en) * | 1986-11-07 | 1988-07-05 | Digital Electronic Communications Equipment (Dece Corp.) | Pseudo random sequence generation |
EP0591562A1 (de) * | 1992-09-30 | 1994-04-13 | International Business Machines Corporation | Programmgesteuerte Optimierung einer prozessorgesteuerten Schaltung zur Generierung einer algorithmisch erzeugbaren Ausgangs-Sequenz von Werten |
NZ336413A (en) * | 1993-12-01 | 2000-01-28 | Rpk Nz Ltd | Method of generating random numbers by manipulating electronic pointer with coordinates at points corresponding to time instants being used for selection of points subset and computation of number function |
US6014446A (en) * | 1995-02-24 | 2000-01-11 | Motorola, Inc. | Apparatus for providing improved encryption protection in a communication system |
US5943248A (en) * | 1997-01-17 | 1999-08-24 | Picturetel Corporation | w-bit non-linear combiner for pseudo-random number generation |
US6009135A (en) * | 1997-10-10 | 1999-12-28 | Interdigtal Technology Corporation | Method and apparatus for generating a stream cipher |
US6748006B1 (en) * | 1999-05-28 | 2004-06-08 | Texas Instruments Incorporated | Method and apparatus for controlling system timing with use of a master timer |
JP3318291B2 (ja) * | 1999-08-31 | 2002-08-26 | 株式会社環境電磁技術研究所 | 擬似雑音発生装置 |
US6934388B1 (en) * | 1999-11-12 | 2005-08-23 | Itt Manufacturing Enterprises, Inc. | Method and apparatus for generating random permutations |
WO2002056538A2 (en) * | 2001-01-12 | 2002-07-18 | Broadcom Corporation | Implementation of the shai algorithm |
US6735606B2 (en) * | 2001-05-15 | 2004-05-11 | Qualcomm Incorporated | Multi-sequence fast slewing pseudorandom noise generator |
US7317776B2 (en) * | 2002-04-18 | 2008-01-08 | Texas Instruments Incorporated | Efficient pseudo-noise sequence generation for spread spectrum applications |
WO2004032098A1 (ja) * | 2002-10-07 | 2004-04-15 | Kobayashi, Akira | 疑似乱数発生方法及び疑似乱数発生器 |
DE10250831B3 (de) * | 2002-10-31 | 2004-06-17 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Erzeugen einer pseudozufälligen Folge von Zahlen |
US7194496B2 (en) * | 2003-05-02 | 2007-03-20 | Spirent Communications Of Rockville, Inc. | System and method for producing functions for generating pseudo-random bit sequences |
US7546327B2 (en) * | 2003-12-22 | 2009-06-09 | Wells Fargo Bank, N.A. | Platform independent randomness accumulator for network applications |
-
2005
- 2005-09-09 WO PCT/JP2005/016586 patent/WO2007029330A1/ja active Application Filing
- 2005-09-09 JP JP2006515524A patent/JP4718455B2/ja active Active
- 2005-09-09 CN CN2005800349990A patent/CN101040306B/zh not_active Expired - Fee Related
- 2005-09-09 US US11/666,156 patent/US8443020B2/en not_active Expired - Fee Related
- 2005-09-09 GB GB0708028A patent/GB2444567B/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07199808A (ja) * | 1993-12-06 | 1995-08-04 | Internatl Business Mach Corp <Ibm> | 暗号化方法及びシステム |
JP2002506243A (ja) * | 1998-03-06 | 2002-02-26 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 擬似ランダムシーケンス生成器及び生成方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2444567B (en) | 2011-01-05 |
CN101040306A (zh) | 2007-09-19 |
GB2444567A (en) | 2008-06-11 |
GB0708028D0 (en) | 2007-06-06 |
US20070266067A1 (en) | 2007-11-15 |
WO2007029330A1 (ja) | 2007-03-15 |
JPWO2007029330A1 (ja) | 2009-03-12 |
CN101040306B (zh) | 2012-01-04 |
US8443020B2 (en) | 2013-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4718455B2 (ja) | 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム | |
CN103957100B (zh) | 利用单指令在多种模式中执行aes加密或解密 | |
US9503256B2 (en) | SMS4 acceleration hardware | |
JP4728657B2 (ja) | 回転バッファを用いたストリーム暗号設計 | |
JP4905000B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
KR102446866B1 (ko) | 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치 | |
JP2005004048A (ja) | 鍵拡張装置、鍵拡張方法および鍵拡張プログラム | |
JP5188414B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
CN110034918B (zh) | 一种sm4加速方法和装置 | |
CN113810169A (zh) | 同态加密装置及其密文算术方法 | |
JP2014240921A (ja) | 暗号装置、暗号処理方法及び暗号処理プログラム | |
JP2011123356A (ja) | 素数生成装置、素数生成方法、及び素数生成プログラム | |
JP4709685B2 (ja) | 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置 | |
CN107463354B (zh) | 一种面向ECC的双域并行度可变的Montgomery模乘电路 | |
JP2013182148A (ja) | 情報処理装置、および情報処理方法、並びにプログラム | |
JP2008140104A (ja) | メモリシステム及びメモリアクセス方法 | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
Zelenoritskaya et al. | Possible modifications of RC4 stream cipher | |
JP2008205753A (ja) | 信号処理装置 | |
ES2293665T3 (es) | Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. | |
JP4990843B2 (ja) | 暗号演算装置、その方法、及びプログラム | |
KR100935372B1 (ko) | 라인달 알고리즘을 이용한 암호화 및 복호화 장치 | |
JP2003288009A (ja) | 暗号装置及びデータ転送制御装置 | |
JP2008046151A (ja) | 暗号処理方法 | |
CN117891432A (zh) | 一种随机数生成方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20110329 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110331 |
|
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: 20140408 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |