(57)【特許請求の範囲】
【請求項１】
複数のフリップフロップ回路が結合されて成るシフトレジスタを含み、クロック信号に同期して上記シフトレジスタで信号のシフトが行われることにより疑似乱数を発生可能な疑似乱数発生器であって、
上記シフトレジスタでのシフト量の変更を可能とするシフト量変更回路を含み、
上記シフト量変更回路は、クロック信号と、上記疑似乱数発生器の外部から供給される信号との論理演算を行う論理ゲートを含み、上記論理ゲートの出力が上記フリップフロップ回路に供給されることでシフト動作が可能とされる、疑似乱数発生器。
【請求項２】
上記シフトレジスタは、第１フリップフロップ回路と、上記第１フリップフロップ回路の後段に配置された第２フリップフロップ回路と、上記第２フリップフロップ回路の後段に配置された第３フリップフロップ回路とを含み、
上記シフト量変更回路は、上記疑似乱数発生器の外部から供給される信号に呼応して、上記第１フリップフロップ回路の出力信号と上記第２フリップフロップ回路の出力信号とを選択的に上記第３フリップフロップ回路に供給するためのセレクタを含んで成る請求項１記載の疑似乱数発生器。
【請求項３】
フェッチされた命令を実行可能なＣＰＵと、
上記ＣＰＵの制御下でデータ通信信号のやり取りを可能とする通信モジュールと、
上記ＣＰＵでの処理若しくは上記ＣＰＵの制御下で行われる処理に使用される疑似乱数を生成するための疑似乱数発生器と、を含むデータ通信装置であって、
上記疑似乱数発生器は、
複数のフリップフロップ回路が結合され、クロック信号に同期してシフト動作を可能とするシフトレジスタと、
上記ＣＰＵで実行される命令のオペコードの値を上記疑似乱数に反映させるための第１関与回路と、
上記シフトレジスタの出力側の信号を上記シフトレジスタの入力側にフィードバック可能なフィードバック経路を介して上記データ通信信号を上記疑似乱数に反映させるための第２関与回路と、
上記データ通信信号に呼応して上記シフトレジスタでのシフト量を変更可能なシフト量変更回路と、を含むことを特徴とするデータ通信装置。
【請求項４】
上記第１関与回路は、上記ＣＰＵでデコードされた命令のオペコードの排他的論理和を得る第１排他的論理和ゲートと、
上記第１排他的論理和ゲートの出力信号と、上記データ通信信号との排他的論理和を得る第２排他的論理和ゲートと、
上記第２排他的論理和ゲートの出力信号と、上記シフトレジスタにおける所定フリップフロップ回路の出力信号との排他的論理和を求め、それを上記所定フリップフロップ回路の後段に配置された第２フリップフロップ回路に供給する第３排他的論理和ゲートと、を含む請求項３記載のデータ通信装置。
【請求項５】
上記第２関与回路は、上記シフトレジスタの出力側の信号と、上記通信モジュールで扱われるデータ通信信号との排他的論理和を求め、それを上記シフトレジスタの入力側に配置された第３フリップフロップ回路に供給する第４排他的論理和ゲートを含む請求項３記載のデータ通信装置。
【請求項６】
上記シフト量変更回路は、上記データ通信信号に呼応して、上記シフトレジスタにおいてシフト動作に関与されるフリップフロップ回路の切り替えを可能とするセレクタを含む請求項３記載のデータ通信装置。
【請求項７】
上記シフト量変更回路は、上記データ通信信号と上記クロック信号との論理演算を行う論理ゲートを含み、上記論理ゲートの出力が上記シフトレジスタにおける所定フリップフロップ回路に供給されることで、上記シフトレジスタでのシフト量の変更を可能とする請求項３記載のデータ通信装置。
【請求項８】
上記論理ゲートは、上記データ通信信号と上記クロック信号との論理積を得る論理積ゲートとされる請求項７記載のデータ通信装置。
【請求項９】
上記第１関与回路は、疑似乱数を発生させる疑似乱数発生部と、
上記疑似乱数発生部で発生される疑似乱数に、上記ＣＰＵでデコードされた命令のオペコードを反映させるための第５排他的論理和ゲートと、
上記疑似乱数発生部の出力信号と、上記データ通信信号との排他的論理和を得る第６排他的論理和ゲートと、
上記第６排他的論理和ゲートの出力信号と、上記シフトレジスタにおける所定フリップフロップ回路の出力信号との排他的論理和を求め、それを上記所定フリップフロップ回路の後段に配置されたフリップフロップ回路に供給する第７排他的論理和ゲートと、を含む請求項３記載のデータ通信装置。
【請求項１０】
一つの半導体基板に形成された請求項３記載のデータ通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、疑似乱数発生器及びそれを搭載して成るデータ通信装置に関する。
【背景技術】
【０００２】
例えば非特許文献１などにも記載されているように、ＩＣカード用マイクロコンピュータは、金融、交通、健保等を目的としたカードに実装され、電子マネーや個人情報が格納されるため、情報の漏洩や改ざんなどの攻撃をハードウェアとソフトウェアの組合せで防ぐ必要がある。ＩＣカード用マイクロコンピュータへの攻撃の一つとしてリーク解析が挙げられる。これは、未対策のマイクロコンピュータにおける消費電流がデータの変化に依存するため、消費電流等のリークを観測することによりデータの変化を推測しようとする解析手法である。
【０００３】
リーク解析は入力データに対し、全ての鍵の候補に対して特定の場所で電流が発生(ここではデータが変化)するかを順々に計算で調べる一方、入力を変化させながら電流を測定し、比較していくことを繰り返していくことで、鍵を推定する方法である。リーク解析の代表的な対策手法として、「マスク」と呼ばれる手法が挙げられる。これはデータに対して乱数との排他的論理和演算による暗号化を実行し、それを使用することで、消費電流とデータの変化との相関をなくす手法であり、ハードウェアやソフトウェアとも有効な対策手法とされる。このとき、マスクデータである乱数の発生には、疑似乱数発生器が用いられる。この疑似乱数発生器は、シフトレジスタに排他的論理和ゲートでフィードバックをかけたＬＦＳＲ(Linear feedback Shift Register)によって構成される。しかしながら、ＬＦＳＲのクロック数が同じ時にはマスクデータも同じ値になってしまうため、リーク解析耐性が弱くなってしまう。
【０００４】
これに対して特許文献１には、ＬＦＳＲにおいて、データ入出力端子（ＳＩＯ端子）を介して送信されるデータを利用して不規則性の高い乱数を発生する技術が示される。ＳＩＯ端子を介して送信されるシリアルデータと、第１のシフトレジスタ２０３の出力との排他的論理和演算を行い、その演算結果が第２のシフトレジスタ２０４に入力されるようになっている。
【０００５】
【非特許文献１】デザインウェーブマガジン 2006年2月号(CQ出版社)内 「特集2 LSIを“盗聴”から守る  第２章  サイドチャネル攻撃のからくりを理解する」（Ｐ．１０５〜１１４）
【特許文献１】特開２００３−１２２５６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
通常ＬＦＳＲにおける各フリップフロップに対し、電源投入から外部リセット解除後まで論理値“１”にするセット信号を入れているが、セット信号もしくは論理値“０”にするリセット信号をいれていなくてもプロセスの特性により電源投入時は同じ値になりがちであり、毎回異なる値を保証するものとはならない。また、セット信号などを入れておかない場合、オール“０”が初期値となる可能性もあり、その場合はクロック信号が入ってきてもＬＦＳＲの値が更新されない。初期化しない場合は、動作確認のテストが難しくなる可能性もある。
【０００７】
リーク解析はＤＥＳ（Data Encryption Standard）やAES（Advanced Encryption Standard）などの演算において、攻撃者は平文もしくは暗号文が既知で、かつ複数の文(〜数百万)を暗号演算にいれる必要がある(値が異なれば任意の文で可)。リーク解析を実施したい攻撃者にとってはマイクロコンピュータを改造して平文を作成するより、外部端子がみえている伝送路(暗号文)を変化させて、伝送路の暗号文を復号化する際のリークを観測するほうが容易である。従って、ＩＣカード用マイクロコンピュータなどにおいては、リーク解析耐性の更なる向上が望まれる。
【０００８】
本発明の目的は、疑似乱数の乱数性を向上させることにより、リーク解析耐性の更なる向上を図るための技術を提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１１】
すなわち、本発明の代表的な実施の形態に係る疑似乱数発生器は、複数のフリップフロップ回路が結合されて成るシフトレジスタを含み、クロック信号に同期して上記シフトレジスタで信号のシフトが行われることにより疑似乱数の発生を可能とする。上記疑似乱数発生器の外部から供給される制御信号に応じて、上記シフトレジスタでのシフト量の変更を可能とするシフト量変更回路が設けられる。シフト量変更回路により、上記疑似乱数発生器の外部から供給される制御信号に応じて、上記シフトレジスタでのシフト量が変更されることにおり、疑似乱数発生器出力の同一値化が困難になる。このような疑似乱数発生器を用いることで、リーク解析耐性を向上させることができる。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１３】
すなわち、疑似乱数の乱数性を向上させることにより、リーク解析耐性の更なる向上を達成することができる。
【発明を実施するための最良の形態】
【００１４】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係る疑似乱数発生器（２０８）は、複数のフリップフロップ回路（１０１〜１０７）が結合されて成るシフトレジスタ（１５１）を含み、クロック信号に同期して上記シフトレジスタで信号のシフトが行われることにより疑似乱数の発生を可能とする。そして、上記シフトレジスタでのシフト量の変更を可能とするシフト量変更回路（１５４）が設けられ、このシフト量変更回路により、上記シフトレジスタでのシフト量が変更されることにより、疑似乱数発生器出力の同一値化が困難にされる。このような疑似乱数発生器の出力をリーク解析のためのマスクデータに用いることで、リーク解析耐性を向上させることができる。
【００１６】
〔２〕上記〔１〕において、上記シフトレジスタは、第１フリップフロップ回路（１０１）と、上記第１フリップフロップ回路の後段に配置された第２フリップフロップ回路（１０２）と、上記第２フリップフロップ回路の後段に配置された第３フリップフロップ回路（１０３）とを含んで構成することができる。このとき、上記シフト量変更回路（１５４）は、上記疑似乱数発生器の外部から供給される信号に呼応して、上記第１フリップフロップ回路の出力信号と上記第２フリップフロップ回路の出力信号とを選択的に上記第３フリップフロップ回路に供給するためのセレクタ（１１２）を含んで構成することができる。上記セレクタにより、上記第１フリップフロップ回路の出力信号と上記第２フリップフロップ回路の出力信号とが選択的に上記第３フリップフロップ回路に供給されることにより、シフト量の変更を簡単に行うことができる。
【００１７】
〔３〕上記〔１〕において、上記シフト量変更回路は、クロック信号と、上記疑似乱数発生器の外部から供給される信号との論理演算を行う論理ゲートを含んで構成することができる。この場合、クロック信号に応じて上記シフト量が変更される。
【００１８】
〔４〕本発明の代表的な実施の形態に係るデータ通信装置（２００）は、フェッチされた命令を実行可能なＣＰＵ（２０２）と、上記ＣＰＵの制御下でデータ通信信号のやり取りを可能とする通信モジュール（２０１）と、上記ＣＰＵでの処理若しくは上記ＣＰＵの制御下で行われる処理に使用される疑似乱数を生成するための疑似乱数発生器（２０８）とを含む。このとき、上記疑似乱数発生器は、複数のフリップフロップ回路（１０１〜１０７）が結合され、クロック信号に同期してシフト動作を可能とするシフトレジスタ（１５１）と、上記ＣＰＵで実行される命令のオペコードの値を上記疑似乱数に反映させるための第１関与回路（１５２）と、上記シフトレジスタの出力側の信号を上記シフトレジスタの入力側にフィードバック可能なフィードバック経路を介して上記データ通信信号を上記疑似乱数に反映させるための第２関与回路（１５３）と、データ通信信号に呼応して上記シフトレジスタでのシフト量を変更可能なシフト量変更回路（１５４）とを含んで構成することができる。シフト量変更回路により、上記疑似乱数発生器の外部から供給される制御信号に応じて、上記シフトレジスタでのシフト量が変更されることにおり、疑似乱数発生器出力の同一値化が困難になる。このような疑似乱数発生器を用いることで、リーク解析耐性を向上させることができる。
【００１９】
〔５〕上記〔４〕において、上記第１関与回路は、上記ＣＰＵでデコードされた命令のオペコードの排他的論理和を得る第１排他的論理和ゲート（１２２）と、上記第１排他的論理和ゲートの出力信号と、上記データ通信信号との排他的論理和を得る第２排他的論理和ゲート（１２５）と、上記第２排他的論理和ゲートの出力信号と、上記シフトレジスタにおける所定フリップフロップ回路の出力信号との排他的論理和を求め、それを上記所定フリップフロップ回路の後段に配置された第２フリップフロップ回路に供給する第３排他的論理和ゲート（１２６）とを含んで構成することができる。
【００２０】
〔６〕上記〔４〕において、上記第２関与回路は、上記シフトレジスタの出力側の信号と、上記通信モジュールで扱われるデータ通信信号との排他的論理和を求め、それを上記シフトレジスタの入力側に配置された第３フリップフロップ回路に供給する第４排他的論理和ゲート（１２１）を含んで構成することができる。
【００２１】
〔７〕上記〔４〕において、上記シフト量変更回路は、上記データ通信信号に呼応して、上記シフトレジスタにおいてシフト動作に関与されるフリップフロップ回路の切り替えを可能とするセレクタ（１１１〜１１７）を含んで構成することができる。
【００２２】
〔８〕上記〔４〕において、上記シフト量変更回路は、上記データ通信信号と上記クロック信号との論理演算を行う論理ゲート（４０１）を含み、上記論理ゲートの出力が上記シフトレジスタにおける所定フリップフロップ回路に供給されることで、上記シフトレジスタでのシフト量の変更を可能とする。
【００２３】
〔９〕上記〔８〕において、上記論理ゲートは、上記データ通信信号と上記クロック信号との論理積を得る論理積ゲートとすることができる。
【００２４】
〔１０〕上記第１関与回路は、疑似乱数を発生させる疑似乱数発生部（６０１〜６０６，６０７）と、上記疑似乱数発生部で発生される疑似乱数に、上記ＣＰＵでデコードされた命令のオペコードを反映させるための第５排他的論理和ゲート（１２２）と、上記疑似乱数発生部の出力信号と、上記データ通信信号との排他的論理和を得る第６排他的論理和ゲート（１２５）と、上記第６排他的論理和ゲートの出力信号と、上記シフトレジスタにおける所定フリップフロップ回路の出力信号との排他的論理和を求め、それを上記所定フリップフロップ回路の後段に配置されたフリップフロップ回路に供給する第７排他的論理和ゲート（１２６）とを含んで構成することができる。
【００２５】
〔１１〕上記〔４〕において、データ通信装置を一つの半導体基板に形成することができる。
【００２６】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
【００２７】
図２には、本発明にかかるデータ通信装置の一例とされるマイクロコンピュータ（マイクロプロセッサ、データプロセッサ、あるいはデータ処理装置などと称されることもある）が示される。図１に示されるマイクロコンピュータ２００は、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。図１に示されるマイクロコンピュータ２００は、通信モジュール２０１、ＣＰＵ（中央処理装置）２０２、システムコントロールロジック２０３、不揮発性メモリ２０４、ＲＡＭ２０５、共通鍵暗号コプロセッサ２０６、公開鍵暗号コプロセッサ２０７、ナンバージェネレータ２０８を含み、それらはバス２１０によって互いに信号のやり取りが可能に結合される。上記ナンバージェネレータ２０８は、疑似乱数を発生する機能を有し、疑似乱数発生器の一例とされる。
【００２８】
通信モジュール２０１は、Ｉ／Ｏ端子を介して、このマイクロコンピュータ２００の外部装置に結合され、当該外部装置との間で各種データ通信信号Ａ〜Ｃのやり取りが可能とされる。各種データ通信信号Ａ〜Ｃは、ナンバージェネレータ２０８にも伝達される。外部へ送信される、もしくは外部から受信したデータはバス２１０もしくは専用の信号線を介して内部の各回路（ＣＰＵ２０２、内部メモリ２０５）とやりとりしている。この信号をデータ通信信号と称する。図２の例では、３本のデータ通信信号Ａ〜Ｃが通信モジュール２０１とナンバージェネレータ２０８とを接続している。本マイクロコンピュータ２００が接触型ＩＣカードに適用される場合、Ｉ／Ｏ端子は通常1個のみなので、外部から受信されたシリアル信号をシリアルパラレル変換で複数ビット化する、あるいは複数の信号に対し同じ値を用いるなどが考えられる。非接触の場合も同様である。通信モジュールが、Ｉ／Ｏ端子を介して外部から入力した信号、もしくは、バスを介して入力した信号をもとに、上記データ通信信号Ａ〜Ｃを出力する。セキュリティ分野の組込みマイクロコンピュータの場合(モバイル用、リーダライタ用)など、Ｉ／Ｏ端子を複数持つこともあり、この場合は各Ｉ／Ｏ端子に対応させた信号となることもある。ＣＰＵ２０２は、バス２０２を介して上記不揮発性メモリ２０４から命令をフェッチし、それをデコードして実行する。上記不揮発性メモリ２０４は、ＲＯＭ（リード・オンリー・メモリ）や、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）フラッシュメモリなどとされ、この不揮発性メモリ２０４には、上記ＣＰＵ２０２で実行されるプログラムなどが格納される。ＲＡＭ２０５は、ＣＰＵ２０２によるランダムアクセスが可能とされ、ＣＰＵ２０２における演算処理の作業領域などに使用される。ＣＰＵ２０２は、バス２１０から得られた情報から命令を識別してオペコード（命令のビット列）を得ているが、その値は、マイクロコンピュータ２００の内部情報として、専用線でナンバージェネレータ２０８へも伝達されるようになっている。システムコントロールロジック２０３では、データバス出力制御信号やセット信号ＳＥＴなど、マイクロコンピュータ２００の動作を制御するための信号を生成している。暗号処理を高速に行うため、ＣＰＵ２０２以外にコプロセッサ２０６，２０７が搭載される。ＣＰＵ２０２など暗号を取り扱うモジュールなどにおいて、鍵などのデータと消費電流との依存性をなくしたい場合、ナンバージェネレータ２０８から出力された値を使用する。この値はマスク信号Ｄ，Ｅとして共通鍵暗号コプロセッサ２０６や公開鍵暗号コプロセッサ２０７に伝達される。また、バス２１０を介してＣＰＵ２０２に伝達される場合もある。
【００２９】
クロック生成回路２０９が設けられ、このクロック生成回路２０９は、ＣＬＫ端子を介して取り込まれた外部クロック信号を基にチップ内部用のクロック信号ＣＬＫを生成する。チップ内部用のクロック信号ＣＬＫは、外部と必ずしも同一周波数ではない。ＩＣカードにおいては、内部発振器実装、非接触型などにより外部インターフェイスが異なる場合もある。コプロセッサ用のクロック信号ＣＬＫの周波数は、チップ内部用クロック信号ＣＬＫの周波数と異なる場合がある。その場合、高速のクロック信号ＣＬＫをナンバージェネレータのＣＬＫにする、それぞれのクロック信号ＣＬＫに同期して出力できるナンバージェネレータを用意するなどの方法が考えられる。
【００３０】
さらに、マイクロコンピュータ２００には、各部の動作用電源電圧を取り込むためのＶｃｃ端子やＶｓｓ端子、セット信号を取り込むためのＳＥＴ端子が設けられる。
【００３１】
図１には、上記ナンバージェネレータ２０８の構成例が示される。
【００３２】
図１に示されるナンバージェネレータ２０８は、特に制限されないが、ＬＦＳＲと、このＬＦＳＲの疑似乱数出力（マスク信号）をバス２１０経由でＣＰＵ２０２に出力するためのトライステートバッファ１３１〜１３３とを含んで成る。ＬＦＳＲには、オペコードの値、データ通信信号Ａ〜Ｃ、クロック信号ＣＬＫ、セット信号ＳＥＴが入力される。また、ＬＦＳＲからマスク信号Ｄ，Ｅが出力されるようになっている。上記トライステートバッファ１３１〜１３３は、データバス出力制御信号がハイレベルになることで導通され、この状態でＬＦＳＲの疑似乱数出力が上記トライステートバッファ１３１〜１３３を介してバス２１０に出力されるようになっている。
【００３３】
上記ＬＦＳＲは、シフトレジスタ１５１、第１フィードバック経路ＦＢ１、第２フィードバック経路ＦＢ２、第１関与回路１５２、第２関与回路１５３、及びシフト量変更回路１５４を含んで成る。
【００３４】
上記シフトレジスタ１５１は、複数のフリップフロップ回路１０１〜１０７が結合されて成る。複数のフリップフロップ回路１０１〜１０７は、データを取り込むためのデータ入力端子、データを出力するためのデータ出力端子、セット信号ＳＥＴを取り込むためのセット端子、及びクロック信号を取り込むためのクロック端子を有する。セット信号ＳＥＴがハイレベルにされることで複数のフリップフロップ回路１０１〜１０７が初期化され、セット信号ＳＥＴがローレベルにされることでセット状態が解除される。上記クロック端子にクロック信号ＣＬＫが伝達されるようになっており、シフトレジスタ１５１では、このクロック信号ＣＬＫに同期してデータシフトが行われる。上記フリップフロップ回路１０７からマスク信号Ｄ，Ｅが得られる。
【００３５】
上記第１フィードバック経路ＦＢ１，ＦＢ２は、それぞれシフトレジスタ１５１の出力側の信号を入力側にフィードバックするための経路とされる。
【００３６】
上記シフト量変更回路１５４は、データ通信信号Ｃに呼応して上記シフトレジスタ１５１でのシフト量を変更する機能を有し、セレクタ１１１〜１１７を含む。セレクタ１１１は、第１フィードバック経路ＦＢ１を介して伝達された信号とフリップフロップ回路１０１の出力信号とをデータ通信信号Ｃに呼応して選択的に後段のフリップフロップ回路１０２に伝達するために設けられる。セレクタ１１２は、フリップフロップ回路１０１の出力信号とフリップフロップ回路１０２の出力信号とをデータ通信信号Ｃに呼応して選択的に後段のフリップフロップ回路１０３に伝達するために設けられる。セレクタ１１３は、フリップフロップ回路１０２の出力信号とフリップフロップ回路１０３の出力信号とをデータ通信信号Ｃに呼応して選択的に後段のフリップフロップ回路１０４に伝達するために設けられる。セレクタ１１４は、フリップフロップ回路１０３の出力信号とフリップフロップ回路１０４の出力信号とをデータ通信信号Ｃに呼応して選択的に後段のフリップフロップ回路１０５に伝達するために設けられる。セレクタ１１５は、フリップフロップ回路１０４の出力信号とフリップフロップ回路１０５の出力信号とをデータ通信信号Ｃに呼応して選択的に排他的論理和ゲート１２６に伝達するために設けられる。セレクタ１１６は、フリップフロップ回路１０５の出力信号とフリップフロップ回路１０６の出力信号とをデータ通信信号Ｃに呼応して選択的に後段のフリップフロップ回路１０７に伝達するために設けられる。セレクタ１１７は、フリップフロップ回路１０５の出力信号とフリップフロップ回路１０７の出力信号とをデータ通信信号Ｃに呼応して選択的に後段の排他的論理和ゲート１２３に伝達するために設けられる。
【００３７】
上記第１関与回路１５２は、上記ＣＰＵ２０２でデコードされた命令のオペコードをマスク信号（疑似乱数出力）Ｄ，Ｅに反映させる機能を有し、排他的論理和ゲート１２２，１２５，１２６を含んで成る。排他的論理和ゲート１２２は、複数ビット構成のオペコードの排他的論理和演算を行う。この排他的論理和ゲート１２２の出力は、後段の排他的論理和ゲート１２５に伝達される。排他的論理和ゲート１２５は、上記排他的論理和ゲート１２２の出力とデータ通信信号Ａとの排他的論理和演算を行う。この排他的論理和ゲート１２５の出力は、後段の排他的論理和ゲート１２６に伝達される。排他的論理和ゲート１２６は、上記排他的論理和ゲート１２５の出力信号と上記セレクタ１１５との排他的論理和演算を行う。この排他的論理和ゲート１２６の出力は、フリップフロップ回路１０６に伝達される。
【００３８】
第２関与回路１５３は、フィードバック経路ＦＢ２を介してデータ通信信号Ｂをマスク信号（疑似乱数出力）Ｄ，Ｅに反映させる機能を有し、排他的論理和ゲート１２１を含む。排他的論理和ゲート１２１は、排他的論理和ゲート１２３からフィードバック経路ＦＢ２を介して伝達された信号とデータ通信信号Ａとの排他的論理和演算を行う。この演算結果はフリップフロップ回路１０１に伝達される。
【００３９】
図３には、図１に示される構成における主要部の動作タイミングが示される。
【００４０】
セット信号ＳＥＴがハイレベルにされることで複数のフリップフロップ回路１０１〜１０７が初期化され、セット信号ＳＥＴがローレベルにされることでセット状態が解除される。上記クロック端子にクロック信号ＣＬＫが伝達されるようになっており、シフトレジスタ１５１では、このクロック信号ＣＬＫに同期してデータシフトが行われる。データ通信信号Ａ，Ｂ，Ｃはそれぞれ図３に示されるように論理状態が変化するものとする。オペコードは、クロック毎に生成されるとは限らない。ＣＰＵ２０２での演算処理に応じて任意のタイミングで更新される。ここでは、１６進数表記で、「Ｈ’００００」、「Ｈ’Ｆ６８０」、「Ｈ’３６０Ｅ」、「Ｈ’００００」、「Ｈ’Ｆ５０１」、「Ｈ’０Ｃ５６」のように変化されるものとする。オペコードＥＯＲ値は、排他的論理和ゲート１２２でオペコードの排他的論理和演算が行われたものである。オペコードを２進数でみたとき、論理値“１”となるビットの数が偶数の場合、オペコードＥＯＲ値は論理値“０”となる。これに対して論理値“１”となるビットの数が奇数の場合、オペコードＥＯＲ値は論理値“１”となる。ＬＦＳＲ出力は、フリップフロップ回路１０１〜１０７の出力を１６進数で表している。ここでは、クロック信号ＣＬＫに同期して、「Ｈ’７Ｆ」、「Ｈ’３Ｄ」、「Ｈ’５Ｅ」、「Ｈ’６Ｄ」、「Ｈ’７９」、「Ｈ’７Ｅ」、「Ｈ’７Ｆ」、「Ｈ’３Ｄ」、「Ｈ’１Ｅ」のように変化される。
【００４１】
上記例によれば、以下の作用効果を得ることができる。
【００４２】
（１）シフト量変更回路１５４が設けられ、上記シフトレジスタ１５１でのシフト量は、データ通信信号Ｃにより制御されており、その値により１ビットシフトするのか２ビットシフトするのかが決まる。このため、データ通信信号Ｃに呼応してシフト量が変化されることで、ＬＦＳＲ出力の同一値化が困難になり、リーク解析攻撃者が中間データを正しく予測することが困難になる。つまり、疑似乱数の乱数性が向上されることにより、リーク解析耐性が向上される。
【００４３】
（２）更に、シフト量をデータ通信信号Ｃで変化させている状態において、データ通信信号Ｂや、オペコードをマスク信号（疑似乱数出力）Ｄ，Ｅに反映させることで、ＬＦＳＲ出力の同一値化がさらに困難になり、リーク解析攻撃者が中間データを正しく予測することがさらに困難になることから、リーク解析耐性は更に向上される。
【００４４】
図４には、上記ナンバージェネレータ２０８の別の構成例が示される。
【００４５】
図４に示されるナンバージェネレータ２０８が図１に示されるのと大きく相違するのは、シフト量変更回路１５４の構成である。すなわち、図４において、シフト量変更回路１５４は、上記データ通信信号Ｃと上記クロック信号との論理演算を行う論理ゲート４０１を含んで成る。この論理ゲート４０１は、例えば２入力論理積ゲートとされる。論理積ゲート４０１の出力信号はフリップフロップ回路１０１〜１０７のクロック端子にそれぞれ伝達される。
【００４６】
尚、図４においては、図１におけるトライステートバッファ１３１〜１３３等は省略されている。
【００４７】
図５には、図４に示される構成における主要部の動作タイミングが示される。
【００４８】
図４に示される構成の基本的な動作は、図１に示されるのと同様とされるが、シフト量変更回路１５４が論理積ゲート４０１を含んで構成され、データ通信信号Ｃに呼応してシフトレジスタ１５１でのシフト量が変化されることから、ＬＦＳＲ出力（フリップフロップ回路１０１〜１０７出力の１６進数表記）は、「Ｈ’７Ｆ」、「Ｈ’３Ｄ」、「Ｈ’５Ｅ」、「Ｈ’６Ｄ」、「Ｈ’７４」、「Ｈ’３Ａ」、「Ｈ’５Ｆ」、「Ｈ’６Ｆ」となり、図１に示されるのと異なる。また、図４に示される構成は、シフト量変更回路１５４が論理積ゲート４０１を含んで構成されることから、図１の構成に比べると、素子数の低減を図ることができる。
【００４９】
図６には、上記ナンバージェネレータ２０８の別の構成例が示される。
【００５０】
図６に示されるナンバージェネレータ２０８が図１に示されるのと大きく相違するのは、排他的論理和ゲート１２２の後段に、フリップフロップ回路６０１〜６０６と、排他的論理和ゲート６０７とが結合されて成る疑似乱数発生回路が設けられ、フリップフロップ回路６０１の出力が排他的論理和ゲート１２５に伝達されるようになっている。排他的論理和ゲート１２５では、データ通信信号Ａとフリップフロップ回路回路６０１の出力信号との排他的論理和演算が行われ、その演算結果が、後段の排他的論理和ゲート１２６に伝達されるようになっている。上記排他的論理和ゲート１２２と、フリップフロップ回路６０１〜６０６と、排他的論理和ゲート６０７とが結合されて成る回路を、便宜上、「オペコードＬＦＳＲ」６０８と称する。
【００５１】
図７には、図６に示される構成における主要部の動作タイミングが示される。
【００５２】
オペコードは必ずしもクロック毎に更新されない。従って図１に示される構成では、オペコードが更新されない限り、排他的論理和ゲート１２２の出力も更新されないが、図６に示される構成では、フリップフロップ回路６０１〜６０６と、排他的論理和ゲート６０７とが結合されて成るオペコードＬＦＳＲ６０８が設けられているため、オペコードの更新にかかわらず、排他的論理和ゲート１２２の出力が更新される確率が上がり、更新される場合と更新されない場合の確率のバランスがよくなるため、図１に示される構成に比べてリーク解析攻撃者にとって、さらに解析しにくくなる。
【００５３】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００５４】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、データ通信装置に広く適用することができる。
【００５５】
本発明は、少なくともクロック信号に同期して上記シフトレジスタで信号のシフトが行われることにより疑似乱数が発生されることを条件に適用することができる。
【図面の簡単な説明】
【００５６】
【図１】本発明にかかるデータ通信装置の一例とされるマイクロコンピュータに含まれるナンバージェネレータの構成例回路図である。
【図２】上記マイクロコンピュータの全体的な構成例ブロック図である。
【図３】図１に示されるナンバージェネレータにおける主要部の動作タイミング図である。
【図４】上記ナンバージェネレータの別の構成例回路図である。
【図５】図４に示されるナンバージェネレータにおける主要部の動作タイミング図である。
【図６】上記ナンバージェネレータの別の構成例回路図である。
【図７】図６に示されるナンバージェネレータにおける主要部の動作タイミング図である。
【符号の説明】
【００５７】
１０１〜１０７，６０１〜６０６  フリップフロップ回路
１１１〜１１７  セレクタ
１２１，１２２，１２３，１２４，１２５，１２６，６０７  排他的論理和ゲート
１３１〜１３３  トライステートバッファ  １５１，６０８  シフトレジスタ
１５２  第１関与回路
１５３  第２関与回路
１５４  シフト量変更回路
２００  マイクロコンピュータ
２０１  通信モジュール
２０２  ＣＰＵ
２０３  システムコントロールロジック
２０４  不揮発性メモリ
２０５  ＲＡＭ
２０６  共通鍵暗号コプロセッサ
２０７  公開鍵暗号コプロセッサ
２０８  ナンバージェネレータ
２０９  クロック生成回路
４０１  論理積ゲート
６０８  オペコードＬＦＳＲ
【図１】
0005231079.tif 000002
【図２】
0005231079.tif 000003
【図３】
0005231079.tif 000004
【図４】
0005231079.tif 000005
【図５】
0005231079.tif 000006
【図６】
0005231079.tif 000007
【図７】
0005231079.tif 000008