(57)【要約】      （修正有）【課題】重要データの生成処理を装置内の処理だけでセキュアに実現することができ、ＨＳＭを使わずともセキュアに初期化処理や発行処理が行なえる携帯可能電子装置およびＩＣカードを提供する。【解決手段】外部から入力される命令を解釈して当該命令に対応した処理を実行し、その処理結果を外部へ出力するＩＣカードにおいて、初期化あるいは発行処理を行なうためのプログラムを少なくとも２つに分割し、その一方のプログラムをプログラムメモリ（ＲＯＭ）にあらかじめ格納しておき、他方のプログラムは外部からの命令でワーキングメモリ（ＲＡＭ）にロードし、その後、外部からの初期化あるいは発行プログラム実行用の命令に基づき初期化あるいは発行処理を行なう。【選択図】図４
2012138008.tif 000002
【特許請求の範囲】
【請求項１】
外部から入力される命令を解釈して当該命令に対応した処理を実行し、その処理結果を外部へ出力する携帯可能電子装置において、
データを記憶する揮発性メモリと、
当該携帯可能電子装置を運用する前の前工程処理を行なうためのプログラムを少なくとも２つに分割し、この分割された一方のプログラムがあらかじめ格納された第１の不揮発性メモリと、
前記分割された他方のプログラムが付加された命令が外部から入力されると、当該命令に付加された前記分割された他方のプログラムを前記揮発性メモリあるいは第２の不揮発性メモリに格納するプログラム格納手段と、
外部から前記前工程処理を行なうための命令が入力されると、前記不揮発性メモリに格納された前記分割された一方のプログラムおよび前記揮発性メモリあるいは第２の不揮発性メモリに格納された前記分割された他方のプログラムに基づき前記前工程処理を実行する処理手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項２】
前記前工程処理とは、当該携帯可能電子装置を運用する前に行なわれる初期化処理あるいは当該携帯可能電子装置を運用する前に行なわれる発行処理である請求項１記載の携帯可能電子装置。
【請求項３】
前記前工程処理を行なうためのプログラムは、偶数行と奇数行の行単位あるいはオペコードとオペランドで分割されていることを特徴とする請求項１記載の携帯可能電子装置。
【請求項４】
外部から入力される命令を解釈して当該命令に対応した処理を実行し、その処理結果を外部へ出力するＩＣカードにおいて、
データを記憶する揮発性メモリと、当該ＩＣカードを運用する前の前工程処理を行なうためのプログラムを少なくとも２つに分割し、この分割された一方のプログラムがあらかじめ格納された第１の不揮発性メモリと、前記分割された他方のプログラムが付加された命令が外部から入力されると、当該命令に付加された前記分割された他方のプログラムを前記揮発性メモリあるいは第２の不揮発性メモリに格納するプログラム格納手段と、外部から前記前工程処理を行なうための命令が入力されると、前記不揮発性メモリに格納された前記分割された一方のプログラムおよび前記揮発性メモリあるいは第２の不揮発性メモリに格納された前記分割された他方のプログラムに基づき前記前工程処理を実行する処理手段とを有して構成されるＩＣモジュールと、
このＩＣモジュールを収納したＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、たとえば、ＲＡＭ（揮発性メモリ）、ＲＯＭ（不揮発性メモリ）およびＣＰＵなどの制御素子を備え、外部から入力されるコマンド（命令）を解釈してデータの書込み処理や読出し処理を実行し、その処理結果を外部へ出力するＩＣカードなどの携帯可能電子装置およびＩＣカードに関する。
【背景技術】
【０００２】
ＩＣカードは、クレジットカード、定期券、その他の商取引の決済カードに使われるだけでなく、社員証、会員証、保険証などのＩＤカードとしても様々な分野で使われるようになってきている。これは、従来の磁気カードに比べ、ＩＣとしてＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭなどを持つため様々な機能が行なえるようになっただけでなく、偽造が難しいためセキュリティの面でも大きく向上したことが要因である。
【０００３】
一般に、この種のＩＣカードは、データメモリとしてのＥＥＰＲＯＭ、ワーキングメモリとしてのＲＡＭ、これらのメモリに対してアクセス（データの読出しおよびまたは書込み等）を行なう制御素子としてのＣＰＵ、および、ＣＰＵの動作用プログラム（コマンドを解釈して実行するプログラム等）を格納したプログラムメモリとしてのＲＯＭを有し、外部のカードリーダ・ライタから入力されるコマンドを解釈してデータの書込み処理や読出し処理を実行し、その処理結果を外部のカードリーダ・ライタへ出力するように構成されている。
【０００４】
ところで、この種のＩＣカードは、通常、製造会社からの出荷前（ＩＣカードの運用前）に、ＥＥＰＲＯＭなどの不揮発性メモリの一部の領域に対するフォーマット（以下、初期化処理と称す）や必要なデータの書込み（以下、発行処理と称す）などの前工程処理が行なわれる。
【０００５】
この初期化処理や発行処理などの前工程処理には、暗号鍵や個人情報の書込みも含まれることがあるため、セキュアに行なう必要がある。そこで、ＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）といった非常に耐タンパ性の高い処理装置を用いて、書込みに含まれる重要データの生成を行ない、初期化処理や発行処理を行なうことがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−４７０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来は、ＨＳＭを使った初期化処理や発行処理を行なうには、非常に高価なＨＳＭを導入する必要があるという点と、ＨＳＭ内でセキュアにデータを生成しても、ＩＣカード内のメモリに書込む際に一度ＨＳＭ外部に出力する必要があるため、状況によっては生成データを別途暗号化して出力する必要があるなど、煩雑であるという問題がある。
【０００８】
そこで、本発明は、従来はＨＳＭ内で行なっている重要データの生成処理を本装置内の処理だけでセキュアに実現することができ、これによりＨＳＭを使わずともセキュアに初期化処理や発行処理が行なえる携帯可能電子装置およびＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態に係る携帯可能電子装置は、外部から入力される命令を解釈して当該命令に対応した処理を実行し、その処理結果を外部へ出力する携帯可能電子装置において、データを記憶する揮発性メモリと、当該携帯可能電子装置を運用する前の前工程処理を行なうためのプログラムを少なくとも２つに分割し、この分割された一方のプログラムがあらかじめ格納された第１の不揮発性メモリと、前記分割された他方のプログラムが付加された命令が外部から入力されると、当該命令に付加された前記分割された他方のプログラムを前記揮発性メモリあるいは第２の不揮発性メモリに格納するプログラム格納手段と、外部から前記前工程処理を行なうための命令が入力されると、前記不揮発性メモリに格納された前記分割された一方のプログラムおよび前記揮発性メモリあるいは第２の不揮発性メモリに格納された前記分割された他方のプログラムに基づき前記前工程処理を実行する処理手段とを具備している。
【００１０】
また、実施形態に係るＩＣカードは、外部から入力される命令を解釈して当該命令に対応した処理を実行し、その処理結果を外部へ出力するＩＣカードにおいて、データを記憶する揮発性メモリと、当該ＩＣカードを運用する前の前工程処理を行なうためのプログラムを少なくとも２つに分割し、この分割された一方のプログラムがあらかじめ格納された第１の不揮発性メモリと、前記分割された他方のプログラムが付加された命令が外部から入力されると、当該命令に付加された前記分割された他方のプログラムを前記揮発性メモリあるいは第２の不揮発性メモリに格納するプログラム格納手段と、外部から前記前工程処理を行なうための命令が入力されると、前記不揮発性メモリに格納された前記分割された一方のプログラムおよび前記揮発性メモリあるいは第２の不揮発性メモリに格納された前記分割された他方のプログラムに基づき前記前工程処理を実行する処理手段とを有して構成されるＩＣモジュールと、このＩＣモジュールを収納したＩＣカード本体とを具備している。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すブロック図。
【図２】ＩＣカードの構成例を示すブロック図。
【図３】ＩＣカードの外観構成を模式的に示す平面図。
【図４】実施形態に係る要部の処理動作について説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、実施形態について図面を参照して説明する。  
図１は、本実施形態に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すものである。このＩＣカードシステムは、ＩＣカード１０１をカードリーダ・ライタ１０２を介してパーソナルコンピュータなどの端末装置１０３と接続可能にするとともに、端末装置１０３にキーボード１０４、ＣＲＴ表示部１０５、プリンタ１０６を接続して構成される。
【００１３】
ＩＣカード１０１は、カードリーダ・ライタ１０２からの電源供給により動作可能な状態となり、カードリーダ・ライタ１０２から供給されるコマンドに応じて種々の処理を実行する。カードリーダ・ライタ１０２は、ＩＣカード１０１に対し動作電源を供給するとともに種々の処理を要求するコマンドを供給する。
【００１４】
端末装置１０３は、たとえば、パーソナルコンピュータなどにより構成されていて、図示しないメモリに記憶されている各種制御プログラムを実行することにより、各種の処理を実行するとともに、カードリーダ・ライタ１０２を介してＩＣカード１０１との間でデータの入出力を行なう。
【００１５】
図２は、ＩＣカード１０１の構成例を示すもので、制御手段としての制御素子（たとえば、ＣＰＵ）２０１、記憶手段としてのデータメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４、および、カードリーダ・ライタ１０２との通信を行なうための通信部２０５によって構成されている。そして、これらのうち、破線内の部分（制御素子２０１、データメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４）は１つ（あるいは複数）のＩＣチップ２０６で構成され、さらに、このＩＣチップ２０６と通信部２０５とが接続された状態で一体化されてＩＣモジュール２０７とされ、このＩＣモジュール２０７が図３に示すようにＩＣカード本体２０８内に埋設されている。
【００１６】
制御素子２０１は、各種の判定処理や判断処理およびメモリへの書込みや読出しなどのデータ処理等を行なう制御部である。
【００１７】
データメモリ２０２は、アプリケーションデータなどの各種データの記憶に使用され、たとえば、ＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ）などの消去（書換え）可能な不揮発性メモリで構成されている。
【００１８】
ワーキングメモリ２０３は、制御素子２０１が処理を行なう際の処理データや外部から入力されるプログラムの一部などを一時的に保持するための作業用メモリであり、たとえば、ＲＡＭ（ランダム・アクセス・メモリ）などの揮発性メモリで構成されている。
【００１９】
プログラムメモリ２０４は、たとえば、マスクＲＯＭ（リード・オンリ・メモリ）などの書換え不可能な不揮発性メモリで構成されており、制御素子２０１が実行するコマンド処理プログラム（コマンドを解釈して実行するプログラム等）や固定の設定データなどが記憶される。
【００２０】
通信部２０５は、ＩＣカード１０１が非接触式（無線式）ＩＣカードの場合にはアンテナ部として構成され、カードリーダ・ライタ１０２から送信された変調波を非接触で受信したり外部へ変調波を発信したりするようになっている。また、この通信部２０５で受信した変調波から内部回路に供給するための電源やクロックを生成するようになっている。また、接触式ＩＣカードの場合にはコンタクト部として構成され、カードリーダ・ライタ１０２に設けられたＩＣカード端子部（図示しない）と接触することにより電源やクロックを得るようになっている。
【００２１】
次に、上記のような構成において、本実施形態に係る要部の処理動作について図４に示すフローチャートを参照して説明する。  
本実施形態では、初期化処理を行なうための初期化プログラム、および、発行処理を行なうための発行プログラムは、それぞれ行ごとに分割されていて、分割された偶数行（一方）のプログラムはプログラムメモリ（ＲＯＭ）２０４にあらかじめ格納されているものとする。また、上記分割された奇数行（他方）のプログラムは、コマンドとともに外部から入力されて、ワーキングメモリ（ＲＡＭ）２０３に格納されるものとする。
【００２２】
まず、初期化処理を行なう場合（初期化フェーズの場合）、カードリーダ・ライタ１０２は、ワーキングメモリ２０３に初期化プログラムの分割された奇数行のプログラムをロードするためのロードコマンドをＩＣカード１０１に送信する（ステップＳ１）。このとき、ロードコマンドのデータ部に初期化プログラムの分割された奇数行のプログラムを格納しておき、コマンドとともに送る。なお、本ロードコマンドは、当該ＩＣカード１０１の出荷後の運用フェーズでは受付けないような設定となっている。
【００２３】
ＩＣカード１０１の制御素子２０１は、カードリーダ・ライタ１０２から送信されたロードコマンドを受信すると、当該コマンドに付加された奇数行の初期化プログラムをワーキングメモリ２０３の特定領域に格納する（ステップＳ２）。
【００２４】
こうして、分割された奇数行の初期化プログラムのワーキングメモリ２０３へのロードが完了した後、カードリーダ・ライタ１０２は、初期化プログラム実行用の初期化コマンドをＩＣカード１０１に送信する（ステップＳ３）。
【００２５】
なお、この初期化コマンドは、本実施形態のように初期化プログラムのロードとは別にしてもよいし、初期化プログラムのロードコマンドのヘッダ部でプログラムの最終部分であることを示し、ロードが完了した時点でそのまま初期化プログラムを実行させるような形であってもよい。
【００２６】
ＩＣカード１０１の制御素子２０１は、カードリーダ・ライタ１０２から送信された初期化コマンドを受信すると、プログラムメモリ２０４にあらかじめ格納されている偶数行の初期化プログラムおよびワーキングメモリ２０３に格納された奇数行の初期化プログラムに基づき初期化処理を実行する（ステップＳ４）。
【００２７】
すなわち、プログラムメモリ２０４のアドレスとワーキングメモリ２０３のアドレスが交互に、プログラムカウンタにセットされ、全体として初期化処理が実現される。このとき、ワーキングメモリ２０３に格納された奇数行の初期化プログラムに一部でも整合性が取れない部分があると、プログラムとして実行されない。
【００２８】
プログラムでは、たとえば、共通鍵暗号の鍵１６バイトを乱数で生成したり、ある特定のロジックにより秘密情報を生成したりと、これまでＨＳＭ内部で生成していたものをカード内部で生成することとなる。これにより、ＨＳＭ内部ではセキュアに生成されたものが、カードに書込む際に一度ＨＳＭ外部に出力されてからカードに書込まれるという一時的にセキュアでない状態を回避することができる。また、この状態を回避するために、ＨＳＭ内で生成したデータを別の暗号化鍵で暗号化して出力し、そのままカードに書込み、カード内部で復号するということも考えられるが、本実施形態ではそれらの煩雑な処理が不要となる。
【００２９】
こうして、初期化プログラムの実行が完了し、無事に初期化処理が終えた場合、カードリーダ・ライタ１０２は、初期化フェーズから発行フェーズに切換え、ＩＣカード１０１への電源をオフすることで（ステップＳ５）、分割プログラムのロード、実行コマンドは受付けず、かつ、プログラムメモリ２０４上に格納されている分割プログラムの情報がないと、ワーキングメモリ２０３に展開すべきプログラムが分からないという２点によりセキュリティを確保することができる。
【００３０】
また、上記で述べたように、非常に高価なＨＳＭを導入する必要がないという点と、ＨＳＭでセキュアに生成してもカードへの書込みのために一度ＨＳＭ外部に出力しなければならないという点も回避できる。
【００３１】
次に、発行処理を行なう場合（発行フェーズの場合）、カードリーダ・ライタ１０２は、ワーキングメモリ２０３に発行プログラムの分割された奇数行のプログラムをロードするためのロードコマンドをＩＣカード１０１に送信する（ステップＳ６）。このとき、ロードコマンドのデータ部に発行プログラムの分割された奇数行のプログラムを格納しておき、コマンドとともに送る。なお、本ロードコマンドは、当該ＩＣカード１０１の出荷後の運用フェーズでは受付けないような設定となっている。
【００３２】
ＩＣカード１０１の制御素子２０１は、カードリーダ・ライタ１０２から送信されたロードコマンドを受信すると、当該コマンドに付加された奇数行の発行プログラムをワーキングメモリ２０３の特定領域に格納する（ステップＳ７）。
【００３３】
こうして、分割された奇数行の発行プログラムのワーキングメモリ２０３へのロードが完了した後、カードリーダ・ライタ１０２は、発行プログラム実行用の発行コマンドをＩＣカード１０１に送信する（ステップＳ８）。
【００３４】
なお、この発行コマンドは、本実施形態のように発行プログラムのロードとは別にしてもよいし、発行プログラムのロードコマンドのヘッダ部でプログラムの最終部分であることを示し、ロードが完了した時点でそのまま発行プログラムを実行させるような形であってもよい。
【００３５】
ＩＣカード１０１の制御素子２０１は、カードリーダ・ライタ１０２から送信された発行コマンドを受信すると、プログラムメモリ２０４にあらかじめ格納されている偶数行の発行プログラムおよびワーキングメモリ２０３に格納された奇数行の発行プログラムに基づき発行処理を実行する（ステップＳ９）。
【００３６】
すなわち、プログラムメモリ２０４のアドレスとワーキングメモリ２０３のアドレスが交互に、プログラムカウンタにセットされ、全体として発行処理が実現される。このとき、ワーキングメモリ２０３に格納された奇数行の発行プログラムに一部でも整合性が取れない部分があると、プログラムとして実行されない。
【００３７】
プログラムでは、たとえば、共通鍵暗号の鍵１６バイトを乱数で生成したり、ある特定のロジックにより秘密情報を生成したりと、これまでＨＳＭ内部で生成していたものをカード内部で生成することとなる。これにより、ＨＳＭ内部ではセキュアに生成されたものが、カードに書込む際に一度ＨＳＭ外部に出力されてからカードに書込まれるという一時的にセキュアでない状態を回避することができる。また、この状態を回避するために、ＨＳＭ内で生成したデータを別の暗号化鍵で暗号化して出力し、そのままカードに書込み、カード内部で復号するということも考えられるが、本実施形態ではそれらの煩雑な処理が不要となる。
【００３８】
こうして、発行プログラムの実行が完了し、無事に発行処理が終えた場合、カードリーダ・ライタ１０２は、発行フェーズから運用フェーズに切換え、ＩＣカード１０１への電源をオフすることで（ステップＳ５）、分割プログラムのロード、実行コマンドは受付けず、かつ、プログラムメモリ２０４上に格納されている分割プログラムの情報がないと、ワーキングメモリ２０３に展開すべきプログラムが分からないという２点によりセキュリティを確保することができる。
【００３９】
また、上記で述べたように、非常に高価なＨＳＭを導入する必要がないという点と、ＨＳＭでセキュアに生成してもカードへの書込みのために一度ＨＳＭ外部に出力しなければならないという点も回避できる。
【００４０】
次に、通常の運用を行なう場合（運用フェーズの場合）、カードリーダ・ライタ１０２は、通常の運用コマンド（たとえば、データ書込コマンドやデータ読出コマンド等）をＩＣカード１０１に送信する（ステップＳ１０）。
【００４１】
ＩＣカード１０１の制御素子２０１は、カードリーダ・ライタ１０２から送信された運用コマンドを受信すると、当該運用コマンドに対応する処理を実行し（ステップＳ１１）、その処理結果をカードリーダ・ライタ１０２に送信する（ステップＳ１２）。
【００４２】
なお、前記実施形態では、初期化処理を行なうための初期化プログラム、および、発行処理を行なうための発行プログラムを、偶数行と奇数行の行単位に分割した場合について説明したが、これに限らず、たとえば、オペコードとオペランドでの分割など、いくつか考えられるが、それらを実現するためのハードウェアを持ち、プログラムカウンタへのアドレス読込みがある規則によって、ＲＯＭから読込まれたり、ＲＡＭから読込まれたり、オペコードとオペランドを別々の領域から持ってきたりすることができる。  
また、プログラムの分割数は、２つに限らず、３つでも４つでもよく、任意である。
【００４３】
また、外部から入力される分割された他方（前記例では奇数行）のプログラムの格納先は、前記実施形態のようにワーキングメモリ（ＲＡＭ）２０３ではなく、データメモリ（ＥＥＰＲＯＭ）２０２やフラッシュ（ＦＬＡＳＨ）メモリなどの不揮発性メモリの領域でもよい。  
この場合、初期化処理あるいは発行処理が終了した後に、たとえば、外部からの消去コマンドの入力などにより、不揮発性メモリ内の分割された他方のプログラムを消去すれば、セキュリティを確保することができる。
【００４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行なうことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００４５】
１０１…ＩＣカード（携帯可能電子装置）、１０２…カードリーダ・ライタ、１０３…端末装置、１０４…キーボード、１０５…ＣＲＴ表示部、１０６…プリンタ、２０１…制御素子（ＣＰＵ）、２０２…データメモリ（ＥＥＰＲＯＭ）、２０３…ワーキングメモリ（ＲＡＭ）、２０４…プログラムメモリ（ＲＯＭ）、２０５…通信部、２０６…ＩＣチップ、２０７…ＩＣモジュール、２０８…ＩＣカード本体。
【図１】
2012138008.tif 000003
【図２】
2012138008.tif 000004
【図３】
2012138008.tif 000005
【図４】
2012138008.tif 000006