(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-27
(45)【発行日】2023-12-05
(54)【発明の名称】改ざん防止カウンタ
(51)【国際特許分類】
G06F 21/64 20130101AFI20231128BHJP
H04L 9/10 20060101ALI20231128BHJP
【FI】
G06F21/64
H04L9/10 Z
【外国語出願】
(21)【出願番号】P 2020012601
(22)【出願日】2020-01-29
【審査請求日】2022-10-06
(32)【優先日】2019-01-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】100135389
【氏名又は名称】臼井 尚
(74)【代理人】
【識別番号】100086380
【氏名又は名称】吉田 稔
(74)【代理人】
【識別番号】100103078
【氏名又は名称】田中 達也
(74)【代理人】
【識別番号】100130650
【氏名又は名称】鈴木 泰光
(74)【代理人】
【識別番号】100168099
【氏名又は名称】鈴木 伸太郎
(74)【代理人】
【識別番号】100168044
【氏名又は名称】小淵 景太
(74)【代理人】
【識別番号】100200609
【氏名又は名称】齊藤 智和
(72)【発明者】
【氏名】ラズロ ハーズ
【審査官】岸野 徹
(56)【参考文献】
【文献】特表2013-514573(JP,A)
【文献】米国特許出願公開第2012/0317344(US,A1)
【文献】国際公開第2017/196461(WO,A1)
【文献】特開2017-004293(JP,A)
【文献】特開2014-174997(JP,A)
【文献】米国特許出願公開第2014/0254234(US,A1)
【文献】国際公開第2017/194335(WO,A1)
【文献】中国特許出願公開第109074446(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
イベント数を永続的に記録するための装置であって、
初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイと、
前記セルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成するよう構成された数列生成器と、
イベントカウンタモジュールと、を備え、前記イベントカウンタモジュールは、
プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定し、
前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うよう構成されている、装置。
【請求項2】
前記イベントカウンタモジュールは、前記プログラム状態を有するセルのアドレスが、前記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントは発生していないと判定するよう構成されている、請求項1に記載の装置。
【請求項3】
第1有効カウンタ値は、プログラム状態にある第1の組のセルによって表され、
第2有効カウンタ値は、プログラム状態にある前記第1の組のセルを含む、プログラム状態にある第2の組のセルによって表される、請求項2に記載の装置。
【請求項4】
前記イベントカウンタモジュールは、
前記数列に含まれる第1の特定数に対応する第1の特定セルが初期状態であり、且つ、
前記数列において前記第1の特定数に後続する第2の特定数に対応する第2の特定セルがプログラム状態であると判定されると、改ざんイベントが発生したと判定するよう構成されている、請求項1~3のいずれかに記載の装置。
【請求項5】
前記セルアレイの各セルは、ワンタイムプログラマブル・メモリセルである、請求項1~4のいずれかに記載の装置。
【請求項6】
前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、
前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、
次のカウンタ値のために書き込むべきセルの個数を特定し、
前記数列のうち、前記最後の特定数に後続する特定数を、前記セルの個数と同じだけ特定し、
前記セルアレイのうち、前記特定数がアドレスを示している少なくとも1つの特定セルを、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、請求項1~5のいずれかに記載の装置。
【請求項7】
前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、さらに、
前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、
次のカウンタ値のために書き込むべきセルの個数を、前記秘密暗号鍵に基づく疑似ランダムな個数として特定し、
前記次のカウンタ値に対応する数の組として、前記数列において前記最後の特定数に後続する数を最初の数として連続する数の組を特定し、
前記セルアレイのうち、前記数の組における各数に対応するセルの組を、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、請求項1~6のいずれかに記載の装置。
【請求項8】
前記数の組のサイズは、前記数列又は第2の数列に符号化されている、請求項7に記載の装置。
【請求項9】
前記サイズは、1、2、3又は4のうちの疑似ランダムな値である、請求項8に記載の装置。
【請求項10】
前記特定のイベントは、フライトコンピュータの電源投入、又は、前記フライトコンピュータの起動のうちの少なくとも一方に関連付けられている、請求項1~9のいずれかに記載の装置。
【請求項11】
前記特定のイベントは、自動車セキュリティシステムに関連付けられている、請求項1~9のいずれかに記載の装置。
【請求項12】
前記セルアレイ、前記数列生成器、及び、前記イベントカウンタモジュールは、ダイに一体化されており、前記ダイは、さらに、プロセッサを備え、
前記対抗策は、外部メモリからのデータ削除、内部メモリからのデータ削除、又は、前記プロセッサの1つ以上の処理へのアクセス制限のうちの少なくとも1つを含む、請求項1~11のいずれかに記載の装置。
【請求項13】
イベント数を永続的に記録するための方法であって、当該方法は、請求項1~12のいずれかに記載の装置を実装するものであり、さらに、
初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成することと、
プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定することと、
前記判定に基づいて、
前記セルアレイの認証、又は、
対抗策の実行のいずれかを行うことと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ワンタイムプログラマブル・メモリセルカウンタ(one-time programmable memory cell counter)に関する。
【背景技術】
【0002】
セキュリティデバイスにおいては、特定のイベントをカウントし、そのカウンタ値を、電源オンオフのサイクルが複数回行われた場合でも保持しておく必要がある。例えば、フライト関連のアプリケーションでは、フライトコンピュータの電源が投入された回数がカウントされ、そのカウンタ値は、複数サイクルにわたって保持される。機密性の高い情報やデータは、カウンタ値に基づいて暗号化され、フライトコンピュータにおいて記憶装置に保存される。ただし、記憶装置(例えば、ディスクドライブ)は、攻撃者からアクセスされる可能性がある。長時間におよぶ電源遮断や予期せぬ電源遮断があった場合でもカウンタ値を保存しておくために、セキュリティデバイスは、ワンタイムプログラマブル・メモリセルを用いたカウンタを実装することができる。メモリセルは、セキュリティデバイスに一体的に組み込まれるので、不正に交換されることはない。例えば、セキュリティデバイスは、フライトコンピュータの電源が投入される毎に、特定のワンタイムプログラマブル・メモリセルの状態を初期状態からプログラム状態(programmed state)に変更して、通電サイクルに関するカウンタ値を増加させる。ただし、物理的な攻撃を受けると、標的にされたワンタイムプログラマブル・メモリセルがリセットされたり、破壊されたりする可能性がある。この結果、攻撃者が過去のカウンタ値を再現して、フライトコンピュータにおいて当該カウンタ値に関連付けられているデータにアクセス(或いは、再生)できてしまう可能性がある。
【発明の概要】
【0003】
本開示の一実施態様によれば、イベント数を永続的に記録するための装置は、セルアレイを備える。前記セルアレイの各セルは、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成されている。前記プログラム状態は、通常の処理によって初期状態に戻すことは不可能である(よって、これらのセルは、ワンタイムプログラマブル・セル、又は、OTPセルと呼ばれる)。前記装置は、さらに、秘密暗号鍵を用いて、疑似ランダムな数列を生成するよう構成された数列生成器を備える。前記数列は、前記セルアレイにおけるセルのアドレス列を示す。前記装置は、さらに、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定するよう構成されたイベントカウンタモジュールを備える。前記イベントカウンタモジュールは、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うようにも構成されている。
【0004】
本開示の別の実施態様によれば、イベント数を永続的に記録するための方法は、秘密暗号鍵を用いて、疑似ランダムな数列を生成することを含む。前記数列は、セルアレイにおけるセルのアドレス列を示す。前記セルアレイの各セルは、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化する。前記方法は、さらに、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定することを含む。前記方法は、さらに、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うことを含む。
【0005】
本開示の別の実施態様によれば、イベント数を永続的に記録するための装置は、セルアレイを備える。前記セルアレイの各セルは、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成されている。前記装置は、さらに、秘密暗号鍵を用いて、疑似ランダムな数列を生成するための手段を備える。前記数列は、前記セルアレイにおけるセルのアドレス列を示す。前記装置は、さらに、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定するための手段を備える。前記装置は、さらに、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うための手段を備える。
【0006】
上述の実施態様における一つの利点は、ワンタイムプログラマブル・メモリセルを用いてイベントをカウントするカウンタを備える装置において、セルアレイ(例えば、ワンタイムプログラマブル・メモリセル)をリセットする攻撃が実行されてしまう可能性を低減することにより得られる高い安全性にある。例えば、セルに対して順序通り書き込みを行ってカウンタ値を増加させるのではなく、セルに対する書き込みは、秘密暗号鍵に基づいて決定された疑似ランダム順に行われる。したがって、攻撃者がセルアレイをリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列の疑似ランダム配列を知る必要があり、加えて、数列の各数とセルのアドレスとの対応関係を知る必要がある。さらに、安全性をより一層確保するために、いくつかの実施態様では、各カウンタ値は、疑似ランダムな個数のセルに対応付けられており、この個数も、秘密暗号鍵によって決定される。また、前記装置は、秘密暗号鍵を用いて第2の数列を生成するよう構成された第2数列生成器を備える。前記第2の数列に含まれる数は、セルアレイにおいて、先のカウンタ値の次のカウンタ値を示すためにまとめて書き込まれるべきセルの個数を示す。加えて、記載した特徴、機能、利点は、様々な実施態様において個別に達成することもできるし、さらに別の実施態様と組み合わせることで達成することもできる。その更なる詳細については、下記の説明及び添付図面を参照して記載される。
【図面の簡単な説明】
【0007】
【
図1】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な装置の図である。
【
図2】秘密暗号鍵に基づいて、疑似ランダムな数列を生成するよう動作可能な数列生成器の図である。
【
図3】第1有効カウンタ値を表すプログラマブル状態のセルアレイの図である。
【
図4】第2有効カウンタ値を表すプログラマブル状態のセルアレイの図である。
【
図5】無効なカウンタ値を表すプログラマブル状態のセルアレイの図である。
【
図6】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な別の装置の図である。
【
図7】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録する方法のフローチャートである。
【
図8】ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な装置の開発及び整備に関する方法のフローチャートである。
【
図9】
図1の装置を含む航空機のブロック図である。
【発明を実施するための形態】
【0008】
以下に、添付図面を参照して、本開示の特定の実施形態を説明する。この説明において、共通する特徴は、図面全体にわたって共通の参照符号で示している。
【0009】
添付の図面及び下記の説明は、特定の例示的な実施形態を示す。なお、当業者であれば、本明細書には明確に記載又は図示されていない変形であっても、本明細書に記載の原理を具現化するとともに、下記の説明に続く特許請求の範囲に包含される様々な変形を考案可能であろう。また、本明細書に記載の実施例は、いずれも本開示の原理の理解を助けることを意図しており、限定として解釈されるべきではない。つまり、本開示は、以下に記載する特定の実施形態又は実施例によって限定されず、請求の範囲及びその均等範囲によって限定されるものである。
【0010】
本明細書において、添付図面を参照して特定の実施態様を説明する。説明において、共通する特徴は、図面全体にわたって共通の参照符号で示されている。いくつかの図面では、特定の種類の特徴が複数含まれている。このような特徴は、物理的及び/又は論理的には別個のものであるが、同じ参照符号で示されている。個々の特徴を区別する場合は、参照符号の数字に文字を追加している。これらの特徴を、全体として1つの集合や1つの種類として示す場合(例えば、それらの特徴のうちの特定の1つに言及するのではない場合)は、参照符号の数字に識別文字を付けずに用いている。ただし、同一種類の複数の特徴のうちの特定の1つに言及する場合は、参照符号の数字に識別文字を付けて用いている。例えば、
図1には、複数のセルが示されており、106A、106B、106Cなどの参照符号が付されている。これらのセルのうちの特定の1つに言及する場合は、例えば、セル106Aのように、識別文字である「A」を付した符号を用いている。これに対し、これらのセルのうちの任意の1つに言及する場合、或いは、これらのセル全体を1つの集合として言及する場合は、識別文字を付けない参照符号106を用いている。
【0011】
本明細書における様々な用語は、特定の実施態様を説明する目的で使用しているにすぎず、限定を意図するものではない。例えば、単数形での記載は、特段の記載がない限り、複数も包含することを意図している。さらに、「備える(comprise)」等の用語は、それぞれ、「含む(include)」等と意味を同じくする用語として用いられている。加えて、「において(wherein)」との用語は、「であって(where)」と意味を同じくする用語として用いられている。本明細書において、「例示的な(exemplary)」は、一実施例、一実施態様、及び/又は、一側面であることを意味するものであり、限定として、或いは、好ましい態様として解釈されるべきではない。本明細書において、構造、部品、処理などの要素を修飾する序数(例えば「第1」、「第2」、「第3」など)は、それ自体で、他の要素に対する当該要素の優先順位や順序を示すものではなく、単に、(序数を除いては)名称が同じである他の要素と区別するために用いられている。本明細書において、「組」との用語は、1つ又は複数の要素の集合を指し、また、「複数の」との用語は、複数の要素を指す。
【0012】
本明細書における「生成する」、「算出する」、「用いる」、「選択する」、「アクセスする」、及び、「特定する」との表現は、特段の記載がない限り、意味を同じくする表現として用いられている。例えば、あるパラメータ(又は信号)を、「生成する」、「算出する」、又は、「特定する」ことは、当該パラメータ(又は信号)を能動的に生成、算出、或いは、特定することを指す場合もあり、或いは、他の部品又は装置によって既に生成済みのパラメータ(又は信号)を用い、選択し、又は、アクセスすることを指す場合もある。また、本明細書における「接続された」との表現は、「通信可能に接続された」、「電気的に接続された」、或いは、「物理的に接続された」状態を含み、これに加えて(或いは、これに変えて)、それらの状態の組み合わせを含む場合もある。2つの装置(又は部品)は、直接的に接続されても、或いは、1つ以上の他の装置、部品、ワイヤ、バス、ネットワーク(例えば、有線ネットワーク、無線ネットワーク、又は、その組み合わせ)などを介して間接的に接続(例えば、通信可能に接続、電気的に接続、或いは、物理的な接続など)されてもよい。電気的に接続された2つの装置(又は部品)は、同一の装置に含まれてもよいし、或いは、別々の装置に含まれてもよい。また、限定するものではないが例示的な実施例に示すように、電子部品を介して、或いは、誘導結合を介して接続されてもよい。いくつかの実施態様では、電気通信などによって通信可能に接続された2つの装置(又は部品)は、電気信号(デジタル信号又はアナログ信号)を直接送受信したり、或いは、1つ以上のワイヤ、バス、ネットワークなどを介して間接的に送受信したりすることができる。本明細書において、「直接接続されている」という表現は、2つの装置が、間に他の部品を介することなく、(例えば、通信可能な接続、電気的な接続、或いは、物理的な接続などにより)接続された状態を表す。
【0013】
本明細書に記載の技術によれば、ワンタイムプログラマブル・メモリセルを用いてイベントをカウントするカウンタを備える装置において、セルアレイ(例えば、ワンタイムプログラマブル・メモリセル)を外部からリセットする攻撃が実行されてしまう可能性を低減することで、安全性を高めることができる。例えば、セキュリティデバイスは、秘密暗号鍵を用いて疑似乱数列を生成する。この疑似乱数列に含まれる各数は、イベントに関連付けられたカウンタ値を示すために利用可能なワンタイムプログラマブル・メモリセルのアドレスに対応する。イベント(例えば、電源投入イベント)が発生すると、セキュリティデバイスは、ワンタイムプログラマブル・メモリセルに対して順序通り(in sequential order)書き込みを行うのではなく、疑似乱数列に従った順で書き込みを行う。この結果、該当イベントが発生する度に行われるカウンタ値の増加に際し、ワンタイムプログラマブル・メモリセルに関連付けられたビット(例えば、セル)のうち、観察者にとってはランダムに見えるビットが、論理値ゼロを示す初期状態から、論理値1を示すプログラム状態に書き換えられ、或いは、その逆に書き換えられることになる。したがって、ワンタイムプログラマブル・メモリセルのビットパターンは、カウンタ値が増える度に、(順序通り変更されるのではなく、)一見ランダムに、つまり、疑似ランダムな順で変更される。時には、攻撃者が高性能機器を用いており、ワンタイムプログラマブル・セルのいくつかのリセットに成功する可能性はある。しかしながら、セキュリティデバイスは、無効なビットパターンを検出することにより、外部からセルをリセットする攻撃があったことを検知できる。外部からセルをリセットする攻撃を検知すれば、セキュリティデバイスは、例えば、電源投入手順(例えば、起動手順)の中止、ユーザへの警告の送出、機密情報の消去などのダメージコントロールを実行することができる。該当するイベントが発生する度に、疑似ランダムなビットに書き込みを行ってカウンタ値を増やすので、攻撃者は、どのビットパターンが有効であるか判別することができない。この結果、ワンタイムプログラマブル・メモリセルをいくつかリセットして過去のカウンタ値の再生を試みたとしても、そのビットパターンは無効である可能性が高い。また、攻撃者が過去のカウンタ値を傍受したとしても、これに対応してプログラム状態になっているセルは、セル全体に分散されており、そのようなパターンのセルをリセットすることは、非常に困難である。例えば、現在のASIC製造技術によれば、1つのセルのサイズは約10nmであるが、セルを破壊するレーザ波の波長は、これとは桁違いに大きい。
【0014】
図1は、ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な装置100の図である。例えば、特定のイベントが発生する度に、装置100は、1つ以上のワンタイムプログラマブル・メモリセルの状態を変更することで、カウンタ値を更新して、特定のイベントが発生したことを示す。一実施態様では、特定のイベントは、フライトコンピュータの電源投入、又は、フライトコンピュータの起動の少なくとも一方に関連付けられている。例えば、装置100は、航空機のフライトコンピュータと一体的に設けることができ、航空機のフライトコンピュータに電源が投入された回数をカウントすることができる。別の実施態様によれば、特定のイベントは、自動車用のセキュリティシステムに関連付けられている。例えば、装置100は、自動車用のセキュリティシステムと一体的に設けることができ、イベント(例えば、自動車の電源投入イベント)の発生回数をカウントすることができる。
【0015】
装置100は、セルアレイ102、数列生成器110、セル状態判定モジュール112、及び、イベントカウンタモジュール114を含む。一実施態様によれば、セルアレイ102、数列生成器110、セル状態判定モジュール112、及び、イベントカウンタモジュール114は、ダイ(die)に一体化されている。セル状態判定モジュール112は、ハードウェア、ソフトウェア、ファームウェア、プロセッサで実行される命令などを用いて実装することができる。同様に、イベントカウンタモジュール114は、ハードウェア、ソフトウェア、ファームウェア、プロセッサで実行される命令などを用いて実装可能である。一実施態様では、セル状態判定モジュール112は、イベントカウンタモジュール114に一体化されている。
【0016】
セルアレイ102は、複数のセクション104(例えば、サブアレイ(sub-array))を含む。
図1に示すように、セルアレイは、セクション104A、セクション104B、セクション104C、セクション104D、セクション104E、セクション104F、セクション104G、セクション104H、セクション104I、セクション104J、セクション104K、及び、セクション104Lを含む。なお、
図1では、12個のセクション104が示されているが、他の実施態様では、セルアレイ102がこれより多くの(又は、少ない)数のセクションを含む構成でもよい。一実施例では、限定するものではないが、セルアレイ102は、48個のセクションを含むことができる。別の実施例では、限定するものではないが、セルアレイ102は、2個のセクション、又は、1個のセクションを含むことができる。
【0017】
セルアレイ102の各セクション104は、複数のセル106を含む。例えば、
図1では、セクション104Aは、セル106A、セル106B、セル106C、セル106D、セル106E、セル106F、セル106G、及び、セル106Hを含む。セクション104Cは、セル106I、セル106J、セル106K、セル106L、セル106M、セル106N、セル106O、及び、セル106Pを含む。セクション104Jは、セル106Q、セル106R、セル106S、セル106T、セル106U、セル106V、セル106W、及び、セル106Xを含む。なお、説明の便宜上、
図1では、3つのセクション104A、104C、104Jに含まれるセル106が示されているが、残りのセクション104も、セクション104A、104C、104Jと同様の構成を有する。
【0018】
セルアレイ102における各セルは、それぞれ固有のアドレス(例えば、固有のメモリアドレス)を有する。後述するように、各アドレスは、数列生成器110により生成される数列160に含まれる数の特定の1つにマッピングされている。各セル106は、初期状態からプログラム状態への書き替えが可能なプログラマブル素子108を含む。例えば、各セル106は、トランジスタ(例えば、プログラマブル素子108)と組み合わせて実装可能なヒューズ素子又はアンチヒューズ素子を含むワンタイムプログラマブル・メモリセルでもよい。特定のセル106のプログラマブル素子108が初期状態であれば、当該特定のセル106のビット読み出し(bit reading)値は、「1」である。一実施例では、特定のセル106のプログラマブル素子108が書き込まれてプログラム状態になっていれば、当該特定のセル106のビット読み出し値は、「0」である。
【0019】
数列生成器110は、秘密暗号鍵を用いて数列160を生成するよう構成されている。例えば、
図2を参照すると、秘密暗号鍵202は、数列生成器110に供給されて、疑似ランダム順に配列された数列160が生成される。例えば、数列生成器110は、線形帰還シフトレジスタ(LFSR)、非線形帰還シフトレジスタ(NLFSR)、もう一つの疑似乱数生成器(PRNG)、又は、その組み合わせを含む。
図2に示す例示的な実施例では、数列160は、「14、8、1、19、25、13、83、51、673、1003、12、85、43、1215、1138・・・245」である。説明の便宜上、数列160に含まれる各数を10進数にしたが、数列160は、2進数、16進数などを含んでもよい。
【0020】
秘密暗号鍵202は、特定用途向け集積回路(ASIC)毎に比較的高い確率で固有であり、よって、予測不可能である。秘密暗号鍵202は、物理回路パラメータによって生成可能である。一実施態様によれば、秘密暗号鍵202は、対応するASICのシリアルナンバーなどの機器固有情報を含む。したがって、数列160は、装置(例えば、チップ)毎に異なるものになるが、装置100などの一つの装置においては、数列160は、評価(又は、生成)の度に同じものになる。一実施態様では、フィッシャー-イェーツのシャッフル技術を利用して疑似乱数列160を生成してもよい。
【0021】
数列160は、N個のセルがある場合、通常、0、1、2、・・・、N-1などの連続数であるセル106のインデックスを並べ替えたものである。例えば、数列160は、セルアレイ102におけるセル106のアドレスの列を示すものである。例を挙げて説明すると、セル106Cのアドレスは、数列160の中の「14」という数に対応し、セル106Tのアドレスは、数列160の中の「8」という数に対応し、セル106Qのアドレスは、数列160の中の「1」という数に対応するなどである。数列160に含まれる各ビット(例えば、数)は、それぞれ一度のみ使用される。後述するように、数列160のうちのいくつかのビット(例えば、数)は、カウンタをインクリメントする際に書き込むべきセル106の個数(ik)を特定するために利用される。例えば、個数(ik)は、いくつかの実施態様では、1、2、3又は4に等しい。
【0022】
特定のイベントについての第1カウンタ値210は、セル106C、106T、106Qがプログラム状態であることによって示される。特定のイベントについての第2カウンタ値220は、第1カウンタ値210に関連付けられたセル106C、106T、106Qに加えて、セル106I、106Xがプログラム状態であり、残りのセル106が初期状態であることによって示される。特定のイベントについての第3カウンタ値230は、第2カウンタ値220に関連付けられたセル106C、106T、106Q、106I、106Xに加えて、セル106A、106Lがプログラム状態であり、残りのセル106が初期状態であることによって示される。一実施態様によれば、各カウンタ値に対応するセル106の個数は、例えば、数列160中に符号化されている(encoded)秘密暗号鍵202に基づく(例えば、数列160の部分数列が、各カウンタ値に対応するセルの個数を示す)。
【0023】
再び
図1を参照すると、セル状態判定モジュール112は、プログラム状態を有するセル106のアドレス162を特定するよう構成されている。例えば、セル状態判定モジュール112は、セルアレイ102の各セル106のビット値の読み出し処理を開始することができる。特定のセル106のビット値が(例えば、比較的高抵抗の状態を示す)「0」である場合、セル状態判定モジュール112は、当該特定のセル106は、初期状態であると判定する。これに対し、特定のセル106のビット値が(例えば、比較的低抵抗の状態を示す)「1」である場合、セル状態判定モジュール112は、当該特定のセル106は、プログラム状態であると判定する。
【0024】
イベントカウンタモジュール114は、比較部120、認証部122、対抗部124、及び、プログラム部126を含む。比較部120は、プログラム状態を有するセル106のアドレス162を、アドレス列(例えば、数列160)と比較して、前記セルアレイ102に対する改ざんイベントの発生の有無を判定する。例えば、
図2に示すように、各カウンタ値210、220、230は、特定の組のセル106がプログラム状態であることによって表されている。より小さいカウンタ値に対応するプログラム状態のセル106の組は、より大きいカウンタ値に対応するプログラム状態のセル106の組の部分集合である。例えば、第1カウンタ値210に対応する第1の組を構成するプログラム状態のセル106C、106T、106Qは、第2カウンタ値220に対応する第2の組を構成するプログラム状態のセル106C、106T、106Q、106I、106Xの部分集合である。イベントカウンタモジュール114は、現在観察対象になっているセル106の組(例えば、プログラム状態のセル106のアドレス162)が有効なカウンタ値と対応するか確認することで、改ざんイベントの発生の有無を判定することができる。プログラム状態を有するセル106のアドレス162が有効なカウンタ値に対応する場合は、イベントカウンタモジュール114は、改ざんイベントは発生していないと判定する。有効カウンタ値については、
図3~
図4に示して説明する。プログラム状態のセルのアドレス162が有効なカウンタ値に対応しない場合は、イベントカウンタモジュール114は、改ざんイベントが発生したと判定する。無効カウンタ値については、
図5に示して説明する。
【0025】
一実施態様によれば、イベントカウンタモジュール114は、数列160のうちの第1の特定数に対応する第1の特定セル106が初期状態であり、数列160のうちの第2の特定数に対応する第2の特定セル106がプログラム状態であると判定されると、改ざんイベントが発生したと判定する。この実施態様では、第2の特定数は、数列160において、第1の特定数の後に続く数である。例を挙げて説明すると、イベントカウンタモジュール114は、セル106Cが初期状態であり、且つ、セル106Iがプログラム状態であると判定されると、改ざんイベントが発生したと判定する。例えば、セル106Iは、数列160において、セル106Cに対応する数(例えば14)の後に続く数(例えば19)に対応するので、セル106Iがセル106Cより先に書き込みされていることから、イベントカウンタモジュール114は、改ざんイベントが発生したと判定することができる。
【0026】
改ざんイベントが発生したと判定されると、対抗部124は、1つ以上の対抗策を実行可能である。例えば、対抗部124は、
図6を参照して説明する外部メモリ608などの外部メモリから、データを消去することができる。別の例では、限定するものではないが、対抗部124は、改ざんイベントが発生したと判定されると、
図6を参照して説明する内部メモリ606などの内部メモリからデータを消去することができる。さらに別の例では、限定するものではないが、対抗部124は、改ざんイベントが発生したと判定されると、
図6を参照して説明するプロセッサ604などのプロセッサにおける1つ以上の処理へのアクセスを制限することができる。
【0027】
認証部122は、改ざんイベントが発生していないと判定されると、セルアレイ102を認証するよう構成されている。例えば、認証部122は、装置100に対する改ざんやセキュリティー攻撃が検知されていないことを示す信号を生成する。プログラム部126は、この信号に基づいて、特定のイベント(例えば、電源投入)が検知されると、セルアレイ102のうち、次のカウンタ値に対応する次の組のセル106に書き込みを行うよう構成されている。
【0028】
例えば、プログラム部126は、特定のイベントが検知されると、改ざんイベントが発生していないとの判定の後、数列160のうち、プログラム状態のセル106に対応する最後の特定数を特定するよう構成されている。例を挙げて説明すると、第1カウンタ値210が最新のカウンタ値であれば、数列160のうち、プログラム状態のセル106に対応する最後の特定数は「1」である。プログラム部126は、次のカウンタ値の書き込み対象になるセル106の個数を特定するようにも構成されている。例えば、プログラム部126は、第2カウンタ値220(次のカウンタ値)のために書き込むべきセル106の個数が2であると特定する。次のカウンタ値のために書き込むべきセル106の個数は、疑似ランダムであって、数列160中に符号化されていてもよい。一実施態様では、次のカウンタ値のために書き込むべきセル106の個数は、1から4の間である。
【0029】
プログラム部126は、さらに、数列160のうち、第2カウンタ値220(例えば、次のカウンタ値)に対応する数の組を特定するよう構成されている。この数の組は、次のカウンタ値のために書き込むべきセル106の個数と等しいサイズを有する。例えば、この実施例では、第2カウンタ値220に対応する数の組のサイズは2である。次のカウンタ値のために書き込むべきセル106の個数と同様に、数の組のサイズは、疑似ランダムであり、通常は、1から4の間であるが、それより多い数も可能である。数の組のサイズは、数列160中に符号化してもよいし、第2の数列(図示せず)に格納(符号化)してもよい。この実施例では、プログラム部126は、第2カウンタ値220に対応する数の組として「19」と「25」を特定する。この数の組における最初の数(例えば,「19」)は、プログラム状態のセル106に対応する最後の特定数(例えば、「1」)の後に続く数である。
【0030】
プログラム部126は、さらに、セルアレイ102のうち、(特定した数の組に対応する)セル106の組を初期状態からプログラム状態へと書き換えるよう構成されている。例えば、プログラム部126は、セル106I、106Xのプログラマブル素子108に書込み電圧を印加して、プログラム状態にする。この結果、いくつかの実施態様では、セル106I、106Xの電圧レベルが下がり、セル106I、106Xのビット値が0になる。
【0031】
図1~
図2を参照して説明したこの技術によれば、外部からセルアレイ102をリセットする攻撃が成功してしまう可能性を低減して、カウンタの安全性を高めることができる。例えば、カウンタ値を増加させる際に、セル106に対する書き込みを順序通り行うのではなく、セル106に対する書き込みは、秘密暗号鍵202に基づいて決定される疑似ランダム順に行われる。したがって、攻撃者がセルアレイ102をリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列160の疑似ランダム順と、数列160の各数とセル106のアドレスとの対応関係を知る必要がある。より一層の安全性を確保するために、各カウンタ値に関連付けられるセル106の個数はランダムになっている。例えば、第1カウンタ値210は、3つのセル106C、106T、106Qが書き込まれることで表され、第2カウンタ値220は、さらに2つのセル106I及び106Xが追加で書き込まれることで表される。したがって、攻撃者がセルアレイ102をリセットして、過去のカウンタ値に関連付けられたデータへのアクセスを試みるためには、疑似ランダムに配置されているプログラム状態のセル106の位置だけてなく、特定のカウンタ値に対して何個のセル106が書き込まれるかを知る必要がある。
【0032】
このように、
図1~
図2を参照して説明した技術によれば、ワンタイムプログラマブル・メモリセルをリセットする従来の攻撃や手法を防ぐことができる。例えば、セル106が順序通り書き込まれる場合には、攻撃者は、セルアレイ102にレーザパルスを照射することでセル106の集合を破壊して、カウンタ値を実質的にリセットすることが可能である。しかしながら、レーザ照射によってダイが加熱されると、近隣のセル106も多数破壊される(例えば、異なるセクション104が一度に破壊される)ので、このような攻撃を受けた場合のビットパターンは、無効カウンタ値を示す可能性が高い。例を挙げて説明すると、セル106Bを初期状態に戻す目的でセル106Bにレーザが照射されたとすると、セクション104Aにおけるプログラム状態のセル106A~106Hも、レーザの熱によって初期状態に戻る可能性が高い。この結果、プログラム状態を有するセル106は、どの有効カウンタ値にも対応しないことになるので、イベントカウンタモジュール114は、改ざんイベント(例えば、レーザ照射)の発生を示すことができ、対抗部124は、対抗策を実行することができる。
【0033】
図3は、プログラマブル状態が第1有効カウンタ値を表しているセルアレイ102を示す図である。例えば、
図3では、セル106C、106T、106Qがプログラム状態であり、残りのセル106は初期状態である。
図3に示すセルアレイ102のプログラマブル状態は、疑似乱数列160及び対応するセルアドレスに基づいて、第1カウンタ値210を表している。例えば、プログラム状態を有するセル106がセル106C、106T、106Qだけであれば、イベントカウンタモジュール114は、第1カウンタ値210が最新のカウンタ値であると判定するとともに、また、セルアレイ102に対する改ざんイベントは発生していないと判定する。
【0034】
認証部122は、改ざんイベントが発生していないと判定されると、セルアレイ102を認証するよう構成されている。例えば、認証部122は、装置100に対する改ざんやセキュリティー攻撃が検知されていないことを示す信号を生成する。プログラム部126は、この信号に基づいて、特定のイベント(例えば、電源投入)が検知されると、
図4について説明するように、セルアレイ102のうち、次のカウンタ値に対応する次の組のセル106に書き込みを行うよう構成されている。
【0035】
図4は、第2有効カウンタ値を表す、プログラマブル状態にあるセルアレイ102を示す図である。例えば、
図4では、セル106C、106T、106Q、106I、106Xがプログラム状態であり、残りのセル106は初期状態である。
図4に示すセルアレイ102のプログラマブル状態は、疑似乱数列160及び対応するセルアドレスに基づいて、第2カウンタ値220を示している。
【0036】
プログラム部126は、第2カウンタ値220を表すようにセルアレイ102に書き込みを行うために、数列160のうちプログラム状態のセル106に対応する最後の特定数を特定する。例えば、プログラム部126は、第1カウンタ値210に対応するプログラム状態のセル106(例えば、セル106Q)に対応する最後の特定数が「1」であると特定する。プログラム部126は、さらに、第2カウンタ値220(次のカウンタ値)のために書き込むべきセル106の個数も特定する。例えば、プログラム部126は、第2カウンタ値220のために新たに書き込むべきセル106の個数が2であることを、秘密暗号鍵202に基づいて特定する。
【0037】
プログラム部126は、第2カウンタ値220に対応する数の組を数列160から特定する。この数の組は、次のカウンタ値のために書き込むべきセル106の個数と等しいサイズを有する。例えば、この実施例では、第2カウンタ値220に対応する数の組のサイズは2である。よって、プログラム部126は、後続する2つの数(例えば、「19」及び「25」)を、第2カウンタ値220に対応する数の組として特定する。この数の組における最初の数(例えば,「19」)は、プログラム状態のセル106に対応する最後の特定数(例えば、「1」)に後に続く数である。
【0038】
プログラム部126は、さらに、セルアレイ102のうち、(特定した数の組に対応する)セル106の組を初期状態からプログラム状態へと書き換える。例えば、プログラム部126は、セル106I、106Xのプログラマブル素子108に書込み電圧を印加して書き込みを行って、プログラム状態にする。この結果、セル106I、106Xの電圧レベルが下がり、セル106I、106Xのビット値が0になる。よって、
図4に示すように、セル106C、106T、106Q、106I、106Xがプログラム状態を有し、残りのセル106は初期状態を有する。この結果、
図4に示すセルアレイ102のプログラマブル状態は、第2カウンタ値220を表す。
【0039】
図3~
図4を参照して説明したこの技術によれば、外部からセルアレイ102をリセットする攻撃が成功してしまう可能性を低減して、カウンタの安全性を高めることができる。例えば、カウンタ値を増加させる際に、セル106への書込みを順序通り(例えば、セル106Aに書き込み、次にセル106Bに書き込むなど)のではなく、セル106に対する書き込みは、秘密暗号鍵202に基づいて決定された疑似ランダム順(例えば、セル106Cに書き込み、次にセル106Tに書き込むなど)に行われる。したがって、攻撃者がセルアレイ102をリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列160の疑似ランダム順と、数列160の各数とセル106のアドレスとの対応関係を知る必要がある。安全性をさらに高めるために、各カウンタ値に関連付けられるセル106の個数はランダムになっている。例えば、第1カウンタ値210は、3つのセル106C、106T、106Qが書き込まれることで表され、第2カウンタ値220は、さらに2つのセル106I及び106Xが追加で書き込まれることで表される。したがって、攻撃者がセルアレイ102をリセットして、過去のカウンタ値に関連付けられたデータへのアクセスを試みるためには、疑似ランダムに配置されているプログラム状態のセル106の位置にだけでなく、特定のカウンタ値に対して何個のセル106が書き込まれるかを知る必要がある。
【0040】
図5は、プログラマブル状態が無効カウンタ値を表しているセルアレイ102を示す図である。例えば、
図5において、セル106C、106T、106Q、106I、106X、106R、106Sがプログラム状態であり、残りのセル106は初期状態である。
図5に示すセルアレイ102のプログラマブル状態は、疑似乱数列160及び対応するセルアドレスに基づいて有効なカウンタ値を表していない。
【0041】
例えば、イベントカウンタモジュール114は、プログラム状態を有するセル106C、106T、106Q、106I、106X、106R、106Sのアドレス162を、有効カウンタ値を表すように書込みされたアドレスと比較するよう構成されている。セル106C、106T、106Q、106I、106X、106R、106Sのアドレス162は、有効カウンタ値を表すプログラム状態のセルのアドレスに対応しないので、イベントカウンタモジュール114は、
図5に示すセルアレイ102は、有効カウンタ値を表しておらず、改ざんイベントが発生したと判定する。一実施態様では、イベントカウンタモジュール114は、セル106R、106Sがプログラム状態であるのに、数列160において、これらのセル106R、106Sに関連付けられた数(例えば、「1215」及び「245」)に先行する数(例えば、数「13、83、51、673、1003、12、85、43」)に対応するセル(例えば、セル106A、106L、106J、106U、106D、106K、106P、106H)が初期状態であることにより、改ざんイベントが発生したと判定することができる。
【0042】
図5を参照して説明した無効カウンタ値を検知する技術によれば、ワンタイムプログラマブル・メモリセルをリセットする単純な手法が成功する可能性を小さくすることができる。例えば、セル106が順序通り書き込みされる場合には、攻撃者は、セルアレイ102にレーザパルスを照射することで、セル106の集合を破壊して、カウンタ値をリセットすることが可能である。しかしながら、レーザ照射によってダイが加熱されると、多数の近隣のセル106が破壊される(例えば、異なるセクション104が一度に破壊される)ので、このような攻撃を受けた場合のビットパターンは、無効カウンタ値を示す可能性が高い。例を挙げて説明すると、セル106Rにレーザが照射されたとすると、セクション104Jにおける他のセル(例えば、セル106S)も、レーザ熱の影響を受ける可能性が高い。この結果、プログラム状態のセル106は、どの有効カウンタ値にも対応しないことになるので、イベントカウンタモジュール114は、改ざんイベント(例えば、レーザ照射)の発生を示すことができ、対抗部124は、対抗策を実行することができる。
【0043】
図6は、ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録するよう動作可能な別の装置600の図である。例えば、
図1の装置100に関して説明したのと同様に、装置600は、特定のイベントが発生する度に、1つ以上のワンタイムプログラマブル・メモリセルの状態を変更することで、カウンタ値を更新して、特定のイベントが発生したことを示す。
【0044】
装置600は、ダイ602を含む。セルアレイ102、数列生成器110、セル状態判定モジュール112、及び、イベントカウンタモジュール114は、ダイ602に一体化されている。加えて、プロセッサ604及び内部メモリ606も、ダイ602に一体化されている。装置600は、さらに、外部メモリ608を含む。
【0045】
イベントカウンタモジュール114が改ざんイベントの発生を判定すると、対抗部124は、1つ以上の対抗策を実行することができる。例えば、限定するものではないが、対抗部124は、セルアレイ102に対する改ざんイベントが発生したと判定されると、外部メモリ608からデータを消去することができる。別の例では、限定するものではないが、対抗部124は、セルアレイ102に対する改ざんイベントが発生したと判定されると、内部メモリ606からデータを消去することができる。別の例では、限定するものではないが、対抗部124は、プロセッサ604の1つ以上の処理へのアクセスを制限することができる。
【0046】
図7は、ワンタイムプログラマブル・メモリセルを用いて、特定のイベントに関するイベント数を永続的に記録する方法700のフローチャートである。方法700は、装置100又は装置600によって、或いは、両方の装置によって実行することができる。
【0047】
方法700は、702において、秘密暗号鍵を用いて疑似ランダムに配列された数列を生成することを含む。この数列は、セルアレイに含まれるセルのアドレス列を示している。セルアレイにおける各セルは、初期状態からプログラム状態への書き換えが可能であり、これにより、特定のイベントに関連付けられたカウンタ値を示すデータを符号化して永続的に記録することができる。例えば、数列生成器110は、秘密暗号鍵202を用いて、(疑似ランダム順に配列された)数列160を生成する。数列160は、セルアレイ102に含まれるセル106のアドレス列を示している。セルアレイ102における各セル106は、初期状態からプログラム状態への書き換えが可能であり、これにより、カウンタ値を示すデータを符号化して永続的に記録することができる。
【0048】
方法700は、704において、プログラム状態のセルのアドレスを上記アドレス列と比較して、セルアレイに対する改ざんイベントの有無を判定することをさらに含む。例えば、比較部120は、プログラム状態のセル106のアドレスを、上記アドレス列と比較して、セルアレイに対する改ざんイベントの発生の有無を判定する。
【0049】
一実施態様によれば、方法700は、プログラム状態のセルのアドレスが、上記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントが発生していないと判定することを含む。例えば、イベントカウンタモジュール114は、セルアレイ102が、
図3に示すプログラマブル状態であるか、或いは、
図4に示すプログラマブル状態であれば、改ざんイベントは発生していないと判定することができる。
図3に示すプログラマブル状態は、第1カウンタ値210(例えば、有効カウンタ値)に対応し、
図4に示すプログラマブル状態は、第2カウンタ値220(例えば、有効カウンタ値)に対応する。第1カウンタ値210は、第1の組のセル106C、106T、106Qがプログラム状態であることによって表され、第2カウンタ値220は、第1の組のプログラム状態セル106C、106T、106Qを含む、第2の組のセル106C、106T、106Q、106I、106Xがプログラム状態であることによって表される。
【0050】
一実施態様によれば、方法700は、プログラム状態のセルのアドレスが、上記アドレス列が示す有効カウンタ値と対応しないと判定されると、改ざんイベントが発生したと判定することを含む。例えば、イベントカウンタモジュール114は、セルアレイ102が、
図5に示すプログラマブル状態であれば、改ざんイベントが発生したと判定することができる。
【0051】
一実施態様によれば、方法700は、数列における第1の特定数に対応する第1の特定セルが初期状態であり、且つ、数列における第2の特定数に対応する第2の特定セルがプログラム状態であると判定されると、改ざんイベントが発生したと判定することを含む。この実施態様では、第2の特定数は、数列において第1の特定数の後に続く数である。例えば、イベントカウンタモジュール114は、セル106Cが初期状態であり、且つ、セル106Iがプログラム状態であると判定されると、改ざんイベントが発生したと判定することができる。例えば、セル106Iは、数列160において、セル106Cに対応する数(例えば14)の後に続く数(例えば19)に対応するので、セル106Iがセル106Cより先に書き込みされていれば、イベントカウンタモジュール114は、改ざんイベントが発生したと判定することができる。
【0052】
一実施態様によれば、方法700は、改ざんイベントが発生していないと判定されると、数列のうち、プログラム状態のセルに対応する最後の特定数を特定することを含む。この最後の特定数は、最新のカウンタ値に関連付けられている。例えば、第1カウンタ値210が最新のカウンタ値であれば、プログラム部126は、プログラム状態のセル(例えば、セル106Q)に対応する最後の特定数(例えば、「1」)を特定する。方法700は、次のカウンタ値のために書き込むべきセルの個数を特定することをさらに含む。例えば、プログラム部126は、第2カウンタ値220を符号化するには、さらに2つのセルに書き込みを行うと判定する。方法700は、数列のうち、上記最後の特定数の後に続く特定数を特定することをさらに含む。これら特定数は、次のカウンタ値のために書き込むべきセルのアドレスを示す。例えば、プログラム部126は、数列160のうち、最後の特定数(例えば、「1」)の後に続く数(例えば、「19」及び「25」)を特定する。特定の数の個数は、書込み対象として特定されたセルの個数と等しい。方法700は、セルアレイにおける特定セルのうちの少なくとも1つを、初期状態からプログラム状態へと書き換えることをさらに含む。例えば、プログラム部126は、セル106I、106Xを、初期状態からプログラム状態へと書き換える。
【0053】
一実施態様によれば、方法700は、改ざんイベントが発生していないと判定されると、数列のうち、プログラム状態のセルに対応する最後の特定数を特定することを含む。この最後の特定数は、最新のカウンタ値に関連付けられている。例えば、第1カウンタ値210が最新のカウンタ値であれば、プログラム部126は、プログラム状態のセル(例えば、セル106Q)に対応する最後の特定数(例えば、「1」)を特定する。方法700は、次のカウンタ値のために書き込むべきセルの個数を特定することをさらに含む。例えば、プログラム部126は、第2カウンタ値220を符号化するには、さらに2つのセルに書き込みを行うと判定する。さらに書込むべきセルの個数は、秘密暗号鍵202に基づく疑似ランダムな個数である。方法700は、数列のうち、次のカウンタ値に対応する数の組を特定することをさらに含む。この数の組に含まれる最初の数は、上記最後の特定数の後に続く数である。また、この数の組は、数列において連続する数を含む。例えば、プログラム部126は、第2カウンタ値220に対応する数の組(例えば「19」及び「25」)を特定する。方法700は、セルアレイにおける上記セルの組を、初期状態からプログラム状態へと書き換えることをさらに含む。上記数の組に含まれる各数は、上記セルの組のうち、対応するセルを示す。例えば、プログラム部126は、セル106I、106Xを、初期状態からプログラム状態へと書き換える。一実施態様では、上記数の組のサイズは、数列160に符号化されているか、或いは、第2の数列に符号化されている。この数の組のサイズは、疑似ランダムであって、1、2、3又は4のいずれかの値を取る。
【0054】
方法700は、706において、判定結果に基づいて、セルアレイを認証するか、或いは、対抗策を実行することをさらに含む。例えば、改ざんイベントが発生していないとイベントカウンタモジュール114が判定すれば、認証部122がセルアレイ102を認証する。これに対し、改ざんが発生したとイベントカウンタモジュール114が判定すれば、対抗部124が対抗策を実行する。一実施態様によれば、対抗策の実行には、外部メモリ608からのデータを削除すること、内部メモリ606からデータを削除すること、又は、プロセッサ604の1つ以上の処理へのアクセスを制限すること、のうちの少なくとも1つが含まれる。
【0055】
方法700によれば、セルアレイ102が外部リセット攻撃にさらされる可能性を少なくすることで、カウンタ値の安全性が改善される。例えば、セル106に対して順序通り書き込みを行ってカウンタ値を増加させるのではなく、セル106に対する書き込みは、秘密暗号鍵202に基づいて決定された疑似ランダム順に行われる。したがって、攻撃者がセルアレイ102をリセットして、過去のカウンタ値に関連付けられたデータにアクセスを試みるためには、数列160の疑似ランダム配列、及び、数列160の各数とセル106のアドレスとの対応関係を知る必要がある。また、安全性をさらに高めるために、各カウンタ値に関連付けられるセル106の個数はランダムになっている。例えば、第1カウンタ値210は、3つのセル106C、106T、106Qが書き込まれることで表され、第2カウンタ値220は、さらに2つのセル106I及び106Xが追加で書き込まれることで表される。したがって、攻撃者がセルアレイ102をリセットして、過去のカウンタ値に関連付けられたデータへのアクセスを試みるためには、疑似ランダムに配置されているプログラム状態のセル106の位置にだけでなく、特定のカウンタ値に対して何個のセル106が書き込まれるかを知る必要がある。
【0056】
図8及び
図9を参照して、本開示の実施例を、航空機の設計、製造及び使用に関して説明する。
図8は、装置100に関連付けられた方法800を示すフローチャートである。生産開始前において、方法800は、装置100の仕様決定及び設計の工程を802に含む。方法800は、材料調達の工程を804に含む。例えば、方法800は、航空機の材料(例えば、装置の材料)を調達する工程を含む。
【0057】
製造中には、方法800は、航空機の部品及び小組立品(subassembly)の製造の工程を806に含み、航空機のシステム統合の工程を808に含む。方法800は、装置100の部品及び小組立品の製造の工程を含んでもよい。方法800は、において、認証及び納品の工程を810に含み、航空機の就航の工程を812に含む。実施態様によっては、認証及び納品の工程は、装置100の認証を含む。また、航空機の就航の工程は、装置100を使用することを含んでもよい。就航の期間中、航空機は、定期的な整備及び保守のスケジュールに組み込まれる(これは、改良、再構成、改修、及び他の適当な保守を含んでもよい)。方法800は、航空機の整備及び保守の工程の実行を814に含む。
【0058】
図9は、装置100を含む航空機900の例示的な実施態様を示すブロック図である。少なくとも一実施態様において、航空機900は、
図8の方法800の少なくとも一部によって製造される。
図9に示すように、航空機900は、機体918、複数のシステム920、及び、内装922を含む。複数のシステム920の例としては、駆動系924、電気系926、環境系928、及び、油圧系930のうちの1つ又は複数が挙げられる。電気系926は、装置100を含む。また、航空機900は、その他のシステムをいくつ含んでもよい。また、航空宇宙産業の例を説明したが、本開示は、他の産業に適用してもよい。例えば、装置100は、他の有人又は無人の輸送体(例えば、自動車、衛星、船又は陸上車両)などに搭載して用いることも可能である。
【0059】
本明細書に含まれる装置及び方法は、
図8の方法800における1つ以上のどの工程において採用してもよい。例えば、部品及び小組立品の製造の工程808において製造される部品及び小組立品は、限定するものではないが例えば、航空機900の就航812において製造される部品及び小組立品と同様に製造してもよい。また、装置の実施態様、方法の実施態様、或いは、その組み合わせの実施態様の1つ以上を、製造工程(例えば、方法800における工程802~810)で用いることによって、例えば、航空機900の組み立て速度を大幅に速めたり、コストを大幅に削減したりすることができる。同様に、装置の実施態様、方法の実施態様、或いは、その組み合わせの実施態様の1つ以上を、航空機900の就航期間中に、限定するものではないが例えば、814における整備及び保守に用いてもよい。
【0060】
さらに、本開示は以下の付記による実施形態も包含する。
【0061】
付記1.イベント数を永続的に記録するための装置であって、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイと、前記セルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成するよう構成された数列生成器と、イベントカウンタモジュールと、を備え、前記イベントカウンタモジュールは、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定し、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うよう構成されている、装置。
【0062】
付記2.前記イベントカウンタモジュールは、前記プログラム状態を有するセルのアドレスが、前記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントは発生していないと判定するよう構成されている、付記1に記載の装置。
【0063】
付記3.第1有効カウンタ値は、プログラム状態にある第1の組のセルによって表され、第2有効カウンタ値は、プログラム状態にある前記第1の組のセルを含む、プログラム状態にある第2の組のセルによって表される、付記2に記載の装置。
【0064】
付記4.前記イベントカウンタモジュールは、前記数列に含まれる第1の特定数に対応する第1の特定セルが初期状態であり、且つ、前記数列において前記第1の特定数に後続する第2の特定数に対応する第2の特定セルがプログラム状態であると判定されると、改ざんイベントが発生したと判定するよう構成されている、付記1~3のいずれかに記載の装置。
【0065】
付記5.前記セルアレイの各セルは、ワンタイムプログラマブル・メモリセルである、付記1~4のいずれかに記載の装置。
【0066】
付記6.前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、次のカウンタ値のために書き込むべきセルの個数を特定し、前記数列のうち、前記最後の特定数に後続する特定数を、前記セルの個数と同じだけ特定し、前記セルアレイのうち、前記特定数がアドレスを示している少なくとも1つの特定セルを、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、付記1~5のいずれかに記載の装置。
【0067】
付記7.前記イベントカウンタモジュールは、改ざんイベントが発生していないと判定されると、さらに、前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定し、次のカウンタ値のために書き込むべきセルの個数を、前記秘密暗号鍵に基づく疑似ランダムな個数として特定し、前記次のカウンタ値に対応する数の組として、前記数列において前記最後の特定数に後続する数を最初の数として連続する数の組を特定し、前記セルアレイのうち、前記数の組における各数に対応するセルの組を、前記初期状態から前記プログラム状態へ書き換えるよう構成されている、付記1~6のいずれかに記載の装置。
【0068】
付記8.前記数の組のサイズは、前記数列又は第2の数列に符号化されている、付記7に記載の装置。
【0069】
付記9.前記サイズは、1、2、3又は4のうちの疑似ランダムな値である、付記8に記載の装置。
【0070】
付記10.前記特定のイベントは、フライトコンピュータの電源投入、又は、前記フライトコンピュータの起動のうちの少なくとも一方に関連付けられている、付記1~9のいずれかに記載の装置。
【0071】
付記11.前記特定のイベントは、自動車セキュリティシステムに関連付けられている、付記1~10のいずれかに記載の装置。
【0072】
付記12.前記セルアレイ、前記数列生成器、及び、前記イベントカウンタモジュールは、ダイに一体化されており、前記ダイは、さらに、プロセッサを備え、前記対抗策は、外部メモリからのデータ削除、内部メモリからのデータ削除、又は、前記プロセッサの1つ以上の処理へのアクセス制限のうちの少なくとも1つを含む、付記1~11のいずれかに記載の装置。
【0073】
付記13.イベント数を永続的に記録するための方法であって、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成することと、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定することと、前記判定に基づいて、前記セルアレイの認証、又は、対抗策の実行のいずれかを行うことと、を含む、方法。
【0074】
付記14.前記プログラム状態を有するセルのアドレスが、前記アドレス列が示す有効カウンタ値に対応すると判定されると、改ざんイベントは発生していないと判定することをさらに含む、付記13に記載の方法。
【0075】
付記15.第1有効カウンタ値は、プログラム状態にある第1の組のセルによって表され、第2有効カウンタ値は、前記プログラム状態にある第1の組のセルを含む、プログラム状態にある第2の組のセルによって表される、付記14に記載の方法。
【0076】
付記16.前記セルアレイの各セルは、ワンタイムプログラマブル・メモリセルである、付記13~15のいずれかに記載の方法。
【0077】
付記17.改ざんイベントが発生していないと判定されると、前記数列のうち、プログラム状態のセルに対応する最後の特定数であって、最新のカウンタ値に関連付けられた特定数を特定することと、次のカウンタ値のために書き込むべきセルの個数を特定することと、前記数列のうち、前記最後の特定数に後続する特定数を、前記セルの個数と同じだけ特定することと、前記セルアレイのうち、前記特定数がアドレスを示している少なくとも1つの特定セルを、前記初期状態から前記プログラム状態へ書き換えることと、をさらに含む、付記13~16のいずれかに記載の方法。
【0078】
付記18.前記特定のイベントは、フライトコンピュータの電源投入、又は、前記フライトコンピュータの起動のうちの少なくとも一方に関連付けられている、付記13~17のいずれかに記載の方法。
【0079】
付記19.前記対抗策を実行することは、外部メモリからデータを削除すること、内部メモリからデータを削除すること、又は、前記プロセッサの1つ以上の処理へのアクセスを制限すること、のうちの少なくとも1つを含む、付記13~18のいずれかに記載の方法。
【0080】
付記20.イベント数を永続的に記録するための装置であって、初期状態からプログラム状態へ書き換えられることによって、特定のイベントに関連付けられたカウンタ値を示すデータを永続的に符号化するよう構成された各セルを含むセルアレイと、前記セルアレイにおけるセルのアドレス列を示す疑似ランダムな数列を、秘密暗号鍵を用いて生成するための手段と、プログラム状態を有するセルのアドレスを前記アドレス列と比較して、前記セルアレイに対する改ざんイベントの発生の有無を判定するための手段と、前記判定に基づいて、前記セルアレイを認証するための手段と、前記判定に基づいて、対抗策を実行するための手段と、を備える装置。
【0081】
本明細書に記載した実施例の説明は、様々な実施態様の構成について包括的な理解を促すためのものである。記載した説明は、本明細書の構成又は方法を用いる装置及びシステムの要素及び特徴を、すべて完全に説明することを意図したものではない。本開示に基づけば、他にも様々な実施態様が当業者には明らかであろう。本開示から他の実施態様の利用や導出が可能であり、本開示の範囲から逸脱することなく、構造的及び論理的な置き換え及び変更が可能である。例えば、方法の実行に際し、図示とは異なる順序で工程を実行することも可能であり、また、方法における1つ以上の工程を省略することも可能である。したがって、本開示及び添付図面は、限定としてではなく、例示として理解されるべきものである。
【0082】
さらに、本明細書において特定の実施例を記載したが、同一又は類似の結果を得るよう後から設計された構成によって本開示の特定の実施態様を置き換え可能であることは理解されよう。本開示は、様々な実施態様について後に実施されるあらゆる改変あるいは変形を包含することを意図している。当業者が本開示の記載を検討すれば、上述の実施態様を組み合わせ、及び、本明細書では具体的に記載しなかったその他の実施態様も明らかであろう。
【0083】
要約書の提出は、請求の範囲の解釈や限定には用いられないとの理解を前提とする。加えて、上述の詳細な説明において、様々な特徴をひとまとめにしたり、単一の実施態様において説明したりしているが、これは、あくまでも開示を合理的に記載するためである。上述の実施例は、本開示を説明するものであって、限定するものではない。本開示の原理に基づけば、多くの変形及び改変が可能であることは理解されよう。以下の請求の範囲が示すように、請求の範囲に記載の要旨は、開示した実施例のすべての特徴のうちの一部のみに関連する場合もある。つまり、本開示の範囲は、下記の請求の範囲及びその均等範囲によって定義されるものである。