(57)【要約】  処理デバイスのメモリ内に格納されているメモリコンテンツを更新する方法であって、メモリが、複数のアドレス可能メモリブロックを備え、メモリコンテンツが、処理デバイス内に格納されている現在の完全性保護データ項目によって保護され、本方法が、更新を必要とするメモリブロックの第１の部分集合、及び前記更新によって変化しないメモリブロックの第２の部分集合を判断する工程と、並列プロセスとして、メモリブロック全体にわたって第１及び第２の完全性保護データ項目を計算する工程とを備え、第１の完全性保護データ項目が、メモリブロックの第１及び第２の部分集合の現在のメモリコンテンツ全体にわたって計算され、第２の完全性保護データ項目が、メモリブロックの第２の部分集合の現在のメモリコンテンツ及びメモリブロックの第１の部分集合の更新されたメモリブロックコンテンツ全体にわたって計算される。
2008527510.tif 000002
【特許請求の範囲】
【請求項１】
処理デバイスのメモリ内に格納されているメモリコンテンツの少なくとも一部を更新する方法であって、前記メモリが、複数のアドレス可能メモリブロックを備え、前記メモリコンテンツが、前記処理デバイス内に格納されている現在の完全性保護データ項目によって保護され、前記方法が、
各現在のメモリブロックコンテンツから各更新されたメモリブロックコンテンツへの更新を必要とする前記複数のメモリブロックの第１の部分集合、及び前記更新によって変化しない各現在のメモリコンテンツをその中に格納している前記複数のメモリブロックの第２の部分集合を判断する工程と、
前記複数のメモリブロック全体にわたって第１及び第２の完全性保護データ項目を計算する工程であって、前記第１の完全性保護データ項目が、メモリブロックの前記第１の及び第２の部分集合の前記現在のメモリコンテンツ全体にわたって計算され、前記第２の完全性保護データ項目が、メモリブロックの前記第２の部分集合の前記現在のメモリコンテンツ及びメモリブロックの前記第１の部分集合の前記更新されたメモリブロックコンテンツ全体にわたって計算され、前記第１の及び前記第２の完全性保護データ項目を計算することが、並列プロセスとして遂行される、工程と、
メモリブロックの前記第１の部分集合の前記メモリコンテンツを更新する工程とを含む方法。
【請求項２】
前記第１の完全性保護データ項目と前記現在の完全性保護データ項目とを比較する工程と、
前記第１の完全性保護データ項目及び前記現在の完全性保護データ項目が互いに対応する場合、前記第２の完全性保護データ項目を格納し、前記各更新されたメモリブロックコンテンツでメモリブロックの前記第１の部分集合を更新する工程と、
前記格納されている第２の完全性保護データ項目に基づいて、前記更新されたメモリコンテンツの完全性検査を遂行する工程とをさらに含む請求項１に記載の方法。
【請求項３】
前記完全性検査を遂行する工程が、前記各更新されたメモリブロックコンテンツでメモリブロックの前記第１の部分集合を更新した後に、前記更新されたメモリの監査完全性保護データ項目を計算する工程と、前記計算された監査完全性保護データ項目と前記格納されている第２の完全性保護データ項目とを比較する工程とを含む請求項２に記載の方法。
【請求項４】
前記第１及び前記第２の完全性保護データ項目を並列プロセスとして計算する工程が、前記第１及び第２の完全性保護データ項目の任意の１つの計算を完了する前に、前記第１及び前記第２の完全性保護データ項目の計算を始動する工程を含む請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記第１及び第２の完全性保護データ項目のそれぞれを計算する工程が、いくつかの反復を含む、対応する反復プロセスを遂行する工程を含み、
それぞれの反復が、前記複数のメモリブロックの１つ以上を処理することを含み、それぞれの反復が、その後の反復を処理する前に、前記第１及び前記第２の完全性保護データ項目の計算のために遂行される請求項１〜４のいずれか一項に記載の方法。
【請求項６】
並列プロセスとして前記第１及び前記第２の完全性保護データ項目を計算する工程が、その後のメモリブロックを処理する前に、それぞれのメモリブロックが前記第１及び前記第２の完全性保護データ項目の計算のために処理されるよう、前記複数のメモリブロックを順次処理する工程を含む請求項１〜５のいずれか一項に記載の方法。
【請求項７】
ａ）第１のメモリブロックの現在のメモリブロックコンテンツを取得する工程と、
ｂ）前記第１の完全性保護データ項目の計算のために、前記取得された現在のメモリブロックコンテンツを処理する工程と、
ｃ）メモリブロックの第１の部分集合が前記第１のメモリブロックを含む場合には、前記第２の完全性保護データ項目の計算のために、前記第１のメモリブロックの前記更新されたメモリコンテンツを取得して処理し、含まない場合には、前記第２の完全性保護データ項目の計算のために、前記第１のメモリブロックの前記取得された現在のメモリブロックコンテンツを処理する工程と、
ｄ）すべてのメモリブロックについて項目ａ）〜ｃ）を遂行する工程とを含む請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記処理デバイスがモバイル端末である、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記メモリがフラッシュメモリである、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記更新されたメモリブロックコンテンツを含むデータ項目を受信する工程をさらに含む請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記データ項目を受信する工程が、暗号化認証プロセスを適用することにより前記データ項目を検証する工程を含む請求項１０に記載の方法。
【請求項１２】
前記データ項目が、デルタ更新パッケージを含む請求項１０又は１１に記載の方法。
【請求項１３】
前記データ項目を受信する工程が、前記更新されたメモリブロック全体にわたって計算されたデジタル署名を受信する工程を含み、更新を必要とする前記複数のメモリブロックの第１の部分集合を判断する工程が、前記更新されたメモリブロックの前記デジタル署名を検証する工程をさらに含む請求項１０〜１２のいずれか一項に記載の方法。
【請求項１４】
前記完全性保護データ項目が、メッセージ認証コードである請求項１〜１３のいずれか一項に記載の方法。
【請求項１５】
前記第１及び第２の完全性保護データ項目を計算する工程が、メッセージ認証コードのハードウェア実装によって遂行される請求項１４に記載の方法。
【請求項１６】
前記第１及び第２の完全性保護データ項目を計算する工程が、
一連の反復を含む反復メッセージ認証コード計算プロセスを実施するよう適応されたメッセージ認証計算モジュールを提供する工程であって、それぞれの反復が、１組の状態変数を更新する、工程と、
各第１及び第２の組の状態変数を格納するための第１及び第２の組のレジスタを提供する工程と、
前記メッセージ認証計算モジュールに、前記第１及び第２の完全性保護データ項目の計算の反復を交互に遂行させ、前記第１及び第２の組のレジスタを交互に更新させる工程とを含む請求項１４又は１５に記載の方法。
【請求項１７】
請求項１〜１６のいずれか一項に記載の方法のステップを遂行することにより、メモリ内に格納されているメモリコンテンツの少なくとも一部の更新を遂行するよう構成された処理デバイス。
【請求項１８】
前記処理デバイスが前記メモリを含む、請求項１７に記載の処理デバイス。
【請求項１９】
前記処理デバイスがモバイル端末である、請求項１７〜１８のいずれか一項に記載の処理デバイス。
【請求項２０】
前記メモリがフラッシュメモリである、請求項１７〜１９のいずれか一項に記載の処理デバイス。
【請求項２１】
前記更新されたメモリブロックコンテンツを含むデータ項目を受信する手段をさらに備える請求項１７〜２０のいずれか一項に記載の処理デバイス。
【請求項２２】
前記データ項目が、デジタル署名によって保護され、前記処理手段が、さらに、前記デジタル署名を検証するよう適応された請求項２１に記載の処理デバイス。
【請求項２３】
前記処理手段がメッセージ認証コードを実施するためのハードウェアモジュールを備える、請求項１７〜２２のいずれか一項に記載の処理デバイス。
【請求項２４】
前記処理手段が、
一連の反復を含む反復メッセージ認証コード計算プロセスを実施するよう適応されたメッセージ認証計算モジュールであって、それぞれの反復が、１組の状態変数を更新することを含む、メッセージ認証計算モジュールと、
各第１及び第２の組の状態変数を格納するための第１及び第２の組のレジスタとを備え、
前記処理手段が、前記メッセージ認証計算モジュールに、前記第１及び第２の完全性保護データ項目の計算の反復を交互に遂行させ、前記第１及び第２の組のレジスタを交互に更新させるよう適応された、請求項１７〜２９のいずれか一項に記載の処理デバイス。
【請求項２５】
前記プログラムコード手段がデータ処理デバイスで実行された場合に、請求項１〜１６のいずれか一項に記載の方法を遂行するよう適応されたプログラムコード手段を備えたコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
処理デバイスのメモリコンテンツを更新するための方法、製品手段、及びデバイスが開示される。
【背景技術】
【０００２】
携帯電話のような埋め込み型システム及び他のデータ処理デバイスは、正しいソフトウェア（許可されていない方法で操作されたものでない）の実行に依存する。ソフトウェアの操作により、デバイスが正しくない振る舞いをする、又はデバイスの基本的なセキュリティ機能が壊れることがある。したがって、デバイスのソフトウェアを保護することが特に重要なこととなる。これは、たとえば、プログラムを保護されたメモリ内に格納することによって達成され得る。メモリは、違法アクセスから物理的に保護されるか、又は暗号方式によって保護されるかのいずれかであり得る。実際には、良い物理的な保護を用いてメモリを作成すること及び特にメモリインターフェースを保護することは、困難であるか又は高価である。したがって、最も魅力的なソリューションは、メモリ内に格納されているソフトウェアについて、いくつかの種類の暗号保護を使用することである。
【０００３】
さらに、かなり小さいシステム用のソフトウェアがますます複雑なものになってきており、これにより、ソフトウェアのライフサイクル中の特に早期のリリースにおいて、エラーの危険性及び意図せぬ機能が増加している。さらに、早期のソフトウェアリリースの機能は、通常、限られている。したがって、埋め込み型デバイス内に格納されているソフトウェアの頻繁な更新の必要性が増加している。
【０００４】
データ処理デバイスのソフトウェアの、頻繁な更新の必要性及び十分な保護を実現したいという要求により、記憶装置にあるデータ処理デバイスのソフトウェアを保護し、かつ安全なソフトウェアアップグレードを可能にする、セキュリティソリューションの必要性が生じる。米国特許第６，０２６，２９３号明細書では、電子デバイスにおいて電子メモリの改ざんを防止する方法について開示している。この先行技術による方法によれば、電子デバイスがデータ転送デバイスによって再プログラムされる場合には、電子デバイスは、公開／秘密鍵ベースのチャレンジレスポンス認証方式（challenge-response authentication scheme）を始動して、そのデータ転送デバイスを認証する。データ転送デバイスは、認証されると、メモリを再プログラムするためのアクセスが許可される。メモリの再プログラミングに続いて、電子デバイスは、修正されたメモリコンテンツのハッシュ計算を遂行する。計算されたハッシュ値は、デジタル署名のためにデータ転送デバイスに送信され、署名されたハッシュ値は、電子デバイスに戻されて格納される。署名されたハッシュ値は、その後、たとえば起動中に又は周期的に、メモリコンテンツの完全性（the integrity）を監査するのに使用される。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
たとえ、上記の先行技術による方法により、ローディング段階中の認証保護及び電子デバイスのメモリコンテンツの完全性保護の両方が実現されたとしても、完全性保護メカニズムのセキュリティを向上させるという課題が残ることとなる。
【課題を解決するための手段】
【０００６】
上記及び他の課題は、処理デバイスのメモリ内に格納されているメモリコンテンツの少なくとも一部を更新する方法によって解決される。メモリは、複数のアドレス可能メモリブロックを備え、メモリコンテンツは、処理デバイス内に格納されている現在の完全性保護データ項目（a current integrity protection data item）によって保護される。この方法は、
各現在のメモリブロックコンテンツから各更新されたメモリブロックコンテンツへの更新を必要とする前記複数のメモリブロックの第１の部分集合と、前記更新によって変化しない各現在のメモリコンテンツをその中に格納している複数のメモリブロックの第２の部分集合とを判断する工程と、
複数のメモリブロック全体にわたって（over the plurality of memory blocks）第１及び第２の完全性保護データ項目を計算する工程であって、第１の完全性保護データ項目が、メモリブロックの第１及び第２の部分集合の現在のメモリコンテンツ全体にわたって計算され、第２の完全性保護データ項目が、メモリブロックの第２の部分集合の現在のメモリコンテンツ及びメモリブロックの第１の部分集合の更新されたメモリブロックコンテンツ全体にわたって計算され、第１及び第２の完全性保護データ項目を計算することが、並列プロセスとして遂行される、工程と、
メモリブロックの前記第１の部分集合のメモリコンテンツを更新する工程を含む。
【０００７】
本明細書に記述されている方法の利点は、悪意のあるユーザが、たとえばメモリの再書き込み後に、かつ基準完全性保護データ項目の再計算の前に、更新プロセスを中断する危険性が減少することである。したがって、本明細書に記述されている方法の利点は、新しい完全性保護データ項目が正しいメモリイメージ全体にわたって計算されることが保証されることである。
【０００８】
本明細書に記述されている方法は、携帯電話の無線による更新などの、処理デバイスのソフトウェア及び／又は他のデータのための頑強かつ安全な更新プロセスを実現する。本明細書に記述されている方法のさらなる利点は、更新されたソフトウェアイメージ全体への署名を、外部の更新サーバに頼らないことである。これは、いわゆるデルタ更新（delta updates）に関連して、及び／又は現在のメモリの一部のみが更新され、及び更新サーバ、又はソフトウェア更新パッケージを生成する別のエンティティが、処理デバイスの現在のメモリコンテンツ全体を認識していない状況において、特に有利である。デルタ更新は、現在のソフトウェアに対する新しい（更新された）ソフトウェアの差異を含み、これにより、アップグレードパケットの大きさが減少する。いくつかのデルタファイル技術においては、更新ファイルはまた、現在のソフトウェアと受信された更新から更新されたソフトウェアバージョンを生成することを、制御するためのコマンドを含む。このようなデルタファイル技術が、当業者には公知であり、たとえば、クリスチャン・ライヘンバーガー（Ｃｈｒｉｓｔｉａｎ  Ｒｅｉｃｈｅｎｂｅｒｇｅｒ）による、ソフトウェア構成管理に関する第３回国際ワークショップ議事録、１４４〜１５２ページ、「任意の非テキストファイル用のデルタ記憶（Ｄｅｌｔａ  ｓｔｏｒａｇｅ  ｆｏｒ  ａｒｂｉｔｒａｒｙ  ｎｏｎ−ｔｅｘｔ  ｆｉｌｅｓ）」（１９９１年６月ノルウェイ）に記述されている。デルタ更新は、特に帯域幅の制限があることから、無線（over-the-air）（ＯＴＡ）更新に関連して特に興味深い。本明細書に記述されている方法の利点は、デルタ更新に適用され得る、効率的なセキュリティメカニズムが実現されることである。
【０００９】
更新ステップは、一般に、メモリブロックの少なくとも第１の部分集合の現在のメモリブロックコンテンツを各更新されたメモリブロックコンテンツと交換することを含む。更新されたメモリコンテンツは、たとえば更新サーバから受信されるか、又は、たとえば本明細書に記述したデルタファイルなどの受信された更新ファイル／パッケージから決定することができる。
【００１０】
用語「完全性保護データ項目」は、メモリ内に格納されている情報が偶然又は悪意をもって改変される又は破壊されることがないことを確実にするためのメカニズムによって生成される任意のデータ項目を含むことを意図したものである。完全性保護メカニズムの例には、メッセージ認証コードと、一方向ハッシュ関数と、デジタル署名とが含まれる。完全性メカニズムが秘密鍵に基づく暗号完全性保護メカニズムである場合には、完全性保護のセキュリティが増加する。完全性保護データ項目がメッセージ認証コードである場合には、特に安全かつ効率的な完全性保護が達成される。
【００１１】
メッセージ認証コード（ＭＡＣ）は、完全性保護データのための公知のメカニズムである。ＭＡＣとは、可変長入力及び鍵を利用して、出力ととして固定長の完全性保護データ項目、いわゆるＭＡＣ値又はタグ値を作成する関数である。ＭＡＣは、通常、２人の当事者の間で伝送された情報の正当性を検証するために秘密鍵を共用するこれらの当事者の間で使用される。いくつかの実施形態において、ＭＡＣは、一方向ハッシュ関数をデータに適用し、秘密鍵を使用してその結果を暗号化することによって計算される。暗号ハッシュ関数と組み合わせられ得る好適なＭＡＣ関数の例には、ＨＭＡＣ（メッセージ認証のための鍵付ハッシング）、たとえばＡＥＳを使用する暗号ブロック連鎖方式（ＣＢＣ）ＭＡＣ、又は安全な一方向ハッシュ関数が含まれる。本明細書に記述されている方法において、メッセージ認証コードは、処理デバイスのメモリ内に格納されているデータの完全性を検査するのに使用される。即ち、この状況においては、ＭＡＣは、１当事者のみ、即ちデータ処理デバイスにより、たとえば周期的に、データを格納する及び／又は検索する時に、及び／又はスタートアップ中などの他の事象に応答して、使用される。第１及び第２の完全性保護データ項目のそれぞれの計算は、１つのＭＡＣの計算又は複数のＭＡＣの計算を含むことがあると理解されたい。第１の及び第２の完全性保護データ項目は、同じ又は異なるアルゴリズムに基づいて、同じ又は異なる秘密鍵に基づいて、計算されることがある。
【００１２】
したがって、いくつかの実施形態において、完全性保護は、保護されるべきメモリコンテンツに対して、計算された基準完全性保護データ項目、たとえばメッセージ認証コード値を格納することを含み、これにより、データ処理デバイスによるメモリコンテンツのその後のメモリ監査に利用可能となる。したがって、メモリコンテンツを監査する場合には、デバイスは、デバイス内に格納されている秘密鍵を使用して、格納されているデータの完全性保護データ項目を計算し、その結果を以前に格納された基準データ項目、たとえば基準ＭＡＣ値と比較する。したがって、この実施形態において、秘密鍵は、デジタル処理デバイスにのみ公知であれば良い。いくつかの実施形態において、秘密鍵は、データ処理デバイスに対して固有の秘密データ項目、たとえばデータ処理デバイスにのみ公知の秘密データ項目である。
【００１３】
一実施形態において、この方法は、さらに、
第１の完全性保護データ項目を現在の完全性保護データ項目と比較する工程と、
第１の完全性保護データ項目及び現在の完全性保護データ項目が互いに対応する場合、第２の完全性保護データ項目を格納し、各更新されたメモリブロックコンテンツでメモリブロックの第１の部分集合を更新する工程と、
格納されている第２の完全性保護データ項目に基づいて、更新されたメモリコンテンツの完全性検査を遂行する工程とを含む。したがって、実際にメモリを再フラッシュしている間に更新プロセスを中断しようとするどのような試みも、最終的な完全性検査において検出され、これにより、全プロセスのセキュリティが確実となる。
【００１４】
一実施形態において、完全性検査を遂行する工程は、各更新されたメモリブロックコンテンツでメモリブロックの第１の部分集合を更新した後に、更新されたメモリの監査完全性保護データ項目を計算する工程と、計算された監査完全性保護データ項目を格納されている第２の完全性保護データ項目と比較する工程とを含む。その後、このような監査は、モバイル端末の起動処理中に、及び／又はソフトウェアが実行される毎に、及び／又は所定の時間間隔で周期的に、遂行することができる。
【００１５】
第１及び第２の完全性保護データ項目は、並列プロセスにおいて計算されるので、完全性保護データ項目が同じ現在のメモリブロックコンテンツを使用して計算されることが保証され、これにより、更新プロセス中にメモリコンテンツを交換しようとするどのような試みも、計算された完全性保護データ項目のその後の検証によって検出され得ることが確実となる。
【００１６】
一実施形態において、第１及び第２の完全性保護データ項目を並列プロセスとして計算する工程は、第１及び第２の完全性保護データ項目の任意の１つの計算を完了する前に、第１及び第２の完全性保護データ項目の計算を始動する工程を含む。したがって、不誠実なユーザが更新プロセスを中断し、第１の完全性保護データ項目の計算と第２の完全性保護データ項目の計算との間に現在のメモリコンテンツを交換するという危険性が解消される。
【００１７】
さらなる実施形態において、第１及び第２の完全性保護データ項目のそれぞれを計算する工程が、いくつかの反復を含む、対応する反復プロセスを遂行する工程を含む。それぞれの反復が、前記複数のメモリブロックの１つ以上を処理することを含み、それぞれの反復が、その後の反復を処理する前に、第１及び第２の完全性保護データ項目の計算のために遂行される。したがって、前記１つ以上の複数のメモリブロックの同じバージョンが両方の計算プロセスにおいて使用されることが保証され、これにより、更新プロセスのセキュリティがさらに向上する。
【００１８】
またさらなる実施形態において、第１及び第２の完全性保護データ項目を並列プロセスとして計算する工程が、その後のメモリブロックを処理する前に、それぞれのメモリブロックが第１及び第２の完全性保護データ項目の計算のために処理されるよう、複数のメモリブロックを順次処理する工程を含む。したがって、完全性保護データ項目の計算の合間に、不誠実なユーザによってメモリブロックが交換されないことが保証される。
【００１９】
一実施形態において、この方法は、
ａ）第１のメモリブロックの現在のメモリブロックコンテンツを取得する工程と、
ｂ）第１の完全性保護データ項目の計算のために、取得された現在のメモリブロックコンテンツを処理する工程と、
ｃ）メモリブロックの第１の部分集合が第１のメモリブロックを含む場合は、第２の完全性保護データ項目の計算のために、第１のメモリブロックの更新されたメモリコンテンツを取得して処理し、含まない場合は、第２の完全性保護データ項目の計算のために、第１のメモリブロックの取得された現在のメモリブロックコンテンツを処理する工程と、
ｄ）すべてのメモリブロックについて項目ａ）〜ｃ）を遂行する工程とを含む。
【００２０】
一実施形態において、メモリは、フラッシュメモリである。フラッシュメモリ（「フラッシュＲＡＭ」と呼ばれることもある）は、ブロックと呼ばれるメモリのユニット単位で消去され得る及び再プログラムされ得る、一種の不揮発性メモリであり、それぞれのブロックが複数のバイトを含む。データをフラッシュメモリ内で変更する（再書き込みする）必要がある場合には、フラッシュメモリは、（バイトではなく）ブロックサイズで書き込まれ得る。
【００２１】
さらに別の実施形態において、この方法は、さらに、前記更新されたメモリブロックコンテンツを含むデータ項目を受信する工程を含む。データ項目は、デルタ更新プロセスのデルタファイル又はデルタ更新パッケージを含むことがある。代替形態として、データ項目は、１つ以上のソフトウェアアプリケーション、コンフィギュレーションデータ、ペイロードデータ、及び／又はその他の更新する必要のあるものの、ソフトウェアイメージ全体を含むことがある。データ項目は、ローディングステーション、ソフトウェア更新サーバなどの外部データ処理システムから、好適な通信媒体、たとえばワイヤード又はワイヤレス通信リンクを介して受信することができる。ワイヤード通信リンクの例には、ＵＳＢ、ファイアワイア、ＬＡＮなどの、シリアル通信リンクが含まれる。ワイヤレス通信リンクの例には、たとえばＩｒＤａなどの赤外線リンク、ブルートゥースなどの短距離ワイヤレス通信リンク、ワイヤレスＬＡＮなどの、短距離無線周波数リンクが含まれる。一実施形態において、データ項目は、セルラー通信網などの通信網を介して無線により受信される。
【００２２】
データ項目を受信する工程が、暗号化認証プロセスを適用することによりデータ項目を検証する工程を含む場合には、受信されたデータ項目の信憑性及び／又は完全性が保証され、これにより、更新プロセスのセキュリティが向上する。一実施形態において、暗号化認証プロセスは、公開鍵暗号化システムに従ってデータ項目をデジタル署名することを含む。ソフトウェアのデジタル署名は、モバイルデバイスにロードされたソフトウェアを検証するための効率的かつ安全なメカニズムである。署名の検証成功は、ソフトウェアが合法的なソースによって発行されたことの保証となる。さらに、公開鍵技術に基づくデジタル署名は、転送時又は格納時に、検証に使用される公開鍵の秘匿性保護を必要としないという利点を有する。したがって、セキュリティの漏洩を引き起こさずに、同じ公開鍵が多数のデバイスにインストールされ得る。このことにより、速くかつ安全なソフトウェアアップグレードの効率的な手順が可能となる。
【００２３】
データ項目がデジタル署名の信憑性を検証するデジタル証明書を含む場合には、更新プロセスのセキュリティがさらに向上する。データ処理デバイスは、証明書チェーン（certificate chain）を形成する１つ以上のデジタル証明書を受信することがあり、そのチェーンの１つの証明書は、データ処理デバイス内に格納されている公開ルート鍵によって検証されることを理解されたい。
【００２４】
一実施形態において、データ項目を受信する工程が、更新されたメモリブロック全体にわたって計算されたデジタル署名を受信する工程を含み、更新を必要とする前記複数のメモリブロックの第１の部分集合を判断する工程が、更新されたメモリブロックのデジタル署名を検証する工程をさらに含む。
【００２５】
第１及び第２の完全性保護データ項目の計算が信頼できるプログラムコードによって遂行される場合には、プロセスのセキュリティが向上する。本明細書においては、用語「信頼できるプログラムコード」は、処理デバイスのファームウェア内に含まれているプログラムコード、その実行前に暗号化により完全性が検査されるコード、処理デバイスのブートＲＯＭコード内に含まれるプログラムコードなどの、任意の完全性保護プログラムコードを含むことを意図したものである。
【００２６】
いくつかの実施形態において、第１及び第２の完全性保護データ項目の計算に加えて、以下のステップの少なくともいくつかが、信頼できるプログラムコードによって遂行される。即ち、メモリブロックの第１及び第２の部分集合の判断、第１の完全性保護データ項目と現在の完全性保護データ項目との比較、第２の完全性保護データ項目の格納、メモリブロックの第１の部分集合の更新、及び格納されている第２の完全性保護データ項目に基づく、更新されたメモリコンテンツの完全性検査である。
【００２７】
第１及び第２の完全性保護データ項目の計算は、メッセージ認証コードのハードウェア実装によって遂行され、これにより、特に効率的かつ安全な更新プロセスが実現する。完全性保護データ項目が、ブロック暗号又は一方向ハッシュ関数に基づいて構築されたメッセージ認証コードである場合には、特に効率的なハードウェア実装が提供され得る。
【００２８】
さらなる実施形態において、第１及び第２の完全性保護データ項目を計算する工程が、
一連の反復を含む反復メッセージ認証コード計算プロセスを実施するよう適応されたメッセージ認証計算モジュールを提供する工程であって、それぞれの反復が、１組の状態変数を更新することを含む、工程と、
各第１及び第２の組の状態変数を格納するための第１及び第２の組のレジスタを提供する工程と、
メッセージ認証計算モジュールに、第１及び第２の完全性保護データ項目の計算の反復を交互に遂行させ、第１及び第２の組のレジスタを交互に更新させる工程とを含む。
【００２９】
したがって、特にハードウェア実装に関連して、１つのＭＡＣ計算モジュールしか必要とされないので、非常にコンパクトな実装形態が実現される。さらに、この実施形態により、２つのＭＡＣの効率的な並列計算が保証されるので、速くかつ安全な更新プロセスが実現される。
【００３０】
本発明は、上述した及び以下に記述する方法、これに対応するデバイス、及びコンピュータプログラムを含む、異なる態様に関するものであり、それぞれが、上述の方法に関連して記述されている利益及び利点の１つ以上を有し、それぞれが、上述の方法に関連して記述されている実施形態に対応する１つ以上の実施形態を有する。
【００３１】
より具体的には、別の態様によれば、データ処理デバイスはメモリコンテンツを格納するためのメモリを備え、メモリは複数のアドレス可能メモリブロックを含み、メモリコンテンツは処理デバイス内に格納されている現在の完全性保護データ項目によって保護されており、処理手段は、
メモリコンテンツの少なくとも一部の更新中に、各現在のメモリブロックコンテンツから各更新されたメモリブロックコンテンツへの更新を必要とする前記複数のメモリブロックの第１の部分集合、及び前記更新によって変化しない各現在のメモリコンテンツをその中に格納している複数のメモリブロックの第２の部分集合を判断し、
複数のメモリブロック全体にわたって第１及び第２の完全性保護データ項目を計算するよう適応されており、第１の完全性保護データ項目は、メモリブロックの第１及び第２の部分集合の現在のメモリコンテンツ全体にわたって計算され、第２の完全性保護データ項目は、メモリブロックの第２の部分集合の現在のメモリコンテンツ及びメモリブロックの第１の部分集合の更新されたメモリブロックコンテンツ全体にわたって計算され、第１及び第２の完全性保護データ項目を計算することは、並列プロセスとして遂行される。
【００３２】
一実施形態において、処理手段は、さらに、
第１の完全性保護データ項目を現在の完全性保護データ項目と比較し、
第１の完全性保護データ項目及び現在の完全性保護データ項目が互いに対応する場合、第２の完全性保護データ項目を格納し、各更新されたメモリブロックコンテンツでメモリブロックの第１の部分集合を更新し、
格納されている第２の完全性保護データ項目に基づいて、更新されたメモリコンテンツの完全性検査を遂行するよう適応される。したがって、実際にメモリを再フラッシュしている間に更新プロセスを中断しようとするどのような試みも、最終的な完全性検査において検出され、これにより、全プロセスのセキュリティが確実となる。
【００３３】
一実施形態において、処理手段は、さらに、各更新されたメモリブロックコンテンツでメモリブロックの第１の部分集合を更新した後に、更新されたメモリの監査完全性保護データ項目を計算することにより、そして、計算された監査完全性保護データ項目を格納されている第２の完全性保護データ項目と比較することにより、完全性検査を遂行するよう適応される。
【００３４】
一実施形態において、処理手段は、さらに、第１及び第２の完全性保護データ項目の任意の１つの計算を完了する前に、第１の及び第２の完全性保護データ項目の計算を始動するよう適応される。したがって、不誠実なユーザが更新プロセスを中断し、第１の完全性保護データ項目の計算と第２の完全性保護データ項目の計算との間に、現在のメモリコンテンツを交換するという危険性が解消される。
【００３５】
さらなる実施形態において、処理手段は、さらに、いくつかの反復を含む、対応する反復プロセスを遂行することにより、第１及び第２の完全性保護データ項目のそれぞれを計算するよう適応され、それぞれの反復は前記複数のメモリブロックの１つ以上を処理することを含み、それぞれの反復は、その後の反復を処理する前に第１及び第２の完全性保護データ項目の計算のために遂行される。したがって、前記１つ以上の複数のメモリブロックの同じバージョンが、両方の計算プロセスにおいて使用されることが保証され、これにより、更新プロセスのセキュリティがさらに向上する。
【００３６】
またさらなる実施形態において、処理手段は、さらに、それぞれのメモリブロックが、その後のメモリブロックを処理する前に、第１及び第２の完全性保護データ項目の計算のために処理されるように、複数のメモリブロックを順次処理するよう適応される。したがって、完全性保護データ項目の計算の間に、不誠実なユーザによってメモリブロックが交換されないことが保証される。
【００３７】
一実施形態において、処理手段は、さらに、
ａ）第１のメモリブロックの現在のメモリブロックコンテンツを取得し、
ｂ）第１の完全性保護データ項目の計算のために、取得された現在のメモリブロックコンテンツを処理し、
ｃ）メモリブロックの第１の部分集合が第１のメモリブロックを含む場合は、第２の完全性保護データ項目の計算のために、第１のメモリブロックの更新されたメモリコンテンツを取得して処理し、含まない場合は、第２の完全性保護データ項目の計算のために、第１のメモリブロックの取得された現在のメモリブロックコンテンツを処理し、
ｄ）すべてのメモリブロックについて項目ａ）〜ｃ）を遂行するよう適応される。
【００３８】
一実施形態において、処理デバイスは、モバイル端末である。
【００３９】
一実施形態において、メモリは、フラッシュメモリである。
【００４０】
一実施形態において、デバイスは、さらに、前記更新されたメモリブロックコンテンツを含むデータ項目を受信する手段を備える。
【００４１】
一実施形態において、前記データ項目は、デジタル署名によって保護され、処理手段は、さらに、前記デジタル署名を検証するよう適応される。
【００４２】
一実施形態において、データ項目は、デルタ更新パッケージを含む。
【００４３】
一実施形態において、処理手段は、メッセージ認証コードを実施するためのハードウェアモジュールを備える。
【００４４】
一実施形態において、処理手段は、
一連の反復を含む反復メッセージ認証コード計算プロセスを実施するよう適応されたメッセージ認証計算モジュールであって、それぞれの反復が、１組の状態変数を更新する、メッセージ認証計算モジュールと、
各第１及び第２の組の状態変数を格納するための第１及び第２の組のレジスタとを備え、
処理手段は、メッセージ認証計算モジュールに、第１及び第２の完全性保護データ項目の計算の反復を交互に遂行させ、第１及び第２の組のレジスタを交互に更新させるよう適応される。
【００４５】
用語「データ処理デバイス」は、データが外部ソース（たとえばデータ転送システム）からロードされ得るデータメモリを備える任意の電子デバイスを含むことを意図したものである。特に、用語「データ処理デバイス」は、任意の電子機器、ポータブル無線通信機器、及び他のハンドヘルド又はポータブルデバイスを含むことを意図したものである。用語「ポータブル無線通信機器」は、モバイル端末などのすべての機器、たとえば、携帯電話、ページャ、通報器、電子オーガナイザ、スマートホン、携帯情報端末（ＰＤＡ）、ハンドヘルドコンピュータなどを含む。
【００４６】
用語「メモリコンテンツ」は、データ処理デバイスのメモリ内に格納されている任意のデータを含むことを意図したものである。特に、用語「メモリコンテンツ」は、コンフィギュレーションデータ、プログラムコード、たとえば、デバイスが実行するためのプラットフォームソフトウェア又はアプリケーションソフトウェアなどを含むことを意図したものであるが、これらに限定されるものではない。特に、用語「メモリコンテンツ」は、メッセージ認証コードなどの完全性保護メカニズムにより完全性が保護されたモバイル端末のメモリコンテンツを含むことを意図したものである。したがって、これは、モバイル端末のメモリのコンテンツ全体又はメモリコンテンツの所定の一部のみを含むことがある。用語「メモリブロック」は、該メモリの、所定の大きさの好適な区分のメモリブロック／セグメントを含むことを意図したものである。一実施形態において、メモリブロックは、フラッシュメモリのブロックに対応する。
【００４７】
上述したかつ以下に記述する方法の機能は、ソフトウェアで実装され、コンピュータ実行可能命令などのプログラムコード手段を実行することにより、データ処理デバイス又は他の処理手段において行われることがあることに留意されたい。ここ及び以下において、用語「処理手段」は、上記の機能を遂行するよう好適に適応された、任意の回路及び／又はデバイスを含む。特に、上記の用語は、汎用又は専用プログラマブルマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、専用電子回路など、又はこれらの組合せを含む。
【００４８】
したがって、別の態様によれば、コンピュータプログラムは、前記コンピュータプログラムがデータ処理デバイスで動作する場合に、データ処理デバイスに、上述した及び以下に記述する方法のステップを遂行させるよう適応されたプログラムコード手段を含む。
【００４９】
たとえば、プログラムコード手段は、記憶媒体から又は別のコンピュータからコンピュータネットワークを介して、ＲＡＭ（ランダムアクセスメモリ）などのメモリ内にロードされることがある。代替形態として、記述されている機能は、ソフトウェアではなくハードワイヤード回路により、又はソフトウェアと合わせて、実施されることがある。
【００５０】
図面を参照しながら、以下に記述されている実施形態より、上記の及び他の態様が明らかかつ明瞭となろう。
【発明を実施するための最良の形態】
【００５１】
図１は、モバイル端末内にデータをロードするシステムを示す概略ブロック図である。システムは、ローディングステーション／更新サーバ１０１とモバイル端末１０２とを備える。
【００５２】
ローディングステーションは、好適な通信インターフェースを備える、従来の、好適にプログラムされたコンピュータ、たとえばＰＣであり得る。いくつかの実施形態において、ローディングステーションは、ロードされるべき、ペイロードデータ、たとえば、ソフトウェアバージョン、コンフィギュレーションデータ、及び／又はその他を、生成することができる。さらに、ローディングステーションは、ペイロードデータと共にロードされるべき、デジタル署名及び証明書を生成することができる。他の実施形態において、ローディングステーションは、リモートコンピュータ、たとえば、パーソナルコンピュータ、ワークステーション、ネットワークサーバなどから、ペイロードデータを受信する。たとえば、データは、コンピュータネットワーク、たとえば、インターネット、ローカルエリアネットワーク、イントラネット、エクストラネットなどを介して、又はたとえばフロッピー（登録商標）ディスク、ＣＤＲＯＭなどのコンピュータ読取可能媒体上の、他の任意の好適な手段により、受信されることがある。この実施形態において、１つ又は複数のデジタル署名の計算及び１つ又は複数の証明書の生成が、ローディングステーションではなく、リモートコンピュータによって遂行されることがある。ローディングステーションは、モバイル端末にそのメモリコンテンツを更新させるペイロードデータ及び／又は命令を、モバイル端末に送信する。
【００５３】
モバイル端末１０２は、モバイル端末が、ローディングステーションから、直接データリンク、通信網などのワイヤード又はワイヤレス通信リンク１０３を介して、データを受信できるようにするのに適した回路及び／又はデバイスを含む、通信インターフェース１０４を備える。たとえば、データは、ローカル短距離ワイヤレス通信リンク、たとえば、ブルートゥース接続、赤外線接続などを介して、又はワイヤードインターフェースを介してロードされることがある。他の実施形態において、データは、通信網を介して、たとえばＧＳＭ  ＷＣＤＭＡなどのセルラー通信網を介する無線（ＯＴＡ）により、モバイル端末内にロードされることがある。
【００５４】
したがって、好適な通信ユニットの例には、ＩＥＥＥ１３９４標準などに記述されている、ＲＳ−２３２リンク、ＵＳＢ接続、ファイアワイア接続などのワイヤードシリアル接続が含まれる。さらなる例には、ワイヤレス赤外線インターフェース、又はセルラー電話（図示せず）の主要アンテナ及び受信機などのＲＦインターフェース、又はブルートゥーストランシーバなどのセルラー電話における別の受信機が含まれる。好適なインターフェースの他の例には、ケーブルモデム、電話モデム、統合サービスデジタルネットワーク（ＩＳＤＮ）アダプタ、デジタル加入者ライン（ＤＳＬ）アダプタ、衛星トランシーバ、イーサネット（登録商標）アダプタなどが含まれる。
【００５５】
モバイル端末は、さらに、モバイル端末のオペレーションを制御するための処理ユニット１０５と、メモリ１０６とを備える。たとえば、処理ユニットは、汎用又は専用プログラマブルマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）など、又はこれらの組合せを含むことができる。一実施形態において、メモリ１０６は、フラッシュメモリである。しかし、本明細書に記述されている更新プロセスはまた、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの他の種類のメモリ、又は不揮発性メモリなどの他の任意の種類のメモリ又は記憶装置にも適用することができる。
【００５６】
データがモバイル端末内にロードされた場合には、処理ユニット１０５は、本明細書に記述されているデータ認証及び完全性保護を遂行し、メモリ１０６内にデータを格納する。
【００５７】
モバイル端末のその後のオペレーション中に、処理ユニットは、メモリ１０６から、ロードされたデータを検索し得る。たとえば、ソフトウェアの場合、処理ユニットは、ＲＡＭ内のメモリ１０６からソフトウェアをロードし、実行する。
【００５８】
多くのモバイル端末においては、許可されていない再プログラミングから、シム（ＳＩＭ）ロック、プライバシなどを含む、基本電話機能を保護することが望ましい。これは、ＭＡＣを有するモバイル端末のソフトウェアイメージの全部又は一部を保護する完全性によって達成され得る。ＭＡＣは、モバイル端末のそれぞれのスタートアップ時に検査されることがある。ソフトウェアがモバイル端末のフラッシュメモリにフラッシュされた場合、ソフトウェアイメージ全体（又は保護されるべきソフトウェアイメージの一部）が、ローディングプロセス中に署名され、チップ固有ＭＡＣが、たとえば受信されたソフトウェアのデジタル署名に基づいて該ＭＡＣを判断することにより、モバイル端末内に格納される。
【００５９】
デルタ更新シナリオにおいて、ローディングステーション１０１は、デルタファイルを作り、そのデルタファイルをモバイル端末１０２、たとえばＯＴＡに転送する。一実施形態において、デルタファイルは、現在の又はいわゆるベースラインバージョンのソフトウェアと、新しい／更新されたバージョンのソフトウェアとを、バイト毎に比較することによって、作られる。２つのバージョンの間の差異は、デルタファイル内に格納される。さらに、デルタファイルは、モバイル端末が、モバイル端末内に格納されているベースラインバージョンから新しいバージョンを生成できるようにする命令、及び更新ファイルが受け付けた差異（the differences received in the update file）を含むことがある。ローディングステーションからモバイル端末への転送中にデルタファイルが修正されるのを防ぐために、ローディングステーション１０１は、さらに、モバイル端末によりデルタファイルが適用されたことから生じたデルタファイルの又は新しいソフトウェアイメージの、デジタル署名又はメッセージ認証コードを計算することができる。
【００６０】
代替形態として、新しいソフトウェアアプリケーションが、モバイル端末の現在のソフトウェアイメージに追加される場合、新しいソフトウェア全体が、モバイル端末、たとえばＯＴＡに伝送されることがある。上述したように、新しいソフトウェアアプリケーションは、ＭＡＣによりデジタル署名される又は保護されることがある。
【００６１】
モバイル端末のソフトウェアイメージ全体がＭＡＣにより記憶装置で完全性保護されている場合、又はソフトウェアイメージの完全性保護されている一部が更新された場合、完全性保護されているソフトウェアイメージのＭＡＣも更新する必要がある。完全性保護されているソフトウェアイメージ全体が交換された場合、ＭＡＣの計算が、ソフトウェアの初期ロードに関して遂行されることがある。しかし、ローディングステーション１０１、又はモバイル端末に転送される更新パッケージを生成するエンティティのみが、モバイル端末の、現在完全性が保護されているメモリコンテンツの一部を認識している場合、ローディングステーションは、更新されたソフトウェアイメージ全体の署名を提供することはできない。以下では、更新プロセスの実施形態について記述する。これによれば、モバイル端末は、頑強かつ安全な方法で、更新されたソフトウェアイメージの新しいＭＡＣを計算する。
【００６２】
図２は、モバイル端末の実施形態を示す、より詳細なブロック図である。図１に関連して既に記述したように、（全体が１０２で表されている）モバイル端末は、通信インターフェース１０４と、処理ユニット１０５と、フラッシュメモリ１０６とを備える。処理ユニット１０５は、処理回路２１０と、ランダムアクセスメモリ（ＲＡＭ）などの内部メモリ２１１と、秘密鍵２１２を格納するために保護されたメモリとを備える。処理回路２１０は、秘密鍵２１２への読み取りアクセスと、内部メモリ２１１への及びフラッシュメモリ１０６への読み取り／書込みアクセスとを有する。一実施形態において、秘密鍵２１２は、モバイル端末のチップ外からアクセスされ得ないチップ固有鍵である。
【００６３】
フラッシュメモリ１０６は、１組のメモリブロックに分割される。この記述においては、フラッシュメモリは、本明細書に上述したように、完全性が保護されているｎブロック２１３を含むと想定される。メモリブロックは、ｂｉ，ｉ＝１，，，，ｎで表される。メモリブロックｂｉがフラッシュメモリのブロックに対応する場合には、特に容易かつ効率的な実施が実現される。たとえば、それぞれのメモリブロックが、フラッシュメモリの複数のブロックのうちの一つのブロックと同一であり得る。メモリブロック２１３に加えて、フラッシュメモリ１０６は、その中に、さらに、メモリブロック２１３全体にわたって計算された１つ以上のＭＡＣ値２１４を格納している。いくつかのＭＡＣの場合には、それぞれのＭＡＣが、メモリブロック２１３の各部分集合全体にわたって計算されることがある。代替実施形態において、１つ又は複数のＭＡＣ２１４が、メモリ１０６ではなく、別個のメモリ内に格納されることがあることに留意されたい。
【００６４】
モバイル端末のそれぞれのスタートアップ時に、又はモバイル端末で動作しているアプリケーションにより（たとえばコアソフトウェアのプラットフォームにより）要請された時はいつでも、ブロック２１３の現在のメモリイメージの１つ又は複数のＭＡＣが、処理回路２１０により、秘密鍵２１２を入力として使用して計算される。したがって、メモリブロック全体にわたってのＭＡＣが、ｔ＝ｆ（ｂ１，．．．，ｂｎ；Ｋ）として書き込まれることがある。ここで、ｆはＭＡＣ関数であり、Ｋは秘密鍵２１２であり、ｔはこの結果生じたＭＡＣ値であり、これはＭＡＣのタグ値とも呼ばれる。
【００６５】
計算された値ｔがメモリ１０６内に格納されている基準タグ値ｔｒｅｆに対応する場合、モバイル端末は、引き続き通常に機能する。そうでない場合には、モバイル端末の機能のいくつか又はすべてが、動作不能となる。
【００６６】
図３は、モバイル端末の代替実施形態を例示している。図３のモバイル端末１０２は、図２のモバイル端末に対応する。しかし、この実施形態において、処理ユニット１０５は、別個のＭＡＣ計算モジュール３３３を備える。ＭＡＣ計算モジュールは、秘密鍵２１２を含む。この実施形態において、処理回路２１０は、ＭＡＣ計算モジュール３３３のＭＡＣ計算関数を呼び出し、ＭＡＣ計算モジュールにそれぞれの計算ステップのためのメモリブロックｂｉを提供する。ＭＡＣ計算モジュールは、計算されたＭＡＣ値を戻す。したがって、この実施形態において、鍵２１２へのアクセスはＭＡＣ計算モジュールに限られているので、処理回路２１０は、秘密鍵２１２への直接アクセスを有さず、これにより、セキュリティがさらに向上する。ＭＡＣ計算モジュール３３３は、ソフトウェア及び／又はハードウェアでＭＡＣ計算の実施を提供することができる。
【００６７】
以下、図２〜図４を参照しながら、モバイル端末のメモリの一部のための更新プロセスの実施形態について記述する。
【００６８】
図４は、モバイル端末のメモリコンテンツの更新プロセスの実施形態を示す流れ図である。
【００６９】
図４ａは、更新プロセスを示す全体的な流れ図である。初期ステップＳ４０１で、モバイル端末は、ローディングステーション／更新サーバから更新パッケージを受信する。更新パッケージは、ペイロードデータ、即ち実際のメモリ更新と、ローディングステーション／更新サーバによって生成されたデジタル署名とを含む。ローディングステーション／更新サーバによって伝送されたペイロードデータがｍで表されており、ローディングステーション／更新サーバは、ｓ＝Ｓ（ｍ，ＫＰｒ）に従ってデジタル署名ｓを生成する。ここで、Ｓは署名関数であり、ＫＰｒはローディングステーション／更新サーバの秘密鍵である。ローディングステーション／更新サーバは、ｍとｓとを含む更新パッケージを伝送する。ステップＳ４０１で、モバイル端末は、受信されたペイロードｍ’と受信された署名ｓ’とを含む、対応する更新パッケージを受信する。
【００７０】
その後のステップＳ４０２で、モバイル端末は、受信されたアップグレードペイロードｍ’、受信された署名ｓ’、及び署名ジェネレータによって使用される秘密鍵ＫＰｒに対応する公開鍵ＫＰｕを入力として、ブーリアン署名検査関数Ｓ’を適用することにより、署名ｓ’を検査する。署名検査関数Ｓ’が署名の検証が成功したことを表示した場合、モバイル端末は、信憑性のあるものとして更新パッケージｍ’を受け入れ、ステップＳ４０３でプロセスを続行する。そうでない場合には、プロセスはアボートされ、任意に、対応するメッセージがローディングステーションに送られる。
【００７１】
ステップＳ４０３で、受信された更新パッケージｍ’及びメモリブロックの現在のコンテンツに基づいて、モバイル端末は、フラッシュメモリブロックのメモリブロックｂｉのどれが更新によって変更される又は追加されるかを識別する。この記述においては、ｋメモリブロックが変更される／追加される（ｋ≦ｎ）必要があると想定される。これらのブロックは、ｂ’ｊ１，ｂ’ｊ２，．．．，ｂ’ｊｋ，で表される。ここで、すべてのｉ＝１，．．．，ｋについて、ｊｊ∈｛１，．．．，ｎ｝である。モバイル端末は、更新パッケージから、識別されたブロックの更新されたコンテンツを抽出し、好適な信頼できる内部電話メモリ２１１、たとえば内部ＲＡＭ内に、識別されたブロックの新しいコンテンツを格納する。
【００７２】
代替実施形態において、ステップＳ４０１で計算され、かつステップＳ４０２で検証されたデジタル署名は、メッセージｍ全体にわたってではなく、更新から生じたブロックｂ’ｊ１，ｂ’ｊ２，．．．，ｂ’ｊｋ全体にわたって計算され、これにより、更新プロセスのセキュリティがさらに向上する。したがって、この代替実施形態において、署名の検証（ステップＳ４０２）は、これらのブロックが計算された時点で、即ちステップＳ４０３の後に、遂行される。
【００７３】
ステップＳ４０４で、モバイル端末は、２つのＭＡＣの並列計算を遂行する。即ち、ＭＡＣ１で表されている第１のＭＡＣは、フラッシュメモリ１０６内に格納されている、現在のフラッシュメモリブロックｂ１，．．．，ｂｎ全体にわたって計算され、ＭＡＣ２で表されている第２のＭＡＣ２は、更新中にも変わらないメモリ１０６内に格納されているメモリブロックの現在のコンテンツ全体と、内部メモリ２１１内に格納されている、識別された新しいメモリブロックのコンテンツ全体とにわたって、計算される。したがって、両方のＭＡＣは、全メモリイメージ全体にわたって、即ち現在のイメージ全体と更新後の新しいイメージ全体とにわたって計算される。第２のＭＡＣは、メモリ１０６及び内部メモリ２１１からのブロックの仮想ビルド全体にわたって（over a virtual build of blocks）、即ち完全に更新されたメモリイメージが生成される前に、計算される。以下、２つのＭＡＣを計算するための並列プロセスの実施形態についてより詳細に記述する。両方のＭＡＣ計算が、２１２で表された、チップ固有秘密鍵Ｋを、入力として、さらに受信する。
【００７４】
ステップＳ４０５で、モバイル端末は、計算された第１のＭＡＣ（ＭＡＣ１）と、モバイル端末のメモリ２１４内に格納されている、ｔｒｅｆで表されている基準ＭＡＣ値とを比較する。ＭＡＣ値が一致した場合は、ステップＳ４０６でプロセスを続行する。一致しない場合は、プロセスはアボートされる。
【００７５】
ステップＳ４０６で、モバイル端末は、メモリ２１４内の現在の基準ＭＡＣ値ｔｒｅｆを第２のＭＡＣ値ＭＡＣ２と交換する。
【００７６】
その後のステップＳ４０７で、モバイル端末は、受信されたアップグレードパッケージに従ってソフトウェア更新を遂行する。これは、たとえ更新中にモバイル端末の電源が切られても、モバイル端末が、電源が切られる前に達したステップから更新を継続できるような形で遂行される。たとえば、これは、頑強なデルタアップグレードプロセスを適用することによって達成することができる。一実施形態において、更新プロセスの状態情報、たとえばソフトウェア更新を遂行する更新エージェントが、新しいブロックがメモリにフラッシュされる毎に、即ちそれぞれのフラッシュオペレーションの直前に、フラッシュメモリの所定のエリア内に格納される。状態情報が格納されるフラッシュメモリのエリアを、状態メモリ又は作業ディレクトリと呼ぶ。状態情報は、フラッシュオペレーション前の、メモリブロックの現在のコンテンツを含む。実際に新しいブロックがメモリにフラッシュされると、状態メモリが更新され、状態カウンタが増分されて、更新プロセスのどのステップに達したかを示す。したがって、更新プロセスがアボートされ、その後再始動された場合、更新プロセスは、状態メモリのコンテンツを読み取り、中断されたところから更新プロセスを続行する。たとえば、あるブロックのフラッシュオペレーション中にプロセスが中断された場合、プロセスは、そのブロックの全フラッシュオペレーションを繰り返す。
【００７７】
いくつかの実施形態において、更新プロセスは、モバイル端末のリブートを必要とする。
【００７８】
ステップＳ４０８で、モバイル端末は、新しく格納された基準ＭＡＣ、即ちｔｒｅｆ＝ＭＡＣ２に基づいて、メモリ１０６の更新されたコンテンツの完全性検査を遂行する。完全性検査関数は、秘密鍵Ｋを使用して、メモリ１０６のコンテンツ全体にわたってＭＡＣを計算し、その結果をｔｒｅｆと比較する。いくつかの実施形態においては、モバイル端末の次のスタートアップ時に、ステップ４０８が遂行される。
【００７９】
したがって、上述の更新プロセスにおいては、不誠実なユーザがメモリの再書込み（再フラッシュ）前に又は後に更新プロセスを中断し、許可されていないメモリコンテンツにより信憑性のあるメモリコンテンツを交換しようとする試みが、ステップＳ４０８における検証中に、及び／又はステップＳ４０５で元のＭＡＣの検証によって、検出されることとなる。
【００８０】
いくつかの実施形態において、ソフトウェア更新、又は更新プロセスの少なくともセキュリティ上重大なステップ、を担当するプログラムコードは、ファームウェア、完全性が保護されたコードなどの、信頼できるプログラムコードであり、これにより、モバイル端末内で更新ステップを遂行するソフトウェアが正しく働き、改ざんされていないことが保証される。したがって、このような実施形態において、少なくともステップＳ４０２、Ｓ４０３、Ｓ４０４、Ｓ４０５、Ｓ４０６、及びＳ４０８が、信頼できるプログラムコードによって遂行される。
【００８１】
図４ｂは、２つのメッセージ認証コードの並列計算の実施形態を示す流れ図である。ステップＳ４０４の２つのＭＡＣ、即ちＭＡＣ１及びＭＡＣ２の並列計算は、初期化ステップＳ４１１によって開始し、ここで、各ＭＡＣのための２つの状態機械ＭＡＣ１及びＭＡＣ２が初期化される。初期化ステップは、秘密鍵Ｋ、及び、任意に、いくつかの初期化パラメータに依存する。さらに、ブロックカウンタｉが、初期化されて、ＭＡＣが計算されるメモリブロックの第１のメモリブロックｂ１を指し示す。初期化の後、ステップＳ４１２でプロセスを続行する。
【００８２】
ステップ４１２で、プロセスは、フラッシュメモリ１０６からカウンタｉによって参照されるメモリブロックｂ１の現在の値を検索し、内部レジスタｂ内にメモリブロックを格納する。
【００８３】
その後のステップＳ４１３で、プロセスは、レジスタｂのコンテンツに基づいて、即ちブロックｂ１の現在のコンテンツに基づいて、状態機械ＭＡＣ１を更新する。
【００８４】
その後のステップＳ４１４で、プロセスは、ブロックｂ１が、更新によって変更される、以前に識別されたブロックの１つであるかどうか、即ち、任意のκ∈｛１，．．．，ｋ｝についてｉ＝ｊκかどうかを判断する。ここで、ｊκとは、変更される、識別されたメモリブロックのインデックスである。現在のブロックが識別されたブロックの１つである場合は、プロセスはステップＳ４１５に進む。そうでない場合には、プロセスはステップＳ４１６に進む。
【００８５】
ステップＳ４１５で、プロセスは、内部メモリ２１１内に以前に格納された、識別されたメモリブロックの、対応する新しいメモリブロックコンテンツｂ’ｊκにより、レジスタ値ｂを交換する。次いで、プロセスは、ステップＳ４１６に進む。
【００８６】
ステップＳ４１６で、プロセスは、レジスタｂのコンテンツに基づいて、即ちブロックｂ１の現在のコンテンツ又は更新されたコンテンツｂ’ｊκのいずれかに基づいて、状態機械ＭＡＣ２を更新する。状態機械ＭＡＣ１及びＭＡＣ２の両方の更新が、メモリ１０６からの現在のブロックｂ１の１つのメモリ読み取りオペレーションに基づいて遂行されることに留意されたい。したがって、両方のＭＡＣが同じ現在のメモリコンテンツに基づくことが保証される。
【００８７】
その後のステップＳ４１７で、カウンタｉは、増分されて、その後のメモリブロックｂｉ＋１を指し示す。
【００８８】
ステップＳ４１８で、すべてのメモリブロックが処理されたかどうかがテストされる。処理されている場合、プロセスは、ステップＳ４１９に進む。そうでない場合には、プロセスは、ステップＳ４１２に戻って、次のメモリブロックを処理する。
【００８９】
ステップＳ４１９で、２つのＭＡＣ値ＭＡＣ１及びＭＡＣ２の計算が終了し、プロセスは、全体の更新プロセスに戻る。
【００９０】
図５は、第１及び第２のＭＡＣを計算するための計算プロセスの実施形態を示す機能ブロック図である。２つのメッセージ認証コードＭＡＣ１及びＭＡＣ２の計算は、各メッセージ認証コード計算モジュール５２４及び５２５によって遂行される。モジュール５２４は、フラッシュメモリ１０６内に格納されているメモリブロック２１３を受信し、メモリ１０６の現在のコンテンツ全体にわたってメッセージ計算コードＭＡＣ１を生成する。このために、計算プロセスは、所定のシーケンスでメモリ１０６からメモリブロックを読み取り（たとえば一度に１つのメモリブロックを読み取り）、それぞれの読み取りメモリブロックをメッセージ認証コード計算モジュール５２４及びセレクタモジュール５２３の両方に送る、メモリ読み取りモジュール５２２を含む。したがって、この実施形態において、セレクタモジュール及びＭＡＣ計算モジュール５２４によって受信されたメモリブロックは、フラッシュメモリの同じ読み取りオペレーションから発生し、これにより、２つの計算の間でのメモリを用いた許可されていない改ざんに対するセキュリティが向上する。
【００９１】
セレクタモジュール５２３は、読み取りモジュール５２２からメモリブロックを受信し、さらに、上述した内部メモリ２１１からメモリブロックｂ’ｊ１，．．．，ｂ’ｊｋを読み取る。読み取りモジュール５２２から受信されたそれぞれのメモリブロックについて、セレクタモジュール５２３は、そのメモリブロックの更新されたバージョンが内部メモリ２１１内に存在するかどうかを判断する。そのような更新されたバージョンがあった場合、セレクタモジュール５２３は、更新されたメモリブロックをＭＡＣ計算モジュール５２５に送る。そうでない場合には、セレクタモジュールは、読み取りモジュール５２２から受信された現在のメモリブロックをＭＡＣ計算モジュール５２５に送る。したがって、ＭＡＣ計算モジュール５２５は、メモリ１０６の仮想イメージ、即ちメモリ更新後に得られるメモリイメージ全体にわたって、メッセージ認証コードＭＡＣ２を計算する。
【００９２】
図６は、第１及び第２のＭＡＣを計算するための計算プロセスの別の実施形態を示す機能ブロック図である。この実施形態は、図５の２つのＭＡＣ計算モジュールとは異なり、１つのＭＡＣ計算モジュールのみを備える。ＭＡＣ計算モジュール６３３は、反復ＭＡＣ計算プロセスを遂行し、それぞれの反復が、ＭＡＣが計算されるメモリブロックのうちの１つの処理を含む。それぞれの反復において、１組の内部状態変数が、メモリブロックの処理に基づいて更新される。
【００９３】
図６の実施形態は、２組のレジスタ６３５及び６３６を備え、それぞれが、ＭＡＣ計算モジュール６３３の１組の内部状態変数を格納するよう適応される。したがって、オペレーショ中に、プロセスは、レジスタ６３５及び６３６のそれぞれの状態変数を初期化する。その後、ＭＡＣ計算モジュール６３３は、セレクタモジュール６２３によって制御されて、一連の反復を遂行する。それぞれの反復時に、ＭＡＣ計算モジュール６３３は、フラッシュメモリ１０６から現在のメモリブロック、又は内部メモリ２１１から更新されたブロックを受信する。ＭＡＣ計算モジュールは、受信されたメモリブロックを処理し、レジスタ６３５及び６３６のうちの１つを更新する。このために、セレクタモジュールは、２つのスイッチ６３２及び６３４を制御する。セレクタモジュールは、ＭＡＣ計算モジュールの１つおきの反復時にレジスタ６３５が更新され、残りの反復時にレジスタ６３６が更新されるよう、スイッチ６３４を制御する。さらに、セレクタモジュール６２３は、レジスタ６３５が更新されている間の反復時に、ＭＡＣ計算モジュールがフラッシュメモリ１０６から対応するメモリブロックを受信するよう、スイッチ６３２を制御する。レジスタ６３６が更新されている間の反復時に、セレクタモジュール６２３は、ＭＡＣ計算回路が、対応するメモリブロックが更新中に変化するかしないかに応じて、フラッシュメモリ１０６から現在のメモリブロックを、又は内部メモリ２１１から対応する更新されたメモリブロックを受信するよう、スイッチ６３２を制御する。一実施形態において、プロセスは、さらに、フラッシュメモリ１０６から一連のメモリブロックを読み出し、これらをスイッチ６３２に送る、読み取りモジュール６２２を備える。読み取りモジュールは、セレクタユニットによって制御されて、１つおきの反復時に、読み取りオペレーションを遂行し、これにより、同じメモリブロックコンテンツが両方のＭＡＣ計算に送られることが保証される。
【００９４】
一実施形態において、図６に関連して記述されているプロセスは、ハードウェアにおいて実施され、これにより、高度なセキュリティ及び高い計算性能が実現する。一実施形態において、ＭＡＣは、高速なハードウェア実装が公知である、ブロック暗号又は一方向ハッシュ関数である。ＭＡＣのハードウェア実装の一例が、Ｇ．セリミス（Ｇ．  Ｓｅｌｉｍｉｓ）らによる「ワイヤレスアプリケーションプロトコルのためのキードハッシュメッセージ認証コードのＶＬＳＩ実施（ＶＬＳＩ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｔｈｅ  ｋｅｙｅｄ−ｈａｓｈ  ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ  ｆｏｒ  ｔｈｅ  ｗｉｒｅｌｅｓｓ  ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）」（電子機器、回路、及びシステムに関する第１０回ＩＥＥＥ国際会議議事録（ＩＣＥＣＳ’０３）、アラブ首長国連邦、２００３年１２月１４日〜１７日）に記述されている。
【００９５】
したがって、このようなハードウェア実装の実施形態において、ＭＡＣ計算は、秘密鍵Ｋ及び任意に初期化ベクトルに依存する初期化によって開始する。初期化により、１組の状態変数の初期値が生じる。その後のＭＡＣ計算中に、状態変数のいくつか又はすべてが、処理されたそれぞれのメモリブロックのために更新される。ＭＡＣハードウェアを２つ備える必要のない、本明細書に上述した２つのＭＡＣの並列計算が、図６の実施形態によって実現され得る。したがって、ＭＡＣ状態変数を格納するための内部レジスタのみを２つ備え、ハードウェアブロックの１つおきの呼び出しにより、第１又は第２の組のレジスタのＭＡＣ更新が生じる。
【００９６】
いくつかの実施形態について記述し詳細に示してきたが、本発明はこれらに限定されるものではなく、特許請求の範囲で定義されている主題の範囲内において、他の方法で具現化されることもある。
【００９７】
特に、データ処理デバイスの一例としてのモバイル端末を参照しながら、実施形態について主に記述してきた。しかし、本明細書に記述されている方法、製品手段、及びデバイスはまた、他のデータ処理デバイスにも適用されることがあることを理解されたい。
【００９８】
さらに、１つのＭＡＣによりメモリイメージ全体が保護される状況を参照しながら、実施形態について主に記述してきた。しかし、本明細書に記述されている方法はまた、異なるＭＡＣによりメモリ内に格納されているデータの異なる一部が保護される状況にも適用され得ることを理解されよう。
【００９９】
さらに、ソフトウェアイメージのローディングを参照しながら、実施形態について主に記述してきた。しかし、本明細書に記述されている方法はまた、他の種類のメモリコンテンツが更新される状況にも適用され得ることを理解されよう。
【０１００】
本明細書に記述されている方法、製品手段、及びデバイスは、いくつかの互いに異なる要素を備えるハードウェアにより、そして、好適にプログラムされたマイクロプロセッサにより、実施され得る。いくつかの手段を列挙しているデバイスに関する請求項においては、これらの手段のいくつかが、ハードウェアの全く同一のアイテム、たとえば、好適にプログラムされたマイクロプロセッサ、１つ以上のデジタル信号プロセッサなどによって具現化され得る。一定の手段が互いに異なる従属請求項に引用されていること又は異なる実施形態に記述されていることは、これらの手段の組合せの使用が好ましくないことを示すものではない。
【０１０１】
用語「含む／備える」は、本明細書に使用されている場合、記載されている機能、インテジャー（integers）、ステップ、又は構成要素の存在を規定するものであり、１つ以上の他の機能、インテジャー、ステップ、構成要素、又はこれらの群の存在又は追加を除外するものではないことを強調しておきたい。
【図面の簡単な説明】
【０１０２】
【図１】モバイル端末内にデータをロードするシステムを示す概略ブロック図である。
【図２】処理デバイスの実施形態を示す概略ブロック図である。
【図３】処理デバイスの別の実施形態を示す概略ブロック図である。
【図４】処理デバイスのメモリコンテンツを更新する更新プロセスの実施形態を示す流れ図である。
【図５】第１及び第２のＭＡＣを計算するプロセスの実施形態を示す機能ブロック図である。
【図６】第１及び第２のＭＡＣを計算するプロセスの別の実施形態を示す機能ブロック図である。
【図１】
2008527510.tif 000003
【図２】
2008527510.tif 000004
【図３】
2008527510.tif 000005
【図４ａ】
2008527510.tif 000006
【図４ｂ】
2008527510.tif 000007
【図５】
2008527510.tif 000008
【図６】
2008527510.tif 000009
【国際調査報告】
2008527510.tif 000010
2008527510.tif 000011