JP4857230B2 - Pseudorandom number generator and encryption processing device using the same - Google Patents

Pseudorandom number generator and encryption processing device using the same Download PDF

Info

Publication number
JP4857230B2
JP4857230B2 JP2007245710A JP2007245710A JP4857230B2 JP 4857230 B2 JP4857230 B2 JP 4857230B2 JP 2007245710 A JP2007245710 A JP 2007245710A JP 2007245710 A JP2007245710 A JP 2007245710A JP 4857230 B2 JP4857230 B2 JP 4857230B2
Authority
JP
Japan
Prior art keywords
buffer
data
unit
output
input
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
JP2007245710A
Other languages
Japanese (ja)
Other versions
JP2008276728A (en
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007245710A priority Critical patent/JP4857230B2/en
Priority to EP07023164.2A priority patent/EP1975779B1/en
Priority to US11/947,911 priority patent/US8122075B2/en
Publication of JP2008276728A publication Critical patent/JP2008276728A/en
Application granted granted Critical
Publication of JP4857230B2 publication Critical patent/JP4857230B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、実用的な乱数列を生成する装置とその応用装置に関する。   The present invention relates to a device for generating a practical random number sequence and its application device.

公開鍵暗号技術を利用した署名生成、秘密通信を行う際の鍵の生成、およびストリーム暗号(stream cipher)技術などにおいて、乱数の必要性は高い。   There is a high need for random numbers in signature generation using public key encryption technology, key generation for secret communication, and stream cipher technology.

しかし、これらの場面において真性乱数を用いようとすることは非現実的であり、実際には疑似乱数生成方法またはそれを用いた装置により生成される疑似乱数(以下、単に乱数ともいう)が用いられる。   However, it is unrealistic to try to use a true random number in these situations, and in practice, a pseudo-random number generated by a pseudo-random number generation method or a device using the same (hereinafter also simply referred to as a random number) is used. It is done.

暗号での使用に関して疑似乱数に要求される条件として、予測不可能性や、乱数を決定するための初期値を生成した乱数から導出できないこと、という安全性に関する性質がある。さらに疑似乱数生成方法または生成装置が実用に耐えるためにはソフトウェア実装またはハードウェア実装において高速な処理が求められる。さらに、ハードウェア実装する場合の必要ゲート数、およびソフトウェア実装した場合のステップ数や実行時の必要メモリ領域などが小さい、といった実装コストの面からも効率的である必要がある。   Conditions required for pseudo-random numbers for use in cryptography include unpredictability and safety-related properties such that initial values for determining random numbers cannot be derived. Furthermore, in order for the pseudo-random number generation method or the generation apparatus to be practically used, high-speed processing is required in software implementation or hardware implementation. Furthermore, it is necessary to be efficient from the viewpoint of mounting cost, such as the number of necessary gates when hardware is mounted, the number of steps when software is mounted, and the memory area required for execution are small.

汎用的な暗号アルゴリズムとして、これらの評価項目全てを高いレベルで満たすものが好ましい。   A general-purpose encryption algorithm that satisfies all of these evaluation items at a high level is preferable.

ソフトウェア、ハードウェアいずれのプラットフォームにおいても実装が可能な疑似乱数生成技術は、たとえば、特許文献1に開示されている。特許文献1に記載の疑似乱数生成技術は、小型の非線形置換と有限体上で定義される最大距離分離符号行列とを組み合わせて大型で高密度な置換を構成することでソフトウェア実装における処理の効率化と高い安全性を実現している。   A pseudo-random number generation technique that can be implemented on both software and hardware platforms is disclosed in Patent Document 1, for example. The pseudorandom number generation technique described in Patent Document 1 is a processing efficiency in software implementation by combining a small non-linear permutation and a maximum distance separation code matrix defined on a finite field to constitute a large and high-density permutation. And high safety.

特許第3724399号公報Japanese Patent No. 3724399

特許文献1に記載の疑似乱数生成技術では、高い安全性を実現するために大きな内部状態を持ち、ハードウェア実装では回路規模が大きくなる。また、上記の大型の高密度置換をソフトウェアで実装する場合には、大きなメモリ容量を必要とする。このため、特許文献1に記載の疑似乱数生成方法を実装する際は、その小型化は制限を受ける。   The pseudo-random number generation technique described in Patent Document 1 has a large internal state in order to realize high safety, and the circuit scale increases in hardware implementation. In addition, when the large-scale high-density replacement described above is implemented by software, a large memory capacity is required. For this reason, when implementing the pseudorandom number generation method described in Patent Document 1, the downsizing is limited.

したがって、小型の電子機器での利用に適した、より小さい回路規模での実装やより小容量のメモリでの実装が可能な疑似乱数生成技術が望まれている。   Therefore, a pseudo-random number generation technique suitable for use in a small electronic device and capable of being mounted on a smaller circuit scale or mounted on a smaller capacity memory is desired.

本発明の態様は次のとおりである。2ブロック(1ブロックはnビット)の容量のステート記憶部と複数ブロックの容量のバッファとを有し、これらの内容を攪拌し、乱数列を得る疑似乱数生成装置である。   Aspects of the present invention are as follows. This is a pseudo-random number generation device that has a state storage unit with a capacity of 2 blocks (one block is n bits) and a buffer with a capacity of a plurality of blocks, and stirs the contents to obtain a random number sequence.

クロック入力に応答して、バッファの記憶内容を入力し、この入力データと同サイズのデータを出力する非線形変換部と、ステート記憶部の内容と非線形変換部の出力とを入力し、出力をステート記憶部に格納する第1の線形変換部、クロック入力に応答して、バッファの記憶内容とステート記憶部の記憶内容とを入力し、出力をバッファに格納する第2の線形変換部とにより攪拌する。攪拌したステート記憶部の内容を乱数列として出力する。   In response to the clock input, the buffer storage contents are input, and the nonlinear converter that outputs data of the same size as this input data, the contents of the state storage section and the output of the nonlinear converter are input, and the output is in the state The first linear conversion unit stored in the storage unit, and in response to the clock input, the storage content of the buffer and the storage content of the state storage unit are input, and the second linear conversion unit that stores the output in the buffer is stirred. To do. The contents of the stirred state storage unit are output as a random number sequence.

本発明の疑似乱数生成装置の実現に当たっては、n(K)ビットの秘密鍵を入力し、バッファの初期状態を定める初期化ユニットを有し、バッファの容量はn(K)ビットの少なくとも2倍の容量であることが望ましい。   In realizing the pseudorandom number generator of the present invention, an n (K) -bit secret key is input, and an initialization unit for determining the initial state of the buffer is provided, and the capacity of the buffer is at least twice that of n (K) bits. It is desirable to have a capacity of

本発明の疑似乱数生成装置は、その出力の乱数列を用いて、データ列を暗号化及び/又は複合化する暗号化/複合化装置に適用される。さらに、その暗号化/複合化装置を、サーバ及び端末に応用したデータ配信システムにも適用が広がる。   The pseudo-random number generation device of the present invention is applied to an encryption / decryption device that encrypts and / or decrypts a data sequence by using the output random number sequence. Further, the application of the encryption / decryption device to a data distribution system in which the encryption / decryption device is applied to a server and a terminal expands.

本発明によれば、線形変換を小型化でき、装置全体として小型化した疑似乱数生成装置を提供できる。   ADVANTAGE OF THE INVENTION According to this invention, the linear transformation can be reduced in size and the pseudorandom number generation apparatus reduced in size as the whole apparatus can be provided.

(用語の説明)
・疑似乱数生成装置(pseudorandom number generator):乱数列(random number sequence)を決定するための初期値(initial value)を与えて、疑似乱数列(pseudorandom number sequence)を生成する装置。
・疑似乱数(pseudorandom number):有限、もしくは無限のビット列であり、どのような方法でも真性乱数と区別することができないもの。
・真性乱数:無限ビット列であり、任意の連続する部分列が与えられても、次の1ビットを推定することができないような列のこと。
・共通鍵暗号(symmetric-key encryption):暗号化処理と復号化処理に同じ鍵を用いる暗号化技術。
・鍵:暗号化処理の際に用いる秘匿パラメータ。
・平文(plaintext):暗号化処理前、または復号化処理後のデータであり、ディジタル化されたマルチメディアデータも含まれる。
・暗号文(ciphertext):暗号化処理されたデータ。
・ブロック暗号:入力データを一定長のデータごとに区切り(区切られた一定長データをブロックという)、鍵と共に攪拌処理を行うことで暗号化処理(encryption)または復号化処理(decryption)を行う暗号技術。
・ストリーム暗号:疑似乱数生成装置に乱数列を決定する情報を与えて乱数列を生成し、この乱数列と平文を攪拌することで暗号文を生成する暗号技術。
・非線形変換:状態更新関数のうち、線形変換でないもの。
・Sボックス(S箱):3〜10ビット程度の置換表。高い非線形性と攪拌性を伴った変換を表参照で行えるうえ、簡単な構成による実現が可能であることから、暗号の実装に多く用いられる。
(Explanation of terms)
Pseudorandom number generator: A device that generates a pseudorandom number sequence by giving an initial value for determining a random number sequence.
• Pseudorandom number: A finite or infinite bit string that cannot be distinguished from a true random number in any way.
• True random number: An infinite bit sequence, which is a sequence that cannot be estimated for the next 1 bit even if given any continuous subsequence.
-Symmetric key encryption: Encryption technology that uses the same key for encryption and decryption.
Key: A secret parameter used for encryption processing.
Plaintext: Data before encryption processing or after decryption processing, including digitized multimedia data.
-Ciphertext: Data that has been encrypted.
Block cipher: A cipher that performs encryption or decryption by dividing input data into fixed-length data (delimited fixed-length data is called a block) and mixing with the key. Technology.
Stream cipher: A cryptographic technique for generating a random number sequence by giving information for determining a random number sequence to a pseudo-random number generator, and generating a ciphertext by stirring the random number sequence and plaintext.
Nonlinear transformation: State update function that is not linear transformation.
• S box (S box): A replacement table of about 3 to 10 bits. Since conversion with high nonlinearity and agitation can be performed with reference to a table and it can be realized with a simple configuration, it is often used for the implementation of cryptography.

以下、本発明の実施例を図面を用いて説明する。   Embodiments of the present invention will be described below with reference to the drawings.

図1は本実施例における疑似乱数生成装置(疑似乱数生成ユニット)の機能構成を表す概略図である。以下、図1に従って疑似乱数生成装置の構成を説明する。   FIG. 1 is a schematic diagram showing a functional configuration of a pseudo random number generation device (pseudo random number generation unit) in the present embodiment. Hereinafter, the configuration of the pseudorandom number generator will be described with reference to FIG.

疑似乱数生成装置(101)は、外部入力として、パラメータ入力制御ユニット(105)を介して鍵情報(121)及び乱数列番号(122)を、さらに出力長(123)からなる入力データ (102)を受け取る。パラメータ入力制御ユニット(105)は、入力が不正であるかどうかをチェックし、鍵情報(121)及び乱数列番号(122)を初期化装置(111)に入力する。出力長(123)は制御ユニット(116)に入力される。パラメータ入力制御ユニット(105)は、例えば入力された鍵情報(121)、乱数列番号(122)が大きすぎるなど不正な値であった場合には、これらのパラメータを疑似乱数生成装置(101)に入力せずに処理を終了する。上記入力は、疑似乱数生成装置(101)のユーザ、もしくは上位から疑似乱数生成装置(101)を呼び出すシステムが入力する値である。さらに、回路を動作させるタイミングを制御するクロック信号をクロック生成ユニット(103)から受け取る。これらの情報を入力とし、疑似乱数生成装置(101)は任意長のビット列(104)を出力する。   The pseudo-random number generator (101) receives, as an external input, key information (121) and a random number sequence number (122) via a parameter input control unit (105), and further input data (102) consisting of an output length (123) Receive. The parameter input control unit (105) checks whether the input is invalid, and inputs the key information (121) and the random number sequence number (122) to the initialization device (111). The output length (123) is input to the control unit (116). The parameter input control unit (105), for example, if the input key information (121) and the random number sequence number (122) are invalid values such as too large, these parameters are converted into a pseudo random number generator (101). The process is terminated without input to. The input is a value input by a user of the pseudo random number generation device (101) or a system that calls the pseudo random number generation device (101) from the upper level. Further, a clock signal for controlling the timing for operating the circuit is received from the clock generation unit (103). Using these pieces of information as inputs, the pseudorandom number generator (101) outputs a bit string (104) of an arbitrary length.

疑似乱数生成装置(101)は、初期化ユニット(111)、レジスタ(112)、データ攪拌ユニット(113)、データ出力ユニット(114)、カウンタ(115)、制御ユニット(116)、および初期化ユニット(111)からレジスタ(112)への入力を制御するスイッチ(117)とデータ出力ユニット(114)への入力を制御するスイッチ(118)から構成される。   The pseudorandom number generator (101) includes an initialization unit (111), a register (112), a data agitation unit (113), a data output unit (114), a counter (115), a control unit (116), and an initialization unit It comprises a switch (117) for controlling the input from (111) to the register (112) and a switch (118) for controlling the input to the data output unit (114).

スイッチ(117)(118)の接続/切断の切り替えは、制御ユニット(116)が行う。制御ユニット(116)はクロック生成ユニット(103)から、ステップカウンタとして動作するカウンタ(115)を介して信号を受信すると、制御ユニット(116)はスイッチ(118)を接続し、レジスタ(112)の保持している値をデータ出力ユニット(114)に入力し、データ出力ユニット(114)は与えられた入力からビット列(104)を出力する。また、制御ユニット(116)はクロック信号を受信すると、データ攪拌ユニット(113)を動作させ、レジスタ(112)の値を更新する。   The control unit (116) switches between connection / disconnection of the switches (117) and (118). When the control unit (116) receives a signal from the clock generation unit (103) via the counter (115) that operates as a step counter, the control unit (116) connects the switch (118) to the register (112). The held value is input to the data output unit (114), and the data output unit (114) outputs the bit string (104) from the given input. Further, when receiving the clock signal, the control unit (116) operates the data agitation unit (113) to update the value of the register (112).

上記構成は、ハードウェア、ソフトウェア、または、これらの組み合わせにて実現することが可能である。   The above configuration can be realized by hardware, software, or a combination thereof.

図2は図1に示す疑似乱数生成装置(101)の処理手順を表すフローチャートである。以下、図2に従って本実施例における疑似乱数生成装置の処理手順を説明する。   FIG. 2 is a flowchart showing a processing procedure of the pseudorandom number generation device (101) shown in FIG. Hereinafter, the processing procedure of the pseudorandom number generation apparatus according to the present embodiment will be described with reference to FIG.

ステップ1(202):疑似乱数生成装置(101)は、パラメータ入力制御ユニット(105)を介して鍵情報K(112)、乱数列番号I(122)を受信し、初期化ユニット(111)に入力する。初期化ユニット(111)は、レジスタ長のビット列をレジスタ(112)の初期状態として生成する。制御ユニット(116)は、スイッチ(117)を接続状態とし、初期化ユニット(111)が生成したビット列をレジスタ(112)にセットする。レジスタ(112)への値がセットされたら、制御ユニット(116)はスイッチ(117)の接続を切る。
ステップ2(203):疑似乱数生成装置(101)は、カウンタ(115)の値を1にセットする。また、出力長Nを制御ユニット(116)にセットする。
Step 1 (202): The pseudorandom number generator (101) receives the key information K (112) and the random number sequence number I (122) via the parameter input control unit (105), and sends it to the initialization unit (111). input. The initialization unit (111) generates a bit string having a register length as an initial state of the register (112). The control unit (116) sets the switch (117) in the connected state, and sets the bit string generated by the initialization unit (111) in the register (112). When the value to the register (112) is set, the control unit (116) disconnects the switch (117).
Step 2 (203): The pseudorandom number generator (101) sets the value of the counter (115) to 1. Further, the output length N is set in the control unit (116).

ステップ3(204、208):疑似乱数生成装置(101)は、クロック生成ユニット(103)からの信号を受け取り、カウンタ(115)の値がN以下であれば以下のステップを繰り返す。カウンタ(115)の値がNを超えている場合には、処理を終了する。
ステップ4(205):疑似乱数生成装置(101)はスイッチ(118)を接続状態にし、レジスタ(112)の値をデータ出力ユニット(114)に入力する。データ出力ユニット(114)は入力を受け取ると、一定長のビット列(104)を出力する。
ステップ5(206):データ攪拌ユニット(113)はレジスタ(112)の値を入力としてデータ攪拌処理を行う。データ攪拌ユニット(113)の出力は再びレジスタ(112)に格納される。
ステップ6(207):カウンタ(115)の値をインクリメントする。
Step 3 (204, 208): The pseudorandom number generator (101) receives the signal from the clock generation unit (103), and repeats the following steps if the value of the counter (115) is N or less. If the value of the counter (115) exceeds N, the process is terminated.
Step 4 (205): The pseudo-random number generator (101) sets the switch (118) in a connected state, and inputs the value of the register (112) to the data output unit (114). When receiving the input, the data output unit (114) outputs a bit string (104) having a predetermined length.
Step 5 (206): The data agitation unit (113) performs data agitation processing with the value of the register (112) as an input. The output of the data agitation unit (113) is stored again in the register (112).
Step 6 (207): The value of the counter (115) is incremented.

図3は本実施例における疑似乱数生成装置(101)のデータ攪拌ユニット(113)の構成を表す概略図である。   FIG. 3 is a schematic diagram showing the configuration of the data agitation unit (113) of the pseudorandom number generator (101) in the present embodiment.

図3では、便宜上、レジスタ(112)を時刻tにおけるレジスタ(302)と時刻t+1におけるレジスタ(303)に分けて表示している。データ攪拌ユニット(301)は時刻tのレジスタ(302)の状態から時刻t+1のレジスタ(303)の状態を生成する。本実施例におけるレジスタ(112)は2つの小レジスタから構成されている。図中ではこの2つの小レジスタをバッファ(311)、ステート(312)と表記する。ステート(312)は2ワードで構成される。ここで1ワードとは、4ビットの倍数からなるデータブロックのサイズを表す。典型的なワードの単位としては、4ビット、1バイト(8ビット)、2バイト、4バイトなどを使用する。また、鍵情報K(121)の大きさをn(K)ビットとするとき、バッファ(311)は2×n(K)ビット以上であれば良い。バッファ(311)はMワードで構成されているものとする。以下、本実施例の中でパラメータの値を特定するときには、1ワードが1バイト、n(K)=80を基準とする。このとき、バッファ(311)は20ワードで構成される。   In FIG. 3, for convenience, the register (112) is divided into a register (302) at time t and a register (303) at time t + 1. The data agitation unit (301) generates the state of the register (303) at time t + 1 from the state of the register (302) at time t. The register (112) in this embodiment is composed of two small registers. In the figure, these two small registers are represented as a buffer (311) and a state (312). The state (312) is composed of two words. Here, one word represents the size of a data block that is a multiple of 4 bits. Typical word units are 4 bits, 1 byte (8 bits), 2 bytes, 4 bytes, etc. Further, when the size of the key information K (121) is n (K) bits, the buffer (311) may be 2 × n (K) bits or more. The buffer (311) is assumed to be composed of M words. Hereinafter, when specifying the parameter value in this embodiment, one word is one byte and n (K) = 80 is a reference. At this time, the buffer (311) is composed of 20 words.

以下、本実施例では1ワードは1バイトとし、M=20の場合に本実施例による疑似乱数生成装置の構成例を説明する。バッファ(311)の値を上位ワードから順にB(0), B(1), …, B(19)と表す。同様にステート(312)の値を上位ワードA(0)、A(1)と表す。   Hereinafter, in this embodiment, one word is 1 byte, and a configuration example of the pseudorandom number generator according to this embodiment when M = 20 will be described. The value of the buffer (311) is expressed as B (0), B (1), ..., B (19) in order from the upper word. Similarly, the value of state (312) is represented as upper words A (0) and A (1).

データ攪拌ユニット(301)は、非線形変換ユニット(321)、線形変換ユニット1(322)、線形変換ユニット2(323)で構成されている。非線形変換ユニット(321)は、バッファ(311)の一部の値を入力とし、その出力を線形変換ユニット1(322)に入力する。線形変換ユニット(322)はステート(312)の状態更新を行う関数であり、時刻tにおけるステートの値と非線形変換ユニット(321)の出力を入力とし、時刻t+1におけるステートの値を生成する。線形変換ユニット2(323)はバッファ(311)の状態更新を行う関数であり、時刻tにおけるバッファの値とステートの一部の値を入力とし、時刻t+1におけるバッファの値を生成する。   The data agitation unit (301) includes a non-linear conversion unit (321), a linear conversion unit 1 (322), and a linear conversion unit 2 (323). The nonlinear conversion unit (321) receives a part of the value of the buffer (311) and inputs the output to the linear conversion unit 1 (322). The linear transformation unit (322) is a function that updates the state of the state (312). The state value at the time t and the output of the nonlinear transformation unit (321) are input to generate the state value at the time t + 1. . The linear conversion unit 2 (323) is a function for updating the state of the buffer (311), and receives the value of the buffer at time t and a partial value of the state, and generates the value of the buffer at time t + 1.

図4は本実施例におけるデータ攪拌ユニット(301)における非線形変換ユニット(321)の構成を表す概略図である。   FIG. 4 is a schematic diagram showing the configuration of the nonlinear conversion unit (321) in the data stirring unit (301) in the present embodiment.

非線形変換ユニット(321)は時刻tのレジスタ(302)のうち、バッファ(311)から4ワードを入力し、4ワードを出力する。バッファ(311)から取り出す4ワードをB(i1), B(i2), B(i3),およびB(i4)とする(i1<i2<i3<i4)。本実施例では、i2−i1, i3−i2, i4−i3, i4−i1は互いに異なる数値となるように取り出すワード位置を定める。このような数値を取ることにより、状態更新関数はより高い攪拌を行うことができる。上記の値として、例えばi1=2、i2=5、i3=9、i4=17を取ればよい。このとき、i2−i1=3、i3−i2=4、i4−i3=8、i4−i1=15となる。また、i1〜14の別例として、i1=1、i2=4、i3=6、i4=16を取ってもよい。   The nonlinear conversion unit (321) receives 4 words from the buffer (311) in the register (302) at time t, and outputs 4 words. The four words taken out from the buffer (311) are designated as B (i1), B (i2), B (i3), and B (i4) (i1 <i2 <i3 <i4). In the present embodiment, i2-i1, i3-i2, i4-i3, i4-i1 determine the word positions to be extracted so as to have different values. By taking such numerical values, the state update function can perform higher agitation. For example, i1 = 2, i2 = 5, i3 = 9, i4 = 17 may be taken as the above values. At this time, i2−i1 = 3, i3−i2 = 4, i4−i3 = 8, and i4−i1 = 15. As another example of i1-14, i1 = 1, i2 = 4, i3 = 6, and i4 = 16 may be taken.

非線形変換ユニット(321)は、4ワードの入力を受け取ると、それぞれのワードを小型非線形置換(404)を用いて変換し、その出力する値を連結して出力する。ここで、小型非線形置換(404)として、例えば8ビット入力8ビット出力の置換表Sボックスを用いることができる。Sボックスとしては、たとえば
Federal Information Processing Standards Publications (FIPS PUBS)、Advanced Encryption Standard (AES)、NIST、2001年11月26日、P.16、インターネット <http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf>で使われている以下の変換表を使うことが可能である。
When receiving the input of 4 words, the nonlinear conversion unit (321) converts each word using small nonlinear replacement (404), and concatenates and outputs the output values. Here, as the small non-linear permutation (404), for example, a permutation table S box of 8-bit input 8-bit output can be used. For example, S box
Federal Information Processing Standards Publications (FIPS PUBS), Advanced Encryption Standard (AES), NIST, November 26, 2001, p. 16. Internet The following conversion table used in <http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf> can be used.

S[256]=
{ 82, 9, 106, 213, 48, 54, 165, 56,
191, 64, 163, 158, 129, 243, 215, 251,
124, 227, 57, 130, 155, 47, 255, 135,
52, 142, 67, 68, 196, 222, 233, 203,
84, 123, 148, 50, 166, 194, 35, 61,
238, 76, 149, 11, 66, 250, 195, 78,
8, 46, 161, 102, 40, 217, 36, 178,
118, 91, 162, 73, 109, 139, 209, 37,
114, 248, 246, 100, 134, 104, 152, 22,
212, 164, 92, 204, 93, 101, 182, 146,
108, 112, 72, 80, 253, 237, 185, 218,
94, 21, 70, 87, 167, 141, 157, 132,
144, 216, 171, 0, 140, 188, 211, 10,
247, 228, 88, 5, 184, 179, 69, 6,
208, 44, 30, 143, 202, 63, 15, 2,
193, 175, 189, 3, 1, 19, 138, 107,
58, 145, 17, 65, 79, 103, 220, 234,
151, 242, 207, 206, 240, 180, 230, 115,
150, 172, 116, 34, 231, 173, 53, 133,
226, 249, 55, 232, 28, 117, 223, 110,
71, 241, 26, 113, 29, 41, 197, 137,
111, 183, 98, 14, 170, 24, 190, 27,
252, 86, 62, 75, 198, 210, 121, 32,
154, 219, 192, 254, 120, 205, 90, 244,
31, 221, 168, 51, 136, 7, 199, 49,
177, 18, 16, 89, 39, 128, 236, 95,
96, 81, 127, 169, 25, 181, 74, 13,
45, 229, 122, 159, 147, 201, 156, 239,
160, 224, 59, 77, 174, 42, 245, 176,
200, 235, 187, 60, 131, 83, 153, 97,
23, 43, 4, 126, 186, 119, 214, 38,
225, 105, 20, 99, 85, 33, 12, 125};
また、4ビット入力4ビット出力のSボックスTから8ビット入力8ビット出力のSボックスSを構成し、小型非線形置換(404)として用いても良い。図12は、本実施例における4ビット入力4ビット出力のSボックスTを使った8ビット入力8ビット出力のSボックスSの構成を表す概略図である。小型非線形置換(404)への入力(1301)をE, 出力(1302)をFとする。図12の構成では、まず、入力(1301)を上位4ビットと下位4ビットに分割する。上位4ビットをE1, 下位4ビットをE2と表すと、次のようになる。
E1 || E2 ← E,
EA1 ← T1[E1],
EA2 ← T2[E2],
EA ← EA1 || EA2,
EB ← L(EA),
EB1 || EB2 ← EB,
EC1 ← T3[EB1],
EC2 ← T3[EB2],
F ← EC1 || EC2.
ただし、ここでx||yはxとyの連結を表す。また、Lはアフィン変換ユニット(1312)の変換である。また、T1〜T4は4ビット入力4ビット出力のSボックスである。T1〜T4は同じSボックスを用いても良い。4ビット入力4ビット出力のSボックスとしては、例えば次で定義される置換表を用いることができる。
T[16] = {1, 3, 9, 10, 5, 14, 7, 2, 13, 0, 12, 15, 4, 8, 6, 11}
非線形変換ユニットの出力X1, X2, X3, X4は、8ビット入力8ビット出力のSボックスSを用いて、以下の式のように構成することができる。
X1 ← S(B(i1)),
X2 ← S(B(i2)),
X3 ← S(B(i3)),
X4 ← S(B(i4))
図5は本実施例における疑似乱数生成装置(101)のステート変換部(図3における、時刻tにおけるステート(312)から時刻t+1におけるステート(312)への変換)の構成を表す概略図である。
S [256] =
{82, 9, 106, 213, 48, 54, 165, 56,
191, 64, 163, 158, 129, 243, 215, 251,
124, 227, 57, 130, 155, 47, 255, 135,
52, 142, 67, 68, 196, 222, 233, 203,
84, 123, 148, 50, 166, 194, 35, 61,
238, 76, 149, 11, 66, 250, 195, 78,
8, 46, 161, 102, 40, 217, 36, 178,
118, 91, 162, 73, 109, 139, 209, 37,
114, 248, 246, 100, 134, 104, 152, 22,
212, 164, 92, 204, 93, 101, 182, 146,
108, 112, 72, 80, 253, 237, 185, 218,
94, 21, 70, 87, 167, 141, 157, 132,
144, 216, 171, 0, 140, 188, 211, 10,
247, 228, 88, 5, 184, 179, 69, 6,
208, 44, 30, 143, 202, 63, 15, 2,
193, 175, 189, 3, 1, 19, 138, 107,
58, 145, 17, 65, 79, 103, 220, 234,
151, 242, 207, 206, 240, 180, 230, 115,
150, 172, 116, 34, 231, 173, 53, 133,
226, 249, 55, 232, 28, 117, 223, 110,
71, 241, 26, 113, 29, 41, 197, 137,
111, 183, 98, 14, 170, 24, 190, 27,
252, 86, 62, 75, 198, 210, 121, 32,
154, 219, 192, 254, 120, 205, 90, 244,
31, 221, 168, 51, 136, 7, 199, 49,
177, 18, 16, 89, 39, 128, 236, 95,
96, 81, 127, 169, 25, 181, 74, 13,
45, 229, 122, 159, 147, 201, 156, 239,
160, 224, 59, 77, 174, 42, 245, 176,
200, 235, 187, 60, 131, 83, 153, 97,
23, 43, 4, 126, 186, 119, 214, 38,
225, 105, 20, 99, 85, 33, 12, 125};
Alternatively, an S box S with an 8-bit input and an 8-bit output may be configured from an S box T with a 4-bit input and a 4-bit output, and used as a small non-linear replacement (404). FIG. 12 is a schematic diagram showing the configuration of an 8-bit input 8-bit output S box S using a 4-bit input 4-bit output S box T in this embodiment. Let E be the input (1301) and F be the output (1302) to the small nonlinear permutation (404). In the configuration of FIG. 12, first, the input (1301) is divided into upper 4 bits and lower 4 bits. The upper 4 bits are represented as E1 and the lower 4 bits are represented as E2.
E1 || E2 ← E,
EA1 ← T1 [E1],
EA2 ← T2 [E2],
EA ← EA1 || EA2,
EB ← L (EA),
EB1 || EB2 ← EB,
EC1 ← T3 [EB1],
EC2 ← T3 [EB2],
F ← EC1 || EC2.
Where x || y represents the concatenation of x and y. L is the conversion of the affine conversion unit (1312). T1 to T4 are 4-bit input 4-bit output S boxes. The same S box may be used for T1 to T4. As the 4-bit input 4-bit output S box, for example, a replacement table defined below can be used.
T [16] = {1, 3, 9, 10, 5, 14, 7, 2, 13, 0, 12, 15, 4, 8, 6, 11}
The outputs X1, X2, X3, and X4 of the non-linear conversion unit can be configured as follows using an S-box S with 8-bit input and 8-bit output.
X1 ← S (B (i1)),
X2 ← S (B (i2)),
X3 ← S (B (i3)),
X4 ← S (B (i4))
FIG. 5 is a schematic diagram showing the configuration of the state conversion unit (conversion from state (312) at time t to state (312) at time t + 1 in FIG. 3) of the pseudorandom number generation device (101) in this embodiment. .

ステート変換部は非線形変換ユニット(321)と線形変換ユニット1(322)の組み合わせである。線形変換ユニット1(322)は、非線形変換ユニット(321)の出力を補助入力とし、時刻tのステート(312)の値を入力として時刻t+1のステートの値を出力する。非線形変換ユニット(321)の出力をX1, X2, X3, X4と表すと、線形変換ユニット1(322)は以下の処理を行う。   The state conversion unit is a combination of a nonlinear conversion unit (321) and a linear conversion unit 1 (322). The linear conversion unit 1 (322) uses the output of the nonlinear conversion unit (321) as an auxiliary input, and outputs the value of the state at time t + 1 with the value of the state (312) at time t as an input. When the output of the nonlinear conversion unit (321) is expressed as X1, X2, X3, X4, the linear conversion unit 1 (322) performs the following processing.

P(0) ← A(0) XOR X1,
P(1) ← A(1) XOR X2,
Q(0) ← P(0) XOR C1・P(1),
Q(1) ← P(1) XOR C2・P(0),
R(0) ← Q(0) XOR X3,
R(1) ← Q(1) XOR X4
ただし、ここでCj・P(i)は1ワードをn(W)ビットとするとき、2n(W)個の元を持つ有限体上で定義される乗算を表す。また、定数C1、C2は0、1でない値を用いる。処理の最終結果R(0)、R(1)をそれぞれ時刻t+1のステートA(0)、A(1)にセットする。
P (0) ← A (0) XOR X1,
P (1) ← A (1) XOR X2,
Q (0) ← P (0) XOR C1 ・ P (1),
Q (1) ← P (1) XOR C2 ・ P (0),
R (0) ← Q (0) XOR X3,
R (1) ← Q (1) XOR X4
Here, Cj · P (i) represents multiplication defined on a finite field having 2n (W) elements when one word is n (W) bits. The constants C1 and C2 are values other than 0 and 1. The final processing results R (0) and R (1) are set in the states A (0) and A (1) at time t + 1, respectively.

このような線形変換をおこなうことにより、攪拌処理における非線形変換ユニット(321)の働きを最大限に高めることができる。   By performing such a linear conversion, the function of the nonlinear conversion unit (321) in the stirring process can be maximized.

図6は本実施例における疑似乱数生成装置(101)のバッファ変換部(図3における、時刻tにおけるバッファ(311)から時刻t+1におけるバッファ(311)への変換)の構成を表す線形変換ユニット2(323)の概略図である。   FIG. 6 is a linear conversion unit 2 representing the configuration of the buffer conversion unit (conversion from the buffer (311) at time t to the buffer (311) at time t + 1 in FIG. 3) of the pseudorandom number generator (101) in this embodiment. It is the schematic of (323).

線形変換ユニット2(323)は、時刻tにおけるステート(312)を補助入力とし、時刻tのバッファ(311)の値を入力として時刻t+1のバッファ(311)の値を出力する。線形変換ユニット2(323)はワード単位の巡回置換と3個のフィードバックで構成される。フィードバック処理はワード単位で行う。線形変換ユニット2(323)は以下の処理を行う。   The linear conversion unit 2 (323) outputs the value of the buffer (311) at time t + 1 with the state (312) at time t as an auxiliary input and the value of the buffer (311) at time t as an input. The linear conversion unit 2 (323) is composed of cyclic permutation in units of words and three feedbacks. Feedback processing is performed in units of words. The linear conversion unit 2 (323) performs the following processing.

Y(i) ← B(i) (0≦i < 20),
Y(2) ← Y(2) XOR Y(4),
Y(5) ← Y(5) XOR Y(8),
Y(9) ← Y(9) XOR Y(16),
Y(M-1) ← Y(M-1) XOR A(0),
W(i+1) ← Y(i) (0≦i <19),
W(0) ← Y(19)
処理の最終結果W(i)をそれぞれ時刻t+1のバッファB(i)にセットする。
Y (i) ← B (i) (0 ≦ i <20),
Y (2) ← Y (2) XOR Y (4),
Y (5) ← Y (5) XOR Y (8),
Y (9) ← Y (9) XOR Y (16),
Y (M-1) ← Y (M-1) XOR A (0),
W (i + 1) ← Y (i) (0 ≦ i <19),
W (0) ← Y (19)
The final process result W (i) is set in the buffer B (i) at time t + 1.

フィードバック「Y(p(i)) ← Y(p(i)) XOR Y(q(i))」は上記の構成に限らず、p(i)−q(i)がすべて違う値を取る組み合わせから選んでも良い。また、ソフトウェアでの実装において、Y(p(i)),Y(q(i))として、非線形変換ユニット(321)への入力となるバッファ(311)から取り出すワードB(i1), B(i2), B(i3), B(i4)と同一の値をとってもよい。この場合、データ攪拌ユニット(113)の実行プログラムがレジスタ(302)にアクセスする回数を減らすことができ、プログラムの実行速度が向上することが期待できる。   Feedback `` Y (p (i)) ← Y (p (i)) XOR Y (q (i)) '' is not limited to the above configuration, and p (i) −q (i) takes all different values. You may choose from. In software implementation, Y (p (i)) and Y (q (i)) are used as words B (i1), B () taken out from the buffer (311) as an input to the nonlinear transformation unit (321). It may take the same value as i2), B (i3), B (i4). In this case, the number of times the execution program of the data agitation unit (113) accesses the register (302) can be reduced, and it can be expected that the execution speed of the program is improved.

図7は本実施例における疑似乱数生成装置(101)の乱数出力装置(データ出力ユニット(114))の構成を表す概略図である。データ出力ユニット(114)は時刻tのレジスタ(302)の値からステート(312)の下位ワードA(1)を乱数ビット列(104)として出力する。   FIG. 7 is a schematic diagram showing a configuration of a random number output device (data output unit (114)) of the pseudorandom number generation device (101) in the present embodiment. The data output unit (114) outputs the lower word A (1) of the state (312) from the value of the register (302) at time t as a random number bit string (104).

図8は本実施例における疑似乱数生成装置(101)の初期化ユニット(111)の構成を表す概略図である。   FIG. 8 is a schematic diagram showing the configuration of the initialization unit (111) of the pseudorandom number generator (101) in the present embodiment.

80ビット(10ワード)の鍵情報K(121)を上位ワードからK(0)、K(1), …, K(9)と表す。また、64ビット(8ワード)の乱数列番号(122)を上位ワードからI(0), I(1), …, I(7)と表す。初期化ユニット(111)は、パラメータ入力制御ユニット(105)を介して上記鍵情報(121)と乱数列番号(122)を受け取り、以下の処理に従ってレジスタ(824)に値をセットする。   The 80-bit (10 words) key information K (121) is expressed as K (0), K (1),..., K (9) from the upper word. In addition, a 64-bit (8 words) random number sequence number (122) is represented as I (0), I (1),..., I (7) from the upper word. The initialization unit (111) receives the key information (121) and the random number sequence number (122) via the parameter input control unit (105), and sets a value in the register (824) according to the following processing.

B(i) ← K(i), (0 ≦ i <10),
B(i) ← I(i−10), (10 ≦ i <16),
B(i) ← C3(i−16), (16 ≦ i <20),
A(0) ← C3(4),
A(1) ← C3(5)
ここで、C3(i) (0≦i<6)は任意の定数である。次に、データ攪拌ユニット(825)を繰り返し用いてレジスタの値を攪拌する。ここでデータ攪拌ユニット(825)は図3に記載のデータ攪拌ユニット(301)を用いて良い。この場合、40回以上の繰り返しを行うことが望ましい。
B (i) ← K (i), (0 ≤ i <10),
B (i) ← I (i−10), (10 ≤ i <16),
B (i) ← C3 (i−16), (16 ≤ i <20),
A (0) ← C3 (4),
A (1) ← C3 (5)
Here, C3 (i) (0 ≦ i <6) is an arbitrary constant. Next, the data agitation unit (825) is repeatedly used to agitate the register value. Here, the data stirring unit (825) shown in FIG. 3 may be used as the data stirring unit (825). In this case, it is desirable to repeat 40 times or more.

初期化ユニット(111)は規定の処理を行った後、レジスタ(824)の値をレジスタ(112)にセットする。   The initialization unit (111) performs a prescribed process, and then sets the value of the register (824) in the register (112).

図13は本実施例における疑似乱数生成装置(101)の初期化ユニット(111)の別の構成を表す概略図である。図13の表す初期化ユニット(111)は、図8の表す初期化ユニット(111)に、さらにワード攪拌ユニット(1411)を加えたものである。80ビット(10ワード)の鍵情報K(121)を上位ワードからK(0)、K(1), …, K(9)と表す。また、64ビット(8ワード)の乱数列番号(122)を上位ワードからI(0), I(1), …, I(7)と表す。初期化ユニット(111)は、まず定数C4をレジスタの値にセットする。   FIG. 13 is a schematic diagram showing another configuration of the initialization unit (111) of the pseudorandom number generator (101) in the present embodiment. The initialization unit (111) shown in FIG. 13 is obtained by adding a word agitation unit (1411) to the initialization unit (111) shown in FIG. The 80-bit (10 words) key information K (121) is expressed as K (0), K (1),..., K (9) from the upper word. In addition, a 64-bit (8 words) random number sequence number (122) is represented as I (0), I (1),..., I (7) from the upper word. The initialization unit (111) first sets a constant C4 to a register value.

B(i) ← C4(i), (0 ≦ i < 20),
A(i) ← C4(i+20), (i = 0, 1).
ここで、C4(i) (0 ≦ i <22)は任意の定数である。次に、初期化ユニット(111)は、パラメータ入力制御ユニットを介して入力されるデータを、以下のステップに従って攪拌し、レジスタ(112)の初期状態を定める。
B (i) ← C4 (i), (0 ≤ i <20),
A (i) ← C4 (i + 20), (i = 0, 1).
Here, C4 (i) (0 ≦ i <22) is an arbitrary constant. Next, the initialization unit (111) stirs the data input via the parameter input control unit according to the following steps, and determines the initial state of the register (112).

ステップ1.パラメータ入力制御ユニット(105)は、鍵情報K(121)、乱数列番号(122)を1ワードずつ、順にワード攪拌ユニット(1411)に入力する。
ステップ2.ワード攪拌ユニット(1411)は、パラメータ入力制御ユニット(105)から入力された1ワードのデータと、レジスタ(824)に格納されているデータの1ワードを排他的論理和し、計算結果をレジスタ(824)の元の位置に戻す。
ステップ3.データ攪拌ユニット(825)でレジスタ(824)の値を攪拌する。
ステップ1〜3を、パラメータ入力制御ユニット(105)がすべての鍵情報K(121)、乱数列番号(122)を入力し終えるまで繰り返す。
ステップ4.データ攪拌ユニット(825)を繰り返し用いてレジスタ(824)の値を攪拌する。
Step 1. The parameter input control unit (105) inputs the key information K (121) and the random number sequence number (122) one by one to the word agitation unit (1411) in order.
Step 2. The word agitation unit (1411) performs an exclusive OR operation on one word of data input from the parameter input control unit (105) and one word of data stored in the register (824), and the calculation result is stored in the register ( Return to the original position of 824).
Step 3. The value in the register (824) is stirred by the data stirring unit (825).
Steps 1 to 3 are repeated until the parameter input control unit (105) finishes inputting all the key information K (121) and the random number sequence number (122).
Step 4. The value in the register (824) is stirred using the data stirring unit (825) repeatedly.

ここで、データ攪拌ユニット(825)は図3に記載のデータ攪拌ユニット(301)を用いて良い。また、ステップ4では、20回以上の繰り返しを行うことが望ましい。   Here, the data agitation unit (825) may be the data agitation unit (301) shown in FIG. In Step 4, it is desirable to repeat 20 times or more.

初期化ユニット(111)は規定の処理を行った後、レジスタ(824)の値をレジスタ(112)にセットする。   The initialization unit (111) performs a prescribed process, and then sets the value of the register (824) in the register (112).

次に、本実施例の、鍵情報K(121)の大きさn(K)ビットが128ビットである場合のパラメータの選び方について説明する。n(K)=128の場合も、機器の構成、処理の手順はn(K)=80の場合と同様に行うことができる。n(K)=128の場合、バッファ(311)は32ワードで構成され、バッファ(822)の値を上位ワードから順にB(0), B(1), …, B(19)と表す。ステート(823)の値は上位ワードA(0)、A(1)と表す。   Next, how to select parameters when the size n (K) bits of the key information K (121) in the present embodiment is 128 bits will be described. In the case of n (K) = 128, the device configuration and processing procedure can be performed in the same manner as in the case of n (K) = 80. When n (K) = 128, the buffer (311) is composed of 32 words, and the value of the buffer (822) is expressed as B (0), B (1),..., B (19) in order from the upper word. The value of state (823) is represented as upper words A (0) and A (1).

非線形変換ユニット(321)は時刻tのレジスタ(302)のうち、バッファ(311)から4ワードを入力し、4ワードを出力する。バッファ(311)から取り出すワードB(i1), B(i2), B(i3), B(i4)とする(i1<i2<i3<i4)。n(K)=128の場合、例えばi1=1、i2=5、i3=15、i4=29を取ればよい。   The nonlinear conversion unit (321) receives 4 words from the buffer (311) in the register (302) at time t, and outputs 4 words. Words B (i1), B (i2), B (i3), and B (i4) to be taken out from the buffer (311) are assumed (i1 <i2 <i3 <i4). When n (K) = 128, for example, i1 = 1, i2 = 5, i3 = 15, and i4 = 29 may be taken.

また、線形変換ユニット2(323)はワード単位の巡回置換と3個のフィードバックで構成される。フィードバック処理はワード単位で行う。n(K)=128の場合、例えば線形変換ユニット2(323)は以下の処理を行う。   The linear conversion unit 2 (323) is composed of cyclic replacement in units of words and three feedbacks. Feedback processing is performed in units of words. When n (K) = 128, for example, the linear conversion unit 2 (323) performs the following processing.

Y(i) ← B(i) (0 ≦ i <32),
Y(1) ← Y(1) XOR Y(4),
Y(5) ← Y(5) XOR Y(14),
Y(15) ← Y(15) XOR Y(28),
Y(M−1) ← Y(M-1) XOR A(0),
W(I+1) ← Y(i) (0≦i<31),
W(0) ← Y(31)
上記実施例によれば、最大距離分離符号行列を用いた線形変換を小型化でき、疑似乱数生成装置全体としても小型化できる。また安全性を保ったままステートおよびその状態更新関数を最小化することが可能である。
Y (i) ← B (i) (0 ≤ i <32),
Y (1) ← Y (1) XOR Y (4),
Y (5) ← Y (5) XOR Y (14),
Y (15) ← Y (15) XOR Y (28),
Y (M−1) ← Y (M-1) XOR A (0),
W (I + 1) ← Y (i) (0 ≦ i <31),
W (0) ← Y (31)
According to the above embodiment, the linear transformation using the maximum distance separation code matrix can be reduced in size, and the entire pseudorandom number generator can be reduced in size. In addition, it is possible to minimize the state and its state update function while maintaining safety.

また、安全性の要となるステートの非線形変換を、ステート、バッファの線形状態更新関数の処理と分離して行うことにより、非線形変換の内部処理を並列化することが可能となる。この結果、特にハードウェア実装では、状態更新関数の処理に要する時間が短くなり、高速処理が可能となる。   In addition, by performing the nonlinear transformation of the state, which is the key to safety, separately from the processing of the state and buffer linear state update functions, it is possible to parallelize the internal processing of the nonlinear transformation. As a result, particularly in hardware implementation, the time required for processing the state update function is shortened, and high-speed processing is possible.

本実施例の一つの好ましい応用例は、たとえば、携帯電話などの小型電子機器において動画再生を行うなど高速なリアルタイム処理が必要となるシステムである。以下、本実施例を利用したデータの暗号化および配信システムについて説明する。図9は本実施例における疑似乱数生成装置(101)を用いて暗号化処理を行う暗号復号処理装置の構成を表す概略図である。   One preferred application of the present embodiment is a system that requires high-speed real-time processing such as playing a moving image in a small electronic device such as a mobile phone. The data encryption and distribution system using this embodiment will be described below. FIG. 9 is a schematic diagram showing the configuration of an encryption / decryption processing device that performs encryption processing using the pseudorandom number generation device (101) in the present embodiment.

暗号復号処理装置(901)は疑似乱数生成装置(101)を内蔵しており、暗号化処理を行う場合、鍵情報(911)と乱数列番号(912)、暗号化対象である入力データ(902)を入力し、暗号文である出力データ(903)を出力する。また、暗号復号処理装置(901)は、入力データ(902)のデータ長を測定する入力長判定装置(923)を持つ。暗号化処理では、入力長判定装置(923)の出力を出力長(123)とし、鍵情報(911)、乱数列番号(912)から疑似乱数生成装置(921)を介して生成されたビット列(922)を入力データ(902)とビットごとに排他的論理和回路(924)によって排他的論理和処理することで出力データ(903)を生成する。図9の暗号復号処理装置(901)においては、暗号化処理と復号処理は等価な処理であり、復号処理では入力データ(902)として暗号文を与えれば、出力データ(903)として復号文が得られる。   The encryption / decryption processing device (901) has a built-in pseudo-random number generation device (101), and when performing encryption processing, key information (911), random number sequence number (912), input data to be encrypted (902) ) And output data (903) which is ciphertext. The encryption / decryption processing device (901) has an input length determination device (923) that measures the data length of the input data (902). In the encryption processing, the output of the input length determination device (923) is set as the output length (123), and the bit string (921) generated from the key information (911) and the random number sequence number (912) via the pseudo random number generation device (921) ( The output data (903) is generated by performing exclusive OR processing on the input data (902) and the input data (902) by the exclusive OR circuit (924) for each bit. In the encryption / decryption processing apparatus (901) of FIG. 9, the encryption process and the decryption process are equivalent processes. In the decryption process, if a ciphertext is given as input data (902), a decrypted text is output as output data (903). can get.

図10は上記実施例における各装置(101、901)をソフトウェアを用いて実装する場合の機器構成例である。   FIG. 10 shows an example of a device configuration when each device (101, 901) in the above embodiment is mounted using software.

上記各装置(101、901)は、記憶装置(1011)、CPU(1012)、メモリ(1013)、入出力インターフェース(1014)が、データバスなどの内部通信線で繋がれている一般的な情報処理装置(1001)上に構成することが可能である。   Each of the above devices (101, 901) is a general information in which a storage device (1011), a CPU (1012), a memory (1013), and an input / output interface (1014) are connected by an internal communication line such as a data bus. It can be configured on the processing device (1001).

疑似乱数生成装置(101)は、記憶装置(1011)に処理プログラム(1023)としての疑似乱数生成プログラム(1023)、秘密鍵(1021)、および乱数列番号(1022)が格納されており、疑似乱数生成プログラム(1023)がCPU(1012)により実行されることで、実現される。   The pseudo random number generation device (101) stores a pseudo random number generation program (1023), a secret key (1021), and a random number sequence number (1022) as a processing program (1023) in a storage device (1011). This is realized by the random number generation program (1023) being executed by the CPU (1012).

なお、処理プログラム(1023)は、あらかじめ、上記記憶装置(1011)に格納されていても良いし、必要なときに、入出力インターフェース(1014)と情報処理装置(1001)が利用可能な媒体を介して、他の装置から上記記憶装置(1011)に導入されてもよい。媒体とは、たとえば、入出力インターフェース(1014)に着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波やディジタル信号)を指す。   Note that the processing program (1023) may be stored in the storage device (1011) in advance, or a medium that can be used by the input / output interface (1014) and the information processing device (1001) when necessary. Through this, the storage device (1011) may be introduced from another device. The medium refers to, for example, a storage medium that can be attached to and detached from the input / output interface (1014), or a communication medium (that is, a network or a carrier wave or digital signal that propagates through the network).

乱数生成処理時の入力データ(1031)としては、出力長N(123)があり、入出力インターフェース(1014)を介してメモリ(1013)に記憶される。乱数生成処理を行う場合には、CPU(1012)が疑似乱数生成プログラム(1023)を実行し、以下のステップに従った処理を行う。
ステップ1:疑似乱数生成プログラム(1023)をメモリ(1013)にロードする。
ステップ2:上記秘密鍵(1021)と乱数列番号(1022)を用いて図1におけるレジスタ(112)を実現するメモリ(1013)上の変数配列を初期化する。
ステップ3:CPU(1012)上でデータ攪拌処理とデータ出力処理を繰り返し行い、ビット列を生成する。
The input data (1031) at the time of random number generation processing includes an output length N (123), which is stored in the memory (1013) via the input / output interface (1014). When performing random number generation processing, the CPU (1012) executes the pseudo random number generation program (1023), and performs processing according to the following steps.
Step 1: The pseudo random number generation program (1023) is loaded into the memory (1013).
Step 2: The variable array on the memory (1013) for realizing the register (112) in FIG. 1 is initialized using the secret key (1021) and the random number sequence number (1022).
Step 3: Data agitation processing and data output processing are repeated on the CPU (1012) to generate a bit string.

乱数生成処理の結果は、同じくメモリ(1013)に記憶し、入出力インターフェース(1014)を介して出力データ(1032)として出力する。   The result of the random number generation process is also stored in the memory (1013) and output as output data (1032) via the input / output interface (1014).

なお、図10では乱数列番号(1022)はあらかじめ記憶装置(1011)に記憶されているものとしたが、出力長N(1031)と同様に入力データとして与えても良い。また、秘密鍵(1021)も同様に入力データとして与えても良い。   In FIG. 10, the random number sequence number (1022) is stored in advance in the storage device (1011), but may be given as input data in the same manner as the output length N (1031). Similarly, the secret key (1021) may be given as input data.

図10に示す装置に、上記実施例における暗号復号処理装置(901)をソフトウェア実装する場合は、以下のように構成する。記憶装置(1011)に、処理プログラム(1023)として暗号復号処理プログラムを格納し、疑似乱数生成装置の場合と同様に、秘密鍵(1021)、乱数列番号(1022)を格納する。そしてCPU(1012)が、暗号復号処理プログラム(1023)を実行することにより、暗号復号処理装置(901)が実現される。   In the case where the encryption / decryption processing apparatus (901) in the above-described embodiment is installed in the apparatus shown in FIG. 10, the configuration is as follows. The encryption / decryption processing program is stored as the processing program (1023) in the storage device (1011), and the secret key (1021) and the random number sequence number (1022) are stored as in the case of the pseudorandom number generation device. The CPU (1012) executes the encryption / decryption processing program (1023), thereby realizing the encryption / decryption processing device (901).

暗号処理を行う場合には、暗号復号処理プログラム(1023)はメモリ(1013)にロードされ、CPU(1012)上で演算処理を行う。暗号処理の入力データ(1031)は入出力インターフェース(1014)を介してメモリ(1013)に記憶される。また、暗号処理の結果は同じくメモリ(1013)に記憶され、入出力インターフェース(1014)を介して出力データ(1032)として出力される。   When performing encryption processing, the encryption / decryption processing program (1023) is loaded into the memory (1013), and arithmetic processing is performed on the CPU (1012). The input data (1031) for cryptographic processing is stored in the memory (1013) via the input / output interface (1014). The result of the cryptographic process is also stored in the memory (1013) and output as output data (1032) via the input / output interface (1014).

また、疑似乱数生成装置の場合と同様に、乱数列番号(1022)はあらかじめ記憶装置(1011)に記憶されていてもよいし、入力データ(1031)として与えても良い。また、秘密鍵(1021)も同様に入力データ(1031)として与えても良い。   Similarly to the case of the pseudorandom number generator, the random number sequence number (1022) may be stored in the storage device (1011) in advance or may be given as input data (1031). Similarly, the secret key (1021) may be given as input data (1031).

図11は本実施例を応用したコンテンツ配信システムの構成例である。   FIG. 11 is a configuration example of a content distribution system to which this embodiment is applied.

コンテンツ配信システムは、データ配信サーバ(1201)、受信端末(1202)、およびデータの転送路であるネットワーク(1204)からなる。コンテンツは暗号処理を施され、暗号文(1203)としてデータ配信サーバ(1201)から受信端末(1202)に配信される。ネットワークは有線でも無線でも良い。   The content distribution system includes a data distribution server (1201), a receiving terminal (1202), and a network (1204) which is a data transfer path. The content is subjected to cryptographic processing, and is distributed as ciphertext (1203) from the data distribution server (1201) to the receiving terminal (1202). The network may be wired or wireless.

データ配信サーバ(1201)は、記憶装置(1211)、CPU(1212)、メモリ(1213)、暗号処理システム(1214)および通信装置(1215)から構成される。コンテンツ(1216)は、記憶装置(1211)に格納されている。受信端末(1102)は、記憶装置(1221)、CPU(1222)、メモリ(1223)、暗号処理システム(1224)、コンテンツの再生装置(1226)から構成されている。   The data distribution server (1201) includes a storage device (1211), a CPU (1212), a memory (1213), a cryptographic processing system (1214), and a communication device (1215). The content (1216) is stored in the storage device (1211). The receiving terminal (1102) includes a storage device (1221), a CPU (1222), a memory (1223), a cryptographic processing system (1224), and a content playback device (1226).

データの配信は、次のステップに従って行う。
ステップ1:データ配信サーバ(1201)と受信端末(1202)は、同じ乱数列を共有できるように、事前に鍵情報(121)を秘密裡に共有し、乱数列番号(122)も、秘密裡である必要はないが、共有する。これらの情報を共有するには、例えば、公開鍵暗号技術を用いた鍵配送方法を用いることができる。
ステップ2:データ配信サーバ(1201)は、上記共有情報を与えた暗号処理システム(1214)を用いてコンテンツ(1216)を暗号化する。
ステップ3:データ配信サーバ(1201)は、暗号文データ(1203)を通信装置(1215)を用いて、ネットワーク(1204)を通じて受信端末(1202)に送信する。
ステップ4:受信端末(1202)は、通信装置(1225)を介して受信した暗号文データ(1203)を、上記共有情報を与えた暗号復号処理装置(1224)を用いて復号する。
ステップ5:受信端末(1202)は、復号化されたコンテンツを再生装置(1226)で再生する。
Data distribution is performed according to the following steps.
Step 1: The data distribution server (1201) and the receiving terminal (1202) share the key information (121) in a secret key in advance so that the same random number sequence can be shared, and the random number sequence number (122) is also a secret key. You don't have to be, but share it. In order to share these pieces of information, for example, a key distribution method using public key cryptography can be used.
Step 2: The data distribution server (1201) encrypts the content (1216) using the cryptographic processing system (1214) given the shared information.
Step 3: The data distribution server (1201) transmits the ciphertext data (1203) to the receiving terminal (1202) through the network (1204) using the communication device (1215).
Step 4: The receiving terminal (1202) decrypts the ciphertext data (1203) received via the communication device (1225) using the encryption / decryption processing device (1224) to which the shared information is given.
Step 5: The receiving terminal (1202) plays back the decrypted content on the playback device (1226).

上記通信方法では、通信が始まる前に乱数列番号(122)を共有しているが、乱数列番号(122)は暗号文(1203)に付随する形で通信中に受信端末(1202)に送付しても良い。この場合には、乱数列番号(122)を含む通信データにメッセージ認証子をつけることで、通信路上でのデータ改ざんによる安全性低下を避けることができる。   In the above communication method, the random number sequence number (122) is shared before communication starts, but the random number sequence number (122) is sent to the receiving terminal (1202) during communication in the form accompanying the ciphertext (1203). You may do it. In this case, by attaching a message authenticator to the communication data including the random number sequence number (122), it is possible to avoid a decrease in security due to data alteration on the communication path.

疑似乱数生成装置の概略構成を例示する図である。It is a figure which illustrates schematic structure of a pseudorandom number generator. 疑似乱数生成装置の処理手順を例示するフローチャートである。It is a flowchart which illustrates the process sequence of a pseudorandom number generator. 疑似乱数生成装置のデータ攪拌ユニットの概略構成を例示する図である。It is a figure which illustrates schematic structure of the data stirring unit of a pseudorandom number generator. 疑似乱数生成装置の非線形変換ユニットの構成を例示する概略図である。It is the schematic which illustrates the structure of the nonlinear transformation unit of a pseudorandom number generator. 疑似乱数生成装置のステート変換部の構成を例示する概略図である。It is the schematic which illustrates the structure of the state conversion part of a pseudorandom number generator. 疑似乱数生成装置のバッファ変換部の構成を例示する概略図である。It is the schematic which illustrates the structure of the buffer conversion part of a pseudorandom number generator. 疑似乱数生成装置の乱数出力装置の構成を例示する概略図である。It is the schematic which illustrates the structure of the random number output device of a pseudorandom number generator. 疑似乱数生成装置の初期化ユニットの構成を例示する概略図である。It is the schematic which illustrates the structure of the initialization unit of a pseudorandom number generator. 疑似乱数生成装置を用いて暗号化処理を行う暗号復号処理装置の構成を例示する概略図である。It is the schematic which illustrates the structure of the encryption / decryption processing apparatus which performs an encryption process using a pseudorandom number generator. 各装置をソフトウェアで実現する場合に用いる機器構成の概略を例示する図である。It is a figure which illustrates the outline of the apparatus structure used when each apparatus is implement | achieved by software. 疑似乱数生成装置を応用したコンテンツ配信システムの概略を例示する図である。It is a figure which illustrates the outline of the content delivery system which applied the pseudorandom number generation apparatus. 疑似乱数生成装置の小型非線形置換の概略構成を例示する図である。It is a figure which illustrates schematic structure of the small nonlinear replacement of a pseudorandom number generation device. 疑似乱数生成装置の初期化ユニットの別の構成を例示する概略図である。It is the schematic which illustrates another structure of the initialization unit of a pseudorandom number generator.

符号の説明Explanation of symbols

101:疑似乱数生成装置、102:外部入力データ、103:クロック生成ユニット、104:出力ビット列、105:パラメータ入力制御ユニット、111:初期化ユニット、112:レジスタ、113:データ攪拌ユニット、114:データ出力ユニット、115:ステップカウンタ、116:制御ユニット、117、118:スイッチ、121:鍵情報、122:乱数列番号、123:出力データ長、311:バッファ、312:ステート、321:非線形変換ユニット、322、323:線形変換ユニット、404:置換表(Sボックス)、923:入力長判定ユニット。   101: Pseudorandom number generator, 102: External input data, 103: Clock generation unit, 104: Output bit string, 105: Parameter input control unit, 111: Initialization unit, 112: Register, 113: Data mixing unit, 114: Data Output unit, 115: Step counter, 116: Control unit, 117, 118: Switch, 121: Key information, 122: Random number sequence number, 123: Output data length, 311: Buffer, 312: State, 321: Non-linear conversion unit, 322, 323: linear conversion unit, 404: substitution table (S box), 923: input length determination unit.

Claims (14)

2ブロック(1ブロックはnビット)の容量のステート記憶部、
複数ブロックの容量のバッファ、
クロック入力に応答して、前記バッファの記憶内容を入力し、該入力データと同サイズのデータを出力する非線形変換部、
前記ステート記憶部の内容と前記非線形変換部の出力とを入力し、出力を前記ステート記憶部に格納する第1の線形変換部、
前記クロック入力に応答して、前記バッファの記憶内容と前記ステート記憶部の記憶内容とを入力し、出力を前記バッファに格納する第2の線形変換部、及び
前記ステート記憶部の記憶内容を乱数列として出力する出力部
を有する疑似乱数生成装置。
State storage unit with a capacity of 2 blocks (1 block is n bits),
Multi-block capacity buffer,
In response to a clock input, a non-linear converter that inputs the stored contents of the buffer and outputs data having the same size as the input data;
The first linear conversion unit that inputs the contents of the state storage unit and the output of the nonlinear conversion unit, and stores the output in the state storage unit,
In response to the clock input, the second linear conversion unit that inputs the storage content of the buffer and the storage content of the state storage unit and stores the output in the buffer; and the storage content of the state storage unit A pseudo-random number generator having an output unit for outputting as a sequence.
n(K)ビットの秘密鍵を入力し、前記バッファの初期状態を定める初期化ユニットを有し、
前記バッファの前記複数ブロックの容量は前記n(K)ビットの少なくとも2倍の容量である請求項1に記載の疑似乱数生成装置。
Input an n (K) -bit secret key, and have an initialization unit that determines the initial state of the buffer,
2. The pseudorandom number generator according to claim 1, wherein a capacity of the plurality of blocks of the buffer is at least twice as large as the n (K) bits.
前記非線形変換部への入力が4ブロックである請求項2に記載の疑似乱数生成装置。   The pseudorandom number generation device according to claim 2, wherein the input to the nonlinear conversion unit is four blocks. 前記非線形変換部に入力する前記バッファのブロック位置をi1, i2, i3,及びi4とするとき、i2−i1, i3−i2,及びi4−i3が互いに異なる請求項3に記載の疑似乱数生成装置。   4. The pseudorandom number generation device according to claim 3, wherein i2-i1, i3-i2, and i4-i3 are different from each other when the block positions of the buffer input to the nonlinear conversion unit are i1, i2, i3, and i4. . さらに、i4−i1は、i2−i1, i3−i2,及びi4−i3のいずれとも異なる請求項4に記載の疑似乱数生成装置。   Furthermore, i4-i1 is different from all of i2-i1, i3-i2, and i4-i3, The pseudorandom number generator of Claim 4 characterized by the above-mentioned. 前記第2の線形変換部は以下の処理を実行する請求項4に記載の疑似乱数生成装置。
Y(i) ← B(i) (0≦i < M),
Y(j1) ← Y(j1) XOR Y(k1),
Y(j2) ← Y(j2) XOR Y(k2),
Y(j3) ← Y(j3) XOR Y(k3),
Y(M−1) ← Y(M−1) XOR A(0),
W(i+1) ← Y(i) (0 ≦i<M−1),
W(0) ← Y(M−1)
ただし、A(0)は前記ステート記憶部の上位ブロック、B(i)は前記バッファの第i番目のブロック、Mは前記バッファを構成するブロック数、W(i)は前記第二の線形変換部の出力、XORはブロック単位の排他的論理和処理、及び←はデータの代入をそれぞれ表し、i1≦ j1<k1< i2 ≦ j2< k2< i3≦ j3< k3< i4である。
The pseudo-random number generation device according to claim 4, wherein the second linear conversion unit performs the following processing.
Y (i) ← B (i) (0 ≦ i <M),
Y (j1) ← Y (j1) XOR Y (k1),
Y (j2) ← Y (j2) XOR Y (k2),
Y (j3) ← Y (j3) XOR Y (k3),
Y (M−1) ← Y (M−1) XOR A (0),
W (i + 1) ← Y (i) (0 ≤ i <M−1),
W (0) ← Y (M−1)
Where A (0) is the upper block of the state storage unit, B (i) is the i-th block of the buffer, M is the number of blocks constituting the buffer, and W (i) is the second linear transformation. Part output, XOR represents exclusive OR processing in units of blocks, and ← represents data substitution, i1 ≦ j1 <k1 <i2 ≦ j2 <k2 <i3 ≦ j3 <k3 <i4.
前記排他的論理和処理を定めるパラメータj1, j2, j3, k1, k2,及びk3は、k1−j1, k2−j2, k3−j3が互いに異なる請求項6に記載の疑似乱数生成装置。   The pseudo-random number generation device according to claim 6, wherein parameters j1, j2, j3, k1, k2, and k3 that define the exclusive OR processing are different from each other in k1-j1, k2-j2, k3-j3. 前記非線形変換部は、さらに1ブロックを入力し1ブロックを出力する非線形置換部を備え、以下の処理を実行する請求項4に記載の疑似乱数生成装置。
X(1) ← S[B(i1)],
X(2) ← S[B(i2)],
X(3) ← S[B(i3)],
X(4) ← S[B(i4)]
ただし、B(i)は前記バッファの第i番目のブロック、X(i)は前記非線形変換部の出力ブロック、S[Y]は前記非線形置換部による置換処理、及び←はデータの代入をそれぞれ表す。
The pseudo-random number generation device according to claim 4, wherein the non-linear conversion unit further includes a non-linear replacement unit that inputs one block and outputs one block, and executes the following processing.
X (1) ← S [B (i1)],
X (2) ← S [B (i2)],
X (3) ← S [B (i3)],
X (4) ← S [B (i4)]
However, B (i) is the i-th block of the buffer, X (i) is the output block of the nonlinear transformation unit, S [Y] is the substitution process by the nonlinear substitution unit, and ← is the substitution of data, respectively. To express.
前記第1の線形変換部は、さらに有限体上定義される乗算器をさらに備え、以下の処理を実行する請求項8に記載の疑似乱数生成装置。
P(0) ← A(0) XOR X(1),
P(1) ← A(1) XOR X(2),
Q(0) ← P(0) XOR mul(C1, P(1)),
Q(1) ← P(1) XOR mul(C2, P(0)),
R(0) ← Q(0) XOR X(3),
R(1) ← Q(1) XOR X(4)
ただし、A(i)は前記ステート記憶部の第i番目のブロック、X(i)は前記非線形変換部の出力する第i番目のブロック、R(i)は前記第一の線形変換部の出力ブロック、Ciは1ブロックサイズの0でない定数であって、C1及びC2のいずれか一方は1ではない定数、mul(x, y)は前記乗算器による乗算処理、及び←はデータの代入をそれぞれ表す。
The pseudo-random number generation device according to claim 8, wherein the first linear conversion unit further includes a multiplier defined on a finite field, and executes the following processing.
P (0) ← A (0) XOR X (1),
P (1) ← A (1) XOR X (2),
Q (0) ← P (0) XOR mul (C1, P (1)),
Q (1) ← P (1) XOR mul (C2, P (0)),
R (0) ← Q (0) XOR X (3),
R (1) ← Q (1) XOR X (4)
Where A (i) is the i-th block of the state storage unit, X (i) is the i-th block output from the nonlinear conversion unit, and R (i) is the output of the first linear conversion unit. Block, Ci is a non-zero constant of one block size, and one of C1 and C2 is not a constant, mul (x, y) is a multiplication process by the multiplier, and ← is a data substitution To express.
前記初期化ユニットは、外部入力として前記秘密鍵と共に乱数列番号を入力し、前記外部入力をワード単位のデータブロックに分割し、前記分割されたデータブロックを前記バッファに上位ワードから順に入力し、前記外部入力が入力されなかった前記バッファの下位ワードおよび前記ステート記憶部に規定の定数値を設定する、請求項2に記載の疑似乱数生成装置。   The initialization unit inputs a random number sequence number together with the secret key as an external input, divides the external input into data blocks in units of words, and inputs the divided data blocks sequentially from the upper word to the buffer, The pseudorandom number generation device according to claim 2, wherein a predetermined constant value is set in a lower word of the buffer to which the external input is not input and the state storage unit. 前記初期化ユニットは、さらに、前記分割された各データブロックのデータを前記バッファの特定のワードと排他的論理和し、前記バッファの値を更新し、前記非線形変換部、前記第1の線形変換部及び前記第2の線形変換部を動作させて前記バッファおよび前記ステート記憶部の内部状態を更新する請求項10に記載の疑似乱数生成装置。   The initialization unit further exclusive-ORs the data of each divided data block with a specific word of the buffer, updates the value of the buffer, the non-linear conversion unit, the first linear conversion 11. The pseudo-random number generation device according to claim 10, wherein an internal state of the buffer and the state storage unit is updated by operating a unit and the second linear conversion unit. 前記出力部は前記ステート記憶部の下位1ワードを部分乱数列として出力する請求項1に記載の疑似乱数生成装置。   The pseudo-random number generation device according to claim 1, wherein the output unit outputs a lower one word of the state storage unit as a partial random number sequence. 2ブロック(1ブロックはnビット)の容量のステート記憶部、
複数ブロックの容量のバッファ、
秘密鍵と乱数列番号とをワード単位のデータブロックに分割し、前記分割されたデータブロックを前記バッファに上位ワードから順に入力し、前記バッファの下位ワードおよび前記ステート記憶部に規定の定数値を設定する初期化ユニット、
クロック入力に応答して、前記バッファの記憶内容を入力し、該入力データと同サイズのデータを出力する非線形変換部、
前記ステート記憶部の内容と前記非線形変換部の出力とを入力し、出力を前記ステート記憶部に格納する第1の線形変換部、
前記クロック入力に応答して、前記バッファの記憶内容と前記ステート記憶部の記憶内容とを入力し、出力を前記バッファに格納する第2の線形変換部、及び
前記ステート記憶部のデータを出力する出力部を有する疑似乱数生成装置、並びに
データ列と前記出力部の出力データとをビットごとに排他的論理和をとる排他的論理和装置を有する暗号化/復号装置。
State storage unit with a capacity of 2 blocks (1 block is n bits),
Multi-block capacity buffer,
A secret key and a random number sequence number are divided into data blocks in units of words, the divided data blocks are sequentially input from the upper word to the buffer, and a predetermined constant value is input to the lower word of the buffer and the state storage unit. Initialization unit to set,
In response to a clock input, a non-linear converter that inputs the stored contents of the buffer and outputs data having the same size as the input data;
The first linear conversion unit that inputs the contents of the state storage unit and the output of the nonlinear conversion unit, and stores the output in the state storage unit,
In response to the clock input, the storage content of the buffer and the storage content of the state storage unit are input, the second linear conversion unit that stores the output in the buffer, and the data of the state storage unit are output A pseudo-random number generation device having an output unit, and an encryption / decryption device having an exclusive OR device that takes an exclusive OR of a data string and output data of the output unit for each bit.
(A)2ブロック(1ブロックはnビット)の容量の第1のステート記憶部、複数ブロックの容量の第1のバッファ、秘密鍵と乱数列番号とをワード単位のデータブロックに分割し、前記分割されたデータブロックを前記バッファに上位ワードから順に入力し、前記バッファの下位ワードおよび前記ステート記憶部に規定の定数値を設定する第1の初期化ユニット、第1のクロック入力に応答して、前記第1のバッファの記憶内容を入力し、該入力データと同サイズのデータを出力する第1の非線形変換部、前記第1のステート記憶部の内容と前記第1の非線形変換部の出力とを入力し、出力を前記第1のステート記憶部に格納する第1の線形変換部、前記第1のクロック入力に応答して、前記第1のバッファの記憶内容と前記第1のステート記憶部の記憶内容とを入力し、出力を前記第1のバッファに格納する第2の線形変換部、及び前記第1のステート記憶部のデータを出力する第1の出力部を含む第1の疑似乱数生成装置、コンテンツデータを格納する記憶装置、及び前記コンテンツデータと前記第1の出力部の出力データとをビットごとに排他的論理和をとる第1の排他的論理和装置を有し、暗号化したコンテンツデータを出力する暗号化装置を有するサーバと、
(B)ネットワークと、
(C)前記ネットワークを介して前記サーバに接続し、2ブロックの容量の第2のステート記憶部、複数ブロックの容量の第2のバッファ、前記秘密鍵と乱数列番号とをワード単位のデータブロックに分割し、前記分割されたデータブロックを前記バッファに上位ワードから順に入力し、前記バッファの下位ワードおよび前記ステート記憶部に規定の定数値を設定する第2の初期化ユニット、第2のクロック入力に応答して、前記第2のバッファの記憶内容を入力し、該入力データと同サイズのデータを出力する第2の非線形変換部、前記第2のステート記憶部の内容と前記第2の非線形変換部の出力とを入力し、出力を前記第2のステート記憶部に格納する第3の線形変換部、前記第2のクロック入力に応答して、前記第2のバッファの記憶内容と前記第2のステート記憶部の記憶内容とを入力し、出力を前記第2のバッファに格納する第4の線形変換部、及び前記第2のステート記憶部のデータを出力する第2の出力部を含む第2の疑似乱数生成装置、及び前記ネットワークを介して前記サーバから入力した前記暗号化したコンテンツデータと前記第2の出力部の出力データとをビットごとに排他的論理和をとる第2の排他的論理和装置を含み、前記コンテンツデータを再生するする復号化装置を有する端末装置とを備えたデータ配信システム。
(A) dividing a first state storage unit having a capacity of 2 blocks (1 block is n bits), a first buffer having a capacity of a plurality of blocks, a secret key and a random number sequence number into data blocks in units of words; In response to a first clock input, a first initialization unit that sequentially inputs divided data blocks to the buffer from the upper word and sets a predetermined constant value in the lower word of the buffer and the state storage unit. A first non-linear conversion unit that inputs the storage contents of the first buffer and outputs data having the same size as the input data; the contents of the first state storage unit and the output of the first non-linear conversion unit In response to the first clock input, and the storage contents of the first buffer and the first state storage in response to the first clock input. Part First pseudo-random number generation including a second linear conversion unit that inputs stored contents and stores an output in the first buffer, and a first output unit that outputs data of the first state storage unit Device, a storage device for storing content data, and a first exclusive OR device that performs exclusive OR for each bit of the content data and the output data of the first output unit A server having an encryption device for outputting content data;
(B) the network,
(C) connected to the server via the network, a second state storage unit having a capacity of 2 blocks, a second buffer having a capacity of a plurality of blocks, the secret key and the random number sequence number being a data block in units of words A second initialization unit for inputting the divided data block to the buffer in order from the upper word, and setting a predetermined constant value in the lower word of the buffer and the state storage unit, a second clock In response to the input, the second non-linear conversion unit that inputs the storage contents of the second buffer and outputs the same size data as the input data, the contents of the second state storage unit and the second state storage unit A third linear conversion unit that inputs the output of the nonlinear conversion unit and stores the output in the second state storage unit; in response to the second clock input, in the storage of the second buffer And a second output for outputting the data of the second state storage unit, and a fourth linear conversion unit for storing the output in the second buffer. A second pseudo-random number generator including a first part, and an exclusive-OR for each bit of the encrypted content data input from the server via the network and the output data of the second output part. A data distribution system comprising: a terminal device including two exclusive OR devices and a decryption device that reproduces the content data.
JP2007245710A 2007-03-30 2007-09-21 Pseudorandom number generator and encryption processing device using the same Active JP4857230B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007245710A JP4857230B2 (en) 2007-03-30 2007-09-21 Pseudorandom number generator and encryption processing device using the same
EP07023164.2A EP1975779B1 (en) 2007-03-30 2007-11-29 Encryption device using a pseudorandom number generator
US11/947,911 US8122075B2 (en) 2007-03-30 2007-11-30 Pseudorandom number generator and encryption device using the same

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007090214 2007-03-30
JP2007090214 2007-03-30
JP2007245710A JP4857230B2 (en) 2007-03-30 2007-09-21 Pseudorandom number generator and encryption processing device using the same

Publications (2)

Publication Number Publication Date
JP2008276728A JP2008276728A (en) 2008-11-13
JP4857230B2 true JP4857230B2 (en) 2012-01-18

Family

ID=40054571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007245710A Active JP4857230B2 (en) 2007-03-30 2007-09-21 Pseudorandom number generator and encryption processing device using the same

Country Status (1)

Country Link
JP (1) JP4857230B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5748634B2 (en) * 2011-10-25 2015-07-15 Kddi株式会社 Key sequence output device, stream cipher encryption device, stream cipher decryption device, key sequence output method, and program
JP6735062B2 (en) * 2014-12-12 2020-08-05 Kddi株式会社 Random number sequence generation device, method and program
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60137269D1 (en) * 2000-03-09 2009-02-12 Mitsubishi Electric Corp Blockchiffriergerät
JP3724399B2 (en) * 2001-01-23 2005-12-07 株式会社日立製作所 Pseudorandom number generator or encryption / decryption processing device using the same
JPWO2006019152A1 (en) * 2004-08-19 2008-05-08 株式会社日立製作所 Message authenticator generation device, message authenticator verification device, and message authenticator generation method

Also Published As

Publication number Publication date
JP2008276728A (en) 2008-11-13

Similar Documents

Publication Publication Date Title
JP4828068B2 (en) Computer efficient linear feedback shift register
JP4127472B2 (en) Data conversion apparatus, data conversion method and program for data conversion apparatus, and computer-readable recording medium
JP4905000B2 (en) Cryptographic processing apparatus, cryptographic processing method, and computer program
JP3724399B2 (en) Pseudorandom number generator or encryption / decryption processing device using the same
JP5000365B2 (en) Hash value generation device, program, and hash value generation method
JP4052480B2 (en) Pseudorandom number generation method, pseudorandom number generator, and pseudorandom number generation program
WO2005073842A1 (en) Pseudo random number generation device and pseudo random number generation program
JP7031580B2 (en) Cryptographic device, encryption method, decryption device, and decryption method
US8122075B2 (en) Pseudorandom number generator and encryption device using the same
JP2005215688A (en) Hardware encryption/decryption apparatus using s-box operation, and method for the same
JP2015191106A (en) Encryption processing device, encryption processing method, and program
CN112054896B (en) White box encryption method, white box encryption device, terminal and storage medium
JPWO2006019152A1 (en) Message authenticator generation device, message authenticator verification device, and message authenticator generation method
JPH10240500A (en) Random number generator and method, enciphering device and method, decoder and method and stream cipher system
Ghazi et al. Robust and efficient dynamic stream cipher cryptosystem
JP2015191107A (en) Encryption processing device, encryption processing method, and program
JP4857230B2 (en) Pseudorandom number generator and encryption processing device using the same
JP2010044251A (en) Hash value generator, program and hash value generation method
Buell Modern symmetric ciphers—Des and Aes
KR101076747B1 (en) Method and apparatus for random accessible encryption and decryption by using a hierarchical tree structure of stream cipher module
JP2006135969A (en) Information processor, information processing method and program
EP3493457A1 (en) Method for protecting a source of entropy used in countermeasures securing a whitebox cryptographic algorithm
JP2007013503A (en) Encryption device and method and decryption device and method
JP7383949B2 (en) Information processing equipment and programs
JPH0736673A (en) Random-number generator, communication system using the same and device therefor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091120

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: 20111004

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: 20111031

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4857230

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150