JPWO2005073842A1 - 擬似乱数生成装置および擬似乱数生成プログラム - Google Patents
擬似乱数生成装置および擬似乱数生成プログラム Download PDFInfo
- Publication number
- JPWO2005073842A1 JPWO2005073842A1 JP2005517513A JP2005517513A JPWO2005073842A1 JP WO2005073842 A1 JPWO2005073842 A1 JP WO2005073842A1 JP 2005517513 A JP2005517513 A JP 2005517513A JP 2005517513 A JP2005517513 A JP 2005517513A JP WO2005073842 A1 JPWO2005073842 A1 JP WO2005073842A1
- Authority
- JP
- Japan
- Prior art keywords
- shift register
- feedback shift
- linear feedback
- polynomial
- coefficient
- 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.)
- Pending
Links
- 239000000284 extract Substances 0.000 claims description 4
- 238000000034 method Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000470 constituent Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/584—Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
擬似乱数生成装置(1)は、第1線形フィードバックシフトレジスタ(2)、第2線形フィードバックシフトレジスタ(3)、初期値生成部(4)、多項式係数生成部(5)および擬似乱数出力部(6)を有する。初期値生成部(4)は、初期値を生成し、第1線形フィードバックシフトレジスタ(2)および第2線形フィードバックシフトレジスタ(3)へ供給する。多項式係数生成部(5)は、特性多項式の係数を生成して第2線形フィードバックシフトレジスタ(3)へ供給する。擬似乱数出力部(6)は、第1線形フィードバックシフトレジスタ(2)および第2線形フィードバックシフトレジスタ(3)から順次出力されるビット列を基に、各ビットの排他的論理和から擬似乱数列を生成、出力する。
Description
本発明は、暗号通信に利用される擬似乱数を生成する擬似乱数生成装置および擬似乱数生成プログラムに関する。
現在、電話や無線、インターネット等におけるデータ通信では、通信されるデータを第三者による盗聴や改ざんから保護するために、データの暗号化が行われている。データの送信側では、暗号鍵を用いて送信するデータを暗号化した後送信し、受信側では、その暗号化されたデータを受信すると、復号鍵を用いて復号化しデータを得ている。もしこの時、第三者がデータを傍受しても、正当な復号鍵を持たないため暗号化されたデータを復号することができず、また、意図したデータの改ざんを行うこともできない。
このような暗号化の方式には、共通鍵暗号方式や公開鍵暗号方式があり、それぞれの特徴をいかして利用される条件に応じて選択される。いずれの方式であっても、暗号鍵によって通信されるデータの安全性が保障されており、その暗号鍵は容易に推測されないように擬似乱数を用いる方法が知られている。
例えば、線形フィードバックシフトレジスタによる擬似乱数の生成方法では、乱数生成のための比較的短い初期値からデータ長の長い擬似乱数列を生成することができるため、複数の装置で同じ擬似乱数を生成しようとするとき、初期値を共有するだけで良い。また、一般に、特定の条件を満たす原始多項式を特性多項式とする複数の線形フィードバックシフトレジスタを組み合わせることで、生成される擬似乱数の予測が困難な擬似乱数生成装置を実現可能なことが知られている。さらに、初期値を共有しなくても、複数の線形フィードバックシフトレジスタの選択情報を共有化することで、同じ擬似乱数列を生成することも可能である(例えば、特開平10−91066号公報参照)。
しかしながら、線形フィードバックシフトレジスタを用いた擬似乱数生成装置では、たとえ非線形な処理を組み合わせた方法であっても、ある特定のアルゴリズムで擬似乱数が生成されるため、初期値や生成される擬似乱数列の一部からその後生成される擬似乱数が推測される恐れがあった。
また、複数の線形フィードバックシフトレジスタからいくつかのレジスタを選択して擬似乱数を生成する場合には、生成される擬似乱数列の推測は困難になるものの、任意の係数を特性多項式とする線形フィードバックシフトレジスタを組み合わせると、生成される擬似乱数列が必ずしもM系列(Maximum length sequences)とはならずに、短い周期で同じ擬似乱数列を繰り返し生成してしまうという問題があるため、予め特定の条件を満たす多項式を多数用意した中から選択して組み合わせる必要があった。これは実際の処理では、常に利用するわけではない線形フィードバックシフトレジスタを実装する必要があり効率的ではなかった。
本発明は、生成される擬似乱数列や送受信されるデータを観測されても、その後生成される擬似乱数列の推測が困難な暗号通信に好適な擬似乱数生成装置および擬似乱数生成プログラムを提供することを目的とする。
上記目的を達成するために、第1の態様に係る発明は、所定のビット長の擬似乱数列を生成する擬似乱数生成装置であって、m段のシフトレジスタを有し、所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、n段のシフトレジスタを有し、所定のビット長のビット列を出力する第2の線形フィードバックシフトレジスタと、所定の条件に従って、前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタを構成する各シフトレジスタの初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成部と、所定の条件に従って、前記第2の線形フィードバックシフトレジスタの特性多項式の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成部と、前記第1の線形フィードバックシフトレジスタの特性多項式として原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶部と、所定の条件に従って、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を特性多項式の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択部と、前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力部と、を備える擬似乱数生成装置を要旨とする。
また、第2の態様に係る発明は、第1の態様に係る発明において、前記擬似乱数生成装置は、前記原始多項式選択部によって選択された前記原始多項式の識別情報、前記初期値生成部によって生成された前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタを構成する各シフトレジスタの初期値、前記多項式係数生成部によって生成された前記特性多項式の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1のフィードバックシフトレジスタと前記第2のフィードバックシフトレジスタとの各初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記特性多項式の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択部に供給する通信部を備え、前記原始多項式選択部は、前記通信部によって抽出された前記識別情報を基に、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の線形フィードバックシフトレジスタへ供給することを要旨とする。
また、上記目的を達成するために、第3の態様に係る発明は、所定のビット長の擬似乱数列を生成するコンピュータによって実行される擬似乱数生成プログラムであって、当該擬似乱数生成プログラムは、前記コンピュータを、m段のシフトレジスタを有し、所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、n段のシフトレジスタを有し、所定のビット長のビット列を出力する第2の線形フィードバックシフトレジスタと、所定の条件に従って、前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタを構成する各シフトレジスタの初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成手段と、所定の条件に従って、前記第2の線形フィードバックシフトレジスタの特性多項式の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成手段と、前記第1の線形フィードバックシフトレジスタの特性多項式として原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶手段と、所定の条件に従って、前記原始多項式記憶手段に記憶されている原始多項式を1つ選択し、その原始多項式の係数を特性多項式の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択手段と、前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力手段として機能させる擬似乱数生成プログラムを要旨とする。
また、第4の態様に係る発明は、第3の態様に係る発明において、前記擬似乱数生成プログラムは、前記コンピュータを、前記原始多項式選択手段によって選択された前記原始多項式の識別情報、前記初期値生成手段によって生成された前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタを構成する各シフトレジスタの初期値、前記多項式係数生成手段によって生成された前記特性多項式の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1のフィードバックシフトレジスタと前記第2のフィードバックシフトレジスタとの各初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記特性多項式の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択手段に供給する通信手段としても機能させ、前記原始多項式選択手段は、前記通信手段によって抽出された前記識別情報を基に、前記原始多項式記憶手段に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の線形フィードバックシフトレジスタへ供給することを要旨とする。
本発明の実施形態を、図1〜図9を用いて説明する。なお、擬似乱数生成装置1が生成する擬似乱数のビット長をh+1とする。
<第1の実施形態>
第1の実施形態における擬似乱数生成装置1Aは、図1に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、および擬似乱数出力部6を有する。
第1の実施形態における擬似乱数生成装置1Aは、図1に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、および擬似乱数出力部6を有する。
第1線形フィードバックシフトレジスタ2は、m次の線形フィードバックシフトレジスタであり、m個のフリップフロップ回路を有する(詳細については後述)。また、第2線形フィードバックシフトレジスタ3は、n次の線形フィードバックシフトレジスタであり、n個のフリップフロップ回路を有する(詳細については後述)。
初期値生成部4は、外部から入力される初期情報、あるいは予め定められた所定の条件、例えば、日時情報のように常に変化する情報や熱雑音等の物理現象を利用して得られる条件に従って、第1線形フィードバックシフトレジスタ2を構成する各フリップフロップの初期値ia(iam−1,iam−2,…,ia1,ia0)を生成し、第1線形フィードバックシフトレジスタ2へ供給する機能と、第2線形フィードバックシフトレジスタ3を構成する各フリップフロップの初期値ib(ibn−1,ibn−2,…,ib1,ib0)を生成し、第2線形フィードバックシフトレジスタ3へ供給する機能を有する。ただし、第1線形フィードバックシフトレジスタ2からの出力が常に“0”にならないよう、少なくとも初期値iam−1乃至ia0のいずれか1つが値“1”であり、同様に、少なくとも初期値ibn−1乃至ib0のいずれか1つが値“1”であることとする。
また、多項式係数生成部5は、外部から入力される初期情報、あるいは予め定められた所定の条件、例えば、日時情報のように常に変化する情報や熱雑音等の物理現象を利用して得られる条件に従って、第2線形フィードバックシフトレジスタ3の特性多項式の係数s(sn−1,sn−2,…,s2,s1)を生成し、第2線形フィードバックシフトレジスタ3へ供給する機能を有する。
また、擬似乱数出力部6は、第1線形フィードバックシフトレジスタ2から順次出力されるビット列ra(ra0,ra1,…,rah−1,rah)と、および第2線形フィードバックシフトレジスタ3から順次出力されるビット列rb(rb0,rb1,…,rbh−1,rbh)とに基づいて、各ビットの排他的論理和を求め所定のビット長の擬似乱数r(r0,r1,…,rh−1,rh)を生成し、出力する機能を有する。
第1線形フィードバックシフトレジスタ2は、図2に示すように、m個のフリップフロップ回路とAND回路、およびXOR回路から構成される。この第1線形フィードバックシフトレジスタ2の特性多項式は、予め定められた原始多項式amxm+am−1xm−1+am−2xm−2+…+a2x2+a1x+a0(ただし、am=1及びa0=1)であり、AND回路それぞれに原始多項式の係数a(am−1,…,a1)が設定される。
従って、ai=0(0<i<m)の時は、フリップフロップFAi−1(0<i<m)から出力される値に関係なくAND回路からは“0”が出力され、ai=1(0<i<m)の時は、フリップフロップFAi−1(0<i<m)から出力される値が出力される。
第2線形フィードバックシフトレジスタ3は、図3に示すように、n個のフリップフロップ回路とAND回路、およびXOR回路から構成される。この第2線形フィードバックシフトレジスタ3の特性多項式をbnxn+bn−1xn−1+bn−2xn−2+…+b2x2+b1x+b0とすると、AND回路それぞれに特性多項式の係数b(bn−1,…,b1=係数s)が設定される。
従って、bj=0(0<j<n)の時は、フリップフロップFBj−1(0<j<n)から出力される値に関係なくAND回路からは“0”が出力され、bj=1(0<j<n)の時は、フリップフロップFBj−1(0<j<n)から出力される値が出力される。
次に、擬似乱数生成装置1Aの動作について、図4のフローチャートに基づいて説明する。
擬似乱数生成装置1Aが擬似乱数生成の処理を開始すると、まず、初期値生成部4が、外部から入力される初期情報、あるいは予め定められた所定の条件に従って、初期値ia(iam−1,iam−2,…,ia1,ia0)と初期値ib(ibn−1,ibn−2,…,ib1,ib0)を生成し(ステップS01)、それぞれの初期値を第1線形フィードバックシフトレジスタ2と第2線形フィードバックシフトレジスタ3へ供給する。
また、多項式係数生成部5が、外部から入力される初期情報、あるいは予め定められた所定の条件に従って、第2線形フィードバックシフトレジスタ3の特性多項式の係数s(sn−1,sn−2,…,s2,s1)を生成し(ステップS02)、第2線形フィードバックシフトレジスタ3へ供給する。
第1線形フィードバックシフトレジスタ2と第2線形フィードバックシフトレジスタ3は、初期値生成部4と多項式係数生成部5から各初期値と係数が供給されると、各フリップフロップ回路とAND回路に各初期値と係数を設定し、出力ビット数をカウントするカウンタkの値をk=0に設定する(ステップS03)。第1線形フィードバックシフトレジスタ2の各フリップフロップ回路FAm−1,FAm−2,…,FA1,FA0には、初期値ia(iam−1,iam−2,…,ia1,ia0)が設定され、各AND回路には、原始多項式の係数a(am−1,…,a1)が設定される。また、第2線形フィードバックシフトレジスタ3の各フリップフロップ回路FBn−1,FBn−2,…,FB1,FB0には、初期値ib(ibn−1,ibn−2,…,ib1,ib0)が設定され、各AND回路には、特性多項式の係数s(sn−1,sn−2,…,s2,s1)が設定される。なお、図3の第2線形フィードバックシフトレジスタ3では、bn=1,b0=1としているが、bnおよびb0にAND回路を設けて、他の係数と同様に任意の値を設定できるようにしてもよい。
次に、第1線形フィードバックシフトレジスタ2にクロック信号を入力すると(ステップS04)、第1線形フィードバックシフトレジスタ2は演算を行い、ビットrakを出力する(ステップS05)。同様に、第2線形フィードバックシフトレジスタ3にクロック信号を入力すると(ステップS06)、第2線形フィードバックシフトレジスタ3は演算を行い、ビットrbkを出力する(ステップS07)。
擬似乱数出力部6は、第1線形フィードバックシフトレジスタ2からビットrakが出力され、第2線形フィードバックシフトレジスタ3からビットrbkが出力されると、両ビット値の排他的論理和を求めビットrkを生成する(ステップS08)。
次に、第1線形フィードバックシフトレジスタ2と第2線形フィードバックシフトレジスタ3は、カウンタkの値を1つインクリメント(k←k+1)し(ステップS09)、カウンタkの値がhの値を超えたかどうか判定する(ステップS10)。カウンタkの値がh以下の場合は、第1線形フィードバックシフトレジスタ2はステップS04に戻ってビットrak+1を出力し、第2線形フィードバックシフトレジスタ3はステップS06に戻ってビットrbk−1を出力し、擬似乱数出力部6は、ビットrk+1を生成する。
カウンタkの値がhより大きい場合は、擬似乱数生成装置1は擬似乱数生成処理を終了し、これまでに生成されたビットr0,r1,…,rh−1,rhが擬似乱数r(r0,r1,…,rh−1,rh)として出力される(ステップS11)。
ここで、図5を用いて具体的に説明する。一例として、8ビットの擬似乱数rを出力するものとし、第1線形フィードバックシフトレジスタ2の原始多項式をx7+x3+1とし、第1線形フィードバックシフトレジスタ2のフリップフロップ回路を7段構成として初期値ia(ia6,ia5,…,ia1,ia0)=(1,0,1,0,1,0,1)、第2線形フィードバックシフトレジスタ3のフリップフロップ回路を8段構成として初期値ib(ib7,ib6,…,ib1,ib0)=(1,1,1,1,0,0,0,0)、第2線形フィードバックシフトレジスタ3の特性多項式の係数s(s7,s6,…,s2,s1)=(0,1,1,1,0,1,1)がそれぞれ設定されたとする。
まず、1回目のクロック信号が入力されると、第1線形フィードバックシフトレジスタ2においては、FA0→FA1、FA1→FA2、…、FA5→FA6とビットがシフトして(FA6,FA5,FA4,FA3,FA2,FA1)=(0,1,0,1,0,1)となる。第1線形フィードバックシフトレジスタ2の原始多項式をx7+x3+1なので、FA6のビット“1”はFA2からFA3へ出力されるビット“1”との排他的論理和“0”をFA0にフィードバックして図5の+1の状態になり、第1線形フィードバックシフトレジスタ2は“0”をra0として出力する。
また、1回目のクロック信号が入力されると、第2線形フィードバックシフトレジスタ3においては、FB0→FB1、FB1→FB2、…、FB6→FB7とビットがシフトして(FB7,FB6,FB5,FB4,FB3,FB2,FB1)=(1,1,1,0,0,0,0)となる。特性多項式の係数s(s7,s6,…,s2,s1)=(0,1,1,1,0,1,1)から、特性多項式はx8+x6+x5+x4+x2+x+1なので、FB5からFB6へ出力されるビット“1”と、FB3からFB4へ出力されるビット“0”と、FB1からFB2へ出力されるビット“0”と、FB0からFB1へ出力されるビット“0”との排他的論理和“1”をFB0にフィードバックして図5の+1の状態になり、第2線形フィードバックシフトレジスタ3は“1”をrb0として出力する。
2回目のクロック信号が入力されると、第1線形フィードバックシフトレジスタ2および第2線形フィードバックシフトレジスタ3は、同様にビットシフトを行い、原始多項式と特性多項式に基づいてフィードバックを行い、図5の+2の状態となり、それぞれra1=0およびrb1=1を出力する。
このように演算を繰り返すことによって、第1線形フィードバックシフトレジスタ2からは(ra0,ra1,…,ra6,ra7)=(0,0,0,0,1,0,1,1)、第2線形フィードバックシフトレジスタ3からは(rb0,rb1,…,rb6,rb7)=(1,1,1,1,1,0,0,1)が出力され、(ra0,ra1,…,ra6,ra7)=(0,0,0,0,1,0,1,1)と(rb0,rb1,…,rb6,rb7)=(1,1,1,1,1,0,0,1)との排他的論理和から擬似乱数r(r0,r1,…,r6,r7)=(1,1,1,1,0,0,1,0)が出力される。
<第2の実施形態>
第2の実施形態における擬似乱数生成装置1Bは、図6に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、擬似乱数出力部6、原始多項式選択部7、および原始多項式記憶部8を有する。なお、第1の実施形態と同じものについては、同じ番号を付し、その詳細な説明を省略する。
第2の実施形態における擬似乱数生成装置1Bは、図6に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、擬似乱数出力部6、原始多項式選択部7、および原始多項式記憶部8を有する。なお、第1の実施形態と同じものについては、同じ番号を付し、その詳細な説明を省略する。
原始多項式選択部7は、外部から入力される初期情報に従って、原始多項式記憶部8に記憶されている原始多項式を1つ選択し、特性多項式としてその原始多項式の係数a(am−1,…,a1)を第1線形フィードバックシフトレジスタ2へ供給する機能を有する。
原始多項式記憶部8は、第1線形フィードバックシフトレジスタ2の各AND回路を設定するための原始多項式を識別情報と共に複数記憶する。なお、原始多項式を指定する識別情報としては番号を用いることができる。以下、識別番号と称する。この識別番号によって、原始多項式の係数より少ない情報量で各AND回路を設定することが可能であり、例えば、図6に示すように、ビット長を2ビットとすると、原始多項式記憶部8は、識別番号No.“00”はx7+x3+1、識別番号No.“01”はx7+x3+x2+x+1、識別番号No.“10”はx7+x4+x3+x2+1、識別番号No.“11”はx7+x6+x5+x4+x2+x+1というような原始多項式を記憶する。
次に、擬似乱数生成装置1Bの動作について、図7のフローチャートに基づいて説明する。
擬似乱数生成装置1Bが擬似乱数生成の処理を開始すると、まず、原始多項式選択部7が、外部から入力される初期情報に従って、原始多項式記憶部8から原始多項式を1つ選択し(ステップS21)、その選択した原始多項式の係数を特性多項式の係数a(am−1,…,a1)として第1線形フィードバックシフトレジスタ2へ供給する。
また、初期値生成部4は、外部から入力される初期情報、あるいは予め定められた所定の条件に従って、初期値ia(iam−1,iam−2,…,ia1,ia0)と初期値ib(ibn−1,ibn−2,…,ib1,ib0)を生成し(ステップS22)、それぞれの初期値を第1線形フィードバックシフトレジスタ2と第2線形フィードバックシフトレジスタ3へ供給する。
また、多項式係数生成部5が、外部から入力される初期情報、あるいは予め定められた所定の条件に従って、第2線形フィードバックシフトレジスタ3の特性多項式の係数s(sn−1,sn−2,…,s2,s1)を生成し(ステップS23)、第2線形フィードバックシフトレジスタ3へ供給する。
第1線形フィードバックシフトレジスタ2と第2線形フィードバックシフトレジスタ3は、原始多項式選択部7、初期値生成部4、および多項式係数生成部5から各初期値と係数が供給されると、各フリップフロップ回路とAND回路に各初期値と係数を設定し、出力ビット数をカウントするカウンタkの値をk=0に設定する(ステップS24)。第1線形フィードバックシフトレジスタ2の各フリップフロップ回路FAm−1,FAm−2,…,FA1,FA0には、初期値ia(iam−1,iam−2,…,ia1,ia0)が設定され、各AND回路には、原始多項式選択部7から供給された特性多項式の係数a(am−1,…,a1)が設定される。また、第2線形フィードバックシフトレジスタ3の各フリップフロップ回路FBn−1,FBn−2,…,FB1,FB0には、初期値ib(ibn−1,ibn−2,…,ib1,ib0)が設定され、各AND回路には、特性多項式の係数s(sn−1,sn−2,…,s2,s1)が設定される。なお、図3の第2線形フィードバックシフトレジスタ3では、bn=1,b0=1としているが、bnおよびb0にAND回路を設けて、他の係数と同様に任意の値を設定できるようにしてもよい。
以降、第1の実施形態(ステップS04〜ステップS11)と同様の処理を行って擬似乱数r(r0,r1,…,rh−1,rh)を出力する(ステップS25〜ステップS32)。
<第3の実施形態>
第3の実施形態として、2つの擬似乱数生成装置1、例えば送信装置側に設けられた擬似乱数生成装置1と受信装置側に設けられた擬似乱数生成装置1とで特性多項式の係数と初期値(イニシャルデータ)を共有して、同じ擬似乱数を生成する擬似乱数生成装置1Cを示す。
第3の実施形態として、2つの擬似乱数生成装置1、例えば送信装置側に設けられた擬似乱数生成装置1と受信装置側に設けられた擬似乱数生成装置1とで特性多項式の係数と初期値(イニシャルデータ)を共有して、同じ擬似乱数を生成する擬似乱数生成装置1Cを示す。
第3の実施形態における擬似乱数生成装置1Cは、図8に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、擬似乱数出力部6、原始多項式選択部7、原始多項式記憶部8、および通信部9を有する。なお、第1の実施形態および第2の実施形態と同じものについては、同じ番号を付し、その詳細な説明を省略する。また、便宜的に、イニシャルデータ送信側の擬似乱数生成装置1の構成要件には“t”の文字を、イニシャルデータ受信側の擬似乱数生成装置1の構成要件には“r”の文字を付す。
通信部9は、原始多項式選択部7が選択した原始多項式の識別番号、初期値生成部4が生成した初期値ia(iam−1,iam−2,…,ia1,ia0)および初期値ib(ibn−1,ibn−2,…,ib1,ib0)、多項式係数生成部5が生成した特性多項式の係数s(sn−1,sn−2,…,s2,s1)を基に、原始多項式の識別番号、特性多項式の係数の初期値、および各初期値のそれぞれのビット列からなるイニシャルデータを生成する機能、およびそのイニシャルデータを他の擬似乱数生成装置1と送受信する機能を有する。
また、通信部9は、イニシャルデータを受信した場合は、イニシャルデータから初期値ib(ibn−1,ibn−2,…,ib1,ib0)と特性多項式の係数s(sn−1,sn−2,…,s2,s1)とを抽出し、第2線形フィードバックシフトレジスタ3に供給する機能、イニシャルデータから初期値ia(iam−1,iam−2,…,ia1,ia0)を抽出し、第1線形フィードバックシフトレジスタ2に供給する機能、イニシャルデータから原始多項式の識別番号を抽出し、原始多項式選択部7に供給する機能を有する。
次に、2つの擬似乱数生成装置1Cで同じ擬似乱数を生成する際の動作について、図9のシーケンス図に基づいて説明する。
擬似乱数生成装置1Ctが擬似乱数生成の処理を開始すると、まず、原始多項式選択部7tが、外部から入力される初期情報に従って、原始多項式記憶部8tから原始多項式を1つ選択し(ステップS41)、その選択した原始多項式の係数を特性多項式の係数a(am−1,…,a1)として第1線形フィードバックシフトレジスタ2tへ供給すると共に、通信部9tへ原始多項式の識別番号を供給する。
また、初期値生成部4tは、外部から入力される初期情報、あるいは予め定められた所定の条件に従って、初期値ia(iam−1,iam−2,…,ia1,ia0)と初期値ib(ibn−1,ibn−2,…,ib1,ib0)を生成し(ステップS42)、それぞれの初期値を第1線形フィードバックシフトレジスタ2t、第2線形フィードバックシフトレジスタ3t、および通信部9tへ供給する。
また、多項式係数生成部5tが、外部から入力される初期情報、あるいは予め定められた所定の条件に従って、第2線形フィードバックシフトレジスタ3tの特性多項式の係数s(sn−1,sn−2,…,s2,s1)を生成し(ステップS43)、第2線形フィードバックシフトレジスタ3tと通信部9tへ供給する。
第1線形フィードバックシフトレジスタ2tと第2線形フィードバックシフトレジスタ3tは、原始多項式選択部7t、初期値生成部4t、および多項式係数生成部5tから各初期値と係数が供給されると、各フリップフロップ回路とAND回路に各初期値と係数を設定し、出力ビット数をカウントするカウンタkの値をk=0に設定する(ステップS44)。第1線形フィードバックシフトレジスタ2tの各フリップフロップ回路FAm−1,FAm−2,…,FA1,FA0には、初期値ia(iam−1,iam−2,…,ia1,ia0)が設定され、各AND回路には、原始多項式選択部7tから供給された特性多項式の係数a(am−1,…,a1)が設定される。また、第2線形フィードバックシフトレジスタ3tの各フリップフロップ回路FBn−1,FBn−2,…,FB1,FB0には、初期値ib(ibn−1,ibn−2,…,ib1,ib0)が設定され、各AND回路には、特性多項式の係数s(sn−1,sn−2,…,s2,s1)が設定される。なお、図3の第2線形フィードバックシフトレジスタ3tでは、bn=1,b0=1としているが、bnおよびb0にAND回路を設けて、他の係数と同様に任意の値を設定できるようにしてもよい。
また、通信部9tは、原始多項式の識別番号、特性多項式の係数、および各初期値のそれぞれのビット値からなるイニシャルデータを生成し擬似乱数生成装置1Crへ送信する(ステップS45)。この時、通信部9tは、所定の暗号化方式でイニシャルデータを暗号化して送信しても良い。
例えば、原始多項式の識別番号が2ビット(“10”)、初期値iaが7ビット(“1010101”)、初期値ibが8ビット(“11110000”)、特性多項式の係数sが7ビット(“0111011”)であった場合、イニシャルデータは24ビットのデータ列(識別番号|初期値ia|初期値ib|係数s)=(101010101111100000111011)となる。
以降、擬似乱数生成装置1Ctは、第1の実施形態(ステップS04〜ステップS11)と同様の処理を行って擬似乱数r(r0,r1,…,rh−1,rh)を出力する(ステップS46〜ステップS51)。
一方、擬似乱数生成装置1Crの通信部9rは、擬似乱数生成装置1Ctからイニシャルデータを受信すると(ステップS52)、イニシャルデータから初期値ib(ibn−1,ibn−2,…,ib1,ib0)と特性多項式の係数s(sn−1,sn−2,…,s2,s1)とを抽出し、第2線形フィードバックシフトレジスタ3rに供給し、イニシャルデータから初期値ia(iam−1,iam−2,…,ia1,ia0)を抽出し、第1線形フィードバックシフトレジスタ2rに供給し、イニシャルデータから原始多項式の識別番号を抽出し、原始多項式選択部7rに供給する。なお、受信したイニシャルデータが暗号化されている場合は、通信部9は、復号化してイニシャルデータを得る。
原始多項式選択部7rは、原始多項式の識別番号が供給されると、その識別番号に該当する原始多項式を原始多項式記憶部8rから1つ選択し(ステップS53)、その選択した原始多項式の係数を特性多項式の係数a(am−1,…,a1)として第1線形フィードバックシフトレジスタ2rへ供給する。
また、第1線形フィードバックシフトレジスタ2rと第2線形フィードバックシフトレジスタ3rは、原始多項式選択部7r、および通信部9rから各初期値と各係数が供給されると、各フリップフロップ回路とAND回路に各初期値と係数を設定し、出力ビット数をカウントするカウンタkの値をk=0に設定する(ステップS54)。
以降、擬似乱数生成装置1Crは、第1の実施形態(ステップS04〜ステップS11)と同様の処理を行って擬似乱数r(r0,r1,…,rh−1,rh)を出力する(ステップS55〜ステップS60)。
このようにして、2つの擬似乱数生成装置1でイニシャルデータを共有することによって、同じ擬似乱数を生成することが可能となる。
なお、擬似乱数生成装置1は、上記の機能を記述した擬似乱数生成プログラムを汎用コンピュータに実行させることによって実現させても良い。この擬似乱数生成プログラムは、記録媒体から読み取られて汎用コンピュータに実行されても良いし、ネットワークを介して外部から伝送されて汎用コンピュータに実行されても良い。
本発明によれば、常に所定のM系列より長い周期の擬似乱数列を生成することが可能となり、初期値だけでなく、特性多項式の係数も任意に設定できるため、生成された擬似乱数列を観測されてもその後生成される擬似乱数列を推測することは困難であり、生成される擬似乱数列の安全性を確保することができ、通信されるデータの安全性が保障される。識別情報と原始多項式との対応が分からなければ、通信されるデータの解読は困難である。
また、第1の線形フィードバックシフトレジスタの特性多項式として設定される原始多項式の選択には、その識別情報を用いることにより、係数を送受信するより少ないデータ量で済む。つまり、識別情報を原始多項式より少ない情報量とすれば、情報量を少なくすることができる。
【0002】
たとえ非線形な処理を組み合わせた方法であっても、ある特定のアルゴリズムで擬似乱数が生成されるため、初期値や生成される擬似乱数列の一部からその後生成される擬似乱数が推測される恐れがあった。
[0006] また、複数の線形フィードバックシフトレジスタからいくつかのレジスタを選択して擬似乱数を生成する場合には、生成される擬似乱数列の推測は困難になるものの、任意の係数を特性多項式とする線形フィードバックシフトレジスタを組み合わせると、生成される擬似乱数列が必ずしもM系列(Maximum length sequences)とはならずに、短い周期で同じ擬似乱数列を繰り返し生成してしまうという問題があるため、予め特定の条件を満たす多項式を多数用意した中から選択して組み合わせる必要があった。これは実際の処理では、常に利用するわけではない線形フィードバックシフトレジスタを実装する必要があり効率的ではなかった。
【発明の開示】
[0007] 本発明は、生成される擬似乱数列や送受信されるデータを観測されても、その後生成される擬似乱数列の推測が困難な暗号通信に好適な擬似乱数生成装置および擬似乱数生成プログラムを提供することを目的とする。
[0008] 上記目的を達成するため、第1の態様に係る発明は、所定のビット長の擬似乱数列を生成する擬似乱数生成装置であって、m段のシフトレジスタを有し、特定多項式として原始多項式を用い、前記m段のシフトレジスタに第1の初期値と第1の係数を設定して所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、n段のシフトレジスタを有し、特定多項式を用い、前記n段のシフトレジスタに第2の初期値と第2の係数を設定して所定のビット長のビット列を出力する第2の線形フィードバックシフトレジスタと、所定の条件に従って、前記第1および第2の初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成部と、所定の条件に従って、前記第2の線形フィードバックシフトレジスタで用いる前記第2の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成部と、前記第1の線形フィードバックシフトレジスタで用いる原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶部と、
2
たとえ非線形な処理を組み合わせた方法であっても、ある特定のアルゴリズムで擬似乱数が生成されるため、初期値や生成される擬似乱数列の一部からその後生成される擬似乱数が推測される恐れがあった。
[0006] また、複数の線形フィードバックシフトレジスタからいくつかのレジスタを選択して擬似乱数を生成する場合には、生成される擬似乱数列の推測は困難になるものの、任意の係数を特性多項式とする線形フィードバックシフトレジスタを組み合わせると、生成される擬似乱数列が必ずしもM系列(Maximum length sequences)とはならずに、短い周期で同じ擬似乱数列を繰り返し生成してしまうという問題があるため、予め特定の条件を満たす多項式を多数用意した中から選択して組み合わせる必要があった。これは実際の処理では、常に利用するわけではない線形フィードバックシフトレジスタを実装する必要があり効率的ではなかった。
【発明の開示】
[0007] 本発明は、生成される擬似乱数列や送受信されるデータを観測されても、その後生成される擬似乱数列の推測が困難な暗号通信に好適な擬似乱数生成装置および擬似乱数生成プログラムを提供することを目的とする。
[0008] 上記目的を達成するため、第1の態様に係る発明は、所定のビット長の擬似乱数列を生成する擬似乱数生成装置であって、m段のシフトレジスタを有し、特定多項式として原始多項式を用い、前記m段のシフトレジスタに第1の初期値と第1の係数を設定して所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、n段のシフトレジスタを有し、特定多項式を用い、前記n段のシフトレジスタに第2の初期値と第2の係数を設定して所定のビット長のビット列を出力する第2の線形フィードバックシフトレジスタと、所定の条件に従って、前記第1および第2の初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成部と、所定の条件に従って、前記第2の線形フィードバックシフトレジスタで用いる前記第2の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成部と、前記第1の線形フィードバックシフトレジスタで用いる原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶部と、
2
【0003】
所定の条件に従って、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択部と、前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力部と、を備える擬似乱数生成装置を要旨とする。
[0009] また、第2の態様に係る発明は、第1の態様に係る発明において、前記疑似乱数生成装置は、前記原始多項式選択部によって選択された前記原始多項式の識別情報、前記初期値生成部によって生成された前記第1および第2の初期値、前記多項式係数生成部によって生成された前記第2の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1および第2の初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記第2の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択部に供給する通信部を備え、前記原始多項式選択部は、前記通信部によって抽出された前記識別情報を基に、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の係数として前記第1の線形フィードバックシフトレジスタへ供給することを要旨とする。
[0010] また、上記目的を達成するため、第3の態様に係る発明は、コンピュータによって所定のビット長の擬似乱数列を生成する処理を実行させる擬似乱数生成プログラムであって、当該擬似乱数生成プログラムは、前記コンピュータを、m段のシフトレジスタを有し、特定多項式として原始多項式を用い、前記m段のシフトレジスタに第1の初期値と第1の係数を設定して所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、n段のシフトレジスタを有し、特定多項式を用い、前記n段のシフトレジスタに第2の初期値と第2の係数を設定して所定のビット長のビ
3
所定の条件に従って、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択部と、前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力部と、を備える擬似乱数生成装置を要旨とする。
[0009] また、第2の態様に係る発明は、第1の態様に係る発明において、前記疑似乱数生成装置は、前記原始多項式選択部によって選択された前記原始多項式の識別情報、前記初期値生成部によって生成された前記第1および第2の初期値、前記多項式係数生成部によって生成された前記第2の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1および第2の初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記第2の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択部に供給する通信部を備え、前記原始多項式選択部は、前記通信部によって抽出された前記識別情報を基に、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の係数として前記第1の線形フィードバックシフトレジスタへ供給することを要旨とする。
[0010] また、上記目的を達成するため、第3の態様に係る発明は、コンピュータによって所定のビット長の擬似乱数列を生成する処理を実行させる擬似乱数生成プログラムであって、当該擬似乱数生成プログラムは、前記コンピュータを、m段のシフトレジスタを有し、特定多項式として原始多項式を用い、前記m段のシフトレジスタに第1の初期値と第1の係数を設定して所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、n段のシフトレジスタを有し、特定多項式を用い、前記n段のシフトレジスタに第2の初期値と第2の係数を設定して所定のビット長のビ
3
【0004】
ット列を出力する第2の線形フィードバックシフトレジスタと、所定の条件に従って、前記第1およぴ第2の初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成手段と、所定の条件に従って、前記第2の線形フィードバックシフトレジスタで用いる前記第2の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成手段と、前記第1の線形フィードバックシフトレジスタで用いる原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶手段と、所定の条件に従って、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択手段と、前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力手段として機能させる擬似乱数生成プログラムを要旨とする。
[0011] また、第4の態様に係る発明は、第3の態様に係る発明において、前記擬似乱数生成プログラムは、前記コンピュータを前記原始多項式選択手段によって選択された前記原始多項式の識別情報、前記初期値生成手段によって生成された前記第1および第2の初期値、前記多項式係数生成手段によって生成された前記第2の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1および第2の初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記第2の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択手段に供給する通信手段としても機能させ、前記原始多項式選択手段は、前記通信手段によって抽出された前記識別情報を基に、前記原始多項式記憶手段に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記
4
ット列を出力する第2の線形フィードバックシフトレジスタと、所定の条件に従って、前記第1およぴ第2の初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成手段と、所定の条件に従って、前記第2の線形フィードバックシフトレジスタで用いる前記第2の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成手段と、前記第1の線形フィードバックシフトレジスタで用いる原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶手段と、所定の条件に従って、前記原始多項式記憶部に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択手段と、前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力手段として機能させる擬似乱数生成プログラムを要旨とする。
[0011] また、第4の態様に係る発明は、第3の態様に係る発明において、前記擬似乱数生成プログラムは、前記コンピュータを前記原始多項式選択手段によって選択された前記原始多項式の識別情報、前記初期値生成手段によって生成された前記第1および第2の初期値、前記多項式係数生成手段によって生成された前記第2の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1および第2の初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記第2の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択手段に供給する通信手段としても機能させ、前記原始多項式選択手段は、前記通信手段によって抽出された前記識別情報を基に、前記原始多項式記憶手段に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記
4
【0005】
第1の係数として前記第1の線形フィードバックシフトレジスタへ供給することを要旨とする。
【図面の簡単な説明】
[0012][図1]図1は、第1の実施形態における擬似乱数生成装置の機能構成を示す図である。
[図2]図2は、第1線形フィードバックシフトレジスタの回路構成を示す図である。
[図3]図3は、第2線形フィードバックシフトレジスタの回路構成を示す図である。
[図4]図4は、第1の実施形態における擬似乱数生成の処理を示すフローチャートである。
[図5]図5は、第1線形フィードバックシフトレジスタと第2線形フィードバックシフトレジスタの値の遷移を示す図である。
[図6]図6は、第2の実施形態における擬似乱数生成装置の機能構成を示す図である。
[図7]図7は、第2の実施形態における擬似乱数生成の処理を示すフローチャートである。
[図8]図8は、第3の実施形態における擬似乱数生成装置の機能構成を示す図である。
[図9]図9は、第3の実施形態における擬似乱数生成の処理を示すフローチャートである。
【発明を実施するための最良の形態】
[0013] 本発明の実施形態を、図1〜図9を用いて説明する。なお、擬似乱数生成装置1が生成する擬似乱数のビット長をh+1とする。
[0014]<第1の実施形態>
第1の実施形態における擬似乱数生成装置1Aは、図1に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、および疑似乱数出力部6を有する。
[0015]第1線形フィードバックシフトレジスタ2は、m次の線形フィードバックシフトレジスタであり、m個のフリップフロップ回路を有する(詳細については後述)。また、第2線形
5
第1の係数として前記第1の線形フィードバックシフトレジスタへ供給することを要旨とする。
【図面の簡単な説明】
[0012][図1]図1は、第1の実施形態における擬似乱数生成装置の機能構成を示す図である。
[図2]図2は、第1線形フィードバックシフトレジスタの回路構成を示す図である。
[図3]図3は、第2線形フィードバックシフトレジスタの回路構成を示す図である。
[図4]図4は、第1の実施形態における擬似乱数生成の処理を示すフローチャートである。
[図5]図5は、第1線形フィードバックシフトレジスタと第2線形フィードバックシフトレジスタの値の遷移を示す図である。
[図6]図6は、第2の実施形態における擬似乱数生成装置の機能構成を示す図である。
[図7]図7は、第2の実施形態における擬似乱数生成の処理を示すフローチャートである。
[図8]図8は、第3の実施形態における擬似乱数生成装置の機能構成を示す図である。
[図9]図9は、第3の実施形態における擬似乱数生成の処理を示すフローチャートである。
【発明を実施するための最良の形態】
[0013] 本発明の実施形態を、図1〜図9を用いて説明する。なお、擬似乱数生成装置1が生成する擬似乱数のビット長をh+1とする。
[0014]<第1の実施形態>
第1の実施形態における擬似乱数生成装置1Aは、図1に示すように、第1線形フィードバックシフトレジスタ2、第2線形フィードバックシフトレジスタ3、初期値生成部4、多項式係数生成部5、および疑似乱数出力部6を有する。
[0015]第1線形フィードバックシフトレジスタ2は、m次の線形フィードバックシフトレジスタであり、m個のフリップフロップ回路を有する(詳細については後述)。また、第2線形
5
Claims (4)
- 所定のビット長の擬似乱数列を生成する擬似乱数生成装置(1)であって、
m段のシフトレジスタを有し、所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタ(2)と、
n段のシフトレジスタを有し、所定のビット長のビット列を出力する第2の線形フィードバックシフトレジスタ(3)と、
所定の条件に従って、前記第1の線形フィードバックシフトレジスタ(2)および前記第2の線形フィードバックシフトレジスタ(3)を構成する各シフトレジスタの初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタ(2)および前記第2の線形フィードバックシフトレジスタ(3)へ供給する初期値生成部(4)と、
所定の条件に従って、前記第2の線形フィードバックシフトレジスタ(3)の特性多項式の係数を生成し、前記第2の線形フィードバックシフトレジスタ(3)へ供給する多項式係数生成部(5)と、
前記第1の線形フィードバックシフトレジスタ(2)の特性多項式として原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶部(8)と、
所定の条件に従って、前記原始多項式記憶部(8)に記憶されている原始多項式を1つ選択し、その原始多項式の係数を特性多項式の係数として前記第1の線形フィードバックシフトレジスタ(2)へ供給する原始多項式選択部(7)と、
前記第1の線形フィードバックシフトレジスタ(2)から出力されるビット列と、前記第2の線形フィードバックシフトレジスタ(3)から出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力部(6)と、
を備えることを特徴とする擬似乱数生成装置(1)。 - 前記擬似乱数生成装置(1C)は、
前記原始多項式選択部(7)によって選択された前記原始多項式の識別情報、前記初期値生成部(4)によって生成された前記第1の線形フィードバックシフトレジスタ(2)および前記第2の線形フィードバックシフトレジスタ(3)を構成する各シフトレジスタの初期値、前記多項式係数生成部(5)によって生成された前記特性多項式の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置(1C)へ送出し、当該イニシャルデータを他の擬似乱数生成装置(1C)から受信した場合は、当該イニシャルデータから前記第1のフィードバックシフトレジスタ(2)と前記第2のフィードバックシフトレジスタ(3)との各初期値を抽出して前記第1の線形フィードバックシフトレジスタ(2)と前記第2の線形フィードバックシフトレジスタ(3)に供給し、当該イニシャルデータから前記特性多項式の係数を抽出して前記第2の線形フィードバックシフトレジスタ(3)へ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択部(7)に供給する通信部(9)を備え、
前記原始多項式選択部(7)は、前記通信部(9)によって抽出された前記識別情報を基に、前記原始多項式記憶部(8)に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の線形フィードバックシフトレジスタ(2)へ供給することを特徴とする請求の範囲第1項に記載の擬似乱数生成装置。 - 所定のビット長の擬似乱数列を生成するコンピュータによって実行される擬似乱数生成プログラムであって、
当該擬似乱数生成プログラムは、前記コンピュータを、
m段のシフトレジスタを有し、所定のビット長のビット列を出力する第1の線形フィードバックシフトレジスタと、
n段のシフトレジスタを有し、所定のビット長のビット列を出力する第2の線形フィードバックシフトレジスタと、
所定の条件に従って、前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタを構成する各シフトレジスタの初期値を生成し、それぞれの当該初期値を前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタへ供給する初期値生成手段と、
所定の条件に従って、前記第2の線形フィードバックシフトレジスタの特性多項式の係数を生成し、前記第2の線形フィードバックシフトレジスタへ供給する多項式係数生成手段と、
前記第1の線形フィードバックシフトレジスタの特性多項式として原始多項式を、前記原始多項式を指定する識別情報と共に複数記憶する原始多項式記憶手段と、
所定の条件に従って、前記原始多項式記憶手段に記憶されている原始多項式を1つ選択し、その原始多項式の係数を特性多項式の係数として前記第1の線形フィードバックシフトレジスタへ供給する原始多項式選択手段と、
前記第1の線形フィードバックシフトレジスタから出力されるビット列と、前記第2の線形フィードバックシフトレジスタから出力されるビット列とに基づいて、各ビットの論理演算から所定のビット長の擬似乱数列を生成し、出力する擬似乱数出力手段と、
して機能させることを特徴とする擬似乱数生成プログラム。 - 前記擬似乱数生成プログラムは、前記コンピュータを、
前記原始多項式選択手段によって選択された前記原始多項式の識別情報、前記初期値生成手段によって生成された前記第1の線形フィードバックシフトレジスタおよび前記第2の線形フィードバックシフトレジスタを構成する各シフトレジスタの初期値、前記多項式係数生成手段によって生成された前記特性多項式の係数のそれぞれからなるイニシャルデータを生成し、当該イニシャルデータを他の擬似乱数生成装置へ送出し、当該イニシャルデータを他の擬似乱数生成装置から受信した場合は、当該イニシャルデータから前記第1のフィードバックシフトレジスタと前記第2のフィードバックシフトレジスタとの各初期値を抽出して前記第1の線形フィードバックシフトレジスタと前記第2の線形フィードバックシフトレジスタに供給し、当該イニシャルデータから前記特性多項式の係数を抽出して前記第2の線形フィードバックシフトレジスタへ供給し、当該イニシャルデータから前記原始多項式の識別情報を抽出して前記原始多項式選択手段に供給する通信手段としても機能させ、
前記原始多項式選択手段は、前記通信手段によって抽出された前記識別情報を基に、前記原始多項式記憶手段に記憶されている原始多項式を1つ選択し、その原始多項式の係数を前記第1の線形フィードバックシフトレジスタへ供給する手段であることを特徴とする請求の範囲第3項に記載の擬似乱数生成プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004023335 | 2004-01-30 | ||
JP2004023335 | 2004-01-30 | ||
PCT/JP2005/001211 WO2005073842A1 (ja) | 2004-01-30 | 2005-01-28 | 擬似乱数生成装置および擬似乱数生成プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2005073842A1 true JPWO2005073842A1 (ja) | 2007-09-13 |
Family
ID=34823869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005517513A Pending JPWO2005073842A1 (ja) | 2004-01-30 | 2005-01-28 | 擬似乱数生成装置および擬似乱数生成プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070174374A1 (ja) |
JP (1) | JPWO2005073842A1 (ja) |
CN (1) | CN100472430C (ja) |
WO (1) | WO2005073842A1 (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4734089B2 (ja) * | 2005-10-27 | 2011-07-27 | 日立オートモティブシステムズ株式会社 | 車載端末 |
CN101127575B (zh) * | 2007-09-12 | 2010-09-01 | 中兴通讯股份有限公司 | 一种均匀分布随机数发生器及均匀分布随机数产生方法 |
JP5191727B2 (ja) * | 2007-12-21 | 2013-05-08 | 株式会社ジャパンディスプレイイースト | 表示装置 |
US8788552B2 (en) * | 2008-01-25 | 2014-07-22 | Tata Consultancy Services Ltd. | Deterministic random number generator for cryptography and digital watermarking |
JP5577799B2 (ja) * | 2009-04-10 | 2014-08-27 | 株式会社デンソー | 車載モータの駆動制御方法 |
KR101685173B1 (ko) * | 2009-07-13 | 2016-12-12 | 주식회사 팬택 | 무선통신 시스템에서의 시퀀스 생성 방법 및 그 장치 |
CN102025389B (zh) * | 2009-09-09 | 2014-06-11 | 中兴通讯股份有限公司 | 一种伪随机序列的生成方法及装置 |
US10635062B2 (en) * | 2010-06-29 | 2020-04-28 | International Business Machines Corporation | Systems and methods for highly parallel processing of parameterized simulations |
CN102565665B (zh) * | 2010-12-17 | 2014-05-28 | 炬力集成电路设计有限公司 | 一种电路检测装置及方法 |
CN102707923A (zh) * | 2011-04-25 | 2012-10-03 | 中国电子科技集团公司第三十八研究所 | 一种伪随机数生成电路及伪随机数产生方法 |
US8832167B2 (en) * | 2011-07-21 | 2014-09-09 | Vixs Systems, Inc. | Random number generator |
CN102314332B (zh) * | 2011-07-27 | 2014-04-09 | 中国科学院计算机网络信息中心 | 伪随机数生成装置和方法 |
CN102495717A (zh) * | 2011-11-24 | 2012-06-13 | 安徽建筑工业学院 | 第一类非线性m子序列发生器 |
US8689357B2 (en) * | 2012-05-19 | 2014-04-01 | Freescale Semiconductor, Inc. | Tamper detector for secure module |
JP2014164342A (ja) * | 2013-02-21 | 2014-09-08 | Fujitsu Semiconductor Ltd | 擬似乱数生成回路および擬似乱数生成方法 |
US9201629B2 (en) | 2013-03-14 | 2015-12-01 | International Business Machines Corporation | Instruction for performing a pseudorandom number seed operation |
US8873750B2 (en) * | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
CN104579630A (zh) * | 2013-10-25 | 2015-04-29 | 上海华力创通半导体有限公司 | 系统随机数生成方法 |
CN104636115B (zh) * | 2013-11-14 | 2017-12-15 | 国家电网公司 | 一种真随机数后处理装置及方法 |
CN103645882A (zh) * | 2013-12-09 | 2014-03-19 | 中颖电子股份有限公司 | 基于单片机的批量乱序随机数的生成方法 |
JP6380804B2 (ja) | 2014-04-16 | 2018-08-29 | パナソニックIpマネジメント株式会社 | 乱数処理装置および乱数処理方法 |
CN105138306A (zh) * | 2015-08-12 | 2015-12-09 | 中国电子科技集团公司第四十一研究所 | 一种数据位数可选的伪随机信号发生方法 |
CN105045561A (zh) * | 2015-08-12 | 2015-11-11 | 中国电子科技集团公司第四十一研究所 | 一种伪随机数产生方法 |
CN105159652A (zh) * | 2015-08-12 | 2015-12-16 | 中国电子科技集团公司第四十一研究所 | 一种多通道伪随机信号发生方法 |
CN105183428A (zh) * | 2015-08-12 | 2015-12-23 | 中国电子科技集团公司第四十一研究所 | 一种伪随机信号产生方法 |
WO2017150672A1 (ja) * | 2016-03-03 | 2017-09-08 | 国立大学法人京都大学 | 乱数発生装置、乱数発生方法及びコンピュータプログラム |
US10599796B2 (en) * | 2017-04-28 | 2020-03-24 | Taiwan Semiconductor Manufacturing Co., Ltd. | Metastable flip-flop based true random number generator (TRNG) structure and compiler for same |
EP3959851A1 (en) * | 2019-04-23 | 2022-03-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Network entities, methods, appartuses and communications networks for authenticating an event |
CN111262686A (zh) * | 2020-01-17 | 2020-06-09 | 通号万全信号设备有限公司 | 一种rssp-i安全通信的安全校验方法 |
CN111813374A (zh) * | 2020-07-01 | 2020-10-23 | 浙江三维利普维网络有限公司 | 基于dsp的伪随机序列的生成方法和装置、存储介质 |
CN113760222A (zh) * | 2021-07-31 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种随机数产生装置和方法 |
CN115424391B (zh) * | 2022-07-20 | 2024-05-07 | 兰州大学 | 一种基于fpga的随机小数发生器及其生成方法 |
CN116382634B (zh) * | 2023-05-29 | 2023-08-08 | 牛芯半导体(深圳)有限公司 | 伪随机码生成电路、方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4032764A (en) * | 1975-12-01 | 1977-06-28 | Savage John E | Means and method for generating permutations of a square |
JPS61141231A (ja) * | 1984-12-13 | 1986-06-28 | Sony Corp | 送信方式 |
US5258936A (en) * | 1992-08-05 | 1993-11-02 | Motorola, Inc. | Method and apparatus for generating pseudo-random numbers |
JPH09179726A (ja) * | 1995-12-25 | 1997-07-11 | Nec Corp | 擬似乱数発生装置 |
US5974443A (en) * | 1997-09-26 | 1999-10-26 | Intervoice Limited Partnership | Combined internet and data access system |
JP3587675B2 (ja) * | 1998-02-18 | 2004-11-10 | 富士通株式会社 | 擬似雑音発生装置 |
US6188714B1 (en) * | 1998-12-29 | 2001-02-13 | Texas Instruments Incorporated | Parallel M-sequence generator circuit |
US6353842B1 (en) * | 1999-11-23 | 2002-03-05 | Janusz Rajski | Method for synthesizing linear finite state machines |
-
2005
- 2005-01-28 US US10/587,753 patent/US20070174374A1/en not_active Abandoned
- 2005-01-28 JP JP2005517513A patent/JPWO2005073842A1/ja active Pending
- 2005-01-28 WO PCT/JP2005/001211 patent/WO2005073842A1/ja active Application Filing
- 2005-01-28 CN CNB2005800035315A patent/CN100472430C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070174374A1 (en) | 2007-07-26 |
WO2005073842A1 (ja) | 2005-08-11 |
CN1914590A (zh) | 2007-02-14 |
CN100472430C (zh) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2005073842A1 (ja) | 擬似乱数生成装置および擬似乱数生成プログラム | |
JP5575248B2 (ja) | 通信端末、通信システム、通信方法及び通信プログラム | |
US9350544B2 (en) | Apparatus for encrypting data | |
JP4828068B2 (ja) | コンピュータで効率的な線形フィードバック・シフト・レジスタ | |
CN101116283B (zh) | 使用散列链来检查装置间的邻近关系的方法和设备 | |
US20040174997A1 (en) | Key agreement system, shared-key generation apparatus, and shared-key recovery apparatus | |
US20060039558A1 (en) | Pseudo-random number generation method and pseudo-random number generator | |
JP2016505887A (ja) | 乱数生成器及びストリーム暗号 | |
US20170278433A1 (en) | Secret calculation device, method, recording medium, and secret calculation system | |
JP6501873B2 (ja) | 暗号システムの再現可能なランダムシーケンス | |
US7587046B2 (en) | Method and apparatus for generating keystream | |
JP2007019789A (ja) | 乱数共有システムおよび方法 | |
JP3358953B2 (ja) | 擬似ランダムビット列生成器及びそれを使用する暗号通信方法 | |
JP3358954B2 (ja) | 擬似ランダムビット列生成器及びそれを使用する暗号通信方法 | |
JP4718222B2 (ja) | データ送信装置、データ受信装置、並びにデータ通信装置 | |
JP5586758B1 (ja) | 動的暗号化鍵生成システム | |
RU2277759C2 (ru) | Способ формирования ключа шифрования-дешифрования | |
JP2008206127A (ja) | データ通信装置及びデータ通信方法 | |
JP4570381B2 (ja) | 電子データ伝送システム及び電子データ伝送方法 | |
US10708043B2 (en) | One pad communications | |
JP4955415B2 (ja) | 複数の乱数列を用いた情報通信装置及び情報通信方法 | |
RU2291578C1 (ru) | Способ поточного шифрования данных | |
Rane et al. | Hardware implementation of RC4 stream cipher using VLSI | |
JP2006121215A (ja) | 鍵交換方法、及び、鍵交換処理装置 | |
CN117574402A (zh) | 密钥信息的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081226 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090127 |