JP2016508002A - Methods for protecting the integrity of fixed-length data structures - Google Patents

Methods for protecting the integrity of fixed-length data structures 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
Japanese (ja)
Other versions
JP6077678B2 (en
JP2016508002A5 (en
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/en
Publication of JP2016508002A5 publication Critical patent/JP2016508002A5/ja
Application granted granted Critical
Publication of JP6077678B2 publication Critical patent/JP6077678B2/en
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つの特徴は、計算的に効率的なアルゴリズムを使用することによってデータ構造を安全にするための機構に関連する。複数の鍵および/またはマスクは、セッションのブートアップまたは開始で事前生成され得る。認証コードは、複数の事前生成した鍵のサブセットおよび/または複数の事前生成したマスクからマスクを選択することによって各データ構造(たとえば、メモリブロックまたはヘッダブロック)について計算され得る。認証コードは、データ構造の完全性の将来の検証のためにデータ構造内に記憶され得る。すべての認証コードに対して(たとえば、他のデータ構造に対して)使用される鍵および/またはマスクは、同じサイクルまたはセッション中には同じ複数の鍵および/またはマスクから選択され得る。One feature relates to a mechanism for securing data structures by using computationally efficient algorithms. Multiple keys and / or masks may be pre-generated at session boot-up or initiation. An authentication code may be calculated for each data structure (eg, memory block or header block) by selecting a mask from a plurality of pre-generated key subsets and / or a plurality of pre-generated masks. The authentication code can be stored in the data structure for future verification of the integrity of the data structure. The keys and / or masks used for all authentication codes (eg, for other data structures) may be selected from the same multiple keys and / or masks during the same cycle or session.

Description

様々な特徴は、メッセージ認証コードの使用による攻撃からのデータ構造の保護に関する。   Various features relate to the protection of data structures from attacks through the use of message authentication codes.

ヒープメモリは、プロセッサによって確保され、メタデータ構造の使用により編成される。メタデータ構造は、(たとえば、ヘッダブロック内の)情報を含む固定長データ構造であってもよく、この情報に関して、変数は、(メモリが割り当てられている場合には)メモリの次の区分、および対応するメモリブロック内に確保されているメモリの大きさを「持っている」。攻撃者は、空いているメモリの大きさを減少させるため、またはある種データの重要な部分がメモリの攻撃されやすい区分中に置かれることを確実にするために、これらのメタデータ構造を壊そうとしたがる。したがって、データ構造の認可されていない改変を防止するために、このメタデータ(たとえば、データ構造またはメモリブロックのヘッダブロック内のデータ)を保護することが望ましい。   Heap memory is reserved by the processor and organized through the use of metadata structures. The metadata structure may be a fixed-length data structure containing information (eg, in a header block), with respect to this information, the variable is the next partition of memory (if memory is allocated), And “has” the amount of memory reserved in the corresponding memory block. An attacker can corrupt these metadata structures to reduce the amount of free memory or to ensure that a significant portion of some data is placed in a vulnerable section of memory. I want to do so. Therefore, it is desirable to protect this metadata (eg, data structure or data in the header block of a memory block) to prevent unauthorized modification of the data structure.

したがって、計算的に経済的な解決策が、データ構造を保護するために必要とされている。   Thus, a computationally economical solution is needed to protect the data structure.

認証コードを生成する方法が提供される。複数の別個の鍵を含む鍵のセットは、処理回路のスタートアップでまたは処理回路上で実行されるセッションで事前生成される。複数の別個のマスクを含むマスクのセットも事前生成される。マスクのセットも、処理回路のスタートアップでまたは処理回路上で実行されるセッションで事前生成され得る。鍵のセットおよび/またはマスクのセットのうちの少なくとも一方が、ランダム値に基づいて生成され得る。   A method for generating an authentication code is provided. A set of keys including a plurality of distinct keys is pre-generated at a processing circuit startup or at a session executed on the processing circuit. A set of masks including a plurality of separate masks is also pre-generated. The set of masks can also be pre-generated at the start-up of the processing circuit or at a session executed on the processing circuit. At least one of the set of keys and / or the set of masks may be generated based on a random value.

固定長データ構造に関係付けられた複数の変数入力が、取得され得る。マスクおよび選択した対応する鍵の各々は、少なくとも部分的に、複数の変数入力のうちの少なくとも1つに基づいて選択され得る。   A plurality of variable inputs associated with a fixed length data structure may be obtained. Each of the mask and the selected corresponding key may be selected based at least in part on at least one of the plurality of variable inputs.

複数の変数入力の各々は、複数の一時的な値を取得するために、鍵のセットからの選択した対応する鍵と組み合わせられ得る。複数の一時的な値は、次いで、中間値を取得するために組み合わせられ得る。中間値とマスクのセットからの選択したマスクとの間の演算は、次いで、固定長データ構造についてのメッセージ認証コードを取得するために実行され得る。鍵のセットは、鍵のサブセットへと細分化されることが可能であり、鍵のサブセット(たとえば、1つの鍵、2つの鍵、等)だけが、メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される。   Each of the plurality of variable inputs can be combined with a selected corresponding key from a set of keys to obtain a plurality of temporary values. The multiple temporary values can then be combined to obtain an intermediate value. An operation between the intermediate value and the selected mask from the set of masks can then be performed to obtain a message authentication code for the fixed length data structure. A set of keys can be subdivided into a subset of keys, and only a subset of keys (e.g., one key, two keys, etc.) can either be used to compute a message authentication code. Selected from one subset of keys.

複数の変数入力のうちの少なくとも1つは、固定長データ構造に関係付けられたメモリアドレスであり得る。選択した対応する鍵の各々は、メモリアドレスに基づいて選択され得る。選択したマスクは、メモリアドレスに基づいて選択され得る。   At least one of the plurality of variable inputs may be a memory address associated with a fixed length data structure. Each selected corresponding key may be selected based on the memory address. The selected mask can be selected based on the memory address.

複数の一時的な値は:(a)組合せ値を取得するために複数の一時的な値を加算すること、および/または(b)中間値を取得するために、組合せ値について事前選択した固定素数とのモジュロ演算を実行することによって組み合わせられ得る。鍵のセット内の各鍵の値は、ゼロと事前選択した固定素数との間であり得る。中間値と選択したマスクとの間の演算は、たとえば、ビット単位の排他的論理和演算であり得る。   Multiple temporary values are: (a) adding multiple temporary values to obtain combination values and / or (b) pre-selected fixed values for combination values to obtain intermediate values Can be combined by performing modulo operations with prime numbers. The value of each key in the set of keys can be between zero and a preselected fixed prime number. The operation between the intermediate value and the selected mask can be, for example, a bitwise exclusive OR operation.

マスクのセットおよび鍵のセットのうちの少なくとも一方は、スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置に記憶され得る。メッセージ認証コードは、メモリデバイスの固定長データ構造内に記憶され得る。メッセージ認証コードは、固定長データ構造に関するヘッダブロック内に記憶され得る。   At least one of the set of masks and the set of keys may be stored in a secure memory location over a period between startups or sessions. The message authentication code may be stored in a fixed length data structure of the memory device. The message authentication code may be stored in a header block for a fixed length data structure.

その後の検証ステージ中には、前に記憶したメッセージ認証コードが、データ構造から取得され得る。メッセージ認証コードは、次いで、データ構造の完全性を確認するために、前に記憶したメッセージ認証コードと比較され得る。   During subsequent verification stages, the previously stored message authentication code may be obtained from the data structure. The message authentication code can then be compared to the previously stored message authentication code to verify the integrity of the data structure.

同様に、メモリデバイスと、メモリデバイスに結合された処理回路とを備えるデバイスが、提供され得る。メモリデバイスは、固定長データ構造を記憶するように働くことができる。処理回路は:(a)処理回路のスタートアップでまたは処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成し、(b)複数の別個のマスクを含むマスクのセットを事前生成し、(c)固定長データ構造に関係付けられた複数の変数入力を取得し、(d)複数の一時的な値を取得するために、複数の変数入力の各々を鍵のセットからの選択した対応する鍵と組み合わせ、(e)中間値を取得するために複数の一時的な値を組み合わせ、(f)固定長データ構造についてのメッセージ認証コードを取得するために、中間値とマスクのセットからの選択したマスクとの間の演算を実行するように構成され得るまたは適合され得る。   Similarly, a device comprising a memory device and processing circuitry coupled to the memory device may be provided. The memory device can serve to store a fixed length data structure. The processing circuit: (a) pre-generates a set of keys including a plurality of distinct keys at a start-up of the processing circuit or in a session executed on the processing circuit; Pre-generate, (c) get multiple variable inputs associated with a fixed-length data structure, and (d) set each key of multiple variable inputs to get multiple temporary values. Combined with the corresponding key selected from (e) combining multiple temporary values to obtain an intermediate value, and (f) intermediate value to obtain a message authentication code for a fixed length data structure. It can be configured or adapted to perform operations between selected masks from a set of masks.

マスクのセットは、処理回路のスタートアップでまたは処理回路上で実行されるセッションでも事前生成され得る。   The set of masks can also be pre-generated at a processing circuit start-up or at a session executed on the processing circuit.

鍵のセットおよびマスクのセットのうちの少なくとも一方は、ランダム値に基づいて生成される。   At least one of the set of keys and the set of masks is generated based on a random value.

複数の一時的な値は:(a)組合せ値を取得するために複数の一時的な値を加算すること、および/または(b)中間値を取得するために、組合せ値について事前選択した固定素数とのモジュロ演算を実行することによって組み合わせられ得る。鍵のセット内の各鍵の値は、ゼロと事前選択した固定素数との間であり得る。中間値と選択したマスクとの間の演算は、ビット単位の排他的論理和演算であり得る。   Multiple temporary values are: (a) adding multiple temporary values to obtain combination values and / or (b) pre-selected fixed values for combination values to obtain intermediate values Can be combined by performing modulo operations with prime numbers. The value of each key in the set of keys can be between zero and a preselected fixed prime number. The operation between the intermediate value and the selected mask can be a bitwise exclusive OR operation.

マスクおよび選択した対応する鍵の各々は、複数の変数入力のうちの少なくとも1つに基づいて選択される。複数の変数入力のうちの少なくとも1つは、固定長データ構造に関係付けられたメモリアドレスである。選択した対応する鍵の各々は、メモリアドレスに基づいて選択される。選択したマスクは、メモリアドレスに基づいて選択され得る。   Each of the mask and the selected corresponding key is selected based on at least one of the plurality of variable inputs. At least one of the plurality of variable inputs is a memory address associated with a fixed length data structure. Each selected corresponding key is selected based on a memory address. The selected mask can be selected based on the memory address.

鍵のセットは、鍵のサブセットへと細分化されることが可能であり、鍵のサブセット(たとえば、1つの鍵、2つの鍵、等)だけが、メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される。   A set of keys can be subdivided into a subset of keys, and only a subset of keys (e.g., one key, two keys, etc.) can either be used to compute a message authentication code. Selected from one subset of keys.

処理回路は、スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内にマスクのセットおよび鍵のセットのうちの少なくとも一方を記憶するようにさらに適合され得る。   The processing circuitry may be further adapted to store at least one of the set of masks and the set of keys in a secure memory location over a period between startups or sessions.

処理回路はまた、メモリデバイスの固定長データ構造内にメッセージ認証コードを記憶するようにさらに適合され得る。メッセージ認証コードは、固定長データ構造に関するヘッダブロック内に記憶され得る。   The processing circuit may also be further adapted to store the message authentication code in a fixed length data structure of the memory device. The message authentication code may be stored in a header block for a fixed length data structure.

処理回路は:(a)データ構造から前に記憶したメッセージ認証コードを取得すること、および/または(b)データ構造の完全性を確認するために、メッセージ認証コードを前に記憶したメッセージ認証コードと比較するようにさらに適合され得る。   The processing circuit may: (a) obtain a previously stored message authentication code from the data structure, and / or (b) a message authentication code that has previously stored the message authentication code to verify the integrity of the data structure. And can be further adapted to compare.

暗号鍵を使用してメッセージ認証コード(MAC)を有するメモリ内のデータ構造を保護するための1つの手法を図示するブロック図であり、暗号鍵は、安全な長期記憶装置内に記憶される、または関係するメモリコントローラがブートするときにはいつでもランダムに生成されかつ安全な揮発性メモリに保持される、のいずれかである。FIG. 2 is a block diagram illustrating one approach for protecting a data structure in memory having a message authentication code (MAC) using an encryption key, the encryption key being stored in a secure long-term storage device; Or randomly generated and kept in secure volatile memory whenever the relevant memory controller boots. 図1の暗号MACよりもより計算的に効率的であるMAC-Lite発生器を使用してデータ構造を保護するための別の手法を図示するブロック図である。FIG. 3 is a block diagram illustrating another approach for protecting data structures using a MAC-Lite generator that is more computationally efficient than the cryptographic MAC of FIG. 巡回冗長検査(CRC)またはカナリア値よりもより高い安全性を有する一方で、図1の暗号MACよりもより計算的に効率的であるMAC-Liteアルゴリズム302の例を図示する図である。FIG. 2 is a diagram illustrating an example of a MAC-Lite algorithm 302 that is more computationally efficient than the cryptographic MAC of FIG. 1 while having higher security than a cyclic redundancy check (CRC) or canary value. 従来のMACよりもより効率的にMACを生成するために実施され得るMAC-Liteアルゴリズムの一例を図示する図である。FIG. 6 illustrates an example of a MAC-Lite algorithm that can be implemented to generate a MAC more efficiently than a conventional MAC. 認証コードがマスクの別個のセットおよび鍵の別個のセットの事前生成に基づいて生成される一般的な手法を図示する図である。FIG. 6 illustrates a general approach in which an authentication code is generated based on pre-generation of a separate set of masks and a separate set of keys. データ構造の完全性を安全にするためにMAC-Liteアルゴリズムを実行するように適合されたデバイスの例示的な実装形態を図示するブロック図である。FIG. 2 is a block diagram illustrating an exemplary implementation of a device adapted to execute a MAC-Lite algorithm to secure the integrity of a data structure. マスクの別個のセットおよび鍵の別個のセットの事前生成に基づいてメモリ空間についての認証コードを生成する例を図示する図である。FIG. 6 illustrates an example of generating an authentication code for a memory space based on pre-generation of a separate set of masks and a separate set of keys.

下記の説明では、具体的な詳細が、本開示の様々な態様の完全な理解を提供するために与えられる。しかしながら、態様がこれらの具体的な詳細がなくとも実施し得ることを、当業者なら理解するであろう。たとえば、回路は、不必要な詳細で態様を不明瞭にすることを避けるためにブロック図で示されることがある。他の事例では、よく知られた回路、構造および技術は、本開示の態様を不明瞭にしないために詳細には示されないことがある。   In the following description, specific details are given to provide a thorough understanding of various aspects of the disclosure. However, those skilled in the art will appreciate that the embodiments may be practiced without these specific details. For example, a circuit may be shown in a block diagram to avoid obscuring aspects with unnecessary detail. In other instances, well-known circuits, structures and techniques may not be shown in detail in order not to obscure aspects of the present disclosure.

「例示的な(exemplary)」という語は、「例、事例、または実例として働くこと」を意味するように本明細書においては使用される。「例示的な」として本明細書において説明するいずれかの実装形態または態様は、本開示の他の態様よりも好ましいまたは有利であると必ずしも解釈される必要はない。同じように、「態様」という用語は、本開示のすべての態様が論じた特徴、利点または操作のモードを含むことを必ずしも必要としない。   The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any implementation or aspect described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects of the disclosure. Similarly, the term “aspect” does not necessarily require that all aspects of the disclosure include the features, advantages, or modes of operation discussed.

概要
1つの特徴は、計算的に効率的なアルゴリズムを使用することによってデータ構造を安全にするための機構を提供する。複数の鍵および/またはマスクは、セッションのブートアップまたは開始で事前生成され得る。認証コードは、複数の事前生成した鍵のサブセットおよび/または複数の事前生成したマスクからマスクを選択することによって、各データ構造(たとえば、メモリブロックまたはヘッダブロック)について計算され得る。認証コードは、データ構造の完全性の将来の検証のためにデータ構造内に記憶され得る。すべての認証コードに対して(たとえば、他のデータ構造に対して)使用される鍵および/またはマスクは、同じサイクルまたはセッション中には同じ複数の鍵および/またはマスクから選択され得る。
Overview
One feature provides a mechanism for securing data structures by using computationally efficient algorithms. Multiple keys and / or masks may be pre-generated at session boot-up or initiation. An authentication code may be calculated for each data structure (eg, memory block or header block) by selecting a mask from a plurality of pre-generated key subsets and / or a plurality of pre-generated masks. The authentication code can be stored in the data structure for future verification of the integrity of the data structure. The keys and / or masks used for all authentication codes (eg, for other data structures) may be selected from the same multiple keys and / or masks during the same cycle or session.

この手法は、他の暗号メッセージ認証コード(MAC)手法よりも低い安全性であるが、標準巡回冗長検査(CRC)実装形態よりもわずかに少ない実装コストを有しつつCRCまたはカナリア値よりもより高い安全性を提供することができる。この解決策は、入力の形式の知識からおよび通常の数よりも多くのランダム鍵または疑似ランダム鍵を使用することによって効率性を得る。   This approach is less secure than other cryptographic message authentication code (MAC) approaches, but has a slightly lower implementation cost than standard cyclic redundancy check (CRC) implementations, but more than CRC or canary values. High safety can be provided. This solution gains efficiency from knowledge of the format of the input and by using more random or pseudo-random keys than normal numbers.

動的に生成したメッセージ認証コードを有する例示的なメモリ構造
図1は、暗号鍵を使用してメッセージ認証コード(MAC)を有するメモリ内のデータ構造を保護するための1つの手法を図示するブロック図であり、暗号鍵は、安全な長期記憶装置内に記憶される、または関係するメモリコントローラがブートするときにはいつでもランダムに生成されかつ安全な揮発性メモリに保持される、のいずれかである。処理回路102は、メモリデバイス104または記憶装置に結合され得るおよび/または集積され得る。メモリデバイス104は、メモリブロック114a、114b、および/または114cとして配列されたメモリ空間を含むことができる。各メモリブロック114a、114b、114cは、ヘッダブロック106a、106b、および106c、ならびに対応するブロック確保メモリ空間108a、108b、および108cを含むことができる。ヘッダブロック106は、データ構造(たとえば、メタデータ構造)を記憶するように働くことができる。
Example Memory Structure with Dynamically Generated Message Authentication Code FIG. 1 is a block diagram illustrating one approach for protecting a data structure in memory with a message authentication code (MAC) using an encryption key. The encryption key is either stored in a secure long-term storage device or is randomly generated and held in secure volatile memory whenever the associated memory controller boots. The processing circuit 102 may be coupled to and / or integrated with the memory device 104 or storage device. Memory device 104 may include memory space arranged as memory blocks 114a, 114b, and / or 114c. Each memory block 114a, 114b, 114c may include header blocks 106a, 106b, and 106c and corresponding block reserved memory spaces 108a, 108b, and 108c. The header block 106 can serve to store a data structure (eg, a metadata structure).

処理回路102は、各ヘッダブロック106またはメモリブロック114についてのMAC110を計算しかつそのようなMAC110を各対応するヘッダブロック106内に記憶するMAC発生器112を実装するように構成され得る。一例では、MAC発生器(たとえば、処理回路またはモジュール)は、複数のラウンドまたは反復を有する特定のMACアルゴリズム116(たとえば、ハッシュベースメッセージ認証コード(HMAC)-安全なハッシュアルゴリズム1(SHA-1)、高度暗号化標準(AES)-暗号ベースMAC(CMAC)、およびデータ認証アルゴリズム(DAA)、等)を実施することができる。   The processing circuit 102 may be configured to implement a MAC generator 112 that calculates a MAC 110 for each header block 106 or memory block 114 and stores such MAC 110 in each corresponding header block 106. In one example, the MAC generator (e.g., processing circuit or module) may be configured with a specific MAC algorithm 116 (e.g., hash-based message authentication code (HMAC)-secure hash algorithm 1 (SHA-1)) that has multiple rounds or iterations Advanced Encryption Standard (AES)-Cryptographic MAC (CMAC), and Data Authentication Algorithm (DAA), etc.).

時々鍵つきまたは暗号ハッシュ関数とも呼ばれる、典型的なMACアルゴリズム116は、秘密鍵118および認証すべき任意長メッセージ120を入力として受け取り、MAC値を出力する。MAC値は、検証者(秘密鍵も所有する者)がメッセージコンテンツ(たとえば、ヘッダブロック106および/またはメモリブロック114)への何らかの変更を検出することを可能にすることによって、メッセージのデータ完全性ならびにその信頼性を保護する。   A typical MAC algorithm 116, sometimes referred to as a keyed or cryptographic hash function, receives as input a secret key 118 and an arbitrary length message 120 to be authenticated and outputs a MAC value. The MAC value allows the verifier (who also owns the private key) to detect the data integrity of the message by allowing it to detect any changes to the message content (e.g., header block 106 and / or memory block 114). As well as protecting its reliability.

様々な例では、MACアルゴリズム116は、「メッセージ」入力120の一部として、メモリアドレス122を含むことができ、そのアドレスで、ヘッダブロックが始まり、ブロック確保メモリ空間が始まり、および/またはそのアドレスに、データ構造内の特定のメタデータが保持される。このMACは、データ構造内に(ヘッダブロック106内に)記憶されることもでき、データ構造が読み出されるまたは書き込まれるときにはいつでも検査されることもできる。加えて、MACアルゴリズム116は、「メッセージ」入力120の一部として、ヘッダブロックのコンテンツ(たとえば、その中に記憶されたデータ構造)および/またはコマンドなどの他の入力1…n 124も含むことができる。MAC110aが、対応するヘッダブロック106a内の情報のうちの少なくともいくつか(たとえば、メモリブロック114aまたはブロック確保メモリ空間108aに関するメモリアドレス、メモリブロック114aまたはブロック確保メモリ空間108aのサイズ、等)に基づいて計算されるので、ヘッダブロック106a、メモリブロック114aもしくはブロック確保メモリ空間108aに関するアドレス、および/または対応するメモリブロック114aおよび/もしくはブロック確保メモリ空間108aのサイズを改ざんしようとする何らかの試みは、対応するMAC110aを検証することによって検出され得る。   In various examples, the MAC algorithm 116 may include a memory address 122 as part of the “message” input 120, at which address the header block begins, the block allocation memory space begins, and / or that address. Specific metadata in the data structure is retained. This MAC can be stored in the data structure (in the header block 106) and can be examined whenever the data structure is read or written. In addition, the MAC algorithm 116 also includes other inputs 1 ... n 124 such as header block contents (eg, data structures stored therein) and / or commands as part of the "message" input 120. Can do. Based on at least some of the information in the corresponding header block 106a (e.g., memory address for memory block 114a or block reserved memory space 108a, size of memory block 114a or block reserved memory space 108a, etc.) Any attempt to tamper with the header block 106a, the address for the memory block 114a or the block reserved memory space 108a, and / or the size of the corresponding memory block 114a and / or the block reserved memory space 108a will be It can be detected by verifying MAC 110a.

しかしながら、この手法は、データ構造(ヘッダブロック106)がアクセスされるときごとに暗号MAC操作を必要とするため、計算的に不経済であるという欠点を有する。典型的な暗号MACアルゴリズム(たとえば、HMAC-SHA-1、AES-CMAC、DAA、等)は、複数の計算的に不経済であるラウンドを実施することによっておよび/またはMACが計算されるときに疑似ランダムマスク値を生成することによってより大きい安全性を提供することを探し求めている。結果として、典型的な暗号MAC操作は、計算的に集約的であり、暗号MACが計算されるときごとにかなりの処理リソースを消費することがある。   However, this approach has the disadvantage of being computationally uneconomical because it requires cryptographic MAC operations each time the data structure (header block 106) is accessed. Typical cryptographic MAC algorithms (eg, HMAC-SHA-1, AES-CMAC, DAA, etc.) are performed by performing multiple computationally uneconomical rounds and / or when the MAC is calculated We seek to provide greater security by generating pseudo-random mask values. As a result, typical cryptographic MAC operations are computationally intensive and can consume significant processing resources each time a cryptographic MAC is computed.

メモリブロック114(たとえば、および/または対応するヘッダブロック106内のデータ構造)が頻繁にアクセスされる場合には、これはデータ構造がヒープメモリ構造などのメモリ割当てに関する情報を保持するケースである恐れがあり、その場合、MAC110の検証は、許容できない処理リソースを消費することがある。   If memory block 114 (eg, and / or data structure in corresponding header block 106) is accessed frequently, this may be the case when the data structure holds information about memory allocation, such as a heap memory structure In that case, verification of the MAC 110 may consume unacceptable processing resources.

事前生成した鍵および/またはマスクを使用するLiteメッセージ認証コードを有する例示的なメモリ構造
図2は、図1の暗号MACよりもより計算的に効率的であるMAC-Lite発生器を使用してデータ構造を保護するための別の手法を図示するブロック図である。処理回路202は、メモリデバイス204または記憶装置に結合され得るおよび/または集積され得る。メモリデバイス204は、メモリブロック214a、214b、および/または214cとして配列されたメモリ空間を含むことができる。各メモリブロック214a、214b、214cは、ヘッダブロック206a、206b、および206c、ならびに対応するブロック確保メモリ空間208a、208b、および208cを含むことができる。ヘッダブロック206は、データ構造(たとえば、メタデータ構造)を記憶するように働くことができる。
Example memory structure with Lite message authentication code using pre-generated keys and / or masks Figure 2 uses a MAC-Lite generator that is more computationally efficient than the cryptographic MAC of Figure 1 FIG. 6 is a block diagram illustrating another technique for protecting data structures. The processing circuit 202 may be coupled to and / or integrated with the memory device 204 or storage device. The memory device 204 can include memory space arranged as memory blocks 214a, 214b, and / or 214c. Each memory block 214a, 214b, 214c may include header blocks 206a, 206b, and 206c and corresponding block reserved memory spaces 208a, 208b, and 208c. The header block 206 can serve to store a data structure (eg, a metadata structure).

処理回路202は、各ヘッダブロック206またはメモリブロック214についてのMAC210を計算しかつそのようなMAC210を各対応するヘッダブロック206内に記憶するMAC-Lite発生器212を実装するように構成され得る。一例では、MAC発生器212(たとえば、MAC処理回路またはモジュール)は、複数のスタートアップ生成鍵218および/またはスタートアップ生成マスク217がメッセージ入力220についてのMACを生成する際に使用される特定のMAC-Liteアルゴリズム216を実施することができる。   The processing circuit 202 may be configured to implement a MAC-Lite generator 212 that calculates a MAC 210 for each header block 206 or memory block 214 and stores such MAC 210 in each corresponding header block 206. In one example, the MAC generator 212 (e.g., a MAC processing circuit or module) may use a particular MAC--a plurality of startup generation keys 218 and / or startup generation masks 217 used in generating a MAC for the message input 220. The Lite algorithm 216 can be implemented.

複数のスタートアップ生成鍵218およびスタートアップ生成マスク217は、ブートアップ間にまたはアプリケーションセッション中にMACを生成するために使用され得る。たとえば、複数のスタートアップ生成鍵218および/またはスタートアップ生成マスク217からの選択した鍵および/またはマスクは、サイクルまたはセッション中にすべてのデータ構造についてのすべてのMACを生成するために使用され得る。   Multiple startup generation keys 218 and startup generation mask 217 may be used to generate a MAC during bootup or during an application session. For example, selected keys and / or masks from multiple startup generation keys 218 and / or startup generation masks 217 may be used to generate all MACs for all data structures during a cycle or session.

様々な例では、MAC-Liteアルゴリズム216は、「メッセージ」入力220の一部として、メモリアドレス222を含むことができ、そのアドレスで、ヘッダブロックが始まり、ブロック確保メモリ空間が始まり、および/またはそのアドレスに、データ構造の特定のメタデータが保持される。メッセージ入力のうちの少なくとも1つ(たとえば、メモリアドレス、等)は、スタートアップ生成鍵218から別個の複数の1つもしくは複数の鍵を選択する際、および/またはスタートアップ生成マスク217からマスクを選択する際に使用され得る。選択した鍵および/またはマスクは、次いで、複数の計算的に不経済であるラウンドおよび/または疑似ランダムマスク値の計算を実行時に避けつつMAC210を生成するために使用される。   In various examples, the MAC-Lite algorithm 216 can include a memory address 222 as part of the “message” input 220, at which address a header block begins, a block allocation memory space begins, and / or Specific metadata of the data structure is held at the address. At least one of the message inputs (eg, a memory address, etc.) selects a mask from the startup generation mask 217 and / or when selecting a plurality of separate one or more keys from the startup generation key 218 Can be used when The selected key and / or mask is then used to generate the MAC 210 while avoiding multiple computationally uneconomic round and / or pseudo-random mask value calculations at run time.

加えて、MACアルゴリズム216は、「メッセージ」入力220の一部として、ヘッダブロックのコンテンツ(たとえば、その中に記憶されたデータ構造)などの他の入力1…n 224も含むことができる。MAC210aが、対応するヘッダブロック206a内の情報のうちの少なくともいくつか(たとえば、メモリブロック214aまたはブロック確保メモリ空間208aに関するメモリアドレス、メモリブロック214aまたはブロック確保メモリ空間208aのサイズ、等)に基づいて計算されるので、ヘッダブロック206a、メモリブロック214aもしくはブロック確保メモリ空間208aに関するアドレス、ならびに/または対応するメモリブロック214aおよび/もしくはブロック確保メモリ空間208aのサイズを改ざんしようとする何らかの試みは、対応するMAC210aを検証することによって検出され得る。   In addition, the MAC algorithm 216 may also include other inputs 1... N 224 such as the contents of the header block (eg, the data structure stored therein) as part of the “message” input 220. Based on at least some of the information in the corresponding header block 206a (e.g., memory address for memory block 214a or block reserved memory space 208a, size of memory block 214a or block reserved memory space 208a, etc.) Any attempt to tamper with the address of header block 206a, memory block 214a or block reserved memory space 208a and / or the size of corresponding memory block 214a and / or block reserved memory space 208a will be It can be detected by verifying MAC 210a.

このMAC210は、データ構造内に(ヘッダブロック206内に)記憶されることが可能であり、データ構造がアクセスされる(たとえば、読出し操作または書込み操作)ときにはいつでも検査され得る。   This MAC 210 can be stored in a data structure (in header block 206) and can be examined whenever the data structure is accessed (eg, a read or write operation).

図3は、巡回冗長検査(CRC)またはカナリア値よりもより高い安全性を有する一方で、図1の暗号MACよりもより計算的に効率的であるMAC-Liteアルゴリズム302の例を図示する。このMAC-Liteアルゴリズム302は、たとえば、図2のMAC-Lite発生器212によって実装され得る。   FIG. 3 illustrates an example of a MAC-Lite algorithm 302 that has greater security than a cyclic redundancy check (CRC) or canary value, but is more computationally efficient than the cryptographic MAC of FIG. This MAC-Lite algorithm 302 may be implemented, for example, by the MAC-Lite generator 212 of FIG.

この手法では、鍵のセット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へとグループ分けされている。これらの鍵値は、潜在的な攻撃者には、秘密かつ変更不可能であるべきである。   In this approach, key set 304 and / or mask 306 can be pre-generated at boot-up and / or at startup, and then to generate a MAC for one or more memory blocks (E.g., during the entire session). For example, the plurality of keys 304k [0] [0], ..., k [n] [NK-1] may be generated randomly or pseudo-randomly (eg, may be generated based on a random or pseudo-random value) ). In this example, a plurality of keys 304k [0] [0],..., K [n] [NK-1] is a first subset of keys 306a k [0] [0],. NK-1], second subset of keys 306b k [1] [0],…, k [1] [NK-1], third subset of keys 306c k [n] [0],…, k [n] [NK-1] are grouped into a plurality of subsets 306a, 306b, and 306c. These key values should be secret and unchangeable to potential attackers.

同様に、mask[0], mask[1], …, mask[NM-1]を含む複数のマスク値308は、ブート時および/またはスタートアップにおいて事前生成されることが可能であり、その後、1つまたは複数のメモリブロックについてのMACを生成するために(たとえば、全体のセッション中に)使用され得る。   Similarly, multiple mask values 308 including mask [0], mask [1], ..., mask [NM-1] can be pre-generated at boot time and / or at startup, after which 1 Can be used to generate a MAC for one or more memory blocks (eg, during an entire session).

この例では、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との間(両端を含む)であり得る。   In this example, the MAC-Lite algorithm 302 has as inputs: multiple inputs Input_1 310a, Input_2 310b, Input_n 310c, variable memory address 312, preselected or predetermined prime p 314, selected mask 316, and / or key. A plurality of selected keys 318 selected from the set 304 can be employed. In one example, the mask values 308 mask [0], mask [1],..., Mask [NM-1] may each be the same bit length as the prime number p 314. In addition, the key values k [0] [0],..., K [n] [NK-1] in the key set 304 may be between 0 and p-1 (inclusive).

所与のメモリブロックについて、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の各々から選択され得る。   For a given memory block, the MAC may be generated using the MAC-Lite algorithm 302. The plurality of keys 318 may be selected from the set of keys 304 based on one or more indexes generated from the variable memory address 312, for example. For example, the function f and the variable memory address 312 addr can serve to generate a key index: f (addr) = key_index_0, ..., key_index_n. For example, each key index may be between the integer values 0 and NK-1. As a result, the selected key set 318 may be selected from each of the subsets 306a, 306b, and 306c of the plurality of keys 304.

同様に、マスク316は、たとえば、可変メモリアドレス312から生成されるインデックスに基づいて複数のマスク値308から選択され得る。たとえば、同じまたは異なる関数fおよび可変メモリアドレス312 addrは、マスクインデックス:f(addr)=mask_indexを生成するために働くことができる。たとえば、マスクインデックス313は、整数値0とNM-1との間であってもよい。その結果、マスク316は、複数のマスク308から選択され得る。   Similarly, mask 316 may be selected from a plurality of mask values 308 based on an index generated from variable memory address 312, for example. For example, the same or different function f and variable memory address 312 addr can serve to generate a mask index: f (addr) = mask_index. For example, the mask index 313 may be between the integer values 0 and NM-1. As a result, the mask 316 can be selected from a plurality of masks 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は、公表され得るが、攻撃者によって変更可能にするべきではない。   Multiple selected keys 318, selected mask 316, prime number p 314, and variable memory address 312, input_1 310a, input_2 310b,..., Input_n 310c may be combined in a way that produces a MAC output that is difficult to predict. . For the memory management case, the variable memory address (addr) 312 may be, for example, a start address for a header block of a memory structure. Similarly, the plurality of other input variables input_1 310a, input_2 310b,..., Input_n 310c may be different variables in the data structure or header block. The MAC-Lite algorithm 302 can be parameterized by a prime number p 314 that can be greater than any possible individual input (eg, k [j] [i] ≦ p−1). This individual input can be determined thanks to the assumption that the input characteristics for the MAC-Lite algorithm 302 are known. As long as it is possible to efficiently map a set of possible inputs to a set of inputs that are all guaranteed to be less than the prime p 314 in bijection, this prime p 314 is It may be smaller than some possible inputs (eg, selected key 318, selected mask 316, memory address 312 and / or input 310). This also allows small inputs to be combined into one large variable. This prime p 314 can be published, but should not be changeable by the attacker.

代替実装形態では、入力(たとえば、選択した鍵318、選択したマスク316、メモリアドレス312、および/または入力310)もまた、入力をフィールドの要素へ写像することによって、任意有限フィールドGF(2^n)を使用して実装され得る。   In alternative implementations, the input (e.g., selected key 318, selected mask 316, memory address 312 and / or input 310) can also be mapped to an arbitrary finite field GF (2 ^ by mapping the input to field elements. n) can be used to implement.

一例では、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を生成することができる。
In one example, the MAC-Lite algorithm 302 can include two stages. First, the intermediate polynomial value (Val) is:
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.
Is calculated as Then the MAC value is:
MAC_value = Intermediate_Val XOR mask [mask_index]
Is calculated as In this way, the MAC-Lite algorithm 302 can generate an output MAC value 320 that is relatively safe while avoiding multiple rounds of iterative computation each time a memory block is accessed.

図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。   FIG. 4 illustrates an example of a MAC-Lite algorithm that can be implemented to generate a MAC more efficiently than a conventional MAC. A set of keys k [0] [0],..., K [n] [NK-1] is pre-generated 402 at device or session startup or start. Similarly, a set of masks mask [0], mask [1],..., Mask [NM-1] are pre-generated 404 at device or session startup or start. A plurality of variable inputs (eg, addr, input_1, input_2,..., Input_n) associated with the data structure are obtained 406. Multiple keys from a set of keys (eg k [0] [key_index_0], k [1] [key_index_1], k [2] [key_index_2], and k [n] [key_index_n]) 408 selected from one or more. Similarly, a mask from a set of masks (eg, mask [mask_index]) is selected 410 based on one or more of the variable inputs. Intermediate values are obtained by combining each of multiple variable inputs with a corresponding selected key to obtain multiple temporary values, combining multiple temporary values, and modulo p operations to obtain intermediate values Calculated by executing 412. In various examples, each input and corresponding key can be used for logical operations, arithmetic operations (e.g., multiplication), and / or for combining two values and for obtaining a temporary value. They may be combined using other operations or functions. In one case, 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 Where p is a prime number. An exclusive OR (XOR) operation may then be performed 414 between the intermediate value and the selected mask (eg, mask [mask_index]) to obtain a message authentication code (MAC).

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と同じビット長を有することができる。   In one exemplary implementation, multiple keys 304 (eg, a set of keys) may be indexed (eg, selectable by key_index_x). Similarly, multiple masks 308 (eg, a set of masks) may be indexed (eg, selectable by mask_index 313). As a result, the key_index value and / or mask_index can be generated based on one of the variable inputs for the data structure. Various other ways of using variable input, alone or in combination with other information, vary depending on the variable input (e.g., it may be apparent throughout the data structure that the variable input changes) Can be used in generating The mask_index can be selected from a plurality of NM masks 308, where NM is an integer value and is used in calculating the MAC value 320. The selection of a particular mask_index 313 from among the plurality of masks 308 can be random, pseudo-random, and / or can follow some selection algorithm (eg, as a function of memory address 312). In one example, each of the masks in the plurality of masks 308 can have the same bit length as the prime number 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は、攻撃者に対してより大きい安全性を提供するために異なる。   In one example, the plurality of keys 304 may be subdivided into subsets 306a, 306b, 306c, each having NK elements (ie, keys). Multiple key_index_x may be selected based on the same variable input or different variable inputs, similar to the selection of mask_index. For example, the length NK of the subsets 306a, 306b, and 306c of the key set 304 can be used to derive a key index value for each of the subsets 306a, 306b, 306c. For example, the selection of a particular key_index 313 (eg, key_index_1, key_index_2, ..., key_index_n) from among multiple masks 308 can be random, pseudo-random, and / or some selection algorithm (Eg, as a function of memory address 312). Preferably, the key_index into each of the subsets 306a, 306b, 306c is different to provide greater security for the attacker.

MAC-Liteアルゴリズム302が、単にメモリ完全性のためだけでなく、様々な異なる文脈(context)において使用され得ることに留意されたい。このMAC-Liteアルゴリズム302がメモリ完全性のために使用されるケースでは、MAC320は、メモリブロックに関するヘッダブロック内のデータ構造の一部として記憶され得る。同じメモリブロックへのその後のアクセス(たとえば、読出しまたは書込み)で、MACは、生成され、ヘッダブロック内の前に記憶したMACと比較されて、これらが同じであることを確かめる。MACが異なる場合には、メモリブロックが危険に曝されていると仮定または結論付けることができ、メモリブロックがフラッシュされるまたは無視され得る。加えて、危険に曝されたメモリブロックの発生はまた、メモリ領域内の他のメモリ構造が危険に曝されているかもしれないことを示すことができる。その結果、他のメモリブロックも、フラッシュされ無視され得る、またはシステムは、再スタートされ得る。   Note that the MAC-Lite algorithm 302 can be used in a variety of different contexts, not just for memory integrity. In the case where this MAC-Lite algorithm 302 is used for memory integrity, the MAC 320 may be stored as part of the data structure in the header block for the memory block. On subsequent accesses (eg, reads or writes) to the same memory block, a MAC is generated and compared to the previously stored MAC in the header block to ensure that they are the same. If the MACs are different, it can be assumed or concluded that the memory block is at risk and the memory block can be flushed or ignored. In addition, the occurrence of a memory block at risk may also indicate that other memory structures in the memory area may be at risk. As a result, other memory blocks can be flushed and ignored, or the system can be restarted.

図5は、認証コードがマスクの別個のセットおよび鍵の別個のセットの事前生成に基づいて生成される一般的な手法を図示する。複数の別個の鍵を含む鍵のセットが、事前生成される502。たとえば、鍵のセットは、処理回路のスタートアップで、処理回路のブートアップで、および/または処理回路上で実行されるセッション(たとえば、処理セッション、アプリケーションセッション、通信セッション、等)の開始で生成され得る。いくつかの実装形態では、鍵のセットは、図3に図示したようにサブセット(たとえば、鍵のセット304ならびにサブセット306a、306b、および306c)へと細分化され得る。同様に、別個のマスクを含むマスクのセットが、事前生成される504。たとえば、マスクのセットも、処理回路のスタートアップで、処理回路のブートアップで、および/または処理回路上で実行されるセッション(たとえば、処理セッション、アプリケーションセッション、通信セッション、等)の開始で生成され得る。鍵のセットおよびマスクのセットのうちの少なくとも一方は、(たとえば、ハードウェアランダムビット発生器、予想できないシステムイベントに基づく乱数発生器、ソフトウェア乱数発生器、シード値に基づく疑似乱数発生器、等からの)ランダム値に基づいて生成され得る。鍵のセットおよびマスクのセットは、秘密に保たれ得る。   FIG. 5 illustrates a general approach in which an authentication code is generated based on pre-generation of a separate set of masks and a separate set of keys. A set of keys including a plurality of distinct keys is pre-generated 502. For example, a set of keys is generated at processing circuit startup, at processing circuit boot-up, and / or at the start of a session (e.g., processing session, application session, communication session, etc.) executed on the processing circuit. obtain. In some implementations, the set of keys may be subdivided into subsets (eg, key set 304 and subsets 306a, 306b, and 306c) as illustrated in FIG. Similarly, a set of masks including separate masks is pre-generated 504. For example, a set of masks may also be generated at processing circuit startup, at processing circuit boot-up, and / or at the beginning of a session (e.g., processing session, application session, communication session, etc.) executed on the processing circuit. obtain. At least one of the set of keys and the set of masks (e.g., from a hardware random bit generator, a random number generator based on unpredictable system events, a software random number generator, a pseudo random number generator based on a seed value, etc. Can be generated based on random values. The set of keys and the set of masks can be kept secret.

データ構造(たとえば、メッセージ、メモリ領域、データ、ファイル、伝送、ヘッダブロック情報、等)に関係付けられた複数の変数入力が、引き続いて取得され得る506。いくつかの実装形態では、そのような変数入力は、データ構造に関係付けられたメモリアドレスまたはデータ構造の位置を含むことができる。   A plurality of variable inputs associated with a data structure (eg, message, memory region, data, file, transmission, header block information, etc.) may be subsequently obtained 506. In some implementations, such variable inputs may include memory addresses or data structure locations associated with the data structure.

複数の変数入力の各々は、複数の一時的な値を取得するために、鍵のセットからの選択した対応する鍵と(たとえば、論理演算または乗算などの算術演算によって)組み合わせられ得る508。複数の一時的な値は、次いで、1つの組合せ値を取得するために(たとえば、論理演算または加算などの算術演算、等によって)組み合わせられる510。複数の異なる鍵の各々は、複数の変数入力のうちの少なくとも1つに基づいて選択され得る。モジュロ演算が、次いで、中間値を取得するために、固定素数を使用して1つの組合せ値について実行され得る512。一例では、中間値は、複数の一時的な値を取得するために複数の変数入力の各々とその選択した対応する鍵との乗算として計算され得、その結果得られた一時的な値を加算し、かつ事前選択した固定素数とのモジュロ演算を実行し得る。使用する各鍵の値は、ゼロと素数との間であり得る。   Each of the plurality of variable inputs may be combined 508 with a selected corresponding key from a set of keys (eg, by an arithmetic operation such as a logical operation or multiplication) to obtain a plurality of temporary values. The multiple temporary values are then combined 510 (eg, by a logical operation or an arithmetic operation such as addition, etc.) to obtain a combined value. Each of the plurality of different keys may be selected based on at least one of the plurality of variable inputs. A modulo operation may then be performed 512 on one combination value using a fixed prime number to obtain an intermediate value. In one example, the intermediate value can be calculated as the multiplication of each of the multiple variable inputs and its corresponding corresponding key to obtain multiple temporary values, and the resulting temporary values are added. And a modulo operation with a pre-selected fixed prime number may be performed. The value of each key used can be between zero and a prime number.

排他的論理和(XOR)演算は、次いで、データ構造についてのメッセージ認証コードを取得するために、中間値とマスクのセットからの選択したマスクとの間で実行され得る514。マスクは、複数の変数入力のうちの少なくとも1つ(たとえば、データ構造に対応する可変メモリアドレス空間)に基づいて選択され得る。代替実装形態では、異なる演算(たとえば、論理演算または算術演算)が、中間値と選択したマスクとを組み合わせるために採用され得ることに留意されたい。   An exclusive OR (XOR) operation may then be performed 514 between the intermediate value and the selected mask from the set of masks to obtain a message authentication code for the data structure. The mask may be selected based on at least one of a plurality of variable inputs (eg, a variable memory address space corresponding to the data structure). Note that in alternative implementations, different operations (eg, logical or arithmetic operations) may be employed to combine the intermediate value with the selected mask.

メッセージ認証コードは、メモリデバイスのデータ構造内に記憶され得る516。いくつかの例では、データ構造は、固定長データ構造であってもよい。   The message authentication code may be stored 516 in the data structure of the memory device. In some examples, the data structure may be a fixed length data structure.

その後、データ構造が再びアクセスされると、前に記憶したメッセージ認証コードが、データ構造から取得される518。次いで、メッセージ認証コードは、データ構造の完全性を確認するために、前に記憶したメッセージ認証コードと比較され得る520。   Thereafter, when the data structure is accessed again, the previously stored message authentication code is obtained 518 from the data structure. The message authentication code can then be compared 520 with a previously stored message authentication code to verify the integrity of the data structure.

図6は、データ構造の完全性を安全にするために、MAC-Liteアルゴリズムを実行するように適合されたデバイスの例示的な実装形態を図示するブロック図である。デバイスは、別々のまたは集積されたメモリデバイス604に結合された処理回路602を含むことができる。処理回路602は、データ構造の完全性を安全にするために、メモリデバイス604内に記憶された1つまたは複数のデータ構造608a、608b、608cについてMAC-Liteアルゴリズムを実施するように適合され得るメッセージ認証コード(MAC)発生器606を含むことができる。   FIG. 6 is a block diagram illustrating an exemplary implementation of a device adapted to execute a MAC-Lite algorithm to secure data structure integrity. The device can include a processing circuit 602 coupled to a separate or integrated memory device 604. Processing circuit 602 may be adapted to implement a MAC-Lite algorithm on one or more data structures 608a, 608b, 608c stored in memory device 604 to secure the integrity of the data structure. A message authentication code (MAC) generator 606 can be included.

MAC発生器606は、MAC-Liteアルゴリズムの1つまたは複数の機能またはステップを実施する複数の回路および/またはモジュールを含むことができる。鍵事前生成回路/モジュール610は、処理回路602のスタートアップもしくはブートアップで、または処理回路602上で実行されるセッションもしくはアプリケーションの開始で、複数の鍵を含む鍵のセット628をランダムにまたは疑似ランダムに生成することができる。鍵のセット628は、安全なメモリデバイス626にまたは処理回路602もしくはメモリデバイス604内の安全な場所に記憶され得る。同様に、マスク事前生成回路/モジュール612は、処理回路602のスタートアップもしくはブートアップで、または処理回路602上で実行されるセッションもしくはアプリケーションの開始で、複数のマスクを含むマスクのセット630をランダムにまたは疑似ランダムに生成することができる。マスクのセット630は、安全なメモリデバイス626にまたは処理回路602もしくはメモリデバイス604内の安全な場所に記憶され得る。安全なメモリデバイス626(または場所)内のマスクのセットおよび/または鍵のセットは、スタートアップ間のまたは(アプリケーション)セッション間の期間にわたり記憶され得る。結果として、マスクのセットおよび/または鍵のセットは、1回だけの読出し/書込み操作に対してまたは1つのメモリブロックに対しては使用されない。代わりに、これは、サイクル中の(たとえば、スタートアップ間のまたはセッション間の)すべての読出し/書込み操作およびすべてのメモリブロックに対して使用される。   The MAC generator 606 can include multiple circuits and / or modules that perform one or more functions or steps of the MAC-Lite algorithm. The key pre-generation circuit / module 610 randomly or pseudo-randomizes a key set 628 containing multiple keys at the startup or boot-up of the processing circuit 602 or at the start of a session or application running on the processing circuit 602. Can be generated. Key set 628 may be stored in secure memory device 626 or in a secure location within processing circuit 602 or memory device 604. Similarly, the mask pre-generation circuit / module 612 randomly selects a set of masks 630 that includes multiple masks at startup or boot-up of the processing circuit 602 or at the start of a session or application running on the processing circuit 602. Alternatively, it can be generated pseudo-randomly. The set of masks 630 can be stored in a secure memory device 626 or in a secure location within the processing circuit 602 or memory device 604. The set of masks and / or the set of keys in the secure memory device 626 (or location) may be stored for a period between startups or between (application) sessions. As a result, the mask set and / or key set is not used for a single read / write operation or for a single memory block. Instead, it is used for all read / write operations and all memory blocks in a cycle (eg, between startups or sessions).

書込み操作または読出し操作のためにデータ構造にアクセスすると、鍵セレクタ回路/モジュール614は、データ構造に関係付けられた少なくとも1つの入力(たとえば、データ構造に関する可変メモリアドレス、等)に基づいて鍵のセット628から複数の鍵を選択することができる。同様に、マスクセレクタ回路/モジュール616は、少なくとも1つの入力(たとえば、データ構造に関する可変メモリアドレス、等)またはデータ構造に関係付けられた異なる1つまたは複数の入力に基づいてマスクのセット630からマスクを選択することができる。   When accessing a data structure for a write operation or a read operation, the key selector circuit / module 614 may determine whether the key structure is based on at least one input associated with the data structure (e.g., a variable memory address for the data structure, etc.). Multiple keys can be selected from the set 628. Similarly, the mask selector circuit / module 616 may receive from the set of masks 630 based on at least one input (e.g., a variable memory address for the data structure, etc.) or a different one or more inputs related to the data structure. A mask can be selected.

入力および鍵組合せ回路/モジュール618は、入力を(鍵セレクタ回路/モジュール614からの)対応する(異なる)選択した鍵と組み合わせるために働くことができる。たとえば、各入力は、異なる選択した鍵と乗算されることが可能であり、結果は、一緒に加算され得る。モジュロ演算器回路/モジュール620は、固定素数p 632を使用して入力および鍵組合せ回路/モジュール618からの結果に適用され得る。マスク組合せ回路/モジュール622は、モジュロ演算器回路/モジュール620からの結果を取得することができ、データ構造についてのMAC-Lite値を生成するために、(マスクセレクタ回路/モジュール616からの)選択したマスクを適用することができる。   The input and key combination circuit / module 618 can serve to combine the input with a corresponding (different) selected key (from the key selector circuit / module 614). For example, each input can be multiplied with a different selected key and the results can be added together. The modulo operator circuit / module 620 may be applied to the results from the input and key combination circuit / module 618 using a fixed prime number p 632. The mask combination circuit / module 622 can obtain the results from the modulo arithmetic circuit / module 620 and select (from the mask selector circuit / module 616) to generate a MAC-Lite value for the data structure. Applied masks can be applied.

MAC比較器回路/モジュール624は、データ構造についての前に記憶したMAC値を(マスク組合せ回路/モジュール622からの)動的に計算したMAC値と比較することによって、データ構造の完全性を検査するように働くことができる。   The MAC comparator circuit / module 624 checks the integrity of the data structure by comparing the previously stored MAC value for the data structure with the dynamically calculated MAC value (from the mask combination circuit / module 622). Can work as you want.

図7は、マスクの別個のセットおよび鍵の別個のセットの事前生成に基づいてメモリ空間についての認証コードを生成する例を図示する。メモリアドレスが、固定長データ構造に対して取得される702。複数の入力も、固定長データ構造内の情報に基づいて取得される704。異なる鍵が、メモリアドレスの各々および複数の変数入力に対して選択され、ここでは異なる鍵の各々が、事前生成した鍵の別個のセットから選択される706。一例では、複数の異なる鍵の各々および/またはマスクは、メモリアドレスに基づいて(たとえば、関数として)選択されてもよい。事前生成した鍵の別個のセットは、処理回路/デバイスのスタートアップでまたは処理回路/デバイス上で実行されるセッションの開始で生成されていてもよい。   FIG. 7 illustrates an example of generating an authentication code for a memory space based on pre-generation of a separate set of masks and a separate set of keys. A memory address is obtained 702 for the fixed length data structure. Multiple inputs are also obtained 704 based on information in the fixed length data structure. A different key is selected for each of the memory addresses and multiple variable inputs, where each of the different keys is selected 706 from a separate set of pre-generated keys. In one example, each of a plurality of different keys and / or masks may be selected (eg, as a function) based on a memory address. A separate set of pre-generated keys may be generated at the start-up of the processing circuit / device or at the start of a session executed on the processing circuit / device.

メモリアドレスは、中間値を取得するために、選択した第1の鍵とならびに選択した対応する鍵を有する複数の変数入力の各々と組み合わせられる708。中間値は、メモリアドレスと第1の鍵との乗算に加えて複数の変数入力の各々とその選択した対応する鍵との乗算、および事前選択した固定素数とのモジュロ演算を実行することとして計算され得る。使用する各鍵は、ゼロと素数との間であり得る。   The memory address is combined 708 with each of the plurality of variable inputs having the selected first key as well as the selected corresponding key to obtain an intermediate value. The intermediate value is calculated by multiplying each of a plurality of variable inputs by the corresponding key selected in addition to multiplying the memory address by the first key, and performing a modulo operation with a preselected fixed prime number. Can be done. Each key used can be between zero and a prime number.

排他的論理和(XOR)演算は、固定長データ構造についての認証コードを取得するために、中間値と事前生成したマスクの別個のセットから選択されるマスクとの間で実行される710。事前生成したマスクの別個のセットは、処理回路/デバイスのスタートアップでまたは処理回路/デバイス上で実行されるセッションの開始で生成されていてもよい。鍵の別個のセットおよびマスクの別個のセットは、秘密に保たれ得る。   An exclusive OR (XOR) operation is performed 710 between the intermediate value and a mask selected from a separate set of pre-generated masks to obtain an authentication code for the fixed length data structure. A separate set of pre-generated masks may have been generated at the start-up of the processing circuit / device or at the start of a session executed on the processing circuit / device. A separate set of keys and a separate set of masks can be kept secret.

認証コードは、次いで、固定長データ構造内に記憶され得る712。たとえば、認証コードは、固定長データ構造に関するヘッダブロック内に記憶され得る。メモリアドレスは、固定長データ構造に関するヘッダブロックのアドレスに対応することができる。   The authentication code may then be stored 712 in a fixed length data structure. For example, the authentication code may be stored in a header block for a fixed length data structure. The memory address can correspond to the address of the header block for a fixed length data structure.

固定長データ構造のその後のアクセスにおいては、その完全性は、メッセージ認証コードを再生成することによって、およびこれを同じデータ構造についての前に記憶したメッセージ認証コードと比較することによって検証され得る。   In subsequent accesses of the fixed length data structure, its integrity can be verified by regenerating the message authentication code and comparing it to a previously stored message authentication code for the same data structure.

図に図示した構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数は、1つの構成要素、ステップ、特徴もしくは機能へと再配置されるおよび/もしくは組み合わせられ得る、またはいくつかの構成要素、ステップ、もしくは機能で具体化され得る。追加の要素、構成要素、ステップ、および/または機能も、本発明から乖離せずに追加され得る。図に図示した装置、デバイス、および/または構成要素は、図に説明した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成され得る。本明細書において説明したアルゴリズムも、ソフトウェアで効率的に実施され得るおよび/またはハードウェアに効率的に取り込まれ得る。   One or more of the components, steps, features, and / or functions illustrated in the figures may be rearranged and / or combined into one component, step, feature, or function, or some May be embodied in the following components, steps, or functions. Additional elements, components, steps, and / or functions may also be added without departing from the present invention. The apparatus, devices, and / or components illustrated in the figures may be configured to perform one or more of the methods, features, or steps described in the figures. The algorithms described herein can also be efficiently implemented in software and / or efficiently incorporated into hardware.

その上、開示の一態様では、図1、2、および6に図示した処理回路102、202、および/または602は、図3、図4、図5、および/または図7に説明したアルゴリズム、方法、および/またはステップを実行するために具体的に設計されたおよび/または物理的に組み込まれた特殊プロセッサ(たとえば、特定用途向け集積回路(ASIC))であってもよい。このように、そのような特殊プロセッサ(たとえば、ASIC)は、図3、図4、図5、および/または図7に説明したアルゴリズム、方法、および/またはステップを実行するための手段の一例であり得る。プロセッサ可読記憶媒体は、特殊プロセッサ(たとえば、ASIC)によって実行されたときに、特殊プロセッサに、本明細書において説明したアルゴリズム、方法、および/またはステップを実行させる命令を記憶することができる。   Moreover, in one aspect of the disclosure, the processing circuits 102, 202, and / or 602 illustrated in FIGS. 1, 2, and 6 may be the algorithms described in FIG. 3, FIG. 4, FIG. 5, and / or FIG. It may be a special processor (eg, an application specific integrated circuit (ASIC)) specifically designed and / or physically incorporated to perform the methods and / or steps. Thus, such a special processor (e.g., ASIC) is an example of a means for performing the algorithms, methods, and / or steps described in FIG. 3, FIG. 4, FIG. 5, and / or FIG. possible. A processor-readable storage medium may store instructions that, when executed by a special processor (eg, ASIC), cause the special processor to perform the algorithms, methods, and / or steps described herein.

また、本開示の態様が、フローチャート、流れ図、構造図、またはブロック図として描かれているプロセスとして説明され得ることに留意されたい。フローチャートが一連のプロセスとして操作を記述することができるけれども、操作の多くは、並列にまたは同時に実行され得る。加えて、操作の順序は、並べ替えられてもよい。プロセスは、その操作が完了すると終了される。プロセスは、方法、機能、手順、サブルーチン、サブプログラム、等に対応することができる。プロセスが機能に対応するときには、その終了は、呼出し機能または主機能への機能の戻りに対応する。   It should also be noted that aspects of the present disclosure may be described as a process which is depicted as a flowchart, flowchart, structure diagram, or block diagram. Although a flowchart can describe operations as a series of processes, many of the operations can be performed in parallel or concurrently. In addition, the order of operations may be rearranged. The process is terminated when the operation is complete. A process can correspond to a method, function, procedure, subroutine, subprogram, and the like. When the process corresponds to a function, its termination corresponds to the return of the function to the calling function or the main function.

その上、記憶媒体は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイス、ならびに/または情報を記憶するための他の機械可読媒体、およびプロセッサ可読媒体、および/もしくはコンピュータ可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表すことができる。「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」という用語は、携帯型または固定記憶デバイス、光学的記憶デバイス、ならびに命令および/またはデータを記憶する、含有するまたは搬送することができる様々な他の媒体などの一時的でない媒体を含むことができるが、これらに限定されない。このように、本明細書において説明した様々な方法は、「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」に記憶され、かつ1つまたは複数のプロセッサ、機械および/またはデバイスによって実行され得る命令および/またはデータによって全体をまたは部分的に実装され得る。   Moreover, the storage media can be read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, and / or other machine readable media for storing information, And may represent one or more devices for storing data, including processor readable media and / or computer readable media. The terms “machine-readable medium”, “computer-readable medium”, and / or “processor-readable medium” refer to portable or fixed storage devices, optical storage devices, and instructions or / and data stored, contained or carried It can include non-transitory media such as, but not limited to, various other media that can be. As such, the various methods described herein may be stored on a “machine-readable medium”, “computer-readable medium”, and / or “processor-readable medium”, and one or more processors, machines, and / or Or it may be implemented in whole or in part by instructions and / or data that may be executed by the device.

さらにその上、本開示の態様は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはこれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードに実装されるときには、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体または他の記憶装置などの機械可読媒体中に記憶され得る。プロセッサは、必要なタスクを実行することができる。コードセグメントは、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラム文の任意の組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡すことおよび/または受け取ることによって別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データ、等は、メモリ共有、メッセージ引渡し、トークン引渡し、ネットワーク送信、等を含むいずれかの適切な手段を介して渡され、転送され、または送信され得る。   Furthermore, aspects of the present disclosure may be implemented by hardware, software, firmware, middleware, microcode, or any combination thereof. When implemented in software, firmware, middleware or microcode, program code or code segments for performing the required tasks may be stored in a machine-readable medium such as a storage medium or other storage device. The processor can perform the necessary tasks. A code segment can represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

本明細書において開示した例に関連して説明した様々な説明的な論理ブロック、モジュール、回路、素子、および/または構成要素は、汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理構成部品、単体ゲートもしくはトランジスタロジック、単体ハードウェア構成部品、または本明細書において説明した機能を実行するように設計されたこれらの任意の組合せで実装され得るまたは実行され得る。汎用プロセッサは、マイクロプロセッサであってもよいが、代替形態では、プロセッサは、いずれかの従来型のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサは、計算構成部品の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと協働する1つもしくは複数のマイクロプロセッサ、またはいずれかの他のそのような構成としても実装されてもよい。   Various illustrative logic blocks, modules, circuits, elements, and / or components described in connection with the examples disclosed herein may be general purpose processors, digital signal processors (DSPs), application specific integrated circuits ( ASIC), field programmable gate array (FPGA) or other programmable logic components, single gate or transistor logic, single hardware components, or any of these designed to perform the functions described herein Can be implemented or implemented in combination. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor is a combination of computing components, for example, a combination of a DSP and a microprocessor, several microprocessors, one or more microprocessors that cooperate with a DSP core, or any other such configuration May also be implemented.

本明細書において開示した例に関連して説明した方法またはアルゴリズムは、処理ユニット、プログラミング命令、または他の指示の形式で、ハードウェア内に直接、プロセッサによって実行可能なソフトウェアモジュールに、または両者の組合せで具体化されてもよく、1つのデバイス内に含まれてもよいし、または複数のデバイスにわたって分散されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または本技術において知られた記憶媒体のいずれかの他の形態内に存在してもよい。記憶媒体は、プロセッサが、記憶媒体から情報を読み出し、そこへ情報を書き込むことができるように、プロセッサに結合されてもよい。代替形態では、記憶媒体は、プロセッサに統合されてもよい。   The methods or algorithms described in connection with the examples disclosed herein may be in the form of processing units, programming instructions, or other instructions, directly in hardware, into software modules executable by a processor, or both. It may be embodied in combination, may be contained within one device, or may be distributed across multiple devices. A software module resides in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, removable disk, CD-ROM, or any other form of storage medium known in the art. May be. A storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.

本明細書において開示した態様に関連して説明した様々な説明的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実装され得ることを当業者ならさらに認識するであろう。ハードウェアとソフトウェアとのこの互換性を明確に例証するために、様々な説明的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能の点で一般的に上に説明されている。そのような機能が、ハードウェアまたはソフトウェアとして実装されるかどうかは、個々の用途および全体システムに課せられた設計制約に依存する。   Those skilled in the art will appreciate that the various illustrative logic blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein can be implemented as electronic hardware, computer software, or a combination of both. You will recognize further. To clearly illustrate this compatibility between hardware and software, various illustrative components, blocks, modules, circuits, and steps are generally described above in terms of their functionality. . Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.

本明細書において説明した発明の様々な特徴は、本発明から乖離せずに異なるシステムにおいて実装されてもよい。開示の前述の態様は、単に例であり、本発明を限定するように解釈されるべきはないことに留意すべきである。本開示の態様の説明は、説明的であることを意味し、特許請求の範囲の範囲を限定しないことを意味する。それはそうとして、本教示は、他のタイプの装置に容易に適用されることが可能であり、多くの代替形態、修正形態、および変形形態が、当業者には明らかであろう。   Various features of the invention described herein may be implemented in different systems without departing from the invention. It should be noted that the foregoing aspects of the disclosure are merely examples and should not be construed as limiting the invention. The description of aspects of the present disclosure is meant to be illustrative and not to limit the scope of the claims. As such, the present teachings can be readily applied to other types of devices, and many alternatives, modifications, and variations will be apparent to those skilled in the art.

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
102 Processing circuit
104 Memory device
106 Header block
108 block memory space
110 MAC
112 MAC generator
114 memory blocks
116 MAC algorithm
118 Private key
120 Message input
122 Memory address
124 inputs
202 Processing circuit
204 Memory device
206 Header block
208 block reserved memory space
210 MAC
212 MAC generator
214 memory blocks
216 MAC-Lite algorithm
217 Startup generation mask
218 Startup key
220 Message input
222 Memory address
224 inputs
302 MAC-Lite algorithm
304 set of keys
306 mask
308 Mask value, mask
310 inputs
312 Variable memory address
314 prime p
316 mask
318 keys
320 MAC value
602 processing circuit
604 memory device
606 MAC generator
608 data structure
610 Key pre-generation circuit / module
612 Mask Pre-Generation Circuit / Module
614 Key selector circuit / module
616 Mask selector circuit / module
618 Input-key combination circuit / module
620 Modulo arithmetic circuit / module
622 Mask Combination Circuit / Module
624 MAC comparator circuit / module
626 Safe memory device
Set of 628 keys
Set of 630 masks
632 fixed prime p

Claims (38)

認証コードを生成する方法であって、
処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成するステップと、
複数の別個のマスクを含むマスクのセットを事前生成するステップと、
固定長データ構造に関係付けられた複数の変数入力を取得するステップと、
複数の一時的な値を取得するために、前記複数の変数入力の各々を前記鍵のセットからの選択した対応する鍵と組み合わせるステップと、
中間値を取得するために前記複数の一時的な値を組み合わせるステップと、
前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記マスクのセットからの選択したマスクとの間の演算を実行するステップと
を含む方法。
A method for generating an authentication code, comprising:
Pre-generating a set of keys including a plurality of distinct keys at processing circuit startup or in a session executed on said processing circuit;
Pre-generating a set of masks including a plurality of separate masks;
Obtaining a plurality of variable inputs associated with a fixed length data structure;
Combining each of the plurality of variable inputs with a selected corresponding key from the set of keys to obtain a plurality of temporary values;
Combining the plurality of temporary values to obtain an intermediate value;
Performing an operation between the intermediate value and a selected mask from the set of masks to obtain a message authentication code for the fixed length data structure.
前記マスクのセットが、前記処理回路のスタートアップでまたは前記処理回路上で実行される前記セッションでも事前生成される、請求項1に記載の方法。   The method of claim 1, wherein the set of masks is pre-generated at the processing circuit startup or at the session executed on the processing circuit. 前記鍵のセットおよびマスクのセットのうちの少なくとも一方が、ランダム値に基づいて生成される、請求項1に記載の方法。   The method of claim 1, wherein at least one of the set of keys and the set of masks is generated based on a random value. 前記複数の一時的な値が、
組合せ値を取得するために前記複数の一時的な値を加算するステップと、
前記中間値を取得するために、前記組合せ値について事前選択した固定素数とのモジュロ演算を実行するステップと
によって組み合わせられる、請求項1に記載の方法。
The plurality of temporary values are
Adding the plurality of temporary values to obtain a combination value;
The method of claim 1, wherein the intermediate value is obtained by performing a modulo operation with a pre-selected fixed prime number on the combination value.
前記鍵のセット内の各鍵の前記値が、ゼロと前記事前選択した固定素数との間である、請求項4に記載の方法。   5. The method of claim 4, wherein the value of each key in the set of keys is between zero and the preselected fixed prime number. 前記中間値と前記選択したマスクとの間の前記演算が、ビット単位の排他的論理和演算である、請求項4に記載の方法。   5. The method of claim 4, wherein the operation between the intermediate value and the selected mask is a bitwise exclusive OR operation. 前記マスクおよび前記選択した対応する鍵の各々が、前記複数の変数入力のうちの少なくとも1つに基づいて選択される、請求項1に記載の方法。   The method of claim 1, wherein each of the mask and the selected corresponding key is selected based on at least one of the plurality of variable inputs. 前記複数の変数入力のうちの前記少なくとも1つが、前記固定長データ構造に関係付けられたメモリアドレスである、請求項7に記載の方法。   8. The method of claim 7, wherein the at least one of the plurality of variable inputs is a memory address associated with the fixed length data structure. 前記選択した対応する鍵の各々が、前記メモリアドレスに基づいて選択される、請求項8に記載の方法。   9. The method of claim 8, wherein each of the selected corresponding keys is selected based on the memory address. 前記選択したマスクが、前記メモリアドレスに基づいて選択される、請求項8に記載の方法。   9. The method of claim 8, wherein the selected mask is selected based on the memory address. 前記鍵のセットが、鍵のサブセットへと細分化され、鍵のサブセットだけが、前記メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される、請求項1に記載の方法。   The method of claim 1, wherein the set of keys is subdivided into subsets of keys, and only a subset of keys is selected from one subset of any key to calculate the message authentication code. . スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内に前記マスクのセットおよび鍵のセットのうちの少なくとも一方を記憶するステップ
をさらに含む、請求項1に記載の方法。
The method of claim 1, further comprising storing at least one of the set of masks and the set of keys in a secure memory location over a period between startups or sessions.
メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶するステップ
をさらに含む、請求項1に記載の方法。
The method of claim 1, further comprising storing the message authentication code in the fixed length data structure of a memory device.
前記メッセージ認証コードが、前記固定長データ構造に関するヘッダブロック内に記憶される、請求項13に記載の方法。   14. The method of claim 13, wherein the message authentication code is stored in a header block for the fixed length data structure. 前記データ構造から前に記憶したメッセージ認証コードを取得するステップと、
前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較するステップと
をさらに含む、請求項1に記載の方法。
Obtaining a previously stored message authentication code from the data structure;
The method of claim 1, further comprising comparing the message authentication code with the previously stored message authentication code to verify the integrity of the data structure.
固定長データ構造を記憶するためのメモリデバイスと、
前記メモリデバイスに結合された処理回路であって、前記処理回路が、
処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成し、
複数の別個のマスクを含むマスクのセットを事前生成し、
前記固定長データ構造に関係付けられた複数の変数入力を取得し、
複数の一時的な値を取得するために、前記複数の変数入力の各々を前記鍵のセットからの選択した対応する鍵と組み合わせ、
中間値を取得するために前記複数の一時的な値を組み合わせ、
前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記マスクのセットからの選択したマスクとの間の演算を実行する
ように適合される、処理回路と
を備える、デバイス。
A memory device for storing a fixed length data structure;
A processing circuit coupled to the memory device, the processing circuit comprising:
Pre-generate a set of keys including a plurality of distinct keys at a processing circuit start-up or at a session executed on said processing circuit;
Pre-generate a set of masks containing multiple separate masks;
Obtaining a plurality of variable inputs associated with the fixed-length data structure;
Combining each of the plurality of variable inputs with a selected corresponding key from the set of keys to obtain a plurality of temporary values;
Combining the plurality of temporary values to obtain an intermediate value;
A processing circuit adapted to perform an operation between the intermediate value and a selected mask from the set of masks to obtain a message authentication code for the fixed length data structure. .
前記マスクのセットが、前記処理回路のスタートアップでまたは前記処理回路上で実行される前記セッションでも事前生成される、請求項16に記載のデバイス。   17. The device of claim 16, wherein the set of masks is pre-generated at the processing circuit startup or at the session that is executed on the processing circuit. 前記鍵のセットおよびマスクのセットのうちの少なくとも一方が、ランダム値に基づいて生成される、請求項16に記載のデバイス。   The device of claim 16, wherein at least one of the set of keys and the set of masks is generated based on a random value. 前記複数の一時的な値が、
組合せ値を取得するために前記複数の一時的な値を加算することと、
前記中間値を取得するために、前記組合せ値について事前選択した固定素数とのモジュロ演算を実行することと
によって組み合わせられる、請求項16に記載のデバイス。
The plurality of temporary values are
Adding the plurality of temporary values to obtain a combined value;
17. The device of claim 16, wherein the device is combined by performing a modulo operation with a pre-selected fixed prime number on the combination value to obtain the intermediate value.
前記鍵のセット内の各鍵の前記値が、ゼロと前記事前選択した固定素数との間である、請求項19に記載のデバイス。   20. The device of claim 19, wherein the value of each key in the key set is between zero and the preselected fixed prime number. 前記中間値と前記選択したマスクとの間の前記演算が、ビット単位の排他的論理和演算である、請求項19に記載のデバイス。   20. The device of claim 19, wherein the operation between the intermediate value and the selected mask is a bitwise exclusive OR operation. 前記マスクおよび前記選択した対応する鍵の各々が、前記複数の変数入力のうちの少なくとも1つに基づいて選択される、請求項16に記載のデバイス。   The device of claim 16, wherein each of the mask and the selected corresponding key is selected based on at least one of the plurality of variable inputs. 前記複数の変数入力のうちの前記少なくとも1つが、前記固定長データ構造に関係付けられたメモリアドレスである、請求項22に記載のデバイス。   23. The device of claim 22, wherein the at least one of the plurality of variable inputs is a memory address associated with the fixed length data structure. 前記選択した対応する鍵の各々が、前記メモリアドレスに基づいて選択される、請求項23に記載のデバイス。   24. The device of claim 23, wherein each of the selected corresponding keys is selected based on the memory address. 前記選択したマスクが、前記メモリアドレスに基づいて選択される、請求項23に記載のデバイス。   24. The device of claim 23, wherein the selected mask is selected based on the memory address. 前記鍵のセットが、鍵のサブセットへと細分化され、鍵のサブセットだけが、前記メッセージ認証コードを計算するためにいずれかの鍵の1つのサブセットから選択される、請求項16に記載のデバイス。   The device of claim 16, wherein the set of keys is subdivided into a subset of keys, and only a subset of keys is selected from one subset of any key to calculate the message authentication code. . 前記処理回路が、
スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内に前記マスクのセットおよび鍵のセットのうちの少なくとも一方を記憶する
ようにさらに適合される、請求項16に記載のデバイス。
The processing circuit is
The device of claim 16, further adapted to store at least one of the set of masks and the set of keys in a secure memory location over a period between startups or sessions.
前記処理回路が、
メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶する
ようにさらに適合される、請求項16に記載のデバイス。
The processing circuit is
The device of claim 16, further adapted to store the message authentication code in the fixed length data structure of a memory device.
前記メッセージ認証コードが、前記固定長データ構造に関するヘッダブロック内に記憶される、請求項28に記載のデバイス。   30. The device of claim 28, wherein the message authentication code is stored in a header block for the fixed length data structure. 前記処理回路が、
前記データ構造から前に記憶したメッセージ認証コードを取得し、
前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較する
ようにさらに適合される、請求項16に記載のデバイス。
The processing circuit is
Obtaining a previously stored message authentication code from the data structure;
The device of claim 16, further adapted to compare the message authentication code with the previously stored message authentication code to verify the integrity of the data structure.
処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成するための手段と、
複数の別個のマスクを含むマスクのセットを事前生成するための手段と、
固定長データ構造に関係付けられた複数の変数入力を取得するための手段と、
複数の一時的な値を取得するために、前記複数の変数入力の各々を前記事前生成した鍵のセットからの選択した対応する鍵と組み合わせるための手段と、
中間値を取得するために前記複数の一時的な値を組み合わせるための手段と、
前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記事前生成したマスクのセットからの選択したマスクとの間の演算を実行するための手段と
を備える、デバイス。
Means for pre-generating a set of keys including a plurality of distinct keys at processing circuit startup or at a session executed on said processing circuit;
Means for pre-generating a set of masks comprising a plurality of separate masks;
Means for obtaining a plurality of variable inputs associated with a fixed length data structure;
Means for combining each of the plurality of variable inputs with a selected corresponding key from the pre-generated key set to obtain a plurality of temporary values;
Means for combining the plurality of temporary values to obtain an intermediate value;
Means for performing an operation between the intermediate value and a selected mask from the pre-generated set of masks to obtain a message authentication code for the fixed length data structure.
スタートアップ間のまたはセッション間の期間にわたって安全なメモリ位置内に前記マスクのセットおよび鍵のセットのうちの少なくとも一方を記憶するための手段
をさらに備える、請求項31に記載のデバイス。
32. The device of claim 31, further comprising means for storing at least one of the set of masks and the set of keys in a secure memory location over a period between startups or sessions.
メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶するための手段
をさらに備える、請求項31に記載のデバイス。
32. The device of claim 31, further comprising means for storing the message authentication code in the fixed length data structure of a memory device.
前記メッセージ認証コードが、前記固定長データ構造に関するヘッダブロック内に記憶される、請求項33に記載のデバイス。   34. The device of claim 33, wherein the message authentication code is stored in a header block for the fixed length data structure. 前記データ構造から前に記憶したメッセージ認証コードを取得するための手段と、
前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較するための手段と
さらに備える、請求項31に記載のデバイス。
Means for obtaining a previously stored message authentication code from the data structure;
32. The device of claim 31, further comprising means for comparing the message authentication code with the previously stored message authentication code to verify the integrity of the data structure.
少なくとも1つの処理回路によって実行されるときに、前記少なくとも1つの処理回路に、
処理回路のスタートアップでまたは前記処理回路上で実行されるセッションで複数の別個の鍵を含む鍵のセットを事前生成させ、
複数の別個のマスクを含むマスクのセットを事前生成させ、
固定長データ構造に関係付けられた複数の変数入力を取得し、
複数の一時的な値を取得するために、前記複数の変数入力の各々を前記鍵のセットからの選択した対応する鍵と組み合わせ、
中間値を取得するために前記複数の一時的な値を組み合わせ、
前記固定長データ構造についてのメッセージ認証コードを取得するために、前記中間値と前記マスクのセットからの選択したマスクとの間の演算を実行させる
1つまたは複数の命令を有するプロセッサ可読記憶媒体。
When executed by at least one processing circuit, the at least one processing circuit includes:
Pre-generating a set of keys including a plurality of distinct keys at processing circuit startup or at a session executed on said processing circuit;
Pre-generate a set of masks containing multiple separate masks;
Get multiple variable inputs associated with a fixed-length data structure,
Combining each of the plurality of variable inputs with a selected corresponding key from the set of keys to obtain a plurality of temporary values;
Combining the plurality of temporary values to obtain an intermediate value;
Perform an operation between the intermediate value and a selected mask from the set of masks to obtain a message authentication code for the fixed length data structure
A processor readable storage medium having one or more instructions.
少なくとも1つの処理回路によって実行されるときに、前記少なくとも1つの処理回路に、
メモリデバイスの前記固定長データ構造内に前記メッセージ認証コードを記憶させる
1つまたは複数の命令をさらに有する、請求項36に記載のプロセッサ可読記憶媒体。
When executed by at least one processing circuit, the at least one processing circuit includes:
Storing the message authentication code in the fixed-length data structure of a memory device;
40. The processor readable storage medium of claim 36, further comprising one or more instructions.
少なくとも1つの処理回路によって実行されるときに、前記少なくとも1つの処理回路に、
前記データ構造から前に記憶したメッセージ認証コードを取得させ、
前記データ構造の完全性を確認するために、前記メッセージ認証コードを前記前に記憶したメッセージ認証コードと比較させる
1つまたは複数の命令をさらに有する、請求項36に記載のプロセッサ可読記憶媒体。
When executed by at least one processing circuit, the at least one processing circuit includes:
Obtaining a previously stored message authentication code from the data structure;
Have the message authentication code compared to the previously stored message authentication code to verify the integrity of the data structure
40. The processor readable storage medium of claim 36, further comprising one or more instructions.
JP2015556977A 2013-02-07 2014-01-31 Methods for protecting the integrity of fixed-length data structures Expired - Fee Related JP6077678B2 (en)

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 (en) 2016-03-10
JP2016508002A5 JP2016508002A5 (en) 2016-08-25
JP6077678B2 JP6077678B2 (en) 2017-02-08

Family

ID=50113037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015556977A Expired - Fee Related JP6077678B2 (en) 2013-02-07 2014-01-31 Methods for protecting the integrity of fixed-length data structures

Country Status (6)

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

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 (en) * 2019-07-03 2021-01-05 旺宏电子股份有限公司 Electronic device, memory device and method for reading stored data of memory device
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 (en) * 2020-08-27 2023-07-25 株式会社東芝 Cryptographic processing device, cryptographic processing method and program
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 (en) * 2002-05-20 2003-11-28 Hitachi Ltd Computer, hard disk device, disk device sharing system constructed of a plurality of computers and shared hard disk device, and sharing method for disk device used in the system
JP2008122967A (en) * 2006-11-13 2008-05-29 Korea Electronics Telecommun Method of generating message authentication code using stream cipher, and authentication/encryption and authentication/decryption methods using stream cipher
JP2009211504A (en) * 2008-03-05 2009-09-17 Hitachi Ltd Information providing server, program, information providing method, and information providing system
JP4854677B2 (en) * 2005-01-07 2012-01-18 テレフオンアクチーボラゲット エル エム エリクソン(パブル) Updating the memory content of the processing device
JP2012501579A (en) * 2008-08-28 2012-01-19 アルカテル−ルーセント ユーエスエー インコーポレーテッド Pre-calculation of message authentication code applied to secure memory

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 (en) * 2000-01-21 2009-02-26 Sony Corp. DATA PROCESSING DEVICE AND DATA PROCESSING METHOD
FR2810138B1 (en) * 2000-06-08 2005-02-11 Bull Cp8 METHOD FOR SECURE STORAGE OF SENSITIVE DATA IN A MEMORY OF AN ELECTRONIC CHIP-BASED SYSTEM, IN PARTICULAR A CHIP CARD, AND ON-BOARD SYSTEM IMPLEMENTING THE METHOD
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 (en) 2005-01-20 2006-08-03 Nara Institute Of Science & Technology Microprocessor, node terminal, computer system and program execution certification method
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 (en) * 2006-11-22 2008-05-27 삼성전자주식회사 Encoding and decoding method of contents file
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 (en) 2008-08-22 2013-03-06 株式会社日立製作所 Hash value generator
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 (en) 2011-03-08 2013-07-03 株式会社東芝 Cryptographic operation unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337736A (en) * 2002-05-20 2003-11-28 Hitachi Ltd Computer, hard disk device, disk device sharing system constructed of a plurality of computers and shared hard disk device, and sharing method for disk device used in the system
JP4854677B2 (en) * 2005-01-07 2012-01-18 テレフオンアクチーボラゲット エル エム エリクソン(パブル) Updating the memory content of the processing device
JP2008122967A (en) * 2006-11-13 2008-05-29 Korea Electronics Telecommun Method of generating message authentication code using stream cipher, and authentication/encryption and authentication/decryption methods using stream cipher
JP2009211504A (en) * 2008-03-05 2009-09-17 Hitachi Ltd Information providing server, program, information providing method, and information providing system
JP2012501579A (en) * 2008-08-28 2012-01-19 アルカテル−ルーセント ユーエスエー インコーポレーテッド Pre-calculation of message authentication code applied to secure memory

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 (en) 2018-04-10
EP2954636A1 (en) 2015-12-16
JP6077678B2 (en) 2017-02-08
KR20150115874A (en) 2015-10-14
KR101734205B1 (en) 2017-05-11
CN104969508A (en) 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 (en) Methods for protecting the integrity of fixed-length data structures
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 (en) Information processing method and device
TW202036347A (en) Method and apparatus for data storage and verification
US7970133B2 (en) System and method for secure and flexible key schedule generation
KR20200031671A (en) Counter integrity tree for memory security
CN113010856A (en) Dynamic asymmetric encryption and decryption JavaScript code obfuscation method and system
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 (en) Virtual machine starting verification method and device
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 (en) Apparatus and method for authentication of software
JP2022520463A (en) Methods and devices for processing data stored in memory devices
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