JP2016508002A - 固定長データ構造の完全性を保護するための方法 - Google Patents

固定長データ構造の完全性を保護するための方法 Download PDF

Info

Publication number
JP2016508002A
JP2016508002A JP2015556977A JP2015556977A JP2016508002A JP 2016508002 A JP2016508002 A JP 2016508002A JP 2015556977 A JP2015556977 A JP 2015556977A JP 2015556977 A JP2015556977 A JP 2015556977A JP 2016508002 A JP2016508002 A JP 2016508002A
Authority
JP
Japan
Prior art keywords
data structure
keys
authentication code
processing circuit
masks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015556977A
Other languages
English (en)
Other versions
JP6077678B2 (ja
JP2016508002A5 (ja
Inventor
アレクサンダー・ダブリュー・デント
キャン・エルキン・アカール
ビリー・ビー・ブラムリー
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016508002A publication Critical patent/JP2016508002A/ja
Publication of JP2016508002A5 publication Critical patent/JP2016508002A5/ja
Application granted granted Critical
Publication of JP6077678B2 publication Critical patent/JP6077678B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Abstract

1つの特徴は、計算的に効率的なアルゴリズムを使用することによってデータ構造を安全にするための機構に関連する。複数の鍵および/またはマスクは、セッションのブートアップまたは開始で事前生成され得る。認証コードは、複数の事前生成した鍵のサブセットおよび/または複数の事前生成したマスクからマスクを選択することによって各データ構造(たとえば、メモリブロックまたはヘッダブロック)について計算され得る。認証コードは、データ構造の完全性の将来の検証のためにデータ構造内に記憶され得る。すべての認証コードに対して(たとえば、他のデータ構造に対して)使用される鍵および/またはマスクは、同じサイクルまたはセッション中には同じ複数の鍵および/またはマスクから選択され得る。

Description

様々な特徴は、メッセージ認証コードの使用による攻撃からのデータ構造の保護に関する。
ヒープメモリは、プロセッサによって確保され、メタデータ構造の使用により編成される。メタデータ構造は、(たとえば、ヘッダブロック内の)情報を含む固定長データ構造であってもよく、この情報に関して、変数は、(メモリが割り当てられている場合には)メモリの次の区分、および対応するメモリブロック内に確保されているメモリの大きさを「持っている」。攻撃者は、空いているメモリの大きさを減少させるため、またはある種データの重要な部分がメモリの攻撃されやすい区分中に置かれることを確実にするために、これらのメタデータ構造を壊そうとしたがる。したがって、データ構造の認可されていない改変を防止するために、このメタデータ(たとえば、データ構造またはメモリブロックのヘッダブロック内のデータ)を保護することが望ましい。
したがって、計算的に経済的な解決策が、データ構造を保護するために必要とされている。
認証コードを生成する方法が提供される。複数の別個の鍵を含む鍵のセットは、処理回路のスタートアップでまたは処理回路上で実行されるセッションで事前生成される。複数の別個のマスクを含むマスクのセットも事前生成される。マスクのセットも、処理回路のスタートアップでまたは処理回路上で実行されるセッションで事前生成され得る。鍵のセットおよび/またはマスクのセットのうちの少なくとも一方が、ランダム値に基づいて生成され得る。
固定長データ構造に関係付けられた複数の変数入力が、取得され得る。マスクおよび選択した対応する鍵の各々は、少なくとも部分的に、複数の変数入力のうちの少なくとも1つに基づいて選択され得る。
複数の変数入力の各々は、複数の一時的な値を取得するために、鍵のセットからの選択した対応する鍵と組み合わせられ得る。複数の一時的な値は、次いで、中間値を取得するために組み合わせられ得る。中間値とマスクのセットからの選択したマスクとの間の演算は、次いで、固定長データ構造についてのメッセージ認証コードを取得するために実行され得る。鍵のセットは、鍵のサブセットへと細分化されることが可能であり、鍵のサブセット(たとえば、1つの鍵、2つの鍵、等)だけが、メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される。
複数の変数入力のうちの少なくとも1つは、固定長データ構造に関係付けられたメモリアドレスであり得る。選択した対応する鍵の各々は、メモリアドレスに基づいて選択され得る。選択したマスクは、メモリアドレスに基づいて選択され得る。
複数の一時的な値は:(a)組合せ値を取得するために複数の一時的な値を加算すること、および/または(b)中間値を取得するために、組合せ値について事前選択した固定素数とのモジュロ演算を実行することによって組み合わせられ得る。鍵のセット内の各鍵の値は、ゼロと事前選択した固定素数との間であり得る。中間値と選択したマスクとの間の演算は、たとえば、ビット単位の排他的論理和演算であり得る。
マスクのセットおよび鍵のセットのうちの少なくとも一方は、スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置に記憶され得る。メッセージ認証コードは、メモリデバイスの固定長データ構造内に記憶され得る。メッセージ認証コードは、固定長データ構造に関するヘッダブロック内に記憶され得る。
その後の検証ステージ中には、前に記憶したメッセージ認証コードが、データ構造から取得され得る。メッセージ認証コードは、次いで、データ構造の完全性を確認するために、前に記憶したメッセージ認証コードと比較され得る。
同様に、メモリデバイスと、メモリデバイスに結合された処理回路とを備えるデバイスが、提供され得る。メモリデバイスは、固定長データ構造を記憶するように働くことができる。処理回路は:(a)処理回路のスタートアップでまたは処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成し、(b)複数の別個のマスクを含むマスクのセットを事前生成し、(c)固定長データ構造に関係付けられた複数の変数入力を取得し、(d)複数の一時的な値を取得するために、複数の変数入力の各々を鍵のセットからの選択した対応する鍵と組み合わせ、(e)中間値を取得するために複数の一時的な値を組み合わせ、(f)固定長データ構造についてのメッセージ認証コードを取得するために、中間値とマスクのセットからの選択したマスクとの間の演算を実行するように構成され得るまたは適合され得る。
マスクのセットは、処理回路のスタートアップでまたは処理回路上で実行されるセッションでも事前生成され得る。
鍵のセットおよびマスクのセットのうちの少なくとも一方は、ランダム値に基づいて生成される。
複数の一時的な値は:(a)組合せ値を取得するために複数の一時的な値を加算すること、および/または(b)中間値を取得するために、組合せ値について事前選択した固定素数とのモジュロ演算を実行することによって組み合わせられ得る。鍵のセット内の各鍵の値は、ゼロと事前選択した固定素数との間であり得る。中間値と選択したマスクとの間の演算は、ビット単位の排他的論理和演算であり得る。
マスクおよび選択した対応する鍵の各々は、複数の変数入力のうちの少なくとも1つに基づいて選択される。複数の変数入力のうちの少なくとも1つは、固定長データ構造に関係付けられたメモリアドレスである。選択した対応する鍵の各々は、メモリアドレスに基づいて選択される。選択したマスクは、メモリアドレスに基づいて選択され得る。
鍵のセットは、鍵のサブセットへと細分化されることが可能であり、鍵のサブセット(たとえば、1つの鍵、2つの鍵、等)だけが、メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される。
処理回路は、スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内にマスクのセットおよび鍵のセットのうちの少なくとも一方を記憶するようにさらに適合され得る。
処理回路はまた、メモリデバイスの固定長データ構造内にメッセージ認証コードを記憶するようにさらに適合され得る。メッセージ認証コードは、固定長データ構造に関するヘッダブロック内に記憶され得る。
処理回路は:(a)データ構造から前に記憶したメッセージ認証コードを取得すること、および/または(b)データ構造の完全性を確認するために、メッセージ認証コードを前に記憶したメッセージ認証コードと比較するようにさらに適合され得る。
暗号鍵を使用してメッセージ認証コード(MAC)を有するメモリ内のデータ構造を保護するための1つの手法を図示するブロック図であり、暗号鍵は、安全な長期記憶装置内に記憶される、または関係するメモリコントローラがブートするときにはいつでもランダムに生成されかつ安全な揮発性メモリに保持される、のいずれかである。 図1の暗号MACよりもより計算的に効率的であるMAC-Lite発生器を使用してデータ構造を保護するための別の手法を図示するブロック図である。 巡回冗長検査(CRC)またはカナリア値よりもより高い安全性を有する一方で、図1の暗号MACよりもより計算的に効率的であるMAC-Liteアルゴリズム302の例を図示する図である。 従来のMACよりもより効率的にMACを生成するために実施され得るMAC-Liteアルゴリズムの一例を図示する図である。 認証コードがマスクの別個のセットおよび鍵の別個のセットの事前生成に基づいて生成される一般的な手法を図示する図である。 データ構造の完全性を安全にするためにMAC-Liteアルゴリズムを実行するように適合されたデバイスの例示的な実装形態を図示するブロック図である。 マスクの別個のセットおよび鍵の別個のセットの事前生成に基づいてメモリ空間についての認証コードを生成する例を図示する図である。
下記の説明では、具体的な詳細が、本開示の様々な態様の完全な理解を提供するために与えられる。しかしながら、態様がこれらの具体的な詳細がなくとも実施し得ることを、当業者なら理解するであろう。たとえば、回路は、不必要な詳細で態様を不明瞭にすることを避けるためにブロック図で示されることがある。他の事例では、よく知られた回路、構造および技術は、本開示の態様を不明瞭にしないために詳細には示されないことがある。
「例示的な(exemplary)」という語は、「例、事例、または実例として働くこと」を意味するように本明細書においては使用される。「例示的な」として本明細書において説明するいずれかの実装形態または態様は、本開示の他の態様よりも好ましいまたは有利であると必ずしも解釈される必要はない。同じように、「態様」という用語は、本開示のすべての態様が論じた特徴、利点または操作のモードを含むことを必ずしも必要としない。
概要
1つの特徴は、計算的に効率的なアルゴリズムを使用することによってデータ構造を安全にするための機構を提供する。複数の鍵および/またはマスクは、セッションのブートアップまたは開始で事前生成され得る。認証コードは、複数の事前生成した鍵のサブセットおよび/または複数の事前生成したマスクからマスクを選択することによって、各データ構造(たとえば、メモリブロックまたはヘッダブロック)について計算され得る。認証コードは、データ構造の完全性の将来の検証のためにデータ構造内に記憶され得る。すべての認証コードに対して(たとえば、他のデータ構造に対して)使用される鍵および/またはマスクは、同じサイクルまたはセッション中には同じ複数の鍵および/またはマスクから選択され得る。
この手法は、他の暗号メッセージ認証コード(MAC)手法よりも低い安全性であるが、標準巡回冗長検査(CRC)実装形態よりもわずかに少ない実装コストを有しつつCRCまたはカナリア値よりもより高い安全性を提供することができる。この解決策は、入力の形式の知識からおよび通常の数よりも多くのランダム鍵または疑似ランダム鍵を使用することによって効率性を得る。
動的に生成したメッセージ認証コードを有する例示的なメモリ構造
図1は、暗号鍵を使用してメッセージ認証コード(MAC)を有するメモリ内のデータ構造を保護するための1つの手法を図示するブロック図であり、暗号鍵は、安全な長期記憶装置内に記憶される、または関係するメモリコントローラがブートするときにはいつでもランダムに生成されかつ安全な揮発性メモリに保持される、のいずれかである。処理回路102は、メモリデバイス104または記憶装置に結合され得るおよび/または集積され得る。メモリデバイス104は、メモリブロック114a、114b、および/または114cとして配列されたメモリ空間を含むことができる。各メモリブロック114a、114b、114cは、ヘッダブロック106a、106b、および106c、ならびに対応するブロック確保メモリ空間108a、108b、および108cを含むことができる。ヘッダブロック106は、データ構造(たとえば、メタデータ構造)を記憶するように働くことができる。
処理回路102は、各ヘッダブロック106またはメモリブロック114についてのMAC110を計算しかつそのようなMAC110を各対応するヘッダブロック106内に記憶するMAC発生器112を実装するように構成され得る。一例では、MAC発生器(たとえば、処理回路またはモジュール)は、複数のラウンドまたは反復を有する特定のMACアルゴリズム116(たとえば、ハッシュベースメッセージ認証コード(HMAC)-安全なハッシュアルゴリズム1(SHA-1)、高度暗号化標準(AES)-暗号ベースMAC(CMAC)、およびデータ認証アルゴリズム(DAA)、等)を実施することができる。
時々鍵つきまたは暗号ハッシュ関数とも呼ばれる、典型的なMACアルゴリズム116は、秘密鍵118および認証すべき任意長メッセージ120を入力として受け取り、MAC値を出力する。MAC値は、検証者(秘密鍵も所有する者)がメッセージコンテンツ(たとえば、ヘッダブロック106および/またはメモリブロック114)への何らかの変更を検出することを可能にすることによって、メッセージのデータ完全性ならびにその信頼性を保護する。
様々な例では、MACアルゴリズム116は、「メッセージ」入力120の一部として、メモリアドレス122を含むことができ、そのアドレスで、ヘッダブロックが始まり、ブロック確保メモリ空間が始まり、および/またはそのアドレスに、データ構造内の特定のメタデータが保持される。このMACは、データ構造内に(ヘッダブロック106内に)記憶されることもでき、データ構造が読み出されるまたは書き込まれるときにはいつでも検査されることもできる。加えて、MACアルゴリズム116は、「メッセージ」入力120の一部として、ヘッダブロックのコンテンツ(たとえば、その中に記憶されたデータ構造)および/またはコマンドなどの他の入力1…n 124も含むことができる。MAC110aが、対応するヘッダブロック106a内の情報のうちの少なくともいくつか(たとえば、メモリブロック114aまたはブロック確保メモリ空間108aに関するメモリアドレス、メモリブロック114aまたはブロック確保メモリ空間108aのサイズ、等)に基づいて計算されるので、ヘッダブロック106a、メモリブロック114aもしくはブロック確保メモリ空間108aに関するアドレス、および/または対応するメモリブロック114aおよび/もしくはブロック確保メモリ空間108aのサイズを改ざんしようとする何らかの試みは、対応するMAC110aを検証することによって検出され得る。
しかしながら、この手法は、データ構造(ヘッダブロック106)がアクセスされるときごとに暗号MAC操作を必要とするため、計算的に不経済であるという欠点を有する。典型的な暗号MACアルゴリズム(たとえば、HMAC-SHA-1、AES-CMAC、DAA、等)は、複数の計算的に不経済であるラウンドを実施することによっておよび/またはMACが計算されるときに疑似ランダムマスク値を生成することによってより大きい安全性を提供することを探し求めている。結果として、典型的な暗号MAC操作は、計算的に集約的であり、暗号MACが計算されるときごとにかなりの処理リソースを消費することがある。
メモリブロック114(たとえば、および/または対応するヘッダブロック106内のデータ構造)が頻繁にアクセスされる場合には、これはデータ構造がヒープメモリ構造などのメモリ割当てに関する情報を保持するケースである恐れがあり、その場合、MAC110の検証は、許容できない処理リソースを消費することがある。
事前生成した鍵および/またはマスクを使用するLiteメッセージ認証コードを有する例示的なメモリ構造
図2は、図1の暗号MACよりもより計算的に効率的であるMAC-Lite発生器を使用してデータ構造を保護するための別の手法を図示するブロック図である。処理回路202は、メモリデバイス204または記憶装置に結合され得るおよび/または集積され得る。メモリデバイス204は、メモリブロック214a、214b、および/または214cとして配列されたメモリ空間を含むことができる。各メモリブロック214a、214b、214cは、ヘッダブロック206a、206b、および206c、ならびに対応するブロック確保メモリ空間208a、208b、および208cを含むことができる。ヘッダブロック206は、データ構造(たとえば、メタデータ構造)を記憶するように働くことができる。
処理回路202は、各ヘッダブロック206またはメモリブロック214についてのMAC210を計算しかつそのようなMAC210を各対応するヘッダブロック206内に記憶するMAC-Lite発生器212を実装するように構成され得る。一例では、MAC発生器212(たとえば、MAC処理回路またはモジュール)は、複数のスタートアップ生成鍵218および/またはスタートアップ生成マスク217がメッセージ入力220についてのMACを生成する際に使用される特定のMAC-Liteアルゴリズム216を実施することができる。
複数のスタートアップ生成鍵218およびスタートアップ生成マスク217は、ブートアップ間にまたはアプリケーションセッション中にMACを生成するために使用され得る。たとえば、複数のスタートアップ生成鍵218および/またはスタートアップ生成マスク217からの選択した鍵および/またはマスクは、サイクルまたはセッション中にすべてのデータ構造についてのすべてのMACを生成するために使用され得る。
様々な例では、MAC-Liteアルゴリズム216は、「メッセージ」入力220の一部として、メモリアドレス222を含むことができ、そのアドレスで、ヘッダブロックが始まり、ブロック確保メモリ空間が始まり、および/またはそのアドレスに、データ構造の特定のメタデータが保持される。メッセージ入力のうちの少なくとも1つ(たとえば、メモリアドレス、等)は、スタートアップ生成鍵218から別個の複数の1つもしくは複数の鍵を選択する際、および/またはスタートアップ生成マスク217からマスクを選択する際に使用され得る。選択した鍵および/またはマスクは、次いで、複数の計算的に不経済であるラウンドおよび/または疑似ランダムマスク値の計算を実行時に避けつつMAC210を生成するために使用される。
加えて、MACアルゴリズム216は、「メッセージ」入力220の一部として、ヘッダブロックのコンテンツ(たとえば、その中に記憶されたデータ構造)などの他の入力1…n 224も含むことができる。MAC210aが、対応するヘッダブロック206a内の情報のうちの少なくともいくつか(たとえば、メモリブロック214aまたはブロック確保メモリ空間208aに関するメモリアドレス、メモリブロック214aまたはブロック確保メモリ空間208aのサイズ、等)に基づいて計算されるので、ヘッダブロック206a、メモリブロック214aもしくはブロック確保メモリ空間208aに関するアドレス、ならびに/または対応するメモリブロック214aおよび/もしくはブロック確保メモリ空間208aのサイズを改ざんしようとする何らかの試みは、対応するMAC210aを検証することによって検出され得る。
このMAC210は、データ構造内に(ヘッダブロック206内に)記憶されることが可能であり、データ構造がアクセスされる(たとえば、読出し操作または書込み操作)ときにはいつでも検査され得る。
図3は、巡回冗長検査(CRC)またはカナリア値よりもより高い安全性を有する一方で、図1の暗号MACよりもより計算的に効率的であるMAC-Liteアルゴリズム302の例を図示する。このMAC-Liteアルゴリズム302は、たとえば、図2のMAC-Lite発生器212によって実装され得る。
この手法では、鍵のセット304および/またはマスク306は、ブートアップ時におよび/またはスタートアップにおいて事前生成されることが可能であり、その後、1つまたは複数のメモリブロックについてのMACを生成するために(たとえば、全体のセッション中に)使用され得る。たとえば、複数の鍵304k[0][0], …, k[n][NK-1]は、ランダムにまたは疑似ランダムに生成され得る(たとえば、ランダム値または疑似ランダム値に基づいて生成され得る)。この例では、複数の鍵304k[0][0], …, k[n][NK-1]は、鍵の第1のサブセット306a k[0][0], …, k[0][NK-1]、鍵の第2のサブセット306b k[1][0], …, k[1][NK-1]、鍵の第3のサブセット306c k[n][0], …, k[n][NK-1]を含む複数のサブセット306a、306b、および306cへとグループ分けされている。これらの鍵値は、潜在的な攻撃者には、秘密かつ変更不可能であるべきである。
同様に、mask[0], mask[1], …, mask[NM-1]を含む複数のマスク値308は、ブート時および/またはスタートアップにおいて事前生成されることが可能であり、その後、1つまたは複数のメモリブロックについてのMACを生成するために(たとえば、全体のセッション中に)使用され得る。
この例では、MAC-Liteアルゴリズム302は、入力として:複数の入力Input_1 310a, Input_2 310b, Input_n 310c、可変メモリアドレス312、事前選択のまたは所定の素数p 314、選択したマスク316、および/または鍵のセット304から選択される複数の選択した鍵318を採用することができる。一例では、マスク値308 mask[0], mask[1], …, mask[NM-1]は、各々、素数p 314と同じビット長のものであり得る。加えて、鍵のセット304内の鍵値k[0][0], …, k[n][NK-1]は、0とp-1との間(両端を含む)であり得る。
所与のメモリブロックについて、MACは、MAC-Liteアルゴリズム302を使用して生成され得る。複数の鍵318は、たとえば、可変メモリアドレス312から生成される1つまたは複数のインデックスに基づいて鍵のセット304から選択され得る。たとえば、関数fおよび可変メモリアドレス312 addrは、鍵インデックス:f(addr)=key_index_0, …, key_index_nを生成するために働くことができる。たとえば、鍵インデックスの各々は、整数値0とNK-1との間であってもよい。その結果、選択される鍵のセット318は、複数の鍵304のサブセット306a、306b、および306cの各々から選択され得る。
同様に、マスク316は、たとえば、可変メモリアドレス312から生成されるインデックスに基づいて複数のマスク値308から選択され得る。たとえば、同じまたは異なる関数fおよび可変メモリアドレス312 addrは、マスクインデックス:f(addr)=mask_indexを生成するために働くことができる。たとえば、マスクインデックス313は、整数値0とNM-1との間であってもよい。その結果、マスク316は、複数のマスク308から選択され得る。
選択した複数の鍵318、選択したマスク316、素数p 314、および可変メモリアドレス312, input_1 310a, input_2 310b, …, input_n 310cは、予測することが困難なMAC出力を生成する方法で組み合わせられ得る。メモリ管理のケースに関して、可変メモリアドレス(addr)312は、たとえば、メモリ構造のヘッダブロックに関する開始アドレスであってもよい。同じように、複数の他の入力変数input_1 310a, input_2 310b, …, input_n 310cは、データ構造またはヘッダブロック中の異なる変数であり得る。MAC-Liteアルゴリズム302は、いずれかの可能な個々の入力(たとえば、k[j][i]≦p-1)よりも大きいことがあり得る素数p 314によってパラメータ化されることが可能であり、この個々の入力は、MAC-Liteアルゴリズム302に関する入力特性が知られるという仮定のおかげで決定され得る。全単射方式で素数p 314よりも小さくなることがすべて保証される入力のセットに対して可能性のある入力のセットを効率的に写像することが可能である限り、この素数p 314は、いくつかの可能な入力(たとえば、選択した鍵318、選択したマスク316、メモリアドレス312、および/または入力310)よりも小さいことが可能である。これはまた、小さい入力が1つの大きい変数へと組み合わせられることを可能にする。この素数p 314は、公表され得るが、攻撃者によって変更可能にするべきではない。
代替実装形態では、入力(たとえば、選択した鍵318、選択したマスク316、メモリアドレス312、および/または入力310)もまた、入力をフィールドの要素へ写像することによって、任意有限フィールドGF(2^n)を使用して実装され得る。
一例では、MAC-Liteアルゴリズム302は、2つのステージを含むことができる。先ず、中間多項式値(Val)が:
Intermediate_Val=addr*k[0][key_index_0]+
input_1*k[1][key_index_1]+
input_2*k[2][key_index_2]+…+
input_n*k[n][key_index_n]mod p.
として計算される。次いで、MAC値が:
MAC_value=Intermediate_Val XOR mask[mask_index]
として計算される。このようにして、MAC-Liteアルゴリズム302は、メモリブロックがアクセスされるときごとに反復計算の複数のラウンドを避けつつ、比較的安全である出力MAC値320を生成することができる。
図4は、従来のMACよりもより効率的にMACを生成するように実施され得るMAC-Liteアルゴリズムの一例を図示する。鍵のセットk[0][0]、…、k[n][NK-1]は、デバイスまたはセッションスタートアップまたは開始において事前生成される402。同様に、マスクのセットmask[0]、mask[1]、…、mask[NM-1]は、デバイスまたはセッションスタートアップまたは開始において事前生成される404。データ構造に関係付けられた複数の変数入力(たとえば、addr、input_1、input_2、…、input_n)を取得する406。鍵のセットからの複数の鍵(たとえば、k[0][key_index_0]、k[1][key_index_1]、k[2][key_index_2]、およびk[n][key_index_n])は、入力のうちの1つまたは複数から選択される408。同様に、マスクのセットからのマスク(たとえば、mask[mask_index])は、変数入力のうちの1つまたは複数に基づいて選択される410。中間値は、複数の一時的な値を取得するために複数の変数入力の各々を対応する選択した鍵と組み合わせ、複数の一時的な値を組み合わせ、そして中間値を取得するためにモジュロp演算を実行することによって計算される412。様々な例では、各入力および対応する鍵は、論理演算、算術演算(たとえば、乗算)、および/または2つの値を組み合わせるため、および一時的な値を取得するために使用され得るいずれかの他の演算もしくは関数を使用して組み合わせられてもよい。1つの事例では、Intermediate_Val=addr*k[0][key_index_0]+input_1*k[1][key_index_1]+input_2*k[2][key_index_2]+…+input_n*k[n][key_index_n]mod pであり、ここで、pは素数である。排他的論理和(XOR)演算は、次いで、メッセージ認証コード(MAC)を取得するために、中間値と選択したマスク(たとえば、mask[mask_index])との間で実行され得る414。
1つの例示的な実装形態では、複数の鍵304(たとえば、鍵のセット)は、インデックスを付けられてもよい(たとえば、key_index_xによって選択可能である)。同様に、複数のマスク308(たとえば、マスクのセット)は、インデックスを付けられてもよい(たとえば、mask_index 313によって選択可能である)。結果として、key_index値および/またはmask_indexは、データ構造に関する変数入力のうちの1つに基づいて生成され得る。単独でまたは他の情報と組み合わせて、変数入力を使用する様々な他の方法は、変数入力に依存して変化する(たとえば、変数入力が変わることがデータ構造の全体にわたり明らかであり得る)mask_indexを生成する際に使用され得る。mask_indexは、複数のNM個のマスク308の中から選択されることが可能であり、ここで、NMは、整数値であり、MAC値320の計算の際に使用される。複数のマスク308の中からの特定のmask_index 313の選択は、ランダムであり得るし、疑似ランダムであり得るし、および/またはいくつかの選択アルゴリズム(たとえば、メモリアドレス312の関数として)に従い得る。一例では、複数のマスク308内のマスクの各々は、素数p 314と同じビット長を有することができる。
一例では、複数の鍵304は、各々がNK個の要素(すなわち、鍵)を有するサブセット306a、306b、306cへと細分化され得る。複数のkey_index_xは、mask_indexの選択と同様に、同じ変数入力または異なる変数入力に基づいて選択され得る。たとえば、鍵のセット304のサブセット306a、306b、および306cの長さNKは、サブセット306a、306b、306cの各々に関する鍵インデックス値を導出するために使用され得る。たとえば、複数のマスク308の中からの特定のkey_index 313(たとえば、key_index_1、key_index_2、…、key_index_n)の選択は、ランダムであり得るし、疑似ランダムであり得るし、および/またはいくつかの選択アルゴリズム(たとえば、メモリアドレス312の関数として)に従い得る。好ましくは、サブセット306a、306b、306cの各々の中へのkey_indexは、攻撃者に対してより大きい安全性を提供するために異なる。
MAC-Liteアルゴリズム302が、単にメモリ完全性のためだけでなく、様々な異なる文脈(context)において使用され得ることに留意されたい。このMAC-Liteアルゴリズム302がメモリ完全性のために使用されるケースでは、MAC320は、メモリブロックに関するヘッダブロック内のデータ構造の一部として記憶され得る。同じメモリブロックへのその後のアクセス(たとえば、読出しまたは書込み)で、MACは、生成され、ヘッダブロック内の前に記憶したMACと比較されて、これらが同じであることを確かめる。MACが異なる場合には、メモリブロックが危険に曝されていると仮定または結論付けることができ、メモリブロックがフラッシュされるまたは無視され得る。加えて、危険に曝されたメモリブロックの発生はまた、メモリ領域内の他のメモリ構造が危険に曝されているかもしれないことを示すことができる。その結果、他のメモリブロックも、フラッシュされ無視され得る、またはシステムは、再スタートされ得る。
図5は、認証コードがマスクの別個のセットおよび鍵の別個のセットの事前生成に基づいて生成される一般的な手法を図示する。複数の別個の鍵を含む鍵のセットが、事前生成される502。たとえば、鍵のセットは、処理回路のスタートアップで、処理回路のブートアップで、および/または処理回路上で実行されるセッション(たとえば、処理セッション、アプリケーションセッション、通信セッション、等)の開始で生成され得る。いくつかの実装形態では、鍵のセットは、図3に図示したようにサブセット(たとえば、鍵のセット304ならびにサブセット306a、306b、および306c)へと細分化され得る。同様に、別個のマスクを含むマスクのセットが、事前生成される504。たとえば、マスクのセットも、処理回路のスタートアップで、処理回路のブートアップで、および/または処理回路上で実行されるセッション(たとえば、処理セッション、アプリケーションセッション、通信セッション、等)の開始で生成され得る。鍵のセットおよびマスクのセットのうちの少なくとも一方は、(たとえば、ハードウェアランダムビット発生器、予想できないシステムイベントに基づく乱数発生器、ソフトウェア乱数発生器、シード値に基づく疑似乱数発生器、等からの)ランダム値に基づいて生成され得る。鍵のセットおよびマスクのセットは、秘密に保たれ得る。
データ構造(たとえば、メッセージ、メモリ領域、データ、ファイル、伝送、ヘッダブロック情報、等)に関係付けられた複数の変数入力が、引き続いて取得され得る506。いくつかの実装形態では、そのような変数入力は、データ構造に関係付けられたメモリアドレスまたはデータ構造の位置を含むことができる。
複数の変数入力の各々は、複数の一時的な値を取得するために、鍵のセットからの選択した対応する鍵と(たとえば、論理演算または乗算などの算術演算によって)組み合わせられ得る508。複数の一時的な値は、次いで、1つの組合せ値を取得するために(たとえば、論理演算または加算などの算術演算、等によって)組み合わせられる510。複数の異なる鍵の各々は、複数の変数入力のうちの少なくとも1つに基づいて選択され得る。モジュロ演算が、次いで、中間値を取得するために、固定素数を使用して1つの組合せ値について実行され得る512。一例では、中間値は、複数の一時的な値を取得するために複数の変数入力の各々とその選択した対応する鍵との乗算として計算され得、その結果得られた一時的な値を加算し、かつ事前選択した固定素数とのモジュロ演算を実行し得る。使用する各鍵の値は、ゼロと素数との間であり得る。
排他的論理和(XOR)演算は、次いで、データ構造についてのメッセージ認証コードを取得するために、中間値とマスクのセットからの選択したマスクとの間で実行され得る514。マスクは、複数の変数入力のうちの少なくとも1つ(たとえば、データ構造に対応する可変メモリアドレス空間)に基づいて選択され得る。代替実装形態では、異なる演算(たとえば、論理演算または算術演算)が、中間値と選択したマスクとを組み合わせるために採用され得ることに留意されたい。
メッセージ認証コードは、メモリデバイスのデータ構造内に記憶され得る516。いくつかの例では、データ構造は、固定長データ構造であってもよい。
その後、データ構造が再びアクセスされると、前に記憶したメッセージ認証コードが、データ構造から取得される518。次いで、メッセージ認証コードは、データ構造の完全性を確認するために、前に記憶したメッセージ認証コードと比較され得る520。
図6は、データ構造の完全性を安全にするために、MAC-Liteアルゴリズムを実行するように適合されたデバイスの例示的な実装形態を図示するブロック図である。デバイスは、別々のまたは集積されたメモリデバイス604に結合された処理回路602を含むことができる。処理回路602は、データ構造の完全性を安全にするために、メモリデバイス604内に記憶された1つまたは複数のデータ構造608a、608b、608cについてMAC-Liteアルゴリズムを実施するように適合され得るメッセージ認証コード(MAC)発生器606を含むことができる。
MAC発生器606は、MAC-Liteアルゴリズムの1つまたは複数の機能またはステップを実施する複数の回路および/またはモジュールを含むことができる。鍵事前生成回路/モジュール610は、処理回路602のスタートアップもしくはブートアップで、または処理回路602上で実行されるセッションもしくはアプリケーションの開始で、複数の鍵を含む鍵のセット628をランダムにまたは疑似ランダムに生成することができる。鍵のセット628は、安全なメモリデバイス626にまたは処理回路602もしくはメモリデバイス604内の安全な場所に記憶され得る。同様に、マスク事前生成回路/モジュール612は、処理回路602のスタートアップもしくはブートアップで、または処理回路602上で実行されるセッションもしくはアプリケーションの開始で、複数のマスクを含むマスクのセット630をランダムにまたは疑似ランダムに生成することができる。マスクのセット630は、安全なメモリデバイス626にまたは処理回路602もしくはメモリデバイス604内の安全な場所に記憶され得る。安全なメモリデバイス626(または場所)内のマスクのセットおよび/または鍵のセットは、スタートアップ間のまたは(アプリケーション)セッション間の期間にわたり記憶され得る。結果として、マスクのセットおよび/または鍵のセットは、1回だけの読出し/書込み操作に対してまたは1つのメモリブロックに対しては使用されない。代わりに、これは、サイクル中の(たとえば、スタートアップ間のまたはセッション間の)すべての読出し/書込み操作およびすべてのメモリブロックに対して使用される。
書込み操作または読出し操作のためにデータ構造にアクセスすると、鍵セレクタ回路/モジュール614は、データ構造に関係付けられた少なくとも1つの入力(たとえば、データ構造に関する可変メモリアドレス、等)に基づいて鍵のセット628から複数の鍵を選択することができる。同様に、マスクセレクタ回路/モジュール616は、少なくとも1つの入力(たとえば、データ構造に関する可変メモリアドレス、等)またはデータ構造に関係付けられた異なる1つまたは複数の入力に基づいてマスクのセット630からマスクを選択することができる。
入力および鍵組合せ回路/モジュール618は、入力を(鍵セレクタ回路/モジュール614からの)対応する(異なる)選択した鍵と組み合わせるために働くことができる。たとえば、各入力は、異なる選択した鍵と乗算されることが可能であり、結果は、一緒に加算され得る。モジュロ演算器回路/モジュール620は、固定素数p 632を使用して入力および鍵組合せ回路/モジュール618からの結果に適用され得る。マスク組合せ回路/モジュール622は、モジュロ演算器回路/モジュール620からの結果を取得することができ、データ構造についてのMAC-Lite値を生成するために、(マスクセレクタ回路/モジュール616からの)選択したマスクを適用することができる。
MAC比較器回路/モジュール624は、データ構造についての前に記憶したMAC値を(マスク組合せ回路/モジュール622からの)動的に計算したMAC値と比較することによって、データ構造の完全性を検査するように働くことができる。
図7は、マスクの別個のセットおよび鍵の別個のセットの事前生成に基づいてメモリ空間についての認証コードを生成する例を図示する。メモリアドレスが、固定長データ構造に対して取得される702。複数の入力も、固定長データ構造内の情報に基づいて取得される704。異なる鍵が、メモリアドレスの各々および複数の変数入力に対して選択され、ここでは異なる鍵の各々が、事前生成した鍵の別個のセットから選択される706。一例では、複数の異なる鍵の各々および/またはマスクは、メモリアドレスに基づいて(たとえば、関数として)選択されてもよい。事前生成した鍵の別個のセットは、処理回路/デバイスのスタートアップでまたは処理回路/デバイス上で実行されるセッションの開始で生成されていてもよい。
メモリアドレスは、中間値を取得するために、選択した第1の鍵とならびに選択した対応する鍵を有する複数の変数入力の各々と組み合わせられる708。中間値は、メモリアドレスと第1の鍵との乗算に加えて複数の変数入力の各々とその選択した対応する鍵との乗算、および事前選択した固定素数とのモジュロ演算を実行することとして計算され得る。使用する各鍵は、ゼロと素数との間であり得る。
排他的論理和(XOR)演算は、固定長データ構造についての認証コードを取得するために、中間値と事前生成したマスクの別個のセットから選択されるマスクとの間で実行される710。事前生成したマスクの別個のセットは、処理回路/デバイスのスタートアップでまたは処理回路/デバイス上で実行されるセッションの開始で生成されていてもよい。鍵の別個のセットおよびマスクの別個のセットは、秘密に保たれ得る。
認証コードは、次いで、固定長データ構造内に記憶され得る712。たとえば、認証コードは、固定長データ構造に関するヘッダブロック内に記憶され得る。メモリアドレスは、固定長データ構造に関するヘッダブロックのアドレスに対応することができる。
固定長データ構造のその後のアクセスにおいては、その完全性は、メッセージ認証コードを再生成することによって、およびこれを同じデータ構造についての前に記憶したメッセージ認証コードと比較することによって検証され得る。
図に図示した構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数は、1つの構成要素、ステップ、特徴もしくは機能へと再配置されるおよび/もしくは組み合わせられ得る、またはいくつかの構成要素、ステップ、もしくは機能で具体化され得る。追加の要素、構成要素、ステップ、および/または機能も、本発明から乖離せずに追加され得る。図に図示した装置、デバイス、および/または構成要素は、図に説明した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成され得る。本明細書において説明したアルゴリズムも、ソフトウェアで効率的に実施され得るおよび/またはハードウェアに効率的に取り込まれ得る。
その上、開示の一態様では、図1、2、および6に図示した処理回路102、202、および/または602は、図3、図4、図5、および/または図7に説明したアルゴリズム、方法、および/またはステップを実行するために具体的に設計されたおよび/または物理的に組み込まれた特殊プロセッサ(たとえば、特定用途向け集積回路(ASIC))であってもよい。このように、そのような特殊プロセッサ(たとえば、ASIC)は、図3、図4、図5、および/または図7に説明したアルゴリズム、方法、および/またはステップを実行するための手段の一例であり得る。プロセッサ可読記憶媒体は、特殊プロセッサ(たとえば、ASIC)によって実行されたときに、特殊プロセッサに、本明細書において説明したアルゴリズム、方法、および/またはステップを実行させる命令を記憶することができる。
また、本開示の態様が、フローチャート、流れ図、構造図、またはブロック図として描かれているプロセスとして説明され得ることに留意されたい。フローチャートが一連のプロセスとして操作を記述することができるけれども、操作の多くは、並列にまたは同時に実行され得る。加えて、操作の順序は、並べ替えられてもよい。プロセスは、その操作が完了すると終了される。プロセスは、方法、機能、手順、サブルーチン、サブプログラム、等に対応することができる。プロセスが機能に対応するときには、その終了は、呼出し機能または主機能への機能の戻りに対応する。
その上、記憶媒体は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイス、ならびに/または情報を記憶するための他の機械可読媒体、およびプロセッサ可読媒体、および/もしくはコンピュータ可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表すことができる。「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」という用語は、携帯型または固定記憶デバイス、光学的記憶デバイス、ならびに命令および/またはデータを記憶する、含有するまたは搬送することができる様々な他の媒体などの一時的でない媒体を含むことができるが、これらに限定されない。このように、本明細書において説明した様々な方法は、「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」に記憶され、かつ1つまたは複数のプロセッサ、機械および/またはデバイスによって実行され得る命令および/またはデータによって全体をまたは部分的に実装され得る。
さらにその上、本開示の態様は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはこれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードに実装されるときには、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体または他の記憶装置などの機械可読媒体中に記憶され得る。プロセッサは、必要なタスクを実行することができる。コードセグメントは、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラム文の任意の組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡すことおよび/または受け取ることによって別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データ、等は、メモリ共有、メッセージ引渡し、トークン引渡し、ネットワーク送信、等を含むいずれかの適切な手段を介して渡され、転送され、または送信され得る。
本明細書において開示した例に関連して説明した様々な説明的な論理ブロック、モジュール、回路、素子、および/または構成要素は、汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理構成部品、単体ゲートもしくはトランジスタロジック、単体ハードウェア構成部品、または本明細書において説明した機能を実行するように設計されたこれらの任意の組合せで実装され得るまたは実行され得る。汎用プロセッサは、マイクロプロセッサであってもよいが、代替形態では、プロセッサは、いずれかの従来型のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサは、計算構成部品の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと協働する1つもしくは複数のマイクロプロセッサ、またはいずれかの他のそのような構成としても実装されてもよい。
本明細書において開示した例に関連して説明した方法またはアルゴリズムは、処理ユニット、プログラミング命令、または他の指示の形式で、ハードウェア内に直接、プロセッサによって実行可能なソフトウェアモジュールに、または両者の組合せで具体化されてもよく、1つのデバイス内に含まれてもよいし、または複数のデバイスにわたって分散されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または本技術において知られた記憶媒体のいずれかの他の形態内に存在してもよい。記憶媒体は、プロセッサが、記憶媒体から情報を読み出し、そこへ情報を書き込むことができるように、プロセッサに結合されてもよい。代替形態では、記憶媒体は、プロセッサに統合されてもよい。
本明細書において開示した態様に関連して説明した様々な説明的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実装され得ることを当業者ならさらに認識するであろう。ハードウェアとソフトウェアとのこの互換性を明確に例証するために、様々な説明的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能の点で一般的に上に説明されている。そのような機能が、ハードウェアまたはソフトウェアとして実装されるかどうかは、個々の用途および全体システムに課せられた設計制約に依存する。
本明細書において説明した発明の様々な特徴は、本発明から乖離せずに異なるシステムにおいて実装されてもよい。開示の前述の態様は、単に例であり、本発明を限定するように解釈されるべきはないことに留意すべきである。本開示の態様の説明は、説明的であることを意味し、特許請求の範囲の範囲を限定しないことを意味する。それはそうとして、本教示は、他のタイプの装置に容易に適用されることが可能であり、多くの代替形態、修正形態、および変形形態が、当業者には明らかであろう。
102 処理回路
104 メモリデバイス
106 ヘッダブロック
108 ブロック確保メモリ空間
110 MAC
112 MAC発生器
114 メモリブロック
116 MACアルゴリズム
118 秘密鍵
120 メッセージ入力
122 メモリアドレス
124 入力
202 処理回路
204 メモリデバイス
206 ヘッダブロック
208 ブロック確保メモリ空間
210 MAC
212 MAC発生器
214 メモリブロック
216 MAC-Liteアルゴリズム
217 スタートアップ生成マスク
218 スタートアップ生成鍵
220 メッセージ入力
222 メモリアドレス
224 入力
302 MAC-Liteアルゴリズム
304 鍵のセット
306 マスク
308 マスク値、マスク
310 入力
312 可変メモリアドレス
314 素数p
316 マスク
318 鍵
320 MAC値
602 処理回路
604 メモリデバイス
606 MAC発生器
608 データ構造
610 鍵事前生成回路/モジュール
612 マスク事前生成回路/モジュール
614 鍵セレクタ回路/モジュール
616 マスクセレクタ回路/モジュール
618 入力-鍵組合せ回路/モジュール
620 モジュロ演算器回路/モジュール
622 マスク組合せ回路/モジュール
624 MAC比較器回路/モジュール
626 安全なメモリデバイス
628 鍵のセット
630 マスクのセット
632 固定素数p

Claims (38)

  1. 認証コードを生成する方法であって、
    処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成するステップと、
    複数の別個のマスクを含むマスクのセットを事前生成するステップと、
    固定長データ構造に関係付けられた複数の変数入力を取得するステップと、
    複数の一時的な値を取得するために、前記複数の変数入力の各々を前記鍵のセットからの選択した対応する鍵と組み合わせるステップと、
    中間値を取得するために前記複数の一時的な値を組み合わせるステップと、
    前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記マスクのセットからの選択したマスクとの間の演算を実行するステップと
    を含む方法。
  2. 前記マスクのセットが、前記処理回路のスタートアップでまたは前記処理回路上で実行される前記セッションでも事前生成される、請求項1に記載の方法。
  3. 前記鍵のセットおよびマスクのセットのうちの少なくとも一方が、ランダム値に基づいて生成される、請求項1に記載の方法。
  4. 前記複数の一時的な値が、
    組合せ値を取得するために前記複数の一時的な値を加算するステップと、
    前記中間値を取得するために、前記組合せ値について事前選択した固定素数とのモジュロ演算を実行するステップと
    によって組み合わせられる、請求項1に記載の方法。
  5. 前記鍵のセット内の各鍵の前記値が、ゼロと前記事前選択した固定素数との間である、請求項4に記載の方法。
  6. 前記中間値と前記選択したマスクとの間の前記演算が、ビット単位の排他的論理和演算である、請求項4に記載の方法。
  7. 前記マスクおよび前記選択した対応する鍵の各々が、前記複数の変数入力のうちの少なくとも1つに基づいて選択される、請求項1に記載の方法。
  8. 前記複数の変数入力のうちの前記少なくとも1つが、前記固定長データ構造に関係付けられたメモリアドレスである、請求項7に記載の方法。
  9. 前記選択した対応する鍵の各々が、前記メモリアドレスに基づいて選択される、請求項8に記載の方法。
  10. 前記選択したマスクが、前記メモリアドレスに基づいて選択される、請求項8に記載の方法。
  11. 前記鍵のセットが、鍵のサブセットへと細分化され、鍵のサブセットだけが、前記メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される、請求項1に記載の方法。
  12. スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内に前記マスクのセットおよび鍵のセットのうちの少なくとも一方を記憶するステップ
    をさらに含む、請求項1に記載の方法。
  13. メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶するステップ
    をさらに含む、請求項1に記載の方法。
  14. 前記メッセージ認証コードが、前記固定長データ構造に関するヘッダブロック内に記憶される、請求項13に記載の方法。
  15. 前記データ構造から前に記憶したメッセージ認証コードを取得するステップと、
    前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較するステップと
    をさらに含む、請求項1に記載の方法。
  16. 固定長データ構造を記憶するためのメモリデバイスと、
    前記メモリデバイスに結合された処理回路であって、前記処理回路が、
    処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成し、
    複数の別個のマスクを含むマスクのセットを事前生成し、
    前記固定長データ構造に関係付けられた複数の変数入力を取得し、
    複数の一時的な値を取得するために、前記複数の変数入力の各々を前記鍵のセットからの選択した対応する鍵と組み合わせ、
    中間値を取得するために前記複数の一時的な値を組み合わせ、
    前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記マスクのセットからの選択したマスクとの間の演算を実行する
    ように適合される、処理回路と
    を備える、デバイス。
  17. 前記マスクのセットが、前記処理回路のスタートアップでまたは前記処理回路上で実行される前記セッションでも事前生成される、請求項16に記載のデバイス。
  18. 前記鍵のセットおよびマスクのセットのうちの少なくとも一方が、ランダム値に基づいて生成される、請求項16に記載のデバイス。
  19. 前記複数の一時的な値が、
    組合せ値を取得するために前記複数の一時的な値を加算することと、
    前記中間値を取得するために、前記組合せ値について事前選択した固定素数とのモジュロ演算を実行することと
    によって組み合わせられる、請求項16に記載のデバイス。
  20. 前記鍵のセット内の各鍵の前記値が、ゼロと前記事前選択した固定素数との間である、請求項19に記載のデバイス。
  21. 前記中間値と前記選択したマスクとの間の前記演算が、ビット単位の排他的論理和演算である、請求項19に記載のデバイス。
  22. 前記マスクおよび前記選択した対応する鍵の各々が、前記複数の変数入力のうちの少なくとも1つに基づいて選択される、請求項16に記載のデバイス。
  23. 前記複数の変数入力のうちの前記少なくとも1つが、前記固定長データ構造に関係付けられたメモリアドレスである、請求項22に記載のデバイス。
  24. 前記選択した対応する鍵の各々が、前記メモリアドレスに基づいて選択される、請求項23に記載のデバイス。
  25. 前記選択したマスクが、前記メモリアドレスに基づいて選択される、請求項23に記載のデバイス。
  26. 前記鍵のセットが、鍵のサブセットへと細分化され、鍵のサブセットだけが、前記メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される、請求項16に記載のデバイス。
  27. 前記処理回路が、
    スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内に前記マスクのセットおよび鍵のセットのうちの少なくとも一方を記憶する
    ようにさらに適合される、請求項16に記載のデバイス。
  28. 前記処理回路が、
    メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶する
    ようにさらに適合される、請求項16に記載のデバイス。
  29. 前記メッセージ認証コードが、前記固定長データ構造に関するヘッダブロック内に記憶される、請求項28に記載のデバイス。
  30. 前記処理回路が、
    前記データ構造から前に記憶したメッセージ認証コードを取得し、
    前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較する
    ようにさらに適合される、請求項16に記載のデバイス。
  31. 処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成するための手段と、
    複数の別個のマスクを含むマスクのセットを事前生成するための手段と、
    固定長データ構造に関係付けられた複数の変数入力を取得するための手段と、
    複数の一時的な値を取得するために、前記複数の変数入力の各々を前記事前生成した鍵のセットからの選択した対応する鍵と組み合わせるための手段と、
    中間値を取得するために前記複数の一時的な値を組み合わせるための手段と、
    前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記事前生成したマスクのセットからの選択したマスクとの間の演算を実行するための手段と
    を備える、デバイス。
  32. スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内に前記マスクのセットおよび鍵のセットのうちの少なくとも一方を記憶するための手段
    をさらに備える、請求項31に記載のデバイス。
  33. メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶するための手段
    をさらに備える、請求項31に記載のデバイス。
  34. 前記メッセージ認証コードが、前記固定長データ構造に関するヘッダブロック内に記憶される、請求項33に記載のデバイス。
  35. 前記データ構造から前に記憶したメッセージ認証コードを取得するための手段と、
    前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較するための手段と
    さらに備える、請求項31に記載のデバイス。
  36. 少なくとも1つの処理回路によって実行されるときに、前記少なくとも1つの処理回路に、
    処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成させ、
    複数の別個のマスクを含むマスクのセットを事前生成させ、
    固定長データ構造に関係付けられた複数の変数入力を取得し、
    複数の一時的な値を取得するために、前記複数の変数入力の各々を前記鍵のセットからの選択した対応する鍵と組み合わせ、
    中間値を取得するために前記複数の一時的な値を組み合わせ、
    前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記マスクのセットからの選択したマスクとの間の演算を実行させる
    1つまたは複数の命令を有するプロセッサ可読記憶媒体。
  37. 少なくとも1つの処理回路によって実行されるときに、前記少なくとも1つの処理回路に、
    メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶させる
    1つまたは複数の命令をさらに有する、請求項36に記載のプロセッサ可読記憶媒体。
  38. 少なくとも1つの処理回路によって実行されるときに、前記少なくとも1つの処理回路に、
    前記データ構造から前に記憶したメッセージ認証コードを取得させ、
    前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較させる
    1つまたは複数の命令をさらに有する、請求項36に記載のプロセッサ可読記憶媒体。
JP2015556977A 2013-02-07 2014-01-31 固定長データ構造の完全性を保護するための方法 Expired - Fee Related JP6077678B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/762,195 2013-02-07
US13/762,195 US9298947B2 (en) 2013-02-07 2013-02-07 Method for protecting the integrity of a fixed-length data structure
PCT/US2014/014148 WO2014123779A1 (en) 2013-02-07 2014-01-31 Method for protecting the integrity of a fixed-length data structure

Publications (3)

Publication Number Publication Date
JP2016508002A true JP2016508002A (ja) 2016-03-10
JP2016508002A5 JP2016508002A5 (ja) 2016-08-25
JP6077678B2 JP6077678B2 (ja) 2017-02-08

Family

ID=50113037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015556977A Expired - Fee Related JP6077678B2 (ja) 2013-02-07 2014-01-31 固定長データ構造の完全性を保護するための方法

Country Status (6)

Country Link
US (1) US9298947B2 (ja)
EP (1) EP2954636A1 (ja)
JP (1) JP6077678B2 (ja)
KR (1) KR101734205B1 (ja)
CN (1) CN104969508B (ja)
WO (1) WO2014123779A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9443107B2 (en) * 2013-02-19 2016-09-13 Qualcomm Incorporated Method for protecting the integrity of a group of memory elements using an aggregate authentication code
US9177123B1 (en) * 2013-09-27 2015-11-03 Emc Corporation Detecting illegitimate code generators
US10019603B2 (en) * 2014-04-16 2018-07-10 Synopsys, Inc. Secured memory system and method therefor
WO2016064397A1 (en) 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Admissions control of a device
WO2016068942A1 (en) 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Encryption for transactions in a memory fabric
US10699031B2 (en) * 2014-10-30 2020-06-30 Hewlett Packard Enterprise Development Lp Secure transactions in a memory fabric
US10523418B2 (en) 2016-06-03 2019-12-31 Cryptography Research, Inc. Providing access to a hardware resource based on a canary value
EP3520317B1 (en) 2016-10-03 2021-05-12 Visa International Service Association Network topology with multiple data centers for building blockchain blocks
US11349639B2 (en) 2018-12-28 2022-05-31 ePIC Blockchain Technologies Inc. Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
CN112185435A (zh) * 2019-07-03 2021-01-05 旺宏电子股份有限公司 电子装置、存储器装置及其存储数据的读取方法
US11943367B1 (en) * 2020-05-19 2024-03-26 Marvell Asia Pte, Ltd. Generic cryptography wrapper
US11271739B2 (en) * 2020-06-25 2022-03-08 Digital 14 Llc Error-correcting key agreement for noisy cryptographic systems
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
US11698971B2 (en) * 2021-04-15 2023-07-11 Honeywell International Inc. Secure boot device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337736A (ja) * 2002-05-20 2003-11-28 Hitachi Ltd 計算機、ハードディスク装置、複数の該計算機及び共有ハードディスク装置から構成されるディスク装置共有システム、及び該共有システムにおいて利用されるディスク装置の共有方法
JP2008122967A (ja) * 2006-11-13 2008-05-29 Korea Electronics Telecommun ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
JP2009211504A (ja) * 2008-03-05 2009-09-17 Hitachi Ltd 情報提供サーバ、プログラム、情報提供方法及び情報提供システム
JP4854677B2 (ja) * 2005-01-07 2012-01-18 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 処理デバイスのメモリコンテンツの更新
JP2012501579A (ja) * 2008-08-28 2012-01-19 アルカテル−ルーセント ユーエスエー インコーポレーテッド セキュアなメモリに応用するメッセージ認証コードの事前計算

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ240019A (en) * 1991-09-30 1996-04-26 Peter John Smith Public key encrypted communication with non-multiplicative cipher
DE60132962T2 (de) * 2000-01-21 2009-02-26 Sony Corp. Datenverarbeitungsvorrichtung und datenverarbeitungsverfahren
FR2810138B1 (fr) * 2000-06-08 2005-02-11 Bull Cp8 Procede de stockage securise d'une donnee sensible dans une memoire d'un systeme embarque a puce electronique, notamment d'une carte a puce, et systeme embarque mettant en oeuvre le procede
US7069287B2 (en) * 2000-09-19 2006-06-27 Worcester Polytechnic Institute Method for efficient computation of odd characteristic extension fields
US7697681B2 (en) * 2004-02-06 2010-04-13 Nortel Networks Limited Parallelizable integrity-aware encryption technique
US7500098B2 (en) 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
US7549045B2 (en) 2004-10-25 2009-06-16 Microsoft Corporation Delegate registration in a managed code execution environment
JP2006203564A (ja) 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US8189786B2 (en) * 2005-05-25 2012-05-29 Zenith Electronics Llc Encryption system
WO2007052045A2 (en) 2005-11-04 2007-05-10 Isis Innovation Limited Security in computing networks
KR20080046515A (ko) * 2006-11-22 2008-05-27 삼성전자주식회사 콘텐츠 파일의 암호화 및 복호화 방법
US8320561B2 (en) * 2007-08-08 2012-11-27 Qualcomm Incorporated Key identifier in packet data convergence protocol header
US8909931B2 (en) 2008-02-29 2014-12-09 Nec Corporation Server authentication system, server authentication method, and program for server authentication
JP5156540B2 (ja) 2008-08-22 2013-03-06 株式会社日立製作所 ハッシュ値生成装置
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
JP5225414B2 (ja) 2011-03-08 2013-07-03 株式会社東芝 暗号演算装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337736A (ja) * 2002-05-20 2003-11-28 Hitachi Ltd 計算機、ハードディスク装置、複数の該計算機及び共有ハードディスク装置から構成されるディスク装置共有システム、及び該共有システムにおいて利用されるディスク装置の共有方法
JP4854677B2 (ja) * 2005-01-07 2012-01-18 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 処理デバイスのメモリコンテンツの更新
JP2008122967A (ja) * 2006-11-13 2008-05-29 Korea Electronics Telecommun ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
JP2009211504A (ja) * 2008-03-05 2009-09-17 Hitachi Ltd 情報提供サーバ、プログラム、情報提供方法及び情報提供システム
JP2012501579A (ja) * 2008-08-28 2012-01-19 アルカテル−ルーセント ユーエスエー インコーポレーテッド セキュアなメモリに応用するメッセージ認証コードの事前計算

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6016031470; Teng Wu, et al.: 'The Weakness of Integrity Protection for LTE' Cryptology ePrint Archive: Report 2012/690 Version 20121211:161253, 20121211, p.1-23, [オンライン] *
JPN6016031473; Long Hoang Nguyen, et al.: 'Short-Output Universal Hash Functions and Their Use in Fast and Secure Data Authentication' Cryptology ePrint Archive: Report 2011/116 Version: 20120404:154833, 20120404, [オンライン] *
JPN6016031476; Shoichi HIROSE, et al.: 'An AES Based 256-bit Hash Function for Lightweight Applications: Lesamnta-LW' IEICE TRANSACTIONS on Fundamentals of Electronics, Communications and Computer Sciences Vol.E95-A No.1, 20120101, pp. 89-99, [オンライン] *

Also Published As

Publication number Publication date
CN104969508B (zh) 2018-04-10
EP2954636A1 (en) 2015-12-16
JP6077678B2 (ja) 2017-02-08
KR20150115874A (ko) 2015-10-14
KR101734205B1 (ko) 2017-05-11
CN104969508A (zh) 2015-10-07
US20140223192A1 (en) 2014-08-07
US9298947B2 (en) 2016-03-29
WO2014123779A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
JP6077678B2 (ja) 固定長データ構造の完全性を保護するための方法
US10482275B2 (en) Implementing access control by system-on-chip
US9443107B2 (en) Method for protecting the integrity of a group of memory elements using an aggregate authentication code
US9754115B2 (en) System and method for securely binding and node-locking program execution to a trusted signature authority
US20160117155A1 (en) Control flow graph flattening device and method
US20120260106A1 (en) System and method for binary layout randomization
US20200119929A1 (en) Securing firmware
CN105450620A (zh) 一种信息处理方法及装置
TW202036347A (zh) 資料儲存、驗證方法及裝置
US7970133B2 (en) System and method for secure and flexible key schedule generation
KR20200031671A (ko) 메모리 보안용 카운터 무결성 트리
CN113010856A (zh) 一种动态非对称加解密的JavaScript代码混淆方法与系统
Hein et al. Secure Block Device--Secure, Flexible, and Efficient Data Storage for ARM TrustZone Systems
US20170060775A1 (en) Methods and architecture for encrypting and decrypting data
WO2017063986A1 (en) A cryptographic device and an encoding device
CN104794394A (zh) 一种虚拟机启动校验的方法及装置
EP3057021A1 (en) Control flow graph flattening device and method obfuscating branches via interprocedural data
WO2016049225A1 (en) Provably secure virus detection
US20160306973A1 (en) A computing device for iterative appilcation of table networks
KR20210089485A (ko) 소프트웨어의 인증을 위한 장치 및 방법
JP2022520463A (ja) メモリ装置内に保存されているデータを処理するための方法及び装置
Ranjith et al. Intelligence based authentication-authorization and auditing for secured data storage
US20210312018A1 (en) Anti cloning for white box protected data
Zhao et al. Research on Root of Trust for Embedded Devices based on On-Chip Memory
Gan et al. Using virtual machine protections to enhance whitebox cryptography

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160706

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160706

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160706

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170112

R150 Certificate of patent or registration of utility model

Ref document number: 6077678

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees