JP4489068B2 - Icカード用lsi - Google Patents

Icカード用lsi Download PDF

Info

Publication number
JP4489068B2
JP4489068B2 JP2006336935A JP2006336935A JP4489068B2 JP 4489068 B2 JP4489068 B2 JP 4489068B2 JP 2006336935 A JP2006336935 A JP 2006336935A JP 2006336935 A JP2006336935 A JP 2006336935A JP 4489068 B2 JP4489068 B2 JP 4489068B2
Authority
JP
Japan
Prior art keywords
data
processing
unit
bit
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006336935A
Other languages
English (en)
Other versions
JP2007087424A (ja
Inventor
芳弘 正名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lapis Semiconductor Co Ltd
Original Assignee
Oki Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Semiconductor Co Ltd filed Critical Oki Semiconductor Co Ltd
Priority to JP2006336935A priority Critical patent/JP4489068B2/ja
Publication of JP2007087424A publication Critical patent/JP2007087424A/ja
Application granted granted Critical
Publication of JP4489068B2 publication Critical patent/JP4489068B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、ICカードまたは上位装置の正当性を証明する認証データを生成する機能を備えたICカード用LSIおよびその使用方法に関するものであり、特に認証データ生成のアルゴリズムをフレキシブルに変更でき、セキュリティを向上できるICカード用LSIに関するものである。
従来、この種のICカード用LSIは、特開平3−224083号公報に開示されているように、CPUからなる制御部と、書き換え可能な不揮発性メモリからなるデータメモリと、マスクROMからなるプログラムメモリとで構成され、認証データ生成処理を含む各種コマンド処理を実行するものであり、データメモリの認証用キーデータをパラメータとして用いるプログラムメモリの固定の認証データ生成プログラムに従って、制御部において乱数データに認証データ生成処理を施すことにより、上位装置との相互認証における認証データを生成するものである。また、CPUではなく論理回路を用いて制御部を構成し、この制御部において固定のアルゴリズムにより認証データを生成するICカード用LSIもある。
特開平3−224083号公報
しかしながら、CPUを備えた上記従来のICカード用LSIには、LSIのサイズが大きく、価格が高くなるという欠点がある。また、固定の論理回路により制御部を構成した上記従来のICカード用LSIには、低コストの反面、高度な暗号処理ができないという欠点がある。従って、第三者に解読されるとシステム全体のセキュリティを脅かす危険性がある。また、上記いずれのICカード用LSIにおいても、認証データ生成処理にマスクROMまたは論理回路が用いられるため、認証データ生成処理のアルゴリズムを変更するには、LSIを作成するフォトマスクを変更しなければならず、変更にコストも時間もかかる。このため、容易に認証データ生成処理のアルゴリズムを変更できないという問題があった。
本発明はこのような従来の問題を解決するためになされたものであり、認証データ生成のアルゴリズムをフレキシブルに変更でき、セキュリティを向上できるICカード用LSIを提供することを目的とするものである。
上記の目的を達成するために本発明のICカード用LSIは、認証データの生成処理を行うCPUを具備しないICカード用LSIであって、乱数データの授受を行うインターフェース回路と、命令コードを含む命令ファイルを保持する記憶部と、前記命令コードに従う単位処理を順次実行することにより、前記乱数データから前記認証データを生成する処理を実行するコマンド処理部とを有し、前記コマンド処理部による前記認証データを生成する処理の時間を一定の時間にするように、前記コマンド処理部によって実行される前記命令コードに、前記単位処理の実行コードである命令コードの他に、ダミー処理の実行コードである命令コードが所定数挿入されていることを特徴とする。
以上説明したように本発明のICカード用LSIによれば、電気的にデータの書き込みが可能な不揮発性記憶手段に認証データ生成ファイルを記憶させ、論理回路により構成された制御ロジック部により認証データ生成ファイルに従って認証データ生成処理を制御することにより、認証データ生成用ファイルの内容を変更するだけで認証データ生成アルゴリズムを容易に変更でき、チップサイズを小さくできるとともに価格を下げることができ、複雑な認証データ生成処理ができるという効果がある。
また、本発明のICカード用LSIを用いてICカードを作成することにより、ICカードの製造コストを下げることができ、ICカードシステムのセキュリティを向上させることができるという効果がある。
実施の形態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の全体ブロック図である。 本発明の実施の形態1のICカード用LSIにおける認証データ生成部のブロック図である。 本発明の実施の形態1の認証データ生成処理における命令コードと処理内容を示す図である。 本発明の実施の形態1の認証データ生成処理の手順を示すフローチャートである。 本発明の実施の形態1における認証データ生成用ファイルのデータ例を示す図である。 本発明の実施の形態2のICカード用LSIにおける認証データ生成部のブロック図である。 本発明の実施の形態2の認証データ生成処理において追加した命令コードと処理内容を示す図である 本発明の実施の形態2の認証データ生成処理の手順を示すフローチャートである。 本発明の実施の形態2における認証データ生成用ファイルのデータ例(1)を示す図である。 本発明の実施の形態2における認証データ生成用ファイルのデータ例(2)を示す図である。
符号の説明
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 ダミー処理制御部。

Claims (5)

  1. 認証データの生成処理を行うCPUを具備しないICカード用LSIにおいて、
    乱数データの授受を行うインターフェース回路と、
    命令コードを含む命令ファイルを保持する記憶部と、
    前記命令コードに従う単位処理を順次実行することにより、前記乱数データから前記認証データを生成する処理を実行するコマンド処理部と
    を有し、
    前記コマンド処理部による前記認証データを生成する処理の時間を一定の時間にするように、前記コマンド処理部によって実行される前記命令コードに、前記単位処理の実行コードである命令コードの他に、ダミー処理の実行コードである命令コードが所定数挿入されている
    ことを特徴とするICカード用LSI。
  2. 請求項1記載のICカード用LSIにおいて、
    前記コマンド処理部は、前記命令コードに従って前記認証データを生成するための処理を制御する制御ロジック部を有することを特徴とするICカード用LSI。
  3. 請求項1又は2に記載のICカード用LSIにおいて、
    前記記憶部は、不揮発性メモリであることを特徴とするICカード用LSI。
  4. 請求項3記載のICカード用LSIにおいて、
    前記不揮発性メモリは、電気的な書き換えが可能な不揮発性メモリであることを特徴とするICカード用LSI。
  5. 請求項3又は4に記載のICカード用LSIにおいて、
    前記不揮発性メモリは、前記乱数データから前記認証データを生成するための処理が行われる際のパラメータとして使用される認証用キーデータを記憶することを特徴とするICカード用LSI。
JP2006336935A 2006-12-14 2006-12-14 Icカード用lsi Expired - Fee Related JP4489068B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006336935A JP4489068B2 (ja) 2006-12-14 2006-12-14 Icカード用lsi

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006336935A JP4489068B2 (ja) 2006-12-14 2006-12-14 Icカード用lsi

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP9358977A Division JPH11191149A (ja) 1997-12-26 1997-12-26 Icカード用lsiおよびその使用方法

Publications (2)

Publication Number Publication Date
JP2007087424A JP2007087424A (ja) 2007-04-05
JP4489068B2 true JP4489068B2 (ja) 2010-06-23

Family

ID=37974287

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006336935A Expired - Fee Related JP4489068B2 (ja) 2006-12-14 2006-12-14 Icカード用lsi

Country Status (1)

Country Link
JP (1) JP4489068B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08503090A (ja) * 1992-11-19 1996-04-02 ジェムプリュス カード アンテルナショナル 同期式スマートカード用の暗号化および認証方法と回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0140176B1 (ko) * 1994-11-30 1998-07-15 김광호 반도체 메모리장치의 동작모드 제어장치 및 방법
JPH08340245A (ja) * 1995-06-13 1996-12-24 Hitachi Ltd 信号出力回路、及び半導体集積回路
JPH09214073A (ja) * 1996-02-05 1997-08-15 Toppan Printing Co Ltd 論理回路試作プリント基板
JPH09212445A (ja) * 1996-02-05 1997-08-15 Toppan Printing Co Ltd カード状インターフェイス機器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08503090A (ja) * 1992-11-19 1996-04-02 ジェムプリュス カード アンテルナショナル 同期式スマートカード用の暗号化および認証方法と回路

Also Published As

Publication number Publication date
JP2007087424A (ja) 2007-04-05

Similar Documents

Publication Publication Date Title
JPH11191149A (ja) Icカード用lsiおよびその使用方法
TWI610188B (zh) 具有共用處理邏輯之數位貨幣採礦電路
US7602920B2 (en) Method for making secure the pre-initialising phase of a silicon chip integrated system, in particular a smart card and integrated system therefor
EP3465663B1 (en) Cryptographic device and memory based puf
CN101149709B (zh) 存储卡的加密处理器和使用其进行数据读写的方法
JP5123524B2 (ja) 保護されたメモリ・アクセスを用いたスマートカード
US10121392B2 (en) Masking and unmasking methods and devices
US10133680B2 (en) Data storage apparatus, coding unit, systems including the same, method of coding and method of reading data
JP2014089640A (ja) 半導体装置及び暗号鍵書き込み方法
US8688983B2 (en) Data transmission method using an acknowledgement code comprising hidden authentication bits
JP6991493B2 (ja) データセキュリティを提供するメモリデバイス
CN113032797B (zh) 在处理设备中执行加密操作的方法
CN113177201A (zh) 程序校验、签名方法及装置、soc芯片
JPWO2003104948A1 (ja) メモリ管理ユニット、コード検証装置およびコード復号装置
US20100146296A1 (en) Apparatus and method for hash cryptography
JP4574994B2 (ja) メモリ外付けマイコン
CN106372540B (zh) 一种芯片安全信息的安全传输方法及电路
US20090043969A1 (en) Semiconductor memory devices that are resistant to power attacks and methods of operating semiconductor memory devices that are resistant to power attacks
TWI743715B (zh) 用來針對非揮發性記憶體進行資訊保護的方法及設備
CN102224508B (zh) 在存储器装置中存储数据的方法及处理该数据的处理装置
JP4153665B2 (ja) 同一の秘密鍵の暗号アルゴリズムを使用して1つまたは複数の電子装置を保護する方法、当該方法の使用および当該電子装置
JP4489068B2 (ja) Icカード用lsi
US9389855B2 (en) Arithmetic device
JP2000235523A (ja) 電子式データ処理用回路装置
TW201918925A (zh) 資料存取裝置及方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20090114

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100330

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100330

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees