(57)【要約】【課題】  非接触データ通信においてデータ衝突時のリトライ処理や通信データの相互認証処理など、所定の通信間隔で乱数を発生させる場合でも、高いランダム性で乱数発生を実現できる乱数発生器を備えた非接触半導体チップ提供する。【解決手段】  非接触ＩＣカードに搭載されシステムクロックにより動作して非接触データ通信を行う半導体集積回路において、システムクロックＣＬＫ１を５以上の素数もしくはこれらの素数の倍数からなる分周比で分周する素数分周回路３１と、該素数分周回路から供給される分周クロックＣＬＫ３により動作して擬似乱数を生成する乱数生成回路３２とを有する乱数発生器１５を備えている。【選択図】        図２
2005124017.tif 000002
【特許請求の範囲】
【請求項１】
非接触ＩＣカードに搭載されシステムクロックにより動作してデータ通信を行う半導体集積回路において、
上記システムクロックを５以上の素数もしくはこれらの素数の倍数からなる分周比で分周する素数分周回路と、該素数分周回路から供給される分周クロックにより動作して擬似乱数を生成する乱数生成回路とを有する乱数発生器を備えていることを特徴とする半導体集積回路。
【請求項２】
上記システムクロックはデータ通信に用いられる搬送信号を第１の整数比で分周して生成され、且つ、データ通信用の通信クロックは上記搬送信号を第２の整数比で分周して生成されるとともに、
上記素数分周回路から供給される分周クロックは、上記通信クロックの周期のｎ倍又は１／ｎ倍（ｎは整数）と異なる周期にされることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
上記乱数生成回路はリニア・フィードバック・シフトレジスタからなることを特徴とする請求項１又は２に記載の半導体集積回路。
【請求項４】
上記素数分周回路の分周比を、複数種類の上記分周比の中から選択的に設定可能な分周比決定レジスタを備えていることを特徴とする請求項１〜３の何れかに記載の半導体集積回路。
【請求項５】
システムクロックを５以上の素数もしくはこれらの素数の倍数からなる分周比で分周する素数分周回路と、該素数分周回路から供給される分周クロックにより動作して擬似乱数を生成する乱数生成回路とを有する乱数発生器を備えていることを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路において乱数発生器のランダム性を向上する技術に関し、特に非接触ＩＣカードに搭載される半導体集積回路に利用して有用な技術に関する。
【背景技術】
【０００２】
非接触ＩＣカードとカードリーダライタ間のデータ通信において、通信可能範囲に複数のＩＣカードが進入してデータ衝突が生じた場合に通信の優先順位を決める処理や、通信データの相互認証を行う処理などに、非接触ＩＣカード側で乱数を生成してそれを用いることがある。
【０００３】
乱数生成には、ソフトウェア処理とハードウェア処理により行う場合があるが、非接触半導体チップには短い時間（例えば１００ｍｓ）に一定のデータ通信を行わなければならないと云った規定が課されることがあるので、ハードウェア処理の方がＣＰＵの負荷が低減できて有利である。
【０００４】
ハードウェア処理で擬似乱数を生成する方法としては、例えば、リニア・フィードバック・シフトレジスタ（以下、ＬＦＳＲと記す）を用いる方法がある。すなわち、半導体チップのシステムクロックでＬＦＳＲを動作させておき、通信動作において所定の条件が発生したタイミングでＬＦＳＲの出力を取り出して乱数とする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
非接触ＩＣカードに搭載される半導体チップ（以下、非接触半導体チップと呼ぶ）では、非接触データ通信のキャリア信号（搬送信号）を所定の分周比で分周した信号をシステムクロックや通信クロックに用いることがある。
【０００６】
ＬＦＳＲのような乱数生成回路の出力は一定の周期性を有する擬似乱数であるため、システムクロックで動作するＬＦＳＲの出力をシステムクロックのクロックエッジで見たときには、その出力値は一定のクロック数で同じパターンの繰り返しとなる。
【０００７】
またシステムクロックと通信クロックとが共にキャリア信号を分周して生成される場合、両者の分周比の比が１／８、１／４、３／４など約分した後の分子の値が小さくなると、通信クロックのクロックエッジのタイミングで見た乱数値の周期性も、ＬＦＳＲ固有の周期性の１〜３倍とあまり変わらないか、或いは、逆に１／４〜１／８と減少してしまう。
【０００８】
詳細には、擬似乱数の繰り返し周期を動作クロック（＝システムクロック）で表した数をＭとすると、Ｍに上記分周比の比を掛け合わせて約分した数の分子の値が、通信クロックでみたときの乱数の繰返し周期（単位は通信クロック）となる。例えば、擬似乱数の繰返し周期が動作クロックで２１２であり、システムクロックと通信クロックの分周比の比が１／８であれば、通信クロックで見たときの乱数の周期は通信クロックで２９となる。
【０００９】
一般に、乱数のためにシステムクロックと通信クロックの分周比の比を最適化することは困難であり、他の要因により分周比が決定されるため、上記のように乱数を発生させていたのでは、通信クロックで見たときの乱数の繰返し周期はあまり大きな値にできない。
【００１０】
従って、例えば通信を確立させるときにデータ衝突等があって通信確立処理を繰り返し行うリトライ処理を実行するときに、１回のリトライ処理の通信期間が通信クロックで見たときの擬似乱数の繰返し周期と一致してしまうと、リトライ処理を何度繰り返しても通信の優先順位を決める乱数値が常に同じ値になって、ランダム性が得られないというという不都合を発生させる。
【００１１】
また、同様に通信データの相互認証を行う処理においても、一定の通信間隔で乱数を発生させて認証処理に使うようにプログラムされた場合、この通信間隔が通信クロックで見たときの擬似乱数の繰返し周期と一致したり或いはｎ倍や１／ｎ倍（ｎは整数）の周期となってしまった場合に、認証処理における乱数のランダム性が低下してセキュリティ上の問題を発生させる。
【００１２】
また、一般に、周期性を有する乱数生成回路をシステムクロックで動作させるとともに、システムクロックで動作するプログラムにより乱数生成回路から周期的に乱数を取り出して使用する場合、乱数を取り出す周期が擬似乱数の繰返し周期と一致したり或いは１／２倍や１／３倍の周期となってしまうと、乱数のランダム性が著しく低下するという問題を発生させる。
【００１３】
この発明の目的は、非接触データ通信においてデータ衝突時のリトライ処理や通信データの相互認証処理など、所定の通信間隔で乱数を発生させる場合でも、高いランダム性で乱数発生を実現できる乱数発生器を備えた非接触半導体チップを提供することにある。
この発明の他の目的は、乱数発生器を備えた半導体集積回路において、擬似乱数生成回路の周期性を半導体集積回路の動作プログラムから見え難くして乱数のランダム性を向上することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、システムクロックを５以上の素数もしくはこれらの素数の倍数からなる分周比で分周する素数分周回路を備え、擬似乱数を生成するＬＦＳＲ等の乱数生成回路を上記素数分周回路から供給される分周クロックにより動作させて乱数を発生させるようにする。
【００１５】
このような手段によれば、非接触データ通信のキャリア信号を分周して通信クロックやシステムクロックを生成している半導体チップであっても、通信クロックのクロックエッジで見たときの乱数値の繰返し周期を、殆どの場合において分周クロックの分周比の素数分倍増させることが出来る。従って、通信クロックに同期して行われる通信処理に同期して乱数を取り出した場合に、その乱数の周期性は見え難くなり、通信処理において乱数のランダム性が向上する。
【００１６】
また、一般に、システムクロックで所定のプログラムを動作させるような半導体チップにおいても、乱数生成回路をシステムクロックでなく素数分周回路の分周クロックで動作させることにより、プログラムのループ処理等で所定間隔ごとに繰り返し乱数を取り出す場合にも、素数分周回路の分周比の素数分、乱数の繰返し周期が長くなったように振る舞うので、乱数のランダム性が向上する。
【発明の効果】
【００１７】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本発明に従うと、非接触データ通信において、データ衝突時のリトライ処理や通信データの相互認証処理など所定の通信間隔で乱数を使用する場合でも、高いランダム性で乱数を発生させることが出来るという効果がある。
また、一般的な半導体集積回路の乱数発生器においてもそのランダム性を向上させることが出来るという効果がある。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を図面に基づいて説明する。
図１は、本発明を適用して好適な非接触ＩＣカード用の半導体チップ１の実施例を示す全体構成図である。
【００１９】
この非接触半導体チップ１は、プログラムを実行するＣＰＵ（Central Processing Unit）１０と、暗号処理や複合処理の計算等を行うコプロセッサ１１と、ＣＰＵ１０やコプロセッサ１１に作業メモリ空間を提供するＲＡＭ（Random Access Memory）１２と、制御プログラムや制御データが格納されたＲＯＭ（Read Only Memory）１３と、ＩＤ情報および電子マネーや商品引換ポイントなどの有価情報を記憶するＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）１４と、通信の優先順位を決定したり通信データの相互認証処理に使用する乱数を発生させる乱数発生器１５と、電圧や周波数等の異常を検出する各種異常検出器１６と、非接触ＩＣカードの通信規格に準拠した通信処理を行う非接触インターフェース１７と、システムの動作異常を監視してリセット処理等を実行するウォッチドッグタイマ１８と、システムクロックＣＬＫ１や通信クロックＣＬＫ２を生成するクロックジェネレータ１９等を備えている。
【００２０】
そして、電磁誘導により電力の入力と通信データの送受信を行う図示しないコイル状のアンテナが上記非接触インターフェースに接続され、このアンテナがカードリーダライタにかざされることで、アンテナを通じて非接触半導体チップ１に電力が供給されるとともに、クロックジェネレータによりシステムクロックＣＬＫ１が生成されて、それらにより各部がアクティブにされてＣＰＵ１０によりＲＯＭ１３内の制御プログラムが実行されるようになっている。
【００２１】
特に制限されるものではないが、クロックジェネレータ１９はカードリーダライタから出力される非接触通信のキャリア信号のパルスＰＬＳ０を所定の分周比で分周することでシステムクロックＣＬＫ１と通信クロックＣＬＫ２を生成している。例えば、キャリア信号の周波数は１３．５６ＭＨｚであり、システムクロックＣＬＫ１はそれを８分周したもの、通信クロックＣＬＫ２は６４分周したものである。
【００２２】
また、クロックジェネレータ１９には設定レジスタが設けられ、システムクロックＣＬＫ１の分周比を２と３の倍数のうちの何れか１つに選択できるようになっている。設定レジスタの値はＲＯＭ１３内の所定の１ビットの値が割り当てられている。
【００２３】
図２には、図１の乱数発生器１５の構成図を示す。
乱数発生器１５は、システムクロックＣＬＫ１を予め定められた５以上の素数またはこれら素数の倍数を分周比として分周する素数分周回路３１と、素数分周回路３１から供給される分周クロックＣＬＫ３により動作して１クロックごとに擬似乱数を生成するＬＦＳＲ３２とを備え、システムバスを介してＬＦＳＲ３２からそのタイミングに生成されている乱数値が読み出せるようになっている。ＬＦＳＲ３２としては公知のＬＦＳＲと同一構成のものを使用することができるので具体的な構成の図示と説明は省略する。
【００２４】
図３には、図２の素数分周回路３１の構成図を示す。
この実施例の素数分周回路３１は、特に制限されないが、例えば"７，１１，３１，１２７，２５１"の５つの素数の何れかを分周比として、システムクロックＣＬＫ１を分周して素数分周クロックＣＬＫ３を生成するもので、これらの分周比のうち何れかを決定する素数分周レジスタ３１０と、入力値を"１"ずつカウントダウンしていくカウントダウンレジスタ３１１と、カウントダウンレジスタ３１１の値が"０"になったことを判定するアンダーフロー判定回路３１２等から構成される。
【００２５】
カウントダウンレジスタ３１１は、該レジスタ３１１のカウント値Ａか素数分周レジスタの出力値（選択された分周比）Ｂの何れかを選択的に入力するセレクタ３１１１と、カウントダウンのタイミングをシステムクロックＣＬＫ１に同期させて行うための８ｂｉｔフリップフロップ３１１２と、カウント値を１減算する減算器３１１３とから構成される。
【００２６】
そして、アンダーフロー判定回路３１２が"０"を判定したときに、ハイレベルのパルスを分周クロックＣＬＫ３として出力するとともに、この信号によりセレクタ３１１１の選択が減算器３１１３の出力値Ａから素数分周レジスタ３１０の出力値Ｂに切り替えられ、この値がシステムクロックＣＬＫ１ごとにフリップフロップ３１１２から減算器３１１３、セレクタ３１１１と送られて再びフリップフロップ３１１２に帰還するようにされる。そして、その値がカウントダウンされてカウント値が"０"になったら再び分周クロックＣＬＫ３が出力されるようになっている。
【００２７】
図４には、非接触データ通信のキャリア信号と各クロック信号の関係を説明する図を示す。
通信クロックＣＬＫ２とシステムクロックＣＬＫ１とは、先にも述べたように、クロックジェネレータ１９により、非接触データ通信のキャリア信号のパルスＰＬＳ０を例えばシステムクロックＣＬＫ１は８分周、通信クロックＣＬＫ２は６４分周して生成される。すなわち、システムクロックＣＬＫ１の周波数は通信クロックＣＬＫ２の周波数の８倍となっている。
【００２８】
乱数発生器１５で生成される分周クロックＣＬＫ３は、システムクロックＣＬＫ１を例えば分周比"１１"で分周して生成される。この場合、分周クロックＣＬＫ３の周波数は通信クロックＣＬＫ２の周波数の８／１１倍となり、分周クロックＣＬＫ３で生成している擬似乱数に繰返し周期が存在しても、通信クロックＣＬＫ２のクロックエッジのタイミングで見れば擬似乱数の繰返し周期はもっと長い周期となって現れる。すなわち、５以上の素数で分周した分周クロックＣＬＫ３で擬似乱数を生成することで、その素数分乱数の繰返し周期が倍増されて、通信クロックのクロックエッジのタイミングで取り出した乱数のランダム性が向上する。
【００２９】
従って、例えばデータ衝突等があって通信を確立するリトライ処理が何回か繰り返し行われる場合に、擬似乱数の繰返し周期が短く、１回のリトライ処理の通信期間が一致してしまったり、通信データの相互認証処理で複数の乱数を順次生成していく際にその生成間隔が擬似乱数の繰返し周期と一致したり繰返し周期の整数倍の期間や１／２周期や１／３周期や１／４周期となってしまうと、取り出した乱数が常に同じ値になったり、２通り〜４通りの値にしかならないなど乱数のランダム性が著しく低下するが、この実施の形態の乱数発生器１５では通信クロックで見たときの擬似乱数の繰返し周期は、ＬＦＳＲ３２が本来持っている擬似乱数の繰返し周期に比べて非常に長くなるので、リトライ処理や相互認証処理で使用される乱数のランダム性を低下させないように出来る。
【００３０】
なお、素数分周回路の分周比が余り大きくなってしまうと、分周クロックＣＬＫ３がハイレベルからロウレベルに切り替わる間隔が長くなるので、例えば、その間に複数回乱数が取り出されるような場合に全て同じ値になってしまうという不都合が生じるので、分周クロックＣＬＫ３の周期は乱数を取り出す間隔よりも十分に小さくなるように設定する必要がある。
【００３１】
また、非接触半導体チップは、電磁誘導により供給された電力を用いて動作するとともに、コイル状のアンテナに流す電流を変調することでデータ出力を行うので、集積回路全体に流れる電流ピークが制限され、電流ピークが大きくなるとＲＦ出力信号のノイズとなって現れやすいという性質があるが、この実施形態の非接触半導体チップ１では、ＬＦＳＲ３２の動作タイミングとなる分周クロックＣＬＫ３のクロックエッジと、通信クロックＣＬＫ２のクロックエッジとが殆どの期間においてずれているので、これらクロックエッジの同期による電流ピークの増加を抑えることが出来る。
【００３２】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、擬似乱数を生成する回路としてＬＦＳＲを用いているが、クロックで動作して擬似乱数を生成する回路であれば他の回路を同様に適用することも出来る。
【００３３】
また、素数分周回路の分周比として全て５以上の素数を例示してあるが、例えば"１４，２６"など５以上の素数の倍数であっても、"７，１３"などの素数とした場合と同様にランダム性の向上を図ることが出来る。
【００３４】
また、ＬＦＳＲの内部ロジックを変更して擬似乱数のパターン生成系列を幾つか選択できるように構成するとともに、所定の条件が成立したときや所定期間ごとにＬＦＳＲのパターン生成系列を変更して、更にランダム性の向上を図ることが出来る。また、素数分周レジスタ３１０の設定を回路の動作中に同様に変更して、ランダム性をより向上させることも出来る。
【００３５】
また、上記実施例では、非接触データ通信のキャリア信号のパルスを分周して通信クロックとシステムクロックを生成している非接触半導体チップについて説明したが、システムクロックを内部発振させて生成する非接触半導体チップとしても良く、この場合でも素数分周回路によりシステムクロックを分周したクロック信号を用いて乱数を生成することで、乱数のランダム性をより向上させることが出来る。
【００３６】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野である非接触半導体チップについて説明したがこの発明はそれに限定されるものでなく、乱数発生器を有する半導体集積回路に広く利用することができる。
【図面の簡単な説明】
【００３７】
【図１】本発明を適用して好適な非接触ＩＣカード用の半導体チップの実施例を示す全体構成図である。
【図２】図１の乱数発生器の構成を示すブロック図である。
【図３】図２の素数分周回路の構成を示すブロック図である。
【図４】非接触データ通信のキャリア信号と各クロック信号の関係を示す説明図である。
【符号の説明】
【００３８】
１      非接触半導体チップ
１０    ＣＰＵ
１１    コプロセッサ
１２    ＲＡＭ
１３    ＲＯＭ
１４    ＥＥＰＲＯＭ
１５    乱数発生器
１６    各種異常検出器
１７    非接触インターフェース
１８    ウォッチドッグタイマ
１９    クロックジェネレータ
３１    素数分周回路
３２    ＬＦＳＲ
３１０  素数分周レジスタ（分周比決定レジスタ）
３１１  カウントダウンレジスタ
３１２  アンダーフロー判定回路
ＣＬＫ１  システムクロック
ＣＬＫ２  通信クロック
ＣＬＫ３  分周クロック
ＰＬＳ０  キャリア信号のパルス
【図１】
2005124017.tif 000003
【図２】
2005124017.tif 000004
【図３】
2005124017.tif 000005
【図４】
2005124017.tif 000006