疑似乱数生成器Enocoroの回路であって、線形変換回路1と第一の非線形変換回路とを含む疑似乱数生成器の1ラウンド分の処理回路と、マスク保持回路と、マスク生成回路とを含み、前記マスク生成回路の出力は、前記疑似乱数生成器の1ラウンド分の処理回路と前記マスク保持ユニットへの入力であり、前記マスク保持回路の出力は、前記疑似乱数生成器の1ラウンド分の処理回路への入力であり、前記疑似乱数生成器の1ラウンド分の処理回路は、前記マスク保持ユニットが出力するマスクと前記マスク生成ユニットが出力するマスクとを入力とし、前記疑似乱数生成器の1ラウンド分の処理回路の処理対象データをマスクして変換処理を行うことを特徴とする暗号処理装置。請求項1に記載の暗号処理装置であって、前記マスク保持回路は、前記第1の線形変換回路と同一の第2の線形変換回路を含み、前記疑似乱数生成器の1ラウンド分の処理回路と同期して動作することを特徴とする暗号処理装置。請求項1または2に記載の暗号処理装置であって、前記マスク保持回路は、前記マスク生成回路の出力データを、前記マスク保持回路において前記非線形変換回路の出力箇所と一致する箇所へ入力することを特徴とする暗号処理装置。請求項1から3のいずれか一に記載の暗号処理装置であって、前記マスク生成回路は、前記疑似乱数生成器の1ラウンド分の処理回路が含む非線形変換回路の計算過程のデータ、及び、計算結果をマスクする乱数を生成することを特徴とする暗号処理装置。請求項1から4のいずれか一に記載の暗号処理装置であって、前記マスク生成回路は、疑似乱数生成装置を用いてマスクを生成することを特徴とする暗号処理装置。請求項5に記載の暗号処理装置であって、前記マスク生成回路は、真性乱数生成装置を用いてマスクを生成することを特徴とする号処理装置。請求項1から6のいずれか一に記載の暗号処理装置であって、前記疑似乱数生成器の1ラウンド分の処理回路が含む非線形変換回路は、前記疑似乱数生成器の1ラウンド分の処理回路のデータと、前記マスク保持回路のデータと、前記マスク生成回路が出力するマスクとを入力とし、マスクをはずすことなく、かつマスクを更新しつつ、計算を行い、マスクされた出力データを出力することを特徴とする暗号処理装置。請求項1から7のいずれか一に記載の暗号処理装置であって、前記疑似乱数生成器の1ラウンド分の処理回路が含む非線形変換回路は、マスクを用いて演算処理を行うことを特徴とする暗号処理装置。非特許文献1の技術を適用することで、AES暗号回路のサイドチャネル攻撃耐性の向上が見込まれる。しかし、非特許文献1では、AESアルゴリズムへの適用を前提としており、疑似乱数生成器EnocoroのようにAESと異なるアルゴリズムに適用する手順については言及していない。更に、AESに対するサイドチャネル攻撃対策技術は非特許文献1などで報告されているが、疑似乱数生成器Enocoroに対するサイドチャネル攻撃対策技術は知られていない。疑似乱数生成器Enocoroをより安全に利用するためにも、サイドチャネル攻撃対策が望ましい。本明細書では、上記の課題に鑑みて、上記課題を解決する構成が複数開示される。その一例を挙げるならば、マスク生成ユニット、マスク保持ユニット、及び、ラウンド処理ユニットを用いて疑似乱数生成器Enocoro回路を構成する。ラウンド処理ユニットは、線形変換回路と非線形変換回路とを含む疑似乱数生成器Enocoroの1ラウンド分の処理回路である。マスク生成ユニットは、ラウンド処理ユニットに含まれる非線形変換回路で使用するための新たなマスクを生成する回路である。マスク保持ユニットは、ラウンド処理ユニットが含む線形変換回路と同一の線形変換回路を含み、ラウンド処理ユニットと同期して動作する。マスク保持ユニットへはマスク生成ユニットの出力値を入力し、また、マスク保持ユニットの値をラウンド処理ユニットの非線形変換回路へ出力する。このように疑似乱数生成器Enocoro回路を構成することで、疑似乱数生成器Enocoro回路の内部状態レジスタに格納される値にマスクをかけ、非線形変換において使用する新たなマスクをマスク生成ユニットで生成しつつ、内部状態レジスタに格納される値に使用しているマスクをマスク保持ユニットで保存することができる。これらの処理によって、疑似乱数生成器Enocoro回路の内部状態をマスクし、非線形変換にもマスクを適用できるようになるため、疑似乱数生成器Enocoro回路のサイドチャネル攻撃耐性を向上させることができる。開示によれば、乱数を用いてサイドチャネル攻撃耐性の向上が可能な疑似乱数生成器Enocoro回路を実現できる。本発明の実施の形態について図面を参照して説明する。各図中の六角形は、データを示す。図1は、乱数を用いてサイドチャネル攻撃対策を施した、疑似乱数生成器Enocoroの回路図である。疑似乱数生成器Enocoro101は、272ビットのS入力シード102、128ビットのS出力シード103、及び、秘密鍵128ビットと初期ベクトル64ビットと定数80ビットを同順に結合した272ビットの初期値104とを入力する。疑似乱数列114は、疑似乱数生成器Enocoro101の出力データである疑似乱数列である。図示を省略するが疑似乱数生成器Enocoro101は、入力されるタイミング信号クロックに応じて、以下に説明する各レジスタと各処理ユニットが各々の動作を進める。セレクタ105は、疑似乱数生成器Enocoro101へS入力シード102が入力された場合はS入力シード102を選択し、それ以外の場合は272ビットのS入力マスクレジスタ入力値116を選択する。この選択結果を272ビットの中間データ115として出力する。セレクタ106も同様に、疑似乱数生成器Enocoro101へS出力シード103が入力された場合はS出力シード103を選択し、それ以外の場合は128ビットのS出力マスクレジスタ入力値120を選択する。この選択結果を128ビットの中間データ119として出力する。セレクタ107も同様に、疑似乱数生成器Enocoro101へS入力シード102及び初期値104が入力された場合はS入力シード102及び初期値104のXOR排他的論理和値を選択し、それ以外の場合は272ビットの内部状態レジスタ入力値124を選択する。この選択結果を272ビットの中間データ123として出力する。S入力マスクレジスタ108は、272ビットの中間データ115を入力とし、その値を保存し、更にその値を272ビットのS入力マスクレジスタ格納値126として出力する。S出力マスクレジスタ109は、128ビットの中間データ119を入力とし、その値を保存し、更にその値を128ビットのS出力マスクレジスタ格納値127として出力する。内部状態レジスタ110は、272ビットの中間データ123を入力とし、その値を保存し、更にその値を272ビットの内部状態レジスタ格納値128として出力する。マスク生成ユニット111は、128ビットのS出力マスクレジスタ格納値127を入力とし、所定のマスク生成処理を実行し、その結果を、128ビットのS出力マスクレジスタ入力値120、32ビットのS出力マスク121、及び、32ビットのS処理マスク122として出力する。マスク保持ユニット112は、272ビットのS入力マスクレジスタ格納値126と32ビットのS出力マスク121とを入力とし、所定の線形変換を行い、その結果を、272ビットのS入力マスクレジスタ入力値116、32ビットのS入力マスク117、及び、8ビットの最終マスク118として出力する。ラウンド処理ユニット113は、272ビットの内部状態レジスタ格納値128と32ビットのS処理マスク122と、32ビットのS入力マスク117とを入力とし、所定の撹拌処理を行い、その結果を内部状態レジスタ入力値124、及び、8ビットの最終データ125として出力する。8ビットの最終マスク118と8ビットの最終データ125との排他的論理和を計算した結果を8ビットの疑似乱数列114として出力する。尚、疑似乱数生成器Enocoro101は、S入力シード102、S出力シード103と初期値104とを入力した後、96ラウンドの初期化を行う。この初期化中は、疑似乱数列114を出力しない。また、S出力シード103、S出力マスクレジスタ109、中間データ119、S出力マスクレジスタ入力値120、S処理マスク122、及び、S出力マスクレジスタ格納値127のビット長は非線形変換の実装方法に依存するものであり、任意でよい。次に、マスク生成ユニット111、マスク保持ユニット112、ラウンド処理ユニット113の詳細構成について説明する。マスク生成ユニット111の構成を図2に示す。マスク生成ユニット111の入力は128ビットのS出力マスクレジスタ格納値127である。マスク生成ユニット111の出力は128ビットのS出力マスクレジスタ入力値120、32ビットのS出力マスク121、及び、32ビットのS処理マスク122である。マスク生成ユニット111は、小乱数生成ユニット201によって128ビットの新たなマスクを生成する。この小乱数生成ユニット201は、疑似乱数生成器を用いて実現してもよいし、真性乱数の発生源を用いて実現してもよい。小乱数生成ユニット201に用いる疑似乱数生成器の例としては、線形フィードバックシフトレジスタがある。小乱数生成ユニット201に真性乱数の発生源を用いる場合、入力のS出力マスクレジスタ格納値127は無くてもよい。小乱数生成ユニット201の出力を、S出力マスクレジスタ入力値120として出力し、更に、小乱数生成ユニット201の出力の内32ビットをS出力マスク121として出力し、同様にS処理マスク122を出力する。マスク保持ユニット112の構成を図3に示す。マスク保持ユニット112の入力は272ビットのS入力マスクレジスタ格納値126と32ビットのS出力マスク121である。マスク保持ユニット112の出力は、272ビットのS入力マスクレジスタ入力値116、32ビットのS入力マスク117、及び、8ビットの最終マスク118である。図中、L301は16ビット入出力の線形変換である。マスク保持ユニット112は、S入力マスクレジスタ格納値126とS出力マスク121に対して、図に示す結線に従うデータシフトを行った後、その結果をS入力マスクレジスタ入力値116、S入力マスク117、及び、最終マスク118として出力する。本構成では、マスク保持ユニット112でマスクを保存しつつ、マスク保持ユニット112の出力であるS入力マスク117をラウンド処理ユニット113へ入力することを特徴としている。更に、マスク保持ユニット112の出力であるS入力マスクレジスタ値116をS入力マスクレジスタ108へ格納することで、マスク値を保持することができる。ラウンド処理ユニット113の構成を図4に示す。ラウンド処理ユニット113の入力は、272ビットの内部状態レジスタ格納値128、32ビットのS入力マスク117、及び32ビットのS処理マスク122である。ラウンド処理ユニット113の出力は、272ビットの内部状態レジスタ入力値124、及び、8ビットの最終データ125である。図中、S401~404は8ビット入出力の非線形変換処理を表しており、401~404の処理は同一である。また、図中L405は16ビット入出力の線形変換である。S401~404は、いずれも、内部状態レジスタ格納値128と、その値に使用しているマスク図中、S入力マスク117と、Sの処理途中の値及び出力値をマスクするために用いる新たなマスク図中、S処理マスク122を入力とし、変換処理を行った後、マスクされた値を出力する。S401~404はその変換途中で、マスクをといた値、すなわち、データとそのデータに使用しているマスクとのXOR結果が出現しないように変換を行う。例えば、データと新たなマスクとをXORした後、データに使用していたマスクとXORすることで実現可能である。尚、S401~404の実装方法の例としては、非特許文献1が示す技術を用いて実装してもよいし、WDDLなどの回路を二重化する技術を用いて実装してもよいし、ICカード、ROM、RAMやFPGAFieldProgrammableGateArrayを用いた表参照で実装してもよい。ラウンド処理ユニット113は、272ビットの内部状態レジスタ格納値128、32ビットのS入力マスク117、及び32ビットのS処理マスク122を入力とし、図に示す結線に従う変換処理を行った後、272ビットの内部状態レジスタ入力値124、及び、8ビットの最終データ125を出力する。尚、図示を省略するが、疑似乱数生成器Enocoro101の初期化時には、8ビットのカウンタ値と内部状態レジスタ格納値とのXORが行われる。以上で、マスク生成ユニット111、マスク保持ユニット112、ラウンド処理ユニット113の詳細構成の説明を終える。図1において、S入力シード102をS入力マスクレジスタ108へ入力するビット順と、S入力シード102と初期値104とのXOR結果を内部状態レジスタ110へ入力するビット順とを同一にすると、図3、図4に示すように、マスク保持ユニット112の処理はラウンド処理ユニット113から非線形変換S401~404を除いた処理と同一であるため、S入力マスクレジスタ108におけるマスクの格納箇所と、内部状態レジスタ110で使用中のマスクの格納箇所は同一にできる。従って、内部状態レジスタ110に格納されている値が非線形変換S例えば401へ入力される場合は、内部状態レジスタ110における格納箇所と一致する箇所に格納されているS入力マスクレジスタ108の値を非線形変換Sに入力することで、正しくマスクを解くことが可能となる。更に、ラウンド処理ユニット113で、非線形変換S例えば401の出力が所定の箇所へ入力されるのと同様に、非線形変換Sの出力に使用したS出力マスク121はマスク保持ユニット112において、ラウンド処理ユニット113で非線形変換Sの出力が入力されたのと同一の箇所に入力される。以上のように、S入力マスクレジスタ108に格納されるマスクは、内部状態レジスタ110に格納される同マスクを用いた値と同期して保存することができる。以上、本実施例では、マスク生成ユニット111、マスク保持ユニット112、及び、ラウンド処理ユニット113を用いて疑似乱数生成器Enocoro回路101を構成した。本実施例の構成では、疑似乱数生成器Enocoro回路101の内部状態レジスタ110に格納される値にマスクをかけ、非線形変換Sにおいて使用する新たなマスクをマスク生成ユニット111で生成しつつ、内部状態レジスタ110に格納される値に使用しているマスクをマスク保持ユニット112で保存することができる。これらの処理によって、疑似乱数生成器Enocoro回路101の内部状態をマスクし、非線形変換にもマスクを適用できるようになるため、疑似乱数生成器Enocoro回路101のサイドチャネル攻撃耐性を向上させることができる。更に、本実施例では、AESに対するサイドチャネル攻撃対策技術をそのまま疑似乱数生成器Enocoroに適用する場合と比較して、毎ラウンドで内部状態の全ビットに新たなマスクをXORしなくてもよいため、1ラウンド当たり疑似乱数生成器Enocoroが新たに必要とするマスクのビット数を少なくできている。更に、AESに対するサイドチャネル攻撃対策技術をそのまま疑似乱数生成器Enocoroに適用する場合と比較して、内部状態の全ビットとマスクとのXOR処理を省略できるため、疑似乱数生成器Enocoroの回路規模を小さくできている。尚、この実施例において、ラウンド処理ユニット113は、まず新たなマスクと内部状態のすべてのビットをXORした後、現在使用しているマスクとXORを行い、その後、図4掲載のラウンド処理を実施するように構成してもよい。上記新たなマスクとは、S処理マスク122のビット幅を272ビット以上に拡張したものである。また現在使用しているマスクとは、S入力マスクレジスタ格納値126である。マスク生成ユニット111の構成は変わらないが、出力であるS処理マスク122のビット数が上記のように拡張される。マスク保持ユニット112の構成は変わらないが、入力はビット幅が拡張されたS処理マスク122のみとなり、出力のS入力マスク117はなくてもよい。