JP4718455B2 - 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム - Google Patents

擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム Download PDF

Info

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
Application number
JP2006515524A
Other languages
English (en)
Other versions
JPWO2007029330A1 (ja
Inventor
充 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2007029330A1 publication Critical patent/JPWO2007029330A1/ja
Application granted granted Critical
Publication of JP4718455B2 publication Critical patent/JP4718455B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/586Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Description

この発明は、擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラムに関する。
ソフトウェア向きストリーム暗号の代表的な従来技術としてRC4が挙げられる。このRC4のアルゴリズムは公式には公開されていない。しかし、現在ではRC4の解析を行なった文献が多数存在し、方式の詳細も公開されている(例えば、非特許文献1)。
図24は、RC4のアルゴリズムを示している。このアルゴリズムは、「A.初期化」と、「B.鍵スケジュール」と、「C.ストリーム生成」とから成る。図24の例えば鍵スケジュールにおける「%256」は、256で除した余りを示す。
また、
「swap(S[I],S[B])」
は、S[I]とS[B]との入れ替えを意味する。
また、図25は、図24に示した「A初期化」、「B鍵スケジュール」、「Cストリーム」のそれぞれを図式化したものである。
図24、図25に示す様に、このアルゴリズムは、
「A.初期化」として内部テーブルを生成し、
「B.鍵スケジュール」として生成した内部テーブルのデータをswapし、
「C.ストリーム生成」として内部テーブルを使用して擬似乱数を生成する。
従来技術では、ストリーム生成を1バイト単位で行なっているため、処理速度が高速とはいい難く、高速化の要請がある。また、従来技術では一つの内部テーブルから擬似乱数を生成しており、解読攻撃に対する更なる安全性の要請もある。
出典: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.
図1〜図23を用いて実施の形態1を説明する。実施の形態1は、2つの内部テーブルを用いて擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラムに関する。
図1は、実施の形態1における擬似乱数生成装置100のブロック図である。擬似乱数生成装置100は、各種メモリを備える記憶部110と、初期化部120と、鍵スケジュール部130と、ストリーム生成部140とを備える。
記憶部110は、
(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>)
等のメモリを備える。これらのメモリは、キャッシュメモリや、フラッシュメモリや、ランダムアクセスメモリや、固定ディスクや、光ディスクにより実現することができる。
初期化部120は、固定値メモリ112に記憶された固定値を用いて、第1メモリS1(115)と第2メモリS2(116)との各ワードにそれぞれワード値を設定するとともに、第1内部メモリ117と第2内部メモリ118とに初期値を設定する。初期化部120の動作の詳細は、図5〜図8の説明で後述する。
鍵スケジュール部130は、鍵メモリ113が記憶する鍵情報を用いて、第1メモリS1(115)と第2メモリS2(116)とに設定されたワードの値に対して鍵スケジューリングをして第1メモリS1(115)と第2メモリS2(116)とに記憶する。鍵スケジュール部130の動作の詳細は、図9〜図15の説明で後述する。
ストリーム生成部140は、第1メモリS1(115)と第2メモリS2(116)とに記憶されたワードを用いて擬似乱数を生成する。ストリーム生成部140は、第1乱数生成部141、第1状態変更部142、第1入れ替え部143、第2乱数生成部144、第2状態変更部145、第2入れ替え部146、ループ部147、バッファメモリ148、再スケジュール部149とを備える。これら各構成要素の動作の詳細は、図16〜図21の説明で後述する。
図2は、実施の形態1における擬似乱数生成装置100の外観を示す図である。図2において、擬似乱数生成装置100は、システムユニット830、液晶表示装置813、キーボード814、マウス815、コンパクトディスク装置(CDD)818、プリンタ819を備え、これらはケーブルで接続されている。また擬似乱数生成装置100は、インターネット840に接続されており、擬似乱数による暗号を用いてWebサーバ850と通信可能である。
図3は、実施の形態1における擬似乱数生成装置100のハードウェア構成図である。図3において、擬似乱数生成装置100は、プログラムを実行するCPU(Central Processing Unit)810を備えている。CPU810は、バス825を介してROM811、RAM812、液晶表示装置813、キーボード814、マウス815、通信ボード816、FDD(Flexible Disk Drive)817、CDD818、プリンタ819、磁気ディスク装置820と接続されている。RAM812は、揮発性メモリの一例である。RAM812は、例えばバッファメモリ148の一例である。ROM811、FDD817、CDD818、磁気ディスク装置820は不揮発性メモリの一例である。これらは、記憶部110の一例である。
擬似乱数生成装置100は、通信ボード816を介してインターネット840に接続されている。また、通信ボード816、キーボード814、FDD817などは、データ入力部の一例である。また、例えば、通信ボード816、液晶表示装置813、磁気ディスク装置820などは、出力部の一例である。
磁気ディスク装置820には、オペレーティングシステム(OS)821、ウィンドウシステム822、プログラム群823が記憶されている。また、磁気ディスク装置820のメモリ領域824には、図1で示した記憶部110の各種メモリが対応する。プログラム群823は、CPU810、OS821、ウィンドウシステム822により実行される。
上記プログラム群823には、図1で「〜部」として説明した機能を実行するプログラムが記憶されている。例えば、上記プログラム群823には、図1の初期化部120、鍵スケジュール部130及びストリーム生成部140の機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
また、図1で「〜部」として説明したものは、CPU810により実行され、あるいは処理されるものであり、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置820、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体による記録装置を用いて記憶されても構わない。
次に、図4〜図23を用いて擬似乱数生成装置100の擬似乱数生成方法の動作を説明する。擬似乱数生成装置100の動作は、「A.初期化」と、「B.鍵スケジュール」と、「C.ストリーム生成」とから成る。これら動作の説明の前に、まず、図4を用いて以下で使用する記号を説明する。
(1)暗号化鍵K(鍵情報の一例):
暗号化鍵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」と示す場合がある。
以下に示す計算式、代入式において、右辺の変数は、CPU80がメモリ(記憶部110)から値を読み出すことを意味しており、左辺の変数は、CPU80がメモリ(記憶部110)へ値を書き込むことを表している。また、「記憶する」、「更新する」、「生成する」、「〜となる。」、「設定する」、「入れ替える」という動作も、CPU80がメモリ(記憶部110)へ値を書き込むことを表している。
(A.初期化:(S101))
次に、図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の状態を説明するための図である。
(1)初期化部120は、図6のA.1〜A.4において、固定値メモリ112に記憶された固定値<INI1[0]>等を用いて、第1メモリS1(115)の各ワードにワード値を設定する。同様に初期化部120は、A.5〜A.8において、固定値メモリ112に記憶された固定値<INI2[0]>等を用いて、第2メモリS2(116)の各ワードにワード値を設定する。図7は、初期化部120がワード値を第1メモリS1(115)と第2メモリS2(116)とに設定した状態を示している。図7は、初期化部120が、固定値メモリ112が記憶する4バイトの固定値<INI1[0]>〜<INI1[255]>により第1メモリS1(115)にワード値を設定し、また、固定値メモリ112が記憶する4バイトの固定値<INI2[0]>〜<INI2[255]>により第2メモリS2(116)にワード値を設定した状態を示している。<INI1[0]>等は前記のように4バイトの固定値であり、より具体的には、一例として、図8に示すような値が設定される。
(2)また、初期化部120は、第1内部メモリ117である「B1」と、第2内部メモリ118である<B4>とに初期値を設定する。この初期値は、初期値メモリ114に記憶されているものである。図5のA.9、A.10では、一例として、初期化部120が初期値として「B1」に「0x01」を設定し、<B4>に「0x12345678」を設定した場合を示した。
(B.鍵スケジュール:(S102))
次に、図9〜図15を用いて、鍵スケジュール部130の実行する鍵スケジュールについて説明する。この「鍵スケジュール」は、後述の図22におけるS102に対応する。「鍵スケジュール」とは、鍵情報を用いて内部テーブルの中身を混ぜる処理をいう。本実施の形態では、「鍵スケジュール」の一例として、暗号化鍵Kと初期値IVとを鍵情報として用いることにより、初期化で生成した内部テーブルS1と内部テーブルS2との中身を混ぜる場合を説明する。
図9は、鍵スケジュール部130が実行するプログラムを示している。
図10は、図9のうちB.1〜B.10をフローチャート化した図である。
図11は、図9のうちB.11〜B.20をフローチャート化した図である。
また、図12は鍵スケジュールの概要を説明する図である。図12を説明する。図12は内部テーブルS1を示している。一組の「丸、三角、四角、バツ」は、4バイトのワードを表している。また、「丸」、「三角」、「四角」、「バツ」は、それぞれ1バイトを表す。一組の「丸、三角、四角、バツ」のうち、例えば、
「丸」を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)。
図13は、図9のB.3〜B.6を図式化したものである。次に図13について説明する。前記のように、鍵スケジュールは、鍵スケジュール部130が行なう処理である。
(1)B.3において、暗号化鍵K(鍵情報の一例)をもとに第1内部メモリ117である「B1」にアドレスを設定する。
(2)B.4において、設定されたアドレス「B1」からS1[B1]が決まる。ここで、S1[B1]は、前記で述べたように4バイトである<S1[B1]>のうちJバイト目(J=0,1,2,3のいずれか)を示す。B.4において、S1[B1]とS1[I]とを入れ替える(swapする)。なおIは0〜255の整数である。
(3)B.5において、初期値IV(鍵情報の一例)をもとに、「B1」(第1内部メモリ117)にアドレスを設定する。
(4)B.6において、B.5で設定された「B1」からS2[B1]が決まり、S2[B1]とS2[I]とを元に、第1内部メモリ117である「B1」にアドレスを設定する。
図14、図15は、具体的な数値を用いて図12を説明する図である。図14はB.1〜B.6の過程の具体的な状態を説明する図である。図15はB.7→B.8→B.3→B.6の過程の具体的な状態を説明するための図である。以下では、図14、図15を用いてB鍵スケジュールを具体的に説明する。
以下は、鍵スケジュール部130の動作である。
(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]とS1[3]とを入れ替える(スワップする)。
詳細は次の様である。
鍵スケジュール部130は、Swap(S1[I],S1[B1])を実行する。本設例では、
I=0、J=0、B1=3(前記B.3による)より、
Swap(S1[I],S1[B1]
=Swap(S1[0],S1[3]
である。
よって、鍵スケジュール部130は、S1[0]とS1[3]とを入れ替える。
(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]+S2[B1])%256)
により、あらたにB1を設定する。
この場合、
B1=4(前記B.4による)、I=0、J=0である。
また、
S2[0]=3、S2[4]=5
と仮定する。
よって
B1=B1xor((S2[I]+S2[B1])%256)
=4xor((S2[0]+S2[4])%256)
=4xor((3+5)%256)
=4xor(8)
=12
となる。よって、B1=12である。
次に図15を用いて、B.7→B.8→B.3→B.6の過程を具体的に説明する。
(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]とS1[14]とを入れ替える。
詳細は次の様である。
鍵スケジュール部130は、Swap(S1[I],S1[B1])を実行する。本設例では、
I=1、J=0、B1=14(前記B.3による)より、
Swap(S1[I],S1[B1]
=Swap(S1[1],S1[14]
である。
よって、鍵スケジュール部130は、S1[1]とS1[14]とを入れ替える。
(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]+S2[B1])%256)
により、あらたにB1を設定する。
この場合、
B1=17(前記B.5による)、I=1、J=0である。
また、
S2[1]=7、S2[17]=1
と仮定する。
よって、
B1=B1xor((S2[I]+S2[B1])%256)
=17xor((S2[1]+S2[17])%256)
=17xor((7+1)%256)
=17xor8
=25
となる。よって、B1=25である。
(7)このようにして、
内部テーブルS1において、B.1〜B.10を実行することにより、
内部テーブルS1において、
J=0(0バイト目)について、
S1[0]と所定の相手とが入れ替えられ、
S1[1]と所定の相手とが入れ替えられ、
・・・
S1[255]と所定の相手とが入れ替えられる。
同様に
J=1(1バイト目)について、
S1[0]と所定の相手とが入れ替えられ、
S1[1]と所定の相手とが入れ替えられ、
・・・
S1[255]と所定の相手とが入れ替えられる。
J=2(2バイト目)、J=3(3バイト目)の場合についても同様である。
以上のように、鍵スケジュール部130により、鍵スケジュールが実行される。
なお、図9に示す様に、内部テーブルS1に対する鍵スケジュールのアルゴリズム(B.1〜B.10)と、内部テーブルS2に対する鍵スケジュールのアルゴリズム(B.11〜B.20)のアルゴリズムとは同じであるため兼用することができる。これによりプログラムサイズは、両者を作成する場合に比べて半分になる。
(C.ストリーム生成(S103))
次に、図16〜図21を用いて、ストリーム生成部140の実行する擬似乱数の生成を説明する。ストリーム生成は、内部テーブルS1と内部テーブルS2との役割を交互に変えながら、乱数列を生成する処理である。
図16は、ストリーム生成部140の各構成要素が実行するプログラムを示している。
図17は、図16をフローチャート化した図である。
図18は、C.2〜C.4を図式化したものである。
図18を簡単に説明する。擬似乱数生成装置100は、次の動作を実行する。
(1)C.2において、第2内部メモリ118に設定されたB4から<S1[B4]>を決定し、B4から<S2[B4]>を決定する。そして、<S1[I]>と<S1[B4]>と<S2[B4]>とから<R[J]>を生成する。ここで、B4は、4バイトの値である<B4>の下位1バイト目の値を示す。B4は、4バイトの値である<B4>の下位2バイト目の値を示す。後述する図19の第2内部メモリ118を例に取れば、B4=78(16)であり、B4=56(16)である。なお以下の説明には、<B4>に16進数で記憶されている数値を使用するため「78(16)」等と記載し、添え字(16)により「78」が16進数であることを示す。添え字のない値は、10進数であることを示す。
(2)C.3において、<S1[B4]>と<S2[B4]>とに基づいて、<S1[I]>を新たに生成する。
(3)C.4において、<S2(I)>から新たにB4を更新する。
(4)以上において、<R[J]>は、<S1[B4]>,<S1[I]>,<S2[B4]>から生成されるが、次の内部状態を決定するのは、この3つの値と<B4>の他に<S2[I]>がある(C.4)。この<S2[I]>の値は、<R[J]>には直接的には影響を与えない。すなわち<R[J]>から<S2[I]>の値を推測することは不可能であり安全性が高まる。このため、攻撃者は生成された<R[J]>から<S2[I]>を推測することが困難となり安全性が向上する。
図19、図20は、具体的な数値を用いて図18を説明するための図である。以下では、図19、図20を参照して具体的な数値を用いて擬似乱数の生成を説明する。
まず、図19を参照してC.1〜C.4の過程を説明する。
(1)C.1において、I=0、J=0とする。
また、初期化部120が、第2内部メモリ118に
<B4>=0x12345678
を設定しているものとする。
(2)C.2において、第1乱数生成部141が、<R[0]>=7を生成する。
詳細は次の様である。
第1乱数生成部141は、
<R[J]>=<S1[I]>xor<S1[B4]>xor<S2[B4]>
を実行して、乱数<R[J]>を生成する。
この場合、
J=0、I=0、B4=56(16)、B4=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[B4]>と、<S2[B4]>とを演算してシフトし、シフトした値を用いて<S1[I]>の値を書き換える。
すなわち、第1状態変更部142は、
<S1[I]>=(<S1[I]>+ROTL((<S1[B4]>xor<S2[B4]>),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に書き換えられる。
(4)C.4において、第1入れ替え部143が、第2内部メモリ118である<B4>に記憶されたワードの上位と下位の値を入れ替える。
すなわち、第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
となる。
次に図20を用いて、C.5〜C.9の過程を説明する。
(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[B4]>xor<S1[B4]>
を実行して、乱数<R[J]>を生成する。
この場合、
J=1、
I=0、
B4=12(16)
B4=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[B4]>と、<S1[B4]>とを演算してシフトし、シフトした値を用いて<S2[I]>の値を書き換える。
すなわち、第2状態変更部145は、
<S2[I]>=(<S2[I]>+ROTL((<S2[B4]>xor<S1[B4]>),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(排他的論理和)して、暗号文を作成する。
以上のストリーム生成では、内部テーブルS1と内部テーブルS2とが、「乱数生成」と「アドレス生成」との役割を交代しながら、順次、擬似乱数Rを生成していく。これに対し、従来のRC4は、一つのテーブルで行なっていた。
なお、以上の擬似乱数生成装置100による擬似乱数の生成方法では、内部テーブルS1と内部テーブルS2との2つを使用することにより、擬似乱数を生成した。しかし、これは一例であり、3つの内部テーブルに基づき擬似乱数を生成してもよいし、4つの内部テーブルに基づき擬似乱数を生成してもよい。いくつの内部テーブルを用いても構わない。
擬似乱数生成装置100の初期化部120、鍵スケジュール部130、ストリーム生成部140の一連の動作は互いに関連しており、これらの一連の動作を擬似乱数生成方法として把握することができる。
図22は、擬似乱数生成装置100の初期化部120等の動作を擬似乱数生成方法として把握した場合のフローチャートを示す。
(1)S101は、初期化部が、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定するステップである。
(2)S102は、鍵スケジュール部が、鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジュールをして第1メモリS1と第2メモリS2とに記憶するステップである。
(3)S103は、ストリーム生成部が、鍵スケジュール部により鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するステップである。
また、擬似乱数生成装置100における初期化部120、鍵スケジュール部130、ストリーム生成部140の一連の動作は、一連の処理に置き換えることにより、プログラムの実施形態として把握することができる。
図23は、擬似乱数生成装置100の初期化部120等の動作を、コンピュータである擬似乱数生成装置100に実行させるための一連の処理からなる擬似乱数生成プログラムとして把握した場合のフローチャートを示す。
(1)S201は、第1メモリS1と第2メモリS2との各ワードにそれぞれワード値を設定するとともに、第1内部メモリと第2内部メモリとに初期値を設定する処理である。
(2)S202は、鍵メモリが記憶する鍵情報を用いて、第1メモリS1と第2メモリS2とに設定されたワードの値に対して鍵スケジュールをして第1メモリS1と第2メモリS2とに記憶する処理である
(3)S203は、鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成する処理である。
なお、図16に示すC.2では、内部テーブルS1のワード値<S1[I]>、及び<S1[B4]>の他、内部テーブルS2のワード値<S2[B4]>を用いた。また、C.7では、内部テーブルS2のワード値<S2[I]>、及び<S2[B4]>の他、内部テーブルS1のワード値<S1[B4]>を用いた。これは一つの例である。擬似乱数生成装置100のストリーム生成部140は、鍵スケジュール部130により鍵スケジュールされた内部テーブルS1(第1メモリS1(115))と内部テーブルS2(第2メモリS2(116))とに記憶されたワードを交互に用いて擬似乱数を生成しても構わない。
その場合、
C.2において
<R[J]>=<S1[I]>xor<S1[B4]> (式1)
を実行し、
C.7において
<R[J]>=<S2[I]>xor<S2[B4]> (式2)
を実行する。
この場合、図18(上記(式1)に対応)において、<R[J]>と<S2[B4]>との関係が遮断されるため、攻撃者は生成されたR[J]の値から内部状態を予想することが困難となるため安全性が向上する。
図21を用いて、上記(式1)、(式2)を用いた場合の、ストリーム生成部140の別の動作例を説明する。
(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[B4]>のアドレスとなるべき<B4>を生成する(ST1)。
そして、C.9において第1乱数生成部141は、生成されたアドレスB4の第1メモリS1(115)のワード値<S1[B4]>を特定し(ST2)、上記の(式1)により、特定したワード値<S1[B4]>と<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[B4]>のアドレスとなるべき<B4>を生成する(ST5)。そして、C.7において第1乱数生成部141は、生成されたアドレスB4の第2メモリS2(116)のワード値<S2[B4]>を特定し(ST6)、上記の(式2)により、特定したワード値<S2[B4]>と<S2[I]>とから擬似乱数<R’>を生成する(ST7)。
(3)以上(1)、(2)のように第1乱数生成部141と第2乱数生成部144とは、第1メモリS1(115)と第2メモリS2(116)とに記憶されたワードを交互に用いて擬似乱数R、R’等を生成する。
前述した擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラムは、ストリーム型の暗号の発生装置であるが、テキスト(平文)の暗号装置としても使えるし、暗号文の復号装置としても用いることができる。
また、前述した擬似乱数生成装置及び擬似乱数生成方法は、図3あるいは図23に示したように、コンピュータで動作させるプログラム(ソフトウェア)として実現できる。プログラムで実現した場合は、そのプログラムを内蔵した半導体チップやICチップとしても実現することができ、どのような電子機器にも用いることができる。
例えば、前述した擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラムの好適な適用例としては、ワープロ文章の暗号または復号、Eメールテキストの暗号または復号、インターネットやローカルエリアネットワークの通信データの暗号または復号、携帯電話と基地局との通信データの暗号または復号、ICタグやICカードのデータの暗号または復号などが考えられる。
特に、メモリ容量に限りのある小型機器(携帯電話、ICタグ、ICカード)の通信データの暗号または復号に適している。
本実施の形態1の擬似乱数生成装置は、第1メモリS1と第2メモリS2とに対して鍵スケジュールを行なう鍵スケジュール部と、鍵スケジュールされた第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部とを備えたので、解読攻撃に対する安全性を向上することができる。また、ストリーム生成部は、ワード単位を対象として擬似乱数を生成するので、処理の高速化を実現することができる。
本実施の形態1の擬似乱数生成装置は、第1乱数生成部が第1メモリS1を用いて擬似乱数を生成し、第2乱数生成部が第2メモリS2を用いて擬似乱数を生成するとともに、第1乱数生成部と第2乱数生成部とが交互に擬似乱数を生成する。よって、解読攻撃に対する安全性を向上することができる。
本実施の形態1の擬似乱数生成装置は、鍵スケジュール部が、ワード単位で構成された複数の内部テーブル(第1メモリS1及び第2メモリS2)に対して鍵スケジュールを実施する。よって、非常に大きな空間での置換が可能となり、解読攻撃に対する安全性を向上することができる。
本実施の形態1の擬似乱数生成装置は、ストリーム生成部が2つの内部テーブルに基づき乱数を生成するので、解読攻撃に対する安全性を向上することができる。
従来技術ではバイト単位の処理であったのに対して、実施の形態1の擬似乱数生成装置100は、ストリーム生成部140が、ワード単位(4バイト)で擬似乱数を生成するので、高速化を実現することができる。
また、バイト単位の処理では、一つの内部テーブルに実現される要素は0〜255までの256通りであったのに対して、実施の形態1の擬似乱数生成装置100は、鍵スケジュール部130が、ワードを対象として処理することで、0〜232−1までの232通りと、非常に大きな空間での置換を可能とし、安全性を向上することができる。
従来技術では一つの内部テーブルで置換を繰り返すものであったのに対して、実施の形態1の擬似乱数生成装置100は、鍵スケジュール部130が、内部テーブルS1と内部テーブルS2とを交互に作用させて置換を繰り返すので、非常に長いランダム性(周期性)を実現することができる。また、ストリーム生成部140が、内部テーブルS1と内部テーブルS2とを交互に作用させて置換を繰り返すので、非常に長いランダム性(周期性)を実現することができる。
従来技術では1回の鍵スケジュールを実行した後に、次に鍵が変更されるまでは擬似乱数生成の処理を連続実行するため、一定以上の処理を実行すると同じ乱数列が生成されてしまう。これに対して実施の形態1の擬似乱数生成装置100は、擬似乱数の生成処理を一通り最後まで実施した後に、再スケジュール部149が鍵スケジュール部130を動作させて、擬似乱数の生成に利用する内部テーブルS1、内部テーブルS2を更新することにより同じ乱数列の生成を防ぎ、安全性を向上する。
従来例は本実施の形態1の擬似乱数生成装置100の動作に比べて動作が簡単であるため、高速に動作するように一見見える。しかし、実際にプログラミングした場合、本実施の形態1は格段に高速である。これは、本実施の形態1ではC.1〜C.11のストリーム生成が4バイト単位でおこなわれていることに起因している(従来例では1バイト単位)。
一方、一般に、テーブル参照型の暗号の安全性(解読困難性)を高めるためには、得られたストリームR[J]からテーブルの内部状態をできるだけ推測しにくくする必要がある。高速性と安全性を両立させるため、本実施の形態1の擬似乱数生成装置100では速度を大きく低下させない範囲で次のような新たな工夫を行なっている。
(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[B4],S1[I],S2[B4]から生成されるが、次の内部状態を決定するのは、この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でデータの変換が一巡するとみなすことができ、鍵スケジュールを行うにはよいタイミングである。
実施の形態1における擬似乱数生成装置100の構成図である。 実施の形態1における擬似乱数生成装置100の外観の一例を示す。 実施の形態1における擬似乱数生成装置100のハードウェア構成を示す。 実施の形態1における擬似乱数生成装置100の動作説明に使用する記号の説明である。 初期化部120が初期化を実行する場合のプログラムである。 図5のフローチャートである。 初期化部120が第1メモリS1(115)、第2メモリS2(116)にワード値を設定する様子を示す図である。 初期化部120が第1メモリS1(115)、第2メモリS2(116)にワード値を設定した場合の具体例を示す図である。 鍵スケジュール部130が鍵スケジュールを行う場合のプログラムである。 図9のB.1〜B.10のフローチャートである。 図9のB.11〜B.20のフローチャートである。 鍵スケジュールの概要を説明する図である。 図10のB.3〜B.6の図式化である。 図13を具体的な数値で説明する図である。 図13を具体的な数値で説明する図である。 ストリーム生成部140がストリーム生成を行う場合のプログラムである。 図16のフローチャートである。 図16のC.2〜C.4を図式化したものである。 図18を具体的な数値で説明する図である。 図18を具体的な数値で説明する図である。 ストリーム生成部140の別の動作例を示す図である。 擬似乱数生成方法のステップを示す図である。 擬似乱数生成プログラムの処理工程を示す図である。 従来技術を説明する図である。 従来技術を説明する図である。
符号の説明
100 擬似乱数生成装置、110 記憶部、111 ストリーム長メモリ、112 固定値メモリ、113 鍵メモリ、114 初期値メモリ、115 第1メモリS1、116 第2メモリS2、117 第1内部メモリ、118 第2内部メモリ、120 初期化部、130 鍵スケジュール部、140 ストリーム生成部、141 第1乱数生成部、142 第1状態変更部、143 第1入れ替え部、144 第2乱数生成部、145 第2状態変更部、146 第2入れ替え部、147 ループ部、148 バッファメモリ、149 再スケジュール部、810 CPU、811 ROM、812 RAM、813 液晶表示装置、814 キーボード、815 マウス、816 通信ボード、817 FDD、818 CDD、819 プリンタ、820 磁気ディスク装置、821 OS、822 ウィンドウシステム、823 プログラム群、824 メモリ領域、825 バス、830 システムユニット、840 インターネット、850 Webサーバ。

Claims (7)

  1. 複数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
    鍵情報を記憶する鍵メモリと、
    複数のワードからなり、アドレス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とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
    を備えたことを特徴とする擬似乱数生成装置。
  2. 前記ストリーム生成部は、
    第1メモリS1のワードの値から、第1メモリS1のアドレスを生成し、生成されたアドレスの第1メモリS1のワードの値から擬似乱数を生成する第1乱数生成部と、
    第2メモリS2のワードの値から、第2メモリS2のアドレスを生成し、生成されたアドレスの第2メモリS2のワードの値から擬似乱数を生成する第2乱数生成部と、
    を備えたことを特徴とする請求項1記載の擬似乱数生成装置。
  3. 数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、
    鍵スケジュールされた値を記憶する複数のワードからなり、アドレスI(Iは、0以上の整数)を用いて、ワードS1[I]をアクセスする第1メモリS1と、
    第1メモリS1と同一数の複数のワードから構成されるメモリであって、鍵スケジュールされた値を記憶する複数のワードからなり、アドレスIを用いて、ワードS2[I]をアクセスする第2メモリS2と、
    第1メモリS1と第2メモリS2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
    を備えたことを特徴とする擬似乱数生成装置。
  4. 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とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と
    を備えたことを特徴とする擬似乱数生成装置。
  5. 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とを入力して一時的に保持して擬似乱数ストリームとして出力するバッファメモリと、
    バッファメモリに出力した擬似乱数のストリーム長が、所定の再スケジュール長になった場合に、鍵スケジュール部を動作させる再スケジュール部と
    を備えたことを特徴とする擬似乱数生成装置。
  6. 鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレス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とに記憶されたワードを交互に用いて擬似乱数を生成する
    ことを特徴とする擬似乱数生成方法。
  7. 鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレス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とに記憶されたワードを交互に用いて擬似乱数を生成する処理
JP2006515524A 2005-09-09 2005-09-09 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム Active JP4718455B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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