JP4021956B2 - Icカード - Google Patents
Icカード Download PDFInfo
- Publication number
- JP4021956B2 JP4021956B2 JP22495096A JP22495096A JP4021956B2 JP 4021956 B2 JP4021956 B2 JP 4021956B2 JP 22495096 A JP22495096 A JP 22495096A JP 22495096 A JP22495096 A JP 22495096A JP 4021956 B2 JP4021956 B2 JP 4021956B2
- Authority
- JP
- Japan
- Prior art keywords
- card
- data
- memory
- value
- stored
- 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 - Lifetime
Links
Images
Landscapes
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
本発明は、外部より与えられたデータ又はその内部に有するデータを暗号化又は復号化することが可能なICカードに関するものである。
【0002】
【従来の技術】
ICカードは、磁気カードに代わる新しい情報記憶媒体として、近年注目を集めている。特に、CPUを内蔵したICカードは、高度なセキュリティを実現できることから、高度情報化社会の種々の分野において利用されることが期待されている。
一般にICカードは、ROM、RAM、EEPROMの3種類のメモリと、それらメモリにアクセスするCPUとを備えている。EEPROMは、書き換え可能な不揮発性メモリであり、ICカードユーザに関する個人情報等のデータが保存される。RAMは、CPUがプログラムを実行するときに作業領域として使用する揮発性のメモリである。ROMは、読み出し専用メモリであり、CPUが実行すべき処理を示すプログラムが格納されている。また、外部との通信のためのI/O端子を備えている。
【0003】
ICカードを使用するときは、ICカードをリーダ・ライタに接続し、リーダ・ライタからコマンドをI/O端子を介してICカードに送信する。コマンドを受信したICカードでは、CPUが、ROMに格納されているプログラムのうち、コマンドに対応する部分を実行する。この結果、コマンドの処理がなされ、EEPROMに新たなデータを書き込むなどの処理が行われる。
【0004】
一般にICカードは、リーダ・ライタとの間でデータを暗号化して送受信する。これは、リーダ・ライタとICカードとの間の通信信号を第三者が不正に取得し、データの内容を盗むことを防止するためにである。データの暗号化の方法としては、例えばRSAがある。
RSAとは、非対称キー(非対称鍵)方式による暗号化方法の一種であり、複数の通信相手に共通に公開する「公開キー」と、その公開キーとは異なるICカード専用の「秘密キー」とを用いてデータを暗号化又は復号化することを特徴とするものである。つまり、RSAによる暗号化では、例えば誰でも知りうる公開キーでデータを暗号化し、唯一カードが持つ秘密キーを用いてそのデータの復号化を行うのである。
【0005】
この点においてRSAは、DES等の対称キー方式の暗号化方法と相違している。対称キー方式の暗号化方法では、ICカードと通信相手とは、互いに共通な暗号キーを予め分かち合わねばならい。このために、不特定多数の相手と暗号通信を行う場合は、多数のキーの受渡し管理が通信相手の数だけ必要となり、管理が大変煩雑となる。これに対してRSAでは、暗号通信の際に必要なキーデータを予め分かち合うのではなく、第三者が公開されている公開キーのみを使用して暗号文の生成又は復号化を行うことが可能となっている。つまり、RSAは、キーの受渡し管理を必要とせず、不特定多数の通信相手が存在する暗号通信に適している。
【0006】
図11は、リーダ・ライタ等の外部機器において、RSAによりデータを暗号化し、得られた暗号文をICカードへ送信する場合を示した概念図である。また、図12は、RSAによる平文の暗号化、又は、暗号文の復号化の処理手順を示す流れ図である。
図11に示すように、外部機器は、ICカードに送信すべきデータの平文Xを暗号キーe、Nを用いて暗号化する。すなわち、図12(a)に示されるように、外部機器には、はじめに平文X及び暗号化キーe、Nが入力される(S1202)。次に、平文Xについて、次式(1)の計算が実行される。
C=X^e mod N ・・・ (1)
ここで、「X^e」はXのe乗を意味する。S1202の処理の結果、暗号文Cが取得され、それが出力される(S1206)。
【0007】
取得された暗号文Cは、ICカードに送信される(図11参照)。ICカードは、受信した暗号文Cを秘密キーdと公開キーNを用いて、式(2)を計算することにより復号化する(図12(b)、S1212、S1214)。
X=C^d mod N ・・・ (2)
上記の計算を実行した結果、ICカードは、平文Xを取得し、これを例えばEEPROMに書き込み保存する。
【0008】
【発明が解決しようとする課題】
しかし、前述した従来のICカードは、RAM、ROM、EEPROM等のメモリ容量が小さく、また、CPUのデータ処理速度も小さい。このような問題に対し、ICカードに高速演算コプロセッサを搭載し、そのデータ処理速度を向上させることも可能ではあるが、この場合にも、ICカードの動作速度は、汎用のコンピュータ等と比較して極めて遅い。
一方、図12のS1204、S1214において行われる式(1)、式(2)の計算は、べき乗剰余の計算を含むために、多大の時間を必要とする。特に、X、C、d、e、Nの各変数は、一般に512ビットから構成されるデータであるので、計算の負担は大きい。式(1)等を計算するためには、通常、図13に示すMongomery法等の計算アルゴリズムを用い、計算の高速化が図られる。しかしながら、計算の高速化には限界があり、ICカード内でのデータの暗号化又は復号化が迅速に行えないという問題があった。
【0009】
そこで、本発明の課題は、データの暗号化、復号化を迅速に実行することが可能なICカードを提供することである。
【0010】
【課題を解決するための手段】
前記課題を解決するために、請求項1に係る発明は、CPUと、前記CPUが実行可能なプログラム及び前記CPUがアクセス可能なデータを保存するメモリとを備え、前記メモリに保存している鍵情報を用いて、外部より取得したデータ又は前記メモリに保存しているデータを暗号化又は復号化するデータ変換プログラムを有し、外部からの命令に従い、前記データを暗号化又は復号化するICカードにおいて、前記データ変換プログラムは、暗号化又は復号化すべき前記データの内容に依存しない処理を行う前処理部、及び、前記データの内容に依存する処理を行う主要処理部とを有し、前記鍵情報を前記メモリに保存する場合には、前記前処理部を実行し、その結果取得された前処理値を前記鍵情報に関連づけて前記メモリに保存し、前記鍵情報を前記メモリに保存する場合に、前記前処理値を保存するか否かを外部からの命令により選択可能であり、前記鍵情報とともに前記前処理値を前記メモリに保存することを命ずる第1の命令と、前記鍵情報のみを前記メモリに保存することを命ずる第2の命令とのいずれか一方を選択して外部より与えることにより、前記前処理値を保存するか否かが選択可能であることを特徴とする。
【0012】
請求項2に係る発明は、請求項1に記載のICカードにおいて、前記外部からの命令が有する引数の内容を変更することにより、前記前処理値を前記メモリに保存するか否かが選択可能であることを特徴とする。
請求項3に係る発明は、請求項1又は請求項2に記載のICカードにおいて、前記前処理値を保存する場合は、前記前処理値を保存した旨の識別情報を前記メモリに保存することを特徴とする。
請求項4に係る発明は、請求項1から請求項3までのいずれか1項に記載のICカードにおいて、前記データの暗号化又は復号化を行う場合は、前記メモリに保存されている前記前処理値を用いて、前記データ変換プログラムの主要処理部を実行することを特徴とする。
【0013】
請求項5に係る発明は、請求項4に記載のICカードにおいて、前記データ変換プログラムを実行する場合は、使用する前記鍵情報に関連づけられた前記前処理値が前記メモリに保存されているか否かを予め確認することを特徴とする。
請求項6に係る発明は、請求項5に記載のICカードにおいて、使用する前記鍵情報に関連づけられた前記前処理値が前記メモリに保存されていることが確認されなかった場合には、前記データ変換プログラムの前処理部及び主要処理部の双方を実行することにより、前記データの暗号化又は復号化を行うことを特徴とする。
【0014】
【発明の実施の形態】
以下、図面等を参照して、本発明に係る実施形態について説明する。
(第1実施形態)
本発明に係る第1実施形態は、非対称キー方式の暗号化方法であるRSAに基づき、平文のデータを暗号化、又は、暗号化されたデータを復号化することが可能なICカードである。RSAの実行は、図13に示したMongomery法による計算アルゴリズム(以下「RSA計算アルゴリズム」という)を用いて行われる。
【0015】
本実施形態は、図13に示すRSA計算アルゴリズムが、暗号化すべき平文X(又は復号化すべき暗号文C)に依存せずにその計算を実行できる第2行目(以下「前処理部」という)と、平文Xに依存した計算である、第3行目以降の部分(以下「主要処理部」という)とからなる点に着目し、ICカード内の暗号化又は復号化処理の速度向上を図るものである。すなわち、本実施形態では、前処理部を予め1回だけ計算し、その結果得られた値(以下「前処理値」という)をEEPROMに保存する。そして、その後、実際に暗号文の復号化等を行う場合には、EEPROMに保存されている前処理値を利用し、主要処理部の計算のみを行う。これにより、本実施形態では、暗号化/復号化処理のたびに前処理部の計算を繰り返すという無駄を排除し、迅速な処理を実現する。
【0016】
図1は、本発明の第1実施形態であるICカードの構成を示す図である。図1に示されるように、ICカード10は、読み出し専用メモリであるROM12、揮発性メモリであるRAM14、随時書き換え可能な不揮発性メモリであるEEPROM16、及びこれらのメモリにアクセスするCPU18を備えている。また、ICカード10は、リーダ・ライタ22と通信を行うためのI/Oインターフェイス20を備えている。
【0017】
ICカード10内の各メモリ(12、14、16)へのアクセスは、すべてCPU18を介して行われ、外部からこれらメモリを直接アクセスすることはできない。すなわち、リーダ・ライタ22からCPU18に対して所定の「コマンド」を与えると、CPU18はこの「コマンド」を解釈実行し、その結果を、リーダ・ライタ22に対して「レスポンス」として返送する。なお、「コマンド」とは、リーダ・ライタからICカードへ送られる情報であって、ICカードに所定の動作させるためのものをいう。
【0018】
例えば、EEPROM16内の所定のファイルに書き込みを行う場合には、「書込コマンド」とともに、書込対象となるデータをCPU18に与え、CPU18による「書込コマンド」の実行という形式で書込処理が行われることになる。逆に、EEPROM16内の所定のファイルからデータの読み出しを行う場合には、所定の「読出コマンド」をCPU18に与え、CPU18による「読出コマンド」の実行という形式によって読出処理が行われることになる。このように、ICカード10内において「コマンド」の実行が終了すると、実行した「コマンド」に対する「レスポンス」が外部に対して返送される。例えば、「書込コマンド」を与えた場合には、書込処理が支障なく実行されたか否かを示す「レスポンス」が返送され、「読出コマンド」を与えた場合には、読出対象となったデータがレスポンスという形で返送されることになる。ただし、EEPROM16へのアクセスは、無条件で行われるわけではなく、所定のアクセス条件が満足されることが前提となる。このアクセス条件は、例えば個々のファイルごとに設定される。
【0019】
図2は、図1に示すEEPROM16内の階層構造を示すブロック図である。本実施形態のEEPROMは、4つの階層から構成される。すなわち、第1層のMF( Master File) 、第2層のDF( Dedicated File) 、第3層のEF( Elementary File) 及び第4層である不図示のレコード構造である。
MFは、データメモリ全体のファイルである。MFは、各アプリケーション(サービス)に共通したデータを格納するためのファイルであり、例えば、このICカード10の所有者の氏名、住所、電話番号などの情報が記録される。
DFは、専用ファイルであり、一般的にはアプリケーションごとにDFの設定がなされる。
EFは、基礎ファイルであり、キー・データを格納するIEFと、アプリケーションが使用するデータを格納するWEFの2種類がある。
レコード構造は、アクセスの最小単位である。
【0020】
MF及び各DFは、それぞれ別個独立に1又は2以上のIEF及びWEFを有している。前述したように、WEFには、ICカード10に記録すべき本来のデータが記録されるのに対して、IEFには、各領域をアクセスするために必要なキーが格納される。例えば、DF1内に設けられたIEFには、DF1内のWEFに対するアクセスを行うときに照合されるキーが記録されている。
【0021】
上述した各ファイルは、ディレクトリ・ファイルにより管理される。
図3は、一例としてWEFを管理するディレクトリ・ファイルの構造を示す図である。WEFのディレクトリ・ファイル60には、先頭アドレス62、全容量63等を格納する領域のほか、アクセス条件を格納するアクセス条件情報領域65が設けられている。ここで、アクセス条件とは、当該WEFにアクセスする際に満たされていなければならない条件であり、照合済み状態でなければならないキーの種類を規定するものである。
【0022】
図4は、アクセス条件情報領域65に格納されているアクセス条件を例示する図である。アクセス条件は、ファイルへのアクセスの態様ごとに、すなわち、データの「読み出し」、「書き込み」又は「更新」のそれぞれについて定められている。各アクセス条件は、8つのキーより構成されている。各キーにおいて、「1」は、当該ファイルにアクセスするためには、そのキーが照合済み状態でなければいけないことを意味する。また、「0」は照合が不要であることを示す。図4の例では、データの「読み出し」については、少なくともK1が照合済み状態であること、「書き込み」については、少なくともK1及びK4が照合済み状態であること、また、「更新」については、少なくともK1及びK5が照合済み状態であることが条件として定められている。
【0023】
図5は、本実施形態で使用するコマンドのうち、SELECTコマンド、WRITE_N&CONSTコマンド(以下「WRITE」コマンドと略す)及びRSA_CALCULATEコマンド(以下「CALCULATEコマンド」と略す)のフォーマットを示す図である。
SELECTコマンドは、カレントDF下のEFを選択するためのコマンドである。SELECTコマンドは、各々1バイトからなる5つの情報(CLA〜LC)と、それに続くデータから構成される。最初の5バイトは、それぞれコマンドのクラスを示すCLA、種別を示すINS、コマンドのパラメータP1、P2、及び後に続くDATAの長さ(バイト数)を示すLCである。DATAは、ファイル名等、選択すべきEFに関する情報である。
【0024】
WRITEコマンドは、SELECTコマンドで選択されたIEFに、RSA暗号キーの除数部Nを新規に書き込むとともに、RSA計算アルゴリズムの前処理部を実行し、その結果得られた前処理値をIEFに書き込むためのコマンドである。WRITEコマンドの最初の5バイトは、SELECTコマンドと同じCLA等である。また、その後に続くDATAは、公開キーの除数部Nである。
【0025】
CALCULATEコマンドは、ICカード10に、外部機器22より受け取った暗号化(複合化)されているデータを復号化(暗号化)させるためのコマンドである。CALCULATEコマンドの最初の5バイトは、SELECTコマンドと同じCLA等である。第6バイト目以降のDATAは、暗合化されるべき平文X、又は復号化されるべき暗号文Cである。また、DATAの後に続く1バイトのデータであるLEは、レスポンスの期待値である。本実施形態では、暗号化又は復号化されたデータを最大256バイトを限度として全てレスポンスとして返信するよう、LEの値を設定している。
【0026】
図6は、リーダ・ライタ22よりICカード10に、EFを選択するためのSELECTコマンドを送信した場合におけるICカードの動作を示す流れ図である。
ICカード10は、SELECTコマンドを受信すると、まず、カレントDF以降に作成されたEFを順次検索し、SELECTコマンドのDATAにより指定されたEFが存在するか否かのチェックを行う(S602)。該当するEFが存在しなかった場合(S602:NO)には、エラーステータスをリーダ・ライタ22に送信し(S608)、処理を終了する。一方、S602において該当するEFが存在していた場合には、そのファイルのディレクトリ・アドレスをRAM14の所定領域に格納する(S604)。最後に、リーダ・ライタ22にコマンド処理が正常に終了した旨のレスポンスを送信し、ICカード10はSELECTコマンドの処理を終了する。
【0027】
図7は、リーダ・ライタ22よりICカード10にWRITEコマンドが送信された場合におけるICカードの動作を示す流れ図である。
ICカード10がWRITEコマンドを受信すると、CPU18は、はじめに図6のS604においてRAM14の所定領域に格納された情報、すなわち、選択されたIEFのディレクトリ・アドレスを読み取る(S702)。次にCPU18は、ディレクトリより、IEF内で書き込みが可能である領域のアドレスを示すポインタを取得する(S704)。ポインタを取得したCPU18は、それが示すアドレスから始まるレコードに、コマンドで指定した値「01」を有するタグを付けるとともに、公開キーの除数部Nを書き込む(S706)。
【0028】
次にCPU18は、RSA計算アルゴリズムの前処理部、すなわち「R^2
mod N」の計算を実行し、前処理値を取得する(S708)。S708での計算を終了すると、CPU18は、公開キーの除数部Nを書き込んだレコードの次のレコードに、自動的に値「02」を有するタグを付し、さらにS708で得られた前処理値を書き込む(S710)。
最後にCPU18は、コマンドの処理が正常に終了したことを示すレスポンスをリーダ・ライタ22に送信し(S712)、コマンドの実行を終了する。
【0029】
図8は、リーダ・ライタ22よりICカード10にCALCULATEコマンドを送信した場合におけるICカードの動作を示す流れ図である。
ICカード10がCALCULATEコマンドを受信すると、CPU18は、あらかじめSELECTコマンドの実行により選択されているIEFのディレクトリを参照し、IEFの先頭のアドレスを取得する(S802)。次にCPU18は、取得したアドレスより後の各レコードのタグを参照することにより、レコードの検索を行う(S804、S808、S814、S822)。
【0030】
具体的には、まず値「01」を有するタグを検索する(S804)。その結果タグ「01」を発見できなかった場合には、エラーステータスをレスポンスとしてリーダ・ライタ22に送信し(S830)、コマンド処理を終了する。また、タグ「01」を発見した場合には、そのレコードの内容を読み出すことにより公開キーの除数部Nを取得する(S806)。
次に、値「02」を有するタグの検索が行われる(S808)。その結果、タグ「02」が発見された場合には、IEFにRSA計算アルゴリズムで使用する前処理値が保存されていることが意味される。そこで、CPU18は、RSA計算アルゴリズムを実行するときには、前処理部の計算は不要である旨を意味するフラグFLGをONに設定する(S810)。一方、タグ「02」が発見されなかった場合には、前処理値はIEFに保存されていないことが意味されるので、FLGはOFFに設定される(S812)。
【0031】
次に、値「03」を有するタグの検索が行われる(S814)。タグ「03」は、公開キーの指数部eが格納されているレコードに付されるタグである。検索の結果、タグ「03」が発見された場合には、CALCULATEコマンドのDATAにある平文Xの暗号化処理が行われる。具体的には、CPU18は、タグ「03」が付されたレコードより公開キーの指数部eを取得する(S816)。次にCPU18は、キーの指数部e、キーの除数部N、平文X、及びフラグFLGがそれぞれ格納されているメモリ領域の開始アドレスを指定してRSA暗号モジュールをコールする(S818)。RSA暗号モジュールとは、RSA計算アルゴリズムを実行するためのサブルーチンである。
RSA暗号モジュールの実行が終了すると、CPU18は、その結果を含むレスポンス情報をリーダ・ライタ22に送信し(S820)、CALCULATEコマンドの処理を終了する。
【0032】
一方、S814において、タグ「03」が発見されなかった場合には、次にタグ「04」の検索を行う(S822)。タグ「04」が付けられているレコードは、秘密キーの指数部dが格納されているレコードである。検索の結果、タグ「04」が発見された場合には、CALCULATEコマンドのDATAにある暗号文Cの復号化処理が実行される。具体的には、まず値「02」を有するタグの検索が行われる(S823)。その結果、タグ「02」が発見された場合には、CPU18は、RSA計算アルゴリズムを実行するときには、前処理部の計算は不要である旨を意味するフラグFLGをONに設定する(S824)。一方、タグ「02」が発見されなかった場合には、FLGはOFFに設定される(S825)。
【0033】
次にCPU18は、タグ「04」が付されたレコードより秘密キーの指数部dを取得する(S826)。さらにCPU18は、キーの指数部d、キーの除数部N、暗号文C、及びFLGのそれぞれが格納されているメモリ領域の開始アドレスを指定してRSA暗号モジュールをコールする(S828)。RSA暗号モジュールの実行が終了すると、CPU18は、その結果を含むレスポンス情報をリーダ・ライタ22に送信し(S829)、CALCULATEコマンドの処理を終了する。
一方、S822においてタグ「04」が発見されなかった場合には、CPU18は、エラーステータスを送信し(S832)、コマンドの処理を終了する。
【0034】
次に、図8のS818及びS828において、RSAモジュールが行う処理について説明する。図9は、RSAモジュールの処理内容を示す流れ図である。
前述のように、RSAモジュールは、RSA計算アルゴリズムを実行し、平文Xの暗号化、又は暗号文Cの復号化を行うサブルーチンである。RSAモジュールでは、まずFLGがONに設定されているか否かが確認される(S902)。FLGがONに設定されている場合には、選択されているIEFに前処理値が保存されていることが意味されるので、CPU18は、IEFにおいてタグ「02」が付されているレコードを検索し、そのレコードに格納されている前処理値を読み出す(S910)。
【0035】
一方、S902においてFLGがOFFに設定されている場合には、選択されたIEFに前処理値が保存されていないことが意味される。そこで、CPU18は、RSA計算アルゴリズムの前処理部を実行し、前処理値を取得する(S904)。S904又はS910の処理が終了すると、CPU18は、RSA計算アルゴリズムの主要処理部を実施し、平文Xの暗号化、又は暗号文Cの復号化を行う(S906)。S906の計算を終了すると、その計算結果は返値として図8のS818又はS828に返され(S908)、RSAモジュールの処理は終了する。
【0036】
以上説明したように、本実施形態では、RSA計算アルゴリズムを前処理部と主要処理部に分けて取り扱い、ICカード10に公開キーの除数部Nを保存する場合には、そのキーNを用いて前処理部の計算を実行し、その結果取得された前処理値をキーNが保存されるIEFと同一のIEFに保存する。前述のように、前処理部の計算内容は、暗号化されるべき平文X、又は復号化されるべき暗号文Cに依存しないものであり、暗号化/復号化のたびに同一の計算を行い同一の計算結果(前処理値)を取得するものである。そこで、本実施形態は、一度取得した前処理値を不揮発性メモリであるEEPROMに格納することにより、その前処理値をその後も有効利用できるようにしたものである。また、本実施形態では、前処理値がキーNと同じIEFに格納されるので、異なるIEFを複数用意すれば、複数の公開キーをそれぞれの前処理値とともにEEPROM16に保存することが可能となっている。
【0037】
また、本実施形態では、前処理値をIEFのレコードに書き込むときに、そのレコードに値「02」を有するタグを付することとしている。このタグ「02」は、前処理値をIEFに保存しているか否かの識別情報として機能するものである。つまり、IEFに前処理値が保存されているか否かを判断する必要がある場合には、IEFにタグ「02」が存在するか否かを検索すれば足りる。つまり、本実施形態では、前処理値の存在の有無を確認するためにIEFの全情報を参照する必要がなく、迅速な判断を行うことが可能である。
【0038】
また、本実施形態では、ICカード10の内部でデータの復号化を行う場合には、IEFに保存されている前処理値を用いて、RSA計算アルゴリズムの主要処理部を実行することにより行う。つまり、本実施形態では、毎回の暗号化/復号化の処理においてRSA計算アルゴリズムの前処理部を実行する必要を回避し、もって暗号化/復号化処理の要する時間を短縮している。特に本実施形態では、RSA計算アルゴリズムの前処理部がべき乗剰余の計算を含むために、前処理部の計算を回避することにより暗号化/復号化処理の著しい効率化が図れる。
【0039】
また、本実施形態では、データの暗号化/復号化処理を実行する場合は、使用する公開キーNに関連づけられた前処理値がIEFに保存されているか否かを予め確認する。これにより、不慮の事態その他の事情により、IEFに前処理値が保存されていない場合であっても、IEF内の不適切な情報が前処理値の代わりに参照され、暗号化/復号化処理が実施されることが防止される。
さらに、本実施形態では、使用する公開キーNに関連づけられた前処理値がIEFに保存されていることが確認されなかった場合には、RSA計算アルゴリズムの前処理部及び主要処理部の双方を実行することにより、データの暗号化/復号化処理を実行する。つまり、本実施形態では、IEFに前処理値が保存されている否かを問わず、確実にデータの暗号化/復号化処理が行われる。
【0040】
(第2実施形態)
次に本発明の第2実施形態について説明する。本実施形態のICカードは、WRITEコマンドと類似の機能を有するWRITE_RSAKEYコマンドを処理する機能を有する点において第1実施形態のICカードと異なる。
図14は、WRITE_RSAKEYコマンドのフォーマットを示す図である。図に示されるように、WRITE_RSAKEYのフォーマットは、第1実施形態のWRITEコマンドと同様であり、CLA、INS等の実際の内容が異なるのみである。
図10は、WRITE_RSAKEYコマンドを受信した場合のICカード10が行う処理内容を示す流れ図である。図10において、S1002からS1006までは、図7のS702からS706までの処理と同一であり、S1008はS712の処理と同一である。すなわち、WRITE_RSAKEYコマンドは、公開キーの除数部Nのみを選択されたIEFに書き込むコマンドであり、RSA計算アルゴリズムの前処理値をIEFに保存しない点においてWRITEコマンドと相違する。
【0041】
本実施形態では、上記2つのコマンドを適切に選択して使用することにより、公開キーNをIEFに保存する際に、RSA計算アルゴリズムの前処理値をも保存するか否かを選択することが可能である。2つのコマンドは、例えばICカードを発行する段階において、カード発行機の能力に応じて使い分ける。
例えば、ICカードの生産工場において、カード発行専用機によりICカードを発行する場合には、WRITE_RSAKEYコマンドを用いて、公開キーNをICカードのEEPROMに保存する。カード発行専用機は、一般に演算処理能力がICカードより高く、また、発行するカードの枚数が膨大であることから、計算負荷の高いRSAの前処理部の計算をカード発行専用機において高速に行い、前処理値を公開キーとは別個にEEPROMに書き込むためである。これにより、前処理の計算をICカードに行わせるよりもカード1枚あたりの発行時間を短縮でき、短時間に大量のICカードを発行することが可能となる。
【0042】
一方、小売店等において、パーソナルコンピュータ等を用いて顧客にICカードを発行する場合には、WRITEコマンドを用いて公開キーNをICカードのEEPROMに書き込む。小売店等におけるカード発行数は比較的少数であるため、カード発行時間の短縮に対する要請が少なく、また、パーソナルコンピュータ等の演算処理能力は前述のカード発行専用機ほどには高くないことから、RSAの前処理部をICカードの外部で処理する利点が少ないからである。したがって、このような場合には、ICカードの機能を有効利用すべく、WRITEコマンドを用いて前処理値をICカードに求めさせるのである。
【0043】
また、多数の公開キーNをEEPROMに保存する必要がある場合は、WRITE_RSAKEYコマンドを用いて公開キーNのみを保存する。EEPROM16のメモリ容量が比較的小さいことから、多数の前処理値を保存することによるメモリ資源の消費を回避するためである。この場合には、前処理値は、復号化処理等を行う際にその都度計算して求める。つまり、本実施形態では、EEPROMのメモリ容量と、それに保存する暗号キーの数との関係に応じて、暗号キーとともに前処理値をも保存するか否かを適切に選択し、ICカードの限られたメモリ資源を有効に活用することが可能となっている。
【0044】
(その他の実施形態)
なお、本発明は、上記実施形態に限定されるものではない。上記実施形態は、例示であり、本発明の特許請求の範囲に記載された技術的思想と実質的に同一な構成を有し、同様な作用効果を奏するものは、いかなるものであっても本発明の技術的範囲に包含される。
【0045】
1)第1実施形態においては、非対称鍵方式の暗号化方法を利用するICカードを例に説明をしたが、これは、本発明の適用範囲を限定する意味のものではない。本発明の技術的思想は、DES等の対称鍵方式の暗号化方法を利用するICカードにも適用可能である。
2)第2実施形態においては、2種類の別個独立のコマンドを用意し、いずれか一方を選択してICカードに付与することにより、公開キーNをEEPROMに書き込む際に、前処理値をも書き込むか否かを選択できることとしているが、これは、1のコマンドを使用し、そのコマンドの有するパラメータの値を変更することにより、前処理値をも書き込むか否かを選択可能とすることであってもよい。このように、2つのコマンドの機能を1のコマンドに集約した場合には、ICカードのROM等に格納すべきプログラムをより簡潔なものとし、ICカードの有限なメモリ資源を有効に活用することができるという効果が得られる。
【0046】
【発明の効果】
以上詳しく説明したように、本発明によれば、以下のような効果がある。
(1)鍵情報をメモリに保存する場合には、前処理部を実行し、その結果取得された前処理値を鍵情報に関連づけてメモリに保存するので、一度取得した前処理値をその後も有効に活用することが可能である。
(2)鍵情報を前記メモリに保存する場合に、前処理値を保存するか否かを外部からの命令により選択可能であるので、ICカードの発行の効率化、及びメモリ資源の有効活用を図ることが可能である。
【0047】
(3)前処理値を保存する場合は、前処理値を保存した旨の識別情報を前記メモリに保存するので、前処理値の存在の有無を容易かつ迅速に確認することが可能となった。
(4)データの暗号化又は復号化を行う場合は、メモリに保存されている前処理値を用いて、データ変換プログラムの主要処理部を実行することとしたので、暗号化/復号化の処理を迅速に行うことが可能となっている。
(5)データ変換プログラムを実行する場合は、使用する鍵情報に関連づけられた前処理値がメモリに保存されているか否かを予め確認することとしたので、前処理値が保存されていない場合であっても、誤った処理が実行されることはない。
【0048】
(6)使用する鍵情報に関連づけられた前処理値がメモリに保存されていることが確認されなかった場合には、データ変換プログラムの前処理部及び主要処理部の双方を実行することにより、データの暗号化又は復号化を行うこととしたので、前処理値が保存されるか、いないかに関わらず必ず暗号化/復号化の処理を実行することが可能である。
【図面の簡単な説明】
【図1】本発明の第1実施形態であるICカードの構成を示す図である。
【図2】図1に示すEEPROM16内の階層構造を示すブロック図である。
【図3】WEFを管理するディレクトリ・ファイルの構造を示す図である。
【図4】EFへのアクセス条件を例示する図である。
【図5】本発明の第1実施形態において使用されるコマンドのフォーマットを示す図である。
【図6】SELECTコマンドを実行するICカードの動作を示す流れ図である。
【図7】RSA_WRITEコマンドを実行するときのICカードの動作を示す流れ図である。
【図8】RSA_CALCULATEコマンドを実行するICカードの動作を示す流れ図である。
【図9】RSAモジュールの処理内容を示す流れ図である。
【図10】WRITE_RSAKEYコマンドを処理する場合のICカード10の動作を示す流れ図である。
【図11】外部機器でRSAによりデータを暗号化し、得られた暗号文をICカードへ送信する場合を示した概念図である。
【図12】RSAによる平文の暗号化、又は、暗号分の復号化の処理手順を示す流れ図である。
【図13】Mongomery法の計算アルゴリズムを示す図である
【図14】WRITE_RSAKEYコマンドのフォーマットを示す図である。
【符号の説明】
10 ICカード
12 ROM
14 RAM
16 EEPROM
18 CPU
Claims (6)
- CPUと、
前記CPUが実行可能なプログラム及び前記CPUがアクセス可能なデータを保存するメモリとを備え、
前記メモリに保存している鍵情報を用いて、外部より取得したデータ又は前記メモリに保存しているデータを暗号化又は復号化するデータ変換プログラムを有し、外部からの命令に従い、前記データを暗号化又は復号化するICカードにおいて、
前記データ変換プログラムは、暗号化又は復号化すべき前記データの内容に依存しない処理を行う前処理部、及び、前記データの内容に依存する処理を行う主要処理部とを有し、
前記鍵情報を前記メモリに保存する場合には、
前記前処理部を実行し、その結果取得された前処理値を前記鍵情報に関連づけて前記メモリに保存し、
前記鍵情報を前記メモリに保存する場合に、
前記前処理値を保存するか否かを外部からの命令により選択可能であり、
前記鍵情報とともに前記前処理値を前記メモリに保存することを命ずる第1の命令と、前記鍵情報のみを前記メモリに保存することを命ずる第2の命令とのいずれか一方を選択して外部より与えることにより、前記前処理値を保存するか否かが選択可能である
ことを特徴とするICカード。 - 請求項1に記載のICカードにおいて、
前記外部からの命令が有する引数の内容を変更することにより、前記前処理値を前記メモリに保存するか否かが選択可能である
ことを特徴とするICカード。 - 請求項1又は請求項2に記載のICカードにおいて、
前記前処理値を保存する場合は、前記前処理値を保存した旨の識別情報を前記メモリに保存する
ことを特徴とするICカード。 - 請求項1から請求項3までのいずれか1項に記載のICカードにおいて、
前記データの暗号化又は復号化を行う場合は、
前記メモリに保存されている前記前処理値を用いて、前記データ変換プログラムの主要処理部を実行する
ことを特徴とするICカード。 - 請求項4に記載のICカードにおいて、
前記データ変換プログラムを実行する場合は、使用する前記鍵情報に関連づけられた前記前処理値が前記メモリに保存されているか否かを予め確認する
ことを特徴とするICカード。 - 請求項5に記載のICカードにおいて、
使用する前記鍵情報に関連づけられた前記前処理値が前記メモリに保存されていることが確認されなかった場合には、前記データ変換プログラムの前処理部及び主要処理部の双方を実行することにより、前記データの暗号化又は復号化を行う
ことを特徴とするICカード。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22495096A JP4021956B2 (ja) | 1996-08-27 | 1996-08-27 | Icカード |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22495096A JP4021956B2 (ja) | 1996-08-27 | 1996-08-27 | Icカード |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1063580A JPH1063580A (ja) | 1998-03-06 |
JP4021956B2 true JP4021956B2 (ja) | 2007-12-12 |
Family
ID=16821739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22495096A Expired - Lifetime JP4021956B2 (ja) | 1996-08-27 | 1996-08-27 | Icカード |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4021956B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG154320A1 (en) * | 2001-02-16 | 2009-08-28 | Sony Corp | Data processing method and its apparatus |
JP4670158B2 (ja) * | 2001-02-16 | 2011-04-13 | ソニー株式会社 | データ処理方法および半導体回路 |
CA2464361C (en) * | 2001-10-25 | 2010-09-14 | Research In Motion Limited | Multiple-stage system and method for processing encoded messages |
JP5101378B2 (ja) * | 2008-04-16 | 2012-12-19 | ソニー株式会社 | リーダライタ、通信処理装置、通信処理方法、データ管理システム及び通信システム |
JP5235764B2 (ja) * | 2009-04-16 | 2013-07-10 | 株式会社日立製作所 | Icチップおよびこれを搭載した情報処理装置 |
-
1996
- 1996-08-27 JP JP22495096A patent/JP4021956B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH1063580A (ja) | 1998-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR970006646B1 (ko) | 휴대가능전자장치 | |
EP1733305A1 (en) | Semiconductor memory | |
WO2009013700A2 (en) | Method, system and trusted service manager for securely transmitting an application to a mobile phone | |
EP2228775A2 (en) | Information storage medium, authentication data generation method, and medium authentication system | |
KR100659633B1 (ko) | 암호키 변환 기능을 갖는 ic 카드, ic 카드 시스템 및결제 단말기 | |
CN100541528C (zh) | 数据删改防止方法及数据删改防止*** | |
JPH1091738A (ja) | チップ・カードの事後初期設定方法 | |
JP2006222787A (ja) | 無線通信システム,リーダ/ライタ装置,鍵管理方法,およびコンピュータプログラム | |
US7664953B2 (en) | Data processing device, method of same, and program of same | |
JP4828809B2 (ja) | Icカードおよびicカードにおける処理方法 | |
CN111191252A (zh) | 一种智能卡操作***加解密方法、装置及存储介质 | |
JP4021956B2 (ja) | Icカード | |
US6971025B1 (en) | Secure personalization of chip cards | |
JP2002304602A (ja) | カード情報更新システム | |
JP4723187B2 (ja) | メモリ内の符号化データの更新管理 | |
JPH1079000A (ja) | プログラム書き込み可能なicカード | |
JP2002111660A (ja) | 暗号通信方法及び暗号通信装置 | |
US7543153B2 (en) | Digital signature generating apparatus, method, computer program and computer-readable storage medium | |
JPH09265254A (ja) | 情報記憶媒体の相互認証システム | |
US20070260657A1 (en) | Information processing apparatus, information processing method, and program | |
JPH09179949A (ja) | 携帯可能情報記録媒体とそのリーダライタ装置 | |
JP2003091240A (ja) | 暗号化された情報の管理方法 | |
JP7487837B1 (ja) | 電子情報記憶媒体、icチップ、icカード、鍵データ格納方法、及びプログラム | |
JP7136237B2 (ja) | 情報処理装置及びプログラム | |
JP3317979B2 (ja) | Icカード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060913 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061003 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20061124 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061201 |
|
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: 20070925 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070928 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131005 Year of fee payment: 6 |
|
EXPY | Cancellation because of completion of term |