(57)【要約】本発明は、一般に、データセキュリティ及びデータメモリ技術に関し、より詳しくは、フラッシュメモリ内のデジタル証明書を保存及び更新する方法を提供し、さらにその方法を利用するフラッシュメモリ及び電子装置を提供する。本発明による方法は、フラッシュメモリ（１１０）の耐改ざん性の強化のために、所定の消去−書き込みブロックと読み出し−書き込みブロックとを備えるフラッシュメモリ（１１０）に適用可能であり、証明書はコンピュータプログラムを認証し、そのコンピュータプログラムに関連付けられた検証プログラムによって検証され、本方法は、（２３０）少なくとも一つの消去済みの消去−書き込みブロックに複数のメモリスロットを定義する工程であって、それぞれのメモリスロットはバイナリ「０」又はバイナリ「１」のビットパターンを備える開始アドレスを有する工程と、（２４０）第１及び第２のデジタル証明書をメモリスロットの第１及び第２のスロットに書き込む工程と、（２５０）証明書スロット・アドレス・ポインタを定義する工程と、（２６０）証明書スロット・アドレス・ポインタを、ポインタの「０」又は「１」のビットパターンをそれぞれ「１」又は「０」のビットパターンへと置き換えることによって更新する工程とを備える。
2009517749.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ（１００）の耐改ざん性を強化するために、所定の消去−書き込みブロックと読み出し−書き込みブロックとを有する前記フラッシュメモリにデジタル証明書の書き込みと更新とを行う方法であって、
前記証明書は、
コンピュータプログラムを認証し、
前記コンピュータプログラムに関連付けられた検証プログラムによって検証され、
前記方法は、
少なくとも一つの前記消去−書き込みブロックを消去する工程と、
前記少なくとも一つの消去済みの消去−書き込みブロック内に複数のメモリスロットを定義する工程であって、それぞれのメモリスロットはバイナリ「０」又はバイナリ「１」のビットパターンを備える開始アドレスを有する工程と、
第１の前記メモリスロットへ第１のデジタル証明書を書き込み、第２の前記メモリスロットへ第２のデジタル証明書を書き込む工程と、
前記第１のメモリスロットの開始アドレスを指し示すように証明書スロット・アドレス・ポインタを定義する工程であって、該スロット・アドレス・ポインタは前記検証プログラムが現在有効な証明書をフェッチするために用いられる工程と、
前記証明書スロット・アドレス・ポインタの「０」又は「１」のビットパターンをそれぞれ「１」又は「０」に置き換えることにより該ポインタを更新して、該アドレス・ポインタが前記第２のメモリスロットの開始アドレスを指し示すようにする工程と
を備える前記方法。
【請求項２】
前記少なくとも一つの前記消去−書き込みブロック内の専用スロットに前記証明書スロット・アドレス・ポインタを書き込む工程と、
前記証明書スロット・アドレス・ポインタの「１」のビットパターンを「０」のビットパターンに置き換えることにより該アドレス・ポインタを更新する工程と
をさらに備える請求項１に記載の方法。
【請求項３】
前記少なくとも一つの前記消去−書き込みブロックは、フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるブロックであることを特徴とする請求項１に記載の方法。
【請求項４】
前記コンピュータプログラムは、前記フラッシュメモリと処理手段との電源がオンになった際に、該フラッシュメモリに結合された該処理手段をブートさせるブートプログラムであり、
前記方法は、前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記ブロックに前記ブートプログラムを保存する工程をさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記ブートプログラムは前記検証プログラムを備え、
該検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存されることを特徴とする請求項４に記載の方法。
【請求項６】
前記検証プログラムは、
前記証明書スロット・アドレス・ポインタを更新するためのコード手段と、
前記フラッシュメモリを書き込みからロックする書き込みロックコード手段とを備え、
前記方法は、前記証明書スロット・アドレス・ポインタが更新された直後に、前記フラッシュメモリが書き込みからロックされているようするために、前記書き込みロックコード手段を該フラッシュメモリに保存する工程をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記フラッシュメモリはＭＬＣフラッシュメモリであり、
前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記アドレス・ポインタの「１１」のビットパターンを「００」のビットパターンに置き換える工程を備えることを特徴とする請求項２に記載の方法。
【請求項８】
前記第２のデジタル証明書は、
前記第１のデジタル証明書の更新バージョンに相当し、
ある時点で前記第１のデジタル証明書又は該第１の証明書の更新バージョンを置き換えることを特徴とする請求項１に記載の方法。
【請求項９】
前記証明書はプリインストールされ、
前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記検証プログラムにより定期的に実行されるか、又は、前記第１の証明書によって若しくは該第１の証明書の更新バージョンによって示される有効性の失効期限に応じて、該検証プログラムによって実行されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記証明書スロット・アドレス・ポインタを更新する前記工程は、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「１」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「０」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「０」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとして特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を備えることを特徴とする請求項８に記載の方法。
【請求項１１】
前記フラッシュメモリは２×２５６バイトのサイズのページを有するＮＡＮＤフラッシュメモリであり、
前記方法は、それぞれのメモリスロットを一つのページ又はページのセットとして定義する工程をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
所定の消去−書き込みブロックと読み出し−書き込みブロックとを有するフラッシュメモリであって、
少なくとも第１及び第２の証明書が前記フラッシュメモリに保存されていて、
前記証明書はコンピュータプログラムを認証することができ、
前記証明書は検証プログラムによって検証されることができ、
前記第２のデジタル証明書は第１のデジタル証明書の更新バージョンに相当し、
前記証明書は、消去−書き込みブロック内に定義されたそれぞれのメモリスロットに保存されていて、
前記証明書スロット・アドレス・ポインタは前記フラッシュメモリに保存されていて、
前記証明書スロット・アドレス・ポインタは現在有効な証明書が保存されているスロットを指し示すことを特徴とするフラッシュメモリ。
【請求項１３】
前記証明書が保存されている前記消去−書き込みブロック内の専用スロットに前記証明書スロット・アドレス・ポインタが保存されていることを特徴とする請求項１２に記載のフラッシュメモリ。
【請求項１４】
前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記消去−書き込みブロック内に前記メモリスロットが定義されることを特徴とする請求項１２に記載のフラッシュメモリ。
【請求項１５】
前記コンピュータプログラムは、処理手段が前記フラッシュメモリに結合され、前記フラッシュメモリと処理手段とが電源がオンになった際に、前記処理手段をブートするブートプログラムであり、
前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定される前記フラッシュメモリのブロックに前記ブートプログラムが保存されていることを特徴とする請求項１４に記載のフラッシュメモリ。
【請求項１６】
前記ブートプログラムは前記検証プログラムを備え、
前記検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存されることを特徴とする請求項１５に記載のフラッシュメモリ。
【請求項１７】
前記検証プログラムは、
前記証明書スロット・アドレス・ポインタの「１」のビットパターンを「０」のビットパターンに置き換えることによって、又は前記証明書スロット・アドレス・ポインタの「１１」のビットパターンを「００」のビットパターンに置き換えることによって、前記証明書スロット・アドレス・ポインタを更新するコード手段を備え、
前記フラッシュメモリを書き込みからロックする書き込みロックコード手段をさらに備え、
前記書き込みロック手段は、前記検証プログラムが実行されている間に、前記証明書スロット・アドレス・ポインタが更新された直後に前記フラッシュメモリが書き込みからロックされているように、前記フラッシュメモリに保存されていることを特徴とする請求項１６に記載のフラッシュメモリ。
【請求項１８】
前記フラッシュメモリはＭＬＣフラッシュメモリであり、
前記証明書スロット・アドレス・ポインタは「１１」のビットパターン又は「００」のビットパターンを備えることを特徴とする請求項１２に記載のフラッシュメモリ。
【請求項１９】
前記証明書はプリインストールされ、
前記検証プログラムは、該検証プログラムが実行される間に、前記第１の証明書に示されるか、又は該第１の証明書の更新バージョンによって示される有効性の有効期限に応じて定期的に前記証明書スロット・アドレス・ポインタを更新するコード手段を備えることを特徴とする請求項１２に記載のフラッシュメモリ。
【請求項２０】
前記検証プログラムは、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「１」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「０」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「０」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとしてそれぞれ特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を実行するプログラムコード手段を備えることを特徴とする請求項１２に記載のフラッシュメモリ。
【請求項２１】
前記フラッシュメモリは２×２５６バイトのサイズのページを有するＮＡＮＤフラッシュメモリであり、
それぞれのメモリスロットは一つのページかページのセットとして定義されることを特徴とする請求項１２に記載のフラッシュメモリ。
【請求項２２】
フラッシュメモリと通信可能なように結合された処理部を備え、
前記フラッシュメモリは請求項１２に記載のフラッシュメモリであることを特徴とする電子装置。
【請求項２３】
前記装置はモバイル無線端末である請求項２２に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データセキュリティとデータメモリ技術とに関し、より詳しくは、フラッシュメモリ内のデジタル証明書を保存及び更新／発見する方法と、この方法を利用するフラッシュメモリ及び電子装置に関する。
【背景技術】
【０００２】
公開鍵−秘密鍵暗号方式に基づくデータセキュリティの仕組みは通常、対象の公開鍵の有効性を検証するためにデジタル証明書を利用する。デジタル証明書の例として、ＰＧＰ証明書とＸ．５０９セキュリティ標準に準拠した証明書とがある。デジタル証明書は通常、公開鍵と、証明書情報（名前やユーザＩＤなどといった対象の「本人性（Ｉｄｅｎｔｉｔｙ）」情報）と、一つ以上のデジタル署名との３種類のものから構成される。一般的に言って、鍵又は証明書が古くなるほど、その鍵／証明書が攻撃者に改ざんされている危険性は高まる。したがって、すべての暗号システムは通常は鍵とそれに関連するデジタル証明書とを、一定の間隔で又は不正行為／攻撃が検出され次第更新する。
【０００３】
デジタル証明書は、例えば様々な電子装置、例として携帯電話のような移動局で、デバイスのセキュアなブートを提供するために使用される。そして、デジタル証明書は通常、ブートプログラム及び検証プログラムとともにＲＯＭに保存され、検証プログラムによってブート中に検証される。ＲＯＭは書き換えが不可能であることから、例えばフラッシュメモリと比較してＲＯＭメモリは柔軟性がなく、例えばブートプログラムの更新は、ＲＯＭ全体を置き換えなければならないために、高コストとなることが問題である。さらに、ＲＯＭメモリそれ自体が例えばフラッシュメモリと比較して幾分高価である。しかしながら、フラッシュメモリに関連するセキュリティ問題のために、フラッシュメモリは移動局のＲＯＭを代替することができなかった。
【０００４】
内蔵プログラムを有するフラッシュメモリにＲＯＭが結合される場合には、このプログラムはフラッシュメモリに保存されたデジタル証明書によって同様に検証され得る。フラッシュ内のデジタル証明書の更新は、そのフラッシュの消去−書き込みブロックの消去／書き込みの間にフラッシュメモリがセキュリティ攻撃に曝されるためにセキュリティ問題を伴う。すなわち、フラッシュメモリの耐改ざん性を強化し、フラッシュメモリをよりセキュアにする方法及び手段を見つける必要性がある。
【０００５】
さらに、電子デバイスにおけるコスト効率の高いメモリの使用を可能とする方法及び手段を発見する一般的な必要性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、フラッシュメモリの耐改ざん性の強化、すなわちフラッシュのデータセキュリティの向上である。
【０００７】
本発明の別の目的は、電子デバイスにおける効率的なメモリの使用を提供することである。
【０００８】
本発明の別の目的は、ポータブル無線通信機器、例えば移動局、ページャ、通信機、スマートフォン、ＰＤＡ、携帯電話などといった、本明細書でモバイル無線端末と呼ばれる電子機器の製造コストを削減することである。
【０００９】
本発明のさらに別の目的は、ソフトウェア更新について上記のような電子機器の柔軟性を向上させる効果的でかつ効率的な手段及び方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明は、モバイル無線端末のような電子機器に用いられる、フラッシュメモリにデジタル証明書を書き込み、フラッシュメモリ内のデジタル証明書を更新し、フラッシュメモリからデジタル証明書を読み出す方法を提供することによって、主に上記の目的を達成する。本発明によれば、フラッシュメモリ内の証明書は消去される必要がなく、好ましくはそれらの証明書は決して消去されず、証明書の更新は単なる証明書スロット・アドレス・ポインタの更新によって実行され、従って、証明書の更新中にフラッシュメモリがセキュリティ攻撃に曝される時間の期間を削減する。これは、フラッシュの耐改ざん性が改善されるということを意味し、モバイル無線端末のような幅広い電子機器でフラッシュメモリがＲＯＭメモリを代替することを可能とする。従って、多くの従来からあるＲＯＭ、特にＢＩＯＳ  ＲＯＭを、データセキュリティを全く損なうことなく、本発明による方法を利用するフラッシュメモリに置き換えることができる。したがって、電子機器をソフトウェア更新、特にブートプログラム更新についてより柔軟にするとともに、製造／使用のコストを削減する。
【００１１】
第１の態様によれば、本発明は、フラッシュメモリの耐改ざん性を強化するために、所定の消去−書き込みブロックと読み出し−書き込みブロックとを有する前記フラッシュメモリにデジタル証明書の書き込みと更新とを行う方法であって、前記証明書は、コンピュータプログラムを認証し、前記コンピュータプログラムに関連付けられた検証プログラムによって検証され、前記方法は、
少なくとも一つの前記消去−書き込みブロックを消去する工程と、
前記少なくとも一つの消去済みの消去−書き込みブロック内に複数のメモリスロットを定義する工程であって、それぞれのメモリスロットはバイナリ「０」又はバイナリ「１」のビットパターンを備える開始アドレスを有する工程と、
第１の前記メモリスロットへ第１のデジタル証明書を書き込み、第２の前記メモリスロットへ第２のデジタル証明書を書き込む工程と、
前記第１のメモリスロットの開始アドレスを指し示すように証明書スロット・アドレス・ポインタを定義する工程であって、該スロット・アドレス・ポインタは前記検証プログラムが現在有効な証明書をフェッチするために用いられる工程と、
前記証明書スロット・アドレス・ポインタの「０」又は「１」のビットパターンをそれぞれ「１」又は「０」に置き換えることにより該ポインタを更新して、該アドレス・ポインタが前記第２のメモリスロットの開始アドレスを指し示すようにする工程と
を備える。
【００１２】
ある実施形態では、前記方法は、
前記フラッシュメモリ内の専用スロットに前記証明書スロット・アドレス・ポインタを書き込む工程と、
前記証明書スロット・アドレス・ポインタの「１」のビットパターンを「０」のビットパターンに置き換えることにより該アドレス・ポインタを更新する工程と
をさらに備える。
【００１３】
ある実施形態では、前記少なくとも一つの前記消去−書き込みブロックは、フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるブロックである。
【００１４】
ある実施形態では、前記コンピュータプログラムは、前記フラッシュメモリと処理手段との電源がオンになった際に、該フラッシュメモリに結合された該処理手段をブートさせるブートプログラムであり、前記方法は、前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記ブロックに前記ブートプログラムを保存する工程をさらに備える。
【００１５】
ある実施形態では、前記ブートプログラムは前記検証プログラムを備え、該検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存される。
【００１６】
ある実施形態では、前記検証プログラムは、前記証明書スロット・アドレス・ポインタを更新するためのコード手段と、前記フラッシュメモリを書き込みからロックする書き込みロックコード手段とを備え、前記方法は、前記証明書スロット・アドレス・ポインタが更新された直後に、前記フラッシュメモリが書き込みからロックされているようするために、前記書き込みロックコード手段を該フラッシュメモリに保存する工程をさらに備える。
【００１７】
ある実施形態では、前記フラッシュメモリはＭＬＣフラッシュメモリであり、前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記アドレス・ポインタの「１１」のビットパターンを「００」のビットパターンに置き換える工程を備える。
【００１８】
ある実施形態では、前記第２のデジタル証明書は、前記第１のデジタル証明書の更新バージョンに相当し、ある時点で前記第１のデジタル証明書又は該第１の証明書の更新バージョンを置き換える。
【００１９】
ある実施形態では、前記証明書はプリインストールされ、前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記検証プログラムにより定期的に実行されるか、又は、前記第１の証明書によって若しくは該第１の証明書の更新バージョンによって示される有効性の失効期限に応じて、該検証プログラムによって実行される。
【００２０】
ある実施形態では、前記証明書スロット・アドレス・ポインタを更新する前記工程は、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「１」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「０」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「０」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとして特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を備える。
【００２１】
ある実施形態では、前記フラッシュメモリは２ｘ２５６バイトのサイズのページを有するＮＡＮＤフラッシュメモリであり、前記方法は、
それぞれのメモリスロットを一つのページ又はページのセットとして定義する工程をさらに備える。
【００２２】
第２の態様によれば、本発明は所定の消去−書き込みブロックと読み出し−書き込みブロックとを有するフラッシュメモリであって、少なくとも第１及び第２の証明書が前記フラッシュメモリに保存されていて、前記証明書はコンピュータプログラムを認証することができ、前記証明書は検証プログラムによって検証されることができ、前記第２のデジタル証明書は第１のデジタル証明書の更新バージョンに相当し、前記証明書は、消去−書き込みブロック内に定義されたそれぞれのメモリスロットに保存されていて、前記証明書スロット・アドレス・ポインタは前記フラッシュメモリに保存されていて、前記証明書スロット・アドレス・ポインタは現在有効な証明書が保存されているスロットを指し示す。
【００２３】
ある実施形態では、前記証明書が保存されている前記消去−書き込みブロック内の専用スロットに前記証明書スロット・アドレス・ポインタが保存されている。
【００２４】
ある実施形態では、前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記消去−書き込みブロック内に前記メモリスロットが定義される。
【００２５】
ある実施形態では、前記コンピュータプログラムは、処理手段が前記フラッシュメモリに結合され、前記フラッシュメモリと処理手段とが電源がオンになった際に、前記処理手段をブートするブートプログラムであり、前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定される前記フラッシュメモリのブロックに前記ブートプログラムが保存されている。
【００２６】
ある実施形態では、前記ブートプログラムは前記検証プログラムを備え、前記検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存される。
【００２７】
ある実施形態では、前記検証プログラムは、前記証明書スロット・アドレス・ポインタの「１」のビットパターンを「０」のビットパターンに置き換えることによって、又は前記証明書スロット・アドレス・ポインタの「１１」のビットパターンを「００」のビットパターンに置き換えることによって、前記証明書スロット・アドレス・ポインタを更新するコード手段を備え、前記フラッシュメモリを書き込みからロックする書き込みロックコード手段をさらに備え、前記書き込みロック手段は、前記検証プログラムが実行されている間に、前記証明書スロット・アドレス・ポインタが更新された直後に前記フラッシュメモリが書き込みからロックされているように、前記フラッシュメモリに保存されている。
【００２８】
ある実施形態では、前記フラッシュメモリはＭＬＣフラッシュメモリであり、前記証明書スロット・アドレス・ポインタは「１１」のビットパターン又は「００」のビットパターンを備える。
【００２９】
ある実施形態では、前記証明書はプリインストールされ、前記検証プログラムは、該検証プログラムが実行される間に、前記第１の証明書に示されるか、又は該第１の証明書の更新バージョンによって示される有効性の有効期限に応じて定期的に前記証明書スロット・アドレス・ポインタを更新するコード手段を備える。
【００３０】
ある実施形態では、前記検証プログラムは、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「１」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「０」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「０」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとしてそれぞれ特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を実行するプログラムコード手段を備える。
【００３１】
ある実施形態では、前記フラッシュメモリは２×２５６バイトのサイズのページを有するＮＡＮＤフラッシュメモリであり、それぞれのメモリスロットは一つのページかページのセットとして定義される。
【００３２】
第３の態様によれば、本発明はフラッシュメモリと通信するように結合された処理部を備える電子装置を提供し、フラッシュメモリは本発明の第２の態様によるフラッシュメモリである。
【００３３】
ある実施形態では、電子装置はモバイル無線端末である。
【００３４】
本明細書に説明されている方法の工程の示された順序は、当業者によって理解される通りに、さまざまに変化してもよく、したがって、本発明は記載された順序に制限されるものではない。
【００３５】
本発明は上記に要約されているものの、本発明は付随する請求項１−２３で定義される。
【００３６】
本明細書において使用されている「備える／備えている（ｃｏｍｐｒｉｓｅｓ／ｃｏｍｐｒｉｓｉｎｇ）」の語は規定された特徴、整数、工程、又は要素の存在を特定するために用いられるが、一つ以上の他の特徴、整数、工程、要素、又はそれらの組み合わせの存在又は追加を除外するものではないことは強調されるべきである。
【００３７】
本発明と関連のある基礎的な用語が以下に説明される。
【００３８】
フラッシュメモリは、フラッシュとも呼ばれ、書き換え可能なメモリチップであり、電源のない状態でも内容を保持する。フラッシュメモリはＥＥＰＲＯＭチップから発展したものであり、その名前はいかに高速にフラッシュが消去できるのか（「すぐに（ｉｎ  ａ  ｆｌａｓｈ）」）を表現するために造語された。ＮＡＮＤフラッシュとＮＯＲフラッシュとがある。ＮＡＮＤフラッシュは１００万回までの書き換えが可能であり、ＮＡＮＤフラッシュの消去と書き込みとはＮＯＲフラッシュと比較して高速である。今日では、フラッシュは典型的に８ＭＢ−１ＧＢの範囲のメモリサイズを備える。
【００３９】
メモリセルは、セルとも呼ばれる。セルはフラッシュの単一のアドレス（の番号）に、どのくらいのデータの書き込み／保存が可能であるかを示すメモリサイズである。従来からあるメモリセルサイズは例えば１バイト、すなわち８ビットである。
【００４０】
ブロックは消去−書き込みブロックとも呼ばれる。フラッシュに書き込む前に、ブロック内のメモリセルは消去される。ブロックは今日ではＮＡＮＤフラッシュで８ＫＢから１２８ＫＢの範囲、ＮＯＲフラッシュで６４−２５６ＫＢの範囲のデータサイズを有する。消去−書き込みブロックは消去−書き込みブロックのすべてのビットを「１」にセットすることによって消去される。消去後に、一つのブロックは「１」のビットを「０」のビットへセットするだけで更新（書き込み及び書き換え）され得る。慣習的にＭＬＣフラッシュと呼ばれるいわゆるマルチレベル・セル・フラッシュのブロックは、通常は「１」のビットのペアを「０」のビットのペアにセットすることによって更新される。すなわち、一つの「１１」のビットパターンは一つの「００」のビットパターンに置き換えられ、当業者に既知の利点を与える。
【００４１】
読み出し−書き込みブロックは、単一のフェッチ・ステップによって読み出しが可能であり、かつ単一のステップで書き込み又は書き換えが可能な（すなわち、すべてのブロックを消去する必要なしに更新が可能な）フラッシュのメモリ領域である。読み出し−書き込みブロックは消去−書き込みブロックに対応してもよいし、消去−書き込みブロックの一部であってもよい。今日では、ＮＯＲフラッシュは通常、１バイトのサイズの読み出し−書き込みブロックを備える。
【００４２】
ページは、ＮＡＮＤフラッシュの読み出し−書き込みブロックによって形成され、通常は２×２５６、すなわち５１２バイトのセクタ・サイズのメモリ領域である。しかしながら、他のページ・サイズが使用されてもよい。
【００４３】
スロットは、メモリスロットとも呼ばれ、本発明では書き込みブロックの内部の専用メモリ領域として定義される。ＮＡＮＤフラッシュの場合は、一つのスロットはページのセットとして、たとえば２ページの１０２４バイトとして定義されてもよい。本発明は、デジタル証明書の容易な更新を可能とするようにデジタル証明書などを保存するためのスロット、すなわち以下でさらに詳しく説明されるようにデジタル証明書スロット・ポインタを更新することによって証明書のロールオーバを実行するためのスロットを定義する。
【００４４】
証明書スロット・アドレス・ポインタは、本発明では、フラッシュ内の現在有効な証明書が保存されているスロットの開始アドレスを指し示すように定義される。証明書スロット・アドレス・ポインタは現在有効な証明書を発見するために検証プログラムによって使用される。
【００４５】
本発明の特徴と利点とは、添付の図面を参照する以下の発明を実施するための好適な実施形態の詳細な説明から、より明らかになるだろう。
【発明を実施するための最良の形態】
【００４６】
図１−４を参照しつつ、本発明を以下により詳細に説明する。
【００４７】
本明細書において本発明は、電子機器がモバイル無線端末である特定の実施形態について説明されるが、本発明はフラッシュメモリと通信可能なように結合された例えばＣＰＵのような処理部を備えるいかなる電子機器にも適用可能であることが理解されよう。
【００４８】
モバイル無線端末の例としては、例えば携帯電話、ページャ、通信機、すなわち電子的オーガナイザ、スマートフォン、又は同種の物、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ポータブル通信装置などがある。
【００４９】
図１はモバイル無線端末１００の主要な機能ブロックの一部を説明する。モバイル端末１００は、マイクロ・コンピュータ・ユニット、ＭＣＵ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、又は同種の物のような従来からある制御回路１３０と、以下にさらに説明される本発明に従って構成されたフラッシュメモリ１１０と、（省略可能な）従来からあるＲＡＭメモリ１２０とを備える。端末１００は携帯無線網と無線通信リンクを構築するための従来からあるアンテナ１４０を備える。アンテナ１４０は従来からある（図１に不図示の）送受信部と相互に接続され、ＭＣＵ１３０によって従来からある方法で制御される。モバイル端末１００はさらに、多くの従来からある機能ブロック、例えばクロックと、ディスプレイと、キーボードと、スピーカやマイクなどといったようなオーディオ回路網と、ＳＩＭカードとを備え、ＭＣＵ１３０と通信可能なように結合されるが、図１には明確さのため図示されていない。フラッシュメモリ１１０はＸＩＰ機能性（ｅＸｅｃｕｔｅ  Ｉｎ  Ｐｌａｃｅ：直接実行）を提供するＮＯＲフラッシュメモリとして実現されてもよいし、現在はＸＩＰの特徴を欠いているＮＡＮＤフラッシュメモリとして実現されてもよい。フラッシュメモリ１１０と（省略可能な）ＲＡＭメモリ１２０とはＭＣＵ１３０に従来からある制御バス・データバス・アドレスバスである１２１と１１１とによって相互に接続されており、ＭＣＵ／ＣＰＵ１３０が従来からある方法でメモリ１１０、１２０からデータをフェッチし、メモリ１１０、１２０にデータを保存することを可能とする。ＲＯＭ１５０は、ＭＣＵ／ＣＰＵ１３０をブートさせるための内蔵プログラムコード部を有し、ＭＣＵ／ＣＰＵ１３０と通信可能なように結合された従来からある（ＢＩＯＳ）ＲＯＭメモリ１５０であってもよい。しかしながら、本発明の一つの利点は、以下にさらに説明されるように、モバイル無線端末のフラッシュメモリ１１０が、従来からあるＲＡＭ１２０と従来からあるＢＩＯＳ  ＲＯＭ１５０との両方を、いかなる重要なデータセキュリティを犠牲とすることなく、置き換えることができることである。
【００５０】
図２Ａは、デジタル証明書と、証明書に関連付けられたコンピュータプログラムと、証明書スロット・アドレス・ポインタとをフラッシュへ書き込む本発明に係る方法を説明するフローチャートである。図２Ａで説明する方法は、典型的には、モバイル無線端末１００の製造過程において実行される。ステップ２００−２５２は通常、製造時にモバイル無線端末１００のプログラムの最初のバージョンを保存する時や、モバイル無線端末１００のプログラムを更新するいかなる時も、まずディスクに保存され次にフラッシュに保存されるミラーされたフラッシュデータのバージョンを生成するコンピュータプログラムによって実行される。
【００５１】
ステップ２１０で、例えば従来からあるフラッシュ１１０をモバイル無線端末１００に組み込み、従来からある方法でＣＰＵ／ＭＣＵ１３０に結合することで、フラッシュが提供される。
【００５２】
ステップ２２０で、少なくとも一つの消去−書き込みブロックが従来からある「アンロック・ブロック」ハードウェア命令によって最初にロックが解除され、その後、従来からある「ブロック消去」ハードウェア命令によって消去され、ブロックの全てのセルのビットがバイナリ「１」にセットされる。好適な実施形態では、この消去−書き込みブロックはフラッシュの電源がオンになった際に最初にアドレス指定されるブロック、すなわちモバイル無線端末１００の電源がオンになった直後にＣＰＵ１３０がデータのフェッチを開始するブロックである下記の表１のブロック０である。これによって、フラッシュがセキュリティ攻撃に曝される時間が最小化され、従って有利となる。
【００５３】
ステップ２３０で、消去済みの消去−書き込みブロックに複数のスロットが定義される。本発明によれば、それぞれのメモリスロットはバイナリ「００」又はバイナリ「１１」のビットパターンを備えるメモリアドレスで開始し、従って以下にさらに説明されるように、簡潔で効率的なアドレス・スロット・ポインタの更新が可能となる。「ビットパターン」という語は、特に述べられていなければ、ここでは「バイナリ・ビットパターン」であるとして解釈されよう。
【００５４】
ステップ２４０で、従来からある「ブロック書き込み」ハードウェア命令によって、第１のデジタル証明書Ａがメモリスロットの第１のスロットに書き込まれ、第２のデジタル証明書Ｂが第２のメモリスロットに書き込まれる。その結果、そのスロットのいくつかのセルデータのビットが「０」にセットされる。証明書ＡとＢとは任意のアプリケーションプログラムに関連付けられた証明書であってもよく、証明書Ｂは証明書Ａの更新バージョンに相当してもよい。したがって、証明書Ｂは証明書Ａよりも大きい改訂番号を有する。別の方法としては、証明書Ｂの有効期限は証明書Ａの有効期限の後に失効する。好適な実施形態では、証明書ＡとＢとはＣＰＵ１３０をブートさせるブートプログラムに関連付けられており、以下にさらに説明されるような有利な点を与える。これは、ブートプログラムが真正性を有し、かつ、これまでに改ざんされていないことを立証するために、証明書ＡとＢとの有効性が検証プログラムによって検証されることを意味する。本発明によれば、表１に説明される説明例にある証明書Ｂ、Ｃ、及びＤのように、証明書Ａの他にさらに追加的な証明書が専用スロットに書き込まれる。この専用スロットの開始アドレスは、（より大きい改訂番号を備える証明書である）「次の」証明書のために、（より小さい改訂番号を備える証明書である）「前の」証明書の開始アドレスの「００」又は「１１」のビットパターンをそれぞれ「１１」又は「００」に置き換えることによって、「前の」証明書の開始アドレスの更新バージョンを制定する。表１は、次の証明書の開始アドレスのために、前の証明書の開始アドレスの１１のビットパターンが「００」のビットパターンに置き換えられる場合を説明する。
【００５５】
さらに、ステップ２４０で、コンピュータプログラムを検証する一つのデジタル署名と、それぞれかつ全ての証明書Ａ、Ｂ、Ｃ、及びＤのための表１の署名Ａ、Ｂ、Ｃ、及びＤとがそれぞれフラッシュに保存される。署名Ａのデータ列は、まず署名／証明書Ａに関連付けられたプログラムコード全体のハッシュ値を全ての証明書Ａ−Ｄとともに計算し、その後そのハッシュ値を証明書Ａの秘密鍵により暗号化することによって、従来からある方法によって計算される。さらに署名Ｂ、Ｃ、Ｄなどは対応する方法で計算される。発明のある実施形態では、署名Ａ、Ｂ、Ｃ、及びＤは、効率的なメモリ使用を提供するために、証明書と同じブロックに保存される。発明のある実施形態では、表１及び図３Ａで説明されるように、さらにより効率的なメモリ使用を提供するために、署名Ａ、Ｂ、Ｃ、及びＤはそれぞれ証明書Ａ、Ｂ、Ｃ、及びＤと同じスロットに保存される。発明のある実施形態では、証明書Ａ、Ｂ、Ｃ、及びＤはそれぞれ、署名Ａ、Ｂ、Ｃ、及びＤを備える。従って、この実施形態では、それぞれの証明書は二つの署名を備える。つまり、証明書自身を検証する一つの「従来からある」署名とコンピュータプログラムを検証する一つの署名とである。別の方法としては、証明書Ａ、Ｂなどはそれらの対応するコンピュータプログラムの署名Ａ、Ｂなどのリンクアドレスを備えてもよい。これによって、単一のスロットが証明書とコンピュータプログラムの署名とを備えなくてもよくなり、幾分小さいスロットサイズを使用する場合に有利な点となり得る。ある実施形態では、図３Ｂに説明されるように、コンピュータの署名Ａ、Ｂ、Ｃ、Ｄなどが専用スロットに保存される。この実施形態では、関連した証明書は対象の署名へのリンクアドレスを備えてもよく、又は、別の方法としては、署名アドレス・ポインタが、検証ソフトウェアによって、以下に説明される証明書スロット・アドレス・ポインタが証明書にアドレス指定するのと同様の方法で、定義されて使用されてもよい。図３Ｂはこの実施形態を説明しており、デジタル証明書／署名が専用スロットに書き込まれ、証明書スロット・アドレス・ポインタと署名スロット・アドレス・ポインタとが検証ソフトウェアによって使用される。この実施形態は、メモリ使用に関する柔軟性を提供する。幾分小さいスロットサイズを使用する場合には、一つの証明書がいくつかの部分に分割されて、スロットのセットに書き込み／保存されてもよいことが理解されよう。証明書の第１の部分は、第１のスロットに保存され、第２の部分が保存されているスロットへのリンクアドレスなどを備え、以下同様である。さらに、非常に小さいスロットサイズの場合には、スロットは対象の証明書へのリンクアドレスのみを備えてもよい。したがって、「証明書」という言葉は、ここでは、証明書へのリンクアドレスや、証明書へリンクしているリンクアドレスとともに、証明書の一部だけを意味するものとしても解釈されよう。
【００５６】
ステップ２５０で、証明書ＡとＢとの有効性の検証のために検証ソフトウェアプログラムにより用いられる証明書スロット・アドレス・ポインタが定義される。証明書スロット・アドレス・ポインタは現在有効な証明書スロットの開始アドレスを示し、検証プログラムが現在有効な証明書をフェッチし読み込むために利用される。最初に、証明書がフラッシュに書き込まれた後に、この証明書スロット・アドレス・ポインタが最初の有効な証明書、すなわち上記の説明例では証明書Ａの開始アドレス、すなわち以下の表１に説明される例ではアドレス０ｘ０１ＦＣ００であるとして定義される。好適な実施形態では、証明書スロット・アドレス・ポインタはフラッシュに保存され、さらにより好ましくは、表１に説明されるように証明書と同じブロックに保存される。これは、効率的なメモリ使用を提供し、ＲＡＭ及び／又はＲＯＭのような従来からある複数のメモリエンティティを、一つのフラッシュに置き換えること可能とする。この好適な実施形態では、フラッシュメモリは１のビットを０のビットに置き換えるだけで更新可能であるため、証明書スロット・アドレス・ポインタはポインタの「１１」のビットパターンを「００」のビットパターンに置き換えることによって更新される。これは、事前に保存された証明書を決して消去しないことを可能とし、従って、単純に証明書スロット・アドレス・ポインタを次の、すなわち現在有効な証明書の開始アドレスを指し示すように更新することによって、重大な「セキュリティ攻撃時間」を省き（削減し）、証明書のロールオーバと呼ばれる証明書の更新が行われる。単に証明書スロット・アドレス・ポインタを利用することは、後でさらに説明されるように、最先端技術と比較して、大幅に削減された時間の期間にフラッシュメモリがセキュリティ攻撃に曝されることを意味する。好適な実施形態では、証明書スロット・アドレス・ポインタはフラッシュに保存され、有効期間、すなわち「賞味期限（ｂｅｓｔ  ｂｅｆｏｒｅ  ｄａｔｅ）」又は改訂番号は、表１に説明されるように、スロットの入口アドレス（の番号）の増加に伴って減少する。別の方法では、スロット・ポインタが例えばバッテリによるバックアップ電源を備えるＲＡＭに保存されている場合に、証明書スロット・アドレス・ポインタは、代わりに証明書スロット・ポインタの「００」のビットパターンを「１１」のビットパターンに置き換えることによって更新されてもよく、表１に示される証明書Ａ−Ｄの順番は逆になる。証明書に関連付けられたコンピュータプログラムがブートプログラムである場合は、本発明は、ブートプログラムをフラッシュに保存することによって、ＢＩＯＳ  ＲＯＭをＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）フラッシュメモリで代替することを可能とする。従って、本発明は装置のＢＩＯＳ  ＲＯＭをより安価でより柔軟性の高いフラッシュに重要なデータセキュリティを犠牲にすることなく置き換えることを可能とする。例えば、図１に説明されるモバイル無線端末１００はそのような装置である。しかしながら、コンピュータプログラムはいかなるモバイル無線端末のアプリケーション・ソフトウェアであってもよく、好ましくは、ブートプ���グラムとモバイル無線端末のアプリケーションプログラムとの両方を検証するために証明書は使用される。この場合には、上述したハッシュ値はブートプログラムとアプリケーションプログラムとの両方を備えるデータに対して計算されてもよく、多くの可能性が存在する。
【００５７】
ステップ２５２で、本発明のある実施形態によれば、効率的なメモリ使用を提供するために、更新ソフトウェアと、証明書スロット・アドレス・ポインタと、証明書に関連付けられたコンピュータプログラムとは全てフラッシュに書き込まれる。しかしながら、既に述べたように、証明書スロット・アドレス・ポインタと証明書に関連付けられたコンピュータプログラムとのどちらも必ずしもフラッシュに書き込まれている必要はない。好適な実施形態においては、既に述べたように、検証ソフトウェアと、証明書スロット・アドレス・ポインタと、証明書と、証明書に関連付けられたコンピュータプログラムとはすべて同じフラッシュのブロック、好ましくはフラッシュの電源がオンになった際に最初にアドレス指定されるブロックに書き込まれる。ＮＡＮＤフラッシュの場合には、検証ソフトウェアと、証明書スロット・アドレス・ポインタと、証明書とは一つのフラッシュのブロックの中に保存されてもよく、一つの証明書は対応するページか、又はスロットを構成する対応するページのセットに保存される。これは、メモリの効率的な使用を提供する。
【００５８】
表１は本発明によるフラッシュのメモリ領域のレイアウトの例を説明し、最初に全てのブロックは消去されていて、第１の証明書Ａはこの証明書に関連付けられたコンピュータプログラムの署名Ａと一緒に第１のスロットに書き込まれており、第２の証明書Ｂはこの証明書に関連付けられたプログラムの署名Ｂと一緒に第２のスロットに書き込まれており、第３の証明書Ｃはこの証明書に関連付けられたプログラムの署名Ｃと一緒に第３のスロットに書き込まれており、第４の証明書Ｄはこの証明書に関連付けられたプログラムの署名Ｄとともに第４のスロットに書き込まれている。従って、表１はフラッシュメモリのレイアウトがステップ２５２の後にどのように見え得るのかを説明している。表１では、それぞれのスロットは１０２４バイトのサイズを有し、対応する署名は、それに対応する証明書の５１２バイト後に保存されている。ＮＡＮＤフラッシュの場合は、２ページが１０２４バイトの単一のスロットを構成してもよく、表１に説明される通り、１ページは対応する証明書を保存するために使用され、１ページは対応する署名を保存するために使用される。しかしながら、証明書／署名などのサイズが要求する場合には、一つのスロットは複数のページ、例えば４、８ページなどであってもよい。
2009517749.tif 000003
【００５９】
ステップ２５２の後、モバイル無線端末は使える状態である。
【００６０】
ここで、図２Ｂを参照して、ステップ２５４でモバイル無線端末１００の電源がオンとなり、証明書に関連付けられたコンピュータプログラムが起動／実行されるように始動させる。既に述べたように、好適な実施形態では、証明書に関連付けられたコンピュータプログラムはＣＰＵ／ＭＣＵ１３０をブートさせるブートプログラムであり、ブートプログラムの実行はフラッシュ１１０とＣＰＵ／ＭＣＵ１３０との電源がオンとなった際にはいつでも自動的に開始される。これは、フラッシュ１１０がＣＰＵ／ＭＣＵ１３０のＢＩＯＳを形成するということを意味する。セキュリティ攻撃に曝される時間を最小化するためには、ブートプログラムと、検証プログラムと、証明書と、署名とを電源がオンになった際に最初にアドレス指定されるフラッシュのブロックに保存することは、それによって「探索時間及びアドレス指定時間」が省かれるため、従って有利である。同じ理由から、ブートプログラムが検証プログラムを備えることと、電源オンの際に最初にすなわちすぐに、検証プログラムがアドレス指定されていることとは有利である。これは、フラッシュの電源がオンとなった際に最初にアドレス指定されるフラッシュのアドレスに検証プログラムが保存されることを意味している。こうして、ステップ２５４で、検証プログラムの実行が開始される。
【００６１】
ステップ２５６で、検証ソフトウェアは証明書スロット・アドレス・ポインタが更新されるべきであるか否かを判定する。この判定は多くの様々な方法で行われてもよい。例えば、証明書スロット・アドレス・ポインタの更新は定期的に実行されてもよい。すなわち、検証ソフトウェアの所定の更新タイマの仕組みに制御されることによって実行されてもよい。または、検証ソフトウェアは、改訂番号又は証明書と一緒に保存された「賞味期限」を判定してもよく、賞味期限であるときや、検証プログラムの中にあらかじめ保存された対応するデータと比較した場合にあらかじめ保存された対応するデータと改訂番号が適合しないときに、証明書スロット・アドレス・ポインタを更新するのみでもよい。これらの手続きは検証プログラムが現在の時刻データ、すなわち年や、月や、日や、時などを利用できることを要求する。すなわち、証明書スロット・アドレス・ポインタの更新はモバイル無線端末の内蔵クロックに制御される。
【００６２】
好適な実施形態においては、検証プログラムはステップ２５６で、以下のステップを実行することによって、証明書スロット・アドレス・ポインタが更新されるべきであるか否かを判定する。
１．検証プログラムに割り当てられた更新メッセージ署名を備える更新メッセージが存在するか判定する。この判定は検証プログラムに更新メッセージ専用のアドレスのデータを探索させ、検証プログラムにこの更新メッセージ／署名をフェッチさせ、その後検証プログラムにこの更新メッセージ／署名が保存されているブロックを消去させることによって実行してもよい。更新メッセージは更新メッセージ署名とともに、例えばモバイル無線端末１００の設定ファイルシステムのような、モバイル無線端末の適当なメモリの専用アドレスに保存されてもよい。この更新メッセージは、更新メッセージ署名スロットとともにモバイル無線端末に様々な方法で、すなわちＳＭＳメッセージによって、又は「カスタマサービス」などのソフトウェアアップグレード中に、署名されたデータオブジェクトの形式で、フラッシュに保存することによって導入されてもよい。カスタマサービスで、署名されたデータオブジェクトをフラッシュにどのように保存するのかは既知である。本発明において重要なことは、ある時点において、検証プログラムにより割り当てられた署名された更新メッセージがあるか否か、最後にモバイル無線端末１００の電源がオンになった際にはその更新メッセージがモバイル無線端末１００に存在しないかを検証プログラムが規定することと、検証プログラムに実行中に証明書のロールオーバを実行するように更新メッセージが指示することとである。更新メッセージが現在有効な証明書は証明書Ｂであると述べる場合には、更新メッセージのハッシュは証明書Ｂの秘密鍵によって暗号化されて、更新メッセージ署名を形成する。この更新メッセージはスロットに保存される新しい証明書を備えてもよい。
２．検証プログラムに割り当てられた更新メッセージを検証プログラムが発見したか、又は検証プログラムの更新時間の仕組みが証明書のロールオーバは実行されるべきであると述べる場合には、本方法はステップ２６０へと進み、更新されるべきではない場合、すなわち検証プログラムが更新メッセージを発見しないか、検証プログラムの更新時間の仕組みが証明書のロールオーバは実行されるべきではないと述べる場合には、直接、ステップ２６５に進む。
【００６３】
ステップ２６０で、証明書スロット・アドレス・ポインタが更新される。これは、検証ソフトウェアに知られている事前に保存された仕組みに従って、証明書スロット・アドレス・ポインタの「１１」のビットパターンを「００」のビットパターンに単に置き換えることによって実行され得る。この手続きはフラッシュに多くの（固定の）プリインストールされた証明書を有し、単純に定期的に証明書のロールオーバを実行する場合に有利となり得る。検証プログラムがステップ２５６において更新メッセージを発見した場合には、証明書スロット・アドレス・ポインタを更新するステップは、
１．検証プログラムが第１の証明書、すなわち証明書Ａをフェッチし、
２．（検証プログラムに知られたアルゴリズムによって）検証プログラムが更新メッセージのハッシュ値を計算して、計算された更新メッセージ・ハッシュを与え、
３．検証プログラムは更新メッセージの署名を証明書Ａの公開鍵を利用して復号化して、復号化された更新メッセージ・ハッシュを形成し、
４．検証プログラムは計算された更新メッセージ・ハッシュが復号化された更新メッセージ・ハッシュと適合するかを判定し、それらが適合した場合は証明書スロット・アドレス・ポインタをそれに従って更新し、それらが適合しない場合は検証プログラムは次の証明書、すなわちこの場合は証明書Ｂに対してこの手続きを繰り返すことを備えてもよい。
【００６４】
ステップ１−４は適合する証明書が発見されるまで繰り返され、従って適合する証明書が現在有効な証明書である。他の実施形態では、下記で図４を参照してさらに説明されるように、検証プログラムはフラッシュの探索を実行することによって現在有効な証明書を発見してもよい。
【００６５】
ステップ２６０で、証明書スロット・アドレス・ポインタは、現在有効な証明書の開始アドレスに等しくなるように設定されることによって更新される。証明書スロット・アドレス・ポインタがフラッシュに保存される場合には、これは従来からあるフラッシュのハードウェア「書き込み」コマンドによって実行される。
【００６６】
ステップ２６５で、フラッシュは従来からあるハードウェア「ロック・ダウン（ｌｏｃｋ  ｄｏｗｎ）」又は「ロック・タイト（ｌｏｃｋ  ｔｉｇｈｔ）」コマンドによって書き込まれることから保護される。フラッシュを書き込みから保護した後は、フラッシュはロックされ外部のセキュリティ攻撃から保護される。従って、「改ざん猶予時間」が削減され、耐改ざん性が強化されるため、ステップ２６５は可能な限り早い段階で実行されることが有利となる。したがって、好適な実施形態では、ステップ２６５はステップ２６０の直後に実行される。
【００６７】
本方法はステップ２６５からステップ２７０へ進む。ステップ２７０で、検証ソフトウェアが関連する証明書、すなわち現在有効な証明書をフェッチし、ここでその証明書の保存されている開始アドレスが証明書スロット・アドレス・ポインタによって示される。コンピュータプログラムに関連付けられた署名もこのステップでフェッチされるが、通常は、証明書の中に備えられる。例えば、ステップ２７０で、表１に説明されているように、証明書Ｂの秘密鍵を利用することによって更新メッセージが署名された説明例では、検証ソフトウェアは証明書Ｂと署名Ｂとをフェッチする。
【００６８】
ステップ２７５で、検証ソフトウェアはフェッチした証明書と署名との有効性を従来からある方法で判定する。例えば、ある説明例では、署名Ｂはコンピュータプログラム全体と全ての証明書のハッシュであり、そのハッシュは証明書Ｂの秘密鍵によって暗号化されている。検証プログラムはプログラム全体とすべての証明書とのハッシュを（知られたアルゴリズムに従って）計算し、（証明書Ｂに保存されている）証明書Ｂの公開鍵を利用して署名Ｂを復号化する。証明書Ｂ（と署名Ｂと）は、復号化されたハッシュが計算されたハッシュと適合する場合には有効であり、それ以外の場合には証明書Ｂは有効ではない。証明書が有効な場合には、本方法はステップ２８０に進み、証明書が有効でない場合には本方法はステップ２８５に進む。
【００６９】
ステップ２８０で、証明書に関連付けられたコンピュータプログラムの実行が完了するまで続き、本方法は終了する。コンピュータプログラムがブートプログラムである場合には、ＣＰＵ／ＭＣＵ１３０がブートされ、すなわち関連するオペレーティングシステムなどがロードされている。
【００７０】
ステップ２８５で、証明書に関連付けられたコンピュータプログラムの実行が停止され、本方法は終了する。
【００７１】
ここで、図４に参照して、ある実施形態における証明書スロット・アドレス・ポインタを更新する方法は図４に説明されるステップを備える。ステップ４１０で、関連する消去済みの消去−書き込みブロック、例えば電源オンの際に最初にアドレス指定されるブロックのアドレスを指し示すブロック・アドレス・ポインタが定義される。ステップ４２０で、消去済みの消去−書き込みブロックから、ブロック・アドレス・ポインタによって示されるアドレスから開始して、順次的なアドレス探索によって、検証プログラムが消去済みのスロットを探索する。この実施形態では、現在有効な証明書はフラッシュに最後に保存された証明書である。例えば、フラッシュに証明書Ｄが存在せず、表１の証明書Ｄのスロットが消去されてまだ書き込まれていない、すなわち証明書Ｄのスロットが「１」のビットだけを備えており、証明書Ａ、Ｂ及びＣだけがフラッシュに保存されているという前提において、現在有効な証明書はフラッシュは表１の証明書Ｃである。消去済みのスロット、すなわち「１」のビットだけで満たされたスロットが見つかり次第、探索は終了される。証明書Ｄはフラッシュには書き込まれていないとした表１の説明例では、０ｘ０１００００で開始されるスロットが消去済みのスロットであり、検証プログラムはこのスロットを検出次第終了するであろう。この最初に発見された消去済みのスロットは通常、書き込まれていないすべての証明書スロットの中で、最も大きい入口アドレスを有している証明書スロットである。ここで書き込まれていないスロットとは、「１」のビットのみで満たされているスロットである。
【００７２】
ステップ４３０で、現在有効な証明書のスロットは、この探索中に発見された消去済みのスロット、すなわち上述の説明例においては証明書Ｃのスロットの直後のスロットであると特定される。
【００７３】
ステップ４４０で、証明書スロット・アドレス・ポインタが現在有効な証明書であると特定されたスロットの開始スロット・アドレス、すなわちこの説明例では証明書Ｃのスロットの開始アドレスである０ｘ０１Ｃ０００へと更新される。
【００７４】
検証プログラムが現在有効な証明書を発見するために他の探索手続き／基準が使用されてもよい。例えば、「完全書き込み済み（ｃｏｍｐｌｅｔｅｌｙ  ｗｒｉｔｔｅｎ）」及び非「完全に書き込み済み」の証明書スロットの探索を用いてもよく、最初に発見された完全書き込み済みの証明書スロットは現在有効な証明書のスロットであると規定される。この場合には、新しい現在有効な証明書がフラッシュに書き込まれた際にはいつでも、すなわち上記で説明された更新メッセージによって、これまで有効であった証明書のスロットの全てのビットを「０」にセットすることでこれまで有効であった証明書が完全に上書きされる。従って、消去済みのスロットを探索する代わりに、完全「上書き済み（ｏｖｅｒｗｒｉｔｔｅｎ）」のスロット、すなわちスロットが「０」のビットを備えているだけのスロットの探索が実行される。この場合も図４に説明される。
【００７５】
本発明の本質は、モバイル無線端末におけるフラッシュメモリのための証明書の保存／更新の仕組みの実施例もしくは操作の形態／例よって前に述べられてきている。しかしながら、既に述べたとおり、本発明はいかなるフラッシュメモリと、ＣＰＵとフラッシュとを備えるデジタル証明書を利用するいかなる電子装置と、がプログラムコードを検証することに適用可能である。さらに、上で説明された説明例は特にいわゆるＭＬＣフラッシュに適応させており、（少なくとも）一つの「１１」のビットパターンを一つの「００」のビットパターンに置き換えることによってブロックが更新される。しかしながら、本発明は、当業者が本技術を実現する際に、証明書スロット・アドレス・ポインタのアドレスの「１」のビット又は「０」のビットを、それぞれ「０」又は「１」のビットに置き換えることによって実現されてもよい。「１」のビットの個数又は別の方法では「０」のビットの個数は、証明書スロット・アドレス・ポインタを更新するため、すなわち証明書のロールオーバを行うために置き換えられるが、一般的に、当業者が実現する際の、フラッシュのどこのアドレス空間に証明書が保存されるか、及び証明書の大きさに依存する。例えば、表１に説明された説明例に戻ると、証明書Ａは０ｘ０１ＦＣ００のアドレスに保存されるが、証明書Ｂは０ｘ１Ｆ８００に保存されてもよいし、証明書スロット・アドレス・ポインタは、証明書Ａから証明書Ｂへの証明書のロールオーバの実行のために、この場合には証明書スロット・アドレス・ポインタの一つの「１」のビットが一つの「０」のビットに置き換えられることによって更新される。それ故、本発明は上で議論された個々の実施形態／動作例に制限されると認識されるべきではなく、添付された請求項によって定義される本発明の要旨を逸脱しない範囲で、実施例／動作例の変種が当業者によって作成されてもよいことを正当に評価されるべきである。
【図面の簡単な説明】
【００７６】
【図１】本発明に係るモバイル無線端末１００の主要な機能ブロックの一部を説明する図である。
【図２Ａ】、
【図２Ｂ】本発明に係る方法を説明するフローチャートの一例を示す。
【図３Ａ】本発明のある実施形態においてデジタル証明書とデジタル署名とがフラッシュメモリにどのように保存されるのかを説明する図である。
【図３Ｂ】本発明のある実施形態においてデジタル証明書とデジタル署名とがフラッシュメモリにどのように保存されるのかを説明する図である。
【図４】は本発明のある実施形態おいて証明書スロット・アドレス・ポインタがどのように更新されるのかを説明するフローチャートの一例である。
【図１】
2009517749.tif 000004
【図２Ａ】
2009517749.tif 000005
【図２Ｂ】
2009517749.tif 000006
【図３Ａ】
2009517749.tif 000007
【図３Ｂ】
2009517749.tif 000008
【図４】
2009517749.tif 000009
【国際調査報告】
2009517749.tif 000010
2009517749.tif 000011