(57)【要約】【課題】外部から不正な攻撃が行なわれた場合に、内部の秘匿したいデータ等を外部へ応答するという問題を防ぐことが可能となるＩＣカードを提供する。【解決手段】プログラムを記憶する領域およびプログラムバージョンデータやＩＣ製造番号などの固定データを記憶する領域を持つプログラムメモリを有し、外部からコマンドが入力されると、そのコマンドに対応した所定の処理を行ない、その処理結果に基づきプログラムメモリ内の固定データをレスポンスとして送信バッファに転送し、その後、当該送信バッファ内のデータを外部へ出力するＩＣカードにおいて、プログラムメモリから送信バッファに対してデータを転送する前に、当該データの転送元が固定データを記憶する領域内であることを確認し、この確認の結果、当該データの転送元が固定データを記憶する領域内である場合は送信バッファへのデータ転送を許可し、当該データの転送元が固定データを記憶する領域でない場合は送信バッファへのデータ転送を禁止する。【選択図】      図５
2006172005.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するメモリを有し、外部からコマンドが入力されると、そのコマンドに対応した所定の処理を行ない、その処理結果に基づき少なくとも前記メモリに記憶されている所定のデータをレスポンスとして送信バッファに転送し、その後、当該送信バッファ内のデータを外部へ出力する携帯可能電子装置において、
前記メモリから前記送信バッファに対してデータを転送する前に、当該データの転送元が前記メモリであることを確認するデータ転送元確認手段と、
このデータ転送元確認手段による確認の結果、当該データの転送元が前記メモリである場合は前記送信バッファへのデータ転送を許可し、当該データの転送元が前記メモリでない場合は前記送信バッファへのデータ転送を禁止するデータ転送制御手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項２】
データを記憶するメモリを有し、外部からコマンドが入力されると、そのコマンドに対応した所定の処理を行ない、その処理結果に基づき少なくとも前記メモリに記憶されている所定のデータをレスポンスとして送信バッファに転送し、その後、当該送信バッファ内のデータを外部へ出力する携帯可能電子装置において、
前記メモリから前記送信バッファに対してデータを転送する前に、当該データの転送元が前記メモリであることを確認するデータ転送元確認手段と、
このデータ転送元確認手段による確認の結果、当該データの転送元が前記メモリである場合は転送許可識別子を転送許可状態に更新し、当該データの転送元が前記メモリでない場合は前記送信バッファへのデータ転送を禁止する第１のデータ転送制御手段と、
前記転送許可識別子の状態を確認する転送許可識別子確認手段と、
この転送許可識別子確認手段による確認の結果、前記転送許可識別子が転送許可状態にある場合は前記送信バッファへのデータ転送を許可し、前記転送許可識別子が転送許可状態にない場合は前記送信バッファへのデータ転送を禁止する第２のデータ転送制御手段と、
前記送信バッファへのデータ転送が終了したのに基づき前記転送許可識別子を転送禁止状態に更新する転送許可識別子制御手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項３】
データを記憶するメモリを有し、外部からコマンドが入力されると、そのコマンドに対応した所定の処理を行ない、その処理結果に基づき少なくとも前記メモリに記憶されている所定のデータをレスポンスとして送信バッファに転送し、その後、当該送信バッファ内のデータを外部へ出力する携帯可能電子装置において、
前記メモリから前記送信バッファに対してデータを転送する前に、当該データの転送元が前記メモリであることを確認するデータ転送元確認手段と、
このデータ転送元確認手段による確認の結果、当該データの転送元が前記メモリである場合は当該データの転送先が前記送信バッファであることを確認するデータ転送先確認手段と、
このデータ転送先確認手段による確認の結果、当該データの転送先が前記送信バッファである場合は前記送信バッファへのデータ転送を許可する第１のデータ転送制御手段と、
前記データ転送元確認手段による確認の結果、当該データの転送元が前記メモリでない場合は、あるいは、前記データ転送先確認手段による確認の結果、当該データの転送先が前記送信バッファでない場合、前記送信バッファへのデータ転送を禁止する第２のデータ転送制御手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項４】
前記メモリは、当該携帯可能電子装置が動作するためのプログラムを記憶したプログラムエリアと、プログラムバージョンや当該不揮発性メモリのＩＣ製造番号など外部へ応答するための固定データを記憶した固定データエリアとを有するＩＣ化された不揮発性メモリであって、前記送信バッファへ転送するデータは前記固定データエリア内の固定データであることを特徴とする請求項１から請求項３のいずれか１つに記載の携帯可能電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、書込み、書換えが可能な不揮発性メモリおよびＣＰＵなどの制御素子を有し、外部からのデータの入出力を行なう手段を備えたＩＣチップを内蔵した、いわゆるＩＣカードと称される携帯可能電子装置に関する。
【背景技術】
【０００２】
一般的に、この種のＩＣカードは、制御素子（ＣＰＵ）、制御プログラムなどを記憶するプログラムメモリ（ＲＯＭ）、各種データやその管理情報などを記憶する不揮発性メモリ（ＮＶメモリ）、ワーク用メモリ（ＲＡＭ）などの各メモリから構成されている。  
最近、このようなＩＣカードにおいて、たとえば、外部から電気的なノイズなどを意図的に与え、制御素子のプログラムを誤動作させることにより、プログラムメモリ（ＲＯＭ）に格納されている制御プログラムなどを外部へ応答させるなどの、ＩＣカードへの不正攻撃が問題となっている。
【特許文献１】特開平１０−２７２３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記したように、ＩＣカードへ外部から電気的なノイズなどを意図的に与え、制御素子のプログラムを誤動作させることにより、たとえばプログラムメモリ（ＲＯＭ）に格納されている制御プログラムを、ＩＣカードから外部へ応答させるなどの、ＩＣカードへの不正攻撃が行なわれた場合、それを防止することが困難であるという問題がある。
【０００４】
そこで、本発明は、外部から不正な攻撃が行なわれた場合に、内部の秘匿したいデータ等を外部へ応答するという問題を防ぐことが可能となる携帯可能電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の携帯可能電子装置は、データを記憶するメモリを有し、外部からコマンドが入力されると、そのコマンドに対応した所定の処理を行ない、その処理結果に基づき少なくとも前記メモリに記憶されている所定のデータをレスポンスとして送信バッファに転送し、その後、当該送信バッファ内のデータを外部へ出力する携帯可能電子装置において、前記メモリから前記送信バッファに対してデータを転送する前に、当該データの転送元が前記メモリであることを確認するデータ転送元確認手段と、このデータ転送元確認手段による確認の結果、当該データの転送元が前記メモリである場合は前記送信バッファへのデータ転送を許可し、当該データの転送元が前記メモリでない場合は前記送信バッファへのデータ転送を禁止するデータ転送制御手段とを具備している。
【発明の効果】
【０００６】
本発明によれば、外部から不正な攻撃が行なわれた場合に、内部の秘匿したいデータ等を外部へ応答するという問題を防ぐことが可能となる携帯可能電子装置を提供できる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施の形態について図面を参照して説明する。  
図１は、本実施の形態に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すものである。このＩＣカードシステムは、ＩＣカード１１をカードリーダ・ライタ１２を介してパーソナルコンピュータなどの端末装置１３と接続可能にするとともに、端末装置１３にキーボード１４、ＣＲＴ表示部１５、プリンタ１６を接続して構成される。
【０００８】
図２は、ＩＣカード１１の構成を示すもので、制御部としての制御素子（たとえば、ＣＰＵ）１０１、記憶内容が書換え可能な記憶手段（メモリ）としてのデータメモリ１０２、ワーキングメモリ１０３、プログラムメモリ１０４、および、カードリーダ・ライタ１２との電気的接触を得るためのコンタクト部１０５によって構成されている。そして、これらのうち、破線内の部分（制御素子１０１、データメモリ１０２、ワーキングメモリ１０３、プログラムメモリ１０４）は１つ（あるいは複数）のＩＣチップ１０６で構成され、さらに、このＩＣチップ１０６とコンタクト部１０５とが一体的にＩＣモジュール化されて、ＩＣカード本体内に埋設されている。
【０００９】
データメモリ１０２は、各種データの記憶に使用され、たとえば、ＥＥＰＲＯＭなどの記憶内容が書換え可能な不揮発性メモリで構成されている。  
ワーキングメモリ１０３は、制御素子１０１が処理を行なう際の処理データなどを一時的に保持するための作業用メモリであり、たとえば、ＲＡＭなどで構成される。  
プログラムメモリ１０４は、たとえば、マスクＲＯＭなどの記憶内容が書換え不可能な不揮発性メモリで構成されており、制御素子１０１の制御プログラム、および、プログラムバージョンやＩＣチップ１０６の製造番号（ＩＣ製造番号）など外部へ応答する固定データなどを記憶するものである。
【００１０】
図３は、ワーキングメモリ１０３の構成例を示している。ワーキングメモリ１０３は、後述するデータ転送制御に使用する転送許可識別子としての転送許可フラグが格納されたフラグエリア１０３ａ、演算などで使用するワークエリア１０３ｂ、端末装置１３から送信されたデータを一時格納する受信バッファ１０３ｃ、および、端末装置１３へ返送するデータを格納する送信バッファ１０３ｄから構成される。
【００１１】
図４は、プログラムメモリ１０４の構成例を示している。プログラムメモリ１０４は、当該ＩＣカード１１が動作するためのプログラムを格納するプログラムエリア１０４ａ、および、プログラムバージョンデータやＩＣ製造番号など端末装置１３へ返送する固定データを格納する固定データエリア１０４ｂから構成される。
【００１２】
一般に、ＩＣカード１１の処理は、端末装置１３からカードリーダ・ライタ１２を介してＩＣカード１１へコマンドが送信されることから開始される。この際、ＩＣカード１１では、送信されたコマンドに対応した処理を行ない、その処理結果をレスポンスとして、カードリーダ・ライタ１２を介して端末装置１３へ返送する。  
具体的なＩＣカード１１の処理としては、データメモリ１０２などに格納されたデータを外部へ応答するデータ読出処理と、コマンドで送信されたデータをデータメモリ１０２へ書込むデータ書込処理とに分類することができる。
【００１３】
以下、上記処理のうちデータ読出処理を例として説明を行なう。  
まず、一般的なデータ読出処理は、
(1) 端末装置１３から送信された読出コマンドを受信バッファ１０３ｃに格納し、
(2) 受信バッファ１０３ｃ内の読出コマンド、プログラムエリア１０４ａ内のプログラムにしたがい所定の処理を行ない、
(3) 固定データエリア１０４ｂに格納された端末装置１３への返送データ（固定データ）をレスポンスデータとして送信バッファ１０３ｄに転送し、
(4) 最終的に、送信バッファ１０３ｄ内に格納された返送データを端末装置１３へ送信する、
ことで行なわれる。
【００１４】
このようなデータ読出処理において、たとえば、固定データエリア１０４ｂから送信バッファ１０３ｄへデータ転送を行なう際に、当該ＩＣカード１１に対して外部から何らかの不正攻撃が行なわれた場合、プログラムが誤動作し、本来は外部へ応答してはならないプログラムエリア１０４ａに格納されたデータを転送してしまうなどの危険性が考えられる。
【００１５】
以下、本発明の第１の実施の形態に係るデータ読出処理について説明する。  
なお、前記例と同様に、端末装置１３からの要求に応じて固定データエリア１０４ｂ内に格納された固定データを端末装置１３へ返送する場合について説明する。
【００１６】
第１の実施の形態では、前記(3)のデータ転送処理において、データ転送を行なう前に、データ転送元が固定データエリア１０４ｂであることを確認し、固定データエリア１０４ｂからのデータ転送の場合にのみ、データ転送処理を許可し、データ転送が許可されていない固定データエリア１０４ｂ以外からのデータ転送の場合は、何らかの不正が行なわれたものと判断し、当該ＩＣカード１１の全ての処理を停止するものであり、以下、図５に示すフローチャートに基づきその詳細を説明する。
【００１７】
制御素子１０１は、カードリーダ・ライタ１２を介して端末装置１３から送信された読出コマンドを受信すると（ステップＳ１）、その読出コマンドを受信バッファ１０３ｃに格納する（ステップＳ２）。  
次に、制御素子１０１は、受信バッファ１０３ｃ内の読出コマンド、および、プログラムエリア１０４ａ内のプログラムにしたがい所定のコマンド処理（たとえば、コマンドの正当性やアクセス条件のチェック等）を行なう（ステップＳ３）。
【００１８】
次に、制御素子１０１は、固定データエリア１０４ｂに格納された端末装置１３への返送データ（固定データ）をレスポンスデータとして送信バッファ１０３ｄに転送する処理を行なうが、そのデータ転送を行なう前に、当該データの転送元が固定データエリア１０４ｂであることを確認し（ステップＳ４）、固定データエリア１０４ｂからのデータ転送の場合にのみ、データ転送処理を許可し、固定データエリア１０４ｂ内の返送データ（固定データ）を送信バッファ１０３ｄに転送する（ステップＳ５）。
【００１９】
次に、制御素子１０１は、送信バッファ１０３ｄ内に格納された返送データをカードリーダ・ライタ１２を介して端末装置１３へ送信し（ステップＳ６）、当該処理を終了する。
【００２０】
一方、ステップＳ４において、データ転送元がデータ転送が許可されていない固定データエリア１０４ｂ以外の場合、制御素子１０１は、何らかの不正が行なわれたものと判断し、当該ＩＣカード１１の全ての処理を停止する（ステップＳ７）。
【００２１】
このように、第１の実施の形態によれば、データ転送処理実行時に、データ転送元をチェックすることで、たとえば、外部からの不正攻撃により、プログラムエリア１０４ａからのデータ転送を行なうように、プログラムのデータ転送元アドレス部分が誤動作した場合にも、当該データ転送を防止することが可能となる。
【００２２】
次に、本発明の第２の実施の形態に係るデータ読出処理について説明する。  
なお、前記例と同様に、端末装置１３からの要求に応じて固定データエリア１０４ｂ内に格納された固定データを端末装置１３へ返送する場合について説明する。
【００２３】
第２の実施の形態では、第１の実施の形態に対して、さらに、前記(3)のデータ転送処理開始前に、フラグエリア１０３ａ内の転送許可フラグを転送許可状態に更新し、データ転送処理内では、この転送許可フラグの状態をチェックし、転送許可フラグが転送許可状態の場合は、データ転送処理を許可し、データ転送完了後に、転送許可フラグを転送禁止状態に更新し、転送許可フラグが転送禁止状態である場合は、何らかの不正が行なわれたものと判断し、当該ＩＣカード１１の全ての処理を停止するものであり、以下、図６に示すフローチャートに基づきその詳細を説明する。
【００２４】
制御素子１０１は、カードリーダ・ライタ１２を介して端末装置１３から送信された読出コマンドを受信すると（ステップＳ１１）、その読出コマンドを受信バッファ１０３ｃに格納する（ステップＳ１２）。  
次に、制御素子１０１は、受信バッファ１０３ｃ内の読出コマンド、および、プログラムエリア１０４ａ内のプログラムにしたがい所定のコマンド処理（たとえば、コマンドの正当性やアクセス条件のチェック等）を行なう（ステップＳ１３）。
【００２５】
次に、制御素子１０１は、固定データエリア１０４ｂに格納された端末装置１３への返送データ（固定データ）をレスポンスデータとして送信バッファ１０３ｄに転送する処理を行なうが、そのデータ転送を行なう前に、当該データの転送元が固定データエリア１０４ｂであることを確認し（ステップＳ１４）、固定データエリア１０４ｂからのデータ転送の場合、フラグエリア１０３ａ内のデータ転送許可フラグを転送許可状態に更新（ステップＳ１５）。
【００２６】
次に、制御素子１０１は、フラグエリア１０３ａ内の転送許可フラグの状態を確認し（ステップＳ１６）、転送許可フラグが転送許可状態の場合は、データ転送処理を許可し、固定データエリア１０４ｂ内の返送データ（固定データ）を送信バッファ１０３ｄに転送する（ステップＳ１７）。
【００２７】
次に、制御素子１０１は、フラグエリア１０３ａ内の転送許可フラグを転送禁止状態に更新し（ステップＳ１８）、その後、送信バッファ１０３ｄ内に格納された返送データをカードリーダ・ライタ１２を介して端末装置１３へ送信し（ステップＳ１９）、当該処理を終了する。
【００２８】
一方、ステップＳ１４において、データ転送元がデータ転送が許可されていない固定データエリア１０４ｂ以外の場合、あるいは、ステップＳ１６において、転送許可フラグが転送禁止状態の場合、制御素子１０１は、何らかの不正が行なわれたものと判断し、当該ＩＣカード１１の全ての処理を停止する（ステップＳ２０）。
【００２９】
このように、第２の実施の形態によれば、転送許可フラグの状態を更新し、データ転送処理中に転送許可フラグの状態をチェックすることで、外部からの不正攻撃により、データ転送を行なうべきでないときにデータ転送を行なうように、プログラムがジャンプしてしまった場合、たとえば、データ書込処理中に送信バッファ１０３ｄへデータ転送を行なう処理へプログラムが暴走してしまった場合などにも、当該データ転送を防止することが可能となる。
【００３０】
次に、本発明の第３の実施の形態に係るデータ読出処理について説明する。  
なお、前記例と同様に、端末装置１３からの要求に応じて固定データエリア１０４ｂ内に格納された固定データを端末装置１３へ返送する場合について説明する。
【００３１】
第３の実施の形態では、第１の実施の形態に対して、さらに、前記(3)のデータ転送処理開始前に、データ転送先が送信バッファ１０３ｄであることを確認し、送信バッファ１０３ｄへのデータ転送の場合のみ、データ転送処理を許可し、データ転送先がデータ転送が許可されていない送信バッファ１０３ｄ以外への場合は、何らかの不正が行なわれたものと判断し、当該ＩＣカード１１の全ての処理を停止するものであり、以下、図７に示すフローチャートに基づきその詳細を説明する。
【００３２】
制御素子１０１は、カードリーダ・ライタ１２を介して端末装置１３から送信された読出コマンドを受信すると（ステップＳ２１）、その読出コマンドを受信バッファ１０３ｃに格納する（ステップＳ２２）。  
次に、制御素子１０１は、受信バッファ１０３ｃ内の読出コマンド、および、プログラムエリア１０４ａ内のプログラムにしたがい所定のコマンド処理（たとえば、コマンドの正当性やアクセス条件のチェック等）を行なう（ステップＳ２３）。
【００３３】
次に、制御素子１０１は、固定データエリア１０４ｂに格納された端末装置１３への返送データ（固定データ）をレスポンスデータとして送信バッファ１０３ｄに転送する処理を行なうが、そのデータ転送を行なう前に、当該データの転送元が固定データエリア１０４ｂであることを確認し（ステップＳ２４）、固定データエリア１０４ｂからのデータ転送の場合、当該データの転送先が送信バッファ１０３ｄであることを確認する（ステップＳ２５）。
【００３４】
ステップＳ２５における確認の結果、データ転送先が送信バッファ１０３ｄの場合、制御素子１０１は、データ転送処理を許可し、固定データエリア１０４ｂ内の返送データ（固定データ）を送信バッファ１０３ｄに転送する（ステップＳ２６）。  
次に、制御素子１０１は、送信バッファ１０３ｄ内に格納された返送データをカードリーダ・ライタ１２を介して端末装置１３へ送信し（ステップＳ２７）、当該処理を終了する。
【００３５】
一方、ステップＳ２４において、データ転送元がデータ転送が許可されていない固定データエリア１０４ｂ以外の場合、あるいは、ステップＳ２５において、データ転送先がデータ転送が許可されていない送信バッファ１０３ｄ以外の場合、制御素子１０１は、何らかの不正が行なわれたものと判断し、当該ＩＣカード１１の全ての処理を停止する（ステップＳ２８）。
【００３６】
このように、第３の実施の形態によれば、データ転送処理実行時に、データ転送先をチェックすることで、外部からの不正攻撃により、データ転送が許容された部位以外へのデータ転送を行なうように、プログラムの転送先アドレス部分が誤動作した場合にも、当該データ転送を防止することが可能となる。
【００３７】
なお、前記実施の形態では、データ転送元をプログラムメモリ１０４、データ転送先をワーキングメモリ１０３とした場合について説明したが、本発明はこれに限定されるものではなく、たとえば、データ転送元をデータメモリ１０２、データ転送先をワーキングメモリ１０３としてもよく、さらには、データメモリ１０２を前記例のように２つのメモリに分割して、一方のメモリからのデータ転送を許容し、他方のメモリからのデータ転送を禁止する、というように変形実施することも可能である。
【００３８】
また、前記実施の形態では、接触式ＩＣカードを利用した処理を用いて例示を行なったが、たとえば、非接触式ＩＣカードなどへの応用も可能であり、また、携帯可能電子装置の形状もカード状に限らず、ブロック状や棒状など、他の形状であってもよい。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施の形態に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すブロック図。
【図２】ＩＣカードの構成を概略的に示すブロック図。
【図３】ワーキングメモリの構成を模式的に示す図。
【図４】プログラムメモリの構成を模式的に示す図。
【図５】第１の実施の形態に係るデータ読出処理について説明するフローチャート。
【図６】第２の実施の形態に係るデータ読出処理について説明するフローチャート。
【図７】第３の実施の形態に係るデータ読出処理について説明するフローチャート。
【符号の説明】
【００４０】
１１…ＩＣカード（携帯可能電子装置）、１２…カードリーダ・ライタ、１３…端末装置、１４…キーボード、１５…ＣＲＴ表示部、１６…プリンタ、１０１…制御素子（制御部）、１０２…データメモリ（メモリ）、１０３…ワーキングメモリ、１０４…プログラムメモリ、１０５…コンタクト部、１０３ａ…フラグエリア（転送許可フラグ、転送許可識別子）、１０３ｂ…ワークエリア、１０３ｃ…受信バッファ、１０３ｄ…送信バッファ、１０４ａ…プログラムエリア、１０４ｂ…固定データエリア（固定データ）。
【図１】
2006172005.tif 000003
【図２】
2006172005.tif 000004
【図３】
2006172005.tif 000005
【図４】
2006172005.tif 000006
【図５】
2006172005.tif 000007
【図６】
2006172005.tif 000008
【図７】
2006172005.tif 000009