IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-516067RSA署名検証のための強化された符号化メッセージチェック
<>
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図1A
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図1B
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図2
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図3
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図4
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図5
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図6
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図7
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図8
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図9
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図10
  • 特表-RSA署名検証のための強化された符号化メッセージチェック 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-12
(54)【発明の名称】RSA署名検証のための強化された符号化メッセージチェック
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240405BHJP
【FI】
H04L9/32 200B
H04L9/32 200E
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023555327
(86)(22)【出願日】2023-01-05
(85)【翻訳文提出日】2023-10-19
(86)【国際出願番号】 US2023060150
(87)【国際公開番号】W WO2023133451
(87)【国際公開日】2023-07-13
(31)【優先権主張番号】63/297,145
(32)【優先日】2022-01-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ウルソイ,メフメト・アルファン
(72)【発明者】
【氏名】オソリオ・ロザーノ,ミゲル・アンヘル
(57)【要約】
RSA署名検証のための強化された符号化メッセージチェックのシステムおよび方法の局面が記載されている。一実現例において、語の配列を含む符号化されたメッセージが受信される。符号化されたメッセージの中の各語は、期待値と、各語に関連付けられたシェアとを使用して、処理される。符号化されたメッセージの中の語の配列、期待値、および各語に関連付けられたシェアに基づいて、検証値が計算される。検証値が正しいかどうかに関して判断が行われ、検証値が正しい場合、ハードウェアデバイスがアンロックされる。
【特許請求の範囲】
【請求項1】
方法であって、
語の配列を含む符号化されたメッセージを受信するステップと、
前記符号化されたメッセージの中の前記語のセットを、期待値と、前記語の前記セットの各語に関連付けられたシェアとを使用して、処理するステップと、
前記符号化されたメッセージの中の前記語の配列、前記期待値、および前記語の前記セットの各語に関連付けられた前記シェアに基づいて、検証値を計算するステップと、
前記検証値が正しいかどうかを判断するステップと、
前記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックするステップとを備える、方法。
【請求項2】
前記語の前記セットは、前記配列の各語を含み、
前記符号化されたメッセージは、ダイジェストを含み、前記方法はさらに、前記符号化されたメッセージの中の前記ダイジェストと期待されるダイジェストとを比較するステップを備える、請求項1に記載の方法。
【請求項3】
前記検証値を計算するステップはさらに、期待値、および前記ダイジェストの各語に関連付けられたシェアに基づいて、前記符号化されたメッセージの前記ダイジェストが前記期待されるダイジェストに一致すると判断することに基づく、請求項2に記載の方法。
【請求項4】
前記ハードウェアデバイスに関連付けられたハードウェアレジスタに前記検証値を書き込むステップをさらに備える、請求項1から3のいずれか1項に記載の方法。
【請求項5】
ダイジェストを生成するためにハッシュ関数が前記語の配列に適用される、請求項1に記載の方法。
【請求項6】
前記語の前記セットは、前記配列の各語を含み、前記方法はさらに、
期待値と、各語に関連付けられたシェアとを使用して、前記符号化されたメッセージの中の前記語の配列の各々をチェックするステップと、
前記符号化されたメッセージの中の前記語の配列のシーケンシャルな対に対して複数のXOR(排他的論理和)演算を実行するステップとを備える、請求項1に記載の方法。
【請求項7】
前記符号化されたメッセージは、パディング、ハッシュ関数識別子またはダイジェストのうちの少なくとも1つをさらに含む、請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記方法は、RSA(リベスト-シャミア-エーデルマン)署名スキームに適用される、請求項1から7のいずれか1項に記載の方法。
【請求項9】
複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、前記符号化されたメッセージを強化するステップをさらに備える、請求項1から8のいずれか1項に記載の方法。
【請求項10】
前記検証値が正しくないとの判断に応答して、前記ハードウェアデバイスをロック状態に維持するステップをさらに備える、請求項1から9のいずれか1項に記載の方法。
【請求項11】
方法であって、
語の配列、パディング、ハッシュ関数識別子およびダイジェストを含む符号化されたメッセージを受信するステップと、
前記符号化されたメッセージの中の前記語の各々を、期待値と、各語に関連付けられたシェアとを使用して、処理するステップと、
前記符号化されたメッセージの中の前記語の配列、前記期待値、および各語に関連付けられた前記シェアに基づいて、検証値を計算するステップと、
前記検証値が正しいかどうかを判断するステップと、
前記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックするステップと、
前記検証値が正しくないとの判断に応答して、前記ハードウェアデバイスをロック状態に維持するステップとを備える、方法。
【請求項12】
前記ハードウェアデバイスに関連付けられたハードウェアレジスタに前記検証値を書き込むステップをさらに備える、請求項11に記載の方法。
【請求項13】
期待値と、各語に関連付けられたシェアとを使用して、前記符号化されたメッセージの中の前記語の配列の各々をチェックするステップと、
前記符号化されたメッセージの中の前記語の配列のシーケンシャルな対に対して複数のXOR(排他的論理和)演算を実行するステップとをさらに備える、請求項11または請求項12に記載の方法。
【請求項14】
複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、符号化されたメッセージを強化するステップをさらに備える、請求項11から13のいずれか1項に記載の方法。
【請求項15】
装置であって、
ハードウェアデバイスと、
前記ハードウェアデバイスへのアクセスを制御するように構成されたプロセッサと、
前記プロセッサによって実行されると請求項1から14のいずれかに記載の方法のステップを実行するように前記装置を仕向ける命令を含むコンピュータ可読記憶媒体とを備える、装置。
【発明の詳細な説明】
【背景技術】
【0001】
背景
RSA(リベスト-シャミア-エーデルマン)は、データを安全に送信するために使用される公開鍵暗号システムである。RSAシステムは、RSA公開鍵とRSA秘密鍵とを使用する。いくつかの状況では、RSAシステムのユーザ(例えば、署名者)は、RSA秘密鍵でメッセージを署名する場合がある。このメッセージは、ユーザのRSA秘密鍵に基づく署名とともに、別のシステムに送信される。受信側システムは、メッセージ送信者(例えば、署名者)のRSA公開鍵を使用して署名を処理して、署名が正しいことを検証する。
【0002】
特定のRSAシステムは、インターネット技術特別調査委員会(IETF:Internet Engineering Task Force)のリクエスト・フォー・コメンツ8017のセクション8で論じられるスキームなどの、補足付き署名スキームを使用する。このスキームは、署名生成動作と署名検証動作とを含む。署名生成オプションは、署名者のRSA秘密鍵を用いてメッセージから署名を作成する。センシティブなハードウェアへのアクセスを保護するために使用され得る署名検証動作は、署名者の対応するRSA公開鍵を用いてメッセージ上の署名を検証する。このタイプのスキームでは、RSAシステムは、署名検証プロセスの一部としてメッセージにアクセスする。しかし、いくつかのケースでは、悪者が、センシティブなハードウェアへのアクセス(例えば、ブートコード)を得るために署名検証動作を妨害または変更しようとする場合がある。そのため、悪者は、システム挙動を変更したり、署名検証動作を無視したりすることができる場合に、センシティブなハードウェアへのアクセスを得て、センシティブなハードウェアを実装するシステムの保全性を危うくする可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
概要
本文献は、RSA署名検証の一部として実行される符号化メッセージチェックを強化するためのシステムおよび方法を開示する。さまざまな局面において、システムまたは方法は、シェアまたは自明な秘密分散を使用してRSA署名検証の一ステップとして実行される符号化メッセージチェックを強化し、署名検証チェックの結果は、最初に、符号化されたメッセージを処理し、次いで、処理された符号化されたメッセージを単一の語に縮小することによって、生成される。成功値は、任意の好適な値として定義され得るが、記載される局面は、この成功値を、ハードウェアがセンシティブな動作(例えば、フラッシュ実行)をアンロックするであろう値に設定することができ、失敗値は、0xffffffffとして構成され得る。そうすることによって、攻撃者が署名検証プロセス中にシステム(例えば、チップまたはシステムオンチップ)の挙動を変更したり、それを完全にスキップしたりすることができる場合に、センシティブな動作をアンロックする確率および/または未署名のコードを実行する確率は、強化されていないプロセスと比較して大幅に低くなる。そのため、本明細書に記載されている強化された署名検証プロセスは、攻撃者または悪者が、強化された署名検証プロセスをスキップまたは妨害することができる場合でも、センシティブなハードウェアの動作にアクセスすることまたは未署名のコードを実行することを防止することができる。いくつかの局面において、チェック対象の値を処理して、これらの値を単一の語に縮小する方法が記載される。別の例では、署名に関連付けられた符号化されたメッセージに対してダイジェストチェックをさらに実行する方法が記載され、これは、より強力なRSA署名検証を提供する。これらの方法は、チップまたは他のシステムの動作への攻撃に対するレジリエンスを向上させることができる。
【0004】
この概要は、RSA署名検証のための強化された符号化メッセージチェックを実現するための単純化された概念を紹介するために提供されている。この単純化された概念については、詳細な説明においてさらに後述する。この概要は、特許請求される主題の本質的な特徴を識別するよう意図されるものではなく、特許請求される主題の範囲の決定で使用することを意図されるものでもない。
【0005】
RSA署名検証のための符号化メッセージチェックの強化の1つまたは複数の局面の詳細について以下で説明する。説明および図面中の異なるインスタンスにおける同一の参照番号の使用は、同様の要素を示す。
【図面の簡単な説明】
【0006】
図1A】例示的な符号化されたメッセージを示す図である。
図1B】符号化されたメッセージをチェックするための例示的なプロセスを示す図である。
図2】配列チェックを強化するための例示的なプロセスを示す図である。
図3】比較プロセス中に符号化されたメッセージを処理するための例示的なプロセスを示す図である。
図4】検証プロセスの一部としてダイジェストを算出および処理するための例示的なプロセスを示す図である。
図5】符号化されたメッセージおよびその関連付けられたダイジェストをチェックするための例示的なプロセスを示す図である。
図6】ループ強化のための例示的なプロセスを示す図である。
図7】署名およびメッセージデータの比較で用いられる固定のダイジェストを有する固定の符号化されたメッセージを作成するための例示的なプロセスを示す図である。
図8】符号化メッセージチェックの一部として実行される例示的な条件文を示す図である。
図9】符号化メッセージチェックとともに使用される例示的なハードウェアベースのアプローチを示す図である。
図10】RSA署名検証のための強化された符号化メッセージチェックを実現する例示的な方法を示す図である。
図11】本明細書に記載されている任意のタイプのクライアント、サーバ、テストシステム、および/または、デバイスとして実現することができる例示的なコンピューティングシステムのさまざまな構成要素を示す図である。
【発明を実施するための形態】
【0007】
詳細な説明
本明細書に記載されている符号化メッセージチェックを強化するためのシステムおよび方法は、RSA署名検証の一部として実行され得る。いくつかの局面において、記載されているシステムおよび方法は、チップがブート段階画像の署名を検証するためのセキュアブートプロセスの一部として使用され得る。さまざまな局面において、記載されているシステムまたは方法は、シェアまたは自明な秘密分散を使用してRSA署名検証の一ステップとして実行される符号化メッセージチェックを強化するために使用され得て、署名検証チェックの結果は、最初に、符号化されたメッセージを処理し、次いで、処理された符号化されたメッセージを単一の語に縮小することによって、生成される。成功値は、任意の好適な値として定義され得るが、記載される局面は、この成功値を、ハードウェアがセンシティブな動作(例えば、フラッシュ実行)をアンロックするであろう値に設定することができ、失敗値は、0xffffffffとして構成され得る。そうすることによって、攻撃者が署名検証プロセス中にシステム(例えば、チップまたはシステムオンチップ)の挙動を変更したり、それを完全にスキップしたりすることができる場合に、センシティブな動作をアンロックする確率および/または未署名のコードを実行する確率は、強化されていないプロセスと比較して大幅に低くなる。そのため、本明細書に記載されている強化された署名検証プロセスは、攻撃者または悪者が、強化された署名検証プロセスをスキップまたは妨害することができる場合でも、センシティブなハードウェアの動作にアクセスすることまたは未署名のコードを実行することを防止することができる。
【0008】
本明細書で論じられるように、システムおよび方法は、シェア(例えば、自明な秘密分散)を使用してRSA署名検証の最後のステップとして実行される符号化メッセージチェックを強化する。いくつかの局面において、符号化メッセージチェックの結果は、最初に、符号化されたメッセージを処理し、次いで、それを単一の語に縮小することによって、生成される。特定の実現例では、符号化メッセージチェックは、処理された符号化されたメッセージのダイジェストに対してダイジェストチェックを実行することによって拡張され、これは、フォールト注入攻撃などの攻撃に対してより強力なRSA署名検証を提供する。本明細書で論じられるように、ダイジェストは、検証対象の符号化されたメッセージのハッシュを指し得る。
【0009】
本明細書に記載されているように、符号化されたメッセージは、一例として以下の形式を有し得て、「|」は連結を表す。
【0010】
【数1】
【0011】
この例では、MESSAGE_DIGESTはメッセージに依存し得る。記載されているシステムおよび方法は、何らかの処理の後に、符号化されたメッセージのダイジェストをチェックする。この処理の目標は、メッセージ依存部分を取り除くことにより、(メッセージから独立した)正しい署名の符号化されたメッセージを処理することによって同一の符号化されたメッセージ(EM)が得られるようにするというものである。EMは定数であるので、当該システムおよび方法は、そのダイジェストSHA256(EM)をチップに格納することができ、このダイジェストSHA256(EM)を使用して署名の符号化されたメッセージをチェックすることができる。いくつかの局面において、署名が正しい場合、SHA256(プロセス(何らかの署名のEM))はSHA256(EM)に等しくなる。いくつかの実現例では、チェック対象の符号化されたメッセージは、署名者の署名および公開鍵を使用して計算され、期待されるダイジェスト(例えば、符号化されたメッセージの最後の部分)は、署名に付随するメッセージのダイジェストである。
【0012】
検証プロセスの成功値は、任意の値として定義され得る。いくつかの局面において、記載されているシステムおよび方法は、成功値を、ハードウェアがセキュアブートプロセス中にフラッシュ実行をアンロックする前に認識するであろう値に設定する。失敗値は、0xffffffffまたは0x00000000に設定され得る。このアプローチを使用して、攻撃者が署名検証中にチップの挙動を変更したり、それを完全にスキップしたりしても、フラッシュ実行をアンロックする見込みおよび未署名のコードを実行する見込みは、強化されていない実現例と比較して大幅に低くなる。冗長なダイジェストチェックを使用することは、検証に複数のハードウェアコンポーネントが必要であることにより、フォールト注入攻撃などの攻撃に対する保護をさらに向上させる。
【0013】
記載されているシステムおよび方法のいくつかの局面において、RSA秘密鍵および/またはRSA公開鍵は、チップに焼き付けされて、本明細書で論じられる署名の検証に使用されてもよい。いくつかの局面において、RSA署名スキームは、さまざまな鍵長およびハッシュ関数を使用することができる。本明細書で論じられる特定の例では、SHA-256(セキュアハッシュアルゴリズム-256ビット)ハッシュ関数とともに3072ビットのRSA鍵が使用される。
【0014】
いくつかの局面において、本明細書に記載されているシステムおよび方法は、符号化メッセージングに対するフォールト注入(FI:Fault Injection)攻撃を防止することに有用である。さまざまなタイプのFI攻撃は、チップなどのデバイスの挙動を変更するために外的刺激を加えることを含み得る。この外的刺激は、例えば、チップに電圧を印加すること、チップにクロック信号を適用すること、チップの近傍に電磁場を印加すること、チップの近傍にレーザ光を向けること、チップに熱を加えることなどを含み得る。FI攻撃は、データの破損および/または命令の実行を生じさせる可能性がある。例えば、特定のFI攻撃は、命令、ループまたは機能のスキップを生じさせる可能性がある。また、FI攻撃は、戻り値または1つまたは複数の変数の値を変化させる可能性がある。
【0015】
いくつかの局面において、RSA署名スキームは、符号化されたメッセージを作成して、この符号化されたメッセージに署名プリミティブを適用して署名を生成する符号化動作を実行することによって、署名を生成し得る。いくつかの例では、この署名プリミティブは、RSASP1(RSA署名プリミティブ1)プリミティブであってもよい。RSA署名スキームは、署名に検証プリミティブRSAVP1(RSA検証プリミティブ1)を適用して、符号化されたメッセージを回復し得て、符号化されたメッセージが期待される符号化されたメッセージに一致するかどうかをチェックし得る。いくつかの局面において、当該スキームは、ダイジェストに基づいて、符号化されたメッセージが期待される符号化されたメッセージに一致するかどうかをチェックする。いくつかの例では、記載されているシステムおよび方法は、RSASSA-PKCS1-v1_5(補足付きRSA署名スキーム-公開鍵暗号化技術規格1)、3072ビットのRSA鍵、およびSHA-256ハッシュ関数を使用して実現される。
【0016】
図1Aは、バイトの配列102を含む例示的な符号化されたメッセージ100を示す図である。いくつかの局面において、バイトの配列102は、特定の長さを有するバイトの長い列であってもよい。バイトの配列102の最後には、SHA256ハッシュ関数に関連付けられたバイトがある。例えば、図1AにおけるSHA256ハッシュ関数に関連付けられたバイトは、「00303...00420」である。バイトの配列102は、バイトの配列102を取り囲む破線によって識別される。いくつかの局面において、バイトの配列102のサイズは、固定長を有する。例えば、パディングバイト「0001ff...ff」は固定長を有し、SHA256ハッシュ関数に関連付けられたバイトは固定長を有する。バイトの配列102の後に続くのは、メッセージのハッシュに関連付けられたダイジェスト104である。図1Aの例では、ダイジェスト104は、「9f86d...00a08」を含む。ダイジェスト104は、バイトの配列102によって識別されるハッシュ関数(この例では、SHA-256)を、署名対象のメッセージに適用することによって、作成され得る。ダイジェスト104の長さは、バイトの配列102によって識別される、使用されているハッシュ関数によって、さまざまであり得る。
【0017】
図1Bは、符号化されたメッセージと期待される符号化されたメッセージとを比較するための例示的なプロセス110を示す図である。いくつかの局面において、example 1は単一メモリ比較を実行し、example 2は多重メモリ比較を実行し、example 3はバイトの配列102の中の複数の要素の比較を実行する。符号化メッセージチェックを強化するために、当該システムおよび方法は、最初に、vを、チェックの成功を示すために符号化メッセージチェックによって生成される値であるように定義する。本明細書で用いられる値vは、検証値と称され得る。FI攻撃から保護するために、値vは、高いハミング重みおよび非自明なパターンを有するべきである。例えば、32ビットのアーキテクチャでは、vは、0x00000000または0xffffffffの代わりに、0xa5c3b7d4のような値を有するべきである。
【0018】
自明な秘密分散は、実際の値vを回復するために全てのシェアが必要であるように値vをn個のシェアに分割するためのスキームである。このスキームでは、最初に、n-1個のランダムな乱数値v,v,...,vn-2が生成される。次いで、実際の値vおよび全ての乱数値のビット排他的論理和(XOR)として、最終的なシェアvn-1が算出される。これらのシェアから実際の値vを回復するために、n個全てのシェアは排他的論理和をとられる。
【0019】
いくつかの局面において、当該システムおよび方法は、次いで、チェックされることになる符号化されたメッセージおよびダイジェストの長さに基づいて、必要なシェアの数を決定する。例えば、3072ビットの鍵および32ビットの配列を使用する場合、システムおよび方法は、符号化されたメッセージのために96個のシェアを必要とする。これらの96個のシェアは、非自明なパターンを有するカウンタ値であり得る。ダイジェストチェックは、これらの96個のシェアを使用し得る。ダイジェストチェックに必要なシェアの数は、使用されるハッシュアルゴリズムによってさまざまである。SHA256を使用するシステムおよび方法では、8個の追加のシェアが必要であるため、必要なシェアの総数はn=104になる。最後に、システムおよび方法は、高いハミング重み、非自明なパターン、および互いからの高いハミング距離を有するn-1個(この例では、103個)の乱数を生成する。次いで、システムおよび方法は、vおよびv,v,...,vn-2の排他的論理和をとることによって最終的なシェアvn-1を算出する。
【0020】
図2は、符号化メッセージチェックを強化するのに使用することができる配列チェックを強化するための例示的なプロセス200を示す図である。図2に示されるように、202は、配列の各語arr[i]が対応する期待値(kArrExp[i])およびシェア(kShares[i])との排他的論理和をとられることを示す。図2に示される符号「」は、排他的論理和演算を表す。配列が期待値kArrExpに一致する場合、プロセス200のこの部分は、事実上、配列の各要素arr[i]をその対応するシェアkShares[i]に設定する。プロセスステップ204は、各配列要素の値をチェックする。特定の配列要素が検証される場合、diff値はゼロに設定される。しかし、特定の配列要素が検証されない場合、diff値は、最終結果に検証の失敗を示させる非ゼロ値(この例では、0xffffffff)に設定される。そのため、配列内の要素が1つも検証されない場合、配列チェック全体が失敗することになり、配列チェックプロセスが強化される。
【0021】
いくつかの局面において、FI攻撃がない場合、arrがそもそも正しければ、図2における「result」の値はvになり、そうでなければ0xffffffffになる。攻撃者がいずれかのループにおけるいずれかの演算を巧みにスキップするまたは繰り返す場合、vの値は、正しくないものになる可能性が高い。なぜなら、符号化されたメッセージの1つまたは複数の語は、正しいシェアに設定されないからである。攻撃者が最後のループの挙動を巧みに変更する場合、「result」の値は、シェアおよび反復チェックのためにvとは異なるものになる可能性が高い。
【0022】
さまざまな局面において、記載されているシステムおよび方法は、符号化されたメッセージの処理に使用されるシェアを生成するために有限体にわたって加算演算子、減算演算子およびモジュロ演算子を使用することによって、付加秘密分散を使用し得る。いくつかのケースでは、これらのシェアは、オフラインで算出されて、定数としてコードに格納される。このアプローチを使用して、署名の検証を担うコードは、チェックの成功時に返すべき値について知らず、乱数生成部への従属性もないので、ブートプロセスの早い段階ではすぐに使用できない。代替的にまたは追加的に、シェアは、最初のn-1個のシェアが、ランダムに生成された数であって、最後のシェアが、チェックの成功を示す値vと全ての以前のシェアとの排他的論理和であるように、オンラインで算出することができる。このアプローチを使用して、当該システムおよび方法は、最後のシェアが算出されているときに、生成されたシェアの数が期待値に一致することをチェックして、生成されたシェアの数が期待値に一致しない場合に防衛措置をとることができる。
【0023】
図3は、符号化されたメッセージがメッセージの期待値に一致するかどうかを判断するための例示的なプロセス300を示す図である。いくつかの局面において、記載されているシステムおよび方法は、符号化されたメッセージの各語と当該語の期待値および対応するシェアとの排他的論理和をとることによって、チェック対象の符号化されたメッセージの各語を反復処理する。この演算の最後に、チェック対象の符号化されたメッセージの各語(enc_msg[i])は、その値が期待値である場合にのみ、kShares[i]に等しくなる。プロセス300は、このプロセスの一例を示している。図3に示されるように、シェアの総数は、符号化されたメッセージの中の語の総数に等しい。
【0024】
図4は、検証プロセスの一部としてダイジェストを算出および処理するための例示的なプロセス400を示す図である。プロセス400は、図3に関して論じられたenc_msgのダイジェストを算出する。enc_msgの値が期待値であった場合にのみenc_msg[i]がkShares[i]に等しくなるので、プロセス400は、kEncMsgDigestExpをkShares[i](iは0~95)のSHA256ダイジェストであるように定義する。
【0025】
図5は、符号化されたメッセージ(図3に関して論じられたenc_msg)およびその関連付けられたダイジェスト(図4に関するenc_msg_digest)をチェックするための例示的なプロセス500を示す図である。プロセス500は、enc_msgおよびenc_msg_digestの全ての語の排他的論理和をとることによって結果を生成するようにenc_msgおよびenc_msg_digestを反復処理することを含む。この反復処理の結果は、符号化されたメッセージが正しい場合にはvになる。なぜなら、enc_msgおよびenc_msg_digestの語は、図3および図4に関して論じられたループにおいてvのシェアに設定されるからである。しかし、プロセス400は、偶然の一致がありそうもないため、無効な符号化されたメッセージでも値vをもたらし得る。そのため、記載されているシステムおよび方法は、enc_msgおよびenc_msg_digestの各語とその期待シェア値とを比較して、不一致があれば結果を0xffffffffに設定することもする。
【0026】
FI攻撃がない場合、図5における「result」の最終値は、符号化されたメッセージがそもそも正しかった場合にチェックの成功を示す値であるvになり、そうでなければ0xffffffffになる。攻撃者が符号化されたメッセージの語を変更するいずれかの演算を巧みにスキップするまたは繰り返す場合、最後のループで生成される「result」の値は、vとは異なるものになる可能性が高い。なぜなら、符号化されたメッセージの1つまたは複数の語は、正しいシェアに設定されないからである。攻撃者が図5における最後のループの挙動を巧みに変更する場合、「result」の値は、シェアおよびチェックの繰り返しのためにvとは異なるものになる可能性が高い。
【0027】
いくつかの局面において、本明細書で論じられる値vは、ハードウェアコンポーネントに結び付けられ得る。セキュリティチップの中には、特定の構成レジスタが適切な値でプログラムされない限り、フラッシュに格納されたコードを実行するまたは特定の記憶場所にアクセスするなどの、ハードウェア内の特定の動作を無効にすることができる特徴および/または対策を有しているものもある。例えば、値vに基づいてアクションを実行するif-then文を書き込む代わりに、符号化メッセージチェックによって生成された結果が実行レジスタなどのハードウェアレジスタに直接書き込まれる。いくつかの局面において、実行レジスタは、フラッシュデバイスまたは他のストレージデバイスからのコードの実行を可能にする。正しい値(v)がハードウェアレジスタに直接書き込まれると、関連付けられたハードウェアコンポーネントは、さらなる実行を継続することを許可され得る。しかし、正しい値がハードウェアレジスタに書き込まれなければ、ハードウェアコンポーネントは、さらなる実行を阻止し、メモリアクセスおよび他の機能を阻止し得る。いくつかの状況では、if-then文または他のプログラミング文を攻撃することと比較して、攻撃者がハードウェアレジスタに値を格納することはより困難である。
【0028】
図6は、ループ強化のための例示的なプロセス600を示す図である。例示的なプロセス600の文脈において、一連の要素(例えば、実行対象の演算)を処理する際、多くのループまたは他のシーケンスは、シーケンシャルな順序でループを処理する。例えば、このシーケンシャルな順序は、番号順(例えば、1,2,3,4,...)であってもよい。このシーケンシャルな処理は、攻撃者が演算または他の動作の実行順序を判断することを可能にし得る。図6に示されるように、ループは、シーケンシャルでない順序で処理されることができる。例えば、プロセス600は、乱数に基づいてループの中のどこでも開始することができる。次いで、プロセス600は、シーケンシャルにループを続けるのではなく、例えばインデックスに基づいてループ内の異なるポイントにジャンプする。ループが実行されるたびに反復順序が異なるので、プロセスが、容易に検出されるシーケンシャルな順序をたどっていないという理由から、このアプローチは、攻撃者が演算のシーケンスを予測することを防止する。さらに、ループが終了した後、ループカウンタと期待される反復数とが照合され得る。
【0029】
図7は、メッセージデータの比較で用いられる固定のダイジェストを作成するための例示的なプロセスを示す図である。例示的な符号化されたメッセージ700は、バイトの配列702を含む。いくつかの局面において、バイトの配列702は、特定の長さを有するバイトの列であってもよい。バイトの配列702の最後には、SHA256ハッシュ関数に関連付けられたバイトがある。図7の例では、SHA256ハッシュ関数に関連付けられたバイトは、「00303...00420」である。バイトの配列702は、バイトの配列702を取り囲む破線によって識別される。いくつかの局面において、バイトの配列702のサイズは、固定長を有する。例えば、パディングバイト「0001ff...ff」は固定長を有し、SHA256ハッシュ関数に関連付けられたバイトは固定長を有し得る。
【0030】
バイトの配列702の後に続くのは、メッセージのハッシュに関連付けられたダイジェスト704である。図7の例では、ダイジェスト704は、「9f86d...00a08」を含む。ダイジェスト704は、バイトの配列702によって識別されるハッシュ関数(この例では、SHA-256)を、署名対象のメッセージに適用することによって、作成され得る。ダイジェスト704の長さは、バイトの配列702によって識別される、使用されているハッシュ関数によって、さまざまであり得る。いくつかの局面において、符号化されたメッセージ700は、期待されるダイジェストの排他的論理和をとることによって別のメッセージフォーマット710に変換される。そのため、符号化されたメッセージ700は、固定のダイジェストを有する一定値であって全ての有効な署名で使用することができるメッセージフォーマット710に変換される。
【0031】
図8は、符号化メッセージチェックの一部として実行される例示的な条件文800を示す図である。本明細書で論じられる強化された符号化メッセージチェックによって生成された結果は、例えば図8に示される条件「if」文を使用してセキュアブートフローを制御するためにソフトウェアが使用することができる。しかし、符号化メッセージチェックの結果に基づいて分岐するいかなるコードも、さらなる強化から恩恵を受けることができる。なぜなら、これらのタイプの分岐は、しばしば攻撃者の標的になるからである。
【0032】
図9は、符号化メッセージチェックとともに使用される例示的なハードウェアベースのアプローチ900を示す図である。FI攻撃に対するより高いレベルの保護のために、記載されているシステムおよび方法は、ハードウェアレジスタなどの1つまたは複数のハードウェアコンポーネントによって期待される値を値vに変更する。いくつかの局面において、値vは、高いハミング重みおよび非自明なパターンを有する32ビットの定数である。ハードウェアベースのアプローチ900を使用すると、符号化メッセージチェックの挙動を変更したり、それを完全にスキップしたりするFI攻撃は、正しくない値を生成する可能性が高く、1つまたは複数のハードウェアコンポーネントによるフラッシュコード実行をアンロックすることはない。
【0033】
いくつかの局面において、各鍵長に対して異なるシェアのセットを提供することによってさまざまな鍵長をサポートすることができる。例えば、3072ビットの鍵では96個のシェアを使用することができ、2048ビットの鍵では64個のシェアを使用することができる。
【0034】
いくつかの局面において、当該システムおよび方法は、ループのランダム化された反復順序を使用して、符号化されたメッセージの中の自明な反復パターンを他の非自明なパターンと置換することによって、攻撃に対して符号化メッセージチェックを強化するための対策を講じる。さらに、当該システムおよび方法は、処理された符号化されたメッセージのSHA256ダイジェストと期待されるダイジェストとの間の同等性を使用して、符号化されたメッセージが正しいかどうかを判断する。
【0035】
本明細書で論じられるように、複数のアプローチまたは技術がRSA署名検証のための符号化メッセージチェックの強化に有用であり得る。例えば、これらのアプローチのうちのいくつかは、以下を含む。
【0036】
符号化されたメッセージ:シェアを使用して、期待値およびシェアとの排他的論理和をとることによって符号化メッセージチェックの結果を生成する
ダイジェスト:シェアを使用して、期待値およびシェアとの排他的論理和をとることによってダイジェストチェック(例えば、処理された符号化されたメッセージのダイジェスト)の結果を生成する
ハードウェア:ハードウェアレジスタが適切な値vに設定される場合にのみハードウェア実行(例えば、フラッシュ実行)をアンロックする。これは、vを直接書き込むのではなく、期待値およびシェアの排他的論理和をとることによって符号化メッセージチェックによって生成された値をハードウェアコンポーネント(例えば、ハードウェアレジスタ)に書き込むことによって実現される。
【0037】
いくつかの局面において、所望のレベルのセキュリティを提供するために任意の数のアプローチが組み合わせられてもよい。例えば、一実現例は、本明細書で論じられるダイジェストアプローチとともに符号化メッセージアプローチを使用してもよい。他の実現例では、符号化メッセージアプローチとダイジェストアプローチとハードウェアアプローチとを組み合わせることによってさらなるセキュリティが実現されてもよい。他の状況では、符号化メッセージアプローチは、ハードウェアアプローチと組み合わせられてもよい。望まれるセキュリティレベル、複数のアプローチを実現するために利用可能なリソースなどに基づいて、これらのアプローチの任意の組み合わせが使用されてもよい。
【0038】
図10は、RSA署名検証のための強化された符号化メッセージチェックを実現する例示的な方法1000を示す図である。方法1000は、実行される動作を指定するブロックのセットとして示されているが、それぞれのブロックによって動作を実行するための示されている順序または組み合わせに必ずしも限定されるものではない。さらに、さまざまな追加的および/または代替的な方法を提供するために、これらの動作の1つ以上はいずれも、繰り返されてもよく、組み合わせられてもよく、再編成されてもよく、または連結されてもよい。当該技術は、図11を参照して説明するコンピューティングシステム1100を含み得る1つのデバイス上で動作する1つのエンティティまたは複数のエンティティによる実行に限定されるものではない。
【0039】
1002において、システムは、語の配列を含む符号化されたメッセージを受信する。いくつかの局面において、符号化されたメッセージは、パディング、ハッシュ関数識別子およびダイジェストを含むと予想される。符号化されたメッセージは、署名者の署名およびRSA公開鍵を使用して算出され得る。符号化メッセージチェックは、パディングおよびハッシュ関数識別子をチェックすることに加えて、メッセージの実際のダイジェストに対して、符号化されたメッセージの中のダイジェストをチェックし得る。
【0040】
1004において、方法1000は、符号化されたメッセージの中の配列の語のセットを、期待値と、各語に関連付けられたシェアとを使用して、処理する。いくつかのケースでは、語のセットは、語の配列の中の各語を含む。1006において、方法1000は、処理された符号化されたメッセージのダイジェストを算出して、期待値と、各語に関連付けられたシェアとを使用して、ダイジェストの各語を処理する。1008において、方法1000は、符号化されたメッセージの中の語の配列、期待値、および各語に関連付けられたシェアに基づいて検証値を計算する。1010において、方法1000は、検証値が正しいかどうかを判断する。1012において、方法1000は、検証値が正しい場合、ハードウェアデバイスをアンロックする。
【0041】
図11は、開示されているシステムおよび方法の局面を実現することができる例示的なコンピューティングシステム1100のさまざまな構成要素を示す図である。コンピューティングシステム1100は、本明細書に記載されている任意のタイプのクライアント、サーバ、テストシステムおよび/またはデバイスとして実現することができる。代替的にまたは追加的に、コンピューティングシステム1100は、モバイル通信デバイス、モデム、携帯電話、ゲーミングデバイス、ナビゲーションデバイス、メディアデバイス、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマート家電、車両ベースの通信システム、またはモノのインターネット(IoT:Internet-of-Things)デバイスなどの任意の好適なコンピューティングデバイスまたは電子デバイスとして実現されてもよい。コンピューティングシステム1100は、デバイスデータ1104の有線および/または無線通信を可能にする通信デバイス1102を含む。デバイスデータ1104または他のデバイスコンテンツは、デバイスの構成設定、デバイスに格納されたテスト情報、および/または、オブジェクトもしくはデバイスのユーザに関連付けられた情報を含み得る。また、コンピューティングシステム1100は、1つまたは複数のデータ入力1106を含み、これらの1つまたは複数のデータ入力1106を介して任意のタイプのデータ、情報および/または入力を受信することができる。
【0042】
コンピューティングシステム1100は、通信インターフェイス1108をさらに含み、通信インターフェイス1108は、シリアルインターフェイスおよび/またはパラレルインターフェイス、無線インターフェイス、任意のタイプのネットワークインターフェイス、モデムのうちの任意の1つまたは複数として実現されてもよく、その他のタイプの通信インターフェイスとして実現されてもよい。通信インターフェイス1108は、他の電子デバイス、コンピューティングデバイスおよび通信デバイスがコンピューティングシステム1100とデータをやりとりするための通信ネットワークとコンピューティングシステム1100との間の接続および/または通信リンクを提供する。
【0043】
コンピューティングシステム1100は、コンピューティングシステム1100の動作を制御して本明細書で論じられている方法を可能にするようにさまざまなコンピュータ実行可能命令を処理することができる1つまたは複数のプロセッサ1110(例えば、マイクロプロセッサ、マイクロコントローラまたは他のコントローラのうちのいずれか)を含む。代替的にまたは追加的に、コンピューティングシステム1100は、概して1112で識別される処理および制御回路と関連付けて実現されるハードウェア、ファームウェアまたは固定論理回路のうちのいずれか1つまたはこれらの組み合わせで実現されてもよい。図示されていないが、コンピューティングシステム1100は、デバイス内のさまざまな構成要素を結合するシステムバスまたはデータ転送システムを含み得る。システムバスは、さまざまなバスアーキテクチャのうちのいずれかを利用する、メモリバスもしくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、および/または、プロセッサもしくはローカルバスなどの、さまざまなバス構造のうちのいずれか1つまたはこれらの組み合わせを含み得る。また、コンピューティングシステム1100は、マスストレージメディアデバイス(ストレージメディア)1114を含み得る。
【0044】
局面において、コンピューティングシステム1100は、RSA署名検証のための強化された符号化メッセージチェック動作または方法を実現することができる。例えば、コンピューティングシステム1100のセキュリティプロセッサ(例えば、プロセッサ1110)は、語の配列を含む符号化されたメッセージを受信し得る。セキュリティプロセッサは、符号化されたメッセージの中の語の各々を、期待値と、各語に関連付けられたシェアとを使用して、処理し得る。符号化されたメッセージの中の語の配列、期待値、および各語に関連付けられたシェアに基づいて、セキュリティプロセッサによって検証値が計算される。次いで、セキュリティプロセッサは、検証値が正しいかどうかを判断し得て、検証値が正しい場合、セキュリティプロセッサは、後続のコード実行または他のさまざまな動作を可能にするためにコンピューティングシステム1100をアンロックし得る。
【0045】
RSA署名検証のための強化された符号化メッセージチェックのシステムおよび方法の局面が、特徴および/または方法に特有の言語で説明されてきたが、添付の特許請求の範囲の主題は、記載されている特定の特徴または方法に必ずしも限定されるものではない。むしろ、これらの特定の特徴および方法は、記載されている技術の例示的な実現例として開示されており、他の等価の特徴および方法も、添付の特許請求の範囲の範囲内であるよう意図されている。さらに、さまざまな異なる局面が記載されるが、記載されている各局面は、1つまたは複数の他の記載される局面から独立して実現されてもよく、または1つまたは複数の他の記載される局面と関連付けて実現されてもよい、ということが理解されるべきである。
【0046】
ここで、いくつかの局面を提示する
局面1: 方法であって、語の配列を含む符号化されたメッセージを受信するステップと、上記符号化されたメッセージの中の上記語のセットを、期待値と、各語に関連付けられたシェアとを使用して、処理するステップと、上記符号化されたメッセージの中の上記語の配列、上記期待値、および各語に関連付けられた上記シェアに基づいて、検証値を計算するステップと、上記検証値が正しいかどうかを判断するステップと、上記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックするステップとを備える、方法。
【0047】
上記符号化されたメッセージは、ダイジェストを含み得て、上記方法はさらに、上記符号化されたメッセージの中の上記ダイジェストと期待されるダイジェストとを比較するステップを備え得る。
【0048】
上記検証値を計算するステップは、期待値、および上記ダイジェストの各語に関連付けられたシェアに基づいて、上記符号化されたメッセージの上記ダイジェストが上記期待されるダイジェストに一致すると判断することに基づき得る。
【0049】
上記方法はさらに、上記ハードウェアデバイスに関連付けられたハードウェアレジスタに上記検証値を書き込むステップを備え得る。
【0050】
ダイジェストを生成するためにハッシュ関数が上記語の配列に適用され得る。
上記方法はさらに、期待値と、各語に関連付けられたシェアとを使用して、上記符号化されたメッセージの中の上記語の配列の各々をチェックするステップと、上記符号化されたメッセージの中の上記語の配列のシーケンシャルな対に対して複数のXOR(排他的論理和)演算を実行するステップとを備え得る。
【0051】
上記符号化されたメッセージは、パディング、ハッシュ関数識別子またはダイジェストのうちの少なくとも1つを含み得る。
【0052】
上記方法は、RSA(リベスト-シャミア-エーデルマン)署名スキームに適用され得る。
【0053】
上記方法はさらに、複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、上記符号化されたメッセージを強化するステップを備え得る。
【0054】
上記方法はさらに、上記検証値が正しくないとの判断に応答して、上記ハードウェアデバイスをロック状態に維持するステップを備え得る。
【0055】
上記ハードウェアデバイスは、フラッシュデバイスを含み得る。
局面2:方法であって、語の配列、パディング、ハッシュ関数識別子およびダイジェストを含む符号化されたメッセージを受信するステップと、上記符号化されたメッセージの中の上記語の各々を、期待値と、各語に関連付けられたシェアとを使用して、処理するステップと、上記符号化されたメッセージの中の上記語の配列、上記期待値、および各語に関連付けられた上記シェアに基づいて、検証値を計算するステップと、上記検証値が正しいかどうかを判断するステップと、上記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックするステップと、上記検証値が正しくないとの判断に応答して、上記ハードウェアデバイスをロック状態に維持するステップとを備える、方法。
【0056】
上記方法はさらに、上記ハードウェアデバイスに関連付けられたハードウェアレジスタに上記検証値を書き込むステップを備え得る。
【0057】
上記方法はさらに、期待値と、各語に関連付けられたシェアとを使用して、上記符号化されたメッセージの中の上記語の配列の各々をチェックするステップと、上記符号化されたメッセージの中の上記語の配列のシーケンシャルな対に対して複数のXOR(排他的論理和)演算を実行するステップとを備え得る。
【0058】
上記方法はさらに、複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、符号化されたメッセージを強化するステップを備え得る。
【0059】
局面3:装置であって、ハードウェアデバイスと、上記ハードウェアデバイスへのアクセスを制御するように構成されたプロセッサとを備え、上記プロセッサは、動作を実行するように構成され、上記動作は、語の配列を含む符号化されたメッセージを受信することと、上記符号化されたメッセージの中の上記語の各々を、期待値と、各語に関連付けられたシェアとを使用して、処理することと、上記符号化されたメッセージの中の上記語の配列、上記期待値、および各語に関連付けられた上記シェアに基づいて、検証値を計算することと、上記検証値が正しいかどうかを判断することと、上記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックすることとを含む、装置。
【0060】
上記符号化されたメッセージは、ダイジェストを含み得て、上記動作はさらに、上記符号化されたメッセージの中の上記ダイジェストと期待されるダイジェストとを比較することを含む。
【0061】
上記動作はさらに、上記ハードウェアデバイスに関連付けられたハードウェアレジスタに上記検証値を書き込むことを含み得る。
【0062】
上記符号化されたメッセージは、パディング、ハッシュ関数識別子またはダイジェストのうちの少なくとも1つを含み得る。
【0063】
上記動作はさらに、複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、上記符号化されたメッセージを強化することを含み得る。
【0064】
局面4:装置であって、ハードウェアデバイスと、プロセッサと、上記プロセッサによって実行されると局面1または局面2に関連して記載された1つまたは複数のステップを実行するように上記装置を仕向ける命令を含むコンピュータ可読記憶媒体とを備える、装置。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【手続補正書】
【提出日】2023-11-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
語の配列を含む符号化されたメッセージを受信するステップと、
前記符号化されたメッセージの中の前記語のセットを、期待値と、前記語の前記セットの各語に関連付けられたシェアとを使用して、処理するステップと、
前記符号化されたメッセージの中の前記語の配列、前記期待値、および前記語の前記セットの各語に関連付けられた前記シェアに基づいて、検証値を計算するステップと、
前記検証値が正しいかどうかを判断するステップと、
前記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックするステップとを備える、方法。
【請求項2】
前記語の前記セットは、前記配列の各語を含み、
前記符号化されたメッセージは、ダイジェストを含み、前記方法はさらに、前記符号化されたメッセージの中の前記ダイジェストと期待されるダイジェストとを比較するステップを備える、請求項1に記載の方法。
【請求項3】
前記検証値を計算するステップはさらに、期待値、および前記ダイジェストの各語に関連付けられたシェアに基づいて、前記符号化されたメッセージの前記ダイジェストが前記期待されるダイジェストに一致すると判断することに基づく、請求項2に記載の方法。
【請求項4】
前記ハードウェアデバイスに関連付けられたハードウェアレジスタに前記検証値を書き込むステップをさらに備える、請求項1から3のいずれか1項に記載の方法。
【請求項5】
ダイジェストを生成するためにハッシュ関数が前記語の配列に適用される、請求項1から3のいずれか1項に記載の方法。
【請求項6】
前記語の前記セットは、前記配列の各語を含み、前記方法はさらに、
期待値と、各語に関連付けられたシェアとを使用して、前記符号化されたメッセージの中の前記語の配列の各々をチェックするステップと、
前記符号化されたメッセージの中の前記語の配列のシーケンシャルな対に対して複数のXOR(排他的論理和)演算を実行するステップとを備える、請求項1から3のいずれか1項に記載の方法。
【請求項7】
前記符号化されたメッセージは、パディング、ハッシュ関数識別子またはダイジェストのうちの少なくとも1つをさらに含む、請求項1からのいずれか1項に記載の方法。
【請求項8】
前記方法は、RSA(リベスト-シャミア-エーデルマン)署名スキームに適用される、請求項1からのいずれか1項に記載の方法。
【請求項9】
複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、前記符号化されたメッセージを強化するステップをさらに備える、請求項1からのいずれか1項に記載の方法。
【請求項10】
前記検証値が正しくないとの判断に応答して、前記ハードウェアデバイスをロック状態に維持するステップをさらに備える、請求項1からのいずれか1項に記載の方法。
【請求項11】
方法であって、
語の配列、パディング、ハッシュ関数識別子およびダイジェストを含む符号化されたメッセージを受信するステップと、
前記符号化されたメッセージの中の前記語の各々を、期待値と、各語に関連付けられたシェアとを使用して、処理するステップと、
前記符号化されたメッセージの中の前記語の配列、前記期待値、および各語に関連付けられた前記シェアに基づいて、検証値を計算するステップと、
前記検証値が正しいかどうかを判断するステップと、
前記検証値が正しいとの判断に応答して、ハードウェアデバイスをアンロックするステップと、
前記検証値が正しくないとの判断に応答して、前記ハードウェアデバイスをロック状態に維持するステップとを備える、方法。
【請求項12】
前記ハードウェアデバイスに関連付けられたハードウェアレジスタに前記検証値を書き込むステップをさらに備える、請求項11に記載の方法。
【請求項13】
期待値と、各語に関連付けられたシェアとを使用して、前記符号化されたメッセージの中の前記語の配列の各々をチェックするステップと、
前記符号化されたメッセージの中の前記語の配列のシーケンシャルな対に対して複数のXOR(排他的論理和)演算を実行するステップとをさらに備える、請求項11または12に記載の方法。
【請求項14】
複数の語、期待値およびシェアグループに対して複数のXOR(排他的論理和)演算を実行することによって、符号化されたメッセージを強化するステップをさらに備える、請求項11または12に記載の方法。
【請求項15】
装置であって、
ハードウェアデバイスと、
前記ハードウェアデバイスへのアクセスを制御するように構成されたプロセッサと、
前記プロセッサによって実行されると請求項1~3、11および12のいずれかに記載の方法のステップを実行するように前記装置を仕向ける命令を含むコンピュータ可読記憶媒体とを備える、装置。
【請求項16】
コンピュータに請求項1~3、11および12のいずれかに記載の方法を実行させるためのコンピュータ実行可能命令。
【国際調査報告】