(57)【要約】【課題】複数のメモリを有するＩＣカードにおけるメモリ間のデータ転送処理において、不正アクセスを検知する制御を実装した際にアクセス権判定処理のために処理時間が増加する。【解決手段】セキュアメモリＩ／Ｆ２１２に対して、転送元アドレスと転送先アドレスと転送データ数を設定することにより、セキュアメモリＩ／Ｆ２１２が予め定めた内容に基づいてデータ転送処理時における不正アクセス発生の有無を判定し、転送メモリ種別毎のアクセスの正当性を高速に実行することができる。また、動作モードに従ってアクセス判定境界のアドレスを変更することが可能となることから、汎用性を高めつつ高セキュリティ性を確保することができる。【選択図】図２
2008129697.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する読み書き可能な複数のメモリと、前記複数のメモリ間に前記データを転送するデータ転送制御部と、前記データ転送制御部に対して転送元アドレスと転送先アドレスと転送データ数を設定して処理命令を実行するプログラムを有する管理部とを備え、
前記データ転送制御部は、前記管理部により設定された前記転送元アドレスおよび前記転送先アドレスおよび転送データ数が、予め定めた転送元の前記メモリの範囲内および転送先の前記メモリの範囲内である場合に正当なアクセスであると判定する判定手段を有し、正当なアクセスと判定した場合にデータの転送を実行し、処理結果を前記管理部に通知するＩＣカード。
【請求項２】
管理部は、転送元アドレスと転送先アドレスを設定する際に、同時に転送元メモリ種別と転送先メモリ種別を設定し、判定手段は設定された前記転送元メモリ種別と前記転送先メモリ種別が、予め定めた転送元の前記メモリの種別および転送先の前記メモリの種別であるときに正当なアクセスであると判定する請求項１記載のＩＣカード。
【請求項３】
データ転送制御部の判定手段は、動作モードや読み書きするメモリの種別によって、判定の基準となるアドレスを異ならせている請求項１記載のＩＣカード。
【請求項４】
管理部は、データ転送制御部がメモリへのアクセスが正当でないと判定した場合、動作モードに応じた処理を行う請求項１、請求項２または請求項３記載のＩＣカード。
【請求項５】
複数のメモリ間にデータを転送するデータ転送制御部と、前記データ転送制御部に処理命令を実行する管理部とを用いたメモリ間のデータ転送制御方法であって、
前記管理部が前記データ転送制御部に対して、転送元アドレスと転送先アドレスと転送データ数を設定するステップと、
前記データ転送制御部は、前記ステップにより設定された前記転送元アドレスおよび前記転送先アドレスおよび転送データ数が、予め定めた転送元の前記メモリの範囲内および転送先の前記メモリの範囲内である場合に正当なアクセスであることを判定するステップと、
前記データ転送制御部は正当なアクセスと判定した場合にデータの転送処理を実行するステップと、
前記データ転送制御部の処理結果を前記管理部に通知するステップとを含むメモリ間のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＩＣカードおよびメモリ間のデータ転送制御方法に関し、特に、高セキュリティが要求される複数のメモリを有するＩＣカードにおけるメモリ間のデータ転送制御方法に関する。
【背景技術】
【０００２】
近年、銀行やクレジット会社では、磁気カードをＩＣカードに切り替えつつあり、その他様々な用途においても不揮発性メモリを有するＩＣチップを搭載したＩＣカードが普及してきている。
【０００３】
その中でも、高機能を有するＩＣカードの需要が増えており、ショッピングや各種施設を利用するための金銭情報やプライバシーに関する個人情報が、内蔵する不揮発性メモリに記録され、より一層の高セキュリティ性が求められている。
【０００４】
そのため、偽造や変造、改竄に対する対策が求められ、外部からのアクセスの正当性を確認し、不正アクセスを排除する技術などが重要となってきている。
【０００５】
図９は、従来のＩＣカードシステムの構成を示す機能ブロック図であり、ＬＳＩ９０１を搭載したＩＣカード９０２とＩＣカード９０２に対してデータの読み書きなどを行うリーダライタ９０３との間にてデータの送受信が行われる。
【０００６】
リーダライタ９０３が内部で作成した送信データの送信処理を行うことにより、ＩＣカード９０２は変調されたデータを受信する。受信したデータは、復調部９０４で復調処理され、さらに復号部９０５にて復号化処理された後に、情報処理を行うＣＰＵ９０６へ送られる。
【０００７】
このＣＰＵ９０６は、一時的演算情報などを保持しておく揮発性メモリＲＡＭ９０７や、制御用メモリＲＯＭ９０８、読み書きするユーザデータなどを格納するＥＥＰＲＯＭなどの不揮発性メモリ９０９を使用してデータ処理を実行する。この制御用メモリＲＯＭ９０８には、不揮発性メモリ９０９に記憶されるファイル情報などの管理を実行するＯＳである、制御用ＯＳ＿Ａ９１０が格納されており、受信したデータの内容に基づいた処理が行われる。制御用ＯＳは１つだけではなく複数存在する場合もあり、図９においては制御用ＯＳ＿Ａ９１０と制御用ＯＳ＿Ｂ９１１の２つが存在する場合を示している。各メモリに対するアクセスはメモリＩ／Ｆ９１２を介して行われる。
【０００８】
また、ＣＰＵ９０６は送信するデータを符号部９１３へ送ることで符号化処理が行われた後、さらに変調部９１４にて所定の伝送方式にてデータが変調され、リーダライタ９０３へ送信される。
【０００９】
また、ソフトウェア構成をもとにしたデータ転送処理について図１０を用いて説明する。
【００１０】
カードＯＳ１００１は、不揮発性メモリ１００２や揮発性メモリＲＡＭ１００３、制御用メモリＲＯＭ１００４においてデータ転送処理を行う際、ライブラリ（手続き関数）１００５を使用する。カードＯＳ１００１はライブラリ１００５に対して、転送元アドレスと転送先アドレスおよび、転送データ数を指定することにより、ライブラリ１００５は指定された処理に対応する制御を行いながらデータ転送処理を実行する。
【００１１】
ライブラリ１００５を使用することにより、カードＯＳ１００１を設計するにあたっては、各メモリデバイスにおけるデータ読み書き制御方法の違いを意識する必要がなくなる。また、カードＯＳとライブラリのインターフェースを共通化することにより、異なるカードＯＳからでも設計資産を利用して容易に各メモリへアクセスすることが可能となる。このようにカードＯＳからライブラリが利用されることが少なくない（例えば、特許文献１参照）。
【特許文献１】特開２００３−１６４１０号公報（第３−５頁、第一図）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述のような従来技術においては、ライブラリに対して転送元アドレスと転送先アドレスおよび転送データ数などを指定するが、メモリデバイスが実装されていない誤ったアドレスを指定した場合においてもデータ転送処理が行われることになり誤動作が発生してしまう。また、アクセス権がないアドレスを指定した場合においても指定したアドレスへのデータ転送処理が行われ、重要データの漏洩が発生してしまうことにもなりかねない。
【００１３】
このため、不正アクセスを検知する目的としてライブラリ内において、指定された各パラメータである転送元アドレス、転送先アドレス、転送データ数などが正当であるかどうかをチェックするプログラム処理を追加する対策も挙げられるが、ＣＰＵのプログラム処理能力に依存することなる。特に低消費電力が求められるシステムにおいては、ＣＰＵ動作クロックを低速にて動作させなければならず、結果として処理時間の増大につながってしまう。
【００１４】
よって、本発明は、上記のようなライブラリが使用されたＩＣカードなどにおいて、アクセス判定処理をハードウェアにて実現することにより、高速かつ効率良く不正アクセスを検出することができるメモリ間のデータ転送制御方法およびＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のＩＣカードは、データを格納する読み書き可能な複数のメモリと、複数のメモリ間にデータを転送するデータ転送制御部と、データ転送制御部に対して転送元アドレスと転送先アドレスと転送データ数を設定して処理命令を実行するプログラムを有する管理部とを備え、
データ転送制御部は、管理部により設定された転送元アドレスおよび転送先アドレスおよび転送データ数が、予め定めた転送元のメモリの範囲内および転送先のメモリの範囲内である場合に正当なアクセスであると判定する判定手段を有し、正当なアクセスと判定した場合にデータの転送を実行し、処理結果を管理部に通知するものである。
【００１６】
上記構成において、管理部は、転送元アドレスと転送先アドレスを設定する際に、同時に転送元メモリ種別と転送先メモリ種別を設定し、判定手段は設定された転送元メモリ種別と転送先メモリ種別が、予め定めた転送元のメモリの種別および転送先のメモリの種別であるときに正当なアクセスであると判定する。
【００１７】
上記構成において、データ転送制御部の判定手段は、動作モードや読み書きするメモリの種別によって、判定の基準となるアドレスを異ならせている。
【００１８】
上記構成において、管理部は、データ転送制御部がメモリへのアクセスが正当でないと判定した場合、動作モードに応じた処理を行う。
【００１９】
本発明のメモリ間のデータ転送制御方法は、複数のメモリ間にデータを転送するデータ転送制御部と、データ転送制御部に処理命令を実行する管理部とを用いたメモリ間のデータ転送制御方法であって、
管理部がデータ転送制御部に対して、転送元アドレスと転送先アドレスと転送データ数を設定するステップと、
データ転送制御部は、ステップにより設定された転送元アドレスおよび転送先アドレスおよび転送データ数が、予め定めた転送元のメモリの範囲内および転送先のメモリの範囲内である場合に正当なアクセスであることを判定するステップと、
データ転送制御部は正当なアクセスと判定した場合にデータの転送処理を実行するステップと、
データ転送制御部の処理結果を管理部に通知するステップとを含む。
【発明の効果】
【００２０】
本発明のＩＣカードおよびメモリ間のデータ転送制御方法によれば、異なるメモリ間にてデータを転送するデータ転送制御部に対して、転送元アドレスと転送先アドレスと転送データ数を指定することにより、データ転送制御部が予め定めた転送元のメモリに対する正当なアクセス権があるかどうか、また、予め定めた転送先のメモリに対する正当なアクセス権があるかどうかを判断する。このため、連続して高速にアクセスの正当性の判定を行うことが可能となり不正アクセスを防止することができる。
【００２１】
メモリ種別を設定する場合には未実装領域に対する不正アクセスのみでなく、実装されている各メモリデバイスの範囲毎に意図しないメモリデバイスに対する不正アクセスの発生を検出することが可能となる。
【００２２】
動作モードやメモリ種別によって判定するアドレスを変更することにより、例えば所定の照合鍵を知らない限り限定された領域にはアクセスできない等、許可領域の設定や制約を実現することができる。
【００２３】
また、データ転送制御部に対して処理命令を実行する管理部は、データ転送制御部における正当性判定の結果、異常であることが判明した場合において、動作モードに従って以降の処理を変更することにより、ＯＳ開発時におけるデバッグも容易となり、実装の汎用性を高めることにもつながる。
【発明を実施するための最良の形態】
【００２４】
（第１の実施の形態）
以下、本発明に係る第１の実施の形態について図面を参照して詳細に説明する。
【００２５】
図１は、本発明に係るＬＳＩ９０１を搭載したＩＣカード９０２におけるメモリ構成アドレス空間の一例図である。アドレス空間内に各メモリデバイスが配置されており、ＲＡＭ１０１はアドレス０１０００ｈ〜０３ＦＦＦｈに、ＲＯＭ１０２はアドレス０６０００ｈ〜０ＦＦＦＦｈ、不揮発性メモリ１０３はアドレス１００００ｈ〜１７ＦＦＦｈにそれぞれ配置されている。不揮発性メモリ１０３はアドレス１００００ｈ〜１３ＦＦＦｈの不揮発性メモリＡ１０４と、アドレス１４０００ｈ〜１７ＦＦＦｈの不揮発性メモリＢ１０５の２つの領域とから構成されている。なお、アドレス０００００ｈ〜００ＦＦＦｈおよび０４０００ｈ〜０５ＦＦＦｈ（未実装領域１０６）、１８０００ｈ以降にはメモリデバイスは配置されておらず未実装領域である。未実装領域へのアクセスは異常な処理であり、不正アクセスとみなされる。
【００２６】
図２は、本発明のＩＣカードシステムの構成を示す機能ブロック図であり、図９のメモリＩ／Ｆ９１２の代わりに、セキュアメモリＩ／Ｆ２１２にて構成されている。セキュアメモリＩ／Ｆ２１２はデータ転送処理を行う際に、指定されたアドレスへのデータ転送処理が不正でないかどうかを監視し、異常な処理の発生を検知する働きを有するデータ転送制御部である。なお、ＲＡＭ９０７は図１のＲＡＭ１０１に相当し、ＲＯＭ９０８はＲＯＭ１０２に相当し、不揮発性メモリ９０９は不揮発性メモリ１０３に相当する。図１においては、不揮発性メモリ９０９が、不揮発性メモリＡ１０４の領域と不揮発性メモリＢ１０５の２つの領域から構成されている。不揮発性メモリＡ１０４と不揮発性メモリＢ１０５は、それぞれ特性の異なる不揮発性メモリデバイスであっても構わない。
【００２７】
図３は、セキュアメモリＩ／Ｆ２１２にて入出力に使用されるレジスタ構成図である。
【００２８】
転送元先頭アドレスレジスタ３０１には、データ転送元となるメモリデバイスにて転送するデータの先頭アドレスを格納する。一方、転送先先頭アドレスレジスタ３０２には、データ転送先となるメモリデバイスにて転送されるデータの先頭アドレスを格納する。転送データ数レジスタ３０３には、転送するデータのデータ量の値を格納する。また、データ転送処理の終了時において、ステータスレジスタ３０４にデータ転送処理結果が格納される。
【００２９】
ＯＳからデータ転送処理命令が実行された場合には、ライブラリが転送元先頭アドレスレジスタ３０１、転送先先頭アドレスレジスタ３０２、転送データ数レジスタ３０３にＯＳより指定されたパラメータに基づいて、転送元先頭アドレス、転送先先頭アドレス、転送データ数をそれぞれ設定した後、セキュアメモリＩ／Ｆ２１２へデータ転送処理を依頼する。
【００３０】
セキュアメモリＩ／Ｆ２１２では、各レジスタに設定されたパラメータの正当性を確認し、異常がなければデータ転送処理を行った後にステータスレジスタ３０４に正常完了ステータスを格納する。一方で、異常であった場合にはデータ転送処理を行わず、ステータスレジスタ３０４に異常完了ステータスを格納する。データ転送処理を依頼したライブラリはステータスレジスタ３０４の状態を確認することでデータ転送処理が正常に完了したかどうかを知ることができ、同時にＯＳからのデータ転送処理命令に不正アクセスが発生したかどうかを判断することが可能となる。
【００３１】
次に、図４のフローチャートを用いて、データ転送処理の流れを説明する。ここでは、アドレス１２０００ｈ番地からアドレス０１０００ｈ番地へ１０ｈバイトのデータを転送する処理がＯＳから依頼された場合を例として説明する。
【００３２】
所定のデータ転送処理を行うためにＯＳから呼び出されたライブラリにてデータ転送処理が開始されたら（ステップＳ４０１）、まずライブラリは、転送元先頭アドレスレジスタ３０１にアドレス１２０００ｈを設定する（ステップＳ４０２）。同様に転送先先頭アドレスレジスタ３０２にアドレス０１０００ｈを、転送データ数レジスタ３０３に転送データ数１０ｈをそれぞれ設定する（ステップＳ４０３、Ｓ４０４）。各レジスタの設定が完了した後にデータ転送処理をセキュアメモリＩ／Ｆ２１２に依頼し、データ転送処理が完了するのを待つ（ステップＳ４０５）。データ転送処理を依頼されたセキュアメモリＩ／Ｆ２１２では以降、アクセス権の判定とデータ転送処理を行うことになる（ステップＳ４０６〜Ｓ４１１）。
【００３３】
セキュアメモリＩ／Ｆ２１２では、まず設定された転送元先頭アドレスである１２０００ｈと転送データ数１０ｈをもとに転送元終了アドレス１２００Ｆｈを算出する（ステップＳ４０６）。同様に、設定された転送先先頭アドレスである０１０００ｈと転送データ数１０ｈをもとに転送先終了アドレス０１００Ｆｈを算出する（ステップＳ４０７）。これらの処理は専用のハードウェアにて実行されるため高速に演算することが可能である。
【００３４】
その後、データ転送処理におけるアクセスに不正がないかどうかを判定する（ステップＳ４０８）。転送元アクセス領域はアドレス１２０００ｈ〜１２００Ｆｈであり、不揮発性メモリ１０３が実装されている領域であるアドレス１００００ｈ〜１７ＦＦＦｈの範囲内であることから正当なアクセスであると判断される。また、転送先アクセス領域はアドレス０１０００ｈ〜０１００Ｆｈであり、ＲＡＭ１０１が実装されている領域であるアドレス０１０００ｈ〜０３ＦＦＦｈの範囲内であり、同様に正当なアクセスであると判断される（ステップＳ４０８）。
【００３５】
転送元および転送先両方のアクセスが正当であると判断した場合には、データ転送処理を実行し（ステップＳ４０９）、ステータスレジスタ３０４に正常完了ステータスを格納する。例えば、正常完了した情報として００ｈをステータスレジスタ３０４に格納する。その後、ライブラリにセキュアメモリＩ／Ｆ２１２の処理が終了したことを通知する（ステップＳ４１０）。
【００３６】
一方で、転送元先頭アドレスレジスタ３０１に０４０００ｈが設定された場合においては、転送元アクセス領域はアドレス０４０００ｈ〜０４００Ｆｈとなり、未実装領域１０６のアドレス０４０００ｈ〜０５ＦＦＦｈの範囲内であることから不正なアクセスであると判断される。
【００３７】
このように転送元あるいは転送先いずれかのアクセスが不正であると判断した場合には、データ転送処理は実行せず、ステータスレジスタ３０４に異常完了ステータスを格納する。例えば、異常完了した情報として０１ｈをステータスレジスタ３０４に格納する。その後、ライブラリにセキュアメモリＩ／Ｆ２１２の処理が終了したことを通知する（ステップ４１１）。
【００３８】
セキュアメモリＩ／Ｆ２１２の処理が終了したことを通知されたライブラリは、ステータスレジスタ３０４に格納された情報を読み出し、当該情報がデータ転送処理正常であった場合にはＯＳへ正常完了を通知し（ステップＳ４１２）、ＯＳへ処理を引き渡す（ステップＳ４１３）。データ転送処理が異常であった場合には、ＯＳへ異常完了を通知し（ステップＳ４１４）、ＯＳへ処理を引き渡す（ステップＳ４１５）。なお、ステータスレジスタ３０４に格納された情報が異常であった場合には、ライブラリにおいて不正なアクセスが発生したことを知ることができるため、即座にＬＳＩにとってより安全な状態となる例外処理（例えばＬＳＩをリセットしたり、重要な情報を消去したりする）を行ってもよい。
【００３９】
さらには、セキュアメモリＩ／Ｆ２１２が転送元あるいは転送先いずれかのアクセスが不正であると判断した時点ですぐに例外処理を行ってもよい。例えば、セキュアメモリＩ／Ｆ２１２にハードウェアリセット機能を搭載し、セキュアメモリＩ／Ｆ２１２が不正を検出した際にＬＳＩをリセットする。この場合、ライブラリを介すことなくハードウェアのリセット処理が実行されるため、ライブラリ処理の影響を受けることなく、高速に例外処理を実行することが可能となる。
【００４０】
また、転送元先頭アドレスレジスタ３０１、転送先先頭アドレスレジスタ３０２、転送データ数レジスタ３０３をそれぞれ設定することを述べたが、転送データ数レジスタ３０３に値を設定する代わりに、転送元先頭アドレスレジスタおよび転送元最終アドレスレジスタ、転送先先頭アドレスレジスタおよび転送先最終アドレスレジスタをそれぞれ設けて設定することによっても同様の処理を実現することが可能である。この場合には転送データ数レジスタを設けなくても転送元先頭アドレスと転送元最終アドレスから転送データ数を算出することができる。同時に転送先先頭アドレスと転送先最終アドレスからも転送データ数を算出することができる。このとき、それぞれ転送元の各アドレスと転送先の各アドレスから算出した転送データ数が一致した場合には、設定された各アドレスが正常であることも判断することが可能となり、アドレスの正当性を確認することが可能となる。もちろん転送データ数レジスタも追加で設け、それぞれ算出された転送データ数との比較判定を行なった場合には、さらに厳しく設定された各パラメータの正当性を確認することができる。
【００４１】
安全性よりも処理の高速性を重視する場合には、設定するレジスタの数を削減することで対応する。例えば、転送元先頭アドレスレジスタと、転送元最終アドレスレジスタおよび転送先先頭アドレスレジスタを設けた場合には、転送データ数レジスタ設定が不要な３箇所のレジスタ設定のみでよく、セキュアメモリＩ／Ｆ２１２は転送元先頭アドレスと転送元最終アドレスから算出される転送データ数を用いて転送先最終アドレスを算出することにより、不正なアクセスが発生したかどうかを知ることができる。転送元先頭アドレスレジスタと、転送先先頭アドレスレジスタおよび先頭先最終アドレスレジスタを設けた場合でも同様な効果が得られる。
【００４２】
また、転送元先頭アドレスレジスタと転送元最終アドレスレジスタ、転送先先頭アドレスレジスタおよび転送データ数レジスタを設けた場合には、転送元先頭アドレスと転送元最終アドレスから算出した転送データ数が、転送データ数レジスタに設定された値と一致するかを判断し、設定された各パラメータの正当性を確認することができる。このように安全性を重視する場合には設定するレジスタの種類を増やし、高速性を重視する場合には設定するレジスタの種類を減らすことで柔軟に対応することができる。このとき、転送データ処理に必要となる最低限の設定するレジスタは設けておかなければならない。
【００４３】
また転送元および転送先両方のアクセスが正当であると判断した後に限ってデータ転送処理を実行する場合を例として述べたが、アクセスの正当性の判断を行なう前にデータ転送処理を実行し、実際に不正なアクセスが発生した時点で、あるいは不正なアクセスが発生する直前にてデータ転送処理を停止した後、異常完了ステータスを格納したり、ＬＳＩのリセット処理を実行したりすることでもよい。これにより実際にアクセスしているアドレスが正当であるかどうかを判断することによって不正なアクセスを排除することができる。
【００４４】
また、異なるメモリ間におけるデータ転送処理を実行する場合を例として述べたが、同一メモリ間におけるデータ転送処理においても同様な効果を得ることが可能である。
【００４５】
上述した処理により、転送データ処理におけるアクセス領域の正当性判定をハードウェアであるセキュアメモリＩ／Ｆにて行うことが可能となり、ライブラリは各パラメータの設定を行うことのみでデータ転送処理を高速に行うことが可能となる。
（第２の実施の形態）
以下、本発明に係る第２の実施の形態について図面を参照して詳細に説明する。
【００４６】
図５は、セキュアメモリＩ／Ｆ２１２にて入出力に使用される別のレジスタ構成図である。
【００４７】
転送元先頭アドレスレジスタ３０１、転送先先頭アドレスレジスタ３０２および転送データ数レジスタ３０３に加えて、転送元メモリ種別指定レジスタ５０１と転送先メモリ種別指定レジスタ５０２を含み構成される。
【００４８】
転送元メモリ種別指定レジスタ５０１には、転送元となるメモリの種別を指定することとし、例えば、ＲＡＭ１０１を転送元メモリとする場合には０１ｈ、ＲＯＭ１０２の場合には０２ｈ、不揮発性メモリの場合には０３ｈを指定することとする。同様に転送先メモリ種別指定レジスタ５０２には、転送先となるメモリの種別を指定することとする。
【００４９】
前述例のように、アドレス１２０００ｈ番地からアドレス０１０００ｈ番地へ１０ｈバイトデータを転送する処理がＯＳから依頼された場合のデータ転送処理の流れを図６のフローチャートを用いて説明する。
【００５０】
所定のデータ転送処理を行うためにＯＳから呼び出されたライブラリにてデータ転送処理が開始されたら、転送元メモリ種別指定レジスタ５０１には不揮発性メモリ１０３を示す０３ｈを設定し、転送元先頭アドレスレジスタ３０１にはアドレス１２０００ｈを設定する（ステップＳ４０２、Ｓ６０１）。また、転送先メモリ種別指定レジスタ５０２にはＲＡＭ１０１を示す０１ｈを設定し、転送先先頭アドレスレジスタ３０２にはアドレス０１０００ｈを設定するとともに（ステップＳ４０３、Ｓ６０２）、転送データ数レジスタ３０３に転送データ数１０ｈを設定した後、データ転送処理をセキュアメモリＩ／Ｆ２１２に依頼する（ステップＳ４０４、Ｓ４０５）。
【００５１】
データ転送処理が依頼されたセキュアメモリＩ／Ｆ２１２では以降、アクセス権の判定を行うことになるが（ステップＳ６０３）、各メモリデバイスが実装される範囲に従ってアクセス権が判定される。
【００５２】
転送元アクセス領域のアドレス１２０００ｈ〜１２００Ｆｈは指定された不揮発性メモリ１０３が実装されている領域であるアドレス１００００ｈ〜１７ＦＦＦｈの範囲内でなければならない。また、転送先アクセス領域のアドレス０１０００ｈ〜０１００Ｆｈは指定されたＲＡＭ１０１が実装されている領域であるアドレス０１０００ｈ〜０３ＦＦＦｈの範囲内でなければならない。
【００５３】
例えば、転送元先頭アドレスレジスタ３０１に０６０００ｈが設定された場合には、転送元アクセス領域はアドレス０６０００ｈ〜０６００Ｆｈとなる。このとき、未実装領域ではなく正しくＲＯＭ１０２が実装されている領域内であるが、指定されたメモリ種別である不揮発性メモリ１０３とは異なるため不正なアクセスであると判断される。したがって、意図とは異なる不正なメモリ領域へのアクセスが発生した場合において不正アクセスを検知することが可能となる。
【００５４】
また、転送元先頭アドレスレジスタ３０１にはアドレス１２０００ｈ、転送先先頭アドレスレジスタ３０２にはアドレス０１０００ｈを設定したが、同時にメモリ種別が指定されていることから転送元先頭アドレスレジスタ３０１にはアドレス２０００ｈ、転送先先頭アドレスレジスタ３０２には１０００ｈとするアドレス設定を行ってもデータ転送を行うことが可能となる。この場合には、転送元先頭アドレスレジスタ３０１および転送先先頭アドレスレジスタ３０２に必要な各レジスタサイズを３バイトから２バイトへ削減することが可能となる。
【００５５】
また、転送元メモリ種別指定レジスタ５０１と転送先メモリ種別レジスタ５０２に同じメモリ種別を指定した同一メモリ間におけるデータ転送処理においても同様な不正アクセスを検知する効果が得られる。
【００５６】
上述した処理では、メモリ種別を指定することから未実装領域に対する不正アクセスのみではなく、実装されている各メモリデバイスの範囲毎に意図しないメモリデバイスに対する不正アクセスの発生を検出することが可能となる。
（第３の実施の形態）
以下、本発明に係る第３の実施の形態について図面を参照して詳細に説明する。
【００５７】
図７は、本発明に係るＬＳＩ９０１を搭載したＩＣカード９０２におけるメモリ構成の別の一例図である。
【００５８】
ＲＯＭ１０２内にセキュアメモリＩ／Ｆ２１２を使用してデータ転送処理を実行するライブラリが格納されるが、ライブラリ[１]７０１とライブラリ[２]７０２が格納されている。ライブラリ[１]７０１とライブラリ[２]７０２は同じ処理を行うライブラリである。
【００５９】
ライブラリ[１]はアドレス０Ｅ０００ｈ〜０ＥＦＦＦｈに、ライブラリ[２]はアドレス０Ｆ０００ｈ〜０ＦＦＦＦｈにそれぞれ格納されている。その他にも様々な機能を有するライブラリがＲＯＭ１０２に格納されているがここでは省略する。
【００６０】
ＲＯＭ１０２に複数のカードＯＳ、ＯＳ＿Ａ９１０とＯＳ＿Ｂ９１１が存在する場合において、例えば、ＯＳ＿Ａ９１０がデータ転送処理を行う際にはライブラリ[１]７０１を使用し、ＯＳ＿Ｂ９１１がデータ転送処理を行う際にはライブラリ[２]７０２を使用することとする。
【００６１】
セキュアメモリＩ／Ｆ２１２が転送元先頭アドレスレジスタ３０１、転送先先頭アドレスレジスタ３０２、転送データ数レジスタ３０３や転送元メモリ種別指定レジスタ５０１、転送先メモリ種別指定レジスタ５０２に設定された情報をもとにアクセス権を判定する。このとき、ＯＳ＿Ａ９１０から指定されたデータ転送処理であるか、ＯＳ＿Ｂ９１１から指定されたデータ転送処理であるかを判断する。判断する方法の一例としては、ＯＳ＿Ａ９１０が指定したか、ＯＳ＿Ｂ９１１が指定したかを区別するフラグをＲＡＭ１０１に設ける。ＯＳ＿Ａ９１０がデータ転送処理を行なう際には、ＲＡＭ１０１に設けたフラグの値を０１ｈとして処理をライブラリに受け渡す。ＯＳ＿Ｂ９１１がデータ転送処理を行なう際には、フラグの値を０２ｈとして処理をライブラリに受け渡す。処理を受け渡されたライブラリやセキュアメモリＩ／Ｆ２１２はそのフラグの値を読み出すことにより、ＯＳ＿Ａ９１０から指定されたデータ転送処理であるか、ＯＳ＿Ｂ９１１から指定されたデータ転送処理であるかを判別することが可能となる。フラグはＲＡＭ１０１に設けるのではなく、レジスタや不揮発性メモリ１０３に設けてもよい。
【００６２】
また別の方法としては、実行されているＣＰＵの命令のアドレス値によりＯＳ＿Ａ９１０から指定されたデータ転送処理であるか、ＯＳ＿Ｂ９１１から指定されたデータ転送処理であるかを判別することが可能となる。ＣＰＵの実行命令のアドレス値がライブラリ[１]７０１が格納されているアドレス０Ｅ０００ｈ〜０ＥＦＦＦｈの範囲内であれば、ＯＳ＿Ａ９１０がデータ転送処理を実行したと判断でき、ＣＰＵの実行命令のアドレス値がライブラリ[２]７０２が格納されているアドレス０Ｆ０００ｈ〜０ＦＦＦＦｈの範囲内であれば、ＯＳ＿Ｂ９１１がデータ転送処理を実行したと判断できる。また、ＣＰＵの実行命令のアドレス値がアドレス０Ｅ０００ｈ〜０ＦＦＦＦｈ以外の範囲であれば不正ライブラリからのアクセスがあったと判断することも可能である。
【００６３】
セキュアメモリＩ／Ｆ２１２のアクセス権判定処理において、ＯＳ＿Ａ９１０からのアクセスが発生した場合においては、アクセス許可領域を例えば、不揮発性メモリＡ１０４（アドレス１００００ｈ〜１３ＦＦＦｈ）のみとし、ＯＳ＿Ｂ９１１からのアクセスが発生した場合においては、アクセス許可領域を不揮発性メモリＢ１０５（アドレス１４０００ｈ〜１７０００ｈ）のみとすることにより、各カードＯＳからのアクセスに対して異なるアクセス許可領域を設定することが可能となる。
【００６４】
また、図８にセキュアメモリＩ／Ｆ２１２にて入出力に使用される別のレジスタ構成図を示す。ＬＳＩに電源が供給されることでリセットが解除され、ＬＳＩが動作を開始した直後の状態を動作モードＡ、指定の照合鍵による鍵照合が正常に実行されたときに動作モードＢとしたとき、それぞれの動作モード状態を保持する動作モードレジスタ８０１を設ける。例えば、動作モードレジスタ８０１の値を動作モードＡであれば０１ｈとし、動作モードＢであれば０２ｈとして設定、判別する。セキュアメモリＩ／Ｆ２１２はアクセス権判定処理を行う際において動作モードレジスタ８０１の状態を読み出し、動作モード状態に従ってアクセス可能となる範囲を変更する。
【００６５】
動作モードレジスタ８０１の状態が動作モードＡであった場合には、例えば不揮発性メモリ１０３全領域に対するアクセスを不可とするか、もしくは不揮発性メモリＡ１０４の領域に対するアクセスのみを許可とし、限定的なアクセスしか許可されないようにする。また、動作モードレジスタ８０１の状態が動作モードＢであった場合には、不揮発性メモリ１０３全領域に対するアクセスを許可にする。ここでは不揮発性メモリ１０３についてアクセス可能となる範囲を変更することを述べたが、ＲＡＭ１０１やＲＯＭ１０２についても同様にそれぞれ異なるアクセス範囲を設定することが可能である。これにより所定の照合鍵を知らない限り、ある限定された領域に対してはアクセスできないという状態を実現することができる。
【００６６】
前述においては、ＣＰＵ９０６の実行命令のアドレス値によってどのライブラリから処理命令が発生したのかを判断する場合について述べたが、ＣＰＵ９０６の実行命令のアドレス値を使用せずに、ライブラリにて動作モードレジスタ８０１のモード状態を直接設定することによってもアクセス権判定処理の実現が可能となる。
【００６７】
例えば、ライブラリ[１]７０１がデータ転送処理を行う場合には動作モードレジスタ８０１に動作モードＣを示す１１ｈを設定して、セキュアメモリＩ／Ｆ２１２に処理を依頼する。また、ライブラリ[２]７０２がデータ転送処理を行う場合には動作モードレジスタ８０１に動作モードＤを示す１２ｈを設定して、セキュアメモリＩ／Ｆ２１２に処理を依頼する。
【００６８】
セキュアメモリＩ／Ｆ２１２はアクセス権判定処理の際に、動作モードレジスタ８０１の状態を読み出し、ライブラリ[１]７０１から処理依頼が発生したのか、ライブラリ[２]７０２から処理依頼が発生したのかを判断することができ、各動作モード状態に従ってアクセス可能となる範囲を変更する。
【００６９】
上述した処理により、動作モードの状態に従ってメモリ種別毎にアクセス可能となる領域を変更することが可能となる。
【００７０】
さらに動作モードの状態として、通常の動作モードに加えてＯＳの開発段階におけるデバックモードを設け、通常の動作モードであるかデバッグモードであるかを判定するための解析モードレジスタ８０２を設定する。デバッグモードはＯＳの開発段階における不具合の原因を特定するために使用される。デバッグモードでの動作を行う場合には解析モードレジスタ８０２の値を０１ｈに設定し、通常の動作モードでの動作を行う場合には解析モードレジスタ８０２の値を００ｈに設定する。
【００７１】
解析モードレジスタ８０２の値はＬＳＩ外部からの設定を可能とし、ＯＳの開発が完了して通常使用する段階になった時点において解析モードレジスタ８０２の値を００ｈ固定とする。解析モードレジスタ８０２の値を設定する回路を切り離し、排除するなどして以降は外部から設定変更できないようにする。
【００７２】
また、ＬＳＩを開発する段階におけるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等を用いる場合においては解析モードレジスタ８０２の値を０１ｈの状態となるように実装し、ＬＳＩ製造時においては解析モードレジスタ８０２の値が常に００ｈの状態となるように実装することでもよい。
【００７３】
セキュアメモリＩ／Ｆ２１２によるアクセス権判定において不正アクセスが検知された場合に、ライブラリはこの解析モードレジスタ８０２の値を読み出す。解析モードレジスタ８０２の状態がＯＳ開発時におけるデバッグモードであった場合には、ライブラリはＯＳへ異常完了ステータスを返送する。一方、解析モードレジスタ８０２の状態が通常動作モードであった場合には、ライブラリはＯＳへ異常完了ステータスを返送せずにすぐにＬＳＩを初期化（リセット）する。したがって、解析モードでの動作中においては不正アクセスによるＬＳＩの初期化は発生せず、異常完了ステータスを得ることができる。
【００７４】
上述した処理では、ＯＳ開発時においてＬＳＩの動作中にリセットが発生した場合、不正アクセスが発生したことによるものであるのか、あるいは、ＯＳプログラム自身にソフトウェアバグが内在していたことによるものであるかを判定できないという事象は発生せず、ＯＳプログラム自身にソフトウェアバグが内在していたと判断することができる。また、特定の異常完了ステータスを得ることで確実に不正アクセスによる異常が発生したことを開発者が判断することが可能となる。
【００７５】
ＯＳ開発完了後においては、解析モードレジスタ８０２の値を通常動作モードの状態と設定することにより、不正アクセス発生時には即座にＬＳＩが初期化されることから、高いセキュリティ性が確保されることになる。
【産業上の利用可能性】
【００７６】
本発明にかかるＩＣカードおよびメモリ間のデータ転送制御方法は、複数のメモリデバイスを有し、メモリへの不正アクセスを効率よく検知する効果を有し、かかる効果が求められるＩＣカード等について有用である。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態に係るＩＣカードメモリのデータ構成例を示す図である。
【図２】本発明の第１の実施の形態に係るＩＣカードシステムの構成を示す機能ブロック図である。
【図３】セキュアメモリＩ／Ｆにおける第１の入出力レジスタ構成例を示す図である。
【図４】データ転送処理のフローチャートである。
【図５】第２の実施の形態における、セキュアメモリＩ／Ｆにおける第２の入出力レジスタ構成例を示す図である。
【図６】第２の実施の形態のデータ転送処理のフローチャートである。
【図７】本発明の第３の実施の形態に係るＩＣカードメモリのデータ構成例を示す図である。
【図８】第３の実施の形態における、セキュアメモリＩ／Ｆにおける第３の入出力レジスタ構成例を示す図である。
【図９】従来のＩＣカードシステムの構成を示す機能ブロック図である。
【図１０】従来のソフトウェア構成を示す概念図である。
【符号の説明】
【００７８】
１０１…ＲＡＭ実装エリア
１０２…ＲＯＭ実装エリア
１０３…不揮発性メモリ実装エリア
１０４…不揮発性メモリＡ実装エリア
１０５…不揮発性メモリＢ実装エリア
１０６…未実装エリア
２１２…セキュアメモリＩ／Ｆ
３０１…転送元先頭アドレスレジスタ
３０２…転送先先頭アドレスレジスタ
３０３…転送データ数レジスタ
３０４…ステータスレジスタ
５０１…転送元メモリ種別指定レジスタ
５０２…転送先メモリ種別指定レジスタ
７０１…ライブラリ[１]実装エリア
７０２…ライブラリ[２]実装エリア
８０１…動作モードレジスタ
８０２…解析モードレジスタ
９０１…ＬＳＩ
９０２…ＩＣカード
９０３…リーダライタ
９０４…復調部
９０５…復号部
９０６…ＣＰＵ
９０７…ＲＡＭ
９０８…ＲＯＭ
９０９…不揮発性メモリ
９１０…ＯＳ＿Ａ
９１１…ＯＳ＿Ｂ
９１２…メモリＩ／Ｆ
９１３…符号部
９１４…変調部
１００１…カードＯＳ
１００２…不揮発性メモリ
１００３…ＲＡＭ
１００４…ＲＯＭ
１００５…ライブラリ
【図１】
2008129697.tif 000003
【図２】
2008129697.tif 000004
【図３】
2008129697.tif 000005
【図４】
2008129697.tif 000006
【図５】
2008129697.tif 000007
【図６】
2008129697.tif 000008
【図７】
2008129697.tif 000009
【図８】
2008129697.tif 000010
【図９】
2008129697.tif 000011
【図１０】
2008129697.tif 000012