説明

フラッシュメモリ及び電子装置のためのセキュアなデジタル証明書の保存方法

本発明は、一般に、データセキュリティ及びデータメモリ技術に関し、より詳しくは、フラッシュメモリ内のデジタル証明書を保存及び更新する方法を提供し、さらにその方法を利用するフラッシュメモリ及び電子装置を提供する。本発明による方法は、フラッシュメモリ(110)の耐改ざん性の強化のために、所定の消去−書き込みブロックと読み出し−書き込みブロックとを備えるフラッシュメモリ(110)に適用可能であり、証明書はコンピュータプログラムを認証し、そのコンピュータプログラムに関連付けられた検証プログラムによって検証され、本方法は、(230)少なくとも一つの消去済みの消去−書き込みブロックに複数のメモリスロットを定義する工程であって、それぞれのメモリスロットはバイナリ「0」又はバイナリ「1」のビットパターンを備える開始アドレスを有する工程と、(240)第1及び第2のデジタル証明書をメモリスロットの第1及び第2のスロットに書き込む工程と、(250)証明書スロット・アドレス・ポインタを定義する工程と、(260)証明書スロット・アドレス・ポインタを、ポインタの「0」又は「1」のビットパターンをそれぞれ「1」又は「0」のビットパターンへと置き換えることによって更新する工程とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、データセキュリティとデータメモリ技術とに関し、より詳しくは、フラッシュメモリ内のデジタル証明書を保存及び更新/発見する方法と、この方法を利用するフラッシュメモリ及び電子装置に関する。
【背景技術】
【0002】
公開鍵−秘密鍵暗号方式に基づくデータセキュリティの仕組みは通常、対象の公開鍵の有効性を検証するためにデジタル証明書を利用する。デジタル証明書の例として、PGP証明書とX.509セキュリティ標準に準拠した証明書とがある。デジタル証明書は通常、公開鍵と、証明書情報(名前やユーザIDなどといった対象の「本人性(Identity)」情報)と、一つ以上のデジタル署名との3種類のものから構成される。一般的に言って、鍵又は証明書が古くなるほど、その鍵/証明書が攻撃者に改ざんされている危険性は高まる。したがって、すべての暗号システムは通常は鍵とそれに関連するデジタル証明書とを、一定の間隔で又は不正行為/攻撃が検出され次第更新する。
【0003】
デジタル証明書は、例えば様々な電子装置、例として携帯電話のような移動局で、デバイスのセキュアなブートを提供するために使用される。そして、デジタル証明書は通常、ブートプログラム及び検証プログラムとともにROMに保存され、検証プログラムによってブート中に検証される。ROMは書き換えが不可能であることから、例えばフラッシュメモリと比較してROMメモリは柔軟性がなく、例えばブートプログラムの更新は、ROM全体を置き換えなければならないために、高コストとなることが問題である。さらに、ROMメモリそれ自体が例えばフラッシュメモリと比較して幾分高価である。しかしながら、フラッシュメモリに関連するセキュリティ問題のために、フラッシュメモリは移動局のROMを代替することができなかった。
【0004】
内蔵プログラムを有するフラッシュメモリにROMが結合される場合には、このプログラムはフラッシュメモリに保存されたデジタル証明書によって同様に検証され得る。フラッシュ内のデジタル証明書の更新は、そのフラッシュの消去−書き込みブロックの消去/書き込みの間にフラッシュメモリがセキュリティ攻撃に曝されるためにセキュリティ問題を伴う。すなわち、フラッシュメモリの耐改ざん性を強化し、フラッシュメモリをよりセキュアにする方法及び手段を見つける必要性がある。
【0005】
さらに、電子デバイスにおけるコスト効率の高いメモリの使用を可能とする方法及び手段を発見する一般的な必要性がある。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明の目的は、フラッシュメモリの耐改ざん性の強化、すなわちフラッシュのデータセキュリティの向上である。
【0007】
本発明の別の目的は、電子デバイスにおける効率的なメモリの使用を提供することである。
【0008】
本発明の別の目的は、ポータブル無線通信機器、例えば移動局、ページャ、通信機、スマートフォン、PDA、携帯電話などといった、本明細書でモバイル無線端末と呼ばれる電子機器の製造コストを削減することである。
【0009】
本発明のさらに別の目的は、ソフトウェア更新について上記のような電子機器の柔軟性を向上させる効果的でかつ効率的な手段及び方法を提供することである。
【課題を解決するための手段】
【0010】
本発明は、モバイル無線端末のような電子機器に用いられる、フラッシュメモリにデジタル証明書を書き込み、フラッシュメモリ内のデジタル証明書を更新し、フラッシュメモリからデジタル証明書を読み出す方法を提供することによって、主に上記の目的を達成する。本発明によれば、フラッシュメモリ内の証明書は消去される必要がなく、好ましくはそれらの証明書は決して消去されず、証明書の更新は単なる証明書スロット・アドレス・ポインタの更新によって実行され、従って、証明書の更新中にフラッシュメモリがセキュリティ攻撃に曝される時間の期間を削減する。これは、フラッシュの耐改ざん性が改善されるということを意味し、モバイル無線端末のような幅広い電子機器でフラッシュメモリがROMメモリを代替することを可能とする。従って、多くの従来からあるROM、特にBIOS ROMを、データセキュリティを全く損なうことなく、本発明による方法を利用するフラッシュメモリに置き換えることができる。したがって、電子機器をソフトウェア更新、特にブートプログラム更新についてより柔軟にするとともに、製造/使用のコストを削減する。
【0011】
第1の態様によれば、本発明は、フラッシュメモリの耐改ざん性を強化するために、所定の消去−書き込みブロックと読み出し−書き込みブロックとを有する前記フラッシュメモリにデジタル証明書の書き込みと更新とを行う方法であって、前記証明書は、コンピュータプログラムを認証し、前記コンピュータプログラムに関連付けられた検証プログラムによって検証され、前記方法は、
少なくとも一つの前記消去−書き込みブロックを消去する工程と、
前記少なくとも一つの消去済みの消去−書き込みブロック内に複数のメモリスロットを定義する工程であって、それぞれのメモリスロットはバイナリ「0」又はバイナリ「1」のビットパターンを備える開始アドレスを有する工程と、
第1の前記メモリスロットへ第1のデジタル証明書を書き込み、第2の前記メモリスロットへ第2のデジタル証明書を書き込む工程と、
前記第1のメモリスロットの開始アドレスを指し示すように証明書スロット・アドレス・ポインタを定義する工程であって、該スロット・アドレス・ポインタは前記検証プログラムが現在有効な証明書をフェッチするために用いられる工程と、
前記証明書スロット・アドレス・ポインタの「0」又は「1」のビットパターンをそれぞれ「1」又は「0」に置き換えることにより該ポインタを更新して、該アドレス・ポインタが前記第2のメモリスロットの開始アドレスを指し示すようにする工程と
を備える。
【0012】
ある実施形態では、前記方法は、
前記フラッシュメモリ内の専用スロットに前記証明書スロット・アドレス・ポインタを書き込む工程と、
前記証明書スロット・アドレス・ポインタの「1」のビットパターンを「0」のビットパターンに置き換えることにより該アドレス・ポインタを更新する工程と
をさらに備える。
【0013】
ある実施形態では、前記少なくとも一つの前記消去−書き込みブロックは、フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるブロックである。
【0014】
ある実施形態では、前記コンピュータプログラムは、前記フラッシュメモリと処理手段との電源がオンになった際に、該フラッシュメモリに結合された該処理手段をブートさせるブートプログラムであり、前記方法は、前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記ブロックに前記ブートプログラムを保存する工程をさらに備える。
【0015】
ある実施形態では、前記ブートプログラムは前記検証プログラムを備え、該検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存される。
【0016】
ある実施形態では、前記検証プログラムは、前記証明書スロット・アドレス・ポインタを更新するためのコード手段と、前記フラッシュメモリを書き込みからロックする書き込みロックコード手段とを備え、前記方法は、前記証明書スロット・アドレス・ポインタが更新された直後に、前記フラッシュメモリが書き込みからロックされているようするために、前記書き込みロックコード手段を該フラッシュメモリに保存する工程をさらに備える。
【0017】
ある実施形態では、前記フラッシュメモリはMLCフラッシュメモリであり、前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記アドレス・ポインタの「11」のビットパターンを「00」のビットパターンに置き換える工程を備える。
【0018】
ある実施形態では、前記第2のデジタル証明書は、前記第1のデジタル証明書の更新バージョンに相当し、ある時点で前記第1のデジタル証明書又は該第1の証明書の更新バージョンを置き換える。
【0019】
ある実施形態では、前記証明書はプリインストールされ、前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記検証プログラムにより定期的に実行されるか、又は、前記第1の証明書によって若しくは該第1の証明書の更新バージョンによって示される有効性の失効期限に応じて、該検証プログラムによって実行される。
【0020】
ある実施形態では、前記証明書スロット・アドレス・ポインタを更新する前記工程は、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「1」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「0」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「0」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとして特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を備える。
【0021】
ある実施形態では、前記フラッシュメモリは2x256バイトのサイズのページを有するNANDフラッシュメモリであり、前記方法は、
それぞれのメモリスロットを一つのページ又はページのセットとして定義する工程をさらに備える。
【0022】
第2の態様によれば、本発明は所定の消去−書き込みブロックと読み出し−書き込みブロックとを有するフラッシュメモリであって、少なくとも第1及び第2の証明書が前記フラッシュメモリに保存されていて、前記証明書はコンピュータプログラムを認証することができ、前記証明書は検証プログラムによって検証されることができ、前記第2のデジタル証明書は第1のデジタル証明書の更新バージョンに相当し、前記証明書は、消去−書き込みブロック内に定義されたそれぞれのメモリスロットに保存されていて、前記証明書スロット・アドレス・ポインタは前記フラッシュメモリに保存されていて、前記証明書スロット・アドレス・ポインタは現在有効な証明書が保存されているスロットを指し示す。
【0023】
ある実施形態では、前記証明書が保存されている前記消去−書き込みブロック内の専用スロットに前記証明書スロット・アドレス・ポインタが保存されている。
【0024】
ある実施形態では、前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記消去−書き込みブロック内に前記メモリスロットが定義される。
【0025】
ある実施形態では、前記コンピュータプログラムは、処理手段が前記フラッシュメモリに結合され、前記フラッシュメモリと処理手段とが電源がオンになった際に、前記処理手段をブートするブートプログラムであり、前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定される前記フラッシュメモリのブロックに前記ブートプログラムが保存されている。
【0026】
ある実施形態では、前記ブートプログラムは前記検証プログラムを備え、前記検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存される。
【0027】
ある実施形態では、前記検証プログラムは、前記証明書スロット・アドレス・ポインタの「1」のビットパターンを「0」のビットパターンに置き換えることによって、又は前記証明書スロット・アドレス・ポインタの「11」のビットパターンを「00」のビットパターンに置き換えることによって、前記証明書スロット・アドレス・ポインタを更新するコード手段を備え、前記フラッシュメモリを書き込みからロックする書き込みロックコード手段をさらに備え、前記書き込みロック手段は、前記検証プログラムが実行されている間に、前記証明書スロット・アドレス・ポインタが更新された直後に前記フラッシュメモリが書き込みからロックされているように、前記フラッシュメモリに保存されている。
【0028】
ある実施形態では、前記フラッシュメモリはMLCフラッシュメモリであり、前記証明書スロット・アドレス・ポインタは「11」のビットパターン又は「00」のビットパターンを備える。
【0029】
ある実施形態では、前記証明書はプリインストールされ、前記検証プログラムは、該検証プログラムが実行される間に、前記第1の証明書に示されるか、又は該第1の証明書の更新バージョンによって示される有効性の有効期限に応じて定期的に前記証明書スロット・アドレス・ポインタを更新するコード手段を備える。
【0030】
ある実施形態では、前記検証プログラムは、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「1」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「0」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「0」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとしてそれぞれ特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を実行するプログラムコード手段を備える。
【0031】
ある実施形態では、前記フラッシュメモリは2×256バイトのサイズのページを有するNANDフラッシュメモリであり、それぞれのメモリスロットは一つのページかページのセットとして定義される。
【0032】
第3の態様によれば、本発明はフラッシュメモリと通信するように結合された処理部を備える電子装置を提供し、フラッシュメモリは本発明の第2の態様によるフラッシュメモリである。
【0033】
ある実施形態では、電子装置はモバイル無線端末である。
【0034】
本明細書に説明されている方法の工程の示された順序は、当業者によって理解される通りに、さまざまに変化してもよく、したがって、本発明は記載された順序に制限されるものではない。
【0035】
本発明は上記に要約されているものの、本発明は付随する請求項1−23で定義される。
【0036】
本明細書において使用されている「備える/備えている(comprises/comprising)」の語は規定された特徴、整数、工程、又は要素の存在を特定するために用いられるが、一つ以上の他の特徴、整数、工程、要素、又はそれらの組み合わせの存在又は追加を除外するものではないことは強調されるべきである。
【0037】
本発明と関連のある基礎的な用語が以下に説明される。
【0038】
フラッシュメモリは、フラッシュとも呼ばれ、書き換え可能なメモリチップであり、電源のない状態でも内容を保持する。フラッシュメモリはEEPROMチップから発展したものであり、その名前はいかに高速にフラッシュが消去できるのか(「すぐに(in a flash)」)を表現するために造語された。NANDフラッシュとNORフラッシュとがある。NANDフラッシュは100万回までの書き換えが可能であり、NANDフラッシュの消去と書き込みとはNORフラッシュと比較して高速である。今日では、フラッシュは典型的に8MB−1GBの範囲のメモリサイズを備える。
【0039】
メモリセルは、セルとも呼ばれる。セルはフラッシュの単一のアドレス(の番号)に、どのくらいのデータの書き込み/保存が可能であるかを示すメモリサイズである。従来からあるメモリセルサイズは例えば1バイト、すなわち8ビットである。
【0040】
ブロックは消去−書き込みブロックとも呼ばれる。フラッシュに書き込む前に、ブロック内のメモリセルは消去される。ブロックは今日ではNANDフラッシュで8KBから128KBの範囲、NORフラッシュで64−256KBの範囲のデータサイズを有する。消去−書き込みブロックは消去−書き込みブロックのすべてのビットを「1」にセットすることによって消去される。消去後に、一つのブロックは「1」のビットを「0」のビットへセットするだけで更新(書き込み及び書き換え)され得る。慣習的にMLCフラッシュと呼ばれるいわゆるマルチレベル・セル・フラッシュのブロックは、通常は「1」のビットのペアを「0」のビットのペアにセットすることによって更新される。すなわち、一つの「11」のビットパターンは一つの「00」のビットパターンに置き換えられ、当業者に既知の利点を与える。
【0041】
読み出し−書き込みブロックは、単一のフェッチ・ステップによって読み出しが可能であり、かつ単一のステップで書き込み又は書き換えが可能な(すなわち、すべてのブロックを消去する必要なしに更新が可能な)フラッシュのメモリ領域である。読み出し−書き込みブロックは消去−書き込みブロックに対応してもよいし、消去−書き込みブロックの一部であってもよい。今日では、NORフラッシュは通常、1バイトのサイズの読み出し−書き込みブロックを備える。
【0042】
ページは、NANDフラッシュの読み出し−書き込みブロックによって形成され、通常は2×256、すなわち512バイトのセクタ・サイズのメモリ領域である。しかしながら、他のページ・サイズが使用されてもよい。
【0043】
スロットは、メモリスロットとも呼ばれ、本発明では書き込みブロックの内部の専用メモリ領域として定義される。NANDフラッシュの場合は、一つのスロットはページのセットとして、たとえば2ページの1024バイトとして定義されてもよい。本発明は、デジタル証明書の容易な更新を可能とするようにデジタル証明書などを保存するためのスロット、すなわち以下でさらに詳しく説明されるようにデジタル証明書スロット・ポインタを更新することによって証明書のロールオーバを実行するためのスロットを定義する。
【0044】
証明書スロット・アドレス・ポインタは、本発明では、フラッシュ内の現在有効な証明書が保存されているスロットの開始アドレスを指し示すように定義される。証明書スロット・アドレス・ポインタは現在有効な証明書を発見するために検証プログラムによって使用される。
【0045】
本発明の特徴と利点とは、添付の図面を参照する以下の発明を実施するための好適な実施形態の詳細な説明から、より明らかになるだろう。
【発明を実施するための最良の形態】
【0046】
図1−4を参照しつつ、本発明を以下により詳細に説明する。
【0047】
本明細書において本発明は、電子機器がモバイル無線端末である特定の実施形態について説明されるが、本発明はフラッシュメモリと通信可能なように結合された例えばCPUのような処理部を備えるいかなる電子機器にも適用可能であることが理解されよう。
【0048】
モバイル無線端末の例としては、例えば携帯電話、ページャ、通信機、すなわち電子的オーガナイザ、スマートフォン、又は同種の物、PDA(Personal Digital Assistant)、ポータブル通信装置などがある。
【0049】
図1はモバイル無線端末100の主要な機能ブロックの一部を説明する。モバイル端末100は、マイクロ・コンピュータ・ユニット、MCU、CPU(Central Processing Unit)、又は同種の物のような従来からある制御回路130と、以下にさらに説明される本発明に従って構成されたフラッシュメモリ110と、(省略可能な)従来からあるRAMメモリ120とを備える。端末100は携帯無線網と無線通信リンクを構築するための従来からあるアンテナ140を備える。アンテナ140は従来からある(図1に不図示の)送受信部と相互に接続され、MCU130によって従来からある方法で制御される。モバイル端末100はさらに、多くの従来からある機能ブロック、例えばクロックと、ディスプレイと、キーボードと、スピーカやマイクなどといったようなオーディオ回路網と、SIMカードとを備え、MCU130と通信可能なように結合されるが、図1には明確さのため図示されていない。フラッシュメモリ110はXIP機能性(eXecute In Place:直接実行)を提供するNORフラッシュメモリとして実現されてもよいし、現在はXIPの特徴を欠いているNANDフラッシュメモリとして実現されてもよい。フラッシュメモリ110と(省略可能な)RAMメモリ120とはMCU130に従来からある制御バス・データバス・アドレスバスである121と111とによって相互に接続されており、MCU/CPU130が従来からある方法でメモリ110、120からデータをフェッチし、メモリ110、120にデータを保存することを可能とする。ROM150は、MCU/CPU130をブートさせるための内蔵プログラムコード部を有し、MCU/CPU130と通信可能なように結合された従来からある(BIOS)ROMメモリ150であってもよい。しかしながら、本発明の一つの利点は、以下にさらに説明されるように、モバイル無線端末のフラッシュメモリ110が、従来からあるRAM120と従来からあるBIOS ROM150との両方を、いかなる重要なデータセキュリティを犠牲とすることなく、置き換えることができることである。
【0050】
図2Aは、デジタル証明書と、証明書に関連付けられたコンピュータプログラムと、証明書スロット・アドレス・ポインタとをフラッシュへ書き込む本発明に係る方法を説明するフローチャートである。図2Aで説明する方法は、典型的には、モバイル無線端末100の製造過程において実行される。ステップ200−252は通常、製造時にモバイル無線端末100のプログラムの最初のバージョンを保存する時や、モバイル無線端末100のプログラムを更新するいかなる時も、まずディスクに保存され次にフラッシュに保存されるミラーされたフラッシュデータのバージョンを生成するコンピュータプログラムによって実行される。
【0051】
ステップ210で、例えば従来からあるフラッシュ110をモバイル無線端末100に組み込み、従来からある方法でCPU/MCU130に結合することで、フラッシュが提供される。
【0052】
ステップ220で、少なくとも一つの消去−書き込みブロックが従来からある「アンロック・ブロック」ハードウェア命令によって最初にロックが解除され、その後、従来からある「ブロック消去」ハードウェア命令によって消去され、ブロックの全てのセルのビットがバイナリ「1」にセットされる。好適な実施形態では、この消去−書き込みブロックはフラッシュの電源がオンになった際に最初にアドレス指定されるブロック、すなわちモバイル無線端末100の電源がオンになった直後にCPU130がデータのフェッチを開始するブロックである下記の表1のブロック0である。これによって、フラッシュがセキュリティ攻撃に曝される時間が最小化され、従って有利となる。
【0053】
ステップ230で、消去済みの消去−書き込みブロックに複数のスロットが定義される。本発明によれば、それぞれのメモリスロットはバイナリ「00」又はバイナリ「11」のビットパターンを備えるメモリアドレスで開始し、従って以下にさらに説明されるように、簡潔で効率的なアドレス・スロット・ポインタの更新が可能となる。「ビットパターン」という語は、特に述べられていなければ、ここでは「バイナリ・ビットパターン」であるとして解釈されよう。
【0054】
ステップ240で、従来からある「ブロック書き込み」ハードウェア命令によって、第1のデジタル証明書Aがメモリスロットの第1のスロットに書き込まれ、第2のデジタル証明書Bが第2のメモリスロットに書き込まれる。その結果、そのスロットのいくつかのセルデータのビットが「0」にセットされる。証明書AとBとは任意のアプリケーションプログラムに関連付けられた証明書であってもよく、証明書Bは証明書Aの更新バージョンに相当してもよい。したがって、証明書Bは証明書Aよりも大きい改訂番号を有する。別の方法としては、証明書Bの有効期限は証明書Aの有効期限の後に失効する。好適な実施形態では、証明書AとBとはCPU130をブートさせるブートプログラムに関連付けられており、以下にさらに説明されるような有利な点を与える。これは、ブートプログラムが真正性を有し、かつ、これまでに改ざんされていないことを立証するために、証明書AとBとの有効性が検証プログラムによって検証されることを意味する。本発明によれば、表1に説明される説明例にある証明書B、C、及びDのように、証明書Aの他にさらに追加的な証明書が専用スロットに書き込まれる。この専用スロットの開始アドレスは、(より大きい改訂番号を備える証明書である)「次の」証明書のために、(より小さい改訂番号を備える証明書である)「前の」証明書の開始アドレスの「00」又は「11」のビットパターンをそれぞれ「11」又は「00」に置き換えることによって、「前の」証明書の開始アドレスの更新バージョンを制定する。表1は、次の証明書の開始アドレスのために、前の証明書の開始アドレスの11のビットパターンが「00」のビットパターンに置き換えられる場合を説明する。
【0055】
さらに、ステップ240で、コンピュータプログラムを検証する一つのデジタル署名と、それぞれかつ全ての証明書A、B、C、及びDのための表1の署名A、B、C、及びDとがそれぞれフラッシュに保存される。署名Aのデータ列は、まず署名/証明書Aに関連付けられたプログラムコード全体のハッシュ値を全ての証明書A−Dとともに計算し、その後そのハッシュ値を証明書Aの秘密鍵により暗号化することによって、従来からある方法によって計算される。さらに署名B、C、Dなどは対応する方法で計算される。発明のある実施形態では、署名A、B、C、及びDは、効率的なメモリ使用を提供するために、証明書と同じブロックに保存される。発明のある実施形態では、表1及び図3Aで説明されるように、さらにより効率的なメモリ使用を提供するために、署名A、B、C、及びDはそれぞれ証明書A、B、C、及びDと同じスロットに保存される。発明のある実施形態では、証明書A、B、C、及びDはそれぞれ、署名A、B、C、及びDを備える。従って、この実施形態では、それぞれの証明書は二つの署名を備える。つまり、証明書自身を検証する一つの「従来からある」署名とコンピュータプログラムを検証する一つの署名とである。別の方法としては、証明書A、Bなどはそれらの対応するコンピュータプログラムの署名A、Bなどのリンクアドレスを備えてもよい。これによって、単一のスロットが証明書とコンピュータプログラムの署名とを備えなくてもよくなり、幾分小さいスロットサイズを使用する場合に有利な点となり得る。ある実施形態では、図3Bに説明されるように、コンピュータの署名A、B、C、Dなどが専用スロットに保存される。この実施形態では、関連した証明書は対象の署名へのリンクアドレスを備えてもよく、又は、別の方法としては、署名アドレス・ポインタが、検証ソフトウェアによって、以下に説明される証明書スロット・アドレス・ポインタが証明書にアドレス指定するのと同様の方法で、定義されて使用されてもよい。図3Bはこの実施形態を説明しており、デジタル証明書/署名が専用スロットに書き込まれ、証明書スロット・アドレス・ポインタと署名スロット・アドレス・ポインタとが検証ソフトウェアによって使用される。この実施形態は、メモリ使用に関する柔軟性を提供する。幾分小さいスロットサイズを使用する場合には、一つの証明書がいくつかの部分に分割されて、スロットのセットに書き込み/保存されてもよいことが理解されよう。証明書の第1の部分は、第1のスロットに保存され、第2の部分が保存されているスロットへのリンクアドレスなどを備え、以下同様である。さらに、非常に小さいスロットサイズの場合には、スロットは対象の証明書へのリンクアドレスのみを備えてもよい。したがって、「証明書」という言葉は、ここでは、証明書へのリンクアドレスや、証明書へリンクしているリンクアドレスとともに、証明書の一部だけを意味するものとしても解釈されよう。
【0056】
ステップ250で、証明書AとBとの有効性の検証のために検証ソフトウェアプログラムにより用いられる証明書スロット・アドレス・ポインタが定義される。証明書スロット・アドレス・ポインタは現在有効な証明書スロットの開始アドレスを示し、検証プログラムが現在有効な証明書をフェッチし読み込むために利用される。最初に、証明書がフラッシュに書き込まれた後に、この証明書スロット・アドレス・ポインタが最初の有効な証明書、すなわち上記の説明例では証明書Aの開始アドレス、すなわち以下の表1に説明される例ではアドレス0x01FC00であるとして定義される。好適な実施形態では、証明書スロット・アドレス・ポインタはフラッシュに保存され、さらにより好ましくは、表1に説明されるように証明書と同じブロックに保存される。これは、効率的なメモリ使用を提供し、RAM及び/又はROMのような従来からある複数のメモリエンティティを、一つのフラッシュに置き換えること可能とする。この好適な実施形態では、フラッシュメモリは1のビットを0のビットに置き換えるだけで更新可能であるため、証明書スロット・アドレス・ポインタはポインタの「11」のビットパターンを「00」のビットパターンに置き換えることによって更新される。これは、事前に保存された証明書を決して消去しないことを可能とし、従って、単純に証明書スロット・アドレス・ポインタを次の、すなわち現在有効な証明書の開始アドレスを指し示すように更新することによって、重大な「セキュリティ攻撃時間」を省き(削減し)、証明書のロールオーバと呼ばれる証明書の更新が行われる。単に証明書スロット・アドレス・ポインタを利用することは、後でさらに説明されるように、最先端技術と比較して、大幅に削減された時間の期間にフラッシュメモリがセキュリティ攻撃に曝されることを意味する。好適な実施形態では、証明書スロット・アドレス・ポインタはフラッシュに保存され、有効期間、すなわち「賞味期限(best before date)」又は改訂番号は、表1に説明されるように、スロットの入口アドレス(の番号)の増加に伴って減少する。別の方法では、スロット・ポインタが例えばバッテリによるバックアップ電源を備えるRAMに保存されている場合に、証明書スロット・アドレス・ポインタは、代わりに証明書スロット・ポインタの「00」のビットパターンを「11」のビットパターンに置き換えることによって更新されてもよく、表1に示される証明書A−Dの順番は逆になる。証明書に関連付けられたコンピュータプログラムがブートプログラムである場合は、本発明は、ブートプログラムをフラッシュに保存することによって、BIOS ROMをBIOS(Basic Input Output System)フラッシュメモリで代替することを可能とする。従って、本発明は装置のBIOS ROMをより安価でより柔軟性の高いフラッシュに重要なデータセキュリティを犠牲にすることなく置き換えることを可能とする。例えば、図1に説明されるモバイル無線端末100はそのような装置である。しかしながら、コンピュータプログラムはいかなるモバイル無線端末のアプリケーション・ソフトウェアであってもよく、好ましくは、ブートプログラムとモバイル無線端末のアプリケーションプログラムとの両方を検証するために証明書は使用される。この場合には、上述したハッシュ値はブートプログラムとアプリケーションプログラムとの両方を備えるデータに対して計算されてもよく、多くの可能性が存在する。
【0057】
ステップ252で、本発明のある実施形態によれば、効率的なメモリ使用を提供するために、更新ソフトウェアと、証明書スロット・アドレス・ポインタと、証明書に関連付けられたコンピュータプログラムとは全てフラッシュに書き込まれる。しかしながら、既に述べたように、証明書スロット・アドレス・ポインタと証明書に関連付けられたコンピュータプログラムとのどちらも必ずしもフラッシュに書き込まれている必要はない。好適な実施形態においては、既に述べたように、検証ソフトウェアと、証明書スロット・アドレス・ポインタと、証明書と、証明書に関連付けられたコンピュータプログラムとはすべて同じフラッシュのブロック、好ましくはフラッシュの電源がオンになった際に最初にアドレス指定されるブロックに書き込まれる。NANDフラッシュの場合には、検証ソフトウェアと、証明書スロット・アドレス・ポインタと、証明書とは一つのフラッシュのブロックの中に保存されてもよく、一つの証明書は対応するページか、又はスロットを構成する対応するページのセットに保存される。これは、メモリの効率的な使用を提供する。
【0058】
表1は本発明によるフラッシュのメモリ領域のレイアウトの例を説明し、最初に全てのブロックは消去されていて、第1の証明書Aはこの証明書に関連付けられたコンピュータプログラムの署名Aと一緒に第1のスロットに書き込まれており、第2の証明書Bはこの証明書に関連付けられたプログラムの署名Bと一緒に第2のスロットに書き込まれており、第3の証明書Cはこの証明書に関連付けられたプログラムの署名Cと一緒に第3のスロットに書き込まれており、第4の証明書Dはこの証明書に関連付けられたプログラムの署名Dとともに第4のスロットに書き込まれている。従って、表1はフラッシュメモリのレイアウトがステップ252の後にどのように見え得るのかを説明している。表1では、それぞれのスロットは1024バイトのサイズを有し、対応する署名は、それに対応する証明書の512バイト後に保存されている。NANDフラッシュの場合は、2ページが1024バイトの単一のスロットを構成してもよく、表1に説明される通り、1ページは対応する証明書を保存するために使用され、1ページは対応する署名を保存するために使用される。しかしながら、証明書/署名などのサイズが要求する場合には、一つのスロットは複数のページ、例えば4、8ページなどであってもよい。

【0059】
ステップ252の後、モバイル無線端末は使える状態である。
【0060】
ここで、図2Bを参照して、ステップ254でモバイル無線端末100の電源がオンとなり、証明書に関連付けられたコンピュータプログラムが起動/実行されるように始動させる。既に述べたように、好適な実施形態では、証明書に関連付けられたコンピュータプログラムはCPU/MCU130をブートさせるブートプログラムであり、ブートプログラムの実行はフラッシュ110とCPU/MCU130との電源がオンとなった際にはいつでも自動的に開始される。これは、フラッシュ110がCPU/MCU130のBIOSを形成するということを意味する。セキュリティ攻撃に曝される時間を最小化するためには、ブートプログラムと、検証プログラムと、証明書と、署名とを電源がオンになった際に最初にアドレス指定されるフラッシュのブロックに保存することは、それによって「探索時間及びアドレス指定時間」が省かれるため、従って有利である。同じ理由から、ブートプログラムが検証プログラムを備えることと、電源オンの際に最初にすなわちすぐに、検証プログラムがアドレス指定されていることとは有利である。これは、フラッシュの電源がオンとなった際に最初にアドレス指定されるフラッシュのアドレスに検証プログラムが保存されることを意味している。こうして、ステップ254で、検証プログラムの実行が開始される。
【0061】
ステップ256で、検証ソフトウェアは証明書スロット・アドレス・ポインタが更新されるべきであるか否かを判定する。この判定は多くの様々な方法で行われてもよい。例えば、証明書スロット・アドレス・ポインタの更新は定期的に実行されてもよい。すなわち、検証ソフトウェアの所定の更新タイマの仕組みに制御されることによって実行されてもよい。または、検証ソフトウェアは、改訂番号又は証明書と一緒に保存された「賞味期限」を判定してもよく、賞味期限であるときや、検証プログラムの中にあらかじめ保存された対応するデータと比較した場合にあらかじめ保存された対応するデータと改訂番号が適合しないときに、証明書スロット・アドレス・ポインタを更新するのみでもよい。これらの手続きは検証プログラムが現在の時刻データ、すなわち年や、月や、日や、時などを利用できることを要求する。すなわち、証明書スロット・アドレス・ポインタの更新はモバイル無線端末の内蔵クロックに制御される。
【0062】
好適な実施形態においては、検証プログラムはステップ256で、以下のステップを実行することによって、証明書スロット・アドレス・ポインタが更新されるべきであるか否かを判定する。
1.検証プログラムに割り当てられた更新メッセージ署名を備える更新メッセージが存在するか判定する。この判定は検証プログラムに更新メッセージ専用のアドレスのデータを探索させ、検証プログラムにこの更新メッセージ/署名をフェッチさせ、その後検証プログラムにこの更新メッセージ/署名が保存されているブロックを消去させることによって実行してもよい。更新メッセージは更新メッセージ署名とともに、例えばモバイル無線端末100の設定ファイルシステムのような、モバイル無線端末の適当なメモリの専用アドレスに保存されてもよい。この更新メッセージは、更新メッセージ署名スロットとともにモバイル無線端末に様々な方法で、すなわちSMSメッセージによって、又は「カスタマサービス」などのソフトウェアアップグレード中に、署名されたデータオブジェクトの形式で、フラッシュに保存することによって導入されてもよい。カスタマサービスで、署名されたデータオブジェクトをフラッシュにどのように保存するのかは既知である。本発明において重要なことは、ある時点において、検証プログラムにより割り当てられた署名された更新メッセージがあるか否か、最後にモバイル無線端末100の電源がオンになった際にはその更新メッセージがモバイル無線端末100に存在しないかを検証プログラムが規定することと、検証プログラムに実行中に証明書のロールオーバを実行するように更新メッセージが指示することとである。更新メッセージが現在有効な証明書は証明書Bであると述べる場合には、更新メッセージのハッシュは証明書Bの秘密鍵によって暗号化されて、更新メッセージ署名を形成する。この更新メッセージはスロットに保存される新しい証明書を備えてもよい。
2.検証プログラムに割り当てられた更新メッセージを検証プログラムが発見したか、又は検証プログラムの更新時間の仕組みが証明書のロールオーバは実行されるべきであると述べる場合には、本方法はステップ260へと進み、更新されるべきではない場合、すなわち検証プログラムが更新メッセージを発見しないか、検証プログラムの更新時間の仕組みが証明書のロールオーバは実行されるべきではないと述べる場合には、直接、ステップ265に進む。
【0063】
ステップ260で、証明書スロット・アドレス・ポインタが更新される。これは、検証ソフトウェアに知られている事前に保存された仕組みに従って、証明書スロット・アドレス・ポインタの「11」のビットパターンを「00」のビットパターンに単に置き換えることによって実行され得る。この手続きはフラッシュに多くの(固定の)プリインストールされた証明書を有し、単純に定期的に証明書のロールオーバを実行する場合に有利となり得る。検証プログラムがステップ256において更新メッセージを発見した場合には、証明書スロット・アドレス・ポインタを更新するステップは、
1.検証プログラムが第1の証明書、すなわち証明書Aをフェッチし、
2.(検証プログラムに知られたアルゴリズムによって)検証プログラムが更新メッセージのハッシュ値を計算して、計算された更新メッセージ・ハッシュを与え、
3.検証プログラムは更新メッセージの署名を証明書Aの公開鍵を利用して復号化して、復号化された更新メッセージ・ハッシュを形成し、
4.検証プログラムは計算された更新メッセージ・ハッシュが復号化された更新メッセージ・ハッシュと適合するかを判定し、それらが適合した場合は証明書スロット・アドレス・ポインタをそれに従って更新し、それらが適合しない場合は検証プログラムは次の証明書、すなわちこの場合は証明書Bに対してこの手続きを繰り返すことを備えてもよい。
【0064】
ステップ1−4は適合する証明書が発見されるまで繰り返され、従って適合する証明書が現在有効な証明書である。他の実施形態では、下記で図4を参照してさらに説明されるように、検証プログラムはフラッシュの探索を実行することによって現在有効な証明書を発見してもよい。
【0065】
ステップ260で、証明書スロット・アドレス・ポインタは、現在有効な証明書の開始アドレスに等しくなるように設定されることによって更新される。証明書スロット・アドレス・ポインタがフラッシュに保存される場合には、これは従来からあるフラッシュのハードウェア「書き込み」コマンドによって実行される。
【0066】
ステップ265で、フラッシュは従来からあるハードウェア「ロック・ダウン(lock down)」又は「ロック・タイト(lock tight)」コマンドによって書き込まれることから保護される。フラッシュを書き込みから保護した後は、フラッシュはロックされ外部のセキュリティ攻撃から保護される。従って、「改ざん猶予時間」が削減され、耐改ざん性が強化されるため、ステップ265は可能な限り早い段階で実行されることが有利となる。したがって、好適な実施形態では、ステップ265はステップ260の直後に実行される。
【0067】
本方法はステップ265からステップ270へ進む。ステップ270で、検証ソフトウェアが関連する証明書、すなわち現在有効な証明書をフェッチし、ここでその証明書の保存されている開始アドレスが証明書スロット・アドレス・ポインタによって示される。コンピュータプログラムに関連付けられた署名もこのステップでフェッチされるが、通常は、証明書の中に備えられる。例えば、ステップ270で、表1に説明されているように、証明書Bの秘密鍵を利用することによって更新メッセージが署名された説明例では、検証ソフトウェアは証明書Bと署名Bとをフェッチする。
【0068】
ステップ275で、検証ソフトウェアはフェッチした証明書と署名との有効性を従来からある方法で判定する。例えば、ある説明例では、署名Bはコンピュータプログラム全体と全ての証明書のハッシュであり、そのハッシュは証明書Bの秘密鍵によって暗号化されている。検証プログラムはプログラム全体とすべての証明書とのハッシュを(知られたアルゴリズムに従って)計算し、(証明書Bに保存されている)証明書Bの公開鍵を利用して署名Bを復号化する。証明書B(と署名Bと)は、復号化されたハッシュが計算されたハッシュと適合する場合には有効であり、それ以外の場合には証明書Bは有効ではない。証明書が有効な場合には、本方法はステップ280に進み、証明書が有効でない場合には本方法はステップ285に進む。
【0069】
ステップ280で、証明書に関連付けられたコンピュータプログラムの実行が完了するまで続き、本方法は終了する。コンピュータプログラムがブートプログラムである場合には、CPU/MCU130がブートされ、すなわち関連するオペレーティングシステムなどがロードされている。
【0070】
ステップ285で、証明書に関連付けられたコンピュータプログラムの実行が停止され、本方法は終了する。
【0071】
ここで、図4に参照して、ある実施形態における証明書スロット・アドレス・ポインタを更新する方法は図4に説明されるステップを備える。ステップ410で、関連する消去済みの消去−書き込みブロック、例えば電源オンの際に最初にアドレス指定されるブロックのアドレスを指し示すブロック・アドレス・ポインタが定義される。ステップ420で、消去済みの消去−書き込みブロックから、ブロック・アドレス・ポインタによって示されるアドレスから開始して、順次的なアドレス探索によって、検証プログラムが消去済みのスロットを探索する。この実施形態では、現在有効な証明書はフラッシュに最後に保存された証明書である。例えば、フラッシュに証明書Dが存在せず、表1の証明書Dのスロットが消去されてまだ書き込まれていない、すなわち証明書Dのスロットが「1」のビットだけを備えており、証明書A、B及びCだけがフラッシュに保存されているという前提において、現在有効な証明書はフラッシュは表1の証明書Cである。消去済みのスロット、すなわち「1」のビットだけで満たされたスロットが見つかり次第、探索は終了される。証明書Dはフラッシュには書き込まれていないとした表1の説明例では、0x010000で開始されるスロットが消去済みのスロットであり、検証プログラムはこのスロットを検出次第終了するであろう。この最初に発見された消去済みのスロットは通常、書き込まれていないすべての証明書スロットの中で、最も大きい入口アドレスを有している証明書スロットである。ここで書き込まれていないスロットとは、「1」のビットのみで満たされているスロットである。
【0072】
ステップ430で、現在有効な証明書のスロットは、この探索中に発見された消去済みのスロット、すなわち上述の説明例においては証明書Cのスロットの直後のスロットであると特定される。
【0073】
ステップ440で、証明書スロット・アドレス・ポインタが現在有効な証明書であると特定されたスロットの開始スロット・アドレス、すなわちこの説明例では証明書Cのスロットの開始アドレスである0x01C000へと更新される。
【0074】
検証プログラムが現在有効な証明書を発見するために他の探索手続き/基準が使用されてもよい。例えば、「完全書き込み済み(completely written)」及び非「完全に書き込み済み」の証明書スロットの探索を用いてもよく、最初に発見された完全書き込み済みの証明書スロットは現在有効な証明書のスロットであると規定される。この場合には、新しい現在有効な証明書がフラッシュに書き込まれた際にはいつでも、すなわち上記で説明された更新メッセージによって、これまで有効であった証明書のスロットの全てのビットを「0」にセットすることでこれまで有効であった証明書が完全に上書きされる。従って、消去済みのスロットを探索する代わりに、完全「上書き済み(overwritten)」のスロット、すなわちスロットが「0」のビットを備えているだけのスロットの探索が実行される。この場合も図4に説明される。
【0075】
本発明の本質は、モバイル無線端末におけるフラッシュメモリのための証明書の保存/更新の仕組みの実施例もしくは操作の形態/例よって前に述べられてきている。しかしながら、既に述べたとおり、本発明はいかなるフラッシュメモリと、CPUとフラッシュとを備えるデジタル証明書を利用するいかなる電子装置と、がプログラムコードを検証することに適用可能である。さらに、上で説明された説明例は特にいわゆるMLCフラッシュに適応させており、(少なくとも)一つの「11」のビットパターンを一つの「00」のビットパターンに置き換えることによってブロックが更新される。しかしながら、本発明は、当業者が本技術を実現する際に、証明書スロット・アドレス・ポインタのアドレスの「1」のビット又は「0」のビットを、それぞれ「0」又は「1」のビットに置き換えることによって実現されてもよい。「1」のビットの個数又は別の方法では「0」のビットの個数は、証明書スロット・アドレス・ポインタを更新するため、すなわち証明書のロールオーバを行うために置き換えられるが、一般的に、当業者が実現する際の、フラッシュのどこのアドレス空間に証明書が保存されるか、及び証明書の大きさに依存する。例えば、表1に説明された説明例に戻ると、証明書Aは0x01FC00のアドレスに保存されるが、証明書Bは0x1F800に保存されてもよいし、証明書スロット・アドレス・ポインタは、証明書Aから証明書Bへの証明書のロールオーバの実行のために、この場合には証明書スロット・アドレス・ポインタの一つの「1」のビットが一つの「0」のビットに置き換えられることによって更新される。それ故、本発明は上で議論された個々の実施形態/動作例に制限されると認識されるべきではなく、添付された請求項によって定義される本発明の要旨を逸脱しない範囲で、実施例/動作例の変種が当業者によって作成されてもよいことを正当に評価されるべきである。
【図面の簡単な説明】
【0076】
【図1】本発明に係るモバイル無線端末100の主要な機能ブロックの一部を説明する図である。
【図2A】、
【図2B】本発明に係る方法を説明するフローチャートの一例を示す。
【図3A】本発明のある実施形態においてデジタル証明書とデジタル署名とがフラッシュメモリにどのように保存されるのかを説明する図である。
【図3B】本発明のある実施形態においてデジタル証明書とデジタル署名とがフラッシュメモリにどのように保存されるのかを説明する図である。
【図4】は本発明のある実施形態おいて証明書スロット・アドレス・ポインタがどのように更新されるのかを説明するフローチャートの一例である。

【特許請求の範囲】
【請求項1】
フラッシュメモリ(100)の耐改ざん性を強化するために、所定の消去−書き込みブロックと読み出し−書き込みブロックとを有する前記フラッシュメモリにデジタル証明書の書き込みと更新とを行う方法であって、
前記証明書は、
コンピュータプログラムを認証し、
前記コンピュータプログラムに関連付けられた検証プログラムによって検証され、
前記方法は、
少なくとも一つの前記消去−書き込みブロックを消去する工程と、
前記少なくとも一つの消去済みの消去−書き込みブロック内に複数のメモリスロットを定義する工程であって、それぞれのメモリスロットはバイナリ「0」又はバイナリ「1」のビットパターンを備える開始アドレスを有する工程と、
第1の前記メモリスロットへ第1のデジタル証明書を書き込み、第2の前記メモリスロットへ第2のデジタル証明書を書き込む工程と、
前記第1のメモリスロットの開始アドレスを指し示すように証明書スロット・アドレス・ポインタを定義する工程であって、該スロット・アドレス・ポインタは前記検証プログラムが現在有効な証明書をフェッチするために用いられる工程と、
前記証明書スロット・アドレス・ポインタの「0」又は「1」のビットパターンをそれぞれ「1」又は「0」に置き換えることにより該ポインタを更新して、該アドレス・ポインタが前記第2のメモリスロットの開始アドレスを指し示すようにする工程と
を備える前記方法。
【請求項2】
前記少なくとも一つの前記消去−書き込みブロック内の専用スロットに前記証明書スロット・アドレス・ポインタを書き込む工程と、
前記証明書スロット・アドレス・ポインタの「1」のビットパターンを「0」のビットパターンに置き換えることにより該アドレス・ポインタを更新する工程と
をさらに備える請求項1に記載の方法。
【請求項3】
前記少なくとも一つの前記消去−書き込みブロックは、フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるブロックであることを特徴とする請求項1に記載の方法。
【請求項4】
前記コンピュータプログラムは、前記フラッシュメモリと処理手段との電源がオンになった際に、該フラッシュメモリに結合された該処理手段をブートさせるブートプログラムであり、
前記方法は、前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記ブロックに前記ブートプログラムを保存する工程をさらに備えることを特徴とする請求項3に記載の方法。
【請求項5】
前記ブートプログラムは前記検証プログラムを備え、
該検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存されることを特徴とする請求項4に記載の方法。
【請求項6】
前記検証プログラムは、
前記証明書スロット・アドレス・ポインタを更新するためのコード手段と、
前記フラッシュメモリを書き込みからロックする書き込みロックコード手段とを備え、
前記方法は、前記証明書スロット・アドレス・ポインタが更新された直後に、前記フラッシュメモリが書き込みからロックされているようするために、前記書き込みロックコード手段を該フラッシュメモリに保存する工程をさらに備えることを特徴とする請求項5に記載の方法。
【請求項7】
前記フラッシュメモリはMLCフラッシュメモリであり、
前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記アドレス・ポインタの「11」のビットパターンを「00」のビットパターンに置き換える工程を備えることを特徴とする請求項2に記載の方法。
【請求項8】
前記第2のデジタル証明書は、
前記第1のデジタル証明書の更新バージョンに相当し、
ある時点で前記第1のデジタル証明書又は該第1の証明書の更新バージョンを置き換えることを特徴とする請求項1に記載の方法。
【請求項9】
前記証明書はプリインストールされ、
前記証明書スロット・アドレス・ポインタを更新する前記工程は、前記検証プログラムにより定期的に実行されるか、又は、前記第1の証明書によって若しくは該第1の証明書の更新バージョンによって示される有効性の失効期限に応じて、該検証プログラムによって実行されることを特徴とする請求項8に記載の方法。
【請求項10】
前記証明書スロット・アドレス・ポインタを更新する前記工程は、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「1」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「0」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「0」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとして特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を備えることを特徴とする請求項8に記載の方法。
【請求項11】
前記フラッシュメモリは2×256バイトのサイズのページを有するNANDフラッシュメモリであり、
前記方法は、それぞれのメモリスロットを一つのページ又はページのセットとして定義する工程をさらに備えることを特徴とする請求項1に記載の方法。
【請求項12】
所定の消去−書き込みブロックと読み出し−書き込みブロックとを有するフラッシュメモリであって、
少なくとも第1及び第2の証明書が前記フラッシュメモリに保存されていて、
前記証明書はコンピュータプログラムを認証することができ、
前記証明書は検証プログラムによって検証されることができ、
前記第2のデジタル証明書は第1のデジタル証明書の更新バージョンに相当し、
前記証明書は、消去−書き込みブロック内に定義されたそれぞれのメモリスロットに保存されていて、
前記証明書スロット・アドレス・ポインタは前記フラッシュメモリに保存されていて、
前記証明書スロット・アドレス・ポインタは現在有効な証明書が保存されているスロットを指し示すことを特徴とするフラッシュメモリ。
【請求項13】
前記証明書が保存されている前記消去−書き込みブロック内の専用スロットに前記証明書スロット・アドレス・ポインタが保存されていることを特徴とする請求項12に記載のフラッシュメモリ。
【請求項14】
前記フラッシュメモリの電源がオンになった際に最初にアドレス指定される前記消去−書き込みブロック内に前記メモリスロットが定義されることを特徴とする請求項12に記載のフラッシュメモリ。
【請求項15】
前記コンピュータプログラムは、処理手段が前記フラッシュメモリに結合され、前記フラッシュメモリと処理手段とが電源がオンになった際に、前記処理手段をブートするブートプログラムであり、
前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定される前記フラッシュメモリのブロックに前記ブートプログラムが保存されていることを特徴とする請求項14に記載のフラッシュメモリ。
【請求項16】
前記ブートプログラムは前記検証プログラムを備え、
前記検証プログラムは前記フラッシュメモリの電源がオンとなった際に最初にアドレス指定されるアドレスに保存されることを特徴とする請求項15に記載のフラッシュメモリ。
【請求項17】
前記検証プログラムは、
前記証明書スロット・アドレス・ポインタの「1」のビットパターンを「0」のビットパターンに置き換えることによって、又は前記証明書スロット・アドレス・ポインタの「11」のビットパターンを「00」のビットパターンに置き換えることによって、前記証明書スロット・アドレス・ポインタを更新するコード手段を備え、
前記フラッシュメモリを書き込みからロックする書き込みロックコード手段をさらに備え、
前記書き込みロック手段は、前記検証プログラムが実行されている間に、前記証明書スロット・アドレス・ポインタが更新された直後に前記フラッシュメモリが書き込みからロックされているように、前記フラッシュメモリに保存されていることを特徴とする請求項16に記載のフラッシュメモリ。
【請求項18】
前記フラッシュメモリはMLCフラッシュメモリであり、
前記証明書スロット・アドレス・ポインタは「11」のビットパターン又は「00」のビットパターンを備えることを特徴とする請求項12に記載のフラッシュメモリ。
【請求項19】
前記証明書はプリインストールされ、
前記検証プログラムは、該検証プログラムが実行される間に、前記第1の証明書に示されるか、又は該第1の証明書の更新バージョンによって示される有効性の有効期限に応じて定期的に前記証明書スロット・アドレス・ポインタを更新するコード手段を備えることを特徴とする請求項12に記載のフラッシュメモリ。
【請求項20】
前記検証プログラムは、
前記証明書が書き込まれている少なくとも一つの消去済みの消去−書き込みブロックの終端アドレスを指し示すようにブロック・アドレス・ポインタを定義する工程と、
前記ブロック・アドレス・ポインタによって示されるアドレスから開始する順次的なアドレス探索によって、前記消去−書き込みブロックの中から、「1」のビットのみを備える消去済みかつ非書き込み済みのスロット、又は「0」のビットを備えるだけの完全書き込み済みのスロットを探索する工程と、
前記探索中に最初に発見された消去済みかつ非書き込み済みのスロットの直前のスロット、又は前記探索中に最初に発見された「0」のビットを備えるだけではないスロットを、現在有効な証明書のスロットとしてそれぞれ特定する工程と、
前記証明書スロット・アドレス・ポインタを、前記現在有効な証明書と特定されたスロットの開始スロット・アドレスへと更新する工程と
を実行するプログラムコード手段を備えることを特徴とする請求項12に記載のフラッシュメモリ。
【請求項21】
前記フラッシュメモリは2×256バイトのサイズのページを有するNANDフラッシュメモリであり、
それぞれのメモリスロットは一つのページかページのセットとして定義されることを特徴とする請求項12に記載のフラッシュメモリ。
【請求項22】
フラッシュメモリと通信可能なように結合された処理部を備え、
前記フラッシュメモリは請求項12に記載のフラッシュメモリであることを特徴とする電子装置。
【請求項23】
前記装置はモバイル無線端末である請求項22に記載の電子装置。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate


【公表番号】特表2009−517749(P2009−517749A)
【公表日】平成21年4月30日(2009.4.30)
【国際特許分類】
【出願番号】特願2008−542695(P2008−542695)
【出願日】平成18年11月1日(2006.11.1)
【国際出願番号】PCT/EP2006/068013
【国際公開番号】WO2007/062955
【国際公開日】平成19年6月7日(2007.6.7)
【出願人】(502087507)ソニー エリクソン モバイル コミュニケーションズ, エービー (823)
【Fターム(参考)】