実施の形態1
図1は本発明の実施の形態1のICカード用LSI1の全体ブロック図である。ICカード用LSI1は、インターフェース部10(インターフェース手段)と、コマンドレジスタ11と、コマンドデコーダ12と、コマンド処理集積部13と、アドレスレジスタ&カウンタ15と、電気的に書き換えが可能な不揮発性メモリ(EEPROM)16(不揮発性記憶手段)と、8ビットのデータバスL1と、電源端子VDDと、接地端子GNDと、リセット入力端子RSTと、動作クロックが入力されるクロック入力端子CLKと、データ入出端子SIOとを有する。
電源端子VDDは外部の正電源に接続され、接地端子GNDは外部の接地電源に接続される。リセット端子RSTにはICカード用LSI1をリセットするためのリセット信号が外部から入力され、クロック入力端子CLKにはICカード用LSI1の動作クロックが外部から入力される。データ入出端子SIOは、図示しない上位装置に接続されている。また、インターフェース部10とコマンド処理集積部13とEEPROM16とは、8ビットのデータバスL1により接続されている。
インターフェース部10は、電源端子VDD、接地端子GND、リセット入力端子RST、クロック入力端子CLK、およびデータ入出端子SIOに接続されており、データ入出端子SIOを介して、各種コマンド処理のコマンドコード等のデータを上位装置から受け取り、また必要に応じて上位装置にデータを送る。また、コマンドレジスタ11は、インターフェース部10を通じて上位装置から送られてきた各種コマンドコードを格納する。また、コマンドデコーダ12は、上位装置により指定されたコマンド処理を、コマンドレジスタ11に格納されたコマンドコードにより判定する。
コマンド処理集積部13は、ランダムロジック回路により構成され、認証データ生成処理のコマンドコードが上位装置から入力されたときに認証データ生成処理を実行する認証データ生成部13a(認証データ生成手段)等の、各コマンド処理をそれぞれ実行する各種のコマンド処理部13cと、コマンド処理部からの命令に従ってEEPROM16を制御するEEPROMコントローラ13bとを有する。各種のコマンド処理部は、コマンドデコーダ12により起動される。また、EEPROM16は、認証用キーデータ16aおよび認証データ生成用ファイル16bを記憶している。EEPROM16は、コマンド処理集積部13のEEPROMコントローラ13bからの命令に従い、アドレスレジスタ&カウンタ15により指定されたアドレスのデータをデータバスL2上に読み出しまたは指定されたアドレスにデータバスL2上のデータを書き込む。また、アドレスレジスタ&カウンタ15は、コマンド処理集積部13のコマンド処理部からの命令に従ってEEPROM16のアドレスデータを生成する。なお、アドレスレジスタ&カウンタ15は、EEPROM16に度数データを書き込む場合等に、コマンドレジスタ11に格納されたデータに基づいてアドレスデータを生成することもある。
ICカードと上位装置との相互認証の手順は、上位装置がICカードの正当性を認証する手順と、逆にICカードが上位装置の正当性を認証する手順からなる。上位装置がICカードの正当性を認証する手順においては、ICカードは、上位装置から転送されてきたICカード認証用の乱数データを用いてICカード認証用の認証データを生成し、これを上位装置に返送する。上位装置は、ICカードとは別に、上記のICカード認証用の乱数データを用いてICカード認証用の認証データを生成し、この認証データとICカードから返送されてきた認証データとが一致するか否かにより、ICカードの正当性を判定する。また、ICカードが上位装置の正当性を認証する手順においては、ICカードは、上位装置認証用の乱数データを発生し、この乱数データを上位装置に転送するとともに、この乱数データを用いて上位装置認証用の認証データを生成する。上位装置は、ICカードから転送された上位装置認証用の乱数データを用いて上位装置認証用の認証データを生成し、この認証データをICカードに返送する。ICカードは、自身で生成した上位装置認証用の認証データと、上位装置から返送されてきた認証データとが一致するか否かにより、上位装置の正当性を判定する。
認証データ生成部13aによる認証データ生成処理は、開始処理、各種の単位処理、および終了処理を順次実行することにより、認証データを生成する処理である。また、認証データ生成用ファイル16bは、複数の命令コードを羅列したものである。この命令コードは、各種の単位処理のいずれかの実行コードであるか、終了処理の実行コードである。すなわち、認証データ生成用ファイル16bは、単位処理および終了処理の実行コードを羅列したものであり、認証データ生成処理において、どのような単位処理をどのような順番で実行するかを示すものである。認証データ生成用ファイル16bには、同一単位処理の実行コードが複数含まれていても良い。なお、この実施の形態1においては、命令コードは、単位処理または終了処理の実行コードであるものとしたが、認証データ生成用ファイル16bに、単位処理および終了処理の実行コードのいずれにも該当しない命令コードが含まれていても良い。
図2は認証データ生成部13aのブロック図である。図2において、認証データ生成部13aは、KEYレジスタ131(認証用キー格納部)と、RANレジスタ132(乱数/認証データ格納部)と、シフトレジスタ133(データ格納/ビットシフト部)と、セレクタ134と、ビット置換部135と、ビット反転部136と、XOR部137と、INSレジスタ138(命令コード格納部)と、論理回路により構成された制御ロジック部139と、16ビットのローカルデータバスL2とを有する。なお、シフトレジスタ133と、セレクタ134と、ビット置換部135と、ビット反転部136と、XOR部137と、ローカルデータバスL2とは、データ処理部を構成している。この実施の形態1における単位処理は、RANレジスタ132−シフトレジスタ133間でデータを転送するRAN−シフト転送処理(乱数/認証データ転送処理)、ビットシフト処理、ビット置換処理、ビット反転処理、およびXOR処理である。
KEYレジスタ131とRANレジスタ132とINSレジスタ138とは、データバスL1に接続されている。また、RANレジスタ132とシフトレジスタ133とビット置換部135とビット反転部136とXOR部137とは、ローカルデータバスL2に接続されている。なお、ここでは、認証用キーデータ16aおよび乱数データが6バイトのデータであるものとする。乱数データは、認証データの生成処理において、上位装置から入力されるデータもしくはICカード内部で生成されるデータである。また、認証データ生成部13a内のデータ処理は、全て16ビット単位の処理であるものとする。
KEYレジスタ131は、各1バイトのレジスタKEY0〜KEY5からなる計6バイトのレジスタであり、EEPROM16から読み出され、データバスL1を介して入力された認証用キーデータ16aを格納し、この認証用キーデータ16aをセレクタ134に出力する。また、RANレジスタ132は、各1バイトのレジスタRAN0〜RAN5からなる計6バイトのレジスタであり、インターフェース部10およびデータバスL1を介して上位装置から入力された乱数データ、あるいはICカード用LSI1において図示しない乱数データ発生部により発生させた乱数データを格納し、この乱数データをローカルデータバスL2に出力するとともに、レジスタRAN0およびRAN1に格納された乱数データをセレクタ134に出力する。RAN0およびRAN1には、乱数データの下位16ビットデータが格納される。
シフトレジスタ133は、シフトキャリア(最終段のビットレジスタの出力)をラインL3により初段のビットレジスタの入力に接続した16ビットのシフトレジスタであり、ローカルデータバスL2から入力された16ビットのデータを各ビットレジスタに格納し、またこのデータの各ビットを循環シフトさせることによりビットシフトデータを生成する(ビットシフト処理)。すなわち、ビットシフト処理において、シフトキャリアとしてあふれたビットは、ラインL3により下位ビットとしてシフトレジスタ133に入力される。また、セレクタ134は、KEYレジスタ131のレジスタKEY0およびKEY1に格納された認証用キーデータ16aの16ビットデータ、レジスタKEY2およびKEY3に格納された認証用キーデータ16aの16ビットデータ、レジスタKEY4およびKEY5に格納された認証用キーデータ16aの16ビットデータ、あるいはRANレジスタ132のレジスタRAN0およびRAN1に格納された乱数データの下位16ビットデータのいずれかを選択し、選択した16ビットデータをXOR部137に出力する。
ビット置換部135は、ビット置換テーブルを記憶しており、このビット置換テーブルに基づいて、シフトレジスタ133から入力された16ビットデータの特定ビットを特定値に置換することによりビット置換データを生成し(ビット置換処理)、このビット置換データをローカルデータバスL2に出力する。上記ローカルデータバスL2に出力されたビット置換データは、再びシフトレジスタ133に格納される(シフトレジスタ133のデータはビット置換データに更新される)。また、ビット反転部136は、ビット反転テーブルを記憶しており、このビット反転テーブルに基づいて、シフトレジスタ133から入力された16ビットデータの特定ビットを反転することによりビット反転データを生成し(ビット反転処理)、このビット反転データをローカルデータバスL2に出力する。上記ローカルデータバスL2に出力されたビット反転データも、再びシフトレジスタ133に格納される(シフトレジスタ133のデータはビット反転データに更新される)。また、XOR部137は、セレクタ134から入力された16ビットデータ(KEYレジスタ131に格納された認証用キーデータ16aの16ビットデータまたはRANレジスタ132に格納された乱数データの下位16ビットデータのいずれか制御ロジック部139により指定されたデータ)とシフトレジスタ133から入力された16ビットデータとの対応するビットの排他的論理和からなる排他的論理和データを生成し(XOR処理)、この排他的論理和データをローカルデータバスL2に出力する。上記ローカルデータバスL2に出力されたXORデータも、再びシフトレジスタ133に格納される(シフトレジスタ133のデータは排他的論理和データに更新される)。
INSレジスタ138は、8ビットのレジスタであり、EEPROM16から読み出され、データバスL1を介して入力された認証データ生成用ファイル16bの8ビットの命令コードを格納し、このEEPROM16からロードされた命令コードを制御ロジック部139に出力する。
論理回路により構成される制御ロジック部139は、開始処理制御部139xと、終了処理制御部139fとを有し、また各単位処理に対応して複数設けられた単位処理制御部として、RAN−シフト転送処理制御部139aと、ビットシフト処理制御部139bと、ビット置換処理制御部139cと、ビット反転処理制御部139dと、XOR処理制御部139eとを有する。
開始処理制御部139xは、認証データ生成処理の開始時に起動され、KEYレジスタ131、RANレジスタ132、INSレジスタ138、EEPROMコントローラ13b、およびアドレスレジスタ&カウンタ15を制御し、乱数データをRANレジスタ132に格納するとともに、EEPROM16の認証用キーデータ14aをデータバスL1を介してKEYレジスタ131に格納し、コード番号の初期値をロードコード番号に設定し、このロードコード番号に該当するコード番号の命令コード(コード番号が初期値の命令コード)をINSレジスタ138にロードする。認証データ生成用ファイル16bの命令コードはどのような順番でロードされるかが決まっている。上記のコード番号は、それぞれの命令コードに対応する番号であるとともに、対応する命令コードのロード順を示す番号である。また、上記のロードアドレス番号は、どのコード番号の命令コードをINSレジスタ138にロードするかあるいはロードしてあるかを示す番号であり、コード番号のいずれかに設定される変数である。
また、単位処理制御部は、ロードされた命令コードが対応する単位処理の実行コードであるときに選択的に起動され、対応する単位処理を実行させ、次にEEPROMコントローラ13b、アドレスレジスタ&カウンタ15、およびINSレジスタ138を制御することにより(EEPROM16はPROMコントローラ13bおよびアドレスレジスタ&カウンタ15により制御される)、ロードコード番号を1つインクリメントし、このロードコード番号に該当するコード番号の命令コードをロードする。RAN−シフト転送処理制御部139aは、RAN−シフト転送処理に対応する単位処理制御部であり、RANレジスタ132およびシフトレジスタ133を制御し、RAN−シフト転送処理を実行させる。また、ビットシフト処理制御部139bは、ビットシフト処理に対応する単位処理制御部であり、シフトレジスタ133を制御し、ビットシフト処理を実行させる。また、ビット置換処理制御部139cは、ビット置換処理に対応する単位処理制御部であり、シフトレジスタ133およびビット置換部135を制御し、ビット置換処理を実行させる。また、ビット反転処理制御部139dは、ビット反転処理に対応する単位処理制御部であり、シフトレジスタ133およびビット反転部136を制御し、ビット反転処理を実行させる。また、XOR処理制御部139eは、XOR処理に対応する単位処理制御部であり、KEYレジスタ131、RANレジスタ132、シフトレジスタ133、セレクタ134、およびXOR部137を制御し、XOR処理を実行させる。また、終了処理部139fは、ロードされた命令コードが終了処理の実行コードであるときに起動される。終了処理制御部139fが起動されたときには、生成した認証データはRANレジスタ132に格納されている。終了処理制御部139fは、RANレジスタ132を制御し、RANレジスタ132に格納されたデータを認証データとして、認証データ生成処理を終了させる。認証データは、その後データバスL1を通じて、上位装置に送られ、あるいはコマンド処理集積部の図示しない認証データ判定部に送られ、あるいはEEPROM16に書き込まれる。
例えば、命令コードの個数が20であり、最初にロードされる命令コードにコード番号1を対応させ、最後にロードされる命令コードにコード番号20を対応させることにより、1〜20のコード番号をロードされる順番に20個の命令コードにそれぞれ対応させるものとすると、開始処理において、ロードコード番号は1に設定され、コード番号1の命令コードがロードされる。また、ロードされたコード番号k(kは1〜20のいずれかの整数)の命令コードが、例えばビットシフト処理の実行コードであれば、ビットシフト処理制御部139bが起動される。ビットシフト処理制御部139bは、ビットシフト処理を実行させ、ロードコード番号をkからk+1にインクリメントし、コード番号k+1の命令コードをロードする。あまた、コード番号またはロードコード番号とEEPROM16における各命令コードのアドレスとを対応させても良い。
次に、本発明の実施の形態1のICカード用LSI1の動作を説明する。まず、図示しない上位装置からICカード用LSI1のインターフェース部10に入力された、EEPROM16のデータ読み出し/書き込み処理、認証データ作成処理等のコマンド処理を示す各種コマンドコードは、インターフェース部10からコマンドレジスタ11に転送され、コマンドレジスタ11に格納される。さらに、このコマンドコードは、コマンドデコーダ12に転送される。
コマンドデコーダ12は、コマンドレジスタ11から転送されてきたコマンドコードがどのようなコマンド処理を示すものであるかを判定し、判定したコマンド処理を実行するコマンド処理集積部13のコマンド処理部を起動する。そして、コマンドデコーダ12により起動されたコマンド処理部によりコマンドコードに対応するコマンド処理が実行される。例えば、上位装置から入力されたコマンドコードがEEPROM16にアクセスするコマンド処理である場合には、このコマンド処理を実行するコマンド処理部は、EEPROMコントローラ13bとアドレスレジスタ&カウンタ15によりEEPROM16を制御し、データバスL1を介してと上位装置の間のデータ転送を実行させる。また、上位装置から入力されたコマンドコードが認証データ生成処理である場合には、コマンドデコーダ12により認証データ生成部13aが起動され、認証データ生成部13aは、EEPROMコントローラ13bとアドレスレジスタ&カウンタ15によりEEPROM16を制御し、乱数データに対し認証データ生成用ファイル16bの命令コードによる単位処理を順次実行することにより、上記の乱数データから認証データを生成する。このとき、認証用キーデータ16aは、所定の単位処理においてパラメータとして用いられる。
図3は本発明の実施の形態1の認証データ生成処理における命令コードと処理内容を示す図である。命令コードの上位4ビットが各単位処理の実行コードである。図3においては、“0001”がRAN−シフト転送処理の実行コードであり、“0010”がビットシフト処理の実行コードであり、“0011”がビット置換処理の実行コードであり、“0100”がビット反転処理の実行コードであり、“0101”がXOR処理の実行コードである。また、“1111”が終了処理の実行コードである。
INSレジスタ138にロードされた命令コードの上位4ビットが“0001”である場合は、RAN−シフト転送処理制御部139aが起動され、RAN−シフト転送処理が実行される。このとき、命令コードの下位4ビットの内、上位の2ビットにより転送先が指定され、また下位2ビットにより転送元が指定される。転送先または転送元の2ビットが“00”の場合はシフトレジスタ133を示し、“01”の場合はRANレジスタ132のレジスタRAN0およびRAN1を示し、“10”の場合はレジスタRAN2およびRAN3を示し、また“11”の場合はRAN4および5を示す。例えば、命令コードが“0001 1000”の場合には、レジスタRAN0およびRAN1の16ビットデータがシフトレジスタ133に転送される。
また、ロードされた命令コードの上位4ビットが“0010”である場合は、ビットシフト処理制御部139bが起動され、シフトレジスタ133によりビットシフト処理が実行される。このとき、命令コードの下位4ビットの値は、ビットシフト数を示す。例えば下位4ビットの値が“0011”の場合は3ビットシフトを示し、また“0101”の場合は5ビットシフトを示す。
また、命令コードの上位4ビットが“0011”の場合は、ビット置換処理部139cが起動され、ビット置換部135によりビット置換テーブルに従ってシフトレジスタ133のデータのビット置換処理が実行され、生成されたビット置換データがシフトレジスタ133に格納される。このとき、命令コードの下位4ビットは任意である。
また、ロードされた命令コードの上位4ビットが“0100”の場合は、ビット反転処理制御部139cが起動され、ビット反転部136によりビット反転テーブルに従ってシフトレジスタ133のデータのビット置換処理が実行され、生成されたビット置換データがシフトレジスタ133に格納される。このとき、命令コードの下位4ビットは任意である。
また、ロードされた命令コードの上位4ビットが“0100”の場合は、ビット反転処理制御部139dが起動され、ビット反転部136により、ビット反転テーブルに従ってシフトレジスタ133のデータの特定ビットを反転させるビット反転処理が実行され、生成されたビット反転データがシフトレジスタ133に格納される。このとき、INSレジスタ138の下位4ビットの値は任意である。
また、ロードされた命令コードの上位4ビットが“0101”の場合は、XOR処理制御部139eが起動され、XOR部137によりシフトレジスタ133のデータと指定されたデータ(セレクタ134による選択データ)とのXOR処理が実行され、生成されたXORデータがシフトレジスタ133に格納される。このとき、命令コードの下位4ビットによりセレクタ134の選択データが指定される。下位4ビットが“0001”の場合はRANレジスタ132のレジスタRAN0およびRAN1のデータが選択され、“0010”の場合はKEYレジスタ131のレジスタKEY0およびKEY1のデータが選択され、“0100”の場合はレジスタKEY2およびKEY3のデータが選択され、また“1000”の場合はレジスタKEY4およびKEY5のデータが選択される。
また、ロードされた命令コードの上位4ビットが“1111”の場合は、終了処理制御部139fが起動される。終了処理制御部139fが起動されたときに、RANレジスタ132に格納されているデータが、生成された認証データとなる。終了処理制御部139fは、上位装置、図示しない認証データ判定部、またはEEPROM16に転送し、一連の認証データ生成処理を終了する。このとき、命令コードの下位4ビットは任意である。
図4は本発明の実施の形態1の認証データ生成処理の手順を示すフローチャートである。図4において、kは上記のロードコード番号である。まず、認証データ生成部13aの開始処理制御部139xは、ステップS1で、EEPROMコントローラ13bを制御して、EEPROM16の認証用キーデータ16aをデータバスL1を介してKEYレジスタ131に格納させるとともに、乱数データをRANレジスタ132に格納させ、ステップS2でアドレスレジスタ&カウンタ15に認証データ生成用ファイル16bのコード番号1の命令コードのEEPROM16におけるアドレスをセットし(このステップS2はロードコード番号kを1に設定することに該当する)、ステップS3で、EEPROMコントローラ13bを制御して、認証データ生成用ファイル16bのコード番号1の命令コードをデータバスL1を介してINSレジスタ138にロードさせる。
次に、ロードされた命令コードに従って、RAN−シフト転送処理、ビットシフト処理、ビット置換処理、ビット反転処理、XOR処理、または終了処理のいずれかの単位処理が実行される。すなわち、ステップS4で上記ロードされた命令コードがRAN−シフト転送処理の実行コードである場合には、RAN−シフト転送処理制御部139aが起動される。RAN−シフト転送処理制御部139aは、ステップS5でRAN−シフト転送処理を実行させ、ステップS14でアドレスレジスタ&カウンタ15を1回インクリメントすることによりアドレスレジスタ&カウンタ15にコード番号2の命令コードのアドレスをセットし(このステップS2はロードコード番号kを1つインクリメントすることに該当する)、ステップS15でINSレジスタ138にコード番号2の命令コードをロードし(INSレジスタ138の値をコード番号2の命令コードの値に更新し)、ステップS4に戻る。また、ステップS4で上記ロードされたコード番号1の命令コードがRAN−シフト転送処理の実行コードでない場合にはステップS6に進む。
ステップS6で上記ロードされたコード番号1の命令コードがビットシフト処理の実行コードである場合には、ビットシフト処理制御部139bが起動される。ビットシフト処理制御部139bは、ステップS7でビットシフト処理を実行させ、ステップS14でアドレスレジスタ&カウンタ15にコード番号2の命令コードのアドレスをセットし、S15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。また、ステップS6で上記ロードされたコード番号1の命令コードがビットシフト処理の実行コードでない場合にはステップS8に進む。
ステップS8で上記ロードされたコード番号1の命令コードがビット置換処理の実行コードである場合には、ビット置換処理制御部139cが起動される。ビット置換処理制御部139cは、ステップS9でビット置換処理を実行し、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。また、ステップS8で上記ロードされたコード番号1の命令コードがビット置換処理の実行コードでない場合にはステップS10に進む。
ステップS10で上記ロードされたコード番号1の命令コードがビット反転処理の実行コードである場合には、ビット反転処理制御部139dが起動される。ビット反転処理制御部139dは、ステップS11でビット反転処理を実行させ、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。また、ステップS10で上記ロードされたコード番号1の命令コードがビット反転処理の実行コードでない場合にはステップS12に進む。
ステップS12で上記ロードされたコード番号1の命令コードがXOR処理を示すものである場合には、XOR処理制御部139eが起動される。XOR処理制御部139eは、ステップS13でXOR処理を実行させ、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。このように、上記ロードされたコード番号1の命令コードに従って、ステップS5、S7、S9、S11、またはS13でいずれかの単位処理を実行し、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。
次に上記コード番号1の命令コードに対する手順と同様にして、ステップS4、S6、S8、S10、S12のいずれかで、上記ロードされたコード番号2の命令コードに対応する139a〜139eのいずれかの単位処理制御部が起動される。起動された単位処理制御部は、単位処理を実行させ、ステップS14およびS15でINSレジスタ138にコード番号3の命令コードをロードし、再びステップS4に戻る。このように、INSレジスタ138にロードされる命令コードが、単位処理の実行コードであり、終了処理の実行コードでない間は、命令コードにより指定された単位処理を順次実行していく。
次にステップS12でロードされた命令コードがXOR処理の実行コードでない場合にはステップS16に進む。ステップS16で上記ロードされた命令コードが終了処理の実行コードであるので、終了処理制御部139fが起動される。このとき、RANレジスタ132に格納されているデータが認証データとなる。終了処理制御部139fは、ステップS16で終了処理を実行させ、一連の認証データ生成処理を終了させる。
図5は本発明の実施の形態1における認証データ生成用ファイル16bのデータ例を示す図である。図5の認証データ生成用ファイル16bによる認証データ生成処理においては、まず、コード番号1〜7の命令コードに従い、RANレジスタ132のレジスタRAN0およびRAN1の乱数データの下位16ビットデータをシフトレジスタ133にRAN−シフト転送処理し(コード番号1)、レジスタRAN2およびRAN3の乱数データの中位16ビットデータをレジスタRAN0およびRAN1にRAN−シフト転送処理し(コード番号2)、シフトレジスタ133の上記下位16ビットデータを3ビットシフト処理し(コード番号3)、このビットシフトデータをビット置換処理し(コード番号4)、このビット置換データをビット反転処理し(コード番号5)、このビット反転データをレジスタKEY4およびKEY5の認証用キーデータとXOR処理し(コード番号6)、このXORデータをレジスタRAN2およびRAN3に転送する(コード番号7)。
次にコード番号8〜14の各命令コードに従い、レジスタRAN0およびRAN1の上記中位16ビットデータをシフトレジスタ133に転送し(コード番号8)、レジスタRAN4およびRAN5の乱数データの上位16ビットデータをレジスタRAN0およびRAN1に転送し(コード番号9)、シフトレジスタ133の上記中位16ビットデータを5ビットシフト処理し(コード番号10)、このビットシフトデータをビット置換処理し(コード番号11)、このビット置換データをビット反転処理し(コード番号12)、このビット反転データをレジスタKEY4およびKEY5の認証用キーデータとXOR処理し(コード番号13)、このXORデータをレジスタRAN4およびRAN5に転送する(コード番号14)。
次にコード番号15〜21の各命令コードに従い、レジスタRAN0およびRAN1の上記上位16ビットデータをシフトレジスタ133に転送し(コード番号15)、この上位16ビットデータを7ビットシフト処理し(コード番号16)、このビットシフトデータをビット置換処理し(コード番号17)、このビット置換データをビット反転処理し(コード番号18)、このビット反転データをレジスタKEY0およびKEY1の認証用キーデータとXOR処理し(コード番号19)、このXORデータをレジスタRAN0およびRAN1に転送し(コード番号20)、一連の認証データ生成処理を終了する(コード番号21)。
すなわち、図5の認証データ生成処理においては、開始処理でレジスタR0およびR1に格納された乱数データの下位16ビットデータに各種の単位処理を施し、認証データの中位16ビットデータとしてレジスタR2およびR3に戻し、次に開始処理でレジスタR2およびR3に格納された乱数データの中位16ビットデータに各種の単位処理を施し、認証データの上位16ビットデータとしてレジスタR4およびR5に戻し、次に開始処理でレジスタR4およびR5に格納された乱数データの上位16ビットデータに各種の単位処理を施し、認証データの下位16ビットデータとしてレジスタR0およびR1に戻し、認証データ生成処理を終了する。なお、図5の認証データ生成用ファイル16bは、21バイトの容量であり、20の単位処理を順次実行させるものであるが、EEPROM16に100〜200バイトの認証データ生成用ファイル16bの記憶エリアを用意すれば、かなり複雑な認証データ生成処理が可能である。
この実施の形態1のICカード用LSI1は、認証データ生成用ファイル16bの内容を変えるだけで異なる認証データ生成アルゴリズムのICカード用LSIとなる。この認証データ生成アルゴリズムが互いに異なるICカード用LSIにより認証データ生成アルゴリズムが異なるICカードを作成し、ICカードのID番号と認証データ生成アルゴリズムとの対応を上位装置に登録しておき、カードを発行したあとの相互認証時に、上位装置側において、ICカードのID番号を読み出し、このID番号に対応する認証データ生成アルゴリズムで認証データを生成するようにすれば、認証データ生成アルゴリズムが互いに異なるICカードによりICカードシステムを構成することが可能となる。
このように実施の形態1のICカード用LSI1によれば、認証データ生成アルゴリズムを決める認証データ生成ファイル16bを、電気的にデータの書き込みが可能なEEPROM16に記憶させたことにより、認証データ生成用ファイル16bの内容を変更するだけで製造過程(ICカードの発行前)あるいはICカードの発行後において認証データ生成アルゴリズムを容易に変更できる。また、ICカード用LSI全体を制御するCPUを設けず、認証データ生成部13aに論理回路(ランダムロジック)で構成した制御ロジック部139を設け、この制御ロジック部139により、認証データ生成用ファイル16bの各種単位処理の実行コードに従って各種単位処理を順次実行し、終了処理の実行コードに従って認証データ生成処理を終了する一連の認証データ生成処理を制御するようにしたことにより、CPUを備えた従来のICカード用LSIよりもチップサイズを小さくできるとともに価格を下げることができ、またCPUを備えない従来のICカード用LSIよりも、認証データ生成アルゴリズムの自由度が大きくなり、複雑な認証データ生成処理ができる。
また、実施の形態1のICカード用LSI1を用いてICカードを作成することにより、CPUを備えた従来のICカード用LSIを用いてICカードを作成する場合よりも、製造コストを下げることができる。また、認証データ生成アルゴリズムが互いに異なるICカードを作成することができ、また認証データ生成アルゴリズムを解読されてしまった場合等に製造過程あるいはICカード発行後において認証データ生成アルゴリズムを容易に変更することができるので、CPUを備えない従来のICカード用LSIを用いてICカードを作成する場合よりも、ICカードシステムのセキュリティを向上させることができる。
実施の形態2
本発明の実施の形態2のICカード用LSIは、上記実施の形態1のICカード用LSI(図1参照)において、コマンド処理集積部13の認証データ生成部13aを認証データ生成部14aとしたものである。図6は本発明の実施の形態2の認証データ生成部14aのブロック図である。なお、図6において、図2と同じものには同じ符号を付けてある。図6において、認証データ生成部14aは、KEYレジスタ131と、RANレジスタ132と、シフトレジスタ133と、セレクタ134と、ビット置換部135と、ビット反転部136と、XOR部137と、INSレジスタ138と、退避レジスタ140(退避データ格納部)と、ロジック回路により構成された制御ロジック部141と、16ビットのローカルデータバスL2とを有する。すなわち、認証データ生成部14aは、図2の認証データ生成部13aにおいて、退避レジスタ140を追加し、制御ロジック部139を制御ロジック部141としたものである。
この実施の形態2における一連の認証データ生成処理は、開始処理、単位処理、ダミー処理、および終了処理である。すなわち、実施の形態2の認証データ生成処理は、上記第1の実施形態の認証データ生成処理に、ダミー処理を追加したものである。認証データ生成部14aによる認証データ生成処理は、最初に開始処理を実行し、次に各種の単位処理およびダミー処理を順次実行し、最後に終了処理を実行することにより、認証データを生成する処理である。また、この実施の形態2においては、認証データ生成用ファイル16bに、単位処理および終了処理の実行コードのいずれにも該当しない命令コードが含まれているものとする。単位処理および終了処理の実行コードのいずれにも該当しない命令コードがINSレジスタ138にロードされた場合には、ダミー処理が実行される。ダミー処理は、ロードコード番号を1つインクリメントし、このロードコード番号に該当するコード番号命令コードをロードする処理である。
また、この実施の形態2における単位処理は、RAN−シフト転送処理、ビットシフト処理、ビット置換処理、ビット反転処理、XOR処理、退避レジスタ140−シフトレジスタ133間でデータを転送する退避−シフト転送処理(退避データ転送処理)、ビット判定ジャンプ処理(分岐ジャンプ処理)、およびジャンプ処理である。すなわち、実施の形態2の単位処理は、上記実施の形態1の単位処理に、退避−シフト転送処理と、ビット判定ジャンプ処理と、ジャンプ処理とを追加したものである。ビット判定ジャンプ処理は、RANレジスタ132のデータまたはシフトレジスタ133のデータのいずれかを指定し、この指定したデータの特定ビットの値が“0”ならば何もせず、また“1”ならばロードコード番号を所定数ジャンプさせる単位処理である。また、ジャンプ処理は、ロードコード番号を所定数ジャンプさせる単位処理である。
退避レジスタ140は、16ビットのレジスタであり、ローカルデータバスL2を通じてシフトレジスタ133から転送された16ビットのデータを格納し、また格納したデータをローカルデータバスL2を通じてシフトレジスタ133に転送する。
論理回路により構成される制御ロジック部141は、開始処理制御部139xと、終了処理制御部139fと、ダミー処理制御部141jとを有し、また各単位処理に対応して複数設けられた単位処理制御部として、RAN−シフト転送処理制御部139aと、ビットシフト処理制御部139bと、ビット置換処理制御部139cと、ビット反転処理制御部139dと、XOR処理制御部139eと、ビット判定ジャンプ処理制御部141gと、ジャンプ処理制御部141hと、退避−シフト転送処理制御部141iとを有する。すなわち、制御ロジック部141は、上記実施の形態1の制御ロジック部139に、ダミー処理制御部141jと、ビット判定ジャンプ処理制御部141gと、ジャンプ処理制御部141hと、退避−シフト転送処理制御部141iとを追加したものである。
ダミー処理制御部141jは、ロードされた命令コードが単位処理および終了処理の実行コードのいずれにも該当しないものである場合に起動され、INSレジスタ138、EEPROMコントローラ13b、およびアドレスレジスタ&カウンタ15を制御し、ロードコード番号を1つインクリメントし、このロードコード番号に該当するコード番号命令コードをロードするダミー処理を実行させる。また、ビット判定ジャンプ処理制御部141gは、ビット判定ジャンプ処理に対応する単位処理制御部であり、RANレジスタ132、シフトレジスタ133、およびアドレスレジスタ&カウンタ15を制御し、ビット判定ジャンプ処理を実行させる。また、ジャンプ処理制御部141hは、ジャンプ処理に対応する単位処理制御部であり、アドレスレジスタ&カウンタ15を制御し、ジャンプ処理を実行させる。また、退避−シフト転送処理制御部141iは、退避−シフト転送処理に対応する単位処理制御部であり、シフトレジスタ133および退避レジスタ140を制御し、退避−シフト転送処理を実行させる。これら141g〜141jの単位処理制御部も、139a〜139eの単位処理制御部と同様に、単位処理を実行させたあとに、EEPROMコントローラ13b、アドレスレジスタ&カウンタ15、およびINSレジスタ138を制御することにより、ロードコード番号を1つインクリメントし、このロードコード番号に該当するコード番号の命令コードをロードする。139a〜139e、141g〜141iの各単位処理制御部のロードコード番号のインクリメントと命令コードのロードを制御する部分、およびダミー処理制御部141jとして、1つの論理回路を共有する構成であっても良い。
次に、本発明の実施の形態2のICカード用LSIの動作を説明する。なお、実施の形態2のICカード用LSIにおける、制御ロジック部141が起動されるまでの動作と、開始処理、終了処理、RAN−シフト転送処理、ビットシフト処理、ビット置換処理、ビット反転処理、およびXOR処理の動作は、上記実施の形態1と同じである。
図7は本発明の実施の形態2の認証データ生成処理において追加した命令コードと処理内容を示す図である(実施の形態2の認証データ生成処理における命令コードと処理内容の内、図3の命令コードと処理内容を省略した図である)。図7においては、“0110”がビット判定ジャンプ処理の実行コードであり、“0111”がジャンプ処理の実行コードであり、“1000”が退避−シフト転送処理の実行コードである。なお、上記の“0110”、“0111”、“1000”および図3の“0001”、“0010”、“0011”、“0100”、“0101”以外がダミー処理の実行コードとなる。
INSレジスタ138にロードされた命令コードの上位4ビットが“0110”の場合は、ビット判定ジャンプ処理部141gが起動され、ビット判定ジャンプ処理が実行される。ここでは、指定したレジスタのデータの特定ビットの値が“0”ならば何もせず、“1”ならばアドレスレジスタ&カウンタ15を2回インクリメントする(ロードコード番号を2つジャンプさせる)ものとする。このとき、命令コードの下位2ビットによりレジスタが指定される。下位2ビットが“00”の場合はシフトレジスタ133を示し、“01”の場合はRANレジスタ132のレジスタRAN0を示し、“10”の場合はレジスタRAN2を示し、また“11”の場合はRAN4を示す。このビット判定ジャンプ処理のあとに、ビット判定ジャンプ処理制御部141gはアドレスレジスタ&カウンタ15を1回インクリメントするので、ロードされたコード番号kの命令コードでビット判定ジャンプ処理制御部141gが起動されたときには、ビット判定ジャンプ処理制御部141gは、指定したレジスタのデータの特定ビットの値に従ってコード番号k1またはk+3の命令コードをロードする。
また、ロードされた命令コードの上位4ビットが“0111”の場合は、ジャンプ処理制御部141hが起動され、ジャンプ処理が実行される。ここでは、アドレスレジスタ&カウンタ15を1回インクリメントする(ロードコード番号を1つジャンプさせる)ものとする。このとき、命令コードの下位4ビットは任意である。このジャンプ処理のあとに、ジャンプ処理部141gはアドレスレジスタ&カウンタ15をさらに1回インクリメントするので、ロードされたコード番号kの命令コードでジャンプ処理制御部141hが起動されたときには、ジャンプ処理制御部141hは、コード番号k+2の命令コードをロードする。従って、コード番号を2つ(認証データ生成用ファイル16bを2バイト)ジャンプしたことになる。
また、ロードされた命令コードの上位4ビットが“1000”の場合は、退避−シフト転送処理部141iが起動され、退避−シフト転送処理が実行される。このとき、命令コードの下位4ビットによりデータ転送の向きが指定される。すなわち、下位4ビットの内、上位の2ビットにより転送先が指定され、また下位2ビットにより転送元が指定される。転送先または転送元の2ビットの値が“00”の場合はシフトレジスタ133を示し、“01”の場合は退避レジスタ140を示す。例えば、命令コードが“1000 0001”の場合には、シフトレジスタ133の16ビットデータが退避レジスタ140に転送される。
図8は本発明の実施の形態2の認証データ生成処理の手順を示すフローチャートである。なお、図8において、図4と同じものには同じ符号を付けてある。図7の認証データ生成処理は、図4の認証データ生成処理において、ステップS21〜ステップS27を追加したものである。
ステップS3でINSレジスタ138にロードされたコード番号の命令コードが、ステップS4、S6、S8、S10、およびS12で各単位処理の実行コードでない場合には、ステップS21に進む。ステップS21で上記ロードされたコード番号1の命令コードがビット判定ジャンプ処理の実行コードである場合には、ビット判定ジャンプ処理制御部141gが起動される。ビット判定ジャンプ処理制御部141gは、ステップS22でビット判定ジャンプ処理を実行し、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。また、ステップS21で上記ロードされたコード番号1の命令コードがビット判定ジャンプ処理の実行コードでない場合にはステップS23に進む。
ステップS23で上記ロードされたコード番号1の命令コードがジャンプ処理の実行コードである場合には、ジャンプ処理制御部141hが起動される。ジャンプ処理制御部141hは、ステップS24でジャンプ処理を実行し、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。また、ステップS23で上記ロードされたコード番号1の命令コードがジャンプ処理の実行コードでない場合にはステップS25に進む。
ステップS25で上記ロードされたコード番号1の命令コードが退避−シフト転送処理の実行コードである場合には、退避−シフト転送処理制御部141iが起動される。退避−シフト転送処理制御部141iは、ステップS26で退避−シフト転送処理を実行し、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。また、ステップS25で上記ロードされたコード番号1の命令コードが退避−シフト転送処理の実行コードでない場合にはステップS27に進む。
ステップS27で上記ロードされたコード番号1の命令コードが終了処理の実行コードでない場合には、ダミー処理制御部141jが起動される。ダミー処理制御部141jは、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードし、ステップS4に戻る。このように、上記ロードされたコード番号1の命令コードに従って、ステップS5、S7、S9、S11、S13、S22、S24、またはS26でいずれかの単位処理を実行し、ステップS14およびS15でINSレジスタ138にコード番号2の命令コードをロードするか、あるいはステップS14およびS15のコード番号2の命令コードのロードのみであるダミー処理を実行し、ステップS4に戻る。
次に上記コード番号1の命令コードに対する手順と同様にして、ステップS4、S6、S8、S10、S12、S21、S23、S25、S27のいずれかで、上記ロードされたコード番号2の命令コードに対応する139a〜139e、141g〜141iのいずれかの単位処理制御部あるいはダミー処理制御部141jが起動される。起動された単位処理制御部は、単位処理を実行させ、ステップS14およびS15でINSレジスタ138にコード番号3の命令コードをロードし、再びステップS4に戻る。また、起動されたダミー処理制御部141jは、ステップS14およびS15でINSレジスタ138にコード番号3の命令コードをロードし、再びステップS4に戻る。このように、INSレジスタ138にロードされる命令コードが、終了処理以外の実行コードである間は、命令コードにより指定された単位処理またはダミー処理を順次実行していく。
次にステップS27でロードされた命令コードが終了処理の実行コードである場合にはステップS16に進み、終了処理制御部139fが起動される。このとき、RANレジスタ132に格納されているデータが認証データとなる。終了処理制御部139fは、ステップS16で終了処理を実行させ、一連の認証データ生成処理を終了させる。
図9および図10は本発明の実施の形態2における認証データ生成用ファイル16bのデータ例を示す図である。図9はコード番号kの命令コードがビット判定ジャンプ処理の実行コードであり、コード番号k+2の命令コードがジャンプ処理の実行コードである例であり、また、図10はコード番号k+1およびk+6の命令コードが退避−シフト転送処理の実行コードである例である。
図9の認証データ生成用ファイル16bによる認証データ生成処理においては、シフトレジスタ133の特定ビット(bit0)が“1”であるときには、コード番号k+1およびk+2の命令コードをジャンプし(コード番号k)、シフトレジスタ133のデータを8ビットシフト処理し(コード番号k+3)、この8ビットシフトデータをレジスタKEY0およびKEY1の認証用キーデータとXOR処理する(コード番号k+4)。また、シフトレジスタ133の特定ビットが“0”であるときには、コード番号k+1およびk+2の命令コードをジャンプせず(コード番号k)、シフトレジスタ133のデータを3ビットシフト処理し(コード番号k+1)、コード番号k+3の命令コードをジャンプし(コード番号k+2)、上記の3ビットシフトデータをレジスタKEY0およびKEY1の認証用キーデータとXOR処理する(コード番号k+4)。すなわち、図9の認証データ生成処理においては、シフトレジスタ133の特定ビットの値に従って、異なるビット数(3ビットまたは8ビット)のビットシフト処理をしたあと、XOR処理する。
また、図10の認証データ生成用ファイル16bによる認証データ生成処理においては、レジスタRAN0およびRAN1のデータをシフトレジスタ133に転送し(コード番号k)、シフトレジスタ133のデータを退避レジスタ140に退避させ(コード番号k+1)、シフトレジスタ133のデータをレジスタRAN0およびRAN1のデータとXOR処理する(コード番号k+2)。このとき、XOR処理される両データは同じデータなので、XORデータは全ビットが“0”となり、この全ビット“0”のデータがシフトレジスタ133に格納される。次に上記の全ビット“0”のシフトレジスタ133のデータをレジスタKEY0およびKEY1の認証用キーデータとXOR処理する(コード番号k+3)。このとき、XOR処理される一方のデータが全ビット“0”なので、XORデータは、他方のデータであるレジスタKEY0およびKEY1の認証用キーデータと同じになり、KEY0およびKEY1の認証用キーデータがシフトレジスタ133に格納される。次にシフトレジスタ133に格納された上記認証キーデータをビット置換処理し(コード番号k+4)、このビット置換処理された認証キーデータをレジスタRAN0およびRAN1に転送し(コード番号k+5)、退避レジスタ140のデータをシフトレジスタ133に戻し(コード番号k+6)、シフトレジスタ133のデータをレジスタRAN0およびRAN1のXOR処理された認証キーデータとXOR処理する(コード番号k+7)。すなわち、図10の認証データ生成処理においては、この退避レジスタ140と部139iの追加により、KEYレジスタ131の認証用キーデータをビット置換処理し、このビット置換処理された認証用キーデータをXOR処理に用いている。この他に、認証用キーデータにビット反転処理またはビットシフト処理を施すことにより認証用キーデータを加工し、この加工した認証キーデータをXOR処理に用いることもできる。上記の認証用キーデータの加工は、退避レジスタ140および退避−シフト転送処理制御部141iを追加したことにより可能となった。
この実施の形態2のICカード用LSIは、単位処理の間にダミー処理を挿入することができ、認証用データ生成用ファイル16bに各種単位処理および終了処理の実行コードでない命令コード(ダミー処理の実行コードとなる命令コード)を挿入することにより、何もせずに、次の命令コードをロードすることができる。この実施の形態2のICカード用LSIによりICカードごとに認証データ生成アルゴリズムを変える場合に、最長のアルゴリズムの認証用データ生成用ファイル16bの命令コード数に合わせ、他の認証用データ生成用ファイル16bにダミー処理の実行コードを所定数挿入することにより、互いに認証データ生成アルゴリズムが異なり、かつ認証データの生成処理時間が一定のICカードを作成することができ、認証データの生成処理時間が認証データ生成アルゴリズム解読のヒントになることがない。
このように実施の形態2のICカード用LSIによれば、認証データの生成アルゴリズムを製造過程において容易に変更することができ、チップサイズを小さくできるとともに価格を下げることができることに加え、ビット判定ジャンプ処理制御部141gおよびジャンプ処理部141hを設けたことにより分岐ジャンプ処理およびジャンプ処理が可能となり、また退避レジスタ140および退避−シフト転送処理制御部141iを設けたことによりKEYレジスタ131の認証用キーデータを加工して用いることが可能となるので、認証データ生成アルゴリズムの自由度が上記第1の実施形態よりもさらに大きくなり、認証データ生成処理をさらに複雑化することができる。また、ダミー処理制御部141jを設けたことにより、認証データの生成処理時間を調整することができる。
また、実施の形態2のICカード用LSIを用いてICカードを作成することにより、製造コストを下げられることに加え、認証データ生成アルゴリズムが互いに異なり、それぞれの認証データ生成アルゴリズムが上記第1の実施形態よりもさらに複雑であり、かつ認証データの生成処理時間が一定なICカードを作成することができ、また製造過程およびICカード発行後において認証データ生成アルゴリズムを容易に変更することができるので、ICカードシステムのセキュリティをさらに向上させることができる。
なお、上記実施の形態1および2では、認証用キーデータ、乱数データ、認証データを6バイトとし、データ処理およびデータ転送を16ビット単位として説明したが、データサイズおよびデータ処理/データ転送の単位はこれらに限定されるものではない。
また、上記実施の形態1および2では、ビット置換部135のビット置換テーブルおよびビット反転部136のビット反転テーブルをそれぞれ1つとして説明しているが、複数のテーブルを用意し、命令コードの下位4ビットでテーブルを指定するようにしても良い。これにより、認証データ生成処理がさらに複雑になり、よりセキュリティを向上させることができる。
さらに、上記実施の形態1および2では、EEPROM16に認証用キーデータ16aと認証データ生成用ファイル16bとをそれぞれ1つずつ記憶させているが、複数の認証用キーデータ16aまたは/および複数の認証データ生成用ファイル16bを記憶させるようにしても良い。そして例えば、ICカードの正当性を確認するための認証データ生成処理と、上位装置の正当性を確認するための認証データ生成処理とで別々の認証用キーデータおよび認証データ生成用ファイルを用いるようにすれば、ICカードシステムのセキュリティをさらに向上させることができる。
1 ICカード用LSI、 10 インターフェース部、 13a,14a 認証データ生成部、 16 不揮発性メモリ(EEPROM)、 16a 認証用キーデータ、 16b 認証データ生成用ファイル、 131 KEYレジスタ、 132 RANレジスタ、 133 シフトレジスタ、 135 ビット置換部、 136 ビット反転部、 137 XOR部、 138 INSレジスタ、 139 制御ロジック部、 139a RAN−シフト転送処理制御部、 139b ビットシフト処理制御部、 139c ビット置換処理制御部、 139d ビット反転処理制御部、 139e XOR処理制御部、 139f 終了処理制御部、 139x 開始処理制御部、 140 退避レジスタ、 141g ビット判定ジャンプ処理制御部、 141h ジャンプ処理制御部、 141i 退避−シフト転送処理制御部、 141j ダミー処理制御部。