(57)【要約】      （修正有）【課題】メモリセルアレイに対する改ざんイベントの発生の有無を判定可能とする改ざん防止カウンタを提供する。【解決手段】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録する方法において、イベント数を永続的に記録するために、秘密暗号鍵を用いて、疑似ランダムな数列を生成する。数列は、セルアレイにおけるセルのアドレス列を示す。セルアレイにおける各セルは、初期状態からプログラム状態へ書き換えが可能であり、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化する。さらに、プログラム状態を有するセルのアドレスをアドレス列と比較して、セルアレイに対する改ざんイベントの発生の有無を判定する。さらに、判定結果に基づいて、セルアレイの認証又は対抗策の実行のいずれかを行う。【選択図】図７
2020144851.tif 000002
【特許請求の範囲】
【請求項１】
イベント数を永続的に記録するための装置であって、
初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイと、
前記セルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成するよう構成された数列生成器と、
イベントカウンタモジュールと、を備え、前記イベントカウンタモジュールは、
プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定し、
前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うよう構成されている、装置。
【請求項２】
前記イベントカウンタモジュールは、前記プログラム状態を有するセルのアドレスが、前記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントは発生していないと判定するよう構成されている、請求項１に記載の装置。
【請求項３】
第１有効カウンタ値は、プログラム状態にある第１の組のセルによって表され、
第２有効カウンタ値は、プログラム状態にある前記第１の組のセルを含む、プログラム状態にある第２の組のセルによって表される、請求項２に記載の装置。
【請求項４】
前記イベントカウンタモジュールは、
前記数列に含まれる第１の特定数に対応する第１の特定セルが初期状態であり、且つ、
前記数列において前記第１の特定数に後続する第２の特定数に対応する第２の特定セルがプログラム状態であると判定されると、改ざんイベントが発生したと判定するよう構成されている、請求項１〜３のいずれかに記載の装置。
【請求項５】
前記セルアレイの各セルは、ワンタイムプログラマブル・メモリセルである、請求項１〜４のいずれかに記載の装置。
【請求項６】
前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、
前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、
次のカウンタ値のために書き込むべきセルの個数を特定し、
前記数列のうち、前記最後の特定数に後続する特定数を、前記セルの個数と同じだけ特定し、
前記セルアレイのうち、前記特定数がアドレスを示している少なくとも１つの特定セルを、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、請求項１〜５のいずれかに記載の装置。
【請求項７】
前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、さらに、
前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、
次のカウンタ値のために書き込むべきセルの個数を、前記秘密暗号鍵に基づく疑似ランダムな個数として特定し、
前記次のカウンタ値に対応する数の組として、前記数列において前記最後の特定数に後続する数を最初の数として連続する数の組を特定し、
前記セルアレイのうち、前記数の組における各数に対応するセルの組を、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、請求項１〜６のいずれかに記載の装置。
【請求項８】
前記数の組のサイズは、前記数列又は第２の数列に符号化されている、請求項７に記載の装置。
【請求項９】
前記サイズは、１、２、３又は４のうちの疑似ランダムな値である、請求項８に記載の装置。
【請求項１０】
前記特定のイベントは、フライトコンピュータの電源投入、又は、前記フライトコンピュータの起動のうちの少なくとも一方に関連付けられている、請求項１〜９のいずれかに記載の装置。
【請求項１１】
前記特定のイベントは、自動車セキュリティシステムに関連付けられている、請求項１〜９のいずれかに記載の装置。
【請求項１２】
前記セルアレイ、前記数列生成器、及び、前記イベントカウンタモジュールは、ダイに一体化されており、前記ダイは、さらに、プロセッサを備え、
前記対抗策は、外部メモリからのデータ削除、内部メモリからのデータ削除、又は、前記プロセッサの１つ以上の処理へのアクセス制限のうちの少なくとも１つを含む、請求項１〜１１のいずれかに記載の装置。
【請求項１３】
イベント数を永続的に記録するための方法であって、当該方法は、請求項１〜１２のいずれかに記載の装置を実装するものであり、さらに、
初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成することと、
プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定することと、
前記判定に基づいて、
前記セルアレイの認証、又は、
対抗策の実行のいずれかを行うことと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ワンタイムプログラマブル・メモリセルカウンタ（one-time programmable memory cell counter）に関する。
【背景技術】
【０００２】
セキュリティデバイスにおいては、特定のイベントをカウントし、そのカウンタ値を、電源オンオフのサイクルが複数回行われた場合でも保持しておく必要がある。例えば、フライト関連のアプリケーションでは、フライトコンピュータの電源が投入された回数がカウントされ、そのカウンタ値は、複数サイクルにわたって保持される。機密性の高い情報やデータは、カウンタ値に基づいて暗号化され、フライトコンピュータにおいて記憶装置に保存される。ただし、記憶装置（例えば、ディスクドライブ）は、攻撃者からアクセスされる可能性がある。長時間におよぶ電源遮断や予期せぬ電源遮断があった場合でもカウンタ値を保存しておくために、セキュリティデバイスは、ワンタイムプログラマブル・メモリセルを用いたカウンタを実装することができる。メモリセルは、セキュリティデバイスに一体的に組み込まれるので、不正に交換されることはない。例えば、セキュリティデバイスは、フライトコンピュータの電源が投入される毎に、特定のワンタイムプログラマブル・メモリセルの状態を初期状態からプログラム状態（programmed state）に変更して、通電サイクルに関するカウンタ値を増加させる。ただし、物理的な攻撃を受けると、標的にされたワンタイムプログラマブル・メモリセルがリセットされたり、破壊されたりする可能性がある。この結果、攻撃者が過去のカウンタ値を再現して、フライトコンピュータにおいて当該カウンタ値に関連付けられているデータにアクセス（或いは、再生）できてしまう可能性がある。
【発明の概要】
【０００３】
本開示の一実施態様によれば、イベント数を永続的に記録するための装置は、セルアレイを備える。前記セルアレイの各セルは、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成されている。前記プログラム状態は、通常の処理によって初期状態に戻すことは不可能である（よって、これらのセルは、ワンタイムプログラマブル・セル、又は、ＯＴＰセルと呼ばれる）。前記装置は、さらに、秘密暗号鍵を用いて、疑似ランダムな数列を生成するよう構成された数列生成器を備える。前記数列は、前記セルアレイにおけるセルのアドレス列を示す。前記装置は、さらに、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定するよう構成されたイベントカウンタモジュールを備える。前記イベントカウンタモジュールは、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うようにも構成されている。
【０００４】
本開示の別の実施態様によれば、イベント数を永続的に記録するための方法は、秘密暗号鍵を用いて、疑似ランダムな数列を生成することを含む。前記数列は、セルアレイにおけるセルのアドレス列を示す。前記セルアレイの各セルは、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化する。前記方法は、さらに、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定することを含む。前記方法は、さらに、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うことを含む。
【０００５】
本開示の別の実施態様によれば、イベント数を永続的に記録するための装置は、セルアレイを備える。前記セルアレイの各セルは、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成されている。前記装置は、さらに、秘密暗号鍵を用いて、疑似ランダムな数列を生成するための手段を備える。前記数列は、前記セルアレイにおけるセルのアドレス列を示す。前記装置は、さらに、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定するための手段を備える。前記装置は、さらに、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うための手段を備える。
【０００６】
上述の実施態様における一つの利点は、ワンタイムプログラマブル・メモリセルを用いてイベントをカウントするカウンタを備える装置において、セルアレイ（例えば、ワンタイムプログラマブル・メモリセル）をリセットする攻撃が実行されてしまう可能性を低減することにより得られる高い安全性にある。例えば、セルに対して順序通り書き込みを行ってカウンタ値を増加させるのではなく、セルに対する書き込みは、秘密暗号鍵に基づいて決定された疑似ランダム順に行われる。したがって、攻撃者がセルアレイをリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列の疑似ランダム配列を知る必要があり、加えて、数列の各数とセルのアドレスとの対応関係を知る必要がある。さらに、安全性をより一層確保するために、いくつかの実施態様では、各カウンタ値は、疑似ランダムな個数のセルに対応付けられており、この個数も、秘密暗号鍵によって決定される。また、前記装置は、秘密暗号鍵を用いて第２の数列を生成するよう構成された第２数列生成器を備える。前記第２の数列に含まれる数は、セルアレイにおいて、先のカウンタ値の次のカウンタ値を示すためにまとめて書き込まれるべきセルの個数を示す。加えて、記載した特徴、機能、利点は、様々な実施態様において個別に達成することもできるし、さらに別の実施態様と組み合わせることで達成することもできる。その更なる詳細については、下記の説明及び添付図面を参照して記載される。
【図面の簡単な説明】
【０００７】
【図１】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な装置の図である。
【図２】秘密暗号鍵に基づいて、疑似ランダムな数列を生成するよう動作可能な数列生成器の図である。
【図３】第１有効カウンタ値を表すプログラマブル状態のセルアレイの図である。
【図４】第２有効カウンタ値を表すプログラマブル状態のセルアレイの図である。
【図５】無効なカウンタ値を表すプログラマブル状態のセルアレイの図である。
【図６】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な別の装置の図である。
【図７】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録する方法のフローチャートである。
【図８】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な装置の開発及び整備に関する方法のフローチャートである。
【図９】図１の装置を含む航空機のブロック図である。
【発明を実施するための形態】
【０００８】
以下に、添付図面を参照して、本開示の特定の実施形態を説明する。この説明において、共通する特徴は、図面全体にわたって共通の参照符号で示している。
【０００９】
添付の図面及び下記の説明は、特定の例示的な実施形態を示す。なお、当業者であれば、本明細書には明確に記載又は図示されていない変形であっても、本明細書に記載の原理を具現化するとともに、下記の説明に続く特許請求の範囲に包含される様々な変形を考案可能であろう。また、本明細書に記載の実施例は、いずれも本開示の原理の理解を助けることを意図しており、限定として解釈されるべきではない。つまり、本開示は、以下に記載する特定の実施形態又は実施例によって限定されず、請求の範囲及びその均等範囲によって限定されるものである。
【００１０】
本明細書において、添付図面を参照して特定の実施態様を説明する。説明において、共通する特徴は、図面全体にわたって共通の参照符号で示されている。いくつかの図面では、特定の種類の特徴が複数含まれている。このような特徴は、物理的及び／又は論理的には別個のものであるが、同じ参照符号で示されている。個々の特徴を区別する場合は、参照符号の数字に文字を追加している。これらの特徴を、全体として１つの集合や１つの種類として示す場合（例えば、それらの特徴のうちの特定の１つに言及するのではない場合）は、参照符号の数字に識別文字を付けずに用いている。ただし、同一種類の複数の特徴のうちの特定の１つに言及する場合は、参照符号の数字に識別文字を付けて用いている。例えば、図１には、複数のセルが示されており、１０６Ａ、１０６Ｂ、１０６Ｃなどの参照符号が付されている。これらのセルのうちの特定の１つに言及する場合は、例えば、セル１０６Ａのように、識別文字である「Ａ」を付した符号を用いている。これに対し、これらのセルのうちの任意の１つに言及する場合、或いは、これらのセル全体を１つの集合として言及する場合は、識別文字を付けない参照符号１０６を用いている。
【００１１】
本明細書における様々な用語は、特定の実施態様を説明する目的で使用しているにすぎず、限定を意図するものではない。例えば、単数形での記載は、特段の記載がない限り、複数も包含することを意図している。さらに、「備える（comprise）」等の用語は、それぞれ、「含む（include）」等と意味を同じくする用語として用いられている。加えて、「において（wherein）」との用語は、「であって（where）」と意味を同じくする用語として用いられている。本明細書において、「例示的な（exemplary）」は、一実施例、一実施態様、及び／又は、一側面であることを意味するものであり、限定として、或いは、好ましい態様として解釈されるべきではない。本明細書において、構造、部品、処理などの要素を修飾する序数（例えば「第１」、「第２」、「第３」など）は、それ自体で、他の要素に対する当該要素の優先順位や順序を示すものではなく、単に、（序数を除いては）名称が同じである他の要素と区別するために用いられている。本明細書において、「組」との用語は、１つ又は複数の要素の集合を指し、また、「複数の」との用語は、複数の要素を指す。
【００１２】
本明細書における「生成する」、「算出する」、「用いる」、「選択する」、「アクセスする」、及び、「特定する」との表現は、特段の記載がない限り、意味を同じくする表現として用いられている。例えば、あるパラメータ（又は信号）を、「生成する」、「算出する」、又は、「特定する」ことは、当該パラメータ（又は信号）を能動的に生成、算出、或いは、特定することを指す場合もあり、或いは、他の部品又は装置によって既に生成済みのパラメータ（又は信号）を用い、選択し、又は、アクセスすることを指す場合もある。また、本明細書における「接続された」との表現は、「通信可能に接続された」、「電気的に接続された」、或いは、「物理的に接続された」状態を含み、これに加えて（或いは、これに変えて）、それらの状態の組み合わせを含む場合もある。２つの装置（又は部品）は、直接的に接続されても、或いは、１つ以上の他の装置、部品、ワイヤ、バス、ネットワーク（例えば、有線ネットワーク、無線ネットワーク、又は、その組み合わせ）などを介して間接的に接続（例えば、通信可能に接続、電気的に接続、或いは、物理的な接続など）されてもよい。電気的に接続された２つの装置（又は部品）は、同一の装置に含まれてもよいし、或いは、別々の装置に含まれてもよい。また、限定するものではないが例示的な実施例に示すように、電子部品を介して、或いは、誘導結合を介して接続されてもよい。いくつかの実施態様では、電気通信などによって通信可能に接続された２つの装置（又は部品）は、電気信号（デジタル信号又はアナログ信号）を直接送受信したり、或いは、１つ以上のワイヤ、バス、ネットワークなどを介して間接的に送受信したりすることができる。本明細書において、「直接接続されている」という表現は、２つの装置が、間に他の部品を介することなく、（例えば、通信可能な接続、電気的な接続、或いは、物理的な接続などにより）接続された状態を表す。
【００１３】
本明細書に記載の技術によれば、ワンタイムプログラマブル・メモリセルを用いてイベントをカウントするカウンタを備える装置において、セルアレイ（例えば、ワンタイムプログラマブル・メモリセル）を外部からリセットする攻撃が実行されてしまう可能性を低減することで、安全性を高めることができる。例えば、セキュリティデバイスは、秘密暗号鍵を用いて疑似乱数列を生成する。この疑似乱数列に含まれる各数は、イベントに関連付けられたカウンタ値を示すために利用可能なワンタイムプログラマブル・メモリセルのアドレスに対応する。イベント（例えば、電源投入イベント）が発生すると、セキュリティデバイスは、ワンタイムプログラマブル・メモリセルに対して順序通り（in sequential order）書き込みを行うのではなく、疑似乱数列に従った順で書き込みを行う。この結果、該当イベントが発生する度に行われるカウンタ値の増加に際し、ワンタイムプログラマブル・メモリセルに関連付けられたビット（例えば、セル）のうち、観察者にとってはランダムに見えるビットが、論理値ゼロを示す初期状態から、論理値１を示すプログラム状態に書き換えられ、或いは、その逆に書き換えられることになる。したがって、ワンタイムプログラマブル・メモリセルのビットパターンは、カウンタ値が増える度に、（順序通り変更されるのではなく、）一見ランダムに、つまり、疑似ランダムな順で変更される。時には、攻撃者が高性能機器を用いており、ワンタイムプログラマブル・セルのいくつかのリセットに成功する可能性はある。しかしながら、セキュリティデバイスは、無効なビットパターンを検出することにより、外部からセルをリセットする攻撃があったことを検知できる。外部からセルをリセットする攻撃を検知すれば、セキュリティデバイスは、例えば、電源投入手順（例えば、起動手順）の中止、ユーザへの警告の送出、機密情報の消去などのダメージコントロールを実行することができる。該当するイベントが発生する度に、疑似ランダムなビットに書き込みを行ってカウンタ値を増やすので、攻撃者は、どのビットパターンが有効であるか判別することができない。この結果、ワンタイムプログラマブル・メモリセルをいくつかリセットして過去のカウンタ値の再生を試みたとしても、そのビットパターンは無効である可能性が高い。また、攻撃者が過去のカウンタ値を傍受したとしても、これに対応してプログラム状態になっているセルは、セル全体に分散されており、そのようなパターンのセルをリセットすることは、非常に困難である。例えば、現在のＡＳＩＣ製造技術によれば、１つのセルのサイズは約１０ｎｍであるが、セルを破壊するレーザ波の波長は、これとは桁違いに大きい。
【００１４】
図１は、ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な装置１００の図である。例えば、特定のイベントが発生する度に、装置１００は、１つ以上のワンタイムプログラマブル・メモリセルの状態を変更することで、カウンタ値を更新して、特定のイベントが発生したことを示す。一実施態様では、特定のイベントは、フライトコンピュータの電源投入、又は、フライトコンピュータの起動の少なくとも一方に関連付けられている。例えば、装置１００は、航空機のフライトコンピュータと一体的に設けることができ、航空機のフライトコンピュータに電源が投入された回数をカウントすることができる。別の実施態様によれば、特定のイベントは、自動車用のセキュリティシステムに関連付けられている。例えば、装置１００は、自動車用のセキュリティシステムと一体的に設けることができ、イベント（例えば、自動車の電源投入イベント）の発生回数をカウントすることができる。
【００１５】
装置１００は、セルアレイ１０２、数列生成器１１０、セル状態判定モジュール１１２、及び、イベントカウンタモジュール１１４を含む。一実施態様によれば、セルアレイ１０２、数列生成器１１０、セル状態判定モジュール１１２、及び、イベントカウンタモジュール１１４は、ダイ（die）に一体化されている。セル状態判定モジュール１１２は、ハードウェア、ソフトウェア、ファームウェア、プロセッサで実行される命令などを用いて実装することができる。同様に、イベントカウンタモジュール１１４は、ハードウェア、ソフトウェア、ファームウェア、プロセッサで実行される命令などを用いて実装可能である。一実施態様では、セル状態判定モジュール１１２は、イベントカウンタモジュール１１４に一体化されている。
【００１６】
セルアレイ１０２は、複数のセクション１０４（例えば、サブアレイ（sub-array））を含む。図１に示すように、セルアレイは、セクション１０４Ａ、セクション１０４Ｂ、セクション１０４Ｃ、セクション１０４Ｄ、セクション１０４Ｅ、セクション１０４Ｆ、セクション１０４Ｇ、セクション１０４Ｈ、セクション１０４Ｉ、セクション１０４Ｊ、セクション１０４Ｋ、及び、セクション１０４Ｌを含む。なお、図１では、１２個のセクション１０４が示されているが、他の実施態様では、セルアレイ１０２がこれより多くの（又は、少ない）数のセクションを含む構成でもよい。一実施例では、限定するものではないが、セルアレイ１０２は、４８個のセクションを含むことができる。別の実施例では、限定するものではないが、セルアレイ１０２は、２個のセクション、又は、１個のセクションを含むことができる。
【００１７】
セルアレイ１０２の各セクション１０４は、複数のセル１０６を含む。例えば、図１では、セクション１０４Ａは、セル１０６Ａ、セル１０６Ｂ、セル１０６Ｃ、セル１０６Ｄ、セル１０６Ｅ、セル１０６Ｆ、セル１０６Ｇ、及び、セル１０６Ｈを含む。セクション１０４Ｃは、セル１０６Ｉ、セル１０６Ｊ、セル１０６Ｋ、セル１０６Ｌ、セル１０６Ｍ、セル１０６Ｎ、セル１０６Ｏ、及び、セル１０６Ｐを含む。セクション１０４Ｊは、セル１０６Ｑ、セル１０６Ｒ、セル１０６Ｓ、セル１０６Ｔ、セル１０６Ｕ、セル１０６Ｖ、セル１０６Ｗ、及び、セル１０６Ｘを含む。なお、説明の便宜上、図１では、３つのセクション１０４Ａ、１０４Ｃ、１０４Ｊに含まれるセル１０６が示されているが、残りのセクション１０４も、セクション１０４Ａ、１０４Ｃ、１０４Ｊと同様の構成を有する。
【００１８】
セルアレイ１０２における各セルは、それぞれ固有のアドレス（例えば、固有のメモリアドレス）を有する。後述するように、各アドレスは、数列生成器１１０により生成される数列１６０に含まれる数の特定の１つにマッピングされている。各セル１０６は、初期状態からプログラム状態への書き替えが可能なプログラマブル素子１０８を含む。例えば、各セル１０６は、トランジスタ（例えば、プログラマブル素子１０８）と組み合わせて実装可能なヒューズ素子又はアンチヒューズ素子を含むワンタイムプログラマブル・メモリセルでもよい。特定のセル１０６のプログラマブル素子１０８が初期状態であれば、当該特定のセル１０６のビット読み出し（bit reading）値は、「１」である。一実施例では、特定のセル１０６のプログラマブル素子１０８が書き込まれてプログラム状態になっていれば、当該特定のセル１０６のビット読み出し値は、「０」である。
【００１９】
数列生成器１１０は、秘密暗号鍵を用いて数列１６０を生成するよう構成されている。例えば、図２を参照すると、秘密暗号鍵２０２は、数列生成器１１０に供給されて、疑似ランダム順に配列された数列１６０が生成される。例えば、数列生成器１１０は、線形帰還シフトレジスタ（ＬＦＳＲ）、非線形帰還シフトレジスタ（ＮＬＦＳＲ）、もう一つの疑似乱数生成器（ＰＲＮＧ）、又は、その組み合わせを含む。図２に示す例示的な実施例では、数列１６０は、「１４、８、１、１９、２５、１３、８３、５１、６７３、１００３、１２、８５、４３、１２１５、１１３８・・・２４５」である。説明の便宜上、数列１６０に含まれる各数を１０進数にしたが、数列１６０は、２進数、１６進数などを含んでもよい。
【００２０】
秘密暗号鍵２０２は、特定用途向け集積回路（ＡＳＩＣ）毎に比較的高い確率で固有であり、よって、予測不可能である。秘密暗号鍵２０２は、物理回路パラメータによって生成可能である。一実施態様によれば、秘密暗号鍵２０２は、対応するＡＳＩＣのシリアルナンバーなどの機器固有情報を含む。したがって、数列１６０は、装置（例えば、チップ）毎に異なるものになるが、装置１００などの一つの装置においては、数列１６０は、評価（又は、生成）の度に同じものになる。一実施態様では、フィッシャー-イェーツのシャッフル技術を利用して疑似乱数列１６０を生成してもよい。
【００２１】
数列１６０は、Ｎ個のセルがある場合、通常、０、１、２、・・・、Ｎ−１などの連続数であるセル１０６のインデックスを並べ替えたものである。例えば、数列１６０は、セルアレイ１０２におけるセル１０６のアドレスの列を示すものである。例を挙げて説明すると、セル１０６Ｃのアドレスは、数列１６０の中の「１４」という数に対応し、セル１０６Ｔのアドレスは、数列１６０の中の「８」という数に対応し、セル１０６Ｑのアドレスは、数列１６０の中の「１」という数に対応するなどである。数列１６０に含まれる各ビット（例えば、数）は、それぞれ一度のみ使用される。後述するように、数列１６０のうちのいくつかのビット（例えば、数）は、カウンタをインクリメントする際に書き込むべきセル１０６の個数（ｉｋ）を特定するために利用される。例えば、個数（ｉｋ）は、いくつかの実施態様では、１、２、３又は４に等しい。
【００２２】
特定のイベントについての第１カウンタ値２１０は、セル１０６Ｃ、１０６Ｔ、１０６Ｑがプログラム状態であることによって示される。特定のイベントについての第２カウンタ値２２０は、第１カウンタ値２１０に関連付けられたセル１０６Ｃ、１０６Ｔ、１０６Ｑに加えて、セル１０６Ｉ、１０６Ｘがプログラム状態であり、残りのセル１０６が初期状態であることによって示される。特定のイベントについての第３カウンタ値２３０は、第２カウンタ値２２０に関連付けられたセル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘに加えて、セル１０６Ａ、１０６Ｌがプログラム状態であり、残りのセル１０６が初期状態であることによって示される。一実施態様によれば、各カウンタ値に対応するセル１０６の個数は、例えば、数列１６０中に符号化されている（encoded）秘密暗号鍵２０２に基づく（例えば、数列１６０の部分数列が、各カウンタ値に対応するセルの個数を示す）。
【００２３】
再び図１を参照すると、セル状態判定モジュール１１２は、プログラム状態を有するセル１０６のアドレス１６２を特定するよう構成されている。例えば、セル状態判定モジュール１１２は、セルアレイ１０２の各セル１０６のビット値の読み出し処理を開始することができる。特定のセル１０６のビット値が（例えば、比較的高抵抗の状態を示す）「０」である場合、セル状態判定モジュール１１２は、当該特定のセル１０６は、初期状態であると判定する。これに対し、特定のセル１０６のビット値が（例えば、比較的低抵抗の状態を示す）「１」である場合、セル状態判定モジュール１１２は、当該特定のセル１０６は、プログラム状態であると判定する。
【００２４】
イベントカウンタモジュール１１４は、比較部１２０、認証部１２２、対抗部１２４、及び、プログラム部１２６を含む。比較部１２０は、プログラム状態を有するセル１０６のアドレス１６２を、アドレス列（例えば、数列１６０）と比較して、前記セルアレイ１０２に対する改ざんイベントの発生の有無を判定する。例えば、図２に示すように、各カウンタ値２１０、２２０、２３０は、特定の組のセル１０６がプログラム状態であることによって表されている。より小さいカウンタ値に対応するプログラム状態のセル１０６の組は、より大きいカウンタ値に対応するプログラム状態のセル１０６の組の部分集合である。例えば、第１カウンタ値２１０に対応する第１の組を構成するプログラム状態のセル１０６Ｃ、１０６Ｔ、１０６Ｑは、第２カウンタ値２２０に対応する第２の組を構成するプログラム状態のセル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘの部分集合である。イベントカウンタモジュール１１４は、現在観察対象になっているセル１０６の組（例えば、プログラム状態のセル１０６のアドレス１６２）が有効なカウンタ値と対応するか確認することで、改ざんイベントの発生の有無を判定することができる。プログラム状態を有するセル１０６のアドレス１６２が有効なカウンタ値に対応する場合は、イベントカウンタモジュール１１４は、改ざんイベントは発生していないと判定する。有効カウンタ値については、図３〜図４に示して説明する。プログラム状態のセルのアドレス１６２が有効なカウンタ値に対応しない場合は、イベントカウンタモジュール１１４は、改ざんイベントが発生したと判定する。無効カウンタ値については、図５に示して説明する。
【００２５】
一実施態様によれば、イベントカウンタモジュール１１４は、数列１６０のうちの第１の特定数に対応する第１の特定セル１０６が初期状態であり、数列１６０のうちの第２の特定数に対応する第２の特定セル１０６がプログラム状態であると判定されると、改ざんイベントが発生したと判定する。この実施態様では、第２の特定数は、数列１６０において、第１の特定数の後に続く数である。例を挙げて説明すると、イベントカウンタモジュール１１４は、セル１０６Ｃが初期状態であり、且つ、セル１０６Ｉがプログラム状態であると判定されると、改ざんイベントが発生したと判定する。例えば、セル１０６Ｉは、数列１６０において、セル１０６Ｃに対応する数（例えば１４）の後に続く数（例えば１９）に対応するので、セル１０６Ｉがセル１０６Ｃより先に書き込みされていることから、イベントカウンタモジュール１１４は、改ざんイベントが発生したと判定することができる。
【００２６】
改ざんイベントが発生したと判定されると、対抗部１２４は、１つ以上の対抗策を実行可能である。例えば、対抗部１２４は、図６を参照して説明する外部メモリ６０８などの外部メモリから、データを消去することができる。別の例では、限定するものではないが、対抗部１２４は、改ざんイベントが発生したと判定されると、図６を参照して説明する内部メモリ６０６などの内部メモリからデータを消去することができる。さらに別の例では、限定するものではないが、対抗部１２４は、改ざんイベントが発生したと判定されると、図６を参照して説明するプロセッサ６０４などのプロセッサにおける１つ以上の処理へのアクセスを制限することができる。
【００２７】
認証部１２２は、改ざんイベントが発生していないと判定されると、セルアレイ１０２を認証するよう構成されている。例えば、認証部１２２は、装置１００に対する改ざんやセキュリティー攻撃が検知されていないことを示す信号を生成する。プログラム部１２６は、この信号に基づいて、特定のイベント（例えば、電源投入）が検知されると、セルアレイ１０２のうち、次のカウンタ値に対応する次の組のセル１０６に書き込みを行うよう構成されている。
【００２８】
例えば、プログラム部１２６は、特定のイベントが検知されると、改ざんイベントが発生していないとの判定の後、数列１６０のうち、プログラム状態のセル１０６に対応する最後の特定数を特定するよう構成されている。例を挙げて説明すると、第１カウンタ値２１０が最新のカウンタ値であれば、数列１６０のうち、プログラム状態のセル１０６に対応する最後の特定数は「１」である。プログラム部１２６は、次のカウンタ値の書き込み対象になるセル１０６の個数を特定するようにも構成されている。例えば、プログラム部１２６は、第２カウンタ値２２０（次のカウンタ値）のために書き込むべきセル１０６の個数が２であると特定する。次のカウンタ値のために書き込むべきセル１０６の個数は、疑似ランダムであって、数列１６０中に符号化されていてもよい。一実施態様では、次のカウンタ値のために書き込むべきセル１０６の個数は、１から４の間である。
【００２９】
プログラム部１２６は、さらに、数列１６０のうち、第２カウンタ値２２０（例えば、次のカウンタ値）に対応する数の組を特定するよう構成されている。この数の組は、次のカウンタ値のために書き込むべきセル１０６の個数と等しいサイズを有する。例えば、この実施例では、第２カウンタ値２２０に対応する数の組のサイズは２である。次のカウンタ値のために書き込むべきセル１０６の個数と同様に、数の組のサイズは、疑似ランダムであり、通常は、１から４の間であるが、それより多い数も可能である。数の組のサイズは、数列１６０中に符号化してもよいし、第２の数列（図示せず）に格納（符号化）してもよい。この実施例では、プログラム部１２６は、第２カウンタ値２２０に対応する数の組として「１９」と「２５」を特定する。この数の組における最初の数（例えば，「１９」）は、プログラム状態のセル１０６に対応する最後の特定数（例えば、「１」）の後に続く数である。
【００３０】
プログラム部１２６は、さらに、セルアレイ１０２のうち、（特定した数の組に対応する）セル１０６の組を初期状態からプログラム状態へと書き換えるよう構成されている。例えば、プログラム部１２６は、セル１０６Ｉ、１０６Ｘのプログラマブル素子１０８に書込み電圧を印加して、プログラム状態にする。この結果、いくつかの実施態様では、セル１０６Ｉ、１０６Ｘの電圧レベルが下がり、セル１０６Ｉ、１０６Ｘのビット値が０になる。
【００３１】
図１〜図２を参照して説明したこの技術によれば、外部からセルアレイ１０２をリセットする攻撃が成功してしまう可能性を低減して、カウンタの安全性を高めることができる。例えば、カウンタ値を増加させる際に、セル１０６に対する書き込みを順序通り行うのではなく、セル１０６に対する書き込みは、秘密暗号鍵２０２に基づいて決定される疑似ランダム順に行われる。したがって、攻撃者がセルアレイ１０２をリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列１６０の疑似ランダム順と、数列１６０の各数とセル１０６のアドレスとの対応関係を知る必要がある。より一層の安全性を確保するために、各カウンタ値に関連付けられるセル１０６の個数はランダムになっている。例えば、第１カウンタ値２１０は、３つのセル１０６Ｃ、１０６Ｔ、１０６Ｑが書き込まれることで表され、第２カウンタ値２２０は、さらに２つのセル１０６Ｉ及び１０６Ｘが追加で書き込まれることで表される。したがって、攻撃者がセルアレイ１０２をリセットして、過去のカウンタ値に関連付けられたデータへのアクセスを試みるためには、疑似ランダムに配置されているプログラム状態のセル１０６の位置だけてなく、特定のカウンタ値に対して何個のセル１０６が書き込まれるかを知る必要がある。
【００３２】
このように、図１〜図２を参照して説明した技術によれば、ワンタイムプログラマブル・メモリセルをリセットする従来の攻撃や手法を防ぐことができる。例えば、セル１０６が順序通り書き込まれる場合には、攻撃者は、セルアレイ１０２にレーザパルスを照射することでセル１０６の集合を破壊して、カウンタ値を実質的にリセットすることが可能である。しかしながら、レーザ照射によってダイが加熱されると、近隣のセル１０６も多数破壊される（例えば、異なるセクション１０４が一度に破壊される）ので、このような攻撃を受けた場合のビットパターンは、無効カウンタ値を示す可能性が高い。例を挙げて説明すると、セル１０６Ｂを初期状態に戻す目的でセル１０６Ｂにレーザが照射されたとすると、セクション１０４Ａにおけるプログラム状態のセル１０６Ａ〜１０６Ｈも、レーザの熱によって初期状態に戻る可能性が高い。この結果、プログラム状態を有するセル１０６は、どの有効カウンタ値にも対応しないことになるので、イベントカウンタモジュール１１４は、改ざんイベント（例えば、レーザ照射）の発生を示すことができ、対抗部１２４は、対抗策を実行することができる。
【００３３】
図３は、プログラマブル状態が第１有効カウンタ値を表しているセルアレイ１０２を示す図である。例えば、図３では、セル１０６Ｃ、１０６Ｔ、１０６Ｑがプログラム状態であり、残りのセル１０６は初期状態である。図３に示すセルアレイ１０２のプログラマブル状態は、疑似乱数列１６０及び対応するセルアドレスに基づいて、第１カウンタ値２１０を表している。例えば、プログラム状態を有するセル１０６がセル１０６Ｃ、１０６Ｔ、１０６Ｑだけであれば、イベントカウンタモジュール１１４は、第１カウンタ値２１０が最新のカウンタ値であると判定するとともに、また、セルアレイ１０２に対する改ざんイベントは発生していないと判定する。
【００３４】
認証部１２２は、改ざんイベントが発生していないと判定されると、セルアレイ１０２を認証するよう構成されている。例えば、認証部１２２は、装置１００に対する改ざんやセキュリティー攻撃が検知されていないことを示す信号を生成する。プログラム部１２６は、この信号に基づいて、特定のイベント（例えば、電源投入）が検知されると、図４について説明するように、セルアレイ１０２のうち、次のカウンタ値に対応する次の組のセル１０６に書き込みを行うよう構成されている。
【００３５】
図４は、第２有効カウンタ値を表す、プログラマブル状態にあるセルアレイ１０２を示す図である。例えば、図４では、セル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘがプログラム状態であり、残りのセル１０６は初期状態である。図４に示すセルアレイ１０２のプログラマブル状態は、疑似乱数列１６０及び対応するセルアドレスに基づいて、第２カウンタ値２２０を示している。
【００３６】
プログラム部１２６は、第２カウンタ値２２０を表すようにセルアレイ１０２に書き込みを行うために、数列１６０のうちプログラム状態のセル１０６に対応する最後の特定数を特定する。例えば、プログラム部１２６は、第１カウンタ値２１０に対応するプログラム状態のセル１０６（例えば、セル１０６Ｑ）に対応する最後の特定数が「１」であると特定する。プログラム部１２６は、さらに、第２カウンタ値２２０（次のカウンタ値）のために書き込むべきセル１０６の個数も特定する。例えば、プログラム部１２６は、第２カウンタ値２２０のために新たに書き込むべきセル１０６の個数が２であることを、秘密暗号鍵２０２に基づいて特定する。
【００３７】
プログラム部１２６は、第２カウンタ値２２０に対応する数の組を数列１６０から特定する。この数の組は、次のカウンタ値のために書き込むべきセル１０６の個数と等しいサイズを有する。例えば、この実施例では、第２カウンタ値２２０に対応する数の組のサイズは２である。よって、プログラム部１２６は、後続する２つの数（例えば、「１９」及び「２５」）を、第２カウンタ値２２０に対応する数の組として特定する。この数の組における最初の数（例えば，「１９」）は、プログラム状態のセル１０６に対応する最後の特定数（例えば、「１」）に後に続く数である。
【００３８】
プログラム部１２６は、さらに、セルアレイ１０２のうち、（特定した数の組に対応する）セル１０６の組を初期状態からプログラム状態へと書き換える。例えば、プログラム部１２６は、セル１０６Ｉ、１０６Ｘのプログラマブル素子１０８に書込み電圧を印加して書き込みを行って、プログラム状態にする。この結果、セル１０６Ｉ、１０６Ｘの電圧レベルが下がり、セル１０６Ｉ、１０６Ｘのビット値が０になる。よって、図４に示すように、セル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘがプログラム状態を有し、残りのセル１０６は初期状態を有する。この結果、図４に示すセルアレイ１０２のプログラマブル状態は、第２カウンタ値２２０を表す。
【００３９】
図３〜図４を参照して説明したこの技術によれば、外部からセルアレイ１０２をリセットする攻撃が成功してしまう可能性を低減して、カウンタの安全性を高めることができる。例えば、カウンタ値を増加させる際に、セル１０６への書込みを順序通り（例えば、セル１０６Ａに書き込み、次にセル１０６Ｂに書き込むなど）のではなく、セル１０６に対する書き込みは、秘密暗号鍵２０２に基づいて決定された疑似ランダム順（例えば、セル１０６Ｃに書き込み、次にセル１０６Ｔに書き込むなど）に行われる。したがって、攻撃者がセルアレイ１０２をリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列１６０の疑似ランダム順と、数列１６０の各数とセル１０６のアドレスとの対応関係を知る必要がある。安全性をさらに高めるために、各カウンタ値に関連付けられるセル１０６の個数はランダムになっている。例えば、第１カウンタ値２１０は、３つのセル１０６Ｃ、１０６Ｔ、１０６Ｑが書き込まれることで表され、第２カウンタ値２２０は、さらに２つのセル１０６Ｉ及び１０６Ｘが追加で書き込まれることで表される。したがって、攻撃者がセルアレイ１０２をリセットして、過去のカウンタ値に関連付けられたデータへのアクセスを試みるためには、疑似ランダムに配置されているプログラム状態のセル１０６の位置にだけでなく、特定のカウンタ値に対して何個のセル１０６が書き込まれるかを知る必要がある。
【００４０】
図５は、プログラマブル状態が無効カウンタ値を表しているセルアレイ１０２を示す図である。例えば、図５において、セル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘ、１０６Ｒ、１０６Ｓがプログラム状態であり、残りのセル１０６は初期状態である。図５に示すセルアレイ１０２のプログラマブル状態は、疑似乱数列１６０及び対応するセルアドレスに基づいて有効なカウンタ値を表していない。
【００４１】
例えば、イベントカウンタモジュール１１４は、プログラム状態を有するセル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘ、１０６Ｒ、１０６Ｓのアドレス１６２を、有効カウンタ値を表すように書込みされたアドレスと比較するよう構成されている。セル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘ、１０６Ｒ、１０６Ｓのアドレス１６２は、有効カウンタ値を表すプログラム状態のセルのアドレスに対応しないので、イベントカウンタモジュール１１４は、図５に示すセルアレイ１０２は、有効カウンタ値を表しておらず、改ざんイベントが発生したと判定する。一実施態様では、イベントカウンタモジュール１１４は、セル１０６Ｒ、１０６Ｓがプログラム状態であるのに、数列１６０において、これらのセル１０６Ｒ、１０６Ｓに関連付けられた数（例えば、「１２１５」及び「２４５」）に先行する数（例えば、数「１３、８３、５１、６７３、１００３、１２、８５、４３」）に対応するセル（例えば、セル１０６Ａ、１０６Ｌ、１０６Ｊ、１０６Ｕ、１０６Ｄ、１０６Ｋ、１０６Ｐ、１０６Ｈ）が初期状態であることにより、改ざんイベントが発生したと判定することができる。
【００４２】
図５を参照して説明した無効カウンタ値を検知する技術によれば、ワンタイムプログラマブル・メモリセルをリセットする単純な手法が成功する可能性を小さくすることができる。例えば、セル１０６が順序通り書き込みされる場合には、攻撃者は、セルアレイ１０２にレーザパルスを照射することで、セル１０６の集合を破壊して、カウンタ値をリセットすることが可能である。しかしながら、レーザ照射によってダイが加熱されると、多数の近隣のセル１０６が破壊される（例えば、異なるセクション１０４が一度に破壊される）ので、このような攻撃を受けた場合のビットパターンは、無効カウンタ値を示す可能性が高い。例を挙げて説明すると、セル１０６Ｒにレーザが照射されたとすると、セクション１０４Ｊにおける他のセル（例えば、セル１０６Ｓ）も、レーザ熱の影響を受ける可能性が高い。この結果、プログラム状態のセル１０６は、どの有効カウンタ値にも対応しないことになるので、イベントカウンタモジュール１１４は、改ざんイベント（例えば、レーザ照射）の発生を示すことができ、対抗部１２４は、対抗策を実行することができる。
【００４３】
図６は、ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な別の装置６００の図である。例えば、図１の装置１００に関して説明したのと同様に、装置６００は、特定のイベントが発生する度に、１つ以上のワンタイムプログラマブル・メモリセルの状態を変更することで、カウンタ値を更新して、特定のイベントが発生したことを示す。
【００４４】
装置６００は、ダイ６０２を含む。セルアレイ１０２、数列生成器１１０、セル状態判定モジュール１１２、及び、イベントカウンタモジュール１１４は、ダイ６０２に一体化されている。加えて、プロセッサ６０４及び内部メモリ６０６も、ダイ６０２に一体化されている。装置６００は、さらに、外部メモリ６０８を含む。
【００４５】
イベントカウンタモジュール１１４が改ざんイベントの発生を判定すると、対抗部１２４は、１つ以上の対抗策を実行することができる。例えば、限定するものではないが、対抗部１２４は、セルアレイ１０２に対する改ざんイベントが発生したと判定されると、外部メモリ６０８からデータを消去することができる。別の例では、限定するものではないが、対抗部１２４は、セルアレイ１０２に対する改ざんイベントが発生したと判定されると、内部メモリ６０６からデータを消去することができる。別の例では、限定するものではないが、対抗部１２４は、プロセッサ６０４の１つ以上の処理へのアクセスを制限することができる。
【００４６】
図７は、ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録する方法７００のフローチャートである。方法７００は、装置１００又は装置６００によって、或いは、両方の装置によって実行することができる。
【００４７】
方法７００は、７０２において、秘密暗号鍵を用いて疑似ランダムに配列された数列を生成することを含む。この数列は、セルアレイに含まれるセルのアドレス列を示している。セルアレイにおける各セルは、初期状態からプログラム状態への書き換えが可能であり、これにより、特定のイベントに関連付けられたカウンタ値を示すデータを符号化して永続的に記録することができる。例えば、数列生成器１１０は、秘密暗号鍵２０２を用いて、（疑似ランダム順に配列された）数列１６０を生成する。数列１６０は、セルアレイ１０２に含まれるセル１０６のアドレス列を示している。セルアレイ１０２における各セル１０６は、初期状態からプログラム状態への書き換えが可能であり、これにより、カウンタ値を示すデータを符号化して永続的に記録することができる。
【００４８】
方法７００は、７０４において、プログラム状態のセルのアドレスを上記アドレス列と比較して、セルアレイに対する改ざんイベントの有無を判定することをさらに含む。例えば、比較部１２０は、プログラム状態のセル１０６のアドレスを、上記アドレス列と比較して、セルアレイに対する改ざんイベントの発生の有無を判定する。
【００４９】
一実施態様によれば、方法７００は、プログラム状態のセルのアドレスが、上記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントが発生していないと判定することを含む。例えば、イベントカウンタモジュール１１４は、セルアレイ１０２が、図３に示すプログラマブル状態であるか、或いは、図４に示すプログラマブル状態であれば、改ざんイベントは発生していないと判定することができる。図３に示すプログラマブル状態は、第１カウンタ値２１０（例えば、有効カウンタ値）に対応し、図４に示すプログラマブル状態は、第２カウンタ値２２０（例えば、有効カウンタ値）に対応する。第１カウンタ値２１０は、第１の組のセル１０６Ｃ、１０６Ｔ、１０６Ｑがプログラム状態であることによって表され、第２カウンタ値２２０は、第１の組のプログラム状態セル１０６Ｃ、１０６Ｔ、１０６Ｑを含む、第２の組のセル１０６Ｃ、１０６Ｔ、１０６Ｑ、１０６Ｉ、１０６Ｘがプログラム状態であることによって表される。
【００５０】
一実施態様によれば、方法７００は、プログラム状態のセルのアドレスが、上記アドレス列が示す有効カウンタ値と対応しないと判定されると、改ざんイベントが発生したと判定することを含む。例えば、イベントカウンタモジュール１１４は、セルアレイ１０２が、図５に示すプログラマブル状態であれば、改ざんイベントが発生したと判定することができる。
【００５１】
一実施態様によれば、方法７００は、数列における第１の特定数に対応する第１の特定セルが初期状態であり、且つ、数列における第２の特定数に対応する第２の特定セルがプログラム状態であると判定されると、改ざんイベントが発生したと判定することを含む。この実施態様では、第２の特定数は、数列において第１の特定数の後に続く数である。例えば、イベントカウンタモジュール１１４は、セル１０６Ｃが初期状態であり、且つ、セル１０６Ｉがプログラム状態であると判定されると、改ざんイベントが発生したと判定することができる。例えば、セル１０６Ｉは、数列１６０において、セル１０６Ｃに対応する数（例えば１４）の後に続く数（例えば１９）に対応するので、セル１０６Ｉがセル１０６Ｃより先に書き込みされていれば、イベントカウンタモジュール１１４は、改ざんイベントが発生したと判定することができる。
【００５２】
一実施態様によれば、方法７００は、改ざんイベントが発生していないと判定されると、数列のうち、プログラム状態のセルに対応する最後の特定数を特定することを含む。この最後の特定数は、最新のカウンタ値に関連付けられている。例えば、第１カウンタ値２１０が最新のカウンタ値であれば、プログラム部１２６は、プログラム状態のセル（例えば、セル１０６Ｑ）に対応する最後の特定数（例えば、「１」）を特定する。方法７００は、次のカウンタ値のために書き込むべきセルの個数を特定することをさらに含む。例えば、プログラム部１２６は、第２カウンタ値２２０を符号化するには、さらに２つのセルに書き込みを行うと判定する。方法７００は、数列のうち、上記最後の特定数の後に続く特定数を特定することをさらに含む。これら特定数は、次のカウンタ値のために書き込むべきセルのアドレスを示す。例えば、プログラム部１２６は、数列１６０のうち、最後の特定数（例えば、「１」）の後に続く数（例えば、「１９」及び「２５」）を特定する。特定の数の個数は、書込み対象として特定されたセルの個数と等しい。方法７００は、セルアレイにおける特定セルのうちの少なくとも１つを、初期状態からプログラム状態へと書き換えることをさらに含む。例えば、プログラム部１２６は、セル１０６Ｉ、１０６Ｘを、初期状態からプログラム状態へと書き換える。
【００５３】
一実施態様によれば、方法７００は、改ざんイベントが発生していないと判定されると、数列のうち、プログラム状態のセルに対応する最後の特定数を特定することを含む。この最後の特定数は、最新のカウンタ値に関連付けられている。例えば、第１カウンタ値２１０が最新のカウンタ値であれば、プログラム部１２６は、プログラム状態のセル（例えば、セル１０６Ｑ）に対応する最後の特定数（例えば、「１」）を特定する。方法７００は、次のカウンタ値のために書き込むべきセルの個数を特定することをさらに含む。例えば、プログラム部１２６は、第２カウンタ値２２０を符号化するには、さらに２つのセルに書き込みを行うと判定する。さらに書込むべきセルの個数は、秘密暗号鍵２０２に基づく疑似ランダムな個数である。方法７００は、数列のうち、次のカウンタ値に対応する数の組を特定することをさらに含む。この数の組に含まれる最初の数は、上記最後の特定数の後に続く数である。また、この数の組は、数列において連続する数を含む。例えば、プログラム部１２６は、第２カウンタ値２２０に対応する数の組（例えば「１９」及び「２５」）を特定する。方法７００は、セルアレイにおける上記セルの組を、初期状態からプログラム状態へと書き換えることをさらに含む。上記数の組に含まれる各数は、上記セルの組のうち、対応するセルを示す。例えば、プログラム部１２６は、セル１０６Ｉ、１０６Ｘを、初期状態からプログラム状態へと書き換える。一実施態様では、上記数の組のサイズは、数列１６０に符号化されているか、或いは、第２の数列に符号化されている。この数の組のサイズは、疑似ランダムであって、１、２、３又は４のいずれかの値を取る。
【００５４】
方法７００は、７０６において、判定結果に基づいて、セルアレイを認証するか、或いは、対抗策を実行することをさらに含む。例えば、改ざんイベントが発生していないとイベントカウンタモジュール１１４が判定すれば、認証部１２２がセルアレイ１０２を認証する。これに対し、改ざんが発生したとイベントカウンタモジュール１１４が判定すれば、対抗部１２４が対抗策を実行する。一実施態様によれば、対抗策の実行には、外部メモリ６０８からのデータを削除すること、内部メモリ６０６からデータを削除すること、又は、プロセッサ６０４の１つ以上の処理へのアクセスを制限すること、のうちの少なくとも１つが含まれる。
【００５５】
方法７００によれば、セルアレイ１０２が外部リセット攻撃にさらされる可能性を少なくすることで、カウンタ値の安全性が改善される。例えば、セル１０６に対して順序通り書き込みを行ってカウンタ値を増加させるのではなく、セル１０６に対する書き込みは、秘密暗号鍵２０２に基づいて決定された疑似ランダム順に行われる。したがって、攻撃者がセルアレイ１０２をリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列１６０の疑似ランダム配列、及び、数列１６０の各数とセル１０６のアドレスとの対応関係を知る必要がある。また、安全性をさらに高めるために、各カウンタ値に関連付けられるセル１０６の個数はランダムになっている。例えば、第１カウンタ値２１０は、３つのセル１０６Ｃ、１０６Ｔ、１０６Ｑが書き込まれることで表され、第２カウンタ値２２０は、さらに２つのセル１０６Ｉ及び１０６Ｘが追加で書き込まれることで表される。したがって、攻撃者がセルアレイ１０２をリセットして、過去のカウンタ値に関連付けられたデータへのアクセスを試みるためには、疑似ランダムに配置されているプログラム状態のセル１０６の位置にだけでなく、特定のカウンタ値に対して何個のセル１０６が書き込まれるかを知る必要がある。
【００５６】
図８及び図９を参照して、本開示の実施例を、航空機の設計、製造及び使用に関して説明する。図８は、装置１００に関連付けられた方法８００を示すフローチャートである。生産開始前において、方法８００は、装置１００の仕様決定及び設計の工程を８０２に含む。方法８００は、材料調達の工程を８０４に含む。例えば、方法８００は、航空機の材料（例えば、装置の材料）を調達する工程を含む。
【００５７】
製造中には、方法８００は、航空機の部品及び小組立品（subassembly）の製造の工程を８０６に含み、航空機のシステム統合の工程を８０８に含む。方法８００は、装置１００の部品及び小組立品の製造の工程を含んでもよい。方法８００は、において、認証及び納品の工程を８１０に含み、航空機の就航の工程を８１２に含む。実施態様によっては、認証及び納品の工程は、装置１００の認証を含む。また、航空機の就航の工程は、装置１００を使用することを含んでもよい。就航の期間中、航空機は、定期的な整備及び保守のスケジュールに組み込まれる（これは、改良、再構成、改修、及び他の適当な保守を含んでもよい）。方法８００は、航空機の整備及び保守の工程の実行を８１４に含む。
【００５８】
図９は、装置１００を含む航空機９００の例示的な実施態様を示すブロック図である。少なくとも一実施態様において、航空機９００は、図８の方法８００の少なくとも一部によって製造される。図９に示すように、航空機９００は、機体９１８、複数のシステム９２０、及び、内装９２２を含む。複数のシステム９２０の例としては、駆動系９２４、電気系９２６、環境系９２８、及び、油圧系９３０のうちの１つ又は複数が挙げられる。電気系９２６は、装置１００を含む。また、航空機９００は、その他のシステムをいくつ含んでもよい。また、航空宇宙産業の例を説明したが、本開示は、他の産業に適用してもよい。例えば、装置１００は、他の有人又は無人の輸送体（例えば、自動車、衛星、船又は陸上車両）などに搭載して用いることも可能である。
【００５９】
本明細書に含まれる装置及び方法は、図８の方法８００における１つ以上のどの工程において採用してもよい。例えば、部品及び小組立品の製造の工程８０８において製造される部品及び小組立品は、限定するものではないが例えば、航空機９００の就航８１２において製造される部品及び小組立品と同様に製造してもよい。また、装置の実施態様、方法の実施態様、或いは、その組み合わせの実施態様の１つ以上を、製造工程（例えば、方法８００における工程８０２〜８１０）で用いることによって、例えば、航空機９００の組み立て速度を大幅に速めたり、コストを大幅に削減したりすることができる。同様に、装置の実施態様、方法の実施態様、或いは、その組み合わせの実施態様の１つ以上を、航空機９００の就航期間中に、限定するものではないが例えば、８１４における整備及び保守に用いてもよい。
【００６０】
さらに、本開示は以下の付記による実施形態も包含する。
【００６１】
付記１．イベント数を永続的に記録するための装置であって、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイと、前記セルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成するよう構成された数列生成器と、イベントカウンタモジュールと、を備え、前記イベントカウンタモジュールは、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定し、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うよう構成されている、装置。
【００６２】
付記２．前記イベントカウンタモジュールは、前記プログラム状態を有するセルのアドレスが、前記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントは発生していないと判定するよう構成されている、付記１に記載の装置。
【００６３】
付記３．第１有効カウンタ値は、プログラム状態にある第１の組のセルによって表され、第２有効カウンタ値は、プログラム状態にある前記第１の組のセルを含む、プログラム状態にある第２の組のセルによって表される、付記２に記載の装置。
【００６４】
付記４．前記イベントカウンタモジュールは、前記数列に含まれる第１の特定数に対応する第１の特定セルが初期状態であり、且つ、前記数列において前記第１の特定数に後続する第２の特定数に対応する第２の特定セルがプログラム状態であると判定されると、改ざんイベントが発生したと判定するよう構成されている、付記１〜３のいずれかに記載の装置。
【００６５】
付記５．前記セルアレイの各セルは、ワンタイムプログラマブル・メモリセルである、付記１〜４のいずれかに記載の装置。
【００６６】
付記６．前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、次のカウンタ値のために書き込むべきセルの個数を特定し、前記数列のうち、前記最後の特定数に後続する特定数を、前記セルの個数と同じだけ特定し、前記セルアレイのうち、前記特定数がアドレスを示している少なくとも１つの特定セルを、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、付記１〜５のいずれかに記載の装置。
【００６７】
付記７．前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、さらに、前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、次のカウンタ値のために書き込むべきセルの個数を、前記秘密暗号鍵に基づく疑似ランダムな個数として特定し、前記次のカウンタ値に対応する数の組として、前記数列において前記最後の特定数に後続する数を最初の数として連続する数の組を特定し、前記セルアレイのうち、前記数の組における各数に対応するセルの組を、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、付記１〜６のいずれかに記載の装置。
【００６８】
付記８．前記数の組のサイズは、前記数列又は第２の数列に符号化されている、付記７に記載の装置。
【００６９】
付記９．前記サイズは、１、２、３又は４のうちの疑似ランダムな値である、付記８に記載の装置。
【００７０】
付記１０．前記特定のイベントは、フライトコンピュータの電源投入、又は、前記フライトコンピュータの起動のうちの少なくとも一方に関連付けられている、付記１〜９のいずれかに記載の装置。
【００７１】
付記１１．前記特定のイベントは、自動車セキュリティシステムに関連付けられている、付記１〜１０のいずれかに記載の装置。
【００７２】
付記１２．前記セルアレイ、前記数列生成器、及び、前記イベントカウンタモジュールは、ダイに一体化されており、前記ダイは、さらに、プロセッサを備え、前記対抗策は、外部メモリからのデータ削除、内部メモリからのデータ削除、又は、前記プロセッサの１つ以上の処理へのアクセス制限のうちの少なくとも１つを含む、付記１〜１１のいずれかに記載の装置。
【００７３】
付記１３．イベント数を永続的に記録するための方法であって、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成することと、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定することと、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うことと、を含む、方法。
【００７４】
付記１４．前記プログラム状態を有するセルのアドレスが、前記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントは発生していないと判定することをさらに含む、付記１３に記載の方法。
【００７５】
付記１５．第１有効カウンタ値は、プログラム状態にある第１の組のセルによって表され、第２有効カウンタ値は、前記プログラム状態にある第１の組のセルを含む、プログラム状態にある第２の組のセルによって表される、付記１４に記載の方法。
【００７６】
付記１６．前記セルアレイの各セルは、ワンタイムプログラマブル・メモリセルである、付記１３〜１５のいずれかに記載の方法。
【００７７】
付記１７．改ざんイベントが発生していないと判定されると、前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定することと、次のカウンタ値のために書き込むべきセルの個数を特定することと、前記数列のうち、前記最後の特定数に後続する特定数を、前記セルの個数と同じだけ特定することと、前記セルアレイのうち、前記特定数がアドレスを示している少なくとも１つの特定セルを、前記初期状態から前記プログラム状態へ書き換えることと、をさらに含む、付記１３〜１６のいずれかに記載の方法。
【００７８】
付記１８．前記特定のイベントは、フライトコンピュータの電源投入、又は、前記フライトコンピュータの起動のうちの少なくとも一方に関連付けられている、付記１３〜１７のいずれかに記載の方法。
【００７９】
付記１９．前記対抗策を実行することは、外部メモリからデータを削除すること、内部メモリからデータを削除すること、又は、前記プロセッサの１つ以上の処理へのアクセスを制限すること、のうちの少なくとも１つを含む、付記１３〜１８のいずれかに記載の方法。
【００８０】
付記２０．イベント数を永続的に記録するための装置であって、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイと、前記セルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成するための手段と、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定するための手段と、前記判定に基づいて、前記セルアレイを認証するための手段と、前記判定に基づいて、対抗策を実行するための手段と、を備える装置。
【００８１】
本明細書に記載した実施例の説明は、様々な実施態様の構成について包括的な理解を促すためのものである。記載した説明は、本明細書の構成又は方法を用いる装置及びシステムの要素及び特徴を、すべて完全に説明することを意図したものではない。本開示に基づけば、他にも様々な実施態様が当業者には明らかであろう。本開示から他の実施態様の利用や導出が可能であり、本開示の範囲から逸脱することなく、構造的及び論理的な置き換え及び変更が可能である。例えば、方法の実行に際し、図示とは異なる順序で工程を実行することも可能であり、また、方法における１つ以上の工程を省略することも可能である。したがって、本開示及び添付図面は、限定としてではなく、例示として理解されるべきものである。
【００８２】
さらに、本明細書において特定の実施例を記載したが、同一又は類似の結果を得るよう後から設計された構成によって本開示の特定の実施態様を置き換え可能であることは理解されよう。本開示は、様々な実施態様について後に実施されるあらゆる改変あるいは変形を包含することを意図している。当業者が本開示の記載を検討すれば、上述の実施態様を組み合わせ、及び、本明細書では具体的に記載しなかったその他の実施態様も明らかであろう。
【００８３】
要約書の提出は、請求の範囲の解釈や限定には用いられないとの理解を前提とする。加えて、上述の詳細な説明において、様々な特徴をひとまとめにしたり、単一の実施態様において説明したりしているが、これは、あくまでも開示を合理的に記載するためである。上述の実施例は、本開示を説明するものであって、限定するものではない。本開示の原理に基づけば、多くの変形及び改変が可能であることは理解されよう。以下の請求の範囲が示すように、請求の範囲に記載の要旨は、開示した実施例のすべての特徴のうちの一部のみに関連する場合もある。つまり、本開示の範囲は、下記の請求の範囲及びその均等範囲によって定義されるものである。
【図１】
2020144851.tif 000003
【図２】
2020144851.tif 000004
【図３】
2020144851.tif 000005
【図４】
2020144851.tif 000006
【図５】
2020144851.tif 000007
【図６】
2020144851.tif 000008
【図７】
2020144851.tif 000009
【図８】
2020144851.tif 000010
【図９】
2020144851.tif 000011
【外国語明細書】
2020144851000001.pdf
2020144851000002.pdf
2020144851000003.pdf
2020144851000004.pdf