JP4080079B2 - Icカード - Google Patents
Icカード Download PDFInfo
- Publication number
- JP4080079B2 JP4080079B2 JP34780398A JP34780398A JP4080079B2 JP 4080079 B2 JP4080079 B2 JP 4080079B2 JP 34780398 A JP34780398 A JP 34780398A JP 34780398 A JP34780398 A JP 34780398A JP 4080079 B2 JP4080079 B2 JP 4080079B2
- Authority
- JP
- Japan
- Prior art keywords
- application program
- card
- decryption
- procedure
- program
- 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
Links
Images
Landscapes
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明はICカードに関し、特に、CPUとメモリとを有し、メモリ内に格納されたアプリケーションプログラムをCPUによって実行させることにより、種々の処理を行うICカードに関する。
【0002】
【従来の技術】
キャッシュカードやクレジットカードとして利用されてきた磁気カードに代わって、光カードやICカードが普及し始めている。特に、CPUを内蔵したICカードは、高度なセキュリティを確保することができるため、高額な商取引にも利用することができる利点を有する。
【0003】
現在、一般に利用されているCPUを有するICカードには、メモリとして、ROM,EEPROM,RAMが内蔵されている。通常、ROMには、CPUに実行させるべき基本的なプログラムが格納され、EEPROMには、ユーザデータや種々のアプリケーションプログラムが格納され、RAMはCPUの作業領域として利用される。EEPROMは書換可能なメモリであるため、ここにユーザごとに必要なデータやアプリケーションプログラムを格納することができる。
【0004】
ICカードにデータやプログラムを書き込んだり、これらを読み出したりする際には、いわゆるリーダライタ装置と呼ばれる外部装置が用いられる。この外部装置とICカードとの間では、物理的な伝送線を介してまたは非接触な伝送路を介して、相互にデータやプログラムの伝送が行われる。通常、外部装置からICカードへの情報伝送は、コマンドという形式で与えられ、種々の指示やデータは、このコマンドの中の一情報としてICカード側へと伝えられる。これに対して、ICカードから外部装置への情報伝送は、レスポンスという形式で与えられ、処理結果やデータは、このレスポンスの中の一情報として外部装置側へと伝えられる。
【0005】
【発明が解決しようとする課題】
上述したように、ICカードを一般の商取引に利用する場合、セキュリティの確保が重大な課題となる。CPU内蔵型の一般的なICカードでは、外部装置からICカード内のメモリをアクセスする際に、必ず内蔵CPUを介してアクセスするような構成を採ることにより、データアクセスに関するセキュリティをかなり高めることができる。そこで、通常は、外部装置からICカードにアクセスする際に、種々の暗証コードなどの照合を条件とするような設定がなされ、照合に失敗すると、内蔵CPUによってアクセスは拒絶される。また、外部装置とICカードとの間で情報伝送をする際に、信号伝送路上でのセキュリティを確保するために、伝送情報を暗号化するなどの手段も講じられている。
【0006】
しかしながら、これらのセキュリティ対策は、外部からICカードに対してソフトウエア的にアクセスする際のセキュリティを確保する対策であり、ICカード自身のハードウエア的なセキュリティに関する対策ではない。これまで、ICカード自身は、ハードウエア的には十分なセキュリティが確保されている、との考え方が一般的であった。これは、ICカード内の情報を、ハードウエア的に外部に読み出すことはほとんど不可能である、という見地に立った考え方である。ところが、ICカードが高額な商取引に利用されるようになると、ハードウエア的なセキュリティに関しても万全を期する必要がある。たとえば、ICカードを物理的に分解し、内蔵メモリを機械的に切断し、その切断面を解析すれば、メモリ内のビットパターンを認識することは不可能ではない。したがって、高額な商取引に利用されるICカードの場合、従来のセキュリティ対策だけでは必ずしも万全とは言えない。
【0007】
そこで本発明は、より万全なセキュリティを確保することが可能なICカードを提供することを目的とする。
【0008】
【課題を解決するための手段】
(1) 本発明の第1の態様は、CPUとメモリとを有し、メモリ内に格納されたアプリケーションプログラムをCPUによって実行させることにより、種々の処理を行うICカードにおいて、
所定の暗号化手順に基づいて暗号化されたアプリケーションプログラムを格納するための暗号化プログラム格納部と、
この暗号化手順に対応した復号化手順を格納するための復号化手順格納部と、
この復号化手順によって復号化されたアプリケーションプログラムを格納するための復号化プログラム格納部と、
をメモリ上に設け、
外部装置からアプリケーションプログラムに関する実行指示が与えられるまでは、アプリケーションプログラムを暗号化した状態で暗号化プログラム格納部に格納しておき、
実行指示が与えられた場合は、格納されている復号化手順に基づいて復号化を行い、復号化されたアプリケーションプログラムを復号化プログラム格納部に格納し、この復号化されたアプリケーションプログラムを実行した後、この復号化されたアプリケーションプログラムを復号化プログラム格納部から消去する処理を行うようにしたものである。
【0009】
(2) 本発明の第2の態様は、上述の第1の態様に係るICカードにおいて、
アプリケーションプログラムを、その一部分のみを暗号化した状態で、暗号化プログラム格納部に格納しておくようにしたものである。
【0010】
(3) 本発明の第3の態様は、上述の第1の態様に係るICカードにおいて、
アプリケーションプログラムを複数のブロックに分割し、それぞれ異なる複数の暗号化手順に基づいて個々のブロックを暗号化し、暗号化した各ブロックを暗号化プログラム格納部に格納しておくようにし、
複数の暗号化手順のそれぞれに対応した復号化手順を復号化手順格納部に格納しておき、
アプリケーションプログラムの復号化を行う際には、各ブロックごとにそれぞれ対応した復号化手順を用いた復号化を行うようにしたものである。
【0011】
(4) 本発明の第4の態様は、上述の第1〜第3の態様に係るICカードにおいて、
複数のアプリケーションプログラムをそれぞれ暗号化して暗号化プログラム格納部に格納しておくようにし、
外部装置から特定のアプリケーションプログラムを選択する指示が与えられた場合に、この選択されたアプリケーションプログラムについての復号化を行うようにしたものである。
【0012】
(5) 本発明の第5の態様は、上述の第4の態様に係るICカードにおいて、
選択されたアプリケーションプログラムの実行が終了した場合に、復号化プログラム格納部に格納されている選択アプリケーションプログラムについての復号化プログラムを消去する処理を行うようにしたものである。
【0013】
(6) 本発明の第6の態様は、上述の第1〜第3の態様に係るICカードにおいて、
外部装置から特定のアプリケーションプログラムについての特定のコマンドが与えられた場合に、この特定のアプリケーションプログラムのうち、少なくとも与えられた特定のコマンドの実行に必要な部分についての復号化を行うようにしたものである。
【0014】
(7) 本発明の第7の態様は、上述の第6の態様に係るICカードにおいて、
外部装置から与えられた特定のコマンドの実行が終了するたびに、復号化プログラム格納部内に格納されている復号化プログラムを消去する処理を行うようにしたものである。
【0015】
(8) 本発明の第8の態様は、上述の第1〜第7の態様に係るICカードにおいて、
復号化手順として、外部から与えられたキーを利用して復号化を行う手順を用いるようにしたものである。
【0016】
(9) 本発明の第9の態様は、上述の第1〜第8の態様に係るICカードにおいて、
復号化プログラム格納部を、電源を遮断すると記憶内容が失われる揮発性メモリ内に設けるようにしたものである。
【0017】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。図1は、一般的なICカード10と、外部装置(リーダライタ装置)20との間で、情報の伝送を行っている状態を示すブロック図である。この例では、ICカード10は、種々の演算処理機能をもったCPU11と、外部装置20に対する情報の送受を行うI/Oインターフェイス12と、ROM13,EEPROM14,RAM15なるメモリとを備えている。ROM13は書換不能な不揮発性メモリであり、CPU11は、このROM13内に格納されている基本プログラムに基づいて所定の処理を実行する。EEPROM14は、書換可能な不揮発性メモリであり、ユーザデータや種々のアプリケーションプログラムが格納される。RAM15は、CPU11が種々の処理を実行する際の作業領域として利用される書換可能な揮発性メモリである。
【0018】
ICカード10と外部装置20とは、物理的な信号線による接続、赤外線による接続、電磁気を利用した非接触型接続、などの方法によって互いに接続され、情報の送受が行われる。外部装置20からICカード10へは、コマンドという形式で情報が送信される。送信されたこのコマンドは、I/Oインターフェイス12を介してCPU11に与えられる。逆に、ICカード10から外部装置20へは、与えられたコマンドに対するレスポンスという形式で情報が送信される。このレスポンスは、CPU11からI/Oインターフェイス12を介して、外部装置20へと送信される。既に述べたように、外部装置20からICカード10に対してソフトウエア的にアクセスを行う際のセキュリティ対策については、従来から様々な手法が提案されている。図示のとおり、すべてのメモリへのアクセスは、CPU11を介して行われることになり、外部装置20からICカード10内のメモリへの直接アクセスは、行うことはできない。
【0019】
しかしながら、ICカード10内の各メモリに対して、ハードウエア的にアクセスすることは可能である。ICカード10に対する電源供給は、通常、外部装置20側から行われるため、ICカード10と外部装置20との接続を解除すると、ICカード10への電源供給は遮断される。これにより、揮発性メモリであるRAM15内のデータは失われることになる。ところが、ROM13およびEEPROM14は、電源供給遮断後にも記憶内容が温存される不揮発性メモリであるため、ハードウエア的なアクセスにより、記憶内容が外部に読み出される可能性がある。たとえば、不正な手段で入手したICカード10を物理的に分解し、内蔵されていたROM13をスライスして、その断面を観察すれば、記憶されていたビットパターンを抽出することは不可能ではない。また、EEPROM14についても、各部の静電容量などを細かく測定すれば、やはり記憶されていたビットパターンを抽出することは不可能ではない。
【0020】
このような不正な手段によるメモリ内容の読み出し行為が行われた場合、特に重大な問題が生じるのは、内蔵されていたアプリケーションプログラムが解析されてしまうことである。もちろん、ユーザデータが読み出されて解析された場合も、問題が生じることになるが、ユーザデータは一個人に関する情報であるのに対し、アプリケーションプログラムは、多数のICカードに共通して利用されているプログラムであり、その内容が解析されると、今度は、ソフトウエア的な不正行為を助長することになる。
【0021】
本発明の主眼は、このようなハードウエア的な不正行為により、ROM13やEEPROM14内に格納されていたアプリケーションプログラムが解析されるのを未然に防ぐことにある。そのために、本発明に係るICカードは、次の3つの特徴を備えている。
▲1▼アプリケーションプログラムは、暗号化された状態でROM13あるいはEEPROM14内に格納される。
▲2▼暗号化されたアプリケーションプログラムを復号化するための手順が、ROM13あるいはEEPROM14に格納されており、アプリケーション実行時には、これをICカード内で復号化して利用する。
▲3▼アプリケーションの実行終了後には、復号化されたアプリケーションプログラムを消去する。
【0022】
このような3つの特徴により、不正な手段で、ICカード内部のアプリケーションプログラムが解析されるという事態を未然に防ぐことができる。すなわち、特徴▲1▼により、ROM13あるいはEEPROM14内のアプリケーションプログラムは暗号化された状態で格納されるため、不正行為により、ハードウエア的にビットパターンが読み出されたとしても、直ちにアプリケーションプログラムを解析することはできない。また、特徴▲2▼により、正当な行為として、アプリケーションプログラムを実行させる必要がある場合には、ICカード内部で復号化が行われ、アプリケーションプログラムは復号化された状態で実行されるため、正当利用する限りは、何ら支障は生じない。更に、特徴▲3▼により、アプリケーションの実行が終了したら、実行に用いた復号化アプリケーションプログラムは消去されるため、やはり不正行為により、ハードウエア的にビットパターンが読み出されたとしても、直ちにアプリケーションプログラムを解析することはできない。
【0023】
なお、実用上は、1つのアプリケーションプログラムを複数のブロックに分割し、それぞれ異なる複数の暗号化手順に基づいて個々のブロックを暗号化し、暗号化した各ブロックをROM13あるいはEEPROM14内に格納するのが好ましい。このような方法によれば、同一のアプリケーションプログラムでありながら、その部分ごとに異なる暗号化手順が用いられるため、万一、不正な手段によりビットパターンが読み出されたとしても、用いられた暗号化手順を推測することがより困難になり、アプリケーションプログラムの解析をより困難にすることができるためである。もちろん、このように各ブロックごとに異なる暗号化手順を用いて暗号化した場合、この複数の暗号化手順のそれぞれに対応した復号化手順をICカード内部に用意する必要があり、アプリケーションプログラムの復号化を行う際には、各ブロックごとにそれぞれ対応した復号化手順を用いた復号化を行うようにする必要がある。
【0024】
図2は、このようなブロックごとの暗号化の方法を示す概念図である。実際には、この暗号化の手順は、ICカード10の外部で行われる。ここでは、1つのアプリケーションプログラム30を暗号化する方法を示す。まず、アプリケーションプログラム30を複数のブロックに分割する。図示の例では、第1のブロック31と第2のブロック32との2つのブロックに分割しているが、もちろん、3つ以上のブロックに分割してもかまわない。こうして、ブロックごとの分割が完了したら、個々のブロックごとに暗号化を行うことになるが、このとき、各ブロックごとに異なる暗号化手順を用いるようにする。図示の例では、第1のブロック31に対しては、暗号化手順Aに基づく暗号化が行われて第1の暗号化ブロック41が得られ、第2のブロック32に対しては、暗号化手順Bに基づく暗号化が行われて第2の暗号化ブロック42が得られることになる。
【0025】
ここに示す実施形態では、各暗号化ブロックに、それぞれ暗号化手順情報と長さ情報を付加するようにしている。暗号化手順情報は、どの暗号化手順に基づいて暗号化が行われたかを示す情報であり、長さ情報は暗号化ブロックの長さ(たとえば、バイト数)を示す情報である。図示の例では、第1の暗号化ブロック41に、暗号化手順情報Ra(暗号化手順Aに基づく暗号化が行われたことを示す情報)と、長さ情報L11(第1の暗号化ブロック41の長さを示す情報)とを付加することにより、第1の登録用暗号化ブロック51を形成し、同様に、第2の暗号化ブロック42に、暗号化手順情報Rb(暗号化手順Bに基づく暗号化が行われたことを示す情報)と、長さ情報L12(第2の暗号化ブロック42の長さを示す情報)とを付加することにより、第2の登録用暗号化ブロック52を形成している。ここで付加された暗号化手順情報Ra,Rbは、後に復号化を行う際に、どの復号化手順を用いて復号化処理を行うべきかを選択するために利用される。
【0026】
こうして、第1および第2の登録用暗号化ブロック51,52が作成されたら、これを外部装置20からICカード10へと伝送し、ICカード10内のEEPROM14内に登録する処理が行われる。以上は、1つのアプリケーションプログラム30を、EEPROM14内に登録するための手順であるが、この実施形態では、EEPROM14内に複数のアプリケーションプログラムが同様の手順で登録された場合を考えることにする。
【0027】
図3は、本発明の一実施形態に係るICカードにおけるメモリ内の情報格納状態を示すブロック図である。上述したように、このICカードには、ROM13、EEPROM14、RAM15が内蔵されており、いずれのメモリも内蔵CPU11によってアクセスされる。
【0028】
ここに示す例では、EEPROM14は、上述した暗号化手順に基づいて暗号化されたアプリケーションプログラムを格納するための暗号化プログラム格納部として機能する。図では、EEPROM14内に、暗号化された第1のアプリケーションプログラムおよび第2のアプリケーションプログラムが格納された状態が示されている。第1のアプリケーションプログラムは、図2に示されている第1および第2の登録用暗号化ブロック51,52から構成されており、第2のアプリケーションプログラムは、同様に、第1および第2の登録用暗号化ブロック61,62から構成されている。ここで、Ra,Rb,Rcは、どの暗号化手順に基づく暗号化が行われたかを示す暗号化手順情報であり、それぞれ暗号化手順A,B,Cに基づく暗号化が行われたことを示している。また、L11,L12,L21,L22は、各暗号化ブロックの長さを示す長さ情報である。
【0029】
また、ROM13は、各暗号化手順に対応した復号化手順を格納するための復号化手順格納部として機能する。図には、3種類の復号化手順AA,BB,CCが格納された状態が示されているが、これらの復号化手順はそれぞれ暗号化手順A,B,Cに対応した復号化手順となっている。たとえば、暗号化手順Aに基づいて暗号化されたブロックは、復号化手順AAによって復号化が可能になる。したがって、図示の例の場合、EEPROM14内に登録されたブロック51,52,61,62は、ROM13内に用意されているいずれかの復号化手順に基づいて復号化が可能である。逆に言えば、EEPROM14内に登録するアプリケーションプログラムは、ROM13内に用意されているいずれかの復号化手順に対応した暗号化手順で暗号化する必要がある。
【0030】
一方、RAM15は、ROM13内に用意された復号化手順によって復号化されたアプリケーションプログラムを格納するための復号化プログラム格納部として機能する。すなわち、CPU11は、EEPROM14内のブロックについての復号化を行う場合、復号化されたコードを逐次RAM15内に展開する処理を行うことになる。図示の例では、RAM15内に、復号化された第1のアプリケーションプログラムが展開されている状態が示されている。この復号化されたプログラムは、第1のブロック31と第2のブロック32とから構成されており、これらのブロック31,32は、図2に示すアプリケーションプログラム30を構成するブロックである。
【0031】
図3には、RAM15内に復号化された第1のアプリケーションプログラムが格納された状態が示されているが、実際には、外部装置20からこの第1のアプリケーションプログラムに関する実行指示が与えられるまでは、この第1のアプリケーションプログラムは、暗号化された状態でEEPROM14(暗号化プログラム格納部)に格納されている。もちろん、CPU11は、暗号化された状態のアプリケーションプログラムをそのまま実行することはできない。そこで、特定のアプリケーションを実行する必要が生じた場合は、CPU11は、EEPROM14内のこの特定のアプリケーションを、復号化してRAM15内に展開する処理を実行する。たとえば、第1のアプリケーションプログラムを実行する必要が生じた場合、CPU11は、EEPROM14内の第1の登録用暗号化ブロック51と第2の登録用暗号化ブロック52とに対する復号化処理を行い、その結果を、RAM15内に展開する処理を行うことになる。たとえば、第1の登録用暗号化ブロック51の復号化を行う際には、暗号化手順情報Raによって、このブロックが暗号化手順Aに基づいて暗号化されたことを認識し、これに対応した復号化手順AA(ROM13内に用意されている)を利用して復号化処理を行うことになる。図3は、このような復号化処理が行われた後の状態を示している。CPU11は、このようにしてRAM15上に得られた第1のアプリケーションプログラム(復号化された状態のもの)を用いてこれを実行する。
【0032】
こうして、第1のアプリケーションプログラムの実行が完了すると、CPU11は、RAM15内に展開された第1のアプリケーションプログラム(すなわち、第1のブロック31および第2のブロック32)を消去する処理(たとえば、00などの任意のデータを上書きする処理)を行う。結局、第1のアプリケーションプログラムは、実行に必要な期間だけ、復号化された状態でRAM15内に滞在していたことになり、実行完了後には、ICカード10内には、復号化状態の第1のアプリケーションプログラムは存在しないことになる。従って、不正なハードウエア的アクセスによって、復号化状態のアプリケーションプログラムが外部へと読み出される可能性は極めて低くなる。
【0033】
なお、図3に示す例では、復号化手順をROM13内に格納するようにしているが、復号化手順はEEPROM14内に格納するようにしてもかまわない。この場合は、必要な復号化手順をその都度、EEPROM14内に書き込んで利用することができるようになる。また、図3に示す例では、暗号化されたアプリケーションプログラムを、EEPROM14内に書き込んで利用するようにしているが、暗号化されたアプリケーションプログラムは、予めROM13内に用意しておいてもよい。更に、図3に示す例では、復号化したアプリケーションプログラムを展開するメモリとして、RAM15を用いているが、EEPROM14上に復号化したアプリケーションプログラムを展開するようにしてもよい。ただ、実用上は、RAM15を復号化プログラム格納部として利用するのが好ましい。その理由は、EEPROM14が、電源の遮断後にも記憶内容が保持される不揮発性メモリであるのに対し、RAM15は、電源を遮断すると記憶内容が失われる揮発性メモリであるためである。たとえば、不正行為者が、ICカード10を外部装置20に接続した状態で何らかの操作を行っている最中に、強制的に両者の接続を切断するような行為を行った場合、RAM15内のデータは失われるが、EEPROM14内のデータはそのまま残ることになる。したがって、EEPROM14を復号化プログラム格納部として利用した場合は、復号化された状態のアプリケーションプログラムが、消去されずにそのままEEPROM14内に残る危険性が生じることになる。
【0034】
図4は、本発明に係るICカード10で行われる処理手順の一例を示す流れ図である。このような処理手順自身は、ROM13内に予め用意されており、CPU11によって実行されることになる。まず、ステップS1において、コマンド受信が行われる。前述したように、このICカード10に対する外部装置20側からの指示は、すべてコマンドの形式で与えられる。そこで、まず、I/Oインターフェイスを介して、外部装置20側から与えられたコマンドが受信される。この実施形態では、こうして与えられるコマンドは、3つのタイプに分けられる。すなわち、アプリケーション選択コマンド、アプリケーション終了コマンド、一般コマンドの3タイプである。アプリケーション選択コマンドは、EEPROM14内に登録されている複数のアプリケーションプログラム(いずれも暗号化された状態で格納されている)のうちの特定の1つを、実行対象として選択する指示を与えるためのコマンドであり、アプリケーション終了コマンドは、現在選択されているアプリケーションプログラムの実行を終了する指示を与えるためのコマンドである。実際には、アプリケーションが既に選択されている状態において、新たなアプリケーションを選択するコマンドを与えると、新アプリケーションが選択されるとともに、旧アプリケーションの選択は解除されて終了することになる。したがって、このようなコマンドは、アプリケーション選択コマンドとアプリケーション終了コマンドとの双方を兼ねたコマンドということになるが、ここでは説明の便宜上、両コマンドが別々のコマンドとして与えられる場合の例を示してある。また、一般コマンドは、現在選択されているアプリケーションプログラムに対する種々のコマンドであり、その内容は、各アプリケーションプログラムによってそれぞれ定まっている。
【0035】
ICカード10に所定のアプリケーションプログラムを実行させるためには、通常、外部装置20側から次のような手順でコマンドを送信すればよい。まず、アプリケーション選択コマンドを送信し、特定のアプリケーションプログラムを選択させる。続いて、この選択されたアプリケーションプログラムに対応した種々の一般コマンドを順次送信し、選択されたアプリケーションプログラムによって所望の処理を行わせる。最後に、アプリケーション終了コマンドを送信し、現在実行中のアプリケーションプログラムの選択を解除する(実際には、前述したように、新たなアプリケーションを選択するコマンドが、旧アプリケーションの終了コマンドを兼ねたコマンドとして用いられることが多い)。以上のような順番で、外部装置20からICカード10へとコマンドが与えられる、という前提で、図4の流れ図を見てみよう。
【0036】
まず、ステップS1において受信されたコマンドは、ステップS2において、アプリケーション選択コマンドであるか否かが判断され、ステップS3において、アプリケーション終了コマンドであるか否かが判断される。そのいずれでもない場合には、一般コマンド(特定のアプリケーションプログラムに対するコマンド)と判断され、ステップS4において、アプリケーションが選択済か否かが判断される。ここで、アプリケーションが選択済みではない場合は、ステップS5において、エラーがセットされ、ステップS6において、このセットされたエラーがレスポンスとして外部装置20側へ伝送されることになる。このエラーは、アプリケーションプログラムの選択が行われていない状態において、特定のアプリケーションプログラムに対するコマンドが与えられたことを意味する。
【0037】
さて、受信したコマンドが、アプリケーション選択コマンドであった場合は、ステップS2からステップS7へと進み、アプリケーションの選択処理が行われる。すなわち、いずれかのアプリケーションプログラムが選択状態となる(具体的には、たとえば、選択されたアプリケーションプログラムを示すフラグがRAM15上に記録される)。続いて、ステップS8において、選択されたアプリケーションプログラムの復号化が行われる。復号化されたアプリケーションプログラムは、RAM15内に展開されることになり、ステップS6において、アプリケーションの選択手続が完了した旨のレスポンスが送信される。
【0038】
一方、受信したコマンドが、アプリケーション終了コマンドであった場合は、ステップS3からステップS9へと進み(新たなアプリケーションを選択するコマンドが、旧アプリケーションの終了コマンドを兼ねる場合は、ステップS8からステップS9へと進めばよい)、現在選択されているアプリケーションプログラムの選択解除処理が行われる(具体的には、たとえば、選択されたアプリケーションプログラムを示すRAM15上のフラグを消す)。続いて、ステップS10において、終了したアプリケーションプログラムの消去が行われる。すなわち、RAM15内に展開されていた復号化されたアプリケーションプログラムが消去される。そして、ステップS6において、アプリケーションの終了手続が完了した旨のレスポンスが送信される。
【0039】
また、受信したコマンドが、一般コマンドであり、その時点でいずれかのアプリケーションプログラムが選択済みの状態であった場合には、ステップS4からステップS11へと進み、与えられた一般コマンドが、選択済みアプリケーションプログラムの対応コマンドであるか否かが判断される。対応コマンドでなかった場合には、ステップS5においてエラーがセットされ、ステップS6において、このエラーがレスポンスとして送信される。対応コマンドであった場合には、ステップS12へと進み、RAM15内に展開されている復号化されたアプリケーションプログラム(現在選択中のアプリケーションプログラム)により、与えられたコマンドが実行され、その結果が、ステップS6においてレスポンスとして送信されることになる。
【0040】
結局、この図4の流れ図に示す手順によれば、外部装置20から、特定のアプリケーションプログラムを選択する指示が与えられた場合に、この選択されたアプリケーションプログラムが復号化されてRAM15内に展開され、この選択されたアプリケーションプログラムの実行が終了した場合に、RAM15内に格納されている復号化プログラムが消去されることになる。そして、選択されたアプリケーションプログラムの実行中は、RAM15内に展開されている復号化されたアプリケーションプログラムによって、一般コマンドが実行されることになる。
【0041】
ところで、図4に示す手順では、アプリケーションプログラムは選択された段階でその全体が復号化され、また、アプリケーションプログラムの終了を待って、復号化されたプログラム全体が消去されるようにしているが、必ずしも全体を復号化し、全体を消去するという手順を採る必要はなく、部分ごとに復号化し、部分ごとに消去するという手順を採ってもかまわない。たとえば、外部装置20から特定のアプリケーションプログラムについての特定のコマンドが与えられた場合に、この特定のアプリケーションプログラムのうち、少なくとも与えられた特定のコマンドの実行に必要な部分についての復号化を行うようにし、この特定のコマンドの実行が終了するたびに、復号化されたプログラムを消去するようにしてもよい。通常、アプリケーションプログラムには、多数のコマンドが定義されており、1つ1つのコマンドの実行には、当該アプリケーションプログラムの中の一部分のルーチンのみが使用される。したがって、与えられたコマンドの実行に必要なルーチンの部分のみをその都度復号化して利用するという手法を採れば、無用な復号化処理を行う必要はなくなる。また、RAM15内に展開される復号化プログラムも、実行に必要なルーチンの部分のみとなるため、アプリケーションプログラム全体が外部に読み出される可能性を更に低減させることが可能になる。
【0042】
以上、本発明を図示する実施形態に基づいて述べたが、本発明はこれらの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施形態では、アプリケーションプログラム全体を暗号化して、ICカード内に登録するようにしているが、アプリケーションプログラムの暗号化は必ずしも全体に対して行う必要はなく、セキュリティ上、特に必要な一部分のみを暗号化し、残りの部分は暗号化しない状態でICカード内に登録するようにしてもかまわない。
【0043】
また、本発明を実施する上では、ICカード内に復号化手順を用意する必要があるが、この復号化手順が不正な手段によって外部に読み出される可能性もある。したがって、よりセキュリティを向上させるためには、暗号化および復号化に所定のキーを利用するような手法を採るのが好ましい。この場合、復号化手順を実施するためには、外部からICカードに対してキーを与える必要があるため、たとえ不正な手段によって、ICカード内部の復号化手順が読み出されたとしても、この復号化手順を用いて、直ちに復号化を行うことはできないため、安全性が向上することになる。なお、復号化に必要なキーは、たとえば、アプリケーション選択コマンドとともに、外部装置20側からICカード10へと与えるようにすればよい。
【0044】
【発明の効果】
以上のとおり本発明に係るICカードによれば、アプリケーションプログラムを暗号化した状態でICカード内に格納し、必要なときにだけこれを復号化して利用し、利用後に復号化プログラムを消去するようにしたため、より万全なセキュリティを確保することが可能になる。
【図面の簡単な説明】
【図1】一般的なICカード10と、外部装置(リーダライタ装置)20との間で、情報の伝送を行っている状態を示すブロック図である。
【図2】本発明で用いるブロックごとの暗号化の方法を示す概念図である。
【図3】本発明の一実施形態に係るICカードにおけるメモリ内の情報格納状態を示すブロック図である。
【図4】本発明に係るICカードで行われる処理手順の一例を示す流れ図である。
【符号の説明】
10…ICカード
11…CPU
12…I/Oインターフェイス
13…ROM
14…EEPROM
15…RAM
20…外部装置
30…アプリケーションプログラム
31…第1のブロック
32…第2のブロック
41…第1の暗号化ブロック
42…第2の暗号化ブロック
51…第1の登録用暗号化ブロック
52…第2の登録用暗号化ブロック
61…第1の登録用暗号化ブロック
62…第2の登録用暗号化ブロック
A,B…暗号化手順
AA,BB,CC…復号化手順
L11,L12,L21,L22…ブロックの長さ情報
Ra,Rb,Rc…ブロックの暗号化手順情報
Claims (9)
- CPUとメモリとを有し、メモリ内に格納されたアプリケーションプログラムをCPUによって実行させることにより、種々の処理を行うICカードにおいて、
所定の暗号化手順に基づいて暗号化されたアプリケーションプログラムを格納するための暗号化プログラム格納部と、
前記暗号化手順に対応した復号化手順を格納するための復号化手順格納部と、
前記復号化手順によって復号化されたアプリケーションプログラムを格納するための復号化プログラム格納部と、
をメモリ上に設け、
外部装置から前記アプリケーションプログラムに関する実行指示が与えられるまでは、前記アプリケーションプログラムを暗号化した状態で前記暗号化プログラム格納部に格納しておき、
前記実行指示が与えられた場合は、前記復号化手順に基づいて復号化を行い、復号化されたアプリケーションプログラムを前記復号化プログラム格納部に格納し、この復号化されたアプリケーションプログラムを実行した後、この復号化されたアプリケーションプログラムを前記復号化プログラム格納部から消去する処理を行う機能を有することを特徴とするICカード。 - 請求項1に記載のICカードにおいて、
アプリケーションプログラムを、その一部分のみを暗号化した状態で、暗号化プログラム格納部に格納しておくことを特徴とするICカード。 - 請求項1に記載のICカードにおいて、
アプリケーションプログラムを複数のブロックに分割し、それぞれ異なる複数の暗号化手順に基づいて個々のブロックを暗号化し、暗号化した各ブロックを暗号化プログラム格納部に格納しておくようにし、
前記複数の暗号化手順のそれぞれに対応した復号化手順を復号化手順格納部に格納しておき、
アプリケーションプログラムの復号化を行う際には、各ブロックごとにそれぞれ対応した復号化手順を用いた復号化を行うことを特徴とするICカード。 - 請求項1〜3のいずれかに記載のICカードにおいて、
複数のアプリケーションプログラムをそれぞれ暗号化して暗号化プログラム格納部に格納しておくようにし、
外部装置から特定のアプリケーションプログラムを選択する指示が与えられた場合に、この選択されたアプリケーションプログラムについての復号化を行うようにしたことを特徴とするICカード。 - 請求項4に記載のICカードにおいて、
選択されたアプリケーションプログラムの実行が終了した場合に、復号化プログラム格納部に格納されている前記選択されたアプリケーションプログラムについての復号化プログラムを消去する処理を行うことを特徴とするICカード。 - 請求項1〜3のいずれかに記載のICカードにおいて、
外部装置から特定のアプリケーションプログラムについての特定のコマンドが与えられた場合に、前記特定のアプリケーションプログラムのうち、少なくとも前記特定のコマンドの実行に必要な部分についての復号化を行うようにすることを特徴とするICカード。 - 請求項6に記載のICカードにおいて、
外部装置から与えられた特定のコマンドの実行が終了するたびに、復号化プログラム格納部内に格納されている復号化プログラムを消去する処理を行うことを特徴とするICカード。 - 請求項1〜7のいずれかに記載のICカードにおいて、
復号化手順として、外部から与えられたキーを利用して復号化を行う手順を用いることを特徴とするICカード。 - 請求項1〜8のいずれかに記載のICカードにおいて、
復号化プログラム格納部を、電源を遮断すると記憶内容が失われる揮発性メモリ内に設けたことを特徴とするICカード。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34780398A JP4080079B2 (ja) | 1998-11-20 | 1998-11-20 | Icカード |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34780398A JP4080079B2 (ja) | 1998-11-20 | 1998-11-20 | Icカード |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000155819A JP2000155819A (ja) | 2000-06-06 |
JP4080079B2 true JP4080079B2 (ja) | 2008-04-23 |
Family
ID=18392698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34780398A Expired - Fee Related JP4080079B2 (ja) | 1998-11-20 | 1998-11-20 | Icカード |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4080079B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042489B2 (en) | 2017-10-23 | 2021-06-22 | Samsung Electronics Co., Ltd. | Data encryption method and electronic apparatus performing data encryption method |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1125262A1 (en) * | 1998-10-27 | 2001-08-22 | Visa International Service Association | Delegated management of smart card applications |
US6895506B1 (en) * | 2000-05-16 | 2005-05-17 | Loay Abu-Husein | Secure storage and execution of processor control programs by encryption and a program loader/decryption mechanism |
CN1276363C (zh) * | 2002-11-13 | 2006-09-20 | 深圳市朗科科技有限公司 | 借助半导体存储装置实现数据安全存储和算法存储的方法 |
JP5775738B2 (ja) | 2011-04-28 | 2015-09-09 | 富士通株式会社 | 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム |
JP2013069108A (ja) * | 2011-09-22 | 2013-04-18 | Toshiba Corp | Icカード、携帯可能電子装置、及びicカードの制御方法 |
JP5492172B2 (ja) * | 2011-11-04 | 2014-05-14 | 株式会社東芝 | 携帯可能電子装置、icカードおよびicモジュール |
JP5984625B2 (ja) | 2012-10-31 | 2016-09-06 | ルネサスエレクトロニクス株式会社 | 半導体装置及び暗号鍵書き込み方法 |
JP6493318B2 (ja) * | 2016-06-24 | 2019-04-03 | 株式会社デンソー | データ処理システム |
-
1998
- 1998-11-20 JP JP34780398A patent/JP4080079B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042489B2 (en) | 2017-10-23 | 2021-06-22 | Samsung Electronics Co., Ltd. | Data encryption method and electronic apparatus performing data encryption method |
Also Published As
Publication number | Publication date |
---|---|
JP2000155819A (ja) | 2000-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4295041A (en) | Device for the protection of access to a permanent memory of a portable data carrier | |
US8533856B2 (en) | Secure compact flash | |
JP2537199B2 (ja) | Icカ―ド | |
KR970004106B1 (ko) | Ic 카드 | |
JP4651212B2 (ja) | 携帯可能情報記憶媒体およびその認証方法 | |
JP2007226839A (ja) | データ構造を記憶するメモリ及び方法 | |
JPH08305558A (ja) | 暗号化プログラム演算装置 | |
JP2004272400A (ja) | メモリカード | |
JP4974613B2 (ja) | Icメモリ並びにicメモリ用のアクセス装置及び正当性検証方法 | |
US7076667B1 (en) | Storage device having secure test process | |
JP4080079B2 (ja) | Icカード | |
US20070124534A1 (en) | Data storing apparatus, IC card, and data storing method | |
JP2002111660A (ja) | 暗号通信方法及び暗号通信装置 | |
JP3620834B2 (ja) | 携帯可能電子装置及びその初期応答の出力方法 | |
JP2011060136A (ja) | 携帯可能電子装置、および、携帯可能電子装置におけるデータ管理方法 | |
JP4509291B2 (ja) | Icカード、icカードのプログラム更新装置、および、その方法 | |
JPH09179949A (ja) | 携帯可能情報記録媒体とそのリーダライタ装置 | |
JP2002024790A (ja) | 情報処理システム、携帯可能電子装置、及びキー変更方法 | |
JP4324100B2 (ja) | データ書込制御装置及びデータ書込制御方法 | |
JP2537200B2 (ja) | 携帯可能電子装置 | |
CN102637152B (zh) | 具有处理单元和信息存储装置的设备 | |
JP4859574B2 (ja) | セキュリティ管理装置およびセキュリティ管理方法 | |
JPH03224047A (ja) | 携帯可能電子装置 | |
JPH06309531A (ja) | Icカードに与える命令フォーマットのチェック方法 | |
JP2017200064A (ja) | Icチップ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051111 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080130 |
|
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: 20080205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080206 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110215 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: 20110215 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120215 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130215 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |