(57)【要約】【課題】ＬＦＳＲをスタック状態にすることなく、スタック状態検出回路のテストを行うことができる、スタック状態検出機能付き線形帰還シフトレジスタ、及びＩＣカードを提供する。【解決手段】複数ビットの状態を保持するレジスタ２２と、レジスタ２２の出力を多項式に従って変換する線形帰還回路２１と、スタック状態を検出するスタック状態検出回路２３と、テスト入力端子２４から入力される制御信号に従って、レジスタ２２の出力をスタック状態に変換して出力するスタック状態生成回路２５とを有することを特徴とする。【選択図】図２
2013191076.tif 000002
【特許請求の範囲】
【請求項１】
複数ビットの状態を保持するレジスタと、
前記レジスタの出力を多項式に従って変換する線形帰還回路と、
スタック状態を検出するスタック状態検出回路と、
テスト入力端子から入力される制御信号をデコードし、信号を反転させるビットを指示する第二の制御信号を出力するデコーダと、
前記デコーダから入力される前記第二の制御信号に従って、前記レジスタの出力をスタック状態に変換して出力するスタック状態生成回路と、
を有することを特徴とする、スタック状態検出機能付き線形帰還シフトレジスタ。
【請求項２】
複数ビットの状態を保持するレジスタと、
前記レジスタの出力を多項式に従って変換する線形帰還回路と、
スタック状態を検出するスタック状態検出回路と、
テスト入力端子から入力される制御信号に従って、前記レジスタの出力をスタック状態に変換して出力するスタック状態生成回路と、
を有することを特徴とする、スタック状態検出機能付き線形帰還シフトレジスタ。
【請求項３】
前記スタック状態生成回路は、論理回路で構成されることを特徴とする、請求項２に記載のスタック状態検出機能付き線形帰還シフトレジスタ。
【請求項４】
前記スタック状態検出回路は、前記スタック状態生成回路からの入力がスタック状態であることを検出すると、アラームを出力することを特徴とする、請求項２又は請求項３に記載のスタック状態検出機能付き線形帰還シフトレジスタ。
【請求項５】
前記スタック状態生成回路は、前記レジスタから出力される複数ビットの信号のうち特定のビットの信号を反転させて出力することを特徴とする、請求項２から請求項４のいずれか一項に記載のスタック状態検出機能付き線形帰還シフトレジスタ。
【請求項６】
前記スタック状態生成回路は、前記レジスタから出力される複数ビットの信号のそれぞれのビットに対して、信号を反転させるか否かを制御する前記制御信号が入力されることを特徴する、請求項２から請求項４のいずれか一項に記載のスタック状態検出機能付き線形帰還シフトレジスタ。
【請求項７】
複数ビットの状態を保持するレジスタと、
前記レジスタの出力を多項式に従って変換する線形帰還回路と、
スタック状態を検出するスタック状態検出回路と、
テスト入力端子から入力される制御信号に従って、前記レジスタの出力をスタック状態に変換して出力するスタック状態生成回路と、
を有するスタック状態検出機能付き線形帰還シフトレジスタを用いた乱数発生回路を具備することを特徴とする、ＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、スタック状態検出機能付き線形帰還シフトレジスタ、及びＩＣカードに関する。
【背景技術】
【０００２】
線形帰還シフトレジスタ（Linear feedback shift register、以下、ＬＦＳＲと示す）は、乱数発生回路などに用いられる回路である。従来、ＩＣカードなどにおいて、乱数発生回路はセキュリティ上重要な回路である。例えば、ＩＣカードなどに搭載されている暗号処理装置において、暗号処理装置で消費される電力から暗号処理装置で用いられる秘密情報を取り出す電力解析という方法がある。このような解析方法への対策として、データマスキング法という技術が提案されている。データマスキング法によれば、乱数発生回路がマスクデータとしての乱数を生成し、暗号処理回路は、その乱数発生回路から供給されるマスクデータを用いてデータマスキングを行いながら、暗号処理を実行する。また、乱数発生回路は、故障印加解析において、故障印加のタイミングをずらすために用いられることもある。
【０００３】
ＬＦＳＲは、値がすべて０になるとそれ以外の値に変化しないという特徴がある（ＸＮＯＲ型のＬＦＳＲの場合は、すべて１になるとそれ以外の値に変化しない）。このような状態（以下、スタック状態と示す）になってしまうと、乱数発生回路の出力値は固定値となってしまう。このため、従来のＬＦＳＲでは、スタック状態検出回路を設け、スタック状態を検出するとＬＦＳＲにスタック状態とならない値を再設定することで、スタック状態を回避していた。
【０００４】
上記のように、ＬＦＳＲにスタック状態検出回路を設けた場合、スタック状態検出回路が正常に動作するか否かを検査する必要がある。ＬＦＳＲは通常の動作ではスタック状態にならないので、スタック状態検出回路を検査するために外部から強制的にスタック状態を発生させる必要がある。強制的にスタック状態を発生させる方法としては、例えば、ＬＦＳＲを構成するすべてのレジスタにリセット端子を設け、リセット入力をテスト入力に接続することでレジスタを０の状態、すなわちリセット状態に設定する方法がある。
【０００５】
しかし、この方法のようにテスト入力によってＬＦＳＲをスタック状態に設定できる機能を設けると、例えばＦＩＢ装置を用いたり、レーザーを照射したりすることによって、テスト入力の端子の値をリセット状態の値に固定されてしまうと、ＬＦＳＲを構成するレジスタはスタック状態に設定されてしまうため、ＬＦＳＲとして機能しなくなってしまうという問題があった。
【０００６】
一方、スタック状態のないＬＦＳＲを構成する装置も提案されている（例えば、特許文献１参照）。しかしながら、その提案においては、正確な意味でシフトレジスタが線形になっていないため、乱数に偏りが生じてしまい、乱数発生回路として用いるには不適当である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−２３２７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本実施形態は、以上の点に鑑みてなされたもので、ＬＦＳＲをスタック状態にすることなく、スタック状態検出回路のテストを行うことができる、スタック状態検出機能付き線形帰還シフトレジスタ、及びＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本実施形態のスタック状態検出機能付き線形帰還シフトレジスタは、複数ビットの状態を保持するレジスタと、前記レジスタの出力を多項式に従って変換する線形帰還回路と、スタック状態を検出するスタック状態検出回路と、テスト入力端子から入力される制御信号に従って、前記レジスタの出力をスタック状態に変換して出力するスタック状態生成回路と、を有することを特徴とする。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係わる暗号処理装置の構成の一例を説明する図。
【図２】本実施形態に係わるＬＦＳＲ１９の構成を説明するブロック図。
【図３】本実施形態に係わるＬＦＳＲ１９の詳細な構成を説明するブロック図。
【図４】本実施形態の変形例に係わるＬＦＳＲ１９の詳細な構成を説明するブロック図。
【図５】本実施形態の別の変形例に係わるＬＦＳＲ１９の詳細な構成を説明するブロック図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を説明する。
【００１２】
まず、図１を参照して、本実施形態に係わる暗号処理装置の構成を説明する。図１は、本実施形態に係わる暗号処理装置の構成の一例を説明する図である。
【００１３】
本実施形態に係わる暗号処理装置は、中央処理装置（CPU）１１と、プログラム等を記憶したROM１２と、CPU１１の作業用記憶領域としてのRAM１３と、外部とのデータの送受信を行うための送受信インターフェース回路（以下、送受信I/Fと略す）１４と、暗号処理回路である暗号回路モジュール１５と、暗号回路モジュール１５とバス１６との暗号回路I/F１７と、乱数発生回路１８とを含んで構成されている。乱数発生回路１８には線形帰還シフトレジスタ（ＬＦＳＲ）１９が含まれており、ＬＦＳＲ１９で生成された乱数は、暗号化モジュール回路１５に出力される。また、乱数発生回路１８は送受信I/F１４とも接続されている。CPU１１と、ROM１２、RAM１３と、送受信I/F１４と、暗号回路I/F１７は、バス１６を介して互いに接続されている。
【００１４】
暗号処理装置は、例えば、IC（Integrated Circuit）カードであり、カードリーダ装置等の外部装置（図示せず）からのデータを受信すると、そのデータに対して所定の暗号処理を施し、その暗号処理結果のデータを出力する。外部装置とのデータの送受信は、送受信I/F１４を介して、例えば、図示しない無線通信用の回路を介して無線通信により行われる。
【００１５】
また、CPU１１と暗号回路モジュール１５間で送受信されるデータも、暗号化される。そのため、図示しないが、CPU１１とバス１６の間と、バス１６と暗号回路I/F１５間には、それぞれ、例えば排他的論理和演算を行う回路が設けられている。
【００１６】
暗号回路モジュール１５は、二種類の暗号処理回路を含み、二種類の暗号処理回路は、互いに異なる暗号処理、暗号化及び／又は復号化の処理、を実行する。
【００１７】
図２は、本実施形態に係わるＬＦＳＲ１９の構成を説明するブロック図である。図２に示すように、本実施形態に係わるＬＦＳＲ１９は、状態を保持するレジスタ２２と、レジスタ２２の出力を用いて生成多項式によって次の状態を生成する線形帰還回路２１と、ＬＦＳＲのスタック状態を検出するスタック状態検出回路２３と、スタック状態検出回路２３のテストを行うためにスタック状態を生成するスタック状態生成回路２５とを備えている。
【００１８】
図２に示すＬＦＳＲ１９は、レジスタ２２からの出力が、線形帰還回路２１とスタック状態生成回路２５とに入力される。線形帰還回路２１は、レジスタ２２からの入力（＝現在の状態）から線形多項式に従って次の状態を生成し、レジスタ２２に出力する。レジスタ２２は、線形帰還回路２１から入力された状態（＝次の状態）を現在の状態として保持する。なお、レジスタ２２の保持している値は、乱数として暗号回路モジュール１５に出力される。
【００１９】
一方、スタック状態生成回路２５では、レジスタ２２から入力される信号と、テスト入力端子２４から入力される制御信号とに従って、スタック状態を生成する。スタック状態検出回路２３のテストを行うため、スタック状態を生成する旨の制御信号がテスト入力端子２４からスタック状態生成回路２５に入力されると、スタック状態生成回路２５は、該制御信号を用いてレジスタ２２から入力される信号を変換し、スタック状態を生成する。
【００２０】
スタック状態検出回路２３は、スタック状態生成回路２５から入力された信号がスタック状態の場合は、スタック状態検出信号を出力端子２６に出力する。
【００２１】
スタック状態検出回路２３がスタック状態を検出し、スタック状態検出信号を出力端子２６に出力した場合、例えば、ＬＦＳＲ１９を初期状態に再設定する、システム全体をリセットする、システムを停止状態にする、アラーム信号を発生させる、など、事前に設定された所定の動作が行われる。
【００２２】
図３は、本実施形態に係わるＬＦＳＲ１９の詳細な構成を説明するブロック図である。以下、図３に従ってＬＦＳＲ１９の詳細な動作を説明する。図３に示すＬＦＳＲ１９は、例えば、Ｘ＾４＋Ｘ＋１の線形多項式を持つフィナボッチ型として構成されている。レジスタ２２に与えられる初期値を（１１１１）とすると、線形帰還回路２１によって、（１１１１）→（０１１１）→（００１１）→（０００１）→（１０００）→（０１００）→（００１０）→（１００１）→（１１００）→（０１１０）→（１０１１）→（０１０１）→（１１１１）→…のようにレジスタ２２の値が遷移していく。なお、レジスタ２２の値が（００００）となると他の状態には遷移しなくなってしまう。すなわち、この状態がスタック状態である。
【００２３】
スタック状態検出回路２３は、４ビットの入力が全て“０”であることを検出する回路であり、例えば図３に示すように４つのインバータと４入力のＡＮＤゲートで構成されている。ＡＮＤゲートの出力は、出力端子２６に接続されている。スタック状態生成回路２５は、１つのＸＯＲゲートで構成されている。
【００２４】
スタック状態検出回路２３のテストではなく、通常の状態（レジスタ２２がスタック状態であるか否かを検出する状態）の場合、テスト入力端子２４から制御信号として“０”がスタック状態生成２５回路に入力される。この場合、スタック状態生成回路２５はレジスタ２２の出力をそのままスタック状態検出回路２３に出力する。従って、レジスタ２２が正常な状態遷移をしている場合には、スタック状態検出回路２３はスタック状態を検出することはない。
【００２５】
一方、スタック状態検出回路２３のテストの場合、テスト入力端子２４から制御信号として“１”がスタック状態生成回路２５に入力される。この場合、スタック状態生成回路２５は、左から２番目のビットを反転してスタック状態検出回路２３に出力する。従って、レジスタ２２の出力が、（１１１１）→（０１１１）→（００１１）→（０００１）→（１０００）→（０１００）→（００１０）→（１００１）→（１１００）→（０１１０）→（１０１１）→（０１０１）→（１１１１）→…の順に遷移する場合、スタック状態生成回路２５からスタック状態検出回路２３に対して、（１０１１）→（００１１）→（０１１１）→（０１０１）→（１１００）→（００００）→（０１１０）→（１１０１）→（１０００）→（００１０）→（１１１１）→（０００１）→（１０１１）→…の順に値が出力される。
【００２６】
すなわち、レジスタ２２からの出力が（０１００）の場合、スタック状態生成回路２５で左から２番目のビットが反転されるため、スタック状態生成回路２５からの出力は（００００）となる。スタック状態検出回路２３はスタック状態生成回路２５から（００００）の値が入力されることになり、出力端子２６からスタック状態を検出した旨の信号を出力する。
【００２７】
このように、本実施形態によれば、スタック状態検出回路２３の検査を行う場合、レジスタ２２からの出力を用いるのではなく、レジスタ２２の出力を、スタック状態生成回路２５によって特定のビット（上述の例の場合、左から２番目のビット）を反転してスタック状態検出回路２３に入力する。従って、レジスタ２２をスタック状態にすることなく、スタック状態検出回路２３のテストを行うことができる。
【００２８】
なお、図３に示すＬＦＳＲ１９はＸＯＲ型であるが、別の形としてＸＮＯＲ型のＬＦＳＲを用いてもよい。ＸＮＯＲ型のＬＦＳＲの場合、レジスタ２２の値が（１１１１）となるとスタック状態となる。テスト入力端子２４から制御信号として“１”がスタック状態生成回路２５に入力され、スタック状態検出回路２３のテストを行う場合、レジスタ２２が（１０１１）を出力した場合に、スタック状態生成回路２５で２番目のビットが反転されて（１１１１）がスタック状態検出回路２３に入力される。従って、ＸＮＯＲ型のＬＦＳＲの場合にも、レジスタ２２をスタック状態にすることなく、スタック状態検出回路２３にスタック状態を与えることができる。
【００２９】
また、スタック状態生成回路２５を、１つのＸＯＲゲートのかわりに１つのＡＮＤゲートで構成してもよい。この場合、テスト入力端子２４からスタック状態生成回路２５に対し、制御信号として“１”が入力されたときは、スタック状態生成回路２５はレジスタ２２の出力をそのままスタック状態検出回路２３に出力する。
【００３０】
一方、テスト入力端子２４からスタック状態生成回路２５に対し、制御信号として“０”が入力されたときは、スタック状態生成回路２５は、レジスタ２２の出力の２番目のビットを常に“０”にして出力する。従って、レジスタ２２の出力が（０１００）のときに、スタック状態生成回路２５からスタック状態検出回路２３に対して（００００）の値が出力されるため、レジスタ２２をスタック状態にすることなく、スタック状態検出回路２３のテストをすることができる。
【００３１】
また、図３に示すＬＦＳＲ１９では、レジスタ２２の左から２番目のビットの出力をスタック状態生成回路２５に入力しているが、２番目のビットに限定されるものではない。例えば１番目のビットなど、レジスタ２２から出力される値のうち、いずれか１つのビットがスタック状態生成回路２５に入力されるように構成してもよい。
【００３２】
（変形例）
次に、本実施形態のＬＦＳＲ１９の変形例について説明する。上述した実施形態のＬＦＳＲ１９では、スタック状態生成回路２５を１つのＸＯＲゲートで構成しており、同ＸＯＲゲートに対して１つのテスト入力端子２４が接続されているが、変形例では、スタック状態生成回路２５´を複数個のＸＯＲゲートで構成し、個々のＸＯＲゲートに対して別々のテスト入力端子２４´を接続するように構成している点が異なっている。その他の構成要素は上述の実施形態と構成要素が同じであるので、同じ符号を付して説明は省略する。
【００３３】
図４は、本実施形態の変形例に係わるＬＦＳＲ１９の詳細な構成を説明するブロック図である。図４に示すように、変形例のＬＦＳＲ１９には、例えばレジスタ２２の出力ビット数と同じ個数のＸＯＲゲートで構成されるスタック状態生成回路２５´が設けられている。スタック状態生成回路２５´を構成する複数のＸＯＲゲートには、レジスタ２２の各ビットの出力がそれぞれ接続されている。また、スタック状態生成回路２５´を構成するＸＯＲゲートの個数と同一個数のテスト入力端子２４´が設けられており、１つのテスト入力端子２４´が１つのＸＯＲゲートに入力されるよう接続されている。
【００３４】
このように構成することで、レジスタ２２からの出力のうち、値を反転させたいビットに接続されているスタック状態生成回路２５´のＸＯＲゲートに対し、テスト入力端子２４´から制御信号として“１”を与えることで、所望のタイミングでスタック状態を生成することができる。ＬＦＳＲの繰り返し周期は、ビット数をｎとすると、２＾ｎ−１である。テスト入力端子が１個であり、反転できるビット数が１ビットである場合、２＾ｎ−１回に１回しかスタック状態を生成できるレジスタ２２の出力値が得られないため、スタック状態を生成するために時間がかかる可能性がある。図４に示す変形例のように構成することで、任意のビットを反転させることができるため、スタック状態検出回路２３のテスト時間を短縮することができる。
【００３５】
なお、図４に示すスタック状態生成回路２５´は、レジスタ２２の出力ビット数と同数のＸＯＲゲートで構成しているが、全ビットを反転させるように構成する必要はなく、出力ビット数よりも少ない数のＸＯＲゲートで構成するようにしてもよい。
【００３６】
また、ＸＯＲゲートのかわりにＡＮＤゲートを用いてもよい。ＡＮＤゲートを用いる場合、制御信号として“０”を与えることでスタック状態検出回路２３のテストが行われるのは上述の場合と同様である。
【００３７】
（別の変形例）
本実施形態のＬＦＳＲ１９の別の変形例について説明する。上述した実施形態の変形例のＬＦＳＲ１９では、スタック状態生成回路２５´を構成するＸＯＲゲートと同数のテスト入力端子２４´を設け、ＸＯＲゲートとテスト入力端子２４´を１対１に対応づけて接続しているが、本変形例では、テスト入力端子２４”は１本のみであり、スタック状態生成回路２５´とテスト入力端子２４”との間にデコーダ２７を設けている点が異なっている。その他の構成要素は上述の実施形態と構成要素が同じであるので、同じ符号を付して説明は省略する。
【００３８】
図５は、本実施形態の別の変形例に係わるＬＦＳＲ１９の詳細な構成を説明するブロック図である。図５に示すように、別の変形例のＬＦＳＲ１９では、テスト入力端子２４”はデコーダ２７に接続されている。デコーダ２７には、スタック状態生成回路２５´を構成する複数のＸＯＲゲートと同じ本数の出力端子が設けられており、デコーダ２７の出力端子とＸＯＲゲートとは１対1で接続されている。デコーダ２７は、テスト入力端子２４”から入力された制御信号をデコードし、レジスタ２２から入力された信号を反転させるＸＯＲゲートを識別し、当該ＸＯＲゲートにのみ値を反転させるための制御信号を出力する。
【００３９】
例えば、レジスタ２２の出力が（０００１）である場合にスタック状態検出回路２３のテストを行う場合、４番目のビットを反転させる旨の制御信号がテスト入力端子２４”からデコーダ２７に入力される。デコーダ２７は、入力された制御信号をデコードし、スタック状態生成回路２５´の上から４番目のＸＯＲゲートに対して制御信号として“１”を入力する。当該ＸＯＲゲートはレジスタ２２から入力された値を反転させて出力させるので、スタック状態検出回路２３には（００００）が入力される。
【００４０】
図５に示した例では、デコーダ２７に設けられている出力端子のうち、１本のみ“１”が出力され、残りの３本は“０”が出力される。従って、スタック状態生成回路２５´を構成するＸＯＲゲートのうち任意の１つのゲートについて、レジスタ２２から入力された値を選択的に反転させることが可能となる。
【００４１】
スタック状態生成回路２５´を構成するＸＯＲゲートが４個の場合、テスト入力端子２４”からデコーダ２７に入力する制御信号は、２ビットあれは特定のＸＯＲゲートを選択的に指定することができる。従って、２本のテスト入力端子２４”でスタック状態生成回路２５´を制御することが可能となり、図４に示す変形例のＬＦＳＲよりもテスト入力端子２４”の本数を減ずることができ、簡易な構成で同じ機能を実現することができる。
【００４２】
なお、ＸＯＲゲートのかわりにＡＮＤゲートを用いてもよい。ＡＮＤゲートを用いる場合、デコーダ２７から入力する制御信号として“０”を与えたＸＯＲゲートが、レジスタ２２から入力された値を反転して出力するのは上述の場合と同様である。
【００４３】
また、図５に示すテスト入力端子２４”は、１本の信号線で２ビットの制御信号を時分割多重などによってデコーダ２７に転送しているが、時分割多重をしないで複数本の入力端子（２ビットであれば２本の信号線）を用いるように構成してもよい。
【００４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４５】
２１…線形帰還回路、２２…レジスタ、２３…スタック状態検出回路、２４…テスト入力端子、２５…スタック状態生成回路、２６…出力端子、
【図１】
2013191076.tif 000003
【図２】
2013191076.tif 000004
【図３】
2013191076.tif 000005
【図４】
2013191076.tif 000006
【図５】
2013191076.tif 000007