(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-25
(54)【発明の名称】高度なメモリのための偽造防止適用
(51)【国際特許分類】
H04L 9/10 20060101AFI20220715BHJP
【FI】
H04L9/10 Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021543370
(86)(22)【出願日】2020-05-21
(85)【翻訳文提出日】2021-09-03
(86)【国際出願番号】 US2020034086
(87)【国際公開番号】W WO2020237093
(87)【国際公開日】2020-11-26
(32)【優先日】2019-05-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】509285746
【氏名又は名称】クリプトグラフィ リサーチ, インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100126480
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】ベスト,スコット シー.
(57)【要約】
データのブロックが、ベリファイアモジュールからオーセンティケータモジュールに提供され、ブロックのサイズが、オーセンティケータモジュールの1つ以上の所望の特性と相関している。ベリファイアモジュールは、オーセンティケータモジュールからの応答を受信し、この応答は、チャレンジ値およびデータのブロックを伴う計算から導出されたデータ結果を含む。ベリファイアモジュールは、応答がオーセンティケータモジュールの1つ以上の所望の特性を示しているかどうかを検証する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ベリファイアモジュールからオーセンティケータモジュールに、データのブロックを提供することであって、前記ブロックのサイズが、前記オーセンティケータモジュールの1つ以上の所望の特性と相関している、提供することと、
前記ベリファイアモジュールから前記オーセンティケータモジュールに、チャレンジ値を提供することと、
前記ベリファイアモジュールにおいて、前記オーセンティケータモジュールからの応答を受信することであって、前記応答が、少なくとも前記チャレンジ値および前記データのブロックを伴う計算から導出された結果を含む、受信することと、
前記ベリファイアモジュールにおいて、前記応答が前記オーセンティケータモジュールの前記1つ以上の所望の特性を示しているかどうかを検証することと、を含む方法。
【請求項2】
前記オーセンティケータモジュールの前記特性が、前記オーセンティケータモジュールのメモリのサイズ、メモリのタイプ、メモリの速度、またはインターフェースの速度のうちの1つ以上を含む、請求項1に記載の方法。
【請求項3】
前記方法が、
前記応答を受信する前に、前記ベリファイアモジュールにおいて、第1の期間内に、前記チャレンジ値および前記データのブロックを伴う前記計算の前記結果を表すターゲット応答値を計算することと、
前記応答を受信した後に、前記オーセンティケータモジュールからの前記応答が、前記第1の期間に続く所定の第2の期間内に受信されたかどうかをチェックすることと、
前記オーセンティケータモジュールからの前記応答が前記所定の第2の期間内に受信されたと決定することに応答して、前記計算されたターゲット応答値を、前記オーセンティケータモジュールから受信された前記応答と比較することと、をさらに含む、請求項1に記載の方法。
【請求項4】
前記検証することは、
前記計算されたターゲット応答値が、前記オーセンティケータモジュールから受信された前記応答と一致すると決定することに応答して、前記オーセンティケータモジュールが前記所望の特性を備えていることを示すこと、をさらに含む、請求項3に記載の方法。
【請求項5】
前記検証することは、
前記オーセンティケータモジュールを含むデバイスが偽造ではないことを証明すること、をさらに含む、請求項4に記載の方法。
【請求項6】
前記データのブロックがランダムに生成される、請求項1に記載の方法。
【請求項7】
前記オーセンティケータモジュールが、前記チャレンジ値に対して一連のスワッピング操作を実行することと、前記スワッピング操作の結果を内部メモリに記憶することと、によって、前記チャレンジ値をアルゴリズム的に修正する、請求項1に記載の方法。
【請求項8】
前記オーセンティケータモジュールから前記ベリファイアモジュールへの前記応答が、前記オーセンティケータモジュールの前記内部メモリから読み取られる前記記憶された結果を構成する、請求項7に記載の方法。
【請求項9】
前記方法が、
前記オーセンティケータモジュールの内部メモリからデータを読み取る前に、前記オーセンティケータモジュールの電源を入れ直すこと、をさらに含む、請求項1に記載の方法。
【請求項10】
前記電源を入れ直すことが、
前記ベリファイアモジュールから、前記オーセンティケータモジュールの電源を入れ直すレギュレータに信号を送信すること、を含む、請求項9に記載の方法。
【請求項11】
システムであって、
互いに動作可能に結合されたベリファイアモジュールおよびオーセンティケータモジュールを備え、
前記ベリファイアモジュールが、
前記オーセンティケータモジュールに、データのブロックを提供することであって、前記ブロックのサイズが、前記オーセンティケータモジュールの1つ以上の所望の特性と相関している、提供することと、
前記オーセンティケータモジュールに、チャレンジ値を提供することと、
前記オーセンティケータモジュールからの応答を受信することであって、前記応答が、少なくとも前記チャレンジ値および前記データのブロックを伴う計算から導出された結果を含む、受信することと、
前記応答が前記オーセンティケータモジュールの前記1つ以上の所望の特性を示しているかどうかを検証することと、を行う、システム。
【請求項12】
前記オーセンティケータモジュールの前記特性が、前記オーセンティケータモジュールのメモリのサイズ、メモリのタイプ、メモリの速度、またはインターフェースの速度のうちの1つ以上を含む、請求項11に記載のシステム。
【請求項13】
前記ベリファイアモジュールは、
前記応答を受信する前に、第1の期間内に、前記チャレンジ値および前記データのブロックを伴う前記計算の前記結果を表すターゲット応答値を計算することと、
前記応答を受信した後に、前記オーセンティケータモジュールからの前記応答が、前記第1の期間に続く所定の第2の期間内に受信されたかどうかをチェックすることと、
前記オーセンティケータモジュールからの前記応答が前記所定の第2の期間内に受信されたと決定することに応答して、前記計算されたターゲット応答値を、前記オーセンティケータモジュールから受信された前記応答と比較することと、をさらに行う、請求項11に記載のシステム。
【請求項14】
前記ベリファイアモジュールは、
前記計算されたターゲット応答値が、前記オーセンティケータモジュールから受信された前記応答と一致すると決定することに応答して、前記オーセンティケータモジュールが前記所望の特性を備えていることを示すこと、をさらに行う、請求項13に記載のシステム。
【請求項15】
前記ベリファイアモジュールは、
前記オーセンティケータモジュールを含むデバイスが偽造ではないことを証明すること、をさらに行う、請求項14に記載のシステム。
【請求項16】
前記データのブロックがランダムに生成される、請求項11に記載のシステム。
【請求項17】
前記オーセンティケータモジュールが、内部メモリを備え、前記オーセンティケータモジュールが、前記チャレンジ値に対して一連のスワッピング操作を実行することと、前記スワッピング操作の結果を前記内部メモリに記憶することと、によって、前記チャレンジ値をアルゴリズム的に修正する、請求項11に記載のシステム。
【請求項18】
前記オーセンティケータモジュールから前記ベリファイアモジュールへの前記応答が、前記オーセンティケータモジュールの前記内部メモリから読み取られる前記記憶された結果を構成する、請求項17に記載のシステム。
【請求項19】
前記オーセンティケータモジュールが、
前記ベリファイアモジュールから信号を受信すると、前記オーセンティケータモジュールの電源を入れ直すように構成されたレギュレータ、をさらに備える、請求項11に記載のシステム。
【請求項20】
前記ベリファイアモジュールが、
前記電源入れ直し後の前記オーセンティケータモジュールの応答時間を測定するタイマー、をさらに備える、請求項19に記載のシステム。
【発明の詳細な説明】
【図面の簡単な説明】
【0001】
本開示は、以下に与えられる詳細な説明から、および本開示の様々な実装の添付図面から、より完全に理解されるであろう。
【0002】
【
図1】いくつかの実施形態による、チャレンジ/応答ベースの認証システムの主要な機能コンポーネントのブロック図である。
【
図2】本開示の一実施形態による、オーセンティケータモジュールの実装例である。
【
図3】本開示の一実施形態による、ベリファイアモジュールの実装例である。
【
図4】本開示による、スタティックランダムアクセスメモリ(SRAM)および別のタイプの電荷ベースメモリを使用する証明器チップの一実施形態を示す。
【
図5】本開示による、バッテリバックアップ式SRAMメモリを使用する証明器チップの別の代替実施形態を示す。
【
図6】本開示による、高速相互接続を使用して証明器チップに接続された別個のシリアルメモリ集積回路(IC)を使用する証明器チップのさらに別の代替実施形態を示す。
【
図7】本開示のいくつかの実施形態による、ベリファイアおよびオーセンティケータモジュールの動作を説明する例示的な方法の流れ図である。
【
図8】本開示のいくつかの実施形態が動作し得る代表的なコンピュータシステムのブロック図を示す。
【発明を実施するための形態】
【0003】
本開示の態様は、ベリファイアモジュールと、真正性が検証されているデバイスまたは物品内に含まれるオーセンティケータモジュールとの間のデータの交換を対象としている。オーセンティケータモジュールは、検証されているデバイスまたは物品内に含まれる、証明器チップと呼ばれる集積回路(IC)(ICは、本明細書では「チップ」とも呼ばれる)の形態であり得る。ベリファイアモジュールは、スタンドアロンチップとして、またはホスト中央処理装置(CPU)内のプロセッサによって実行されるソフトウェアとして実装できる。ベリファイアモジュールは、証明器チップが大量の受信データを十分に高速にロードできるかどうかをチェックし、証明器チップに、本物のチップだけが含む可能性が高い所望のタイプの高度なメモリが含まれていることを示す。
【0004】
偽造チップの特性の1つは、偽造チップには通常、最先端の技術ノードで構築された高度なメモリが含まれていないことである。高度なメモリの非限定的な例は、高度な技術ノード(例えば、22nm以下)内に構築された磁気抵抗ランダムアクセスメモリ(MRAM)または抵抗ランダムアクセスメモリ(RRAM)ベースの不揮発性メモリ(NVM)である。「技術ノード」(または単に「ノード」)という用語は、特定のプロセス技術で作成された特定の世代のチップ内の基盤となるデバイスの機能サイズを示す。偽造防止セキュリティチップは、本明細書では、デバイスまたは物品の本物性を証明することを容易にするチップを指す。偽造防止セキュリティチップには、高度な技術ノード内に構築されたNVMが埋め込まれた証明器チップが含まれている場合があり、これにより、セキュリティチップは、非常に低いメモリレイテンシで、低電力で動作することができる。「レイテンシ」という用語は、データの転送がその転送の指示に続いて開始される前の遅延を示す。真正な偽造防止セキュリティチップと比較して、偽造クローンチップは、最先端の技術で構築されていない、劣った埋め込みメモリを持っている可能性が高い。例えば、偽造チップは、65nm技術ノード内に構築され、レガシーの電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)を使用している場合がある。レガシーメモリを備えた偽造チップは、高度なメモリを備えた本物のチップよりもレイテンシが高くなる可能性がある。劣ったレガシーメモリを備えた偽造チップはまた、高度なメモリを備えた本物のチップよりも高い電源電圧を必要とする可能性がある。
【0005】
本開示の態様は、偽造の試みを検出するために、高度なメモリを備えた真正な偽造防止セキュリティチップと、劣ったメモリを備えた偽造クローンチップとの間のこの固有の挙動の違いを利用する。非限定的で例示的な例として、外部カートリッジを受け入れるプリンタは、外部カートリッジが真正である(すなわち、プリンタと互換性があり、プリンタの動作に損傷または悪影響を与える可能性がないように設計されている)か、外部カートリッジが偽造クローンであり、プリンタを損傷したり、プリンタの誤動作または標準以下のパフォーマンスを引き起こしたりする可能性があるかどうか、を検出することから利益を得る。したがって、プリンタのCPUは、外部カートリッジがプリンタ内に含まれることを受け入れる前に、外部カートリッジの真正性を検証することを希望する場合がある。この検証は、以下にさらに詳しく説明するように、カートリッジ内のオーセンティケータモジュールに大きいデータブロックを送信し、カートリッジからの所望の応答がどのくらい速度で受信されるかをチェックすることで実行できる。
【0006】
本開示は、真正な偽造防止セキュリティチップが、MRAMまたはRRAMなど、かなり大量の高性能埋め込みNVMを含む可能性が高いことを認識し、このことは、レガシーメモリ技術よりも大幅に高速な書き込み時間でありながらも大幅に削減された消費電力などのいくつかの所望の特性を、偽造防止セキュリティチップ内に含まれるオーセンティケータモジュールに与える。例えば、真正な偽造防止セキュリティチップには、1μsごとに64ビット程度の書き込み帯域幅をサポートすることができる、1MビットのMRAMが含まれている場合がある。これは、十分な帯域幅でデータをチップに供給できると仮定すると、1Mビットメモリを20ms未満でプログラムできることを意味する。これと比較すると、従来のEEPROMメモリでは、64ビットのデータチャンクごとに約1msのプログラミング時間が必要であり、同じデータロードで20秒近く必要である。
【0007】
高度なメモリと従来のメモリとの間のこの挙動の違いは、偽造防止セキュリティチップの文脈においていくつかの方法で活用できる。例えば、偽造防止セキュリティチップがシステムに追加されたとき、ホストCPUは、セキュリティチップが新しいものであり、使用前にその真正性を検証する必要があることを認識する場合がある。この検証を行い得る方法の1つは、チャレンジ/応答認証技術を使用することによるものである。チャレンジ/応答認証は、一方の当事者が質問を提示し、他方の当事者が認証を受けるために有効な回答を提供するプロトコルのファミリーである。このようなプロトコルの適用例としては、限定はしないが、プリンタとカートリッジとの間で認証して、両方のデバイスが本物であり、偽造されていないことを保証することが挙げられる。本開示の範囲は、一方向認証(例えば、ベリファイアが証明器の真正性を確認する場合)および相互双方向認証(例えば、証明器が、ベリファイアに対してそれ自体がその真正性を確認する前に、ベリファイアの真正性を確認する場合)を包含することに留意されたい。
【0008】
したがって、本開示の態様は、大きいダイ領域を占有することなく、および/または多くの電力を消費することなく、埋め込みメモリの固有の特性(例えば、オーセンティケータチップのメモリのサイズ、メモリのタイプ、メモリの速度、またはインターフェースの速度)に基づいて、本物の物品と偽造クローンとを区別するための効率的な手段を提供する。
【0009】
図1は、本開示のいくつかの態様による、チャレンジ/応答ベースの認証システムの基本的なコンポーネントを示している。ベリファイア110は、チャレンジ115を証明器120に送信し、証明器120から応答116を受信する。ここでの意図は、証明器120が、その値を直接明らかにすることなく、秘密の値を知っていることを実証することである。これは、秘密の値を知っている場合にのみ正しく実行できる計算を完了することによって行われる。上記のように、証明器120は、ICとして実装され得る。そのような実施形態では、秘密の値は、それが証明器チップに(例えば、チップの回路および/または埋め込みメモリの何らかの組み合わせ内で)プログラムされているので、証明器チップに「知られている」。ベリファイア110は、スタンドアロンチップとして、またはホストCPU内のプロセッサによって実行されるソフトウェアとして実装できる。典型的な使用では、チャレンジ値115は乱数であり、応答116は、チャレンジ値の暗号化されたバージョンである。一方向認証では、証明器チップは通常、完了時にそれ以上の検証なしでベリファイアに応答をリリースすること、および相互認証では、証明器チップは、ベリファイアが正しい応答をすでに知っていることを実証する(例えば、ベリファイアが正しい応答から導出された値を証明器に送信する)まで、応答をリリースするのを待機することに留意されたい。暗号化は、暗号化器が秘密の値を知っている場合にのみ正しく完了することができる計算の一例である。受信された応答116に基づいて、ベリファイア110は、証明器120が秘密の値の知識を持っているかどうかを決定する。このタイプの認証は、一般に「知識の証明」として知られている。多要素認証は、「知識の証明」(例えば、証明器が知っている何らかの値)を、証明器120が、本物の証明器だけが持つ可能性が高い所望のタイプの高度なメモリにアクセスできることを示す、証明器チップが大量の受信データを十分に高速にロードすることができるかどうかなどの「所有権の証明」(例えば、証明器が持っているもの)と組み合わせるシステムを表す。
【0010】
図2は、証明器チップ220を含むオーセンティケータモジュール200の実装例を示している。証明器チップ220は、
図1の証明器120と同じであり得る。オーセンティケータモジュール200は、真正性が検証されている物品またはデバイス内に配設することができる。一実施形態では、オーセンティケータモジュール200は、例えば、インクまたはトナーカートリッジなどのプリンタ消耗品の一部である。オーセンティケータモジュール200は、チャレンジ/応答プロトコルを開始したベリファイアモジュール(例えば、ベリファイア110)からチャレンジ値(例えば、
図1のチャレンジ115)を受信するための第1のインターフェース212を有し得る。オーセンティケータモジュール200は、証明器チップ220内に、第1のインターフェース212からチャレンジ値を受信するための第2のインターフェース226を有し得る、証明器チップ220の形態のサブコンポーネントを含み得る。第2のインターフェース226は、短距離ボード内通信において周辺ICをプロセッサおよびマイクロコントローラに接続するために使用される同期シリアルコンピュータバスである集積回路間(I
2C)インターフェースであり得る。証明器チップ220はまた、第2のインターフェース226からチャレンジ値を受信するアービタ228を有し得る。この文脈でのメモリアービタは、共有メモリシステム内で使用される、その共有メモリへのアクセスを仲介する回路またはプロセスにすぎない。この実施形態では、メモリアービタは、証明器チップ220内の内部メモリ230と通信する。他の実施形態では、以下に説明するように、メモリ230は、証明器チップ220と同じ認証モジュール200上に配設された別個のチップ上に実現される。上記のように、証明器チップ220内のメモリ230は、いくつかの実施形態では、高性能で低レイテンシの高度なメモリ、例えば、22nm以上の高度なノードで構築されたMRAMまたはRRAMを備え得る。一実施形態では、メモリ230は、「知識の証明」計算を実行するために必要な秘密の値を含み得るだけでなく、ベリファイア110から受信されるチャレンジ115に伴う大量の追加データの高速(すなわち、低レイテンシ)プログラミングをサポートすることもできる。いくつかの実施形態では、応答値は、証明器チップ内で暗号化操作を実行する暗号化器モジュール232によって計算される。上記のように、チャレンジの暗号化された値は、ベリファイア110に返送される(
図1に示されている)応答116である。暗号化操作のタイプの特定の例は、限定はしないが、Advanced Encryption standard(AES)、Data Encryption Standard(DES)、Secure Hash Algorithm(SHA)-1、SHA-2、International Data Encryption Algorithm(IDEA)、Rivest-Shamir-Adleman(RSA)Algorithm、Rivest Cipher 6(RC6)、Extended Tiny Encryption Algorithm(XTEA)などに基づくことができる。
【0011】
いくつかの実施形態では、チャレンジ値の暗号化の前に、受信されたチャレンジ値に対して修正アルゴリズムを実行することができる。例えば、チャレンジ値115を提供することに加えて、ベリファイア110はまた、「ルックアップテーブル」を含むデータの大きいブロック(例えば、1Mビット)を証明器チップに提供する場合があり、証明器チップは、それをメモリブロック230に記憶する。いくつかの実施形態では、証明器チップは、このルックアップテーブルからの値を使用して、チャレンジ値115に対して一連のスワッピング操作を実行し、修正されたチャレンジ値をもたらす。このテーブルは、例えば、それぞれ16ビットのランダム値の65,536行から構成され得る。そして、いくつかの実施形態では、受信されたチャレンジ値115内のデータの16ビットごとに、証明器チップは、それらの16ビットを、ルックアップテーブル内の対応する16ビットエントリとスワップする。スワッピング操作が完了した後、(例えば、暗号化器232を使用して)応答計算を実行することができ、その計算の結果は、応答値116としてベリファイアモジュールに送り返され得る。このようにして、オーセンティケータモジュールは、「知識の証明」(すなわち、秘密の値を使用した暗号化)と、「所有権の証明」(すなわち、受信されたルックアップテーブルデータを記憶し、説明どおりにそれを利用するのに十分な高度なメモリ)の両方を実行する。いくつかの実施形態では、新しいルックアップテーブルが、認証ごとにベリファイアによって提供されるが、他の実施形態では、単一のルックアップテーブルを複数の認証操作に使用できることに留意されたい。例えば、ルックアップテーブルは、電源投入中にベリファイアによって証明器チップにロードされ、次いで、その後、電源が入れ直されるかまたはシステムリセットまで、後続のすべての認証に使用され得る。他の実施形態では、ベリファイア100から受信された大きいデータブロックは、スワッピング以外の方法で、応答計算中にチャレンジ値115とアルゴリズム的に組み合わされることに留意されたい。例えば、代替として、基本的な数学演算(例えば、加算、減算、乗算など)、基本的な論理演算(例えば、AND、NOR、XORなど)、または変換の組み合わせ(例えば、XORとそれに続く回転など)を含むより高度な変換(例えば、暗号化、ハッシュ、回転など)が使用され得る。
【0012】
いくつかの実施形態では、オーセンティケータモジュール200は、証明器チップ220に電力を提供するレギュレータ214を有する。レギュレータ214は、適切な信号(例えば、タイマーによって設定された所定の持続時間の満了)がベリファイア110から受信されたとき、証明器チップ220の電源を入れ直すことができる。これは、例えば、ベリファイアがルックアップテーブルデータを、高帯域幅だがレガシーの揮発性メモリ(例えば、SRAM)にではなく、高度な不揮発性メモリ(例えば、MRAM)に記憶することを保証するために使用できる。例えば、ベリファイア110は、1Mビットのテーブルデータをオーセンティケータモジュールに通信した後、タイマーの満了時に、電源を入れ直すための信号をレギュレータ214に送り、それによって、任意の揮発性メモリ回路におけるテーブルデータの記憶を破壊することができる。
【0013】
図3は、ベリファイアモジュール310の実装例を示している。ベリファイアモジュール310は、
図1のベリファイア110と同じであり得る。ベリファイアモジュール310は、テーブルデータおよびチャレンジ値(例えば、
図1のチャレンジ115)をオーセンティケータモジュール(例えば、
図2のモジュール200)に通信し、オーセンティケータモジュールから応答値(例えば、
図1の応答116)を受信するためのインターフェース312を有し得る。ベリファイアモジュール310は、大きいデータブロックおよび/またはチャレンジ値のいずれかまたは両方の形成中に使用され得る乱数を生成する乱数発生器(図示せず)を有し得る。データブロックは、メモリサイズ、メモリタイプ、メモリ速度、インターフェース速度など、オーセンティケータモジュールの1つ以上の所望の特性を検証できるように、十分に大きく(例えば、1Mビット)する必要があることに留意されたい。また、大きいデータブロックおよびチャレンジ値がオーセンティケータモジュール200に通信された後に、ベリファイアは、受信された応答116の有効性を確認できるように、(プロセッサ334に結合された内部メモリ330に記憶され得る)大きいデータブロック、チャレンジ値、および秘密の値を伴う計算の少なくとも一部を繰り返す必要があることに留意されたい。プロセッサ334は、ベリファイアモジュールがその一部であるホストシステムのCPUであり得る。内部メモリ330は、オーセンティケータモジュール内の内部メモリ230と同じタイプであってもよく、または異なるタイプであってもよい。プロセッサは、
図7に関してより詳細に説明するように、オーセンティケータモジュールから受信された応答が、オーセンティケータモジュールを含む物品の本物性を示しているかどうかを検証するように構成される。いくつかの実施形態では、プロセッサ334は、オーセンティケータモジュールに送信されたチャレンジ値に対応する応答のターゲット値を独立して計算する。オーセンティケータモジュールから受信された応答が、ローカルで計算された応答のターゲット値と一致するとき、オーセンティケータモジュールを含む物品は本物として認定される。前述のように、相互認証システムでは、ベリファイアは、オーセンティケータモジュールが応答をリリースする前に、ターゲット値から導出された値をオーセンティケータモジュールに送信する必要があり得る。
【0014】
ベリファイアモジュール310はまた、タイマー332を有し得る。タイマー332は、チャレンジ値がオーセンティケータモジュールに送信されるとすぐに開始することができる。タイマーが満了する前に応答が受信されない場合(例えば、真正な証明器チップ220が、より性能の低いメモリを利用した偽造の証明器チップと交換されている場合)、ベリファイアモジュールは、オーセンティケータモジュールが所望の種類の高度なメモリを有していないと判定することができる。他の実施形態では、タイマーは、データの大きいブロックがオーセンティケータモジュールに送信されるとすぐに開始することができる。この実施形態では、タイマーが満了したとき、ベリファイアは、証明器チップ220の電源入れ直しをトリガするための信号をレギュレータ214にさらに送信することができる。オーセンティケータモジュールに所望の高性能の高度な不揮発性メモリがなく、代わりに、高性能だが揮発性のメモリ(例えば、SRAMなど)を利用していた場合、この電源入れ直しイベントは、(前述のように)それらの揮発性メモリ回路における大きいデータブロックの記憶を破壊することができる。
【0015】
上記のチャレンジ/応答プロトコルベースの認証は、オーセンティケータモジュールが、ベリファイアモジュールを含むホストシステムに追加されたときに初めて採用できることに留意されたい。本開示に記載されている技術は、その後のスケジュールされた認証またはスケジュールされていない認証にも使用することができる。初期の大きいデータブロックのロードプロセス中に、オーセンティケータモジュール200の内部メモリ230は、ベリファイアモジュール310によって送信された複数の行/列のペアを含むデータ構造(例えば、ルックアップテーブル)を記憶することができ、このデータ構造は、ベリファイアモジュール310によるその後の認証のために利用され得る。高度なメモリで構築された本物のオーセンティケータモジュールは、ベリファイアモジュール310からのその後のチャレンジに正しく応答するが、偽造オーセンティケータモジュールは、初期データロード中に大きいデータブロックを十分に迅速に記憶できないために失敗する可能性が高い。データブロックのサイズは1Mビット以上であってもよい。
【0016】
図2は、証明器チップ220内の内部メモリ230全体が、高度な不揮発性MRAMまたはRRAMメモリに埋め込まれている実施形態を示していることに留意されたい。ただし、
図4~
図6に示すように、証明器チップの他の構成も可能であり、この場合、追加のコンポーネントを使用して、本来なら揮発性のメモリに、ある程度の不揮発性が追加される。
【0017】
図4は、証明器チップ400の代替実施形態を示しており、証明器チップ400内のメモリは、揮発性スタティックランダムアクセスメモリ(SRAM)バッファ450と、EEPROメモリなどの別のタイプの電荷ベースの不揮発性メモリ430と、を備える。
【0018】
図5は、バッテリバックアップ式SRAMメモリ550を使用する証明器チップ500の別の代替実施形態を示している。バッテリ560は、SRAMメモリ550に不揮発性を帰属させる。
【0019】
図6は、揮発性SRAMメモリを備えた証明器チップ620が、高速相互接続660を使用して別個のシリアルメモリチップ650に接続されている、さらに別の代替実施形態600を示している。
【0020】
当業者は、
図4~
図6に示される実施形態が証明器チップの実行可能な代替構成であるが、それらのいずれも、追加のバッテリバックアップまたは相互接続なしで内部の高度な不揮発性埋め込みメモリを使用する
図2に示される証明器チップ220のレイテンシに一致する可能性がないことを理解するであろう。実際、偽造セキュリティチップは、
図4~
図6に示される代替実施形態を採用することができ、これは、本出願に開示される技術によって容易に検出されるであろう。さらに、
図4~
図6に示されるメモリ構成の一部は、高度なMRAMまたはRRAMのレイテンシを模倣できる場合があるが、消費電力ははるかに大きくなるであろう。
【0021】
偽造チップ内の揮発性メモリがバッテリで支えられていないことを検証するために、
図2に示されるオーセンティケータモジュール200内のレギュレータ214によって供給されるVDD電源信号は、汎用入力/出力(GPIO)ポートへの入力信号としてベリファイアモジュール310に戻されてもよく、プロセッサ334は、その信号を監視して、レギュレータが電源入れ直し信号に正しく応答しているかどうか、またはそれがオンモジュールバッテリで強化されているかどうかを確認することができる。代替的または追加的に、レギュレータ回路は、常時オンの放電経路(例えば、1mA放電経路)を含むことができ、これは、最終的にバッテリを消耗させ、ベリファイアモジュールによる検証の試みに失敗したときにチップの偽造の性質を暴露することができる。
【0022】
図7は、本開示のいくつかの態様による、チャレンジ/応答ベースの認証システムを実行するための例示的な方法700の流れ図である。方法700は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラム可能ロジック、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で起動もしくは実行される命令)、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、方法700は、
図3に示されるベリファイアモジュール310によって実行され得る。
【0023】
例示的な方法700は、動作710において開始し、ここで、データのブロックが、ベリファイアモジュールからオーセンティケータモジュールに提供され得る。データのブロックは、ベリファイアモジュール、例えば、
図3に示されるベリファイアモジュール310内の乱数発生器からの寄与によって生成され得る。いくつかの実施形態では、データブロックをオーセンティケータモジュールに提供した後に、ベリファイアモジュールは、次いで、データのブロックがオーセンティケータモジュール内の不揮発性メモリに記憶されていることを保証するために、オーセンティケータモジュール内の電圧レギュレータ回路の電源切断のための信号を送ることができる。
【0024】
動作715において、チャレンジ値が、ベリファイアモジュールからオーセンティケータモジュールに提供され得る。この値も、ベリファイアモジュール、例えば、
図3に示されるベリファイアモジュール310内の乱数発生器からの寄与によって生成され得る。いくつかの実施形態では、動作710からのデータのブロックおよびこのステップからのチャレンジ値は、ベリファイアから認証モジュールに同時に通信され得るが、他の実施形態では、データのブロックおよびチャレンジ値は別々に通信されることに留意されたい。
【0025】
動作720において、データのブロックとチャレンジ値の両方を伴う計算を表す値が、第1の期間内にベリファイアモジュールにおいてローカルに計算される。この動作は、
図3に示されるプロセッサ334によって実行され得る。この動作は、データのブロックおよびチャレンジ値の生成後に、しかしこれらの値をオーセンティケータモジュールに送信する前に行われる場合があることに留意されたい。上記のように、チャレンジ値を少なくとも部分的にデータのブロックに基づいてアルゴリズム的に修正することができる様々な方法がある。暗号化を含むがこれに限定されない、所望の応答を導出するために使用できる様々な計算もある。
【0026】
動作730において、ベリファイアモジュールが、オーセンティケータモジュールからの応答を受信する。応答は、データのブロックを伴うアルゴリズム修正後のチャレンジの修正バージョンを伴う計算の結果を含む場合がある。このステップにおけるチャレンジ値のアルゴリズム修正は、ステップ720内でベリファイアによって実行されるのと同じアルゴリズム修正であり得ることに留意されたい。また、応答は、
図2に示される暗号化器モジュール232によって計算され得、さらに、証明器チップ220の回路またはローカルメモリ230に記憶された秘密の値を伴い得る。一実施形態では、データのブロックは、初期化プロセス中に、すなわち、ベリファイアモジュールが証明器チップの真正性を検証することを試みるときに初めてメモリ230にロードされる、テーブル形式(または他の形式のデータ構造)の複数の行/列データペアを含む「ルックアップテーブル」を含む。
【0027】
動作740において、ベリファイアモジュールは、オーセンティケータモジュールからの応答が、第1の期間に続く第2の期間内に受信されたかどうかをチェックする。この第2の期間は、初期化プロセスの一部、または後続の検証プロセスの一部であり得る。応答が第2の期間内に受信された場合、方法は、動作750に進むことができる。いくつかの実施形態では、応答が第2の期間内に受信されない場合、方法は、認証の失敗を決定することができ、証明器チップ220が偽造であり得ることを示す。この方法は、この決定がなされるとすぐに中止することができるが、他の実施形態では、応答が第2の期間内に受信されなくても、方法は動作750に進むことができる。
【0028】
動作750において、動作730において受信された応答値が、動作720においてベリファイアモジュールにおいてローカルに計算されたターゲット応答値と比較される。この比較は、プロセッサ334によって実行され得る。
【0029】
動作760において、計算された応答値が、受信された応答値と一致する場合、ベリファイアモジュールは、オーセンティケータモジュールが本物のセキュリティチップの所望の特性を備えていることを示す。一方、計算された応答値が、受信された応答値と一致しない場合、またはステップ740におけるタイマー評価による認証の失敗がまだ作用していない場合、ベリファイアモジュールは、認証モジュールが本物のセキュリティチップに属していないことを示し得る。ベリファイアモジュールによるこの指示は、
図7に示されていない他の動作をトリガする場合がある。例えば、セキュリティチップが本物ではないと示された場合、プリンタはカートリッジの受け入れを拒否する場合がある。
【0030】
当業者は、
図3の流れ図が特定の順番または順序を示しているが、特に明記しない限り、プロセスの順序を修正することができることを理解するであろう。したがって、図示された実施形態は、例としてのみ理解されるべきであり、図示されたプロセスは、異なる順序で実行することができ、いくつかのプロセスは、並列に実行することができる。さらに、様々な実施形態では、1つ以上のプロセスを省略することができる。したがって、あらゆる実施形態においてすべてのプロセスが必要とされるわけではない。他のプロセスの流れも可能である。
【0031】
図8は、本明細書で論じられる方法論のうちのいずれか1つ以上を機械に実行させるための命令のセットが内部で実行され得るコンピュータシステム800の例示的な機械を示している。代替の実装では、機械は、LAN、イントラネット、エクストラネット、および/またはインターネット内の他の機械に接続(例えば、ネットワーク化)されてもよい。機械は、クライアントーサーバネットワーク環境内のサーバもしくはクライアント機械の能力内で、ピアツーピア(または分散型)ネットワーク環境内のピア機械として、またはクラウドコンピューティングインフラストラクチャもしくは環境内のサーバもしくはクライアント機械として動作することができる。
【0032】
機械は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、Webアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはその機械によって行われるアクションを指定する命令のセットを(順次または別の方法で)実行できる任意の機械とすることができる。さらに、単一の機械が示されているが、「機械」という用語は、本明細書で論じられる方法論のいずれか1つ以上を実行する命令のセット(または複数のセット)を個別または共同で実行する機械の任意の集まりも含むとみなされるものとする。
【0033】
例示的なコンピュータシステム800は、処理デバイス802、メインメモリ804(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)もしくはラムバスDRAM(RDRAM)などのダイナミックランダムアクセスメモリ(DRAM)など)、スタティックメモリ806(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータ記憶デバイス818を含み、これらは、バス830を介して互いに通信する。一実装では、処理デバイス802は、
図3のプロセッサ334であり得る。
【0034】
処理デバイス802は、マイクロプロセッサ、中央処理装置などの1つ以上の汎用処理デバイスを表す。より具体的には、処理デバイスは、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサとすることができる。処理デバイス802はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理デバイスであってもよい。処理デバイス802は、本明細書で論じられる動作およびステップを実行するための命令826を実行するように構成される。
【0035】
コンピュータシステム800は、ネットワーク820上で通信するためのネットワークインターフェースデバイス808をさらに含み得る。コンピュータシステム800はまた、ビデオディスプレイユニット810(例えば、液晶ディスプレイ(LCD)またはブラウン管(CRT))、英数字入力デバイス812(例えば、キーボード)、カーソル制御デバイス814(例えば、マウス)、グラフィック処理ユニット822、信号生成デバイス816(例えば、スピーカ)、グラフィック処理ユニット822、ビデオ処理ユニット828、およびオーディオ処理ユニット832を含むことができる。
【0036】
データ記憶デバイス818は、本明細書に説明される方法論または機能のいずれか1つ以上を具現化する命令またはソフトウェア826の1つ以上のセットが記憶される機械可読記憶媒体824(コンピュータ可読媒体としても知られる)を含むことができる。命令826はまた、コンピュータシステム800によるその実行中に、メインメモリ804内および/または処理デバイス802内に完全にまたは少なくとも部分的に存在し得、メインメモリ804および処理デバイス802はまた、機械可読記憶媒体を構成する。
【0037】
一実装形態では、命令826は、
図3のベリファイア310の機能を実装するための命令を含む。機械可読記憶媒体824は、例示的な実装形態では単一の媒体であるように示されているが、「機械可読記憶媒体」という用語は、1つ以上の命令セットを記憶する単一の媒体または複数の媒体(例えば、集中型もしくは分散型データベース、ならびに/または関連するキャッシュおよびサーバ)を含むとみなされるべきである。「機械可読記憶媒体」という用語はまた、機械による実行のための命令セットを記憶または符号化することができ、機械に本開示の方法論のいずれか1つ以上を実行させる任意の媒体を含むとみなされるものとする。したがって、「機械可読記憶媒体」という用語は、限定ではないが、固体メモリ、光学媒体、および磁気媒体を含むとみなされるものとする。
【0038】
前述の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズムおよび記号表現に関して提示されてきた。これらのアルゴリズムの説明と表現は、データ処理技術分野の当業者が自身の作業の内容を他の当業者に最も効果的に伝えるために使用する方法である。アルゴリズムは、ここでは、概して、望ましい結果につながる自己矛盾のない一連の操作であると考えられる。操作は、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は、記憶、結合、比較、および別の方法で操作が可能な電気信号または磁気信号の形態をとる。主に一般的な使用の理由から、これらの信号をビット、値、要素、記号、文字、用語、数値などと呼ぶことが時には便利であることが判明している。
【0039】
ただし、これらの用語および類似の用語はすべて適切な物理量に関連付けられるべきものであり、これらの量に適用される便利なラベルにすぎないことに留意されたい。上記の議論から明らかなように別段明記しない限り、説明全体を通して、「識別」または「決定」または「実行」または「実施」または「収集」または「作成」または「送信」などの用語を利用している議論は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表現されるデータを、コンピュータシステムのメモリもしくはレジスタまたは他のそのような情報記憶デバイス内の物理量として同様に表現される他のデータに操作および変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを指すことが理解される。
【0040】
本開示はまた、本明細書の動作を実行するための装置に関する。この装置は、意図された目的のために特別に構築されてもよく、またはコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化または再構成される汎用コンピュータを備えてもよい。このようなコンピュータプログラムは、コンピュータシステムバスにそれぞれ結合された、フロッピーディスク、光ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カード、または電子命令を記憶するのに適した任意のタイプの媒体などであるがこれらに限定されない、コンピュータ可読記憶媒体に記憶され得る。
【0041】
本明細書に提示されているアルゴリズムおよび表示は、任意の特定のコンピュータまたは他の装置に本質的に関連しているわけではない。本明細書の教示に従って、様々な汎用システムをプログラムと共に使用する場合があり、または方法を実行するためのより専門的な装置を構築することが好都合であると判明する場合もある。これらの様々なシステムの構造は、以下の説明に述べられている通りである。さらに、本開示は、特定のプログラミング言語に関して説明されていない。本明細書で説明されるように開示の教示を実装するために、様々なプログラミング言語が使用されてもよいことが理解されよう。
【0042】
本開示は、命令を記憶した機械可読媒体を含み得るコンピュータプログラム製品またはソフトウェアとして提供され得、これは、コンピュータシステム(または他の電子デバイス)をプログラムして、本開示に従うプロセスを実行するために使用され得る。機械可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形式で情報を記憶するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、読み取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなどの機械(例えば、コンピュータ)可読記憶媒体を含む。
【0043】
前述の明細書では、本開示の実装は、その特定の例示的な実装に関して説明されてきた。以下の特許請求の範囲に述べられているように、本開示の実装のより広い趣旨および範囲から逸脱することなく、様々な修正を加えることができることは明らかであろう。したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で顧慮されるべきである。
【国際調査報告】