(57)【特許請求の範囲】
【請求項１】
認証データの生成処理を行うＣＰＵを具備しないＩＣカード用ＬＳＩにおいて、
乱数データの授受を行うインターフェース回路と、
命令コードを含む命令ファイルを保持する記憶部と、
前記命令コードに従う単位処理を順次実行することにより、前記乱数データから前記認証データを生成する処理を実行するコマンド処理部と
を有し、
前記コマンド処理部による前記認証データを生成する処理の時間を一定の時間にするように、前記コマンド処理部によって実行される前記命令コードに、前記単位処理の実行コードである命令コードの他に、ダミー処理の実行コードである命令コードが所定数挿入されている
ことを特徴とするＩＣカード用ＬＳＩ。
【請求項２】
請求項１記載のＩＣカード用ＬＳＩにおいて、
前記コマンド処理部は、前記命令コードに従って前記認証データを生成するための処理を制御する制御ロジック部を有することを特徴とするＩＣカード用ＬＳＩ。
【請求項３】
請求項１又は２に記載のＩＣカード用ＬＳＩにおいて、
前記記憶部は、不揮発性メモリであることを特徴とするＩＣカード用ＬＳＩ。
【請求項４】
請求項３記載のＩＣカード用ＬＳＩにおいて、
前記不揮発性メモリは、電気的な書き換えが可能な不揮発性メモリであることを特徴とするＩＣカード用ＬＳＩ。
【請求項５】
請求項３又は４に記載のＩＣカード用ＬＳＩにおいて、
前記不揮発性メモリは、前記乱数データから前記認証データを生成するための処理が行われる際のパラメータとして使用される認証用キーデータを記憶することを特徴とするＩＣカード用ＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードまたは上位装置の正当性を証明する認証データを生成する機能を備えたＩＣカード用ＬＳＩおよびその使用方法に関するものであり、特に認証データ生成のアルゴリズムをフレキシブルに変更でき、セキュリティを向上できるＩＣカード用ＬＳＩに関するものである。
【背景技術】
【０００２】
従来、この種のＩＣカード用ＬＳＩは、特開平３−２２４０８３号公報に開示されているように、ＣＰＵからなる制御部と、書き換え可能な不揮発性メモリからなるデータメモリと、マスクＲＯＭからなるプログラムメモリとで構成され、認証データ生成処理を含む各種コマンド処理を実行するものであり、データメモリの認証用キーデータをパラメータとして用いるプログラムメモリの固定の認証データ生成プログラムに従って、制御部において乱数データに認証データ生成処理を施すことにより、上位装置との相互認証における認証データを生成するものである。また、ＣＰＵではなく論理回路を用いて制御部を構成し、この制御部において固定のアルゴリズムにより認証データを生成するＩＣカード用ＬＳＩもある。
【特許文献１】特開平３−２２４０８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、ＣＰＵを備えた上記従来のＩＣカード用ＬＳＩには、ＬＳＩのサイズが大きく、価格が高くなるという欠点がある。また、固定の論理回路により制御部を構成した上記従来のＩＣカード用ＬＳＩには、低コストの反面、高度な暗号処理ができないという欠点がある。従って、第三者に解読されるとシステム全体のセキュリティを脅かす危険性がある。また、上記いずれのＩＣカード用ＬＳＩにおいても、認証データ生成処理にマスクＲＯＭまたは論理回路が用いられるため、認証データ生成処理のアルゴリズムを変更するには、ＬＳＩを作成するフォトマスクを変更しなければならず、変更にコストも時間もかかる。このため、容易に認証データ生成処理のアルゴリズムを変更できないという問題があった。
【０００４】
本発明はこのような従来の問題を解決するためになされたものであり、認証データ生成のアルゴリズムをフレキシブルに変更でき、セキュリティを向上できるＩＣカード用ＬＳＩを提供することを目的とするものである。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために本発明のＩＣカード用ＬＳＩは、認証データの生成処理を行うＣＰＵを具備しないＩＣカード用ＬＳＩであって、乱数データの授受を行うインターフェース回路と、命令コードを含む命令ファイルを保持する記憶部と、前記命令コードに従う単位処理を順次実行することにより、前記乱数データから前記認証データを生成する処理を実行するコマンド処理部とを有し、前記コマンド処理部による前記認証データを生成する処理の時間を一定の時間にするように、前記コマンド処理部によって実行される前記命令コードに、前記単位処理の実行コードである命令コードの他に、ダミー処理の実行コードである命令コードが所定数挿入されていることを特徴とする。
【発明の効果】
【０００６】
以上説明したように本発明のＩＣカード用ＬＳＩによれば、電気的にデータの書き込みが可能な不揮発性記憶手段に認証データ生成ファイルを記憶させ、論理回路により構成された制御ロジック部により認証データ生成ファイルに従って認証データ生成処理を制御することにより、認証データ生成用ファイルの内容を変更するだけで認証データ生成アルゴリズムを容易に変更でき、チップサイズを小さくできるとともに価格を下げることができ、複雑な認証データ生成処理ができるという効果がある。
【０００７】
また、本発明のＩＣカード用ＬＳＩを用いてＩＣカードを作成することにより、ＩＣカードの製造コストを下げることができ、ＩＣカードシステムのセキュリティを向上させることができるという効果がある。
【発明を実施するための最良の形態】
【０００８】
実施の形態１
図１は本発明の実施の形態１のＩＣカード用ＬＳＩ１の全体ブロック図である。ＩＣカード用ＬＳＩ１は、インターフェース部１０（インターフェース手段）と、コマンドレジスタ１１と、コマンドデコーダ１２と、コマンド処理集積部１３と、アドレスレジスタ＆カウンタ１５と、電気的に書き換えが可能な不揮発性メモリ（ＥＥＰＲＯＭ）１６（不揮発性記憶手段）と、８ビットのデータバスＬ１と、電源端子ＶＤＤと、接地端子ＧＮＤと、リセット入力端子ＲＳＴと、動作クロックが入力されるクロック入力端子ＣＬＫと、データ入出端子ＳＩＯとを有する。
【０００９】
電源端子ＶＤＤは外部の正電源に接続され、接地端子ＧＮＤは外部の接地電源に接続される。リセット端子ＲＳＴにはＩＣカード用ＬＳＩ１をリセットするためのリセット信号が外部から入力され、クロック入力端子ＣＬＫにはＩＣカード用ＬＳＩ１の動作クロックが外部から入力される。データ入出端子ＳＩＯは、図示しない上位装置に接続されている。また、インターフェース部１０とコマンド処理集積部１３とＥＥＰＲＯＭ１６とは、８ビットのデータバスＬ１により接続されている。
【００１０】
インターフェース部１０は、電源端子ＶＤＤ、接地端子ＧＮＤ、リセット入力端子ＲＳＴ、クロック入力端子ＣＬＫ、およびデータ入出端子ＳＩＯに接続されており、データ入出端子ＳＩＯを介して、各種コマンド処理のコマンドコード等のデータを上位装置から受け取り、また必要に応じて上位装置にデータを送る。また、コマンドレジスタ１１は、インターフェース部１０を通じて上位装置から送られてきた各種コマンドコードを格納する。また、コマンドデコーダ１２は、上位装置により指定されたコマンド処理を、コマンドレジスタ１１に格納されたコマンドコードにより判定する。
【００１１】
コマンド処理集積部１３は、ランダムロジック回路により構成され、認証データ生成処理のコマンドコードが上位装置から入力されたときに認証データ生成処理を実行する認証データ生成部１３ａ（認証データ生成手段）等の、各コマンド処理をそれぞれ実行する各種のコマンド処理部１３ｃと、コマンド処理部からの命令に従ってＥＥＰＲＯＭ１６を制御するＥＥＰＲＯＭコントローラ１３ｂとを有する。各種のコマンド処理部は、コマンドデコーダ１２により起動される。また、ＥＥＰＲＯＭ１６は、認証用キーデータ１６ａおよび認証データ生成用ファイル１６ｂを記憶している。ＥＥＰＲＯＭ１６は、コマンド処理集積部１３のＥＥＰＲＯＭコントローラ１３ｂからの命令に従い、アドレスレジスタ＆カウンタ１５により指定されたアドレスのデータをデータバスＬ２上に読み出しまたは指定されたアドレスにデータバスＬ２上のデータを書き込む。また、アドレスレジスタ＆カウンタ１５は、コマンド処理集積部１３のコマンド処理部からの命令に従ってＥＥＰＲＯＭ１６のアドレスデータを生成する。なお、アドレスレジスタ＆カウンタ１５は、ＥＥＰＲＯＭ１６に度数データを書き込む場合等に、コマンドレジスタ１１に格納されたデータに基づいてアドレスデータを生成することもある。
【００１２】
ＩＣカードと上位装置との相互認証の手順は、上位装置がＩＣカードの正当性を認証する手順と、逆にＩＣカードが上位装置の正当性を認証する手順からなる。上位装置がＩＣカードの正当性を認証する手順においては、ＩＣカードは、上位装置から転送されてきたＩＣカード認証用の乱数データを用いてＩＣカード認証用の認証データを生成し、これを上位装置に返送する。上位装置は、ＩＣカードとは別に、上記のＩＣカード認証用の乱数データを用いてＩＣカード認証用の認証データを生成し、この認証データとＩＣカードから返送されてきた認証データとが一致するか否かにより、ＩＣカードの正当性を判定する。また、ＩＣカードが上位装置の正当性を認証する手順においては、ＩＣカードは、上位装置認証用の乱数データを発生し、この乱数データを上位装置に転送するとともに、この乱数データを用いて上位装置認証用の認証データを生成する。上位装置は、ＩＣカードから転送された上位装置認証用の乱数データを用いて上位装置認証用の認証データを生成し、この認証データをＩＣカードに返送する。ＩＣカードは、自身で生成した上位装置認証用の認証データと、上位装置から返送されてきた認証データとが一致するか否かにより、上位装置の正当性を判定する。
【００１３】
認証データ生成部１３ａによる認証データ生成処理は、開始処理、各種の単位処理、および終了処理を順次実行することにより、認証データを生成する処理である。また、認証データ生成用ファイル１６ｂは、複数の命令コードを羅列したものである。この命令コードは、各種の単位処理のいずれかの実行コードであるか、終了処理の実行コードである。すなわち、認証データ生成用ファイル１６ｂは、単位処理および終了処理の実行コードを羅列したものであり、認証データ生成処理において、どのような単位処理をどのような順番で実行するかを示すものである。認証データ生成用ファイル１６ｂには、同一単位処理の実行コードが複数含まれていても良い。なお、この実施の形態１においては、命令コードは、単位処理または終了処理の実行コードであるものとしたが、認証データ生成用ファイル１６ｂに、単位処理および終了処理の実行コードのいずれにも該当しない命令コードが含まれていても良い。
【００１４】
図２は認証データ生成部１３ａのブロック図である。図２において、認証データ生成部１３ａは、ＫＥＹレジスタ１３１（認証用キー格納部）と、ＲＡＮレジスタ１３２（乱数／認証データ格納部）と、シフトレジスタ１３３（データ格納／ビットシフト部）と、セレクタ１３４と、ビット置換部１３５と、ビット反転部１３６と、ＸＯＲ部１３７と、ＩＮＳレジスタ１３８（命令コード格納部）と、論理回路により構成された制御ロジック部１３９と、１６ビットのローカルデータバスＬ２とを有する。なお、シフトレジスタ１３３と、セレクタ１３４と、ビット置換部１３５と、ビット反転部１３６と、ＸＯＲ部１３７と、ローカルデータバスＬ２とは、データ処理部を構成している。この実施の形態１における単位処理は、ＲＡＮレジスタ１３２−シフトレジスタ１３３間でデータを転送するＲＡＮ−シフト転送処理（乱数／認証データ転送処理）、ビットシフト処理、ビット置換処理、ビット反転処理、およびＸＯＲ処理である。
【００１５】
ＫＥＹレジスタ１３１とＲＡＮレジスタ１３２とＩＮＳレジスタ１３８とは、データバスＬ１に接続されている。また、ＲＡＮレジスタ１３２とシフトレジスタ１３３とビット置換部１３５とビット反転部１３６とＸＯＲ部１３７とは、ローカルデータバスＬ２に接続されている。なお、ここでは、認証用キーデータ１６ａおよび乱数データが６バイトのデータであるものとする。乱数データは、認証データの生成処理において、上位装置から入力されるデータもしくはＩＣカード内部で生成されるデータである。また、認証データ生成部１３ａ内のデータ処理は、全て１６ビット単位の処理であるものとする。
【００１６】
ＫＥＹレジスタ１３１は、各１バイトのレジスタＫＥＹ０〜ＫＥＹ５からなる計６バイトのレジスタであり、ＥＥＰＲＯＭ１６から読み出され、データバスＬ１を介して入力された認証用キーデータ１６ａを格納し、この認証用キーデータ１６ａをセレクタ１３４に出力する。また、ＲＡＮレジスタ１３２は、各１バイトのレジスタＲＡＮ０〜ＲＡＮ５からなる計６バイトのレジスタであり、インターフェース部１０およびデータバスＬ１を介して上位装置から入力された乱数データ、あるいはＩＣカード用ＬＳＩ１において図示しない乱数データ発生部により発生させた乱数データを格納し、この乱数データをローカルデータバスＬ２に出力するとともに、レジスタＲＡＮ０およびＲＡＮ１に格納された乱数データをセレクタ１３４に出力する。ＲＡＮ０およびＲＡＮ１には、乱数データの下位１６ビットデータが格納される。
【００１７】
シフトレジスタ１３３は、シフトキャリア（最終段のビットレジスタの出力）をラインＬ３により初段のビットレジスタの入力に接続した１６ビットのシフトレジスタであり、ローカルデータバスＬ２から入力された１６ビットのデータを各ビットレジスタに格納し、またこのデータの各ビットを循環シフトさせることによりビットシフトデータを生成する（ビットシフト処理）。すなわち、ビットシフト処理において、シフトキャリアとしてあふれたビットは、ラインＬ３により下位ビットとしてシフトレジスタ１３３に入力される。また、セレクタ１３４は、ＫＥＹレジスタ１３１のレジスタＫＥＹ０およびＫＥＹ１に格納された認証用キーデータ１６ａの１６ビットデータ、レジスタＫＥＹ２およびＫＥＹ３に格納された認証用キーデータ１６ａの１６ビットデータ、レジスタＫＥＹ４およびＫＥＹ５に格納された認証用キーデータ１６ａの１６ビットデータ、あるいはＲＡＮレジスタ１３２のレジスタＲＡＮ０およびＲＡＮ１に格納された乱数データの下位１６ビットデータのいずれかを選択し、選択した１６ビットデータをＸＯＲ部１３７に出力する。
【００１８】
ビット置換部１３５は、ビット置換テーブルを記憶しており、このビット置換テーブルに基づいて、シフトレジスタ１３３から入力された１６ビットデータの特定ビットを特定値に置換することによりビット置換データを生成し（ビット置換処理）、このビット置換データをローカルデータバスＬ２に出力する。上記ローカルデータバスＬ２に出力されたビット置換データは、再びシフトレジスタ１３３に格納される（シフトレジスタ１３３のデータはビット置換データに更新される）。また、ビット反転部１３６は、ビット反転テーブルを記憶しており、このビット反転テーブルに基づいて、シフトレジスタ１３３から入力された１６ビットデータの特定ビットを反転することによりビット反転データを生成し（ビット反転処理）、このビット反転データをローカルデータバスＬ２に出力する。上記ローカルデータバスＬ２に出力されたビット反転データも、再びシフトレジスタ１３３に格納される（シフトレジスタ１３３のデータはビット反転データに更新される）。また、ＸＯＲ部１３７は、セレクタ１３４から入力された１６ビットデータ（ＫＥＹレジスタ１３１に格納された認証用キーデータ１６ａの１６ビットデータまたはＲＡＮレジスタ１３２に格納された乱数データの下位１６ビットデータのいずれか制御ロジック部１３９により指定されたデータ）とシフトレジスタ１３３から入力された１６ビットデータとの対応するビットの排他的論理和からなる排他的論理和データを生成し（ＸＯＲ処理）、この排他的論理和データをローカルデータバスＬ２に出力する。上記ローカルデータバスＬ２に出力されたＸＯＲデータも、再びシフトレジスタ１３３に格納される（シフトレジスタ１３３のデータは排他的論理和データに更新される）。
【００１９】
ＩＮＳレジスタ１３８は、８ビットのレジスタであり、ＥＥＰＲＯＭ１６から読み出され、データバスＬ１を介して入力された認証データ生成用ファイル１６ｂの８ビットの命令コードを格納し、このＥＥＰＲＯＭ１６からロードされた命令コードを制御ロジック部１３９に出力する。
【００２０】
論理回路により構成される制御ロジック部１３９は、開始処理制御部１３９ｘと、終了処理制御部１３９ｆとを有し、また各単位処理に対応して複数設けられた単位処理制御部として、ＲＡＮ−シフト転送処理制御部１３９ａと、ビットシフト処理制御部１３９ｂと、ビット置換処理制御部１３９ｃと、ビット反転処理制御部１３９ｄと、ＸＯＲ処理制御部１３９ｅとを有する。
【００２１】
開始処理制御部１３９ｘは、認証データ生成処理の開始時に起動され、ＫＥＹレジスタ１３１、ＲＡＮレジスタ１３２、ＩＮＳレジスタ１３８、ＥＥＰＲＯＭコントローラ１３ｂ、およびアドレスレジスタ＆カウンタ１５を制御し、乱数データをＲＡＮレジスタ１３２に格納するとともに、ＥＥＰＲＯＭ１６の認証用キーデータ１４ａをデータバスＬ１を介してＫＥＹレジスタ１３１に格納し、コード番号の初期値をロードコード番号に設定し、このロードコード番号に該当するコード番号の命令コード（コード番号が初期値の命令コード）をＩＮＳレジスタ１３８にロードする。認証データ生成用ファイル１６ｂの命令コードはどのような順番でロードされるかが決まっている。上記のコード番号は、それぞれの命令コードに対応する番号であるとともに、対応する命令コードのロード順を示す番号である。また、上記のロードアドレス番号は、どのコード番号の命令コードをＩＮＳレジスタ１３８にロードするかあるいはロードしてあるかを示す番号であり、コード番号のいずれかに設定される変数である。
【００２２】
また、単位処理制御部は、ロードされた命令コードが対応する単位処理の実行コードであるときに選択的に起動され、対応する単位処理を実行させ、次にＥＥＰＲＯＭコントローラ１３ｂ、アドレスレジスタ＆カウンタ１５、およびＩＮＳレジスタ１３８を制御することにより（ＥＥＰＲＯＭ１６はＰＲＯＭコントローラ１３ｂおよびアドレスレジスタ＆カウンタ１５により制御される）、ロードコード番号を１つインクリメントし、このロードコード番号に該当するコード番号の命令コードをロードする。ＲＡＮ−シフト転送処理制御部１３９ａは、ＲＡＮ−シフト転送処理に対応する単位処理制御部であり、ＲＡＮレジスタ１３２およびシフトレジスタ１３３を制御し、ＲＡＮ−シフト転送処理を実行させる。また、ビットシフト処理制御部１３９ｂは、ビットシフト処理に対応する単位処理制御部であり、シフトレジスタ１３３を制御し、ビットシフト処理を実行させる。また、ビット置換処理制御部１３９ｃは、ビット置換処理に対応する単位処理制御部であり、シフトレジスタ１３３およびビット置換部１３５を制御し、ビット置換処理を実行させる。また、ビット反転処理制御部１３９ｄは、ビット反転処理に対応する単位処理制御部であり、シフトレジスタ１３３およびビット反転部１３６を制御し、ビット反転処理を実行させる。また、ＸＯＲ処理制御部１３９ｅは、ＸＯＲ処理に対応する単位処理制御部であり、ＫＥＹレジスタ１３１、ＲＡＮレジスタ１３２、シフトレジスタ１３３、セレクタ１３４、およびＸＯＲ部１３７を制御し、ＸＯＲ処理を実行させる。また、終了処理部１３９ｆは、ロードされた命令コードが終了処理の実行コードであるときに起動される。終了処理制御部１３９ｆが起動されたときには、生成した認証データはＲＡＮレジスタ１３２に格納されている。終了処理制御部１３９ｆは、ＲＡＮレジスタ１３２を制御し、ＲＡＮレジスタ１３２に格納されたデータを認証データとして、認証データ生成処理を終了させる。認証データは、その後データバスＬ１を通じて、上位装置に送られ、あるいはコマンド処理集積部の図示しない認証データ判定部に送られ、あるいはＥＥＰＲＯＭ１６に書き込まれる。
【００２３】
例えば、命令コードの個数が２０であり、最初にロードされる命令コードにコード番号１を対応させ、最後にロードされる命令コードにコード番号２０を対応させることにより、１〜２０のコード番号をロードされる順番に２０個の命令コードにそれぞれ対応させるものとすると、開始処理において、ロードコード番号は１に設定され、コード番号１の命令コードがロードされる。また、ロードされたコード番号ｋ（ｋは１〜２０のいずれかの整数）の命令コードが、例えばビットシフト処理の実行コードであれば、ビットシフト処理制御部１３９ｂが起動される。ビットシフト処理制御部１３９ｂは、ビットシフト処理を実行させ、ロードコード番号をｋからｋ＋１にインクリメントし、コード番号ｋ＋１の命令コードをロードする。あまた、コード番号またはロードコード番号とＥＥＰＲＯＭ１６における各命令コードのアドレスとを対応させても良い。
【００２４】
次に、本発明の実施の形態１のＩＣカード用ＬＳＩ１の動作を説明する。まず、図示しない上位装置からＩＣカード用ＬＳＩ１のインターフェース部１０に入力された、ＥＥＰＲＯＭ１６のデータ読み出し／書き込み処理、認証データ作成処理等のコマンド処理を示す各種コマンドコードは、インターフェース部１０からコマンドレジスタ１１に転送され、コマンドレジスタ１１に格納される。さらに、このコマンドコードは、コマンドデコーダ１２に転送される。
【００２５】
コマンドデコーダ１２は、コマンドレジスタ１１から転送されてきたコマンドコードがどのようなコマンド処理を示すものであるかを判定し、判定したコマンド処理を実行するコマンド処理集積部１３のコマンド処理部を起動する。そして、コマンドデコーダ１２により起動されたコマンド処理部によりコマンドコードに対応するコマンド処理が実行される。例えば、上位装置から入力されたコマンドコードがＥＥＰＲＯＭ１６にアクセスするコマンド処理である場合には、このコマンド処理を実行するコマンド処理部は、ＥＥＰＲＯＭコントローラ１３ｂとアドレスレジスタ＆カウンタ１５によりＥＥＰＲＯＭ１６を制御し、データバスＬ１を介してと上位装置の間のデータ転送を実行させる。また、上位装置から入力されたコマンドコードが認証データ生成処理である場合には、コマンドデコーダ１２により認証データ生成部１３ａが起動され、認証データ生成部１３ａは、ＥＥＰＲＯＭコントローラ１３ｂとアドレスレジスタ＆カウンタ１５によりＥＥＰＲＯＭ１６を制御し、乱数データに対し認証データ生成用ファイル１６ｂの命令コードによる単位処理を順次実行することにより、上記の乱数データから認証データを生成する。このとき、認証用キーデータ１６ａは、所定の単位処理においてパラメータとして用いられる。
【００２６】
図３は本発明の実施の形態１の認証データ生成処理における命令コードと処理内容を示す図である。命令コードの上位４ビットが各単位処理の実行コードである。図３においては、“０００１”がＲＡＮ−シフト転送処理の実行コードであり、“００１０”がビットシフト処理の実行コードであり、“００１１”がビット置換処理の実行コードであり、“０１００”がビット反転処理の実行コードであり、“０１０１”がＸＯＲ処理の実行コードである。また、“１１１１”が終了処理の実行コードである。
【００２７】
ＩＮＳレジスタ１３８にロードされた命令コードの上位４ビットが“０００１”である場合は、ＲＡＮ−シフト転送処理制御部１３９ａが起動され、ＲＡＮ−シフト転送処理が実行される。このとき、命令コードの下位４ビットの内、上位の２ビットにより転送先が指定され、また下位２ビットにより転送元が指定される。転送先または転送元の２ビットが“００”の場合はシフトレジスタ１３３を示し、“０１”の場合はＲＡＮレジスタ１３２のレジスタＲＡＮ０およびＲＡＮ１を示し、“１０”の場合はレジスタＲＡＮ２およびＲＡＮ３を示し、また“１１”の場合はＲＡＮ４および５を示す。例えば、命令コードが“０００１  １０００”の場合には、レジスタＲＡＮ０およびＲＡＮ１の１６ビットデータがシフトレジスタ１３３に転送される。
【００２８】
また、ロードされた命令コードの上位４ビットが“００１０”である場合は、ビットシフト処理制御部１３９ｂが起動され、シフトレジスタ１３３によりビットシフト処理が実行される。このとき、命令コードの下位４ビットの値は、ビットシフト数を示す。例えば下位４ビットの値が“００１１”の場合は３ビットシフトを示し、また“０１０１”の場合は５ビットシフトを示す。
【００２９】
また、命令コードの上位４ビットが“００１１”の場合は、ビット置換処理部１３９ｃが起動され、ビット置換部１３５によりビット置換テーブルに従ってシフトレジスタ１３３のデータのビット置換処理が実行され、生成されたビット置換データがシフトレジスタ１３３に格納される。このとき、命令コードの下位４ビットは任意である。
【００３０】
また、ロードされた命令コードの上位４ビットが“０１００”の場合は、ビット反転処理制御部１３９ｃが起動され、ビット反転部１３６によりビット反転テーブルに従ってシフトレジスタ１３３のデータのビット置換処理が実行され、生成されたビット置換データがシフトレジスタ１３３に格納される。このとき、命令コードの下位４ビットは任意である。
【００３１】
また、ロードされた命令コードの上位４ビットが“０１００”の場合は、ビット反転処理制御部１３９ｄが起動され、ビット反転部１３６により、ビット反転テーブルに従ってシフトレジスタ１３３のデータの特定ビットを反転させるビット反転処理が実行され、生成されたビット反転データがシフトレジスタ１３３に格納される。このとき、ＩＮＳレジスタ１３８の下位４ビットの値は任意である。
【００３２】
また、ロードされた命令コードの上位４ビットが“０１０１”の場合は、ＸＯＲ処理制御部１３９ｅが起動され、ＸＯＲ部１３７によりシフトレジスタ１３３のデータと指定されたデータ（セレクタ１３４による選択データ）とのＸＯＲ処理が実行され、生成されたＸＯＲデータがシフトレジスタ１３３に格納される。このとき、命令コードの下位４ビットによりセレクタ１３４の選択データが指定される。下位４ビットが“０００１”の場合はＲＡＮレジスタ１３２のレジスタＲＡＮ０およびＲＡＮ１のデータが選択され、“００１０”の場合はＫＥＹレジスタ１３１のレジスタＫＥＹ０およびＫＥＹ１のデータが選択され、“０１００”の場合はレジスタＫＥＹ２およびＫＥＹ３のデータが選択され、また“１０００”の場合はレジスタＫＥＹ４およびＫＥＹ５のデータが選択される。
【００３３】
また、ロードされた命令コードの上位４ビットが“１１１１”の場合は、終了処理制御部１３９ｆが起動される。終了処理制御部１３９ｆが起動されたときに、ＲＡＮレジスタ１３２に格納されているデータが、生成された認証データとなる。終了処理制御部１３９ｆは、上位装置、図示しない認証データ判定部、またはＥＥＰＲＯＭ１６に転送し、一連の認証データ生成処理を終了する。このとき、命令コードの下位４ビットは任意である。
【００３４】
図４は本発明の実施の形態１の認証データ生成処理の手順を示すフローチャートである。図４において、ｋは上記のロードコード番号である。まず、認証データ生成部１３ａの開始処理制御部１３９ｘは、ステップＳ１で、ＥＥＰＲＯＭコントローラ１３ｂを制御して、ＥＥＰＲＯＭ１６の認証用キーデータ１６ａをデータバスＬ１を介してＫＥＹレジスタ１３１に格納させるとともに、乱数データをＲＡＮレジスタ１３２に格納させ、ステップＳ２でアドレスレジスタ＆カウンタ１５に認証データ生成用ファイル１６ｂのコード番号１の命令コードのＥＥＰＲＯＭ１６におけるアドレスをセットし（このステップＳ２はロードコード番号ｋを１に設定することに該当する）、ステップＳ３で、ＥＥＰＲＯＭコントローラ１３ｂを制御して、認証データ生成用ファイル１６ｂのコード番号１の命令コードをデータバスＬ１を介してＩＮＳレジスタ１３８にロードさせる。
【００３５】
次に、ロードされた命令コードに従って、ＲＡＮ−シフト転送処理、ビットシフト処理、ビット置換処理、ビット反転処理、ＸＯＲ処理、または終了処理のいずれかの単位処理が実行される。すなわち、ステップＳ４で上記ロードされた命令コードがＲＡＮ−シフト転送処理の実行コードである場合には、ＲＡＮ−シフト転送処理制御部１３９ａが起動される。ＲＡＮ−シフト転送処理制御部１３９ａは、ステップＳ５でＲＡＮ−シフト転送処理を実行させ、ステップＳ１４でアドレスレジスタ＆カウンタ１５を１回インクリメントすることによりアドレスレジスタ＆カウンタ１５にコード番号２の命令コードのアドレスをセットし（このステップＳ２はロードコード番号ｋを１つインクリメントすることに該当する）、ステップＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし（ＩＮＳレジスタ１３８の値をコード番号２の命令コードの値に更新し）、ステップＳ４に戻る。また、ステップＳ４で上記ロードされたコード番号１の命令コードがＲＡＮ−シフト転送処理の実行コードでない場合にはステップＳ６に進む。
【００３６】
ステップＳ６で上記ロードされたコード番号１の命令コードがビットシフト処理の実行コードである場合には、ビットシフト処理制御部１３９ｂが起動される。ビットシフト処理制御部１３９ｂは、ステップＳ７でビットシフト処理を実行させ、ステップＳ１４でアドレスレジスタ＆カウンタ１５にコード番号２の命令コードのアドレスをセットし、Ｓ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。また、ステップＳ６で上記ロードされたコード番号１の命令コードがビットシフト処理の実行コードでない場合にはステップＳ８に進む。
【００３７】
ステップＳ８で上記ロードされたコード番号１の命令コードがビット置換処理の実行コードである場合には、ビット置換処理制御部１３９ｃが起動される。ビット置換処理制御部１３９ｃは、ステップＳ９でビット置換処理を実行し、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。また、ステップＳ８で上記ロードされたコード番号１の命令コードがビット置換処理の実行コードでない場合にはステップＳ１０に進む。
【００３８】
ステップＳ１０で上記ロードされたコード番号１の命令コードがビット反転処理の実行コードである場合には、ビット反転処理制御部１３９ｄが起動される。ビット反転処理制御部１３９ｄは、ステップＳ１１でビット反転処理を実行させ、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。また、ステップＳ１０で上記ロードされたコード番号１の命令コードがビット反転処理の実行コードでない場合にはステップＳ１２に進む。
【００３９】
ステップＳ１２で上記ロードされたコード番号１の命令コードがＸＯＲ処理を示すものである場合には、ＸＯＲ処理制御部１３９ｅが起動される。ＸＯＲ処理制御部１３９ｅは、ステップＳ１３でＸＯＲ処理を実行させ、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。このように、上記ロードされたコード番号１の命令コードに従って、ステップＳ５、Ｓ７、Ｓ９、Ｓ１１、またはＳ１３でいずれかの単位処理を実行し、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。
【００４０】
次に上記コード番号１の命令コードに対する手順と同様にして、ステップＳ４、Ｓ６、Ｓ８、Ｓ１０、Ｓ１２のいずれかで、上記ロードされたコード番号２の命令コードに対応する１３９ａ〜１３９ｅのいずれかの単位処理制御部が起動される。起動された単位処理制御部は、単位処理を実行させ、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号３の命令コードをロードし、再びステップＳ４に戻る。このように、ＩＮＳレジスタ１３８にロードされる命令コードが、単位処理の実行コードであり、終了処理の実行コードでない間は、命令コードにより指定された単位処理を順次実行していく。
【００４１】
次にステップＳ１２でロードされた命令コードがＸＯＲ処理の実行コードでない場合にはステップＳ１６に進む。ステップＳ１６で上記ロードされた命令コードが終了処理の実行コードであるので、終了処理制御部１３９ｆが起動される。このとき、ＲＡＮレジスタ１３２に格納されているデータが認証データとなる。終了処理制御部１３９ｆは、ステップＳ１６で終了処理を実行させ、一連の認証データ生成処理を終了させる。
【００４２】
図５は本発明の実施の形態１における認証データ生成用ファイル１６ｂのデータ例を示す図である。図５の認証データ生成用ファイル１６ｂによる認証データ生成処理においては、まず、コード番号１〜７の命令コードに従い、ＲＡＮレジスタ１３２のレジスタＲＡＮ０およびＲＡＮ１の乱数データの下位１６ビットデータをシフトレジスタ１３３にＲＡＮ−シフト転送処理し（コード番号１）、レジスタＲＡＮ２およびＲＡＮ３の乱数データの中位１６ビットデータをレジスタＲＡＮ０およびＲＡＮ１にＲＡＮ−シフト転送処理し（コード番号２）、シフトレジスタ１３３の上記下位１６ビットデータを３ビットシフト処理し（コード番号３）、このビットシフトデータをビット置換処理し（コード番号４）、このビット置換データをビット反転処理し（コード番号５）、このビット反転データをレジスタＫＥＹ４およびＫＥＹ５の認証用キーデータとＸＯＲ処理し（コード番号６）、このＸＯＲデータをレジスタＲＡＮ２およびＲＡＮ３に転送する（コード番号７）。
【００４３】
次にコード番号８〜１４の各命令コードに従い、レジスタＲＡＮ０およびＲＡＮ１の上記中位１６ビットデータをシフトレジスタ１３３に転送し（コード番号８）、レジスタＲＡＮ４およびＲＡＮ５の乱数データの上位１６ビットデータをレジスタＲＡＮ０およびＲＡＮ１に転送し（コード番号９）、シフトレジスタ１３３の上記中位１６ビットデータを５ビットシフト処理し（コード番号１０）、このビットシフトデータをビット置換処理し（コード番号１１）、このビット置換データをビット反転処理し（コード番号１２）、このビット反転データをレジスタＫＥＹ４およびＫＥＹ５の認証用キーデータとＸＯＲ処理し（コード番号１３）、このＸＯＲデータをレジスタＲＡＮ４およびＲＡＮ５に転送する（コード番号１４）。
【００４４】
次にコード番号１５〜２１の各命令コードに従い、レジスタＲＡＮ０およびＲＡＮ１の上記上位１６ビットデータをシフトレジスタ１３３に転送し（コード番号１５）、この上位１６ビットデータを７ビットシフト処理し（コード番号１６）、このビットシフトデータをビット置換処理し（コード番号１７）、このビット置換データをビット反転処理し（コード番号１８）、このビット反転データをレジスタＫＥＹ０およびＫＥＹ１の認証用キーデータとＸＯＲ処理し（コード番号１９）、このＸＯＲデータをレジスタＲＡＮ０およびＲＡＮ１に転送し（コード番号２０）、一連の認証データ生成処理を終了する（コード番号２１）。
【００４５】
すなわち、図５の認証データ生成処理においては、開始処理でレジスタＲ０およびＲ１に格納された乱数データの下位１６ビットデータに各種の単位処理を施し、認証データの中位１６ビットデータとしてレジスタＲ２およびＲ３に戻し、次に開始処理でレジスタＲ２およびＲ３に格納された乱数データの中位１６ビットデータに各種の単位処理を施し、認証データの上位１６ビットデータとしてレジスタＲ４およびＲ５に戻し、次に開始処理でレジスタＲ４およびＲ５に格納された乱数データの上位１６ビットデータに各種の単位処理を施し、認証データの下位１６ビットデータとしてレジスタＲ０およびＲ１に戻し、認証データ生成処理を終了する。なお、図５の認証データ生成用ファイル１６ｂは、２１バイトの容量であり、２０の単位処理を順次実行させるものであるが、ＥＥＰＲＯＭ１６に１００〜２００バイトの認証データ生成用ファイル１６ｂの記憶エリアを用意すれば、かなり複雑な認証データ生成処理が可能である。
【００４６】
この実施の形態１のＩＣカード用ＬＳＩ１は、認証データ生成用ファイル１６ｂの内容を変えるだけで異なる認証データ生成アルゴリズムのＩＣカード用ＬＳＩとなる。この認証データ生成アルゴリズムが互いに異なるＩＣカード用ＬＳＩにより認証データ生成アルゴリズムが異なるＩＣカードを作成し、ＩＣカードのＩＤ番号と認証データ生成アルゴリズムとの対応を上位装置に登録しておき、カードを発行したあとの相互認証時に、上位装置側において、ＩＣカードのＩＤ番号を読み出し、このＩＤ番号に対応する認証データ生成アルゴリズムで認証データを生成するようにすれば、認証データ生成アルゴリズムが互いに異なるＩＣカードによりＩＣカードシステムを構成することが可能となる。
【００４７】
このように実施の形態１のＩＣカード用ＬＳＩ１によれば、認証データ生成アルゴリズムを決める認証データ生成ファイル１６ｂを、電気的にデータの書き込みが可能なＥＥＰＲＯＭ１６に記憶させたことにより、認証データ生成用ファイル１６ｂの内容を変更するだけで製造過程（ＩＣカードの発行前）あるいはＩＣカードの発行後において認証データ生成アルゴリズムを容易に変更できる。また、ＩＣカード用ＬＳＩ全体を制御するＣＰＵを設けず、認証データ生成部１３ａに論理回路（ランダムロジック）で構成した制御ロジック部１３９を設け、この制御ロジック部１３９により、認証データ生成用ファイル１６ｂの各種単位処理の実行コードに従って各種単位処理を順次実行し、終了処理の実行コードに従って認証データ生成処理を終了する一連の認証データ生成処理を制御するようにしたことにより、ＣＰＵを備えた従来のＩＣカード用ＬＳＩよりもチップサイズを小さくできるとともに価格を下げることができ、またＣＰＵを備えない従来のＩＣカード用ＬＳＩよりも、認証データ生成アルゴリズムの自由度が大きくなり、複雑な認証データ生成処理ができる。
【００４８】
また、実施の形態１のＩＣカード用ＬＳＩ１を用いてＩＣカードを作成することにより、ＣＰＵを備えた従来のＩＣカード用ＬＳＩを用いてＩＣカードを作成する場合よりも、製造コストを下げることができる。また、認証データ生成アルゴリズムが互いに異なるＩＣカードを作成することができ、また認証データ生成アルゴリズムを解読されてしまった場合等に製造過程あるいはＩＣカード発行後において認証データ生成アルゴリズムを容易に変更することができるので、ＣＰＵを備えない従来のＩＣカード用ＬＳＩを用いてＩＣカードを作成する場合よりも、ＩＣカードシステムのセキュリティを向上させることができる。
【００４９】
実施の形態２
本発明の実施の形態２のＩＣカード用ＬＳＩは、上記実施の形態１のＩＣカード用ＬＳＩ（図１参照）において、コマンド処理集積部１３の認証データ生成部１３ａを認証データ生成部１４ａとしたものである。図６は本発明の実施の形態２の認証データ生成部１４ａのブロック図である。なお、図６において、図２と同じものには同じ符号を付けてある。図６において、認証データ生成部１４ａは、ＫＥＹレジスタ１３１と、ＲＡＮレジスタ１３２と、シフトレジスタ１３３と、セレクタ１３４と、ビット置換部１３５と、ビット反転部１３６と、ＸＯＲ部１３７と、ＩＮＳレジスタ１３８と、退避レジスタ１４０（退避データ格納部）と、ロジック回路により構成された制御ロジック部１４１と、１６ビットのローカルデータバスＬ２とを有する。すなわち、認証データ生成部１４ａは、図２の認証データ生成部１３ａにおいて、退避レジスタ１４０を追加し、制御ロジック部１３９を制御ロジック部１４１としたものである。
【００５０】
この実施の形態２における一連の認証データ生成処理は、開始処理、単位処理、ダミー処理、および終了処理である。すなわち、実施の形態２の認証データ生成処理は、上記第１の実施形態の認証データ生成処理に、ダミー処理を追加したものである。認証データ生成部１４ａによる認証データ生成処理は、最初に開始処理を実行し、次に各種の単位処理およびダミー処理を順次実行し、最後に終了処理を実行することにより、認証データを生成する処理である。また、この実施の形態２においては、認証データ生成用ファイル１６ｂに、単位処理および終了処理の実行コードのいずれにも該当しない命令コードが含まれているものとする。単位処理および終了処理の実行コードのいずれにも該当しない命令コードがＩＮＳレジスタ１３８にロードされた場合には、ダミー処理が実行される。ダミー処理は、ロードコード番号を１つインクリメントし、このロードコード番号に該当するコード番号命令コードをロードする処理である。
【００５１】
また、この実施の形態２における単位処理は、ＲＡＮ−シフト転送処理、ビットシフト処理、ビット置換処理、ビット反転処理、ＸＯＲ処理、退避レジスタ１４０−シフトレジスタ１３３間でデータを転送する退避−シフト転送処理（退避データ転送処理）、ビット判定ジャンプ処理（分岐ジャンプ処理）、およびジャンプ処理である。すなわち、実施の形態２の単位処理は、上記実施の形態１の単位処理に、退避−シフト転送処理と、ビット判定ジャンプ処理と、ジャンプ処理とを追加したものである。ビット判定ジャンプ処理は、ＲＡＮレジスタ１３２のデータまたはシフトレジスタ１３３のデータのいずれかを指定し、この指定したデータの特定ビットの値が“０”ならば何もせず、また“１”ならばロードコード番号を所定数ジャンプさせる単位処理である。また、ジャンプ処理は、ロードコード番号を所定数ジャンプさせる単位処理である。
【００５２】
退避レジスタ１４０は、１６ビットのレジスタであり、ローカルデータバスＬ２を通じてシフトレジスタ１３３から転送された１６ビットのデータを格納し、また格納したデータをローカルデータバスＬ２を通じてシフトレジスタ１３３に転送する。
【００５３】
論理回路により構成される制御ロジック部１４１は、開始処理制御部１３９ｘと、終了処理制御部１３９ｆと、ダミー処理制御部１４１ｊとを有し、また各単位処理に対応して複数設けられた単位処理制御部として、ＲＡＮ−シフト転送処理制御部１３９ａと、ビットシフト処理制御部１３９ｂと、ビット置換処理制御部１３９ｃと、ビット反転処理制御部１３９ｄと、ＸＯＲ処理制御部１３９ｅと、ビット判定ジャンプ処理制御部１４１ｇと、ジャンプ処理制御部１４１ｈと、退避−シフト転送処理制御部１４１ｉとを有する。すなわち、制御ロジック部１４１は、上記実施の形態１の制御ロジック部１３９に、ダミー処理制御部１４１ｊと、ビット判定ジャンプ処理制御部１４１ｇと、ジャンプ処理制御部１４１ｈと、退避−シフト転送処理制御部１４１ｉとを追加したものである。
【００５４】
ダミー処理制御部１４１ｊは、ロードされた命令コードが単位処理および終了処理の実行コードのいずれにも該当しないものである場合に起動され、ＩＮＳレジスタ１３８、ＥＥＰＲＯＭコントローラ１３ｂ、およびアドレスレジスタ＆カウンタ１５を制御し、ロードコード番号を１つインクリメントし、このロードコード番号に該当するコード番号命令コードをロードするダミー処理を実行させる。また、ビット判定ジャンプ処理制御部１４１ｇは、ビット判定ジャンプ処理に対応する単位処理制御部であり、ＲＡＮレジスタ１３２、シフトレジスタ１３３、およびアドレスレジスタ＆カウンタ１５を制御し、ビット判定ジャンプ処理を実行させる。また、ジャンプ処理制御部１４１ｈは、ジャンプ処理に対応する単位処理制御部であり、アドレスレジスタ＆カウンタ１５を制御し、ジャンプ処理を実行させる。また、退避−シフト転送処理制御部１４１ｉは、退避−シフト転送処理に対応する単位処理制御部であり、シフトレジスタ１３３および退避レジスタ１４０を制御し、退避−シフト転送処理を実行させる。これら１４１ｇ〜１４１ｊの単位処理制御部も、１３９ａ〜１３９ｅの単位処理制御部と同様に、単位処理を実行させたあとに、ＥＥＰＲＯＭコントローラ１３ｂ、アドレスレジスタ＆カウンタ１５、およびＩＮＳレジスタ１３８を制御することにより、ロードコード番号を１つインクリメントし、このロードコード番号に該当するコード番号の命令コードをロードする。１３９ａ〜１３９ｅ、１４１ｇ〜１４１ｉの各単位処理制御部のロードコード番号のインクリメントと命令コードのロードを制御する部分、およびダミー処理制御部１４１ｊとして、１つの論理回路を共有する構成であっても良い。
【００５５】
次に、本発明の実施の形態２のＩＣカード用ＬＳＩの動作を説明する。なお、実施の形態２のＩＣカード用ＬＳＩにおける、制御ロジック部１４１が起動されるまでの動作と、開始処理、終了処理、ＲＡＮ−シフト転送処理、ビットシフト処理、ビット置換処理、ビット反転処理、およびＸＯＲ処理の動作は、上記実施の形態１と同じである。
【００５６】
図７は本発明の実施の形態２の認証データ生成処理において追加した命令コードと処理内容を示す図である（実施の形態２の認証データ生成処理における命令コードと処理内容の内、図３の命令コードと処理内容を省略した図である）。図７においては、“０１１０”がビット判定ジャンプ処理の実行コードであり、“０１１１”がジャンプ処理の実行コードであり、“１０００”が退避−シフト転送処理の実行コードである。なお、上記の“０１１０”、“０１１１”、“１０００”および図３の“０００１”、“００１０”、“００１１”、“０１００”、“０１０１”以外がダミー処理の実行コードとなる。
【００５７】
ＩＮＳレジスタ１３８にロードされた命令コードの上位４ビットが“０１１０”の場合は、ビット判定ジャンプ処理部１４１ｇが起動され、ビット判定ジャンプ処理が実行される。ここでは、指定したレジスタのデータの特定ビットの値が“０”ならば何もせず、“１”ならばアドレスレジスタ＆カウンタ１５を２回インクリメントする（ロードコード番号を２つジャンプさせる）ものとする。このとき、命令コードの下位２ビットによりレジスタが指定される。下位２ビットが“００”の場合はシフトレジスタ１３３を示し、“０１”の場合はＲＡＮレジスタ１３２のレジスタＲＡＮ０を示し、“１０”の場合はレジスタＲＡＮ２を示し、また“１１”の場合はＲＡＮ４を示す。このビット判定ジャンプ処理のあとに、ビット判定ジャンプ処理制御部１４１ｇはアドレスレジスタ＆カウンタ１５を１回インクリメントするので、ロードされたコード番号ｋの命令コードでビット判定ジャンプ処理制御部１４１ｇが起動されたときには、ビット判定ジャンプ処理制御部１４１ｇは、指定したレジスタのデータの特定ビットの値に従ってコード番号ｋ１またはｋ＋３の命令コードをロードする。
【００５８】
また、ロードされた命令コードの上位４ビットが“０１１１”の場合は、ジャンプ処理制御部１４１ｈが起動され、ジャンプ処理が実行される。ここでは、アドレスレジスタ＆カウンタ１５を１回インクリメントする（ロードコード番号を１つジャンプさせる）ものとする。このとき、命令コードの下位４ビットは任意である。このジャンプ処理のあとに、ジャンプ処理部１４１ｇはアドレスレジスタ＆カウンタ１５をさらに１回インクリメントするので、ロードされたコード番号ｋの命令コードでジャンプ処理制御部１４１ｈが起動されたときには、ジャンプ処理制御部１４１ｈは、コード番号ｋ＋２の命令コードをロードする。従って、コード番号を２つ（認証データ生成用ファイル１６ｂを２バイト）ジャンプしたことになる。
【００５９】
また、ロードされた命令コードの上位４ビットが“１０００”の場合は、退避−シフト転送処理部１４１ｉが起動され、退避−シフト転送処理が実行される。このとき、命令コードの下位４ビットによりデータ転送の向きが指定される。すなわち、下位４ビットの内、上位の２ビットにより転送先が指定され、また下位２ビットにより転送元が指定される。転送先または転送元の２ビットの値が“００”の場合はシフトレジスタ１３３を示し、“０１”の場合は退避レジスタ１４０を示す。例えば、命令コードが“１０００  ０００１”の場合には、シフトレジスタ１３３の１６ビットデータが退避レジスタ１４０に転送される。
【００６０】
図８は本発明の実施の形態２の認証データ生成処理の手順を示すフローチャートである。なお、図８において、図４と同じものには同じ符号を付けてある。図７の認証データ生成処理は、図４の認証データ生成処理において、ステップＳ２１〜ステップＳ２７を追加したものである。
【００６１】
ステップＳ３でＩＮＳレジスタ１３８にロードされたコード番号の命令コードが、ステップＳ４、Ｓ６、Ｓ８、Ｓ１０、およびＳ１２で各単位処理の実行コードでない場合には、ステップＳ２１に進む。ステップＳ２１で上記ロードされたコード番号１の命令コードがビット判定ジャンプ処理の実行コードである場合には、ビット判定ジャンプ処理制御部１４１ｇが起動される。ビット判定ジャンプ処理制御部１４１ｇは、ステップＳ２２でビット判定ジャンプ処理を実行し、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。また、ステップＳ２１で上記ロードされたコード番号１の命令コードがビット判定ジャンプ処理の実行コードでない場合にはステップＳ２３に進む。
【００６２】
ステップＳ２３で上記ロードされたコード番号１の命令コードがジャンプ処理の実行コードである場合には、ジャンプ処理制御部１４１ｈが起動される。ジャンプ処理制御部１４１ｈは、ステップＳ２４でジャンプ処理を実行し、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。また、ステップＳ２３で上記ロードされたコード番号１の命令コードがジャンプ処理の実行コードでない場合にはステップＳ２５に進む。
【００６３】
ステップＳ２５で上記ロードされたコード番号１の命令コードが退避−シフト転送処理の実行コードである場合には、退避−シフト転送処理制御部１４１ｉが起動される。退避−シフト転送処理制御部１４１ｉは、ステップＳ２６で退避−シフト転送処理を実行し、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。また、ステップＳ２５で上記ロードされたコード番号１の命令コードが退避−シフト転送処理の実行コードでない場合にはステップＳ２７に進む。
【００６４】
ステップＳ２７で上記ロードされたコード番号１の命令コードが終了処理の実行コードでない場合には、ダミー処理制御部１４１ｊが起動される。ダミー処理制御部１４１ｊは、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードし、ステップＳ４に戻る。このように、上記ロードされたコード番号１の命令コードに従って、ステップＳ５、Ｓ７、Ｓ９、Ｓ１１、Ｓ１３、Ｓ２２、Ｓ２４、またはＳ２６でいずれかの単位処理を実行し、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号２の命令コードをロードするか、あるいはステップＳ１４およびＳ１５のコード番号２の命令コードのロードのみであるダミー処理を実行し、ステップＳ４に戻る。
【００６５】
次に上記コード番号１の命令コードに対する手順と同様にして、ステップＳ４、Ｓ６、Ｓ８、Ｓ１０、Ｓ１２、Ｓ２１、Ｓ２３、Ｓ２５、Ｓ２７のいずれかで、上記ロードされたコード番号２の命令コードに対応する１３９ａ〜１３９ｅ、１４１ｇ〜１４１ｉのいずれかの単位処理制御部あるいはダミー処理制御部１４１ｊが起動される。起動された単位処理制御部は、単位処理を実行させ、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号３の命令コードをロードし、再びステップＳ４に戻る。また、起動されたダミー処理制御部１４１ｊは、ステップＳ１４およびＳ１５でＩＮＳレジスタ１３８にコード番号３の命令コードをロードし、再びステップＳ４に戻る。このように、ＩＮＳレジスタ１３８にロードされる命令コードが、終了処理以外の実行コードである間は、命令コードにより指定された単位処理またはダミー処理を順次実行していく。
【００６６】
次にステップＳ２７でロードされた命令コードが終了処理の実行コードである場合にはステップＳ１６に進み、終了処理制御部１３９ｆが起動される。このとき、ＲＡＮレジスタ１３２に格納されているデータが認証データとなる。終了処理制御部１３９ｆは、ステップＳ１６で終了処理を実行させ、一連の認証データ生成処理を終了させる。
【００６７】
図９および図１０は本発明の実施の形態２における認証データ生成用ファイル１６ｂのデータ例を示す図である。図９はコード番号ｋの命令コードがビット判定ジャンプ処理の実行コードであり、コード番号ｋ＋２の命令コードがジャンプ処理の実行コードである例であり、また、図１０はコード番号ｋ＋１およびｋ＋６の命令コードが退避−シフト転送処理の実行コードである例である。
【００６８】
図９の認証データ生成用ファイル１６ｂによる認証データ生成処理においては、シフトレジスタ１３３の特定ビット（ｂｉｔ０）が“１”であるときには、コード番号ｋ＋１およびｋ＋２の命令コードをジャンプし（コード番号ｋ）、シフトレジスタ１３３のデータを８ビットシフト処理し（コード番号ｋ＋３）、この８ビットシフトデータをレジスタＫＥＹ０およびＫＥＹ１の認証用キーデータとＸＯＲ処理する（コード番号ｋ＋４）。また、シフトレジスタ１３３の特定ビットが“０”であるときには、コード番号ｋ＋１およびｋ＋２の命令コードをジャンプせず（コード番号ｋ）、シフトレジスタ１３３のデータを３ビットシフト処理し（コード番号ｋ＋１）、コード番号ｋ＋３の命令コードをジャンプし（コード番号ｋ＋２）、上記の３ビットシフトデータをレジスタＫＥＹ０およびＫＥＹ１の認証用キーデータとＸＯＲ処理する（コード番号ｋ＋４）。すなわち、図９の認証データ生成処理においては、シフトレジスタ１３３の特定ビットの値に従って、異なるビット数（３ビットまたは８ビット）のビットシフト処理をしたあと、ＸＯＲ処理する。
【００６９】
また、図１０の認証データ生成用ファイル１６ｂによる認証データ生成処理においては、レジスタＲＡＮ０およびＲＡＮ１のデータをシフトレジスタ１３３に転送し（コード番号ｋ）、シフトレジスタ１３３のデータを退避レジスタ１４０に退避させ（コード番号ｋ＋１）、シフトレジスタ１３３のデータをレジスタＲＡＮ０およびＲＡＮ１のデータとＸＯＲ処理する（コード番号ｋ＋２）。このとき、ＸＯＲ処理される両データは同じデータなので、ＸＯＲデータは全ビットが“０”となり、この全ビット“０”のデータがシフトレジスタ１３３に格納される。次に上記の全ビット“０”のシフトレジスタ１３３のデータをレジスタＫＥＹ０およびＫＥＹ１の認証用キーデータとＸＯＲ処理する（コード番号ｋ＋３）。このとき、ＸＯＲ処理される一方のデータが全ビット“０”なので、ＸＯＲデータは、他方のデータであるレジスタＫＥＹ０およびＫＥＹ１の認証用キーデータと同じになり、ＫＥＹ０およびＫＥＹ１の認証用キーデータがシフトレジスタ１３３に格納される。次にシフトレジスタ１３３に格納された上記認証キーデータをビット置換処理し（コード番号ｋ＋４）、このビット置換処理された認証キーデータをレジスタＲＡＮ０およびＲＡＮ１に転送し（コード番号ｋ＋５）、退避レジスタ１４０のデータをシフトレジスタ１３３に戻し（コード番号ｋ＋６）、シフトレジスタ１３３のデータをレジスタＲＡＮ０およびＲＡＮ１のＸＯＲ処理された認証キーデータとＸＯＲ処理する（コード番号ｋ＋７）。すなわち、図１０の認証データ生成処理においては、この退避レジスタ１４０と部１３９ｉの追加により、ＫＥＹレジスタ１３１の認証用キーデータをビット置換処理し、このビット置換処理された認証用キーデータをＸＯＲ処理に用いている。この他に、認証用キーデータにビット反転処理またはビットシフト処理を施すことにより認証用キーデータを加工し、この加工した認証キーデータをＸＯＲ処理に用いることもできる。上記の認証用キーデータの加工は、退避レジスタ１４０および退避−シフト転送処理制御部１４１ｉを追加したことにより可能となった。
【００７０】
この実施の形態２のＩＣカード用ＬＳＩは、単位処理の間にダミー処理を挿入することができ、認証用データ生成用ファイル１６ｂに各種単位処理および終了処理の実行コードでない命令コード（ダミー処理の実行コードとなる命令コード）を挿入することにより、何もせずに、次の命令コードをロードすることができる。この実施の形態２のＩＣカード用ＬＳＩによりＩＣカードごとに認証データ生成アルゴリズムを変える場合に、最長のアルゴリズムの認証用データ生成用ファイル１６ｂの命令コード数に合わせ、他の認証用データ生成用ファイル１６ｂにダミー処理の実行コードを所定数挿入することにより、互いに認証データ生成アルゴリズムが異なり、かつ認証データの生成処理時間が一定のＩＣカードを作成することができ、認証データの生成処理時間が認証データ生成アルゴリズム解読のヒントになることがない。
【００７１】
このように実施の形態２のＩＣカード用ＬＳＩによれば、認証データの生成アルゴリズムを製造過程において容易に変更することができ、チップサイズを小さくできるとともに価格を下げることができることに加え、ビット判定ジャンプ処理制御部１４１ｇおよびジャンプ処理部１４１ｈを設けたことにより分岐ジャンプ処理およびジャンプ処理が可能となり、また退避レジスタ１４０および退避−シフト転送処理制御部１４１ｉを設けたことによりＫＥＹレジスタ１３１の認証用キーデータを加工して用いることが可能となるので、認証データ生成アルゴリズムの自由度が上記第１の実施形態よりもさらに大きくなり、認証データ生成処理をさらに複雑化することができる。また、ダミー処理制御部１４１ｊを設けたことにより、認証データの生成処理時間を調整することができる。
【００７２】
また、実施の形態２のＩＣカード用ＬＳＩを用いてＩＣカードを作成することにより、製造コストを下げられることに加え、認証データ生成アルゴリズムが互いに異なり、それぞれの認証データ生成アルゴリズムが上記第１の実施形態よりもさらに複雑であり、かつ認証データの生成処理時間が一定なＩＣカードを作成することができ、また製造過程およびＩＣカード発行後において認証データ生成アルゴリズムを容易に変更することができるので、ＩＣカードシステムのセキュリティをさらに向上させることができる。
【００７３】
なお、上記実施の形態１および２では、認証用キーデータ、乱数データ、認証データを６バイトとし、データ処理およびデータ転送を１６ビット単位として説明したが、データサイズおよびデータ処理／データ転送の単位はこれらに限定されるものではない。
【００７４】
また、上記実施の形態１および２では、ビット置換部１３５のビット置換テーブルおよびビット反転部１３６のビット反転テーブルをそれぞれ１つとして説明しているが、複数のテーブルを用意し、命令コードの下位４ビットでテーブルを指定するようにしても良い。これにより、認証データ生成処理がさらに複雑になり、よりセキュリティを向上させることができる。
【００７５】
さらに、上記実施の形態１および２では、ＥＥＰＲＯＭ１６に認証用キーデータ１６ａと認証データ生成用ファイル１６ｂとをそれぞれ１つずつ記憶させているが、複数の認証用キーデータ１６ａまたは／および複数の認証データ生成用ファイル１６ｂを記憶させるようにしても良い。そして例えば、ＩＣカードの正当性を確認するための認証データ生成処理と、上位装置の正当性を確認するための認証データ生成処理とで別々の認証用キーデータおよび認証データ生成用ファイルを用いるようにすれば、ＩＣカードシステムのセキュリティをさらに向上させることができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施の形態１のＩＣカード用ＬＳＩの全体ブロック図である。
【図２】本発明の実施の形態１のＩＣカード用ＬＳＩにおける認証データ生成部のブロック図である。
【図３】本発明の実施の形態１の認証データ生成処理における命令コードと処理内容を示す図である。
【図４】本発明の実施の形態１の認証データ生成処理の手順を示すフローチャートである。
【図５】本発明の実施の形態１における認証データ生成用ファイルのデータ例を示す図である。
【図６】本発明の実施の形態２のＩＣカード用ＬＳＩにおける認証データ生成部のブロック図である。
【図７】本発明の実施の形態２の認証データ生成処理において追加した命令コードと処理内容を示す図である
【図８】本発明の実施の形態２の認証データ生成処理の手順を示すフローチャートである。
【図９】本発明の実施の形態２における認証データ生成用ファイルのデータ例（１）を示す図である。
【図１０】本発明の実施の形態２における認証データ生成用ファイルのデータ例（２）を示す図である。
【符号の説明】
【００７７】
１  ＩＣカード用ＬＳＩ、  １０  インターフェース部、  １３ａ，１４ａ  認証データ生成部、  １６  不揮発性メモリ（ＥＥＰＲＯＭ）、  １６ａ  認証用キーデータ、  １６ｂ  認証データ生成用ファイル、  １３１  ＫＥＹレジスタ、  １３２  ＲＡＮレジスタ、  １３３  シフトレジスタ、  １３５  ビット置換部、  １３６  ビット反転部、  １３７  ＸＯＲ部、  １３８  ＩＮＳレジスタ、  １３９  制御ロジック部、  １３９ａ  ＲＡＮ−シフト転送処理制御部、  １３９ｂ  ビットシフト処理制御部、  １３９ｃ  ビット置換処理制御部、  １３９ｄ  ビット反転処理制御部、  １３９ｅ  ＸＯＲ処理制御部、  １３９ｆ  終了処理制御部、  １３９ｘ  開始処理制御部、  １４０  退避レジスタ、  １４１ｇ  ビット判定ジャンプ処理制御部、  １４１ｈ  ジャンプ処理制御部、  １４１ｉ  退避−シフト転送処理制御部、  １４１ｊ  ダミー処理制御部。
【図１】
0004489068.tif 000002
【図２】
0004489068.tif 000003
【図３】
0004489068.tif 000004
【図４】
0004489068.tif 000005
【図５】
0004489068.tif 000006
【図６】
0004489068.tif 000007
【図７】
0004489068.tif 000008
【図８】
0004489068.tif 000009
【図９】
0004489068.tif 000010
【図１０】
0004489068.tif 000011