(57)【要約】【課題】セキュリティ性が向上したＩＣカードを提供する。【解決手段】外部装置から送信されてくるコマンドに従って予め設定した処理を行うＩＣカードであって、格納したデータの書き換えが不可能な第１の不揮発性メモリと、１回のみ書き込み可能な第２の不揮発性メモリと、演算処理装置とを備え、第１の不揮発性メモリは第１の鍵生成データとして開発者が秘匿する第1メモリ暗号化鍵を格納し、第２の不揮発性メモリは第２の鍵生成データとして発行者が秘匿する第2メモリ暗号化鍵を格納し、演算処理装置は、外部装置から送信されてくるコマンドに従って、第１の鍵生成データと第２の鍵生成データとを予め設定したアルゴリズムで演算して、暗号化、復号化及びカード認証の少なくとも一方に用いるデータである暗号化鍵を算出する暗号化鍵算出部を具備するＩＣカード。【選択図】図１
2014175758.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から送信されてくるコマンドに従って予め設定した処理を行うＩＣカードであって、
少なくとも格納したデータの書き換えが不可能な第１の不揮発性メモリと、格納したデータの書き込みが１回のみ可能な第２の不揮発性メモリと、演算処理装置とを備え、
前記第１の不揮発性メモリは第１の鍵生成データとして開発者が秘匿する第1メモリ暗号化鍵を格納し、
前記第２の不揮発性メモリは第２の鍵生成データとして発行者が秘匿する第2メモリ暗号化鍵を格納し、
前記演算処理装置は、前記外部装置から送信されてくるコマンドに従って、前記第１の鍵生成データと前記第２の鍵生成データとを予め設定したアルゴリズムで演算して、暗号化、復号化及びカード認証の少なくとも一方に用いるデータである暗号化鍵を算出する暗号化鍵算出部を具備することを特徴とするＩＣカード。
【請求項２】
前記演算処理装置は、ライフサイクル管理部をさらに有し、ＩＣカードのライフサイクルの状態を管理することを特徴とする請求項１に記載のＩＣカード。
【請求項３】
外部装置から送信されてくるコマンドに従って予め設定した処理を行うＩＣカードの処理方法において、
ライフサイクルを確認する工程、
外部装置から送信されてくる発行者が秘匿する第２メモリ暗号化鍵の設定コマンドをコマンド受付部が受け付け
第２メモリ暗号化鍵を第２メモリ暗号化鍵書き込み部がメモリに書き込み、ライフサイクルを書き換える工程、
暗号化鍵算出部が、開発者が秘匿する第１メモリ暗号化鍵と発行者が秘匿する第２メモリ暗号化鍵を演算して、暗号化鍵を算出する工程、
前記暗号化鍵を使用することによってＥＥＰＲＯＭへ書き込みを行う工程、
を具備することを特徴とするＩＣカードの処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードに関し、特に、ＩＣカードのセキュリティを高めることを可能としたＩＣカードに関する。
【背景技術】
【０００２】
従来から、ＲＯＭの他に、データの書き換えが可能なＥＥＰＲＯＭを備えたＩＣカードが知られている（例えば、特許文献１参照。）この種のＩＣカードは、ＲＯＭやＥＥＰＲＯＭ等に複数の認証鍵を格納しており、外部装置から認証コマンドを受信した場合に該認証コマンドが指定する認証鍵の認証を行う。認証に成功すると、ＩＣカードは、ロック状態（例えば、データの書込み／読出しが不可能な状態）からロック開錠状態（例えば、データの書込み／読出しが可能な状態）となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２４３０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＩＣカードのセキュリティを高める方法として、認証試行回数に上限値を設定する方法がある。この方法では、ＩＣカードのＥＥＰＲＯＭに試行回数の上限値を予め格納しておく。また、実際に行われた認証試行回数をカウンター回路で計測し、その計測値がＥＥＰＲＯＭに格納されるようにしておく。そして、カウント値が試行回数の上限値に達すると、それ以上の認証行為を実施できなくなるように、ＩＣカードに予めプログラムしておく。
【０００５】
しかしながら、プログラムカウンタを強制的に変更し、カードＯＳに実装されているＥＥＰＲＯＭをＲＥＡＤする関数を実行することで、メモリ内の鍵値や機密データを強制的にダンプさせ鍵値を解析するアタック方法がある。
【０００６】
例えば、カードベンダーや委託された業者、つまりＯＳ開発者が、ＥＥＰＲＯＭ内に格納する数値や機密データの取り扱いについて実装するため、その暗号アルゴリズムや暗号化の鍵を知っている。そのため、ＯＳ開発者によってカード運用時にＥＥＰＲＯＭをダンプされた場合、復号化は容易であり、鍵値や機密データを暴露されてしまう。
【０００７】
また、従来技術では、媒体の固有情報や、暗号化鍵の鍵値を乱数にすることによって、内部犯行者によるＥＥＰＲＯＭダンプであっても機密情報を守る方法があるが、ＥＥＰＲＯＭのメモリ内の情報が１枚１枚異なるため、例えばカード発行者がカード発行が正常に行えたことを保証するために、例えばメモリ内のデータのハッシュ値やＣＲＣ値が一致することを確かめたいが、できないという問題があった。また、カードの品質評価者が品質を評価するにあたり、ＥＥＰＲＯＭのメモリ内の情報が１枚１枚異なるため、保障の範囲には限界があった。
【０００８】
そこで、この発明は、このような事情に鑑みてなされたものであって、セキュリティの向上を可能としたＩＣカードの提供を目的とする。さらに具体的には上記のアタックに対抗するＯＳ機構を提案し、ＯＳ開発者やカード発行者による内部犯行であっても、メモリダンプからの機密データの解析を防ぐ仕組みを提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の一態様に係るＩＣカードは、外部装置から送信されてくるコマンドに従って予め設定した処理を行うＩＣカードであって、少なくとも格納したデータの書き換えが不可能な第１の不揮発性メモリと、格納したデータの書き込みが１回のみ可能な第２の不揮発性メモリと、演算処理装置とを備え、前記第１の不揮発性メモリは第１の鍵生成データとして開発者が秘匿する第１メモリ暗号化鍵を格納し、前記第２の不揮発性メモリは第２の鍵生成データとして発行者が秘匿する第２メモリ暗号化鍵を格納し、前記演算処理装置は、前記外部装置から送信されてくるコマンドに従って、前記第１の鍵生成データと前記第２の鍵生成データとを予め設定したアルゴリズムで演算して、暗号化、復号化及びカード認証の少なくとも一方に用いるデータである暗号化鍵を算出する暗号化鍵算出部を具備することを特徴とするＩＣカードである。
【００１０】
また、上記のＩＣカードにおいて、前記演算処理装置は、ライフサイクル管理部をさらに有し、ＩＣカードのライフサイクルの状態を管理することを特徴とする請求項１に記載のＩＣカードである。
【００１１】
また、上記のＩＣカードにおいて、外部装置から送信されてくるコマンドに従って予め設定した処理を行うＩＣカードの処理方法において、ライフサイクルを確認する工程、外部装置から送信されてくる発行者が秘匿する第２メモリ暗号化鍵の設定コマンドをコマンド受付部が受け付け第２メモリ暗号化鍵を第２メモリ暗号化鍵書き込み部がメモリに書き込み、ライフサイクルを書き換える工程、暗号化鍵算出部が、開発者が秘匿する第１メモリ暗号化鍵と発行者が秘匿する第２メモリ暗号化鍵を演算して、暗号化鍵を算出する工程、前記暗号化鍵を使用することによってＥＥＰＲＯＭへ書き込みを行う工程、
を具備することを特徴とするＩＣカードの処理方法である。
【発明の効果】
【００１２】
本発明の一態様によれば、ＯＳ開発者が、ＲＯＭ上に設定した値をそのままメモリ暗号化用鍵として利用するのではなく、ＯＴＰ領域に発行時に発行者からコマンドで鍵値を設定してもらい、その値とＸＯＲした値を利用する。また、さらに一態様によれば、鍵値だけでなく暗号アルゴリズムなどを指定しても良い。また、上記ＸＯＲした値より暗号アルゴリズムをカードＯＳ側で自動設定される仕組みでも良い。
【００１３】
このような処理によって、ＯＳ開発者が設定した値と発行者が設定した値とで鍵値や暗号アルゴリズムが決定されるため、ＯＳ開発者や発行者等の内部犯行者がメモリをダンプしても機密データを保持できる。またＥＥＰＲＯＭメモリ内は１つの発行シナリオにたいして常に同一となるため、発行者が発行内容の確認として、メモリ内のハッシュ値やＣＲＴ値が同じになることをさえチェックできれば、発行の完全性を保証することが可能となる。
【００１４】
さらには、発行時にメモリ暗号化のセキュリティレベルをコマンド側で操作できるため、カードの用途に応じて、セキュリティの有り無しや鍵値を乱数にしたり暗号アルゴリズムを指定／自動に決定することが可能となる効果を有している。
【図面の簡単な説明】
【００１５】
【図１】本発明に係るＩＣカードの構成例を示すブロック図の一例である。
【図２】発行時の手順を示すフローチャートである。
【図３】発行確認時の手順を示すフローチャートである。
【図４】運用時の手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照しつつ説明する。なお、以下に説明する各図において、同一の構成を有する部分には同一の符号を付し、その繰り返しの説明は省略する。
＜第１実施形態＞
（構成）
【００１７】
図１は、本発明の第１実施形態に係るＩＣカード１００の構成例を示すブロック図である。
【００１８】
このＩＣカード１００は、外部装置から送信されてくるコマンドに従って予め設定した（即ち、所定の）処理を行うカードである。図１に示すように、ＩＣカード１００は、例えば、格納したデータの書き換えが不可能なＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０と、格納したデータの書き換えが１回のみ可能なＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）−ＲＯＭ２０と、格納したデータの書き換えが複数回可能なＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）３０と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０と、を備える。
【００１９】
ＲＯＭ１０は、その機能部として、格納したデータの書き換えが不可能な第１の不揮発性メモリ（第１メモリ暗号化鍵を格納するための第１メモリ暗号化鍵格納部１１を有する。ここで、第１メモリ暗号化鍵値は、例えば１６進数で表される。
【００２０】
ＯＴＰ−ＲＯＭ２０は、その機能部として、第２メモリ暗号化鍵値を格納するための第２メモリ暗号化鍵格納部２１を有する。ここで、第２メモリ暗号化鍵値は、例えば１６進数で表される。なお、このＯＴＰ領域は、１度しか値を書き込めない領域であって、この第２メモリ暗号化鍵値及び第１メモリ暗号化鍵値を、例えばＸＯＲした値を鍵値とすることによって、暗号アルゴリズムを決定する。
【００２１】
ＣＰＵ５０は、演算等の処理を行う部分であって、その機能部として、コマンド受付部と、第１メモリ暗号化鍵読み出し部と、第２メモリ暗号化鍵書き込み部と、暗号化鍵算出部と、メモリ暗号化部と、ＥＥＰＲＯＭ書き込み部と、ライフサイクル管理部と、を有する。
【００２２】
ＥＥＰＲＯＭ３０は、複数回書き換えが可能な領域であって、一般データ/鍵情報・機密データ等の情報が入っている。また、この領域にはライフサイクルの状態を記憶するライフサイクル格納部も有している。
【００２３】
コマンド受付部５１は、ＩＣカード１００が外部装置から受信したコマンドを図示しない入出力ポートを介して受け付ける。
【００２４】
第１メモリ暗号化鍵読み出し部は、格納したデータの書き換えが不可能な第１の不揮発性メモリの鍵を読み出すための部分である。ここでは、例えばＩＣカード１００の開発者側の暗号化鍵を読み出すための部分である。
【００２５】
第２メモリ暗号化鍵書き込み部は、格納したデータの書き込みが１回のみ可能な第２の不揮発性メモリの鍵を読み出すための部分である。ここでは、例えばＩＣカード１００の発行者側の予め決定した任意の鍵値を書き込むための部分である。
【００２６】
暗号化鍵算出部は、第１メモリ暗号化鍵及び第２メモリ暗号化鍵を例えば排他的論理和（ＸＯＲ）した値を算出する部分である。
【００２７】
メモリ暗号化部は、第１メモリ暗号化鍵及び第２メモリ暗号化鍵をＸＯＲし、暗号アルゴリズム（例えば、Ｔ−ＤＥＳ，ＡＥＳ１２８ｂｉｔ等）を決定する部分である。
【００２８】
ＥＥＰＲＯＭ書き込み部は、書き換え可能なＥＥＰＲＯＭに対し、一般データ／鍵情報・機密データ、ライフサイクル等を書き込む部分である。
【００２９】
ライフサイクル管理部は、ＩＣカード１００の現状の状態（発行時や運用時等）を管理する部分である。
（手順）
【００３０】
次に、図１に示したＩＣカード１００における「発行」の認証の手順について説明する。
【００３１】
図２は、ＩＣカード１００における「発行」の手順を示すフローチャートである。ここでは、ＯＴＰ−ＲＯＭ２０の第２メモリ暗号化鍵格納部２１に格納されている第２メモリ暗号化鍵値は、その初期値がＡＬＬ０ｘ００に設定されている場合を想定する。
【００３２】
図２の始めのステップでは、ＥＥＰＲＯＭに情報が入っていないカードに対し、ライフサイクルが未発行であることを確認する。この際に「発行」である場合は処理を中断し、「未発行」である場合は、次のステップに進むこととなる。次に、発行者によって外部装置から送信されてくる「第２メモリ暗号化鍵」の  設定コマンドをコマンド受付部が受け付ける。次に、第２メモリ暗号化鍵を第２メモリ暗号化鍵書き込み部によってメモリに書き込みライフサイクルを「発行中」に書き換える。
【００３３】
次に、ＲＯＭの中に格納されている第１メモリ暗号化鍵を読み出し、暗号化鍵算出部が第１、第２メモリ暗号化鍵を演算して、暗号化鍵を算出する。これにより、発行コマンドを受信する。鍵データおよび機密データ等のＥＥＰＲＯＭへの情報の書き込み時は、この暗号化鍵を使用することによって暗号化して格納する。
【００３４】
上記のステップを行うことによって、発行作業が完了となる。
【００３５】
次に、ＩＣカード１００における「発行確認時」の認証の手順について説明する。
【００３６】
まず、運用開始後に、発行者が発行確認コマンド（発行検証データ）を入れ、この発行確認コマンド（発行検証データ）を受信することによって、現在のライフサイクルが発行中であることを確認する。このとき、ライフサイクルが発行中になっていない場合は、処理を中断させ、発行中である場合にはカード内の発行状態より発行検証データを算出する。このときの一例として挙げられる処理は、ＲＯＭ，ＯＴＰ−ＲＯＭ，ＥＥＰＲＯＭのデータよりハッシュ値を演算するものが挙げられる。
【００３７】
その結果、コマンドより受信した発行検証データとカード内で演算した発行検証データが一致することを確認する。この際に発行検証データが一致しないときには処理を中断し、ここでデータが一致した場合には、ライフサイクルを運用中に書き換える。
【００３８】
これにより、ＩＣカード１００は出荷される。この後、ＩＣカードには、消費者等の個人情報が各々書き込まれることになる。
【００３９】
次に、ＩＣカード１００における「運用時」の認証の手順について説明する。
【００４０】
ここではまず、各々の個人情報が書き込まれたＩＣカード１００に対し、ライフサイクルの状態が運用中であることを確認する。ライフサイクルが運用中でない場合は、処理を中断する。一方でライフサイクルが運用中の場合は、開発者側により設定された第１メモリ暗号化鍵を読み出し、さらに発行者側が設定した第２メモリ暗号化鍵を読み出す。この第１、第２のメモリ暗号化鍵を演算して、暗号化鍵を算出する。その結果、運用コマンドを処理し、ＥＥＰＲＯＭに書き込まれた情報を読み出すなど、諸々の処理を行えるようにする。
【００４１】
なお、ＥＥＰＲＯＭ上の暗号化された鍵データおよび機密データへのアクセス時は、『暗号化鍵』で復号化して利用する。
【００４２】
本発明は、このような手順によってＩＣカードを発行、運用することによって、ＯＳ開発者が設定した値と発行者が設定した値とで鍵値や暗号アルゴリズムが決定されるため、ＯＳ開発者や発行者等の内部犯行者がメモリをダンプしても機密データを保持できる。またＥＥＰＲＯＭメモリ内は１つの発行シナリオにたいして常に同一となるため、発行者が発行内容の確認として、メモリ内のハッシュ値やＣＲＴ値が同じになることをさえチェックできれば、発行の完全性を保証することが可能となる。
【００４３】
本発明は、以上に記載した各実施形態に限定されるものではない。当業者の知識に基づいて各実施形態に設計の変更等を加えてもよく、そのような変更等を加えた態様も本発明の範囲に含まれる。
【００４４】
当然のことではあるが、本発明の利用分野は、ＩＣカードに限定されるものではなく、個人認証媒体やその他セキュリティ関連の製造物に対しても適用することが可能である。
【符号の説明】
【００４５】
１０  ＲＯＭ
１１  第１メモリ暗号化鍵格納部
２０  ＯＴＰ−ＲＯＭ
２１  第２メモリ暗号化鍵格納部
３０  ＥＥＰＲＯＭ
３１  一般データ／鍵情報・機密データ格納部
３２  ライフサイクル格納部
４０  ＲＡＭ
５０  ＣＰＵ
５１  コマンド受付部 
５２  第２メモリ暗号化鍵書き込み部
５３  第１メモリ暗号化鍵読み出し部
５４  暗号化鍵算出部
５５  メモリ暗号化部
５６  ＥＥＰＲＯＭ書き込み部
５７  ライフサイクル管理部
１００  ＩＣカード
【図１】
2014175758.tif 000003
【図２】
2014175758.tif 000004
【図３】
2014175758.tif 000005
【図４】
2014175758.tif 000006