(57)【特許請求の範囲】
【請求項１】
スマートカードであって、
スマートカード・チップをその上に設ける基板と、
前記スマートカード・チップと動作可能なように接続される前記基板上の２次メモリ・デバイスと、
を備え、
前記２次メモリ・デバイスは、それぞれが固有のシーケンス番号を含む複数のデータ・ページを、格納する能力があり、各データ・ページは、前記スマートカード・チップ及びデータ・ページの両者に対して固有のキーを用いて暗号化され、前記スマートカード・チップで生成され、
各データ・ページに含まれるシーケンス番号のコピーは、データ・ページとは別個に前記スマートカード・チップ内に格納されて変更されることなく保護され、従って、前記ページが読み取られるときに、前記ページを認証するために、前記ページに伴って取り出された該ページに含まれるシーケンス番号は、前記スマートカード・チップ内に格納されたシーケンス番号と比較されることができ、
特定のデータ・ページと関連付けられた該特定のデータ・ページに含まれるシーケンス番号は、前記ページが変更または更新される度に、変更されることを特徴とするスマートカード。
【請求項２】
請求項１に記載のスマートカードであって、前記２次メモリ・デバイスは、フラッシュＲＯＭである、スマートカード。
【請求項３】
請求項１又は請求項２に記載のスマートカードであって、前記格納されたシーケンス番号は、前記スマートカード・チップに格納されている、スマートカード。
【請求項４】
請求項３に記載のスマートカードであって、前記格納されたシーケンス番号のうち幾つかは、前記２次メモリ・デバイスに格納された前記複数のデータ・ページの少なくとも１つのページ内に格納され、この少なくとも１つのページに対する前記シーケンス番号は、前記スマートカード・チップに格納されている、スマートカード。
【請求項５】
請求項１から請求項４の何れか１項に記載のスマートカードであって、各データ・ページ毎のシーケンス番号は、有効なシーケンス番号が何であるかを攻撃者が決定することを困難にするために、ランダムに生成された値に初期設定される、スマートカード。
【請求項６】
請求項１から請求項５の何れか１項に記載のスマートカードであって、各ページは、読むことを要求され得る任意の特定のページが要求されたページであることを前記スマートカードが確認できるように、そのページ番号のコピーを含む、スマートカード。
【請求項７】
請求項１から請求項６の何れか１項に記載のスマートカードであって、各ページ・データの保全性は、前記ページの各々に格納された暗号ＭＡＣによって保護される、スマートカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、改良されたスマートカードに関する。スマートカードは、その形状がしばしば矩形である基板を含み、この基板は、カード・リーダと対話するデータおよび／またはプログラムを格納することができる電子チップと一体化して形成されている。
【背景技術】
【０００２】
スマートカードは、識別および認証システムにおいてますます使用されるようになっているが、今日まで、その有用性は、チップを形成するのに使用されるダイ（ｄｉｅ）の寸法によってメモリ容量が制限されることにより、限られたものとなっている。オン・カード・アプリケーションがますます精巧になるのに伴い、このようなメモリ容量の制限は、ますます問題となっている。
【０００３】
フラッシュＲＯＭなどの２次メモリ・チップを付加することにより、カードの記憶容量が大幅に拡張することができることが認識されている。ただし、このことに関する問題は、スマートカードが有用であるためには、２次メモリ・デバイスに保持されるデータは、スマートカード・チップ内部に格納されているデータと同様に、そのセキュリティが良好でなければならないことである。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明によるスマートカードは、基板上に、動作可能なようにスマートカード・チップに接続された２次メモリ・デバイスを、備えることを特徴とする。
好ましくは、２次メモリ・デバイスは、複数のデータ・ページを格納する能力があり、各ページは、固有のシーケンス番号と関連付けられ、シーケンス番号は、データ・ページとは別個に格納され、従って、ページが読み取られるときに、ページを認証するために、そのページを用いて取り出されたシーケンス番号を、格納されたシーケンス番号と比較することができるようになる。各ページは、ページおよびチップ固有キーによって、暗号化され署名される。
【発明を実施するための最良の形態】
【０００５】
次に、図面を参照して、本発明によるスマートカードの実施形態を例として詳細に説明する。
図１から分かるように、本発明のスマートカード１０は、従来のスマートカード基板と類似しているが２つの電子チップを設ける単一の基板１２と、安全なマイクロコントローラの役割をする１次スマートカード・デバイス１４と、スマートカード・マイクロコントローラに接続された外部メモリ（ｅｘｔｅｒｎａｌ  ｍｅｍｏｒｙ、ＸＭＥＭ）・チップ１６と、を含む。ＸＭＥＭデバイス１６は、フラッシュＲＯＭとすることが好都合であるが、他の任意の不揮発性または電子的メモリ・デバイスを使用することもできる。
【０００６】
安全に通信し、スマートカードに接続されたＸＭＥＭにデータを格納するために、低い水準において、スマートカード・オペレーティング・システムとＸＭＥＭとの間での通信機能が、必要とされる。これらの機能は、ＸＭＥＭにおいてデータを読み取り更新するために、高水準の機能によって呼び出される。ＸＭＥＭは、例えば、ＡＴＭＥＬのＡＴ４５ＤＢ３２１Ｂ  ４メガバイト・シリアルＤａｔａＦｌａｓｈ（ＡＴＭＥＬ  ＡＴ４５ＤＢ３２１Ｂ  ４Ｍｂｙｔｅ  Ｓｅｒｉａｌ  Ｄａｔａ  Ｆｌａｓｈ）とすることができる。ＸＭＥＭとの通信は、ＡＴＭＥＬのＡＴ９０３２３２ＣＳシリアル周辺インターフェース（ｓｅｒｉａｌ  ｐｅｒｉｐｈｅｒａｌ  ｉｎｔｅｒｆａｃｅ、「ＳＰＩ」）ハードウェアを用いて実装され、入力／出力線のうちの１つが、チップ選択に使用される。ただし、上記の原理は、シリアル・フラッシュ・デバイスに相互接続するための使用可能な入力／出力を有する、任意のスマートカード・マイクロ・コントローラに適用される。
【０００７】
この例では、各ＸＭＥＭページは、５２８バイトを有する。ページ構造は、図２に示されている。最初の８バイト（ページ・ヘッダ）は、ページが消去されないことを指し示すための１バイト（０ｘＦＦでない値）と、ランダム・データの５バイトと、ページ番号を指し示す２バイトと、シーケンス番号の１バイトと、を含む。ページ・ヘッダの後には、５１２バイトのデータが続く。末尾の８バイトは、５１２データ・バイトの暗号化ブロック・チェーンを用いて暗号化されたページ・ヘッダのコピーを含む。ページ・ヘッダは、暗号化されておらず、従って、チップは、ページ・キーを導き出すことが可能になる。
【０００８】
本発明者が提供するＸＭＥＭドライバは、セキュリティと信頼性を高めるために以下の機能を実装する。
・ページ内の５１２データ・バイトは、トリプルＤＥＳ（データ暗号化規格）ＣＢＣで暗号化される。データに対するどのような変更も、ＭＡＣ（メッセージ認証暗号文（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｒｙｐｔｏｇｒａｍ））を、変更し無効にする。
・各ページは、８バイトのトリプルＤＥＳ  ＭＡＣを含む。
・読み取られたページが要求されたページであることを確認できるようにするために、各ページは、そのページ番号で暗号的に組み込まれている。ページ番号は、変更されないようにページＭＡＣによって保護される。
・ページ・キーを導き出すために使用されるマスタＤＥＳキーは、チップに固有であり、最初にチップがリセットされたときに内部に自動的に生成される。これらのＤＥＳキーは、外部から読み取り更新することはできない。
・ページを暗号化し署名するためのＤＥＳキーは、ページに対する更新毎に、マスタ・キーと、ランダム・データと、ページ番号と、ページ・シーケンス番号とから再生成される。これは、キー従ってＭＡＣがページの更新毎に変更されるのに伴い、キーを得るための既知のテキスト攻撃（ｔｅｘｔ  ａｔｔａｃｋ）の複雑さを増大させる追加のセキュリティ機能である。
・各ページは、ページに対する更新毎に増分される１バイトのシーケンス番号を含む。シーケンス番号は、ページ読取り動作の際に検証される。シーケンス番号は、ランダム数であり、ページに対する更新毎に変更され、従って、シーケンス番号は、ページに対する更新の合計の数から導き出すことができない。ページ・シーケンス番号の使用は、前の内容を同じページに与えることによる攻撃についての複雑さを増大させる。これは、シーケンス番号なしでも、ページが有効なＭＡＣおよび有効なページ番号を有するときに可能である。
・ＸＭＥＭに対するすべての更新は、プログラミング後にＸＭＥＭを読み取ることにより検証される。
・ハードウェア抽象化層（「ＨＡＬ」）機能は、終了する前にページの読取りまたは更新を３回試みる。
・ページが消去されたことが分かった場合、ページは、読み取りの際にランダム値に初期化される。従って、外部からページを消去して、既知の消去された値のページを、内部で読み取られるように強制することは不可能である。
【０００９】
（シーケンス番号）
ＡＴＭＥＬのＡＴ４５ＤＢ３２１Ｂは、８１９２ページのフラッシュ・メモリを含む。上述のように、ＸＭＥＭの各ページは、別個のシーケンス番号（１バイト）を有する。シーケンス番号のコピーは、読取り時にページと比較するために、他の場所に格納されなければならない。シーケンス番号のコピーが変更されるのを差し止めるために、それは、保護されなければならない。このことは、すべてのシーケンス番号を、スマートカード内部で格納することにより達成される。これは、シーケンス番号に対して、８１９２バイトのＥＥＰＲＯＭを用意する必要があるため、すべての事例で適切となり得るものではない。この問題は、各々が他の８１６０ページのうち２５６個のシーケンス番号を格納するように３２ページのＸＭＥＭを用意することにより解決する。これらのページは、通常通り保護されているが、そのシーケンス番号は、スマートカードＥＥＰＲＯＭに格納される。任意選択で、この３２個のシーケンス番号は、スマートカードＥＥＰＲＯＭに格納される単一のバイトを作成するために、排他的論理和をとることができる。この結果、ＥＥＰＲＯＭの使用は、８１９２バイトから２５６バイトへと節約される。
【００１０】
次に、図３では、ページの外部読取りおよび更新の関数の呼出しシーケンスを以下に詳細に説明する。
【００１１】
ｒｅａｄＸＭＥＭＰａｇｅ：
ｖｏｉｄ  ｒｅａｄＸＭＥＭＰａｇｅ（ｗｏｒｄ  ｐａｇｅＮｕｍ）
この関数は、ＸＭＥＭからページを読み取る。この関数は、ｇｅｔＰａｇｅＳｅｑＮｕｍ関数を呼び出して、期待されたページ・シーケンス番号を読み取り、それを受け取ったページと比較する。
この関数は、ｄｏＲｅａｄ関数を呼び出して、ページの実際の読取りと、復号化と、ＭＡＣ検証とを行う。
ページ・シーケンス番号が誤りの場合は、エラーが返される。
【００１２】
ｕｐｄａｔｅＸＭＥＭＰａｇｅ：
ｖｏｉｄ  ｒｅａｄＸＭＥＭＰａｇｅ（ｗｏｒｄｐａｇｅ  Ｎｕｍ）
この関数は、ＸＭＥＭ内のページを更新し、既存のページ・シーケンス番号を取り出すために、前もってページが読み取られるよう求める。
この関数は、ｌｏａｄＰａｇｅＫｅｙｓ関数を呼び出して、ページ番号と、更新されたシーケンス番号と、ランダム・データに基づいて、ページに対する新しいキーを導き出す。
この関数は、プログラム・コマンドおよびデータをＸＭＥＭチップに送るためのＳＰＩハードウェアを使用して、ＸＭＥＭページの実際の更新を行う。
この関数は、ｄｏＲｅａｄ関数を呼び出して、ＸＭＥＭにおいて、更新されたデータが正しくプログラムされていることを検証する。
【００１３】
ｄｏＲｅａｄ：（内部関数）
ｖｏｉｄ  ｄｏＲｅａｄ（ｗｏｒｄ  ｐａｇｅＮｕｍ，ｂｙｔｅ  ｍｏｄｅ）
この関数は、ＸＭＥＭからページを読み取り、または、ＸＭＥＭ内のページを検証する。これには２つのモードがある。
１．ページを読み取り、ページ・キーを導き出すためにｌｏａｄＰａｇｅＫｅｙｓを呼び出して、データを復号し、ＭＡＣおよびページ番号が正しいことを検査する。
２．ページを読み取って、ＸＭＥＭページを更新するために送られた暗号化データが正しくプログラムされたことを検証する。
【００１４】
ｌａｏｄＰａｇｅＫｅｙｓ：
ｖｏｉｄ  ｌｏａｄＰａｇｅＫｅｙｓ（ｂｙｔｅ  ｍｏｄｅ，ｗｏｒｄ  ｐａｇｅＮｕｍ）
この関数は、ランダム・データと、ページ番号と、増分されたページ・シーケンス番号とを使用してページを更新する場合、または、それを読み取るために最初のＸＭＥＭページを多様化文字列として使用するとき、ページを暗号化／復号化するためにキーをロードし、キー多様化文字列を生成する。この多様化文字列は、チップ、ページ、およびシーケンス固有キーを与えるために、チップ固有マスタＸＭＥＭキーを用いて暗号化される。このキーは、ＤＥＳハードウェア内にロードされる。
【００１５】
ｇｅｔＰａｇｅＳｅｑＮｕｍ：
ｂｙｔｅ  ｒｅａｄＸＭＥＭＰａｇｅ（ｗｏｒｄ  ｐａｇｅＮｕｍ）
この関数は、ページのページ・シーケンス番号を返す。この関数は、ｒｅａｄＸＭＥＭＰａｇｅ関数により呼び出されて、ページ・シーケンス番号を返す。それは、要求された元のページ・シーケンス番号を含むＸＭＥＭページを読み取るために、ｒｅａｄＸＭＥＭＰａｇｅ関数を再帰呼出しする。
【図面の簡単な説明】
【００１６】
【図１】本発明による、スマートカード・チップおよび２次メモリ・デバイスを有するスマートカードを示す図である。
【図２】本発明のスマートカードで使用するための、外部メモリ（「ＸＭＥＭ」）ページの構造を示す図である。
【図３】本発明のスマートカード内で使用されるＸＭＥＭソフトウェアの呼出しツリーを示す概略図である。
【図１】
0005123524.tif 000002
【図２】
0005123524.tif 000003
【図３】
0005123524.tif 000004