(57)【要約】  データを暗号化／復号し、ＭＡＣ計算を介してデータの完全性を保護し、かつデータを検証するために、完全性鍵および暗号化鍵を用いて、書き換え可能オープンアクセス可能メモリに格納されたデータを反射攻撃から保護できる装置（たとえば携帯機器）および方法が本明細書に記載される。
2009517939.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能オープンアクセス可能メモリに格納されたデータを保護するための方法であって、前記方法が、
１つまたは複数の鍵（ＭＩＫ＿ｎおよび必要に応じてＭＣＫ＿ｎ）を生成するステップと、
前記１つまたは複数の鍵（ＭＩＫ＿ｎおよび場合によりＭＣＫ＿ｎ）を用いて、前記データを保護するステップと、
前記保護されたデータを前記書き換え可能オープンアクセス可能メモリに格納するステップと、
を含み、
前記生成ステップが、
疑似乱数関数（ＰＲＦ）、秘密鍵（ＰＫ）および単調レジスタカウンタ値（ｎ）を用いて、各鍵（ＭＩＫ＿ｎおよび必要に応じてＭＣＫ＿ｎ）タンパプルーフモジュールにおいて生成することと、
前記１つまたは複数の鍵（ＭＩＫ＿ｎおよび必要に応じてＭＣＫ＿ｎ）ならびに１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を生成することが可能であるように、各鍵（ＭＩＫ＿ｎおよび必要に応じてＭＣＫ＿ｎ）をタンパープルーフモジュールにおいて生成することと、
をさらに含む方法。
【請求項２】
前記１つまたは複数の鍵が、
前記疑似乱数関数（ＰＲＦ）、前記秘密鍵（ＰＫ）および前記単調レジスタカウンタ値（ｎ）を用いて生成される完全性鍵（ＭＩＫ＿ｎ）と、
同じＰＲＦまたは異なるＰＲＦ、前記秘密鍵（ＰＫ）および前記単調レジスタカウンタ値（ｎ）を用いて必要に応じて生成される暗号化鍵（ＭＣＫ＿ｎ）と、
を含む、請求項１に記載の方法。
【請求項３】
前記保護ステップが、
前記ＭＩＫ＿ｎを用いてメッセージ認証コード（ＭＡＣ）方法を前記データに適用することにより、前記データの完全性を保護することを含む、請求項１に記載の方法。
【請求項４】
前記データが暗号化されたデータである、請求項３に記載の方法。
【請求項５】
前記保護ステップが、
前記ＭＣＫ＿ｎを用いて暗号化方法を前記データに適用することにより、前記データの機密性を保護することを含む、請求項１に記載の方法。
【請求項６】
前記格納ステップが、前記保護されたデータと共に前記単調レジスタカウンタ値（ｎ）を格納することを含む、請求項１に記載の方法。
【請求項７】
書き換え可能オープンアクセス可能メモリに格納されたデータを保護するための方法であって、
１つまたは複数の現在の鍵（ＭＩＫ＿ｎおよび必要に応じてＭＣＫ＿ｎ）を用いて、前記書き換え可能オープンアクセス可能メモリに格納された古いデータの完全性を検証するステップと、
１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を計算するステップであって、各新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）が、疑似乱数関数（ＰＲＦ）、秘密鍵（ＰＫ）およびカウンタ値に１を加えた（ｎ＋１）を用いて計算されるステップと、
前記１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を用いて、前記検証された古いデータおよびもしあれば新しいデータを保護するステップと、
前記保護された古いデータおよびもしあれば前記保護された新しいデータを、前記書き換え可能オープンアクセス可能メモリに格納するステップと、
カウンタ値（ｎ＋１）を有するように単調レジスタを増分するステップと、
前記書き換え可能オープンアクセス可能メモリから前記検証された古いデータを消去するステップと、
を含む方法。
【請求項８】
前記古いデータの完全性を検証できない場合には、
前記書き換え可能オープンアクセス可能メモリに格納された前記古いデータは信頼できないので、前記古いデータを消去するかまたは、
前記書き換え可能オープンアクセス可能メモリに格納された前記古いデータは信頼できないので、前記古いデータを無効としてマークする、請求項７に記載の方法。
【請求項９】
前記１つまたは複数の新しい鍵が、
前記疑似乱数関数（ＰＲＦ）、前記秘密鍵（ＰＫ）および前記カウンタ値に１を加えた（ｎ＋１）を用いて生成される完全性鍵（ＭＩＫ＿ｎ）と、
同じＰＲＦまたは異なるＰＲＦ、前記秘密鍵（ＰＫ）およびカウンタ値に１を加えた（ｎ＋１）を用いて必要に応じて生成される暗号化鍵（ＭＣＫ＿ｎ）と、
を含む、請求項７に記載の方法。
【請求項１０】
前記保護ステップが、
前記ＭＩＫ＿ｎ＋１を用いてメッセージ認証コード（ＭＡＣ）方法を前記データに適用することによって、前記古いデータおよびもしあれば前記新しいデータの完全性を保護することを含む、請求項７に記載の方法。
【請求項１１】
前記保護されたデータが暗号化されたデータである、請求項１０に記載の方法。
【請求項１２】
前記保護ステップが、
前記ＭＣＫ＿ｎを用いて暗号化方法を前記データに適用することによって、前記古いデータおよびもしあれば前記新しいデータの機密性を保護することを含む、請求項７に記載の方法。
【請求項１３】
保護された前記データが、ＤＲＭ＿ｃｏｕｎｔｅｒおよび／またはＳＩＭカードプリペイド金額を含む、請求項７に記載の方法。
【請求項１４】
タンパープルーフモジュールと、
書き換え可能オープンアクセス可能メモリと、
を含む装置であって、
前記タンパープルーフモジュールが、次の動作、すなわち、
１つまたは複数の現在の鍵（ＭＩＫ＿ｎおよび必要に応じてＭＣＫ＿ｎ）を用いて、前記書き換え可能オープンアクセス可能メモリに格納された古いデータの完全性を検証する動作と、
１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を計算する動作であって、各新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）が、疑似乱数関数（ＰＲＦ）、秘密鍵（ＰＫ）およびカウンタ値に１を加えた（ｎ＋１）を用いて計算される動作と、
前記１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を用いて、前記検証された古いデータおよびもしあれば新しいデータを保護する動作と、
前記保護された古いデータおよびもしあれば前記保護された新しいデータを、前記書き換え可能オープンアクセス可能メモリに格納する動作と、
カウンタ値（ｎ＋１）を有するように単調レジスタを増分する動作と、
前記書き換え可能オープンアクセス可能メモリから前記検証された古いデータを消去する動作と、
を実行するプロセッサおよび保護されたソフトウェアを含む装置。
【請求項１５】
前記タンパープルーフモジュールが、前記古いデータの完全性を検証できない場合には、
前記書き換え可能オープンアクセス可能メモリに格納された前記古いデータは信頼できないので、前記古いデータを消去するかまたは、
前記書き換え可能オープンアクセス可能メモリに格納された前記古いデータは信頼できないので、前記古いデータを無効としてマークする、請求項１４に記載の装置。
【請求項１６】
前記１つまたは複数の新しい鍵が、
前記疑似乱数関数（ＰＲＦ）、前記秘密鍵（ＰＫ）および前記カウンタ値に１を加えた（ｎ＋１）を用いて生成される完全性鍵（ＭＩＫ＿ｎ＋１）と、
同じＰＲＦまたは異なるＰＲＦ、前記秘密鍵（ＰＫ）および前記カウンタ値に１を加えた（ｎ＋１）を用いて必要に応じて生成される暗号化鍵（ＭＣＫ＿ｎ＋１）と、
を含む、請求項１４に記載の装置。
【請求項１７】
前記保護ステップが、
前記ＭＩＫ＿ｎ＋１を用いてメッセージ認証コード（ＭＡＣ）方法を前記データに適用することによって、前記古いデータおよびもしあれば前記新しいデータの完全性を保護することを含む、請求項１４に記載の装置。
【請求項１８】
前記保護されたデータが暗号化されたデータである、請求項１７に記載の装置。
【請求項１９】
前記保護ステップが、
前記ＭＣＫ＿ｎを用いて暗号化方法を前記データに適用することによって、前記古いデータおよびもしあれば前記新しいデータの機密性を保護することを含む、請求項１４に記載の装置。
【請求項２０】
前記タンパープルーフモジュールが、物理的に保護されたメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭまたは電子ヒューズに前記単調レジスタを格納する、請求項１４に記載の装置。
【請求項２１】
タンパープルーフモジュールと、
書き換え可能オープンアクセス可能メモリと、
を含む装置であって、
前記タンパープルーフモジュールが、次の動作、すなわち、
疑似乱数関数（ＰＲＦ）、秘密鍵（ＰＫ）および単調レジスタカウンタ値（ｎ）を用いて鍵を生成する動作と、
前記生成された鍵を用いてデータの個別部分を保護する動作と、
データの前記保護された個別部分および前記単調レジスタカウンタ値（ｎ）を、前記書き換え可能オープンアクセス可能メモリに格納する動作と、
を実行するプロセッサおよび保護されたソフトウェアを含む装置。
【請求項２２】
前記プロセッサおよび前記保護されたソフトウェアが、他の生成された鍵を用いて、データの他の個別部分を保護するように機能し、また、データの前記保護された他の個別部分を、対応する他の単調レジスタカウンタ値と共に前記書き換え可能オープンアクセス可能メモリに格納する、請求項２１に記載の装置。
【請求項２３】
前記プロセッサおよび前記保護されたソフトウェアが、ＭＡＣを計算することによって、データの前記個別部分の各部分の完全性を保護するように機能し、次に、データの前記個別部分の全てに関連する前記格納された単調レジスタカウンタ値の全てにわたってＭＡＣを計算することによって、前記個別部分の全ての完全性を保護する、請求項２１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本発明は、書き換え可能オープンアクセス可能メモリ（rewritable openly accessible memory）に格納されたデータの機密性および完全性を保護するための装置（たとえば携帯機器）および方法に関する。
【背景技術】
【０００２】
背景
携帯機器は、格納されたデータの機密性および完全性の保証を支援するために、保護されたソフトウェアおよび保護されたハードウェアを用いる信頼できるプラットフォームを備えた処理システムを有することが多い。今日では、プロセッサシステムにおけるデータの機密性および完全性を保護するために利用できるいくつかの異なる技術がある。これらの既存の技術のいくつかは、次の通りである。 
・タンパープルーフメモリおよび処理。かかるメモリは、プロセッサチップの一体的な部分であってもよく、メモリに対する読み書き動作は、それらがプロセッサシステムを介してのみ実行できるように制限される。メモリはまた、あるタンパーレジスタンス技術によって物理的アクセスから保護された外部メモリであってもよい。 
・ワンタイムライトオンリー型メモリ。かかるメモリは、通常、秘密にする必要はないがしかし変更を不可能にすべきデータを格納するために用いられる。 
・完全性および機密性が保護されたメモリに秘密鍵が格納される処理システム。次に、この秘密鍵は、書き換え可能オープンアクセス可能メモリに格納されるデータの暗号化および完全性保護のために用いられる。
【０００３】
上記の第３の黒丸における考えに沿った技術に関する問題は、攻撃者が、現在のメモリデータを以前に記録されたデータと置き換えることが可能であり得るということである。この種の攻撃は、テレホンカードの初期から周知であり、ユーザの現在金額をそのプリペイドアカウントに格納する加入者識別モジュール（ＳＩＭ）カードでは最近になって見られる。基本的に攻撃者は、プリペイドサービスの所与の金額を示す新しい値がＳＩＭカードにロードされたそのときに、メモリデータを記録する。次に、ＳＩＭカードが利用された後で、攻撃者は、ＳＩＭカードが、今、未使用の値を有するごとく見えるように、現在の記録されたメモリデータを、以前に記録されたメモリデータであるように書き換える。
【０００４】
別の例は、ユーザによる視聴／再生が可能な回数に関してしばしば制限がある、デジタル著作権管理（ＤＲＭ）保護されたデータである。この場合には、ＤＲＭカウンタが格納されて完全性を保護されなければならない。ＳＩＭカードの場合と同様に、ＤＲＭカウンタは、攻撃者が、より小さな現在のＤＲＭカウンタ値を、以前に記録された、より大きなＤＲＭカウンタ値と置き換える反射攻撃（replay attack）に弱い。したがって、現在のメモリデータを以前に記録された有効なメモリデータと置き換えることによって情報を変更したい者による反射攻撃を防ぐ必要がある。この問題および他の問題が、本発明によって解決される。
【発明の開示】
【課題を解決するための手段】
【０００５】
要約
本発明は、データを暗号化／復号し、ＭＡＣ計算を介してデータの完全性を保護し、かつデータを検証するために、完全性鍵および暗号化鍵を用いて、書き換え可能オープンアクセス可能メモリに格納されたデータを反射攻撃から保護できる装置（たとえば携帯機器）および方法に関する。一実施形態において、本方法には、（ａ）１つまたは複数の現在の鍵（たとえば、完全性鍵ＭＩＫ＿ｎおよび必要に応じて暗号化鍵ＭＣＫ＿ｎ）を用いて、書き換え可能オープンアクセス可能メモリに現在格納されている古いデータの完全性を検証するステップと、（ｂ）１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を計算するステップであって、各新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）が、疑似乱数関数（ＰＲＦ）、秘密鍵（ＰＫ）、およびカウンタ値に１を加えた（ｎ＋１）（a counter value plus one (n+1)）を用いて計算されるステップと、（ｃ）１つまたは複数の新しい鍵（ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１）を用いて、検証された古いデータおよびもしあれば新しいデータを保護するステップと、（ｄ）保護された古いデータおよびもしあれば保護された新しいデータを、書き換え可能オープンアクセス可能メモリに格納するステップと、（ｅ）カウンタ値（ｎ＋１）を有するように単調レジスタ（monotone register）を増分するステップと、（ｆ）ステップ（ａ）で検証された古いデータを、書き換え可能オープンアクセス可能メモリから消去するステップと、が含まれる。
【０００６】
本発明のより完全な理解は、添付の図面に関連した以下の詳細な説明を参照することによって得ることができる。
【発明を実施するための最良の形態】
【０００７】
詳細な説明
現在のメモリデータを古いメモリデータによって置き換える攻撃を阻止するために、古いメモリデータは、陳腐化したものとして処理システムにより認識されなければならない。仮に古いメモリデータが、現在の保護鍵以外の鍵を用いて完全性を保護され、かつおそらく暗号化されて保護される（enciphered protected）場合には、処理システムは、書き換えを検出できるであろう。したがって、本ソリューションの基本的な考え方には、次のものが含まれる。すなわち、
１．鍵生成（keying）のために用いられるデータシーケンスを生成する機構および制御。データがどのように用いられるかは、選択される特定のセキュリティソリューションに依存する。本明細書で論じられるセキュリティソリューションでは、鍵生成（keying）データは部分に分割されるが、一部分が機密性／暗号化保護用の鍵を生成するために用いられ、もう一方の部分が、完全性保護用の鍵を生成するために用いられる。この機構および制御は、古い鍵を再生成できないような方法で、データシーケンスを生成する必要がある。 
２．書き換え可能オープンアクセス可能メモリに格納されたデータを保護するために完全性鍵および暗号化鍵（オプション）を用いる機構。
【０００８】
一実施形態において、完全性鍵および暗号化鍵を生成するための機構は、タンパープルーフモジュールに実現される。これは、鍵を生成するために用いられる変数の全てが保護されるように保証するためである。鍵は、疑似乱数関数（ＰＲＦ）、（装置に特有で、タンパープルーフモジュールに格納される）秘密鍵ＰＫ、および単調数列たとえばカウンタ値を用いて生成される。信頼できるプロセスが、単調数列のステッピングを制御する。
【０００９】
保護されるデータの暗号化／復号、および保護されるデータの（ＭＡＣ計算および検証を介した）完全性保護のための鍵の利用は、信頼できるソフトウェアおよび信頼できるハードウェアにより、タンパープルーフモジュールにおいて行われる。これらの動作は、鍵を生成するために用いられる同じタンパープルーフモジュールで行われるのが好ましい。さもなければ、鍵は、それらがタンパープルーフモジュール間で転送されるときに機密性を保護されるべきである。本ソリューションを実行できる装置１００に関する詳細な説明、および装置１００がデータを保護できる一方法に関する段階的な説明を、次に図１に関連して提供する。
【００１０】
図１を参照すると、装置１００（たとえば携帯機器１００）のブロック図があるが、この装置１００は、書き換え可能オープンアクセス可能メモリ１０８に格納されることになるデータ１０６の機密性および完全性を保護するために用いられるタンパープルーフモジュール１０２およびプロセッサ１０４を有する。図示のように、タンパープルーフモジュール１０２（信頼できるモジュール１０２）は、プラットフォーム鍵（ＰＫ）を保持するプラットフォーム鍵格納部１１０、およびカウンタ値（ｎ）を保持する単調レジスタ（ＭＲ）１１２を有する。ＰＫおよびカウンタ値（ｎ）を用い、共通ＰＲＦ１１３（または２つの特定のＰＲＦ）の助けを借りて、メモリ機密性鍵（ＭＣＫ）およびメモリ完全性鍵（ＭＩＫ）を計算する。この計算は次の通りである。すなわち、
ＭＣＫ＿ｎ＝ＰＲＦｃ（ＰＫ、ｎ）
ＭＩＫ＿ｎ＝ＰＲＦｉ（ＰＫ、ｎ）
【００１１】
ＭＣＫおよびＭＩＫを計算した後で、タンパープルーフモジュール１０２は、データ１０６の機密性を保護するためにＭＣＫ（暗号化鍵）を用いる適切な暗号化方法１１４を実行する。さらに、タンパープルーフモジュール１０２は、適切なメッセージ認証コード（message authentication code）（ＭＡＣ）方法１１６を実行するが、この方法１１６は、以前に暗号化されて次に書き換え可能オープンアクセス可能メモリ１０８に格納されたデータの完全性を保護するためにＭＩＫ（完全性鍵）を用いる。例示的なＭＡＣ方法は、ＳＨＡ−１を用いたＨＭＡＣ（メッセージ認証のための鍵付ハッシング）であるが、この場合に、ＨＭＡＣは、鍵がどのように計算に導入されるかを定義する。代替として、保護されていないデータ１０６の完全性を保護するために単にＭＡＣ方法１１６およびＭＩＫを用い、書き換え可能オープンアクセス可能メモリ１０８に格納されることになるデータを暗号化しないことが可能である。さらに別の代替では、既に完全性を保護されたデータの機密性を保護するために、暗号化方法１１４およびＭＣＫ（暗号化鍵）を用いることができる。本明細書で説明する例は、データが書き換え可能オープンアクセス可能メモリ１０８に格納される前に、暗号化されて保護され（encrypted protected）、次に完全性を保護されるというシナリオに基づいている。
【００１２】
次に、段階的な説明を提供して、ＤＲＭ＿ｃｏｕｎｔｅｒに対する反射攻撃を防ぐために用いることができる本ソリューションの一方法を示す。段階的説明は、次の通りである。
１．タンパープルーフモジュール１０２は、保護されていないデータ１０６を受信するが、このデータ１０６は、この例において、保護し、かつ書き換え可能オープンアクセス可能メモリ１０８に格納する必要があるＤＲＭカウンタ（値ｘ）である。明らかなように、保護を必要とする情報は、通常、ＤＲＭコンテンツ自体ではなく、ＤＲＭのコンテンツの可能な読み出し／再生回数を示すＤＲＭカウンタである。 
２．あるトリガイベント（たとえば、始動、制御された電源切断、重大なセキュリティパラメータの更新）に際して、書き換え可能オープンアクセス可能メモリ１０８に現在格納されている古いデータは、それが反射攻撃の対象にならなかったことを確かめるために検証される。古いデータを検証するために、タンパープルーフモジュール１０２（プロセッサ１０４および読み出し専用メモリ（ＲＯＭ）コードを用いる）は、保護された古いデータのＭＡＣ値（単数または複数）を、現在のＭＲカウンタ値ｎに基づく鍵ＭＩＫ＿ｎおよびＭＣＫ＿ｎを用いてチェックする。この時点で古いデータの完全性が検証されると仮定する。 
３．タンパープルーフモジュール１０２は、現在のカウンタ値ｎ＋１を用いて、新しい鍵ＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１を計算する。ＭＲ１１２が、この時点で増分されないことに留意されたい。 
４．タンパープルーフモジュール１０２は、新しい鍵ＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１を用いて、ＤＲＭ＿ｃｏｕｎｔｅｒ（値ｘ）を暗号化し、その完全性を保護する。さらに、タンパープルーフモジュール１０２は、ＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１を用いて、検証された古いデータ（ステップ２を参照）を再暗号化し、その完全性を保護する。 
５．タンパープルーフモジュール１０２は、鍵ＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１によって保護された古いデータを、書き換え可能オープンアクセス可能メモリ１０８に格納する。さらに、保護されたＤＲＭ＿ｃｏｕｎｔｅｒ（値ｘ）は、書き換え可能オープンアクセス可能メモリ１０８に、ＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋１として格納される。 
６．タンパープルーフモジュール１０２は、ＭＲ１１２においてｎをｎ＋１に増分する。ひとたびｎが増分されると、現在のｎ以外のより小さな値を備えた鍵を検索し用いる方法はない。 
７．タンパープルーフモジュール１０２は、鍵ＭＩＫ＿ｎおよびＭＣＫ＿ｎを用いて、ステップ２で検証された、データの古いバージョンを消去する。明らかなように、本ソリューションは、データを検証／保護する場合に、「現在の鍵」（たとえばＭＩＫ＿ｎおよびＭＣＫ＿ｎ）ならびに「次の鍵」（たとえばＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１）だけを参照できるようにする。かかるものとして、本ソリューションの重要な態様は、「現在の鍵」および「次の鍵」を用いて動作が実行されること、ならびに検証／機密性処理の全てが、ＭＲ１１２の増分および保護されたデータの古いバージョンの消去の前に完了するということである。 
８．攻撃者が、暗号化されて完全性を保護されたＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋１を記録する。 
９．ＤＲＭ＿ｃｏｕｎｔｅｒは、ユーザがＤＲＭのコンテンツにアクセスしたので、値ｘ−１に減分される。 
１０．あるトリガイベント（たとえば、始動、制御された電源切断、重大なセキュリティパラメータの更新）に際して、ステップ５中に書き換え可能オープンアクセス可能メモリ１０８に格納された古いデータは、それが反射攻撃の対象にならなかったことを確かめるために検証される。古いデータを検証するために、タンパープルーフモジュール１０２（プロセッサ１０４および読み出し専用メモリ（ＲＯＭ）コードを用いる）は、保護された古いデータのＭＡＣ値（単数または複数）を、現在のＭＲカウンタ値ｎ＋１に基づく鍵ＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１を用いてチェックする。この時点で古いデータの完全性が検証されると仮定する。 
１１．タンパープルーフモジュール１０２は、現在のカウンタ値ｎ＋２を用いて、新しい鍵ＭＩＫ＿ｎ＋２およびＭＣＫ＿ｎ＋２を計算する。繰り返すと、ＭＲ１１２が、この時点で増分されないことに留意されたい。 
１２．タンパープルーフモジュール１０２は、新しい鍵ＭＩＫ＿ｎ＋２およびＭＣＫ＿ｎ＋２を用いて、ＤＲＭ＿ｃｏｕｎｔｅｒ（値ｘ−１）を暗号化し、その完全性を保護する。さらに、タンパープルーフモジュール１０２は、ＭＩＫ＿ｎ＋２およびＭＣＫ＿ｎ＋２を用いて、検証された古いデータ（ステップ１０を参照）を再暗号化し、その完全性を保護する。 
１３．タンパープルーフモジュール１０２は、鍵ＭＩＫ＿ｎ＋２およびＭＣＫ＿ｎ＋２によって保護された古いデータを、書き換え可能オープンアクセス可能メモリ１０８に格納する。さらに、保護されたＤＲＭ＿ｃｏｕｎｔｅｒ（値ｘ−１）は、前のＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋１に取って代わるＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋２として、書き換え可能オープンアクセス可能メモリ１０８に格納される。 
１４．タンパープルーフモジュール１０２は、ＭＲ１１２をｎ＋１からｎ＋２に増分する。ひとたびＭＲ１１２が増分されると、現在のｎ＋２より小さな値を備えた鍵を検索し用いる方法はない。 
１５．タンパープルーフモジュール１０２は、鍵ＭＩＫ＿ｎ＋１およびＭＣＫ＿ｎ＋１を用いてステップ１０で検証されたデータの古いバージョンを消去する。 
１６．攻撃者は、暗号化されて完全性を保護されたＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋１を、書き換え可能オープンアクセス可能メモリ１０８に挿入する。そして、暗号化されて完全性を保護されたＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋２を削除する。 
１７．あるトリガイベント（たとえば、始動、制御された電源切断、重大なセキュリティパラメータの更新）に際して、書き換え可能オープンアクセス可能メモリ１０８に現在格納されている古いデータは、それが反射攻撃の対象にならなかったことを確かめるために検証される。古いデータを検証するために、タンパープルーフモジュール１０２（プロセッサ１０４および読み出し専用メモリ（ＲＯＭ）コードを用いる）は、保護された古いデータのＭＡＣ値（単数または複数）を、現在のＭＲカウンタ値ｎ＋２に基づく鍵ＭＩＫ＿ｎ＋２およびＭＣＫ＿ｎ＋２を用いてチェックする。この時点では、完全性チェックは失敗する。なぜなら、不正な暗号化されて完全性を保護されたＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋１が、正確なＭＡＣを有しないからである。メモリ１０８の全体または一部に対して完全性チェックが失敗した場合には、対応する古いデータ（この場合にはＤＲＭ＿ｃｏｕｎｔｅｒ＿ｎ＋１である）が消去されるかまたは無効としてマークされる。
【００１３】
本ソリューションの重要な部分は、ＭＲ１１２の実現である。下記は、ＭＲ１１２を実現するために用いることができるいくつかの異なるオプションのリストである。すなわち、
・カウンタｎは、タンパープルーフモジュール１０２において、物理的に保護されたフラッシュメモリ、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）または電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）に格納することができる。装置１００が携帯電話である場合には、タンパープルーフモジュール１０２は、ベースバンドチップに位置することができ、カウンタｎが格納される物理的に保護されたフラッシュメモリ、ＥＰＲＯＭまたはＥＥＰＲＯＭもまた、ベースバンドチップに位置することができる。 
・カウンタｎは、電子ヒューズ／ワンタイムライトメモリに値を書き込むことによって、更新することができる。
・カウンタｎは、外部の安全なソースに格納し、そこから検索し、次に、タンパープルーフモジュール１０２に送信して保護（暗号化および完全性保護）する（sent protected）ことができる。
【００１４】
図２を参照すると、本発明に従って、書き換え可能オープンアクセス可能メモリ１０８に格納されたデータを保護するための方法２００の基本的なステップを示す流れ図が提供されている。トリガイベントに際して、タンパープルーフモジュール１０２は、現在のＭＩＫ＿ｎおよび必要に応じて現在のＭＣＫ＿ｎを用いて、書き換え可能オープンアクセス可能メモリ１０８に格納された古いデータの完全性を検証する（ステップ２０２を参照）。完全性チェックが失敗した場合には、タンパープルーフモジュール１０２は、古いデータを消去するか、または古いデータを無効としてマークする（ステップ２０４を参照）。なぜなら、書き換え可能オープンアクセス可能メモリ１０８に現在格納されている古いデータは信頼できないからである。
【００１５】
完全性チェックが合格した場合には、タンパープルーフモジュール１０２は、新しい鍵ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１を計算する（ステップ２０６）。各新しい鍵ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１は、ＰＲＦ、秘密鍵（ＰＫ）およびカウンタ値に１を加えた（ｎ＋１）を用いて計算される。次に、タンパープルーフモジュール１０２は、新しい鍵ＭＩＫ＿ｎ＋１および必要に応じてＭＣＫ＿ｎ＋１を用いて、検証された古いデータおよびもしあれば新しいデータを保護する（ステップ２０８）。その後、タンパープルーフモジュール１０２は、保護された古いデータおよびもしあれば保護された新しいデータを、書き換え可能オープンアクセス可能メモリ１０８に格納する（ステップ２１０）。
【００１６】
次に、タンパープルーフモジュール１０２は、ＭＲ１１２を増分／ステッピングし、その結果、ＭＲ１１２はカウンタ値（ｎ＋１）を有する（ステップ２１２）。最終的なカウンタ更新は、メモリデータが検証されるまで行なうべきではない。なぜなら、その考え方として、全ての保護されたメモリデータが、新しい鍵ＭＩＫ＿ｎ＋１／ＭＣＫ＿ｎ＋１の下で正しく保護されるまで、古い鍵ＭＩＫ＿ｎ／ＭＣＫ＿ｎを陳腐化できないからである。次に、タンパープルーフモジュール１０２は、以前に検証された古いデータ（ステップ２０２を参照）を、書き換え可能オープンアクセス可能メモリ１０８から消去する（ステップ２１４）。
【００１７】
この時点で、次のブートの際または次のＭＲ更新の際まで、完全性鍵のどんなさらなる読み出しも防ぎ、かつＭＡＣのどんな新しい計算も防ぐために、特定のハードウェア信号を用いてタンパープルーフモジュール１０２をロックすることができる（ステップ２１６）。しかしながら、望ましい場合には、やはり新しいデータを追加することができるが、しかし新しいデータを追加するためには、現在の鍵を用いる必要がある。もちろん、現在の鍵をアンロックするためにはどのイベントが必要とされるかを定義する必要がある。さもなければ、上記のように、古いデータに対して有効性のチェックを実行し、新しいデータを追加し、ＭＲを増分し、かつ全てのデータを保護するＭＲ更新をトリガすることができる。
【００１８】
図３を参照すると、装置１００’（たとえば携帯機器１００’）のブロック図があるが、この装置１００’は、本発明の別の実施形態に従って、書き換え可能オープンアクセス可能メモリ１０８に格納されることになるデータの機密性および完全性を保護するタンパープルーフモジュール１０２を有する。この装置１００’は、プロセッサ１０４、プラットフォーム鍵ホルダ１１０、ＭＲ１１２、ＰＲＦ１１３、暗号化方法１１４およびＭＡＣ方法１１６を始めとして、図１に示す装置１００で用いられるのと同じ構成要素を有する。しかし、この装置１００’は、上記のようにデータの特定の部分を保護し、かつ次に、保護されたデータのその特定の部分を、用いられるＭＲ鍵番号と共に書き換え可能オープンアクセス可能メモリ１０８に格納することによって、管理をより単純にするように設計される。
【００１９】
本実施形態において、タンパープルーフモジュール１０２は、保護されたデータの各個別部分用のＭＡＣを計算することによって、全てのかかるメモリ部分の完全性を保護し、次に、データの保護された個別部分全てと共に格納されたＭＡＣの全体にわたるＭＡＣ（ＭＡＣＫｎ４として示されている）を計算することによって、保護されたデータの全ての完全性を保護する。このように、タンパープルーフモジュール１０２は、ＭＲ更新が行われる場合に、ＭＡＣの全てを再計算して次にデータの全てを再暗号化する必要はない。非変更データは、その古い保護と共に保持される。検証を可能にするために、タンパープルーフモジュール１０２は、それがデータ部分を当初保護したときに用いた鍵番号ＭＲを知って、関連する鍵を導き出すようにする必要がある。タンパープルーフモジュール１０２はまた、データ部分が、攻撃者によって、ある他の保護されたデータ部分と交換されたデータ部分がないことを検証する必要がある。これを達成するために、タンパープルーフモジュール１０２は、個別データ部分の全ての完全性を保護するために用いられるＭＡＣ（ＭＡＣＫｎ４として示されている）を計算および検証することができる。この拡張バージョンでは、どの鍵を生成できるか、たとえば、現在のカウンタ値未満の所定のウィンドウにおける鍵だけが許可され得ることを案内する方式を実装すべきである。
【００２０】
以下は、本ソリューションのいくつかの追加的な特徴および利点である。 
１．タンパープルーフモジュールは、探るのが難しいメモリおよび処理機能を含むチップの一部であるべきである。静的にまたは処理中に情報を検索するのが難しいように、タンパープルーフモジュールは、探るのを難しくすべきである。 
２．保護されたデータは、何回の更新に対してデータを有効と見なすべきかを示すカウンタを備えたレコードを含むことができる。そうする場合には、各更新中にこのカウンタ値を低減し、値がゼロと等しい場合には、対応するデータは、消去されるかまたは無効としてマークされる。これは、保護されたデータを、ある回数のＭＲ更新に対してだけ有効にすべき場合に、用いることができる。 
３．本ソリューションは、ファームウェア携帯機器ソフトウェアアップグレード（firmware mobile device software upgrade）において支援するために用いることができる。たとえば、携帯機器のアップグレードソフトウェアは、無線で携帯機器にダウンロードすることができる。アップグレードが携帯機器ソフトウェアの完全なリブートおよび再構築を必要とするので、携帯機器のユーザが、当人が携帯機器を使用している間はアップグレードが行われるのを望まない場合には、ユーザは、アップグレードを延期して、夜間などのオフ時間に行われるようにすることができる。アップグレードが行われた場合には、携帯機器を再始動するために、通常、ＰＩＮ（個人識別番号）などのある秘密の信号入力を必要とする。次に、更新をトリガする信号値は、携帯機器が次のブートイベントで更新モードに移行するために、前もって携帯機器に提供されなければならない。したがって、トリガ信号は、携帯機器の不揮発性メモリに格納され保護される必要がある。保護され格納された信号は、この場合には、一度、すなわち携帯機器の次の始動時だけ有効であるべきである。
４．本明細書で説明するプロセッサ１０４が、専用回路もしくは回路類（たとえば専門機能を実行するように相互接続された別個の論理ゲート）、プログラム命令、または両方の組み合わせを用いることにより、本ソリューションに従って様々な動作を実行できることを理解されたい。
【００２１】
本発明の２つの実施形態を添付の図面に示し、前述の詳細な説明に記載したが、本発明が、開示された実施形態に限定されず、特許請求の範囲によって記述され定義される本発明の範囲から逸脱せずに、多数の再構成、修正および代用を可能とすることを理解されたい。
【図面の簡単な説明】
【００２２】
【図１】本発明に従って、書き換え可能オープンアクセス可能メモリに格納されたデータの機密性および完全性を保護するタンパープルーフモジュールを有する装置（たとえば携帯機器）のブロック図である。
【図２】本発明に従って、書き換え可能オープンアクセス可能メモリに格納されたデータを保護する方法の基本的なステップの流れ図である。
【図３】本発明の別の実施形態に従って、書き換え可能オープンアクセス可能メモリに格納されたデータの機密性および完全性を保護するタンパープルーフモジュールを有する装置（たとえば携帯機器）のブロック図である。
【図１】
2009517939.tif 000003
【図２】
2009517939.tif 000004
【図３】
2009517939.tif 000005
【国際調査報告】
2009517939.tif 000006
2009517939.tif 000007
2009517939.tif 000008