(57)【特許請求の範囲】
【請求項１】
プログラムを実行可能な半導体メモリカードであって、
情報を格納する不揮発性メモリと、
実行中のプログラムに関する情報を格納するレジスタと、
前記半導体メモリカードに対する供給電圧の変化を検出する検出部と、
他の機器と通信する通信部と、
前記検出部が所定の電圧低下状態を検出した場合、前記レジスタに格納されている情報であるレジスタ情報と、前記プログラムを特定するための付加情報と、前記プログラムが利用する暗号の強度を示す暗号情報とを対応付けて前記不揮発性メモリに退避させる退避部と、
前記レジスタ情報を前記レジスタに復帰させる前に、前記暗号情報に示される暗号の強度が所定の強度以上であるか否かを判断する復帰判断部と、
前記復帰判断部が、前記暗号情報に示される暗号の強度が所定の強度以上であると判断した場合、前記他の機器の認証を行なう認証部と、
前記検出部が所定の電圧上昇状態を検出した場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たし、かつ、前記認証部による前記他の機器の認証が成功したとき、前記レジスタ情報を前記レジスタに復帰させる復帰部と
を備える半導体メモリカード。
【請求項２】
前記不揮発性メモリは破壊読出し領域を有し、
前記半導体メモリカードは、更に、前記退避部が前記レジスタ情報を前記レジスタに退避させる前に、実行中のプログラムが利用する暗号の強度が所定の強度以上であるか否かを判断する退避判断部を備え、
前記退避部は、前記検出部が所定の電圧低下状態を検出した場合、前記退避判断部により前記暗号の強度が所定の強度以上であると判断されたとき、前記レジスタ情報と前記付加情報と、前記プログラムが利用する暗号の強度を示す暗号情報とを対応付けて前記不揮発性メモリの前記破壊読出し領域に退避させる
請求項１記載の半導体メモリカード。
【請求項３】
前記不揮発性メモリは、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ）である
請求項２記載の半導体メモリカード。
【請求項４】
プログラムを実行可能な半導体メモリカードにおいて前記プログラムを断続的に実行するためのプログラム実行方法であって、
前記半導体メモリカードは、情報を格納する不揮発性メモリと、実行中のプログラムに関する情報を格納するレジスタと、他の機器と通信する通信部とを有し、
前記プログラム実行方法は、
前記半導体メモリカードに対する供給電圧の変化を検出する検出ステップと、
前記検出ステップにおいて、所定の電圧低下状態が検出された場合、前記レジスタに格納されている情報であるレジスタ情報と、前記プログラムを特定するための付加情報と、前記プログラムが利用する暗号の強度を示す暗号情報とを対応付けて前記不揮発性メモリに退避させる退避ステップと、
前記レジスタ情報を前記レジスタに復帰させる前に、前記暗号情報に示される暗号の強度が所定の強度以上であるか否かを判断する復帰判断ステップと、
前記復帰判断ステップにおいて、前記暗号情報に示される暗号の強度が所定の強度以上であると判断した場合、前記他の機器の認証を行なう認証ステップと、
前記検出ステップにおいて、所定の電圧上昇状態が検出された場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たし、かつ、前記認証ステップにおける前記他の機器の認証が成功したとき、前記レジスタ情報を前記レジスタに復帰させる復帰ステップと
を含むプログラム実行方法。
【請求項５】
アプリケーションプログラムを実行可能な半導体メモリカードにおいて前記アプリケーションプログラムを断続的に実行するための実行プログラムであって、
前記半導体メモリカードは、情報を格納する不揮発性メモリと、実行中のアプリケーションプログラムに関する情報を格納するレジスタと、他の機器と通信する通信部とを有し、
前記実行プログラムは、
前記半導体メモリカードに対する供給電圧の変化を検出する検出ステップと、
前記検出ステップにおいて、所定の電圧低下状態が検出された場合、前記レジスタに格納されている情報であるレジスタ情報と、前記アプリケーションプログラムを特定するための付加情報と、前記プログラムが利用する暗号の強度を示す暗号情報とを対応付けて前記不揮発性メモリに退避させる退避ステップと、
前記レジスタ情報を前記レジスタに復帰させる前に、前記暗号情報に示される暗号の強度が所定の強度以上であるか否かを判断する復帰判断ステップと、
前記復帰判断ステップにおいて、前記暗号情報に示される暗号の強度が所定の強度以上であると判断した場合、前記他の機器の認証を行なう認証ステップと、
前記検出ステップにおいて、所定の電圧上昇状態が検出された場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たし、かつ、前記認証ステップにおける前記他の機器の認証が成功したとき、前記レジスタ情報を前記レジスタに復帰させる復帰ステップと
をコンピュータに実行させるための実行プログラム。
【請求項６】
アプリケーションプログラムを実行可能な半導体メモリカードにおいて前記アプリケーションプログラムを断続的に実行するための実行プログラムが格納された、コンピュータが読み取り可能な記録媒体であって、
前記半導体メモリカードは、情報を格納する不揮発性メモリと、実行中のアプリケーションプログラムに関する情報を格納するレジスタと、他の機器と通信する通信部とを有し、
前記記録媒体は、
前記半導体メモリカードに対する供給電圧の変化を検出する検出ステップと、
前記検出ステップにおいて、所定の電圧低下状態が検出された場合、前記レジスタに格納されている情報であるレジスタ情報と、前記アプリケーションプログラムを特定するための付加情報と、前記プログラムが利用する暗号の強度を示す暗号情報とを対応付けて前記不揮発性メモリに退避させる退避ステップと、
前記レジスタ情報を前記レジスタに復帰させる前に、前記暗号情報に示される暗号の強度が所定の強度以上であるか否かを判断する復帰判断ステップと、
前記復帰判断ステップにおいて、前記暗号情報に示される暗号の強度が所定の強度以上であると判断した場合、前記他の機器の認証を行なう認証ステップと、
前記検出ステップにおいて、所定の電圧上昇状態が検出された場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たし、かつ、前記認証ステップにおける前記他の機器の認証が成功したとき、前記レジスタ情報を前記レジスタに復帰させる復帰ステップと
をコンピュータに実行させるための実行プログラムが格納された記録媒体。
【請求項７】
プログラムを実行可能な半導体メモリカードにおいてプログラムを断続的に実行するための集積回路であって、
前記半導体メモリカードは、情報を格納する不揮発性メモリと、他の機器と通信する通信部とが設けられており、
前記集積回路は、
実行中のプログラムに関する情報を格納するレジスタと、
前記半導体メモリカードに対する供給電圧の変化を検出する検出部と、
前記検出部が所定の電圧低下状態を検出した場合、前記レジスタに格納されている情報であるレジスタ情報と、前記プログラムを特定するための付加情報と、前記プログラムが利用する暗号の強度を示す暗号情報とを対応付けて前記不揮発性メモリに退避させる退避部と、
前記レジスタ情報を前記レジスタに復帰させる前に、前記暗号情報に示される暗号の強度が所定の強度以上であるか否かを判断する復帰判断部と、
前記復帰判断部が、前記暗号情報に示される暗号の強度が所定の強度以上であると判断した場合、前記他の機器の認証を行なう認証部と、
前記検出部が所定の電圧上昇状態を検出した場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たし、かつ、前記認証部による前記他の機器の認証が成功したとき、前記レジスタ情報を前記レジスタに復帰させる復帰部と
を備える集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行可能な機能を有する半導体メモリカードに関する。
【背景技術】
【０００２】
近年、クレジットカードをはじめ多くの磁気カードが半導体メモリカードへ転換されてきている。その理由として、半導体メモリカードは、磁気カードに比べて記憶容量が大きいことはもとより、格納される個人情報等の情報漏えいを防ぐセキュリティ機能が強化されていることが挙げられる。上記格納データの保護機能を持った半導体メモリカードの代表としてＩＣカードがある。
【０００３】
ＩＣカードには、ＩＣカードとデータのやり取りを行なうリーダライタとの通信形態により接触型と非接触型とがある。非接触型ＩＣカードとは、リーダライタが発信する弱い電波を利用してデータを送受信するＩＣカードのことである。以下、単に「ＩＣカード」という場合、非接触型ＩＣカードのことを指すものとする。
【０００４】
図１は、一般的なＩＣカードのハードウェア構成の一例を示す図である。図１に示すＩＣカードは、プログラムを格納するＲＯＭ２０１、プログラム実行の際に用いられる一時的なデータや外部から書き込まれるデータを格納する不揮発性メモリであるＦｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ）２０２、外部との通信インターフェース（Ｉ／Ｆ）であるアンテナ２０３、および、ＲＯＭ２０１に記憶されたプログラムに従って各種コマンド処理等の制御処理を行なうＣＰＵ２００を備えている。
【０００５】
また、ＣＰＵ２００は、算術的な処理を行なう回路であるＡｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ（ＡＬＵ）２０４と、演算値や実行状態を保持する記憶素子であるレジスタ２０５とを有している。
【０００６】
ところで、このＩＣカードは、従来、一枚のＩＣカードに対し、電子マネー等の単純な単一のサービスの処理のみが要求されていた。しかし、近年の生体認証等による高度な認証技術の導入により、より複雑な処理を実行することが要求されている。複雑な処理を実行する場合、単純な処理を実行する場合と比べ、リーダライタとの通信を継続する時間がより必要となる。
【０００７】
また、複数のサービスの処理が求められるため、近年のＩＣカードでは、複数のサービスのそれぞれに対応する、複数のアプリケーションプログラム（以下、単に「プログラム」ともいう。）が実行可能となっている。ＩＣカードは、サービスを提供するホストコンピュータであるサーバに接続されたリーダライタと通信を行なうことで、そのサーバが提供するサービスを利用することができる。
【０００８】
ここで、非接触型ＩＣカードの特性として、リーダライタから発信される電波により電圧が供給されているため、ＩＣカードをリーダライタから離すと、電圧の供給が遮断され、処理がリセットされることとなる。
【０００９】
そのため、電圧の供給が不安定な環境において、処理を継続する方法として、レジスタ、ＲＡＭを全て不揮発性メモリＦｅＲＡＭで構成し、電圧の再供給後に、処理を再開する方法がある。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、レジスタやＲＡＭ、特にレジスタのように、アクセス頻度の高い箇所に不揮発性メモリＦｅＲＡＭを用いることは、ＦｅＲＡＭの特性上、商品寿命が極端に短くなるため商品化は現実的ではない。
【００１１】
また、ＩＣカードは、上述のように、複数のサービスそれぞれに応じた処理を実行することが可能であり、電圧の供給の中断前と再開後で、ＩＣカードが処理すべき内容が異なる場合がある。そのため、レジスタであるＦｅＲＡＭに保持されていた演算値等をそのまま用いて処理を再開することができない場合がある。
【００１２】
本発明は、上記課題を解決するものであり、電圧の供給が中断することにより、処理の実行が中断される場合であっても、電圧の供給後に中断された処理を継続して実行することができる半導体メモリカードを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記従来の課題を解決するために本発明の半導体メモリカードは、プログラムを実行可能な半導体メモリカードであって、情報を格納する不揮発性メモリと、実行中のプログラムに関する情報を格納するレジスタと、前記半導体メモリカードに対する供給電圧の変化を検出する検出部と、前記検出部が所定の電圧低下状態を検出した場合、前記レジスタに格納されている情報であるレジスタ情報と、前記プログラムを特定するための付加情報とを対応付けて前記不揮発性メモリに退避させる退避部と、前記検出部が所定の電圧上昇状態を検出した場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たすとき、前記レジスタ情報を前記レジスタに復帰させる復帰部とを備える。
【００１４】
また、本発明の半導体メモリカードは、更に、他の機器と通信する通信部を備え、前記復帰部は、前記検出部が所定の電圧上昇状態を検出した場合、前記付加情報が、前記通信部と前記他の機器との通信により得られた情報を含むとき、前記レジスタ情報を前記レジスタに復帰させるとしてもよい。
【００１５】
また、本発明の半導体メモリカードは、更に、前記通信部と前記他の機器との通信における通信種別を示す情報を取得する通信種別取得部を備え、前記復帰部は、前記検出部が所定の電圧上昇状態を検出した場合、前記付加情報が、前記通信種別取得部により取得された前記通信種別を示す情報を含むとき、前記レジスタ情報を前記レジスタに復帰させるとしてもよい。
【００１６】
また、本発明の半導体メモリカードにおいて、前記不揮発性メモリは、互いに異なる複数のレジスタ情報を格納し、前記復帰部は、前記検出部が所定の電圧上昇状態を検出した場合、前記通信種別取得部により取得された前記通信種別を示す情報を含む付加情報に対応付けられたレジスタ情報を、前記不揮発性メモリの中から選択して読み出し、前記レジスタに復帰させるとしてもよい。
【００１７】
また、本発明の半導体メモリカードにおいて、前記退避部は、前記レジスタ情報を前記不揮発性メモリに退避させる際に、更に、前記プログラムが利用する暗号の強度を示す暗号情報を前記レジスタ情報と対応付けて前記不揮発性メモリに退避させ、前記半導体メモリカードは、更に、他の機器と通信する通信部と、前記復帰部が前記レジスタ情報を前記レジスタに復帰させる前に、前記暗号情報に示される暗号の強度が所定の強度以上であるか否かを判断する復帰判断部と、前記復帰判断部が、前記暗号情報に示される暗号の強度が所定の強度以上であると判断した場合、前記他の機器の認証を行なう認証部とを備え、前記復帰部は、前記検出部が所定の電圧上昇状態を検出した場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たし、かつ、前記認証部による前記他の機器の認証が成功したとき、前記レジスタ情報を前記レジスタに復帰させるとしてもよい。
【００１８】
また、本発明の半導体メモリカードにおいて、前記不揮発性メモリは破壊読出し領域を有し、前記半導体メモリカードは、更に、前記退避部が前記レジスタ情報を前記レジスタに退避させる前に、実行中のプログラムが利用する暗号の強度が所定の強度以上であるか否かを判断する退避判断部を備え、前記退避部は、前記検出部が所定の電圧低下状態を検出した場合、前記退避判断部により前記暗号の強度が所定の強度以上であると判断されたとき、前記レジスタ情報と前記付加情報とを対応付けて前記不揮発性メモリの前記破壊読出し領域に退避させるとしてもよい。
【００１９】
また、本発明の半導体メモリカードにおいて、前記不揮発性メモリは、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ）であるとしてもよい。
【００２０】
また、本発明のプログラム実行方法は、プログラムを実行可能な半導体メモリカードにおいて前記プログラムを断続的に実行するためのプログラム実行方法であって、前記半導体メモリカードは、情報を格納する不揮発性メモリと、実行中のプログラムに関する情報を格納するレジスタとを有し、前記プログラム実行方法は、前記半導体メモリカードに対する供給電圧の変化を検出する検出ステップと、前記検出ステップにおいて、所定の電圧低下状態が検出された場合、前記レジスタに格納されている情報であるレジスタ情報と、前記プログラムを特定するための付加情報とを対応付けて前記不揮発性メモリに退避させる退避ステップと、前記検出ステップにおいて、所定の電圧上昇状態が検出された場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たすとき、前記レジスタ情報を前記レジスタに復帰させる復帰ステップとを含む。
【００２１】
また、本発明の実行プログラムは、アプリケーションプログラムを実行可能な半導体メモリカードにおいて前記アプリケーションプログラムを断続的に実行するための実行プログラムであって、前記半導体メモリカードは、情報を格納する不揮発性メモリと、実行中のアプリケーションプログラムに関する情報を格納するレジスタとを有し、前記実行プログラムは、前記半導体メモリカードに対する供給電圧の変化を検出する検出ステップと、前記検出ステップにおいて、所定の電圧低下状態が検出された場合、前記レジスタに格納されている情報であるレジスタ情報と、前記アプリケーションプログラムを特定するための付加情報とを対応付けて前記不揮発性メモリに退避させる退避ステップと、前記検出ステップにおいて、所定の電圧上昇状態が検出された場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たすとき、前記レジスタ情報を前記レジスタに復帰させる復帰ステップと含む。
【００２２】
また、本発明の記録媒体は、アプリケーションプログラムを実行可能な半導体メモリカードにおいて前記アプリケーションプログラムを断続的に実行するための実行プログラムが格納された、コンピュータが読み取り可能な記録媒体であって、前記半導体メモリカードは、情報を格納する不揮発性メモリと、実行中のアプリケーションプログラムに関する情報を格納するレジスタとを有し、前記記録媒体は、前記半導体メモリカードに対する供給電圧の変化を検出する検出ステップと、前記検出ステップにおいて、所定の電圧低下状態が検出された場合、前記レジスタに格納されている情報であるレジスタ情報と、前記アプリケーションプログラムを特定するための付加情報とを対応付けて前記不揮発性メモリに退避させる退避ステップと、前記検出ステップにおいて、所定の電圧上昇状態が検出された場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たすとき、前記レジスタ情報を前記レジスタに復帰させる復帰ステップとをコンピュータに実行させるための実行プログラムが格納される。
【００２３】
また、本発明の集積回路は、プログラムを実行可能な半導体メモリカードにおいてプログラムを断続的に実行するための集積回路であって、前記半導体メモリカードは、情報を格納する不揮発性メモリが設けられており、前記集積回路は、実行中のプログラムに関する情報を格納するレジスタと、前記半導体メモリカードに対する供給電圧の変化を検出する検出部と、前記検出部が所定の電圧低下状態を検出した場合、前記レジスタに格納されている情報であるレジスタ情報と、前記プログラムを特定するための付加情報とを対応付けて前記不揮発性メモリに退避させる退避部と、前記検出部が所定の電圧上昇状態を検出した場合、前記不揮発性メモリに格納されている前記付加情報が所定の条件を満たすとき、前記レジスタ情報を前記レジスタに復帰させる復帰部とを備える。
【００２４】
更に、本発明は、本発明の半導体メモリカードの特徴的な構成部をステップとする方法として実現したり、それらのステップを含むプログラムとして実現したり、そのプログラムが格納された、ＣＤ−ＲＯＭ等の記録媒体として実現したり、集積回路として実現することもできる。プログラムは、通信ネットワーク等の伝送媒体を介して流通させることもできる。
【発明の効果】
【００２５】
本発明は、電圧の供給が中断することにより、処理の実行が中断される場合であっても、電圧の供給後に継続して処理を実行することができる半導体メモリカードを提供することができる。
【００２６】
本発明によれば、半導体メモリカードにおいて、電圧の供給が不安定な環境などにおいて、処理の実行中に、その処理の実行に必要な電圧の供給が途絶えた場合、処理の実行に必要な電圧の供給が再開されると、中断された処理を継続して実行することができる。つまり、処理を断続的に実行することができる。
【００２７】
また、２つ以上の独立した処理についても、その処理ごとに断続的に実行することができる。
【００２８】
また、断続的な処理の実行におけるセキュリティを向上させることができる。つまり、秘匿性の高い情報を扱う処理であっても断続的にかつ安全に実行することができる。
【発明を実施するための最良の形態】
【００２９】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００３０】
（実施の形態１）
まず、実施の形態１のＩＣカードの構成を図２を用いて説明する。
図２は、実施の形態１のＩＣカード１００の機能的な構成を示す機能ブロック図である。ＩＣカード１００は、本発明の半導体メモリカードの一例であり、複数のアプリケーションプログラムを実行可能な非接触型ＩＣカードである。
【００３１】
ＩＣカード１００は、図２に示すように、ＦｅＲＡＭ２０２と、Ｉ／Ｆ部３０１と、アンテナ２０３と、電圧検出部３００と、レジスタ２０５と、退避部３０２と、復帰部３０３とを備える。
【００３２】
なお、ＩＣカード１００のハードウェア構成は、図１に示す従来のＩＣカードと同じである。また、以下、レジスタ２０５に格納されている情報を用いて処理を実行する構成部等、ＩＣカード１００が本来有する構成部についての図示および説明は省略し、ＩＣカード１００の特徴的な構成部についてのみ図示し説明を行なう。
【００３３】
ＦｅＲＡＭ２０２は、ＩＣカード１００で実行される処理に用いられるデータ等を記憶する不揮発性メモリである。アンテナ２０３は本発明の半導体メモリカードにおける通信部の一例であり、外部機器との通信Ｉ／Ｆである。ＩＣカード１００は、アンテナ２０３が電波を受信することにより外部機器から電圧の供給を受けることになる。
【００３４】
電圧検出部３００は、供給電圧の変化を検出する処理部である。レジスタ２０５は、演算値や実行状態を保持する記憶素子である。退避部３０２は、電圧検出部３００が所定の電圧低下状態を検出した際、レジスタ２０５に格納されている実行中のプログラムの演算値や状態についての情報（以下、「レジスタ情報」という。）をＦｅＲＡＭ２０２に退避させる処理部である。
【００３５】
復帰部３０３は、電圧検出部３００が所定の電圧上昇状態を検出した際、ＦｅＲＡＭ２０２に格納されているレジスタ情報がある場合、レジスタ２０５にそのレジスタ情報を復帰させる処理部である。
【００３６】
Ｉ／Ｆ部３０１は、退避部３０２および復帰部３０３とＦｅＲＡＭ２０２との情報のやり取りを仲介するＩ／Ｆである。
【００３７】
実施の形態１のＩＣカード１００は、上記構成により、必要な電圧の供給を受けられず中断された処理を、電圧供給の再開後に継続して実行することができる。一旦中断された処理を継続して実行する際のＩＣカード１００の動作を以下に述べる。
【００３８】
図３は、実施の形態１のＩＣカード１００の使用環境および供給電圧の変化を示す概要図である。
【００３９】
図３に示す使用環境は、各種サービスを提供、管理、保有するサーバ１０４と、ＩＣカード１００と通信を行なう端末装置であるリーダライタ１０１およびリーダライタ１０２と、サーバ１０４とリーダライタ１０１およびリーダライタ１０２とを相互に接続するネットワーク１０３とによって構成される。
【００４０】
また、ＩＣカード１００がリーダライタ１０１と通信可能なエリアをエリア１１０とし、リーダライタ１０２と通信可能なエリアをエリア１１２とする。エリア１１０およびエリア１１２以外のエリアを通信外エリアという。
【００４１】
サーバ１０４は、ＩＣカード１００にサービスを提供するための少なくとも１個以上のアプリケーションプログラムを有し、そのアプリケーションプログラムを実行する機能を有する。また、リーダライタ１０１およびリーダライタ１０２を介し、ＩＣカード１００と通信を行なうことによりそのサービスをＩＣカード１００に提供する。
【００４２】
リーダライタ１０１およびリーダライタ１０２のそれぞれは、少なくとも、サーバ１０４から送信される情報をＩＣカード１００へ送信する機能と、ＩＣカード１００から、サーバ１０４に対するレスポンス、もしくは、要求を受信し、サーバ１０４へ送信する機能を有する。
【００４３】
なお、ＩＣカード１００を保有するユーザは、図１の使用環境において等速で移動しており、エリア１１０、通信外エリア、エリア１１２の順に通過すると想定する。また、その移動中にＩＣカード１００が同一のサービスに対応するための処理をエリア１１０とエリア１１２とにおいて継続して行なう場合を想定する。
【００４４】
上記移動において、ＩＣカード１００は、通信外エリアに入ると電圧の供給が絶たれ、レジスタ２０５に格納されていた情報は消滅することとなる。そこで、ＩＣカード１００では、電圧の供給が完全に絶たれる前に、退避部３０２がレジスタ情報を不揮発性メモリであるＦｅＲＡＭ２０２に退避させる。これにより、処理の中断および再開に備えることができる。
【００４５】
図４は、実施の形態１における退避情報のデータ構成の一例と、ＦｅＲＡＭ２０２のメモリマップの一例を示す図である。
【００４６】
退避情報４００は、退避部３０２によりＦｅＲＡＭ２０２に退避される情報であり、図４に示すように、フラグ値を示すフラグ情報４１０と、レジスタ２０５から収集されたデータ群であるレジスタ情報４２０とが対応付けられた情報である。
【００４７】
フラグ値は、"退避データ有り"を示す値または"退避データ無し"を示す値であり、退避部３０２により設定される。レジスタ情報４２０がＦｅＲＡＭ２０２に格納される際は、"退避データ有り"を示す "０ｘＡ５Ａ５Ａ５Ａ５"が設定される。
【００４８】
ＦｅＲＡＭ２０２は、図４に示すように、退避領域４０１と、記憶領域４０２と、スタック領域４０３とを有する。退避情報４００が格納される退避領域４０１は、ＦｅＲＡＭ２０２のアドレス０ｘ００００を先頭アドレスとする所定の領域である。
【００４９】
図５は、実施の形態１のＩＣカード１００において、電圧検出部３００により所定の電圧低下状態が検出され、実行中の処理を中断するためにレジスタ情報４２０を退避させる手順を示すフローチャートである。
【００５０】
図５を用いて、実施の形態１のＩＣカード１００がレジスタ情報４２０を退避させる際の動作を説明する。
【００５１】
まず、ＩＣカード１００がリーダライタ１０１と通信可能なエリア１１０に存在する場合、ＩＣカード１００は、リーダライタ１０１を介してサーバ１０４と通信しサービスの提供を受ける。ＩＣカード１００はその通信の開始によりサービスに対応した処理を開始する。
【００５２】
ＩＣカード１００が処理を完了する前に通信外エリアへ移動すると、ＩＣカード１００の電圧検出部３００は、供給電圧が閾値Vｈより低い状態が時間Δtの間継続している状態を検出する。
【００５３】
電圧検出部３００は上記の電圧低下状態を検出すると、退避部３０２に電圧低下を知らせるシグナル（以下、「電圧低下シグナル」という。）を発する（Ｓ１０）。
【００５４】
電圧低下シグナルの発生により、レジスタ情報４２０の退避が開始される。具体的には、まず、退避部３０２がレジスタ２０５からレジスタ情報４２０を収集する（Ｓ１１）。更に、そのレジスタ情報４２０に"退避データ有り"を示すフラグ値を付加する（Ｓ１２）。
【００５５】
退避部３０２は、フラグ値が付加されたレジスタ情報４２０を、ＦｅＲＡＭ２０２の退避領域へ書き込む(Ｓ１３)。
【００５６】
上記一連の動作により、実行中のプログラムに関するレジスタ情報が不揮発性メモリであるＦｅＲＡＭ２０２に退避される。これにより、処理の中断に備えることができる。その後、電圧供給量の低下によりレジスタ２０５に格納されていたレジスタ情報４２０が消失しても、プログラムの実行に必要な電圧が供給された際には、退避されていたレジスタ情報４２０をレジスタ２０５に復帰させることで、処理を再開することができる。
【００５７】
図６は、実施の形態１のＩＣカード１００において、電圧検出部３００により電圧上昇が検出され、処理が再開される手順を示すフローチャートである。
【００５８】
図６を用いて、退避されていたレジスタ情報４２０がレジスタ２０５に復帰される際のＩＣカード１００の動作を説明する。
【００５９】
図５に示した一連の動作により、レジスタ情報４２０が退避領域４０１に書き込まれた後、ＩＣカード１００は通信外エリアからリーダライタ１０２と通信可能なエリア１１２へ移動する。ＩＣカード１００の電圧検出部３００は、エリア１１２に入ると、供給電圧が閾値Vｈより高い状態が時間Δtだけ継続する状態を検出する。
【００６０】
電圧検出部３００は上記の電圧上昇状態を検出すると、退避部３０２に電圧上昇を知らせるシグナル（以下、「電圧上昇シグナル」という。）を発する（Ｓ２０）。
【００６１】
電圧上昇シグナルの発生により、レジスタ情報４２０の復帰が開始される。具体的には、まず、復帰部３０３は、 "退避データ有り"を示すフラグ値が付加されたレジスタ情報４２０がＦｅＲＡＭ２０２の退避領域４０１に格納されているか否かを確認する。
【００６２】
"退避データ有り"を示すフラグ値が付加されたレジスタ情報４２０が格納されている場合（Ｓ２１でＹｅｓ）、復帰部３０３は、退避領域４０１からそのレジスタ情報４２０を収集する（Ｓ２２）。更に、収集したレジスタ情報４２０をレジスタ２０５へ書き込む（Ｓ２３）。更に、退避領域４０１においてレジスタ情報４２０に付加されている"退避データ有り"を示すフラグ値を消去し、"退避データ無し"の状態に設定する（Ｓ２４）。また、レジスタ情報４２０は退避領域４０１から消去される。
【００６３】
上記一連の動作により、電圧の供給が絶たれる前に退避領域４０１に退避されていたレジスタ情報４２０が、レジスタ２０５に復帰される。復帰後、中断されていた処理が再開される。ＩＣカード１００は、復帰されたレジスタ情報４２０の値を用いたプログラムの実行結果をリーダライタ１０２を介してサーバ１０４へ送信するなどの通信を行ない、一連の処理を完了する。
【００６４】
なお、上記動作中、"退避データ有り"を示すフラグ値が付加されたレジスタ情報４２０が退避領域４０１に格納されていない場合（Ｓ２１でＮｏ）は、そのままレジスタ情報の復帰に係る動作は終了する。
【００６５】
このように、実施の形態１のＩＣカード１００は、供給電圧の低下により、実行中の処理が中断される場合であっても、一定レベル以上の電圧の供給が再開されると、中断された処理を中断される前の状態から再開することができる。つまり、処理を断続的に実行することができる。
【００６６】
なお、本実施の形態では、処理の中断期間を挟み、ＩＣカード１００の直接の通信相手が、リーダライタ１０１からリーダライタ１０２へ切り換わる場合を想定した。
【００６７】
しかしながら、処理の中断期間の前後でＩＣカード１００の通信相手が同じリーダライタであっても、ＩＣカード１００は、レジスタ情報の退避および復帰を行なうことができる。つまり、中断された処理を再開することができる。
【００６８】
また、レジスタ情報４２０のレジスタ２０５への復帰後、レジスタ情報４２０とレジスタ情報４２０に付加されたフラグ値とは退避領域４０１から消去するとしたが、これらは消去しなくてもよい。例えば、レジスタ情報４２０を用いた処理が正常に完了した後に、フラグ値を、「退避データ無し」に設定し、ＦｅＲＡＭ２０２のいずれかの領域に格納しておいてもよい。こうすることで、例えば、処理の中断前のレジスタ情報４２０のバックアップを確保することができる。
【００６９】
また、ＩＣカード１００が備える不揮発性メモリはＦｅＲＡＭであるとしたが、ＦｅＲＡＭでなくてもよい。例えば、ＥＥＰＲＯＭでもよく、電圧の供給が絶たれても、退避された情報を保持しておくことができればよい。
【００７０】
また、電圧検出部３００は、供給電圧が閾値Ｖｈを下回る状態が時間Δｔだけ継続した場合、電圧低下シグナルを発し、閾値Ｖｈを上回る状態が時間Δｔだけ継続した場合、電圧上昇シグナルを発するとした。しかしながら、上記判断の基準の１つである時間Δｔは、電圧低下シグナルを発する場合と、電圧上昇シグナルを発する場合とで同一でなくてもよい。
【００７１】
また、電圧検出部３００は、例えば、供給電圧が閾値Ｖｈを下回った時点で電圧低下シグナルを発してもよく、また、例えば、電圧変化曲線が所定の曲線と近似する場合に、電圧低下シグナルを発してもよい。電圧上昇シグナルを発する場合も同様に、他の判断基準を用いてもよい。更に、これらの判断基準を、実行されるプログラムの種類、ＩＣカード１００が使用される環境などに応じて変化させてもよい。
【００７２】
また、電圧検出部３００は供給電圧の変化から所定の電圧低下状態および所定の電圧上昇状態を検出するとした。しかしながら、例えば、電力または電流の変化から所定の状態を検出してもよい。つまり、プログラムの正常な実行に必要な電圧もしくは電流またはその両方の供給の途絶および安定供給の再開を予め検知できれば、電圧以外の物理量の変化を利用してもよい。
【００７３】
（実施の形態２）
上述の実施の形態１では、ＩＣカード１００が、サーバ１０４から提供される単一のサービスに対応する処理を継続して実行する場合を説明した。実施の形態２では、ＩＣカード１００が、複数のサービスのそれぞれに対応する独立した処理を、それぞれの処理ごとに断続的に実行する場合について説明する。
【００７４】
図７は、実施の形態２のＩＣカード１００の機能的な構成を示す機能ブロック図である。
【００７５】
図７に示すように、実施の形態２のＩＣカード１００は、外部機器との通信Ｉ／Ｆであるアンテナ２０３と、供給電圧の変化を検出する電圧検出部３００と、電圧検出部３００が発する電圧低下シグナルに基づきレジスタ情報をＦｅＲＡＭ２０２に退避させる退避部３０２と、電圧検出部３００が発する電圧上昇シグナルに基づき、退避されたレジスタ情報をレジスタ２０５に復帰させる復帰部３０３と、退避部３０２および復帰部３０３とＦｅＲＡＭ２０２との情報のやり取りを仲介するＩ／Ｆ部３０１と、レジスタ情報を記憶する不揮発性メモリであるＦｅＲＡＭ２０２と、リーダライタとの通信における通信種別を取得する通信種別取得部８００とを備える。
【００７６】
このように、実施の形態２のＩＣカード１００は、実施の形態１のＩＣカード１００が備える構成部に加え、通信種別取得部８００を備えている。
【００７７】
通信種別取得部８００は、具体的には、リーダライタとの通信により通信プロトコルを示す情報であるＴｒａｎｓｐｏｒｔ  Ｔｙｐｅを通信種別として取得する。
【００７８】
図８は、非接触型ＩＣカードにおけるＴｒａｎｓｐｏｒｔ  Ｔｙｐｅの種類を示す図である。
【００７９】
図８に示すように、非接触型ＩＣカードにおけるＴｒａｎｓｐｏｒｔ  Ｔｙｐｅには、主にＴｙｐｅＡ、ＴｙｐｅＢ、ＴｙｐｅＣとあり、それぞれは、物理レイヤーの仕様の違い、つまり、使用する周波数帯の違いにより判別可能である。
【００８０】
本実施の形態では、通信種別取得部８００は、取得したＴｒａｎｓｐｏｒｔ  Ｔｙｐｅをプログラムの種別と対応付けて、退避部３０２および復帰部３０３に通知する。退避部３０２は、通知された情報をレジスタ情報に付加してＦｅＲＡＭ２０２に退避させる。また、復帰部３０３は通知された情報を用い、付加された情報が所定の条件を満たすレジスタ情報をＦｅＲＡＭ２０２の中から選択し復帰させる。
【００８１】
実施の形態２のＩＣカード１００は、上記構成により、互いに異なる複数の処理のそれぞれを断続的に実行することができる。
【００８２】
複数のサービスの提供を受けることができる環境下におけるＩＣカード１００の動作を以下に述べる。
【００８３】
図９は、実施の形態２のＩＣカード１００の使用環境および供給電圧の変化を示す概要図である。
【００８４】
図９に示す使用環境は、交通系のサービスを提供するサーバ１０４と、ネットワーク１０３を介しサーバ１０４と相互に接続されるリーダライタ１０１およびリーダライタ１０２と、公共系のサービスを提供するサーバ７０２と、ネットワーク７０１を介しサーバ７０２と接続されるリーダライタ７００とによって構成される。
【００８５】
また、ＩＣカード１００がリーダライタ１０１と通信可能なエリアをエリア１１０とし、リーダライタ１０２と通信可能なエリアをエリア１１２とし、リーダライタ７００と通信可能なエリアをエリア７０３とする。エリア１１０、エリア１１２およびエリア７０３以外のエリアを通信外エリアという。
【００８６】
サーバ１０４およびサーバ７０２のそれぞれは、ＩＣカード１００にサービスを提供するための少なくとも１個以上のアプリケーションプログラムを有し、そのアプリケーションプログラムを実行する機能を有する。また、サーバ１０４はリーダライタ１０１およびリーダライタ１０２を介し、サーバ７０２はリーダライタ７００を介し、ＩＣカード１００と通信を行なうことにより、それぞれのサービスをＩＣカード１００に提供する。
【００８７】
また、上述のように、サーバ１０４がＩＣカード１００に提供するサービスは交通系のサービスであり、サーバ７０２がＩＣカード１００に提供するサービスは公共系のサービスである。これら公共系のサービスに係る通信の種別と、交通系のサービスに係る通信の種別とは、通信プロトコルにより判別することが可能である。本実施の形態では、公共系のサービスに係る通信の通信プロトコルはＴｙｐｅＢであり、交通系のサービスに係る通信の通信プロトコルはＴｙｐｅＣである。
【００８８】
リーダライタ１０１およびリーダライタ１０２のそれぞれは、少なくとも、サーバ１０４から送信される情報をＩＣカード１００へ送信する機能と、ＩＣカード１００から、サーバ１０４に対するレスポンス、もしくは、要求を受信し、サーバ１０４へ送信する機能を有する。
【００８９】
リーダライタ７００は、少なくとも、サーバ７０２から送信される情報をＩＣカード１００へ送信する機能と、ＩＣカード１００から、サーバ７０２に対するレスポンス、もしくは、要求を受信し、サーバ７０２へ送信する機能を有する。
【００９０】
実施の形態１の使用環境（図３参照）では、ＩＣカード１００を保有するユーザは、サーバ１０４から提供されるサービスのみを利用可能であったが、図９に示す実施の形態２の使用環境では、上述のように、サーバ１０４から提供される交通系のサービスに加え、リーダライタ７００を介してサーバ７０２から提供される公共系のサービスを利用することが出来る。
【００９１】
なお、ＩＣカード１００を保有するユーザは、図９の使用環境において等速で移動しており、エリア１１０、通信外エリア、エリア７０３、通信外エリア、エリア１１２の順に通過すると想定する。また、その移動中にＩＣカード１００がサーバ１０４から提供される交通系のサービスに対応するための処理を、エリア１１０とエリア１１２とにおいて継続して行なう場合を想定する。
【００９２】
上記移動において、ＩＣカード１００は、エリア１１０から通信外エリアに入ると電圧の供給が絶たれ、レジスタ２０５に格納されていた情報は消滅することとなる。そこで、ＩＣカード１００では、電圧の供給が完全に絶たれる前に、退避部３０２がレジスタ情報と通信種別に基づく情報とを対応付けて不揮発性メモリであるＦｅＲＡＭ２０２に退避させる。これにより、サーバ１０４との通信を再開することのできるエリア１１２に入った後に処理を再開することができる。
【００９３】
なお、ＩＣカード１００は、エリア１１２に到達する前に、サーバ７０２と通信することのできるエリア７０３を通過するが、エリア７０３に入った際、サーバ７０２との通信に対応するプログラムの実行が中断されていないか判断される。この判断は、通信種別に基づいて行なわれる。本実施の形態では、サーバ１０４との通信に関係するレジスタ情報のみが退避されており、そのレジスタ情報は復帰されない。また、サーバ７０２から提供される公共系のサービスに対応したプログラムが起動され、そのプログラムによる処理が開始される。
【００９４】
上記処理を完了する前に、ＩＣカード１００がエリア７０３から通信外エリアへ移動すると、エリア１１０から通信外エリアへ移動する場合と同じく、処理が中断され、レジスタ情報がＦｅＲＡＭ２０２に退避される。このとき、中断する直前のレジスタ情報は、エリア１１０から通信外エリアへ移動する際にレジスタ情報が格納された領域とは異なる領域へ格納される。
【００９５】
図１０は、実施の形態２における退避情報のデータ構成の一例と、ＦｅＲＡＭ２０２のメモリマップの一例を示す図である。
【００９６】
退避情報９００は、退避部３０２によりＦｅＲＡＭ２０２に退避される情報であり、図１０に示すように、フラグ値とＴｙｐｅ  Ｉｎｆｏｒｍａｔｉｏｎとを含む識別情報９１０と、レジスタ２０５から収集されたデータ群であるレジスタ情報４２０とが対応付けられた情報である。
【００９７】
フラグ値は、実施の形態１と同じく"退避データ有り"を示す値または"退避データ無し"を示す値であり、退避部３０２により設定される。レジスタ情報４２０がＦｅＲＡＭ２０２に格納される際は、"退避データ有り"を示す"０ｘＡ５Ａ５Ａ５Ａ５"が設定される。
【００９８】
Ｔｙｐｅ  Ｉｎｆｏｒｍａｔｉｏｎは、本発明の半導体メモリカードにおける付加情報の一例であり、レジスタ情報４２０を用いた処理を行なうプログラムを特定するための情報である。本実施の形態では、Ｔｙｐｅ  Ｉｎｆｏｒｍａｔｉｏｎとして通信種別に基づく情報が設定される。
【００９９】
具体的には、通信種別取得部８００がリーダライタとの通信により、"ＴｙｐｅＢ"を取得した場合は、公共アプリケーションプログラム（公共ＡＰ）と対応付けられ、"公共ＡＰ（ＴｙｐｅＢ）"を示す値が設定される。"ＴｙｐｅＣ"を取得した場合は、同様に"交通ＡＰ（ＴｙｐｅＣ）" を示す値が設定される。
【０１００】
ＦｅＲＡＭ２０２は、図１０に示すように、第１退避領域９０１と、第２退避領域９０２と、記憶領域４０２と、スタック領域４０３とを有する。第１退避領域９０１は、ＦｅＲＡＭのアドレス０ｘ００００を先頭アドレスとする所定の領域であり、第２退避領域９０１は、ＦｅＲＡＭのアドレス０ｘ００３Ｃを先頭アドレスとする所定の領域である。
【０１０１】
図１１は、実施の形態２のＩＣカード１００において、電圧検出部３００により所定の電圧低下状態が検出され、実行中の処理を中断するためにレジスタ情報４２０を退避させる手順を示すフローチャートである。
【０１０２】
図１１を用いて、実施の形態２のＩＣカード１００がレジスタ情報４２０を退避させる際の動作を説明する。
【０１０３】
まず、ＩＣカード１００がリーダライタ１０１と通信可能なエリア１１０に存在する場合、ＩＣカード１００は、リーダライタ１０１を介してサーバ１０４と通信し交通系のサービスの提供を受ける。ＩＣカード１００はその通信の開始により交通系のサービスに対応した処理を開始する。
【０１０４】
ＩＣカード１００が処理を完了する前に通信外エリアへ移動すると、ＩＣカード１００の電圧検出部３００は、供給電圧が閾値Vｈより低い状態が時間Δtの間継続している状態を検出する。
【０１０５】
電圧検出部３００は上記の電圧低下状態を検出すると、退避部３０２に電圧低下を知らせるシグナルを発する（Ｓ１０）。
【０１０６】
電圧低下シグナルの発生により、レジスタ情報４２０の退避が開始される。具体的には、まず、退避部３０２がレジスタ２０５からレジスタ情報４２０を収集する（Ｓ１１）。
【０１０７】
退避部３０２は、更に、"退避データ有り"を示すフラグ値と、通信種別取得部８００から通知された通信種別に基づく情報とをレジスタ情報４２０に付加する（Ｓ３２）。具体的には、退避データ有り"を示すフラグ値と"交通ＡＰ（ＴｙｐｅＣ）"を含む識別情報９１０がレジスタ情報４２０に付加される。
【０１０８】
退避部３０２は、識別情報９１０が付加されたレジスタ情報４２０を、第１退避領域９０１へ退避可能か否かを調べる。退避可能な場合（Ｓ３３でＹｅｓ）、識別情報９１０が付加されたレジスタ情報４２０を第１退避領域９０１へ退避させる。第１退避領域９０１に別のレジスタ情報が格納されているなど、退避不可能な場合（Ｓ３３でＮｏ）は、第２退避領域９０２へ退避させる。
【０１０９】
上記一連の動作により、交通系のサービスに対応して動作中であったプログラムに関するレジスタ情報４２０が、そのプログラムを特定するための情報とともに不揮発性メモリであるＦｅＲＡＭ２０２に退避される。
【０１１０】
この後、通信外エリアからエリア７０３に入ると、電圧検出部３００により所定の電圧上昇状態を検出される。更に、起動されるプログラムに対応するレジスタ情報、つまり、復帰させるべきレジスタ情報がＦｅＲＡＭ２０２に格納されている場合、復帰部３０３によりそのレジスタ情報がレジスタ２０５に復帰される。
【０１１１】
図１２は、実施の形態２のＩＣカード１００において、通信種別を利用してレジスタ情報を復帰させる際の手順を示すフローチャートである。
【０１１２】
図１２を用いて、通信種別に基づく判断の下にレジスタ情報４２０を復帰させる際のＩＣカード１００の動作を説明する。図１１を用いて説明した一連の動作により、レジスタ情報４２０が退避領域９０１に書き込まれている場合を想定し、以下の説明を行なう。
【０１１３】
ＩＣカード１００は通信外エリアからリーダライタ７００と通信可能なエリア７０３へ移動する。ＩＣカード１００の電圧検出部３００は、エリア７０３に入ると、供給電圧が閾値Vｈより高い状態が時間Δtだけ継続する状態を検出する。
【０１１４】
電圧検出部３００は上記の電圧上昇状態を検出すると、退避部３０２に電圧上昇を知らせるシグナルを発する（Ｓ２０）。
【０１１５】
電圧上昇シグナルの発生により、レジスタ情報４２０の復帰が開始される。具体的には、まず、通信種別取得部８００により、リーダライタ７００との通信における通信種別が取得される（Ｓ４１）。
【０１１６】
リーダライタ７００は、公共系のサービスを提供するサーバ７０２とＩＣカード１００との通信を中継する端末であり、通信プロトコルはＴｙｐｅＢである。従って、通信種別取得部８００により"ＴｙｐｅＢ"が取得される。通信種別取得部８００はＴｙｐｅＢと、対応するプログラム種別である"公共ＡＰ"とを対応付け"公共ＡＰ（ＴｙｐｅＢ）"を示す情報を復帰部３０３に通知する。
【０１１７】
復帰部３０３は、"公共ＡＰ（ＴｙｐｅＢ）"が付加されたレジスタ情報が第１退避領域９０１または第２退避領域９０２に格納されているか否かを調べる。
【０１１８】
本実施の形態においては、第１退避領域９０１に格納されているレジスタ情報４２０は、"交通ＡＰ（ＴｙｐｅＣ）"が付加されたものである。従って、復帰させるべきレジスタ情報は存在しないと判断する（Ｓ４２でＮｏ）。復帰させるべきレジスタ情報がないと判断すると、レジスタ情報の復帰に係る動作は終了する。
【０１１９】
その後、サーバ７０２から提供される公共系のサービスに対応するプログラムが起動され、処理が開始される。その処理の完了前に、エリア７０３から通信外エリアへ移動すると、処理が中断され、レジスタ情報がＦｅＲＡＭ２０２に退避される。このとき、ＦｅＲＡＭ２０２の第１退避領域９０１には、サーバ１０４との通信に対応するレジスタ情報４２０が格納されている。そのため、サーバ７０２との通信に対応するレジスタ情報は第２退避領域９０２へ退避される。
【０１２０】
このように、第１退避領域９０１にサーバ１０４との通信に対応するレジスタ情報４２０が格納され、第２退避領域９０２にサーバ７０２との通信に対応するレジスタ情報が格納されている状態で、ＩＣカード１００がエリア１１２に移動した際の動作を、図１２を用いて説明する。
【０１２１】
ＩＣカード１００の電圧検出部３００により所定の電圧上昇状態が検出され、電圧上昇シグナルが発せられる（Ｓ２０）。これにより以下に示すレジスタ情報４２０の復帰処理が開始される。
【０１２２】
通信種別取得部８００は、リーダライタ１０２との通信における通信種別を取得する。リーダライタ１０２は、交通系のサービスを提供するサーバ１０４とＩＣカード１００との通信を中継する端末であり、通信プロトコルはＴｙｐｅＣである。従って、通信種別取得部８００により"ＴｙｐｅＣ"が取得される。通信種別取得部８００はＴｙｐｅＣと対応するプログラム種別と対応付け"交通ＡＰ［ＴｙｐｅＣ］"を示す情報を復帰部３０３に通知する。
【０１２３】
復帰部３０３は、"交通ＡＰ［ＴｙｐｅＣ］"が付加されたレジスタ情報４２０が第１退避領域９０１または第２退避領域９０２に格納されているか否かを調べる。
【０１２４】
本実施の形態では、第１退避領域９０１に "交通ＡＰ［ＴｙｐｅＣ］"が付加されたレジスタ情報４２０、つまり復帰させるべきレジスタ情報が存在し（Ｓ４２でＹｅｓ）、復帰部３０３は、第１退避領域９０１からそのレジスタ情報４２０を収集する（Ｓ４３）。更に、収集したレジスタ情報４２０をレジスタ２０５へ書き込む（Ｓ４４）。
【０１２５】
なお、復帰させるべきレジスタ情報が存在しない場合（Ｓ４２でＮｏ）、レジスタ情報に係る動作を終了する。
【０１２６】
上記一連の動作により、ＩＣカード１００は、エリア１１０から外れることで中断されていた交通系のサービスに対応する処理を再開することができる。ＩＣカード１００は、復帰されたレジスタ情報４２０を用いたプログラムの実行結果をリーダライタ１０２を介してサーバ１０４へ送信するなどの通信を行ない、一連の処理を完了する。
【０１２７】
なお、第２退避領域９０２に格納されているレジスタ情報は、ＩＣカード１００が、エリア７０３のようにサーバ７０２と通信可能なエリアへ移動すると、レジスタ２０５に復帰される。更に、このレジスタ情報が用いられ、公共系のサービスに対応した処理が再開されることとなる。この処理の再開の際のＩＣカード１００の動作は、上述の交通系のサービスに対応する処理の再開の際の動作と同様である。
【０１２８】
このように、実施の形態２のＩＣカード１００は、実施の形態１のＩＣカード１００と同じく、中断された処理を中断時の状態から再開することができる。つまり、処理を継続して行なうことができる。また、実施の形態２のＩＣカード１００では、２つの独立したレジスタ情報を別々に格納することができ、それぞれのレジスタ情報には通信種別に基づく情報が付加される。
【０１２９】
これにより、電圧の供給が再開した際に、起動されるプログラムに対応するレジスタ情報を正しく選択し、復帰させることができる。また、ＦｅＲＡＭ２０２に退避されているレジスタ情報が、起動されるプログラムに対応しないものである場合、そのレジスタ情報は格納されたままにされる。これにより、中断された処理を中断された時点の状態で維持することができる。また、２つの独立した処理のそれぞれをこのように中断された時点の状態で維持することができる。これにより、それぞれの処理を断続的に実行することができる。
【０１３０】
なお、本実施の形態では、サーバ１０４およびサーバ７０２から提供される交通系のサービスおよび公共系のサービスに対応するそれぞれの処理をＩＣカード１００が断続的に実行する場合を説明した。
【０１３１】
しかしながら、ＩＣカード１００が処理する内容は、交通系等のサービスの種別に限定されることはなく、また、３つ以上の独立した処理を行なわせてもよい。
【０１３２】
この場合、ＩＣカード１００は、それら処理に対応する実行可能なプログラムを有しておき、ＦｅＲＡＭ２０２は必要なだけ退避領域を有しておけばよい。これにより、より多くの数の独立した処理のそれぞれを断続的に実行することができる。
【０１３３】
また、通信種別取得部８００は、取得した通信種別とプログラムの種別とを対応付けて退避部３０２および復帰部３０３に通知するとした。しかしながら、通信種別のみを通知してもよい。つまり、再開される処理、具体的には起動されるプログラムを特定できるのであれば通信種別のみでもよい。
【０１３４】
また、通信種別取得部８００は、電力供給を受けた際に判別可能な通信種別を先行して通知し、その後、必要に応じてプログラムの種別を通知するとしてもよい。この場合、例えば、新たに開始された通信の通信種別が"ＴｙｐｅＢ"であり、かつ、退避されているレジスタ情報４２０が"ＴｙｐｅＣ"と対応付けられたものであれば、レジスタ情報４２０の復帰処理が不要であると判定できる。つまり、プログラム種別が何であるかの解析等を行なう必要がない場合が存在し、レジスタ情報の復帰に係る処理の速度を向上させることができる。
【０１３５】
また、通信種別以外の情報を利用し、復帰させるべきレジスタ情報の存在の確認および選択を行なってもよい。つまり、ＩＣカード１００において実行が中断され再開されるプログラムを特定できる情報であれば通信種別以外の情報を利用してもよい。
【０１３６】
図１３は、復帰させるべきレジスタ情報の特定に利用可能な情報の種類を例示する図である。図１３に示す各種の情報のそれぞれ、または、それぞれの組み合わせからなる情報は、本発明の半導体メモリカードにおける付加情報の一例である。
【０１３７】
図１３に示すように、復帰させるべきレジスタ情報の特定に利用する情報は、通信種別である通信プロトコルを示すＴｒａｎｓｐｏｒｔ  Ｔｙｐｅ以外の情報でもよい。
【０１３８】
例えば、通信プロトコルそのものでなく、通信プロトコルを特定できる情報である通信プロトコル長を示すＴｒａｎｓｐｏｒｔ  ｉｎｆｏ  ｌｅｎｇｔｈや、通信プロトコルに関する情報を示すＴｒａｎｓｐｏｒｔ  Ｉｎｆｏｒｍａｔｉｏｎを利用してもよい。
【０１３９】
また、アプリケーションプログラムの識別子を示すＡｐｐｌｉｃａｔｉｏｎ  ＩＤ、アプリケーションプログラムの種別を示すＡｐｐｌｉｃａｔｉｏｎ  Ｔｙｐｅや、中断と再開とを複数回繰り返す処理をバージョン管理するための情報であるＲｅｓｕｍｅ  Ｖｅｒｓｉｏｎを利用してもよい。
【０１４０】
本実施の形態のＩＣカード１００は、通信種別を取得するために通信種別取得部８００を備えているが、上述の、通信種別以外の情報を取得して利用する場合、通信種別取得部８００に換えて、または、通信種別取得部８００に加えて、他の情報を取得するための取得部を備えればよい。
【０１４１】
例えば、Ａｐｐｌｉｃａｔｉｏｎ  ＩＤを利用する場合、リーダライタとの通信、または、実行中のプログラム自身からＡｐｐｌｉｃａｔｉｏｎ  ＩＤを取得するＩＤ取得部を備えればよい。
【０１４２】
退避部３０２は、電圧検出部３００から電圧低下シグナルを受け取ると、ＩＤ取得部により取得された、実行中のプログラムを特定する情報であるＡｐｐｌｉｃａｔｉｏｎ  ＩＤをレジスタ情報に付加してＦｅＲＡＭ２０２に退避させる。その後、復帰部３０３は、電圧検出部３００から電圧上昇シグナルを受け取るとともに、リーダライタとの通信内容からＩＤ取得部が取得したＡｐｐｌｉｃａｔｉｏｎ  ＩＤを受け取る。復帰部３０３は、受け取ったＡｐｐｌｉｃａｔｉｏｎ  ＩＤが付加されたレジスタ情報をＦｅＲＡＭ２０２の中から読出し、レジスタ２０５に復帰させる。
【０１４３】
復帰されたレジスタ情報は、起動するプログラムに対応するものであり、中断されていた処理が、そのレジスタ情報を用いて再開される。
【０１４４】
このように、通信種別以外の情報を利用した場合であっても、中断した処理を再開させることができる。つまり、処理を断続的に実行することができる。
【０１４５】
また、図１３に示す複数の種類の情報それぞれをレジスタ情報に直接付加するのではなく、対応付けられた別の情報を付加させてもよい。例えば、Ａｐｐｌｉｃａｔｉｏｎ  ＩＤを直接レジスタ情報に付加するのではなく、Ａｐｐｌｉｃａｔｉｏｎ  ＩＤに対応するプログラム名を付加してもよい。この場合、その対応付けをＦｅＲＡＭ２０２の所定の領域に格納しておけばよい。つまり、ＩＣカード１００がリーダライタとの通信により得られた情報が、レジスタ情報４２０に付加された情報に実質的に含まれているか否かの判断ができればよい。
【０１４６】
また、複数の種類の情報を組み合わせてレジスタ情報４２０に付加させてもよい。この場合、ＩＣカード１００は、リーダライタとの通信内容からその複数の種類の情報を取得し、更に、取得した複数の種類の情報の全てが付加されたレジスタ情報４２０を復帰させるとしてもよい。これにより、例えば、復帰させるべきレジスタ情報４２０の特定をより厳密に行なうことができる。
【０１４７】
（実施の形態３）
実施の形態３として、実施の形態１および２のＩＣカード１００のセキュリティを向上させるための構成について説明を行なう。ＩＣカード１００のセキュリティを向上させることにより、秘匿性の高い情報の処理を断続的に、かつ、より安全に実行することができる。なお、具体的な説明および図示は実施の形態２のＩＣカード１００を基礎として行なう。また、実施の形態３のＩＣカード１００の使用環境は、実施の形態１または実施の形態２と同じである。
【０１４８】
図１４は、実施の形態３のＩＣカード１００の機能的な構成を示す機能ブロック図である。
【０１４９】
図１４に示すように、実施の形態３のＩＣカード１００は、外部機器との通信Ｉ／Ｆであるアンテナ２０３と、供給電圧の変化を検出する電圧検出部３００と、電圧検出部３００が発する電圧低下シグナルに基づきレジスタ情報をＦｅＲＡＭ２０２に退避させる退避部３０２と、電圧検出部３００が発する電圧上昇シグナルに基づき、退避されたレジスタ情報をレジスタ２０５に復帰させる復帰部３０３と、退避部３０２および復帰部３０３とＦｅＲＡＭ２０２との情報のやり取りを仲介するＩ／Ｆ部３０１と、レジスタ情報を記憶する不揮発性メモリであるＦｅＲＡＭ２０２と、リーダライタとの通信における通信種別を取得する通信種別取得部８００とを備える。
【０１５０】
ＦｅＲＡＭ２０２は、破壊読出し領域と非破壊読出し領域とで構成されている。破壊読出し領域とは、データが読み出された後に読み出されたデータの補充が行なわれず、データが残らない領域のことである。ＦｅＲＡＭ２０２の構成については、図１７を用いて後述する。
【０１５１】
また、退避部３０２は、退避判断部３０４を有する。退避判断部３０４は、実行が中断されるプログラムが利用する暗号の暗号化強度に基づき、レジスタ情報を破壊読出し領域と非破壊読出し領域とのどちらに退避させるかを判断する処理部である。
【０１５２】
このように、実施の形態３のＩＣカード１００は、特徴的な構成部として、実施の形態２のＩＣカード１００が備える構成部に加え退避判断部３０４を備えている。
【０１５３】
退避判断部３０４は、実行が中断されるプログラムが利用する暗号の暗号化強度が所定の強度以上であれば、ＦｅＲＡＭ２０２の破壊読出し領域に退避させる。
【０１５４】
暗号化強度が所定の強度以上であるということは、そのプログラムが扱うデータの秘匿性が高いと考えられる。そのため、レジスタ情報を破壊読出し領域に退避させる。これにより、秘匿性が高いと考えられるレジスタ情報がＩＣカード１００外に読み出される危険性を低くすることができる。つまりＩＣカード１００のセキュリティを向上させることができる。
【０１５５】
暗号化強度を特定するための情報として本実施の形態では、暗号化方式を示す情報であるＣｏｎｄｉｔｉｏｎａｌ  Ａｃｃｅｓｓ（ＣＡ）  Ｔｙｐｅを利用する。
【０１５６】
図１５は、暗号に関する３種類の情報を示す図である。ＣＡ  Ｔｙｐｅは、本発明の半導体メモリカードにおける暗号情報の一例であり、暗号化強度を示す情報である。具体的には、ＣＡ  Ｔｙｐｅにより、暗号化方式を示すＣＡ種別が特定され、ＣＡ種別により暗号化強度が特定される。ＣＡ  Ｋｅｙ  ｌｅｎｇｔｈは、暗号化に用いる鍵の長さを示す情報であり、ＣＡ  Ｋｅｙは、鍵そのものを示す情報である。
【０１５７】
図１６は、ＣＡ  Ｔｙｐｅの種類を示す図である。代表的なＣＡ  Ｔｙｐｅとして、Ｓｉｎｇｌｅ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（Ｓｉｎｇｌｅ  ＤＥＳ）方式を示すＭ＿ＣＡ＿ＤＥＳと、Ｔｒｉｐｌｅ  ＤＥＳ（３ＤＥＳ）方式を示すＭ＿ＣＡ＿３ＤＥＳと、ＲＳＡ方式を示すＭ＿ＣＡ＿ＲＳＡとがある。これら暗号化方式は、Ｓｉｎｇｌｅ  ＤＥＳ、３ＤＥＳ、ＲＳＡの順に暗号化強度が強くなる。なお、ＮＯ＿ＵＳＥは暗号化なし、つまり、処理を実行するプログラムが暗号を利用してないことを示すＣＡ  Ｔｙｐｅである。
【０１５８】
これらＣＡ  Ｔｙｐｅには、それぞれ図に示す値が割り当てられており、ＩＣカード１００において実行されるプログラムはこの値を有している。図１４に示すＩＣカード１００の退避判断部３０４は、レジスタ情報を退避させる際に、実行が中断されるプログラムからこの値を読出し、そのプログラムが利用する暗号化方式を特定する。更に、本実施の形態では、暗号化強度が、３ＤＥＳの暗号化強度より高い場合、レジスタ情報をＦｅＲＡＭ２０２の破壊読出し領域に退避させる。
【０１５９】
つまり、実行が中断されるプログラムが利用する暗号化方式が、３ＤＥＳまたはＲＳＡであれば、退避部３０２は、退避判断部３０４の判断により、レジスタ情報をＦｅＲＡＭ２０２の破壊読出し領域に退避させることとなる。
【０１６０】
図１７は、実施の形態３における退避情報のデータ構成の一例と、ＦｅＲＡＭ２０２のメモリマップの一例を示す図である。
【０１６１】
退避情報９５０は、退避部３０２によりＦｅＲＡＭ２０２に退避される情報であり、図１７に示すように、フラグ値とＴｙｐｅ  ＩｎｆｏｒｍａｔｉｏｎとＣＡ  Ｔｙｐｅとを含む識別情報９２０と、レジスタ２０５から収集されたデータ群であるレジスタ情報４２０とが対応付けられた情報である。
【０１６２】
フラグ値は、実施の形態１および２と同じく"退避データ有り"を示す値または"退避データ無し"を示す値であり、ＦｅＲＡＭ２０２に退避される際には"退避データ有り"を示す値に設定される。
【０１６３】
Ｔｙｐｅ  Ｉｎｆｏｒｍａｔｉｏｎは、レジスタ情報４２０を用いた処理を行なうプログラムを特定するための情報であり、実施の形態２と同じく通信種別に基づく情報である。
【０１６４】
ＣＡ  Ｔｙｐｅは、上述のように実行が中断されたプログラムが利用する暗号化方式を示す情報である。暗号化なし、Ｓｉｎｇｌｅ  ＤＥＳ、３ＤＥＳ、ＲＳＡのいずれかを示す値が退避判断部３０４によりプログラムから読み出され、レジスタ情報４２０にＣＡ  Ｔｙｐｅとして付加される。
【０１６５】
ＦｅＲＡＭ２０２は、図１７に示すように、破壊読出し領域２０２ａと非破壊読み出し領域２０２ｂとから構成される。破壊読出し領域２０２ａは第１退避領域９１１を有し、非破壊読み出し領域２０２ｂは、第２退避領域９１２と、記憶領域４０２と、スタック領域４０３とを有する。
【０１６６】
図１８は、本実施の形態におけるＦｅＲＡＭ２０２の破壊読出し領域２０２ａおよび非破壊読出し領域２０２ｂのアドレスを示す図である。破壊読出し領域２０２ａおよび非破壊読出し領域２０２ｂのそれぞれは、図１８に示すように、ＦｅＲＡＭ２０２のメモリ空間の連続するアドレスに存在する。
【０１６７】
上述のように、レジスタ情報４２０に付加されたＣＡ  Ｔｙｐｅが３ＤＥＳまたはＲＳＡを示す値であれば、レジスタ情報４２０は、破壊読出し領域２０２ａに存在する第１退避領域９１１に退避される。また、ＣＡ  Ｔｙｐｅが３ＤＥＳまたはＲＳＡ以外を示す値であれば、非破壊読出し領域２０２ｂに存在する第２退避領域９１２に退避される。
【０１６８】
図１９は、実施の形態３のＩＣカード１００において、電圧検出部３００により所定の電圧低下状態が検出され、実行中の処理を中断するためにレジスタ情報４２０を退避させる手順を示すフローチャートである。
【０１６９】
図１９を用いて、実施の形態３のＩＣカード１００がレジスタ情報４２０を退避させる際の動作を説明する。
【０１７０】
上述の実施の形態１および２と同様に、電圧検出部３００が所定の電圧低下状態を検出し、電圧低下シグナルを発する（Ｓ１０）。これによりレジスタ情報の退避が開始され、退避部３０２によりレジスタ２０５からレジスタ情報４２０が収集される（Ｓ１１）。
【０１７１】
退避判断部３０４は、実行を中断されるプログラムからＣＡ  Ｔｙｐｅを読み出す。退避部３０２は、レジスタ情報４２０に"退避データ有り"を示すフラグ値と、通信種別取得部８００により取得された通信種別と、暗号化方式を示すＣＡ  Ｔｙｐｅとを付加する（Ｓ５２）。
【０１７２】
退避判断部３０４は、読み出したＣＡ  Ｔｙｐｅによって特定される暗号化方式の暗号化強度が所定の強度以上であるか否かにより、レジスタ情報４２０を退避させる領域を判断する。
【０１７３】
具体的には、暗号化方式が３ＤＥＳまたはＲＳＡである場合（Ｓ５３でＹｅｓ）、レジスタ情報４２０をＦｅＲＡＭ２０２の破壊読出し領域２０２ａにある第１退避領域９１１に退避させると判断する。退避部３０２は、この判断に従い、フラグ値等が付加されたレジスタ情報４２０を第１退避領域９１１に退避させる（Ｓ５４）。
【０１７４】
また、３ＤＥＳもしくはＲＳＡ以外の暗号化方式である場合、または、暗号化なしである場合（Ｓ５３でＮｏ）、レジスタ情報４２０をＦｅＲＡＭ２０２の非破壊読出し領域２０２ｂにある第２退避領域９１２に退避させると判断する。退避部３０２は、この判断に従い、フラグ値等が付加されたレジスタ情報４２０を第２退避領域９１２（Ｓ５５）に退避させる。
【０１７５】
上記一連の動作により、実行中のプログラムに関するレジスタ情報が、不揮発性メモリであるＦｅＲＡＭ２０２に退避される。
【０１７６】
ＩＣカード１００は、実施の形態１および２の説明で述べたように、複数の処理のそれぞれを断続的に実行することが可能であり、ＦｅＲＡＭ２０２は複数のレジスタ情報を格納しておくことができる。本実施の形態では、更に、レジスタ情報の退避前に、プログラムの暗号化強度を特定し、暗号化強度が高く、重要性が高いと考えられるレジスタ情報を優先的に破壊読出し領域に退避させることができる。
【０１７７】
一般にＩＣカードがリーダライタと通信を開始する際、ＩＣカードとリーダライタとの間で暗号化処理を伴う認証処理が行なわれる。また、その暗号化処理についての情報を含む認証処理の情報もレジスタ情報に含まれる。そのため、レジスタ情報を破壊読出し領域２０２ａに退避させることはＩＣカード１００のセキュリティ向上の観点から有益である。
【０１７８】
なお、本実施の形態において、レジスタ情報４２０を退避させる際、ＣＡ  Ｔｙｐｅを付加するとしたが、ＣＡ  Ｔｙｐｅを付加させなくてもよい。レジスタ情報４２０を退避させる前に、退避判断部３０４がＣＡ  Ｔｙｐｅに基づき退避させる領域を判断できればよく、この判断後に破棄してもよい。
【０１７９】
また、レジスタ情報４２０に付加され退避されたＣＡ  Ｔｙｐｅを、レジスタ情報４２０を復帰させる際に利用してもよい。例えば、レジスタ情報を復帰させる際、付加されているＣＡ  Ｔｙｐｅを確認し、３ＤＥＳより高い暗号化強度を有する暗号化方式である場合、リーダライタの認証を行なってからレジスタ情報を復帰させてもよい。
【０１８０】
レジスタ情報４２０を復帰させる際にＣＡ  Ｔｙｐｅを利用するための構成については実施の形態４として後述する。
【０１８１】
また、ＣＡ  Ｔｙｐｅによって特定される暗号化強度が所定の強度以上である場合、レジスタ情報をＦｅＲＡＭ２０２の破壊読出し領域２０２ａにある第１退避領域９１１に退避させるとした。
【０１８２】
しかしながら、例えば、第１退避領域９１１が十分に大きい場合など、レジスタ情報を常に第１退避領域９１１に退避させてもよい。または、通常は第１退避領域９１１にレジスタ情報を退避させ、第１退避領域９１１の残量が所定の容量以下になった場合にのみ、上述のＣＡ  Ｔｙｐｅに基づく判断を行ない、秘匿性が高いと認められるレジスタ情報のみを第１退避領域９１１に退避させるとしてもよい。このように、ＩＣカード１００のリソースに応じてセキュリティの向上を図ることができる。
【０１８３】
また、退避させる退避領域の判断にＣＡ  Ｔｙｐｅを使用したが、Ｃａ  Ｔｙｐｅ以外の情報を利用してもよい。例えば、図１５に示すＣＡ  Ｋｅｙ  ｌｅｎｇｔｈでもよい。ＣＡ  Ｋｅｙ  ｌｅｎｇｔｈは鍵長を示す情報であり、鍵長が長いほど暗号化強度が高いといえる。そこで、ＣＡ  Ｋｅｙ  ｌｅｎｇｔｈが所定の長さ以上の鍵長を示す場合、対応するレジスタ情報を破壊読出し領域２０２ａに退避させるとしてもよい。さらに、これらの情報を複合させて、レジスタ情報を破壊読出し領域２０２ａに退避させるか否かの判断を行なってもよい。
【０１８４】
また、ＣＡ  Ｔｙｐｅが３ＤＥＳまたはＲＳＡの場合、レジスタ情報を破壊読出し領域２０２ａに退避させるとしたが、別の判断基準でもよい。例えば、ＣＡ  ＴｙｐｅがＲＳＡの場合のみ、レジスタ情報を破壊読出し領域２０２ａに退避させるとしてもよい。また、例えば、ＤＥＳより暗号化強度の高い暗号化方式を示すＣＡ  Ｔｙｐｅであれば、レジスタ情報を破壊読出し領域２０２ａに退避させるとしてもよい。
【０１８５】
また、退避判断部３０４が、ＣＡ  Ｔｙｐｅにより特定される暗号化強度が所定の強度以上であるかを判断するのは、レジスタ情報にフラグ値等が付加された後でなくてもよい。例えば、電圧検出部３００により電圧低下シグナルが発せられる前でもよい。この場合、その判断結果を所定の記憶領域に記憶させておけばよい。レジスタ情報を退避させる前に、その判断結果を用い、レジスタ情報を破壊読出し領域２０２ａに退避させるか否かの判断が可能であればよい。
【０１８６】
このように、ＩＣカード１００のユーザの利用形態や、実行されるプログラムの種類等に応じ、レジスタ情報を破壊読出し領域２０２ａに退避させるか否かの判断に利用する情報の種別および判断基準を変更してもよい。また、処理手順も上述の実施の形態で説明した手順以外でもよい。こうすることで、例えば、ＩＣカード１００が扱う情報の秘匿性に応じたセキュリティ対策を施すことができる。また、これら変更により、処理を断続的に実行できるというＩＣカード１００の特徴は失われるもではない。
【０１８７】
（実施の形態４）
実施の形態３では、レジスタ情報を退避させる際に暗号化強度を示す情報を利用し、実施の形態１および２のＩＣカード１００のセキュリティを向上させる構成について説明した。
【０１８８】
実施の形態４では、レジスタを復帰させる際に暗号化強度を示す情報を利用し、ＩＣカード１００のセキュリティを向上させる構成について説明する。
【０１８９】
つまり、実施の形態４のＩＣカード１００においても実施の形態３と同様に、秘匿性の高い情報の処理を断続的に、かつ、より安全に実行することができる。
【０１９０】
なお、具体的な説明および図示は実施の形態２のＩＣカード１００を基礎として行なう。また、実施の形態４のＩＣカード１００の使用環境は、実施の形態１または実施の形態２と同じである。
【０１９１】
図２０は、実施の形態４のＩＣカード１００の機能的な構成を示す機能ブロック図である。
【０１９２】
なお、ＦｅＲＡＭ２０２には、図１７に示した、ＣＡ  Ｔｙｐｅが付加されたレジスタ情報４２０が格納されると想定する。ＣＡ  Ｔｙｐｅは、退避部３０２により、実行を中断されるプログラムから取得され、レジスタ情報に付加される。
【０１９３】
図２０に示すように、実施の形態４のＩＣカード１００は、外部機器との通信Ｉ／Ｆであるアンテナ２０３と、供給電圧の変化を検出する電圧検出部３００と、電圧検出部３００が発する電圧低下シグナルに基づきレジスタ情報をＦｅＲＡＭ２０２に退避させる退避部３０２と、電圧検出部３００が発する電圧上昇シグナルに基づき、退避されたレジスタ情報をレジスタ２０５に復帰させる復帰部３０３と、退避部３０２および復帰部３０３とＦｅＲＡＭ２０２との情報のやり取りを仲介するＩ／Ｆ部３０１と、レジスタ情報を記憶する不揮発性メモリであるＦｅＲＡＭ２０２と、リーダライタとの通信における通信種別を取得する通信種別取得部８００とを備える。
【０１９４】
また、復帰部３０３は、認証部３０５と復帰判断部３０６とを有する。復帰判断部３０６は、レジスタ情報に付加されＦｅＲＡＭ２０２に退避されたＣＡ  Ｔｙｐｅに基づき、認証処理を行なうか否かを判断する処理部である。認証部３０５は、復帰判断部３０６の判断に従い、リーダライタとの間で認証処理を実行する処理部である。
【０１９５】
このように、実施の形態４のＩＣカード１００は、特徴的な構成部として、実施の形態２のＩＣカード１００が備える構成部に加え、認証部３０５と復帰判断部３０６とを備えている。
【０１９６】
復帰判断部３０６は、復帰対象のレジスタ情報に付加されたＣＡ  Ｔｙｐｅから暗号化強度を特定する。特定した暗号化強度が所定の強度以上であれば、認証部３０５がリーダライタの認証を行なう。復帰部３０３は、認証部３０５による認証が成功した場合のみ、そのレジスタ情報を復帰させる。
【０１９７】
具体的には、本実施の形態においては、ＣＡ  Ｔｙｐｅが示す暗号化方式が３ＤＥＳまたはＲＳＡである場合、リーダライタの認証を行なう。
【０１９８】
なお、一般に、ＩＣカードとリーダライタとは、通信を開始する際、相互を認証するための処理を実効する。ＩＣカード１００においても、リーダライタとの通信の開始の際に、認証処理が実行される。さらに、処理の中断前に、認証処理に関する情報もレジスタ情報に含められ退避される。そのため、再度の認証処理を行なわずに、退避されたレジスタ情報に含まれる認証処理に関する情報を利用し、中断していた処理を再開することは可能である。
【０１９９】
しかしながら、実施の形態４のＩＣカード１００は、レジスタ情報に付加されているＣＡ  Ｔｙｐｅが所定の強度以上の暗号化方式を示す場合、リーダライタに対する認証処理を実行する。認証が成功した場合、つまり、リーダライタの正当性を確認することができた場合のみレジスタを復帰させる。これにより、ＩＣカード１００のセキュリティを向上させることができる。
【０２００】
なお、リーダライタとの間の認証処理を実行する構成部はＩＣカードに本来備えられており、図示および説明は省略したが実施の形態１〜３のＩＣカード１００においても備えられている。
【０２０１】
図２１は、実施の形態４のＩＣカード１００において、ＣＡ  Ｔｙｐｅを利用してレジスタ情報を復帰させる手順を示すフローチャートである。
【０２０２】
図２１を用いて、ＣＡ  Ｔｙｐｅに基づく判断の下にレジスタ情報４２０を復帰させる際のＩＣカード１００の動作を説明する。
【０２０３】
上述の実施の形態１および２と同様に、電圧検出部３００が所定の電圧上昇状態を検出し、電圧上昇シグナルを発する（Ｓ２０）。これによりレジスタ情報の復帰が開始され、まず、通信種別取得部８００により、リーダライタ７００との通信における通信種別が取得される（Ｓ４１）。復帰部３０３は、フラグ値が"退避データ有り"を示す値であり、かつ、取得された通信種別に対応するレジスタ情報４２０がＦｅＲＡＭ２０２に格納されているか否かを調べる。
【０２０４】
上記条件に該当するレジスタ情報４２０が格納されている場合（Ｓ４２でＹｅｓ）、復帰判断部３０６は、そのレジスタ情報４２０に付加されているＣＡ  Ｔｙｐｅを参照し、ＣＡ  Ｔｙｐｅが３ＤＥＳまたはＲＳＡを示す値であるか否かを確認する。３ＤＥＳまたはＲＳＡを示す値である場合（Ｓ６３でＹｅｓ）、認証処理の実行を認証部３０５に指示する。
【０２０５】
認証部３０５は、リーダライタの認証を行なう（Ｓ６４）。認証が成功すると（Ｓ６５でＹｅｓ）、復帰部３０３は、ＦｅＲＡＭ２０２からレジスタ情報４２０を収集し（Ｓ６６）、レジスタ２０５へ書き込む（Ｓ６７）。
【０２０６】
上記一連の動作により、レジスタ情報４２０はレジスタ２０５へ復帰され、処理が再開される。
【０２０７】
なお、復帰させるべきレジスタ情報４２０がＦｅＲＡＭ２０２に格納されていない場合（Ｓ４２でＮｏ）、および、認証部３０５による認証が成功しなかった場合（Ｓ６５でＮｏ）は、レジスタ情報の復帰は行なわれることなく、レジスタ情報の復帰に係る動作は終了する。
【０２０８】
また、復帰させるべきレジスタ情報４２０がＦｅＲＡＭ２０２に格納されている（Ｓ４２でＹｅｓ）が、そのレジスタ情報に付加されたＣＡ  Ｔｙｐｅが３ＤＥＳまたはＲＳＡを示す値でない場合は、認証は行われず、レジスタ情報４２０の収集（Ｓ６６）へ進む。ＣＡ  Ｔｙｐｅがレジスタ情報４２０に付加されていない場合も同じである。
【０２０９】
このように、実施の形態４のＩＣカード１００は、中断された処理を再開する際、つまり退避されているレジスタ情報を復帰させる際、そのレジスタ情報に付加されたＣＡ  Ｔｙｐｅから暗号化強度を特定する。特定した暗号化強度が所定の強度以上である場合、リーダライタの認証を行なう。認証が成功すると、つまり、直接の通信相手であるリーダライタの正当性を確認することができると、レジスタ情報を復帰させる。
【０２１０】
例えばＣＡ  ＴｙｐｅがＲＳＡを示す値である場合、そのＣＡ  Ｔｙｐｅが付加されたレジスタ情報は、秘匿性の高い情報であると考えられる。そこで、ＩＣカード１００は、通信相手のリーダライタの正当性を確認した上で、レジスタ情報を復帰させ処理を再開する。これにより、不正にレジスタ情報が読み出される、または利用されることを防ぐことができる。つまり、ＩＣカード１００のセキュリティを向上させることができる。
【０２１１】
なお、本実施の形態において、処理の再開前にリーダライタの認証を行なうか否かの判断にＣＡ  Ｔｙｐｅを利用したが、ＣＡ  Ｔｙｐｅ以外の情報を利用してもよい。例えば、図１５に示すＣＡ  Ｋｅｙ  ｌｅｎｇｔｈを利用してもよい。実施の形態３の説明で述べたように、ＣＡ  Ｋｅｙ  ｌｅｎｇｔｈは鍵長を示す情報であり、鍵長が長いほど暗号化強度が高いといえる。そこで、復帰させるべきレジスタ情報に付加されたＣＡ  Ｋｅｙ  ｌｅｎｇｔｈが所定の長さ以上の鍵長を示す場合、上記認証処理を行なってもよい。更に、これらの情報を複合させてレジスタ情報に付加して退避させておき、複合された情報により、上記認証処理を行なうか否かを判断してもよい。
【０２１２】
また、ＣＡ  Ｔｙｐｅが３ＤＥＳまたはＲＳＡの場合、リーダライタの認証を行なうとしたが、別の基準で判断してもよい。例えば、ＣＡ  ＴｙｐｅがＲＳＡの場合のみ、認証処理を行なうとしてもよく、また、例えば、ＤＥＳより暗号化強度の高い暗号化方式を示すＣＡＴｙｐｅであれば、認証処理を行なうとしてもよい。
【０２１３】
また、ＣＡ  Ｔｙｐｅが何であるかに関わらず、処理の再開前には常にリーダライタの認証を行なうとしてもよい。
【０２１４】
このように、処理の再開前の認証処理を行なうか否かの判断に利用する情報の種別、および判断基準は、本実施の形態で用いたもの以外でよい。こうすることで、例えば、ＩＣカード１００が扱う情報の秘匿性に応じたセキュリティ対策を施すことができる。また、これら変更により、処理を断続的に実行できるというＩＣカード１００の特徴は失われるもではない。
【０２１５】
また、本実施の形態のＩＣカード１００の特徴に、実施の形態３のＩＣカード１００の特徴を加えてもよい。具体的には、図２０に示す本実施の形態のＩＣカード１００の構成に、図１４に示す実施の形態３のＩＣカード１００が有する退避判断部３０４を加えてもよい。
【０２１６】
この場合、ＦｅＲＡＭ２０２は、図１７に示すように破壊読出し領域２０２ａを有し、その中にレジスタ情報を退避する領域を有していればよい。
【０２１７】
こうすることで、ＩＣカード１００では、処理の再開前に通信相手の正当性の確認が行なわれ、処理の再開後には、その処理に用いられるレジスタ情報はＦｅＲＡＭ２０２に残らないことになる。これにより、秘匿性の高いと考えられるレジスタ情報をより強固に保護することができ、ＩＣカードのセキュリティを更に向上させることができる。
【０２１８】
（実施の形態１〜４の第１の補足事項）
以上、実施の形態１〜４について説明した。なお、これまでの説明においてＩＣカード１００が備える、電圧検出部３００、退避部３０２、Ｉ／Ｆ部３０１、復帰部３０３、通信種別取得部８００、退避判断部３０４、認証部３０５および復帰判断部３０６のそれぞれは、コンピュータプログラムとして実現される。当該プログラムは、ＩＣカード１００のＲＯＭに格納され実行されるものと、外部よりダウンロードされ、ＦｅＲＡＭ２０２に格納され実行されるものとがある。
【０２１９】
（実施の形態１〜４の第２の補足事項）
また、さらに、上述の電圧検出部３００等の機能ブロックは、ＣＰＵ、ＲＡＭ、ＲＯＭ、不揮発性メモリ等のハードウェア資源との組み合わせにより、集積回路であるＬＳＩとして実現される場合がある。これらは、個別に１チップ化されても良いし、一部又はすべてを含むように１チップ化されても良い。
【０２２０】
図２２は、実施の形態１のＩＣカード１００における集積回路化の一例を示す図である。ＬＳＩ１６００は集積回路化の一例を示し、集積回路化する機能ブロックの範囲の例である。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２２１】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製作後にプログラムすることが可能なＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ(ＦＰＧＡ)やＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０２２２】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然その技術を用いて機能ブロックの集積化を行なってもよい。バイオ技術、有機化学技術等の適用が可能性としてありえる。
【０２２３】
また、実施の形態２〜実施の形態４のＩＣカード１００のそれぞれにおいても、それらが有する機能ブロックの一部または全部を集積回路化することができる。
【産業上の利用可能性】
【０２２４】
本発明の半導体メモリカードは、プログラムを実行可能な機能を有する半導体メモリカードとして有用である。特に複数のプログラムを実行可能なＩＣカードとして有用である。
【図面の簡単な説明】
【０２２５】
【図１】図１は、一般的なＩＣカードのハードウェア構成の一例を示す図
【図２】図２は、実施の形態１のＩＣカードの機能的な構成を示す機能ブロック図
【図３】図３は、実施の形態１のＩＣカードの使用環境および供給電圧の変化を示す概要図
【図４】図４は、実施の形態１における退避情報のデータ構成の一例と、ＦｅＲＡＭのメモリマップの一例を示す図
【図５】図５は、実施の形態１のＩＣカードにおけるレジスタ情報の退避手順を示すフローチャート
【図６】図６は、実施の形態１のＩＣカードにおける処理の再開手順を示すフローチャート
【図７】図７は、実施の形態２のＩＣカードの機能的な構成を示す機能ブロック図
【図８】図８は、非接触型ＩＣカードにおけるＴｒａｎｓｐｏｒｔ  Ｔｙｐｅの種類を示す図
【図９】図９は、実施の形態２のＩＣカードの使用環境および供給電圧の変化を示す概要図
【図１０】図１０は、実施の形態２における退避情報のデータ構成の一例と、ＦｅＲＡＭのメモリマップの一例を示す図
【図１１】図１１は、実施の形態２のＩＣカードにおけるレジスタ情報の退避手順を示すフローチャート
【図１２】図１２は、実施の形態２のＩＣカードにおいて通信種別を利用してレジスタ情報を復帰させる際の手順を示すフローチャート
【図１３】図１３は、復帰させるべきレジスタ情報の特定に利用可能な情報の種類を例示する図
【図１４】図１４は、実施の形態３のＩＣカードの機能的な構成を示す機能ブロック図
【図１５】図１５は、暗号に関する３種類の情報を示す図
【図１６】図１６は、ＣＡ  Ｔｙｐｅの種類を示す図
【図１７】図１７は、実施の形態３における退避情報のデータ構成の一例と、ＦｅＲＡＭのメモリマップの一例を示す図
【図１８】図１８は、実施の形態３におけるＦｅＲＡＭの破壊読出し領域および非破壊読出し領域のアドレスを示す図
【図１９】図１９は、実施の形態３のＩＣカードにおけるレジスタ情報の退避手順を示すフローチャート
【図２０】図２０は、実施の形態４のＩＣカードの機能的な構成を示す機能ブロック図
【図２１】図２１は、実施の形態４のＩＣカードにおいてＣＡ  Ｔｙｐｅを利用してレジスタ情報を復帰させる手順を示すフローチャート
【図２２】図２２は、実施の形態１のＩＣカードにおける集積回路化の一例を示す図
【符号の説明】
【０２２６】
１００  ＩＣカード
２０２  ＦｅＲＡＭ
２０３  アンテナ
３００  電圧検出部
３０１  Ｉ／Ｆ部
３０２  退避部
３０３  復帰部
３０４  退避判断部
３０５  認証部
３０６  復帰判断部
８００  通信種別取得部
【図１】
0004813362.tif 000002
【図２】
0004813362.tif 000003
【図３】
0004813362.tif 000004
【図４】
0004813362.tif 000005
【図５】
0004813362.tif 000006
【図６】
0004813362.tif 000007
【図７】
0004813362.tif 000008
【図８】
0004813362.tif 000009
【図９】
0004813362.tif 000010
【図１０】
0004813362.tif 000011
【図１１】
0004813362.tif 000012
【図１２】
0004813362.tif 000013
【図１３】
0004813362.tif 000014
【図１４】
0004813362.tif 000015
【図１５】
0004813362.tif 000016
【図１６】
0004813362.tif 000017
【図１７】
0004813362.tif 000018
【図１８】
0004813362.tif 000019
【図１９】
0004813362.tif 000020
【図２０】
0004813362.tif 000021
【図２１】
0004813362.tif 000022
【図２２】
0004813362.tif 000023