JP2022541057A - 暗号置換のための暗号アーキテクチャ - Google Patents

暗号置換のための暗号アーキテクチャ Download PDF

Info

Publication number
JP2022541057A
JP2022541057A JP2022503796A JP2022503796A JP2022541057A JP 2022541057 A JP2022541057 A JP 2022541057A JP 2022503796 A JP2022503796 A JP 2022503796A JP 2022503796 A JP2022503796 A JP 2022503796A JP 2022541057 A JP2022541057 A JP 2022541057A
Authority
JP
Japan
Prior art keywords
cryptographic
permutation
register
processing unit
registers
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.)
Pending
Application number
JP2022503796A
Other languages
English (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 JP2022541057A publication Critical patent/JP2022541057A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • 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
    • 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/602Providing cryptographic facilities or services
    • 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/606Protecting data by securing the transmission between two devices or processes
    • 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
    • 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
    • G06F21/72Protecting 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 in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • 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
    • 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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

暗号方法とシステムについて説明する。特定の実施例は、暗号置換を含む暗号演算を実行することに関する。この方法及びシステムを使用して、ハッシュ、暗号化、復号、及び乱数生成などの暗号関数を提供することができる。一実施例では、暗号アーキテクチャが提供される。暗号アーキテクチャは、暗号レジスタのセットを含むプロセッサインタフェースを有し、プロセッサインタフェースは、少なくとも1つの処理ユニットによってアクセス可能である。暗号アーキテクチャはまた、暗号レジスタのセット内に格納されたデータを使用して暗号置換を実行する回路を含む暗号置換ユニットを有する。実施例において、少なくとも1つの処理ユニットは、暗号置換を指示し、プロセッサインタフェースを使用して暗号置換の結果にアクセスする。

Description

本発明は、暗号アーキテクチャ及び暗号演算を実行する方法に関する。特に、本発明は、暗号置換を含む暗号演算に関する。本明細書で説明される特定の実施例は、暗号演算を実行するためにコンピューティングデバイス内で使用され得る。
最近、コンピュータネットワークに接続されているデバイスの数が爆発的に増加している。例えば、インターネット接続は、デスクトップやラップトップコンピュータなどのコンピューティングデバイスを超えて、自動車、電球、冷蔵庫、医療機器、サーモスタット、監視システムなどの日常の対称内の組み込みシステムにまで拡大している。通信リンクにより、世界中で多くの低コストのコンピューティングデバイスがセンサデータを報告し、及び/または制御されることができるようになる。これらの接続されたデバイスの課題の1つは、攻撃や悪意のある制御に対して脆弱であることが多いことである。例えば、数百または数千の組み込みデバイスが悪意のある者によって侵害され、分散型サービス拒否攻撃を実行するために使用される可能性がある。多くの場合、暗号プロトコルの実装が不十分または限定されているため、これらのデバイスの制御は簡単に得られる。これらの接続されたデバイスの数と大衆性が高まるにつれ、それらを保護する方法について未解決の問題がある。
接続されたコンピューティングデバイスを保護する際のもう1つの考慮事項は、量子コンピューティングを使用した将来の攻撃の可能性である。長年の間、量子コンピュータは主に理論的な関心事であった。しかし、量子コンピュータの研究実装は急速に発展している。現在、50キュービットと72キュービットの量子コンピュータが利用可能であり、より高度のキュービットマシンに積極的に取り組んでいる多くの研究グループがある。量子コンピューティングの将来の現実性を考えると、最近の研究では、多くの有名な公開鍵暗号システムが十分に強力な量子コンピュータによって破られる可能性があることが示されている。
暗号関数、特に「ポスト量子」で安全な関数を実装する場合、これらの関数の多くがリソースを大量に消費するという課題がある。例えば、多くの暗号関数には、ビット長の長い値を使用する複雑な数学関数が含まれる。これらは通常、多数のプロセッササイクルを消費し、低リソースの組み込みデバイス内での実装に問題をもたらす。さらに、データと通信の両方のエンドツーエンド暗号化が一般的になるにつれて、これらの暗号関数も高速で繰り返し実行する必要がある。安全であるということは遅いということになる。
米国特許第9,772,845B2号は、KECCAKセキュアハッシュアルゴリズムを処理するための装置を記載している。米国特許第9,772,845B2号の装置では、命令デコーダは、KECCAKハッシュアルゴリズムのKECCAK状態を表すデータのKECCAK状態キューブを処理するための命令を受信する。この命令は、KECCAK状態キューブを複数のサブキューブに分割し、サブキューブを複数のレジスタにそれぞれ格納するように指示する。命令デコーダに結合された実行ユニットは、ベクトル方式で複数のレジスタにそれぞれ格納された複数のサブキューブに対してKECCAKハッシュアルゴリズムを実行する。米国特許第9,772,845B2号の装置は、複合命令セットコンピューティング(CISC)または縮小命令セットコンピューティング(RISC)プロセッサなどのプロセッサである。米国特許第9,772,845 B2号に記載されている方法は、プロセッサによって実装される。この方法は、KECCAKアルゴリズムのラウンドごとに8つの命令を使用して実装でき、この場合、各ラウンドは、全体データのスライス(サブキューブ)に対して実行される。
暗号演算の効率的な実装を提供することが望ましい。例えば、ポスト量子環境での攻撃に対する耐性を提供しながら、低リソースの組み込みシステム内及び/または高速データ処理演算において使用できる実装を提供することが望まれる。
本発明の態様は、添付の独立請求項に記載されている。次に、本発明の特定の変形例が、添付の従属請求項に記載されている。
ここで、添付の図面を参照しながら、本発明の実施例を例としてのみ説明する。
一実施例による、暗号アーキテクチャを示す概略図である。 一実施例による、プロセッサインタフェースのレジスタを示す概略図である。 一実施例による、プロセッサインタフェースのための暗号レジスタの第1のセットを示す概略図である。 一実施例による、プロセッサインタフェースのための暗号レジスタの第2のセットを示す概略図である。 一実施例による、暗号置換ユニットを示す概略図である。 一実施例による、プロセッサインタフェースのための制御レジスタのセットを示す概略図である。 一実施例による、暗号演算を実行する方法を示す流れ図である。 一実施例による、暗号アーキテクチャ及び処理ユニットによって実行される第1の演算シーケンスを示す流れ図である。 一実施例による暗号アーキテクチャ及び処理ユニットによって実行される第2の演算シーケンスを示す流れ図である。
本明細書で説明される特定の実施例は、処理ユニットが暗号置換を効率的に実行することを可能にする暗号アーキテクチャを提供する。暗号アーキテクチャは、処理ユニットが暗号置換ユニットと効果的に通信して暗号置換を実行できるようにするプロセッサインタフェースを提供する。したがって、処理ユニットは、置換の計算を専用モジュールに効果的にオフロードし、次に、プロセッサインタフェースを介して置換の結果にアクセスすることができる。暗号アーキテクチャは、「ポスト量子」での安全も含め、多くの高度な暗号関数を迅速に計算できるようにするアトミックな低レベルの演算を提供することができる。暗号アーキテクチャは、プロセッサまたはマイクロプロセッサに代わって高速暗号ベースの関数を実行することができ、そのため、低電力の組み込みデバイスと高スループットのサーバデバイスの両方にメリットがある。
図1は、暗号アーキテクチャ110の実施例100を示している。図1では、暗号アーキテクチャ110は、暗号アーキテクチャ110が処理ユニット130と通信することを可能にするプロセッサインタフェース120を含む。処理ユニット130は、暗号アーキテクチャ110の一部を形成しない可能性があるため、一点鎖線の輪郭で示されている。暗号アーキテクチャ110はまた、暗号置換ユニット140を含む。暗号置換ユニット140は、暗号置換を実行するための回路を含む。図1に示されるように、使用中、処理ユニット130は、暗号置換を指示し、プロセッサインタフェース120を使用して暗号置換の結果にアクセスする。
一実施例では、プロセッサインタフェース120は、暗号レジスタのセットを含む。暗号レジスタは、処理ユニット130にアクセス可能であり得て、例えば、特定の暗号レジスタは、処理ユニット130によって読み取り可能及び/または書き込み可能であり得る。使用中、処理ユニット130は、暗号レジスタのセットを介して、すなわち暗号レジスタのセット内に格納されたデータを使用して、暗号置換ユニット140によって実行されるように暗号置換の結果にアクセスすることができる。暗号レジスタのセットは、暗号置換ユニット140と処理ユニット130との間でデータ及び制御情報を交換するために使用され得る。暗号レジスタは、1つまたは複数のメモリマッピングされたレジスタとしてアクセスすることができ、処理ユニット130の名前付き単一命令、複数データ(SIMD)またはベクトルレジスタセットの一部としてアクセスすることができる。
特定の実施例では、処理ユニット130は、1つまたは複数の処理コアを有するマイクロプロセッサを含み、例えば、処理ユニット130は、組み込みデバイス用の処理ユニットであってもよい。他の実施例では、処理ユニットは、1つまたは複数の処理コアを有するコンピューティングデバイスの中央処理ユニットを含むことができ、例えば、処理ユニット130は、モバイルコンピューティングデバイス、デスクトップコンピュータ及び/またはサーバコンピューティングデバイスのための処理ユニットであり得る。
暗号アーキテクチャ110は、いくつかの異なる方法で実装することができる(そしてアプローチの組み合わせが可能である)。1つの場合では、暗号アーキテクチャ110は、1つまたは複数の特定用途向け集積回路(ASIC)を使用して実装され得る。別の場合では、暗号アーキテクチャ110は、1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)を使用して実装され得る。さらに別の場合では、暗号アーキテクチャ110は、処理ユニット130のファームウェアを使用して実装され得る。特定の場合では、暗号アーキテクチャ110の異なるコンポーネントは、ASIC、FPGA、及びファームウェア命令のうちの2つ以上の組み合わせを使用して実装され得る。1つの場合では、暗号アーキテクチャ110の機能は、マイクロコード及びファームウェアアップデートの1つまたは複数を介して提供され得る。この場合、セキュリティを確保するためにコードの認証が必要になる場合がある。暗号置換ユニット140は、同様の方法で実装することができる。
一実施例では、暗号アーキテクチャ110及び暗号置換ユニット140の1つまたは複数は、個別のユニットとして提供され得る(例えば、パッケージ化され得る)。例えば、個別のユニットは、自己完結型のセキュリティマイクロコントローラ(例えば、スマートカード、ユニバーサルシリアルバス(USB)デバイス及び/または無線周波数識別(RFID)デバイスとして提供される)、暗号化コプロセッサもしくはアクセラレータ、暗号トラステッドプラットフォームモジュール(TPM)またはハードウェアセキュリティモジュール(HSM)であり得る。個別のユニットは、1つまたは複数の通信バスもしくはインタフェースを介して処理ユニット130に結合されてもよく、及び/または同じ回路基板上にあってもよい。したがって、暗号アーキテクチャ110は、多種多様なコンピューティングデバイス用のコンピューティングボードに容易に追加される単一のチップとして提供され得る。
図2は、暗号レジスタがデータレジスタの第1のセット210及び制御レジスタの第2のセット220を含むプロセッサインタフェース120を示している。暗号置換ユニット140はレジスタ210、220の両方のセット読み取ることができ、及び/またはそれにデータを書き込むことができる。同様に、処理ユニット130もまた、暗号レジスタに通信可能に結合されており、第1及び第2のセット210、220の中のレジスタを読み取ることができ、及び/またはそれにデータを書き込むことができる。したがって、第1及び第2のセットのレジスタ210、220は、処理ユニット130と暗号置換ユニット140との間のインタフェースを提供する。
1つの場合では、プロセッサインタフェース120の暗号レジスタは、処理ユニット130のアドレス空間にメモリマッピングされたものであり得る。これは、直接、例えば、処理ユニット130のバスを介して、及び/またはメモリ管理ユニット(MMU)を介して達成することができる。必要に応じて、様々な暗号レジスタに様々な方法でアクセスできる。所与の暗号レジスタがメモリマッピングされている場合、処理ユニット130によるメモリ内の特定のアドレスへの読み取りまたは書き込みは、所与の暗号レジスタ(または前記レジスタの一部)への読み取りまたは書き込みにマッピングされ得る。RISC-Vなどの縮小命令セットコンピューティング(RISC)命令セットアーキテクチャ(ISA)では、プロセッサインタフェース120の暗号レジスタを1つまたは複数の制御及びステータスレジスタ(CSR)、及び/または1つまたは複数のベクトル拡張として実装でき、例えば後者の場合、暗号レジスタは1つまたは複数のベクトルレジスタと見なすことができる。
特定の実施例では、プロセッサインタフェース120は、プロセッサ割り込み、ダイレクトメモリアクセス(DMA)、及びISA拡張などの1つまたは複数の補助プロセッサインタフェースメカニズムを使用して実装され得る。例えば、プロセッサインタフェース120は、暗号置換ユニット140が処理ユニット130上で割り込みを呼び出すこと、及び/または処理ユニット130に関連付けられたバス(例えば、処理ユニット130のバスまたは処理ユニット130が結合されているバス)に対してDMA動作を実行することを可能にし得る。代替的に、または追加的に、プロセッサインタフェース120を介して実行される制御インタラクションは、命令セットアーキテクチャ拡張として実装され得る。
特定の実施例では、特定の暗号置換演算を実行するコマンドは、単一のマシンコード命令としてエンコードすることができ、例えば、処理ユニット130によって実行される単一の命令は、暗号置換を実行するように機能する。例えば、単一のマシンコード命令は、プロセッサインタフェース120を介して、暗号置換ユニット140をアクティブ化することができ、これは、置換を実行し、プロセッサインタフェース120を介して結果を処理ユニット130に返す。1つの場合では、暗号置換ユニット140は、制御レジスタの第2のセット220内に制御フラグを設定することができ、これは、暗号置換がいつ完了するかを判定するために処理ユニット130によってチェックされ得、その時点で、暗号置換の結果はデータレジスタの第1のセット210から処理ユニット130によって読み取ることができる。1つの場合において、暗号置換ユニット140は、プロセッサインタフェース120を介して、暗号置換が完了したことを示すために処理ユニット130によって受信される割り込みをトリガーすることができる。割り込みを受信すると、処理ユニット130は、データレジスタの第1のセット210からの暗号置換の結果に再びアクセスすることができる。ISA拡張を使用してプロセッサインタフェース120の制御インタラクションを実装することは、暗号置換が処理ユニット130のための単一のマシンコード命令として符号化されることを可能にする1つの方法を提供し得る。
特定の実施例では、暗号置換ユニット140は、暗号レジスタの少なくとも1つ、例えば、データレジスタの第1のセット210の1つに格納されたデータに対して暗号置換を実行する。1つの場合では、暗号置換ユニット140は、制御レジスタの第2のセット220内に格納された制御データに従って暗号置換を実行する。暗号置換には、暗号状態に実行される1つまたは複数の演算が含まれる場合がある。この暗号状態は、ビットの集合、例えば256、512、または1600のバイナリ値のシーケンスを含むことができる。暗号置換は、暗号状態を更新するために使用できる。次に、暗号状態の更新により、ハッシュ、暗号化及び復号機能、数字ジェネレータなどの様々な暗号関数のフレームワークを提供することができる。サイズb(例えば、300、512、または1600)のビットのセットに対して暗号置換が実行される場合、プロセッサインタフェース120は、bビット長である複数の暗号レジスタを含み得る。特定の場合では、データは長さwのワードで暗号レジスタにロードされたり、暗号レジスタからロードされたりすることができ(例えば、ここでw<b)、ここでwは、処理ユニット130のワードサイズに対応し得る。
1つの場合では、暗号置換ユニット140は、データのブロックに「ランダム類似関数」を提供する暗号置換を実装する。暗号置換は、複数の「ラウンド」に対して実行することができ、各ラウンドまたはラウンドのセットはまた暗号置換を構成する。暗号置換は、キーレス置換とすることができ、例えば、暗号キーを含まない場合がある。例えば、暗号置換は、明示的な秘密暗号キーによって制御されないという点でブロック暗号とは異なり得る(ただし、置換状態の一部は秘密の「容量」として指定され得る)。また、ブロック暗号とは異なり、置換の逆を計算する必要はめったにない。各ラウンドは他のラウンドと同様であり得る。特定の場合では、ラウンド定数及び/またはドメインセパレータパラメータを使用してラウンドを区別することができる。ラウンド定数は、複数のラウンドにわたって値が変化する複数のビットであり得る。変化するラウンド定数を使用すると、ラウンドを暗号的に「分離」するのに役立ち得る。ドメイン分離パラメータは、複数のビットを含むこともでき、ラウンド定数と同様の方法で使用して、異なる使用ドメイン(例えば、暗号化と復号、またはハッシュと乱数の生成)を分離することができる。ラウンド定数は、分離パラメータと一緒に、または分離パラメータとは別に使用できる。例示的な暗号置換のさらなる詳細は、参照により本明細書に組み込まれる英国特許出願第1903674.8号に記載されている。
暗号置換ユニット140は、多くの異なる暗号置換を実行するように構成され得る。例えば、FPGAのセットを特定のユースケースに対してプログラムすることができ、及び/または暗号置換は、更新可能なファームウェア内で定義できる。一例として、暗号置換ユニット140は、例えば、参照により本明細書に組み込まれる連邦情報処理標準(FIPS)202(またはセキュアハッシュアルゴリズム3-「SHA-3」-標準)-「SHA-3標準:置換ベースのハッシュ及び拡張可能出力関数」、FIPS PUB202、米国国立標準技術研究所(NIST)、2015年8月、に記載されている、KECCAK-p置換を実行するように構成することができる。FIPS202標準のセクション3で説明されているように、暗号置換の各ラウンドは、5つの個別の(置換)ステップの構成、theta:θ(A)、rho:ρ(A)、pi:π(A)、chi:χ(A)、及びiotaι(A,i)を含み得る。最後のステップは、ラウンド定数パラメータiを取る。したがって、この標準の複合ラウンド関数は次のように定義できる。
Rnd(a,i)=ι(χ(π(ρ(θ(A)))),i
この実施例では、暗号置換ユニット140は、この複合ラウンド関数-Rndを、例えば、1ラウンドまたは複数ラウンドのいずれかに対して実行するように構成され得る。置換入力Aのサイズが1600ビットの場合、これらのラウンド関数の24個の合成(特定のラウンド定数iを使用)は、KECCAK-p[1600,24]となる。これにより、FIPS202標準で説明されているSHA-3/SHAKEハッシュ関数の基本的なビルディングブロックが提供される。それはまた、他の多くの派生プリミティブの基本的なビルディングブロックも提供する。KECCAK-p以外の暗号置換の例としては、2019年3月の、NIST LWC標準化の取り組みに対する「Ascon v1.2」提案で、Christoph Dobraunig、Maria Eichlseder、Florian Mendel、Martin Schlafferによって記述された、ASCONの320ビット置換、及び、2019年3月の、NIST LWC標準化の取り組みへの提案で、Markku-Juhani O. Saarinenによって記述された、「SNEIKEN and SNEIKHA:SNEIK Family of Lightweight Cryptographic Algorithms」、512ビットのSNEIK置換があり、両方とも参照により本明細書に組み込まれる。
図3は、プロセッサインタフェース120の一部を形成し得る暗号レジスタのセット300の一実施例を示している。この実施例では、暗号レジスタのセット300は、図2に示されるデータレジスタの第1のセット210の一部を形成するが、他の場合では、単一の共通のデータ及び制御レジスタのセットの一部を形成してもよい。図3では、暗号レジスタのセット300は、置換状態(S)を格納するための置換状態レジスタ310、置換入力データを格納するための置換入力レジスタ320(X)、及び、出力データ(O)を格納するための置換出力レジスタ330を含む。これらのレジスタはすべてbビットの長さであり得る(またはbビットを格納可能であり得る)。この実施例では、置換入力レジスタ320は、処理ユニット130によって書き込み可能であり、置換出力レジスタ330は、処理ユニット130によって読み取り可能である。したがって、処理ユニット130は、暗号置換のデータを置換入力レジスタ320にロードするように指示することができ、また、置換出力レジスタ330からの暗号置換の結果得られるデータのロードを指示することができる。
図3では、暗号置換ユニット140は、置換状態レジスタ310からデータを読み取り、データを書き込むことができる。例えば、暗号置換ユニット140は、暗号置換の前に置換状態レジスタ310から現在の置換状態値(例えば、bビット)を読み取り、次に、更新された置換状態値(例えば、状態の暗号置換に続く)を置換状態レジスタ310に書き戻すことができる。他の場合では、入力状態と出力状態の値が異なるレジスタから読み取られ、異なるレジスタに書き込まれ得る。置換状態レジスタ310は、処理ユニット130からは見えない(例えば、読み取り可能または書き込み可能でない)場合がある。置換状態レジスタ310が見えない場合、これは、セキュリティを向上させ(状態を処理ユニット130によって直接操作することができないため)、暗号置換の適用を単純化する方法で機能をカプセル化することができる(例えば、処理ユニット130の製造業者は、状態について置換がどのように実行されるかを知る必要はない)。
図3では、暗号置換ユニット140は、置換入力レジスタ320からデータを読み取ることができる。置換入力レジスタ320から読み取られたデータは、置換状態レジスタ310から読み取られた置換状態と組み合わせることができる。1つの場合では、置換入力レジスタ320からのデータは、XOR演算を使用して、置換状態レジスタ310から読み取られた置換状態と組み合わせることができる。暗号置換ユニット140は、組み合わせの結果に対して暗号置換を実行することができる。図3では、暗号置換ユニット140は、置換出力レジスタ330にデータを書き込むことができる。このデータは、例えば上記のように実行される暗号置換の出力を含み得る。
図4は、暗号レジスタのセット400の別の実施例を示している。図4の実施例は、図3の実施例を拡張したものであり、例えば、より多くの機能が必要な場合に提供できる。暗号レジスタのセット400は、置換状態レジスタ310、置換入力レジスタ320、及び置換出力レジスタ330(それぞれ、S、X、及びO)を含む。これらは、図3の実施例と同様に動作することができる。
図4では、暗号レジスタのセット400はまた、入力マスク(M)を格納するためのマスク入力レジスタ410と、置換状態レジスタ310内のデータと置換入力レジスタ320内のデータを組み合わせた結果(Y)を格納するための組み合わせ出力レジスタ420とを含む。1つの場合では、組み合わせ出力レジスタ420は、例えば、組み合わせがXOR演算である場合、XOR出力レジスタを備える。図4では、マスク入力レジスタ410は、処理ユニット130によって書き込み可能であり、組み合わせ出力レジスタ420は、処理ユニット130によって読み取り可能である。暗号置換ユニット140は、マスク入力レジスタ410からデータを読み取り、このデータを使用して、例えば、暗号置換の一部として、またはその前に、マスキング演算を実行することができる。暗号置換ユニット140はまた、組み合わせの出力を組み合わせ出力レジスタ420に書き込むことができ、処理ユニット130は、次いで、組み合わせ出力レジスタ420から組み合わせの出力を読み取ることができ、例えば、処理ユニット130は、組み合わせの出力ならびに置換出力レジスタ330をより高いレベルの暗号演算において使用することができる。
一実施例では、例えば、図3または図4の1つまたは複数に示されるようなコンポーネントを備えた暗号アーキテクチャ110は、入力XOR演算を適用するための回路をさらに含む。例えば、この回路は、置換入力レジスタ320からの置換入力データから得られたデータと、置換状態レジスタ310からの置換状態から得られたデータを受け取り、このデータに入力XOR演算を適用することができる。
1つの場合では、回路は、入力XOR演算を置換入力データ及び置換状態に適用することができ、置換状態と入力XOR演算の結果を組み合わせ出力レジスタ420に書き込むことができる。別の場合では、回路は、入力XOR演算を置換入力データ及び置換状態の修正されたバージョンに適用することができ、この場合、入力XOR演算を適用するための回路は、暗号置換ユニット140に通信可能に結合されるか、またはその一部を形成することができる。この後者の場合、回路は、入力XOR演算の結果を暗号置換ユニット140に提供することができ、その結果、暗号置換がこの結果に対して実行され得る。特定の実施例では、2セットの回路を使用して各ユースケースを提供することができる。
一実施例では、例えば、図3または図4の1つまたは複数に示されるようなコンポーネントを有する暗号アーキテクチャ110は、例えば置換状態レジスタ310から読み取られる置換状態にマスキング演算を適用するための置換マスキング回路をさらに備える。これは、XOR演算を適用するための上記の回路の1つの実装であり得る。置換マスキング回路は、マスク入力レジスタ410及び置換状態レジスタ310に通信可能に結合され得る。マスキング演算は、マスク入力レジスタ410からのマスクを置換状態に適用することができる。1つの場合では、マスクはAND演算を使用して適用できる。
図5は、上記の回路の例示的な実装500を示している。図5の実施例では、回路は、暗号置換ユニット140の一部として実装されており、他の実施例では、回路は、暗号置換ユニット140の外側、例えば、データレジスタ210と暗号置換ユニット140との間に実装されてもよい。同様の機能と接続性がどちらの場合にも適用される。図5は、暗号置換ユニット140への入力として通信可能に結合された、置換状態レジスタ310-A、置換入力レジスタ320、及びマスク入力レジスタ410を示している。この実施例では、暗号置換ユニット140はまた、データを置換状態レジスタ310-B、置換出力レジスタ330、及び組み合わせ出力レジスタ420に出力する。置換状態レジスタは、コンポーネント310-Bとして破線で示されており、それはこれが310-Aと同じコンポーネントであってもよいからであるが、これらを別々に示すことにより、暗号置換ユニット140の動作を理解するのがより容易となる。例えば、1つの場合では、暗号置換ユニット140は、置換状態レジスタに書き込まれ得る更新された置換状態を出力することができ、入力としてアクセスされる以前の置換状態を効果的に上書きする。他の場合では、異なるレジスタまたは共通レジスタの異なる部分を代わりに使用して、入力及び出力の置換状態を格納することができる。
暗号置換ユニット140は、第1のXOR回路510、AND回路520、第2のXOR回路530、及び置換回路540を含む。第1のXOR回路510は、上記のように入力XOR演算を適用するための回路の1つのケースを実装することができ、AND回路520は、上記のように置換マスキング回路を実装することができ、そして、第2のXOR回路530は、上記のように、入力適用回路(または入力XOR演算を適用するための他の場合の回路)を実装することができる。図5で、黒い円は通信結合を示しており、黒い円のない接続の交差は、通信可能に結合されていない。図5では、第1のXOR回路510は、置換状態レジスタ310-A及び置換入力レジスタ320に通信可能に結合されている。第1のXOR回路510は、論理XOR演算を適用し、組み合わせ出力レジスタ420に出力を提供する。AND回路520は、マスク入力レジスタ410から読み取られたデータ(すなわち、マスク)及び置換状態レジスタ310-Aから読み取られたデータ(すなわち、置換状態)に論理AND演算を適用する。AND回路520は、第2のXOR回路530に通信可能に結合されている。第2のXOR回路530は、置換入力レジスタ320から読み取られたデータ(例えば、XOR入力)及びAND回路520の出力(例えば、修正またはマスクされた置換状態)に論理XOR演算を適用する。第2のXOR回路530は、置換回路540に通信可能に結合されている。置換回路540は、暗号置換を第2のXOR回路530の出力に適用し、暗号置換の結果を置換状態レジスタ310-B及び置換出力レジスタ330に供給するように構成される。処理ユニット130は、置換出力レジスタ330から暗号置換の結果を読み取ることができる。置換状態レジスタ310-Aに元々格納されていた置換状態は、結果によって上書きされ得る(例えば、置換状態レジスタ310-Bは、異なる時点で異なる値S’を格納する同じレジスタであり得る)。1つの場合では、暗号置換の結果は、置換状態レジスタ310-A及び置換出力レジスタ330のそれぞれにコピーされ得る。
図5の例示的な実装500は、ベクトル表記法を使用して記述され得るいくつかの演算を実行する。例えば、暗号置換の開始時の置換状態レジスタ310内のデータは、ベクトルS-開始状態と呼ぶことができる。暗号置換に続く置換状態レジスタ310内のデータは、ベクトルS’-更新された状態と呼ぶことができる。この状態は、上記のようにbビットを有することができる。置換入力レジスタ320内のデータは、ベクトルXと呼ぶことができ、マスク入力レジスタ410内のデータは、ベクトルMと呼ぶことができる。論理AND及びXOR演算は、bビットのベクトル(例えば、置換状態の全幅に等しい幅を有する)に演算を行うことができる。これにより、暗号置換を実行するために状態をサブベクトルに分解する必要がないため、迅速な計算が可能になり得る。各レジスタのサイズ(例えば、使用可能なメモリ)がbより大きい場合(例えば、暗号演算の大規模なファミリをカバーする値として選択された場合)、bビットのサブセット(例えば、最初または最後のbビット)は、任意の1つの特定の演算でアクセスできる。bビットの各ベクトルは、それぞれが0または1の値を有するビットのシーケンスであり得る。
上記の表記法を与えられると、図5の暗号置換ユニット140の演算は、以下のように要約することができる。
Y=S XOR X
O=S’=Perm((S AND M) XOR X)
したがって、更新演算では、S=S’である。言い換えると、置換状態Sは最初に入力XとXORされ、出力はYに書き込まれる。この実施例では、置換状態SもMでマスクされ、結果も入力XとXORされ、暗号置換Perm()が適用される。結果として得られる新しい置換状態S’は、置換出力Oに書き込まれる。次の演算のために、置換状態Sは、S=S’として設定される。
特定の実施例では、置換状態は、内部で複数の部分に分割され得る。これらの部分は、事前定義された数のビットを含み得る。1つの場合では、置換状態は、「容量」として知られているcビットの「秘密」セットと、「レート」として知られているrビットの「公開」セットに分割され、ここで、b=r+cである。暗号演算中、処理ユニット130は、「レート」ビットにのみアクセス(例えば、インタラクト)することができる。例えば、「レート」ビットのみを読み取及び/または書き込みすることができ、容量ビットはそのまま変更されない。b、r、及びcの値は、暗号化及び復号演算中のマスク選択に影響を与える可能性があり、実装仕様に従って構成することができる。「容量」ビットはスキームセキュリティに関連付けることができ、「レート」ビットは処理速度に関連付けることができる。例えば、cを大きくするとスキームのセキュリティが向上させることができ、rを小さくすると処理速度を向上させることができる。
処理ユニット130は、いくつかの異なる方法で暗号アーキテクチャ110を使用することができる。1つの場合では、処理ユニット130は、暗号アーキテクチャ110を使用して、以下の暗号演算のうちの1つまたは複数を実行することができ、その演算とは、入力データを置換状態と混合するための「吸収(absorb)」暗号演算、置換状態を使用して出力を取得するための「搾取(squeeze)」暗号演算、置換状態を使用して入力データを暗号化する「暗号化(encrypt)」暗号演算、及び、置換状態を使用して入力データを復号する「復号(decrypt)」暗号演算である。「吸収」及び「搾取」演算は、例えば、暗号ハッシュのために使用され得る。「暗号化」及び「復号」演算は、例えば、認証された暗号化及び復号モードの構築のために使用され得る。これらの暗号演算の実施例、及びそれらが暗号アーキテクチャ110をどのように使用することができるかを以下に示す。
「吸収」演算では、入力データは置換状態と混合される。入力データは、置換入力レジスタ320からのデータを含み得る。吸収演算は、置換状態を初期化するため、または置換を直接演算するために使用できる。吸収演算は、図5を参照して上述した暗号置換ユニット140の演算に続くことができる。
S’=Perm((S AND M) XOR X)
S=S’
この例示の演算では、置換状態Sは、最初にマスク入力M(例えば、マスク入力レジスタ410の内容)でマスクされる。次に、結果と置換入力X(例えば、置換入力レジスタ320の内容)との間でXOR演算が実行される。これは、暗号置換への入力を形成する。出力は、置換状態レジスタ310に書き戻される。1つの場合では、Perm()関数は、アトミック演算として実行されるKECCAK-p Rnd演算を含み得る。この場合、KECCAK-p Rnd演算の複数の反復は、暗号置換の一部として実行することができ、ここで、置換は、暗号置換ユニット140によって個別の単一演算として実行される。
1つの演算ケースでは、マスク入力Mをゼロ、すなわちM=0(「b」個のゼロのビットのベクトル)に設定することができ、これにより、次の演算が実行される。
S’=Perm(X)
これは、他の関数の中でもとりわけ、システムの初期化や秘密鍵の設定に使用できる。別の演算ケースでは、マスク入力Mを1、すなわちM=1(「b」個の1のビットのベクトル)に設定することができ、これにより、「スポンジ」吸収演算が行われる。
S’=Perm(S XOR X)
マスク入力Mのビットを構成することにより、異なる上書きの組み合わせを規定することができる。これは、安全なハッシュを作成するためにも使用できる。
「搾取」演算では、出力は置換状態から抽出することができる。例えば、入力置換状態がSで、出力置換状態がS’の場合、次のようになる。
O=S’=Perm(S)
S=S’
「搾取」演算では、置換状態Sは直接暗号置換の対象となり、結果は置換状態レジスタ310に書き戻され、このレジスタは新しい値S’を有する。出力はまた、Oに書き込むことができ、そこで、それは、処理ユニット130によって読み取られ得る。ハッシュ演算では、r個の「レート」ビットを含む出力Oの一部が、処理ユニット130によってハッシュ演算出力として使用され得る。また、どのように「搾取」演算がM=1かつX=0によって「吸収」と同等であるかを知ることができる。
「暗号化」演算は「吸収」と見なすことができ、Xは、処理ユニット130によって置換入力レジスタ320に書き込まれる暗号化するデータ(すなわち、平文データ)を表し、出力状態Oは、演算後に置換出力レジスタ330にコピーされ、ここで、「暗号文」は、処理ユニット130によって置換出力レジスタ330から読み取られる。
O=S’=Perm((S AND M) XOR X)
S=S’
この演算では、MはM=1に設定することができ、Xは平文の役割を有し、Oは暗号文を表す。この場合も、XとOの一部のみ、例えばr個の「レート」ビットを読み取ることができ、及び/または処理ユニット130によって使用することができる。c個の「容量」は、処理ユニット130によって無視され得る。
「復号」演算は、「暗号化」演算の逆と見ることができる。この場合、X(例えば、置換入力レジスタ320の内容)は暗号文と見ることができ、Yは、復号された平文(例えば、組み合わせ出力レジスタ420から読み取られる)を形成する。この場合以下のとおりである:
Y=S XOR X
O=S’=Perm((S AND M) XOR X)
S=S’
例えば、r個の「レート」ビットを置換状態Sの左側部分とし、c個の「容量」ビットを置換状態Sの右側部分とする場合、MはM=1と設定することができる。この場合、暗号文Xは、Xの左rビットがゼロであると見なされるので、置換状態Sを使用して上書きされる。対応する平文は、Yの右rビットをとることによって処理ユニット130によって読み取ることができる。
本明細書で説明される実施例では、暗号レジスタは、wビットのワードに配置することができ、ここで、wのサイズは、処理ユニット130のアーキテクチャによって決定される。例えば、32ビットデータパスを備えるシステムの場合、wは32とすることができ、または64ビットデータパスを備えるシステムの場合、w=64である。暗号置換の入力と出力がbビットである場合、(例えばKECCAK-p及びSHA-3に対して、b=1600)、処理ユニット130は、n=b/wワードのセットとしてレジスタにアクセスすることができる。例えば、置換出力レジスタ330に例えばコピーされた置換状態S’は、32ビットシステム上で50ワードとしてアクセスされ得る。しかしながら、暗号アーキテクチャ110は、完全なレジスタの内容が暗号置換ユニット140によって単一のサイクルでアクセスされ得るように構成される。この構成により、データ処理を大幅に高速化することができる。例えば、図3及び4に示されるものを含むデータレジスタ210は、それぞれ、bビットのサイズであり得る(つまりbビットを格納することができる)。
図6は、暗号レジスタのセット600の別の実施例を示している。この実施例では、制御レジスタのセット220が示されている。これらは、図3または4の1つに示されるデータレジスタ210と同様に提供され得る。図6は、7つの制御レジスタ220を有する実施例を示し、様々な実施例と実装では、要件に応じて、様々な数の制御レジスタ、または部分に分割された単一のレジスタを使用することができる。図6では、制御レジスタ220は、識別子(ID)レジスタ610、開始(GO)レジスタ620、準備完了(RDY)レジスタ630、ラウンドレジスタ640、650、660のセット、及び割り込み(IRQ)制御レジスタ670を含む。
識別子レジスタ610は、処理ユニット130によって書き込み可能であり、実行される暗号演算の識別子を格納する。例えば、識別子レジスタ610は、上記のように、1つまたは複数のドメインセパレータパラメータを格納することができる。識別子の値は、例えば、識別子レジスタ610に書き込まれた異なる値が、例えば、置換出力レジスタ330から読み取られる、異なる出力を生成することを保証することによって、特定の暗号演算に従って暗号置換を構成するために使用され得る。
開始レジスタ620は、処理ユニット130によって書き込み可能であり、暗号演算のための開始(または再開)フラグを格納する。例えば、開始レジスタ620は、値0及び1を有するバイナリフラグを格納することができ、値1は、暗号置換ユニット140が(例えば、上記のように暗号置換を実行することによって)暗号演算を開始することを示す。開始レジスタ620は、デフォルトで0とすることができ、暗号アーキテクチャ110(及び/または暗号置換ユニット140)に処理ユニット130に代わって暗号演算を実行することを指示するために、処理ユニット130によって書き込まれ得る(例えば、1に設定され得る)。
準備完了レジスタ630は、処理ユニット130によって読み取り可能であり、暗号アーキテクチャ110(及び/または暗号置換ユニット140)が別の暗号演算を開始する準備ができており、及び/または暗号置換の結果は処理ユニット130によって読み取られる準備ができていることを示す、準備完了フラグを格納する。これは、開始フラグと同様に、0は暗号アーキテクチャ110が、準備ができていない(例えば、使用中またはビジーである)ことを示し、1は暗号アーキテクチャ110が暗号演算を開始する準備ができていることを示す、バイナリフラグであり得る。準備完了レジスタ630は、複数の処理ユニット(例えば、マルチコアプロセッサまたはマイクロプロセッサ)を備えたコンピューティングデバイスにおいて有用であり得、複数の処理ユニットのそれぞれは、例えば、それらがそれぞれプロセッサインタフェース120に通信可能に結合されている場合、暗号アーキテクチャ110にアクセスし得る。これは、プロセッサインタフェース120が、複数の処理ユニットも結合するシステムバスに結合されている場合であり得る。準備完了レジスタ630を使用して、暗号演算の結果がデータレジスタ210から読み取る準備ができていることを示す場合、値1は、暗号置換の結果が置換出力レジスタ330から利用可能であることを処理ユニット130に示すことができ、値0は、演算がまだ進行中であることを示すことができる。
ラウンドレジスタ640、650、660のセットは、処理ユニット130によって書き込み可能であり、暗号置換のラウンドに関連する1つまたは複数のフラグを格納する。図6には、3つのラウンドレジスタがあり、開始(BEG)ラウンドレジスタ640、終了(END)ラウンドレジスタ650、及びラウンドデータ(RND)レジスタ660である。開始ラウンドレジスタ640及び終了ラウンドレジスタ650は、処理ユニット130によって書き込み可能であり、それぞれ、開始ラウンド(処理される最初のラウンド)及び終了ラウンド(処理される最後のラウンド)を格納する。開始ラウンドと終了ラウンドは整数値で示すことができる。ラウンドデータレジスタ660は、処理ユニット130によって書き込み可能、またはアクセス可能であってもよく、そうでなくてもよい。ラウンドデータレジスタ660が現在のラウンドを追跡するために(例えば整数値として)ラウンドカウントを格納する場合、ラウンドデータレジスタ660は、処理ユニット130によってアクセスできない可能性がある。別の場合では、ラウンドデータレジスタ660は、実行するラウンドの数を示すラウンド定数を格納することができる。要件に応じて、様々な実装が可能である。
割り込み制御レジスタ670は、処理ユニット130によって書き込み可能であり、割り込みが有効であるか無効であるかを示すフラグを格納する。例えば、割り込み制御レジスタ670は、0は割り込みが無効であることを示し、1は割り込みが有効であることを示す、バイナリフラグを格納することができる。この実施例では、割り込みとは、処理ユニット130によって実行されている一連の命令を中断する、処理ユニット130に対する割り込みを指す。割り込みが有効になっている場合、割り込みは、暗号演算(暗号置換を含む)が完了したこと、及び/または暗号アーキテクチャ110が(例えば、それが別の処理ユニットによって使用されている場合)入力を処理する準備ができていること、を示すために使用できる。処理ユニット130は、現在のデバイス構成に基づいて、及び/または特定の暗号演算のために、割り込みが使用されるかどうかを設定することができる。割り込みが使用されない場合(例えば、フラグが0に設定される場合)、処理ユニット130は、代わりに、準備完了レジスタ630をポーリングして、イベントが発生したかどうかを判定することができる。
したがって、図6の暗号レジスタの例示的なセット600は、処理ユニット(または複数の処理ユニット)が暗号アーキテクチャ110及び暗号置換ユニット140の演算を制御することを可能にする。制御及びデータのための統一された共通のプロセッサインタフェース120を有することは、暗号アーキテクチャ110の統合を単純化するのに役立ち得る。それはまた、より大きなコンピューティングデバイスへの単一の結合を可能にし、例えば、暗号アーキテクチャ110は、より大きなコンピューティングデバイスのためのマザーボードまたは制御ボードに容易に追加され得る。暗号レジスタのセット600は、図6では別個のレジスタとして示されているが、これらのレジスタの内容の一部またはすべては、代替的に、1つまたは複数の制御レジスタのフィールドとしてグループ化され得る(例えば、上記のバイナリフラグは、8ビットレジスタのうちの様々なビットを含む)。
図7、8A及び8Bは、図1から6に示されるような暗号アーキテクチャを制御する特定の方法を示す。暗号アーキテクチャは、暗号演算を実行するように制御することができ、例えば、少なくとも1つの処理ユニットは、プロセッサインタフェースを介して暗号アーキテクチャを制御する。特定の場合では、入力の準備を容易にする方法で暗号アーキテクチャを使用して、置換の計算と同時に出力のアンロードを実行できるようにすることができる。
図7は、一実施例による、暗号演算を実行する方法700を示している。方法700は、図1の暗号アーキテクチャ110などの暗号アーキテクチャによって実行され得る。1つの場合では、方法700は、図1から6に示される暗号置換ユニット140などの暗号アーキテクチャ内の暗号置換ユニットによって実行され得る。
この方法は、ブロック710から始まり、これは、暗号演算を実行するための命令を処理ユニットから受信することを含む。これは、図1のプロセッサインタフェース120を介して処理ユニット130から信号を受信することを含み得る。1つの場合では、暗号置換ユニット140は、図6の開始レジスタ620を監視することができ、ブロック710は、開始レジスタ620から値をロードすることと、それが正の開始信号(例えば、値1)を示すかどうかを判定することと、を含み得る。
ブロック720で、置換状態は、暗号レジスタのセットの1つからロードされる。これは、暗号置換ユニット140が、図3から5に示される置換状態レジスタ310からデータをロードすることを含み得る。置換状態は、処理ユニットによってアクセス可能でなくてもよい。
ブロック730で、置換状態から得られたデータに対して暗号置換が実行される。データは、置換状態自体を含んでもよく、または、図5に示すように、暗号置換を実行する前に、いくつかの論理演算を置換状態に適用してもよい。ブロック730は、プロセッサインタフェース120の暗号レジスタに格納されたデータを使用して、図1から6の暗号置換ユニット140によって実行され得る。ブロック730は、図5に示されるように、プロセッサインタフェース120内の複数のデータレジスタ210からデータを読み取ることを含み得る。
ブロック740において、方法700は、暗号置換の出力を暗号レジスタのセットの1つに格納することを含む。例えば、これは、暗号置換の出力を置換出力レジスタ330にコピーすることを含み得る。それはまた、置換状態レジスタ310に同じ出力を格納することを含み得る。データレジスタ210に対する読み取り/書き込み動作は、暗号置換ユニット140によって実行され得る。
ブロック750において、方法700は、置換が完了したことを処理ユニットに示すことを含む。次に、処理ユニットは、例えば図1のプロセッサインタフェース120を介して、暗号レジスタのセットからの暗号置換の出力にアクセスすることができる。1つの場合では、ブロック750は、暗号置換ユニット140が、(例えば、割り込みモードが有効になっている場合)処理ユニットに割り込みを送信することを含み得る。代替的に、または追加的に、ブロック750は、フラグ値(例えば、値1)を準備完了レジスタ630に書き込むことを含み得る。処理ユニットは、暗号レジスタのセットから、例えば、置換出力レジスタ420から、暗号置換の出力を読み取ることができる。
1つの場合では、この方法は、制御レジスタのセットの1つを介して、暗号置換ユニットが処理を開始する準備ができていることを示すことを含み得る。例えば、これは、図6に示されるように、準備完了レジスタ630によって示され得る。実施例において、処理ユニット及び暗号置換ユニット140の演算は、割り込み及び、制御レジスタのセットの1つの状態のうちの1つまたは複数に基づいて同期することができ、例えばプロセスフローの開始は、これらの1つまたは複数に基づいて同期され得る。
1つの場合では、この方法は、暗号置換ユニットによって、ラウンドデータレジスタ660などのラウンド制御レジスタからのラウンドカウントをロードすることを含み得る。ラウンドカウントは、暗号置換で、例えばラウンド定数入力として使用できる。暗号置換に続いて、ラウンド制御レジスタのラウンドカウントをインクリメントすることができる。ロード、使用、及びインクリメント演算は、ラウンド制御レジスタと、図6の終了ラウンドレジスタ650などの終了制御レジスタとの比較に基づいて繰り返すことができる。
1つの場合では、方法は、置換入力レジスタ320などの置換入力レジスタから置換入力データをロードすることを含み得る。次に、マスク入力データは、マスク入力レジスタ410などのマスク入力レジスタからロードすることができる。この場合、ブロック730で暗号置換を実行することは、暗号置換ユニットによって、置換入力データと、マスク入力データ及び置換状態に実行されるAND演算の結果との関数として、XOR演算を実行することにより、置換レジスタ内の置換状態を更新することを含み得る。この場合、ブロック640は、更新された置換状態を置換状態レジスタ、例えば、図3及び4の置換状態レジスタ310にロードすることを含み得る。例えば、これは、図5に示されるような構成によって実行される演算を含み得る。
図8A及び8Bは、図1の暗号アーキテクチャ110(例えば、暗号置換ユニット140によって実装される)などの暗号モジュールの2つの例示的な演算モード800を示している。図8A及び8Bの左側805は、図1~6の暗号置換ユニット140などの暗号モジュールによって実行される演算を示している。図8A及び8Bの右側810は、図1の処理ユニット130などの処理ユニット上で制御プログラムを実行するときに実行され得る対応する演算を示している。図8A及び8Bの両側は、暗号モジュール及び処理ユニットの演算がどのように同期され得るかを示す。
左側の演算805は、暗号モジュールが暗号演算を実行する準備ができていることを示すために、準備完了(RDY)フラグがブロック815で設定されたときに開始する。これは、割り込みを介して、及び/または、暗号モジュールが準備完了レジスタ(準備完了レジスタ630など)を特定の値(例えば、1)に設定することを介して、実行できる。特定の場合では、準備完了フラグを1に設定すると、暗号モジュールの準備ができたことを処理ユニットに通知する処理ユニット割り込みをトリガーすることもできる。他の場合では、処理ユニットは、準備完了レジスタを定期的に読み取って、特定の値(例えば、1)または値の変化(例えば、0から1)を探すことができる。準備完了フラグ値に基づく同期は、例えば、845として示されるプロセッサインタフェース120によって提供されるインタフェースレジスタとともに、矢印840を介して示される。図8Aのブロック855で、処理ユニットは、準備完了フラグ値(例えば、暗号モジュールは処理の準備ができていることを示す1の値を、準備完了フラグが有することを示す)に基づいて割り込みを受信する。図8Aは、割り込みが有効になっている場合を示している。図8Bは、割り込みが有効になっていない別のケースを示しており、図8Bでは、ブロック890で、処理ユニットは、(例えば、準備完了レジスタを定期的にポーリングすることによって)準備完了フラグの値を監視し、この値が1に設定されると演算を開始する。
準備完了フラグが1に設定され、暗号モジュールがブロック815で処理を実行する準備ができると、暗号モジュールはブロック820に進み、ここで新しい暗号演算が実行されることを示す開始フラグが設定される(例えば、開始フラグが1に設定されていることで示される)のを待つ。ブロック820は、図6に示されるように、開始レジスタ620に格納された値を監視する暗号置換ユニット140を含み得る。
暗号モジュールが開始信号を待っている間、処理ユニットは、図8Aのブロック855(例えば、準備完了を示す割り込み=1)または、図8Bのブロック890(例えば、処理ユニットは、準備完了レジスタ630の値を読み取り、それが1であると判定する)の1つに続いて、ブロック860で暗号モジュールの古い出力の処理を開始する。例えば、準備完了フラグが1であると分かると、処理ユニットは、新しい演算を開始し、置換出力及び組み合わせ出力のうち1つまたは複数の内容を読み取ることができる。この後者の演算は、置換出力レジスタ330及び組み合わせ出力レジスタ420にそれぞれ格納された値を読み取ることを含み得る。
ブロック860に続いて、処理ユニットは、ブロック865でチェックを実行して、処理するデータがさらにあるかどうかを判定する。以下でより詳細に説明するように、新しい暗号演算の場合、ブロック860で読み取られた値は無視され得、処理されるべきより多くのデータが存在する。処理ユニットが以前に指示された暗号演算をフォローアップしている場合、例えば結果の準備ができている場合、処理するデータがそれ以上ない可能性がある。処理するデータがさらにある場合、方法はブロック870に進み、そこで新しい入力値が処理ユニットによって準備される。これには、置換入力(X)及び/またはマスク入力(M)の新しい値を、それぞれ、置換入力レジスタ320及びマスク入力レジスタ410に書き込むことが含まれ得る。新しい値が書き込まれると、開始フラグが1に設定され、新しい暗号置換が開始される。この場合も、開始レジスタ620への新しい値及び値1の書き込みは、例えば、1つの書き込みサイクルの一部として、同時に実行され得る。プロセッサインタフェース120の設計は、この演算を容易にする。
例えば、最初にブロック870で処理ユニットが開始フラグを設定する場合、暗号モジュールはブロック820からブロック825に進む。これは、処理ユニットのプログラムフロー内のブロック860、865、及び870のうちの1つまたは複数と並行して実行することができる。ブロック825で、暗号モジュールは初期化演算を実行する。これは、アトミック演算を含む場合があり、例えば、暗号モジュールの少なくとも1クロックサイクルで、単一の演算として複数の異なるイベントが同時に発生する場合がある。ブロック825は、以下の演算のうちの1つまたは複数を含むことができ、それらは、開始フラグを0に設定すること(処理が開始されたことを示すため)、準備完了フラグを0に設定すること(暗号モジュールが現時点でそれ以上の暗号要求を処理できないことを示すため)、置換出力(O)を現在の置換状態(S)として設定すること、置換入力(X)と置換状態(S)に対してXOR演算を実行して、組み合わせ出力(Y)の値を設定すること、置換状態(S)をS=((S AND M) XOR X)としてロードすること、及び、ラウンドカウントフラグをラウンド開始フラグに設定すること、である。したがって、ブロック825は、開始レジスタ620及び準備完了レジスタ630に値0を格納すること、置換状態レジスタ310の内容を置換出力レジスタ330にコピーすること、第1のXOR回路510の出力を組み合わせ出力レジスタ420に格納すること、置換状態の値を第2のXOR回路530の出力として一時メモリにロードすること、及び、ラウンド開始レジスタ640の値をラウンドデータレジスタ660にコピーすること、を含み得る。暗号アーキテクチャのこれらのコンポーネントは、ブロック825の演算が並行して実行され得るように構成される。これにより、それらをアトミック演算として実行できるようになり、暗号演算の速度が大幅に向上する。
ブロック825での初期化に続いて、暗号モジュールは、ブロック830で暗号置換の反復(すなわち、ラウンド)を実行する。これは、ブロック825で(一時メモリに)ロードされた初期化された置換状態(S)の値を使用して、置換回路540をアクティブ化することを含み得る。置換回路540はまた、ラウンドデータレジスタ660)とともに格納されたラウンドカウントまたは定数にアクセスすることができる(例えば、S=Round(S,RND)であり、KECCAK-pの実装について説明するときに上記で参照したとおり)。特定の場合では、置換回路540はまた、識別子レジスタ610に格納されたドメイン分離パラメータにアクセスし得る。初期化された置換状態(S)、ラウンドカウントまたは定数、及びドメイン分離パラメータは、置換ラウンドへの入力として提供され得る(例えば、S=Round(S,RND,ID))。ブロック830の一部として、ラウンドカウントの値は、ラウンドデータレジスタ660内でインクリメントされ得る(例えば、RND=RND+1)。
ブロック835で、左側の処理ストリーム805において、ラウンドカウントが終了ラウンド値よりも小さいかどうか(例えば、RND<ENDか)を判定するためにチェックが行われる。これは、ラウンドデータレジスタ660と終了ラウンドレジスタ650の整数値を比較することを含み得る。ラウンドカウントが終了ラウンド値よりも小さい場合、ブロック830を繰り返すことができる。ラウンドカウントが終了ラウンド値以上である場合(例えば、ブロック830での最後の増分に続く終了ラウンド値に等しい場合)、暗号置換は完了である。方法はブロック815に進み、ここで準備完了フラグが1に設定され、置換の結果が準備完了であり、暗号モジュールがさらなる暗号演算を実行する準備ができていることを示す。次に、方法は再びブロック820に進み、ここで暗号モジュールは、処理ユニットによって開始フラグが1に設定されるのを待つ。
図8Aでは、ブロック870での入力の処理に続いて、処理ユニットのプロセスフローはブロック875で終了する。したがって、処理ユニットは、暗号演算の結果が、準備ができていることを示す割り込みが到着するのを待っている間に、異なる(例えば、無関係の)命令を実行することができる。このようにして、処理ユニットを効率的に利用することができる。暗号モジュールが例えば、準備完了レジスタ630に1を格納する暗号置換ユニット140を介してブロック815を実行するとき、それは、暗号演算の結果が準備完了であることを示し、処理ユニットは、ブロック855で別のプロセスフローを開始する。したがって、処理ユニットは、ブロック860で出力を処理し、これは、置換出力レジスタ330及び組み合わせ出力レジスタ420に格納された値を読み取ることを含み得る。組み合わせ出力レジスタ420の結果は、ブロック825の以前の実行によって設定されたものであり得て、置換出力レジスタ330の結果は、ブロック830での反復の一部として格納され得る(例えば、O=S’=Perm((S AND M) XOR X))。ブロック860で処理ユニットによって出力が読み取られると、ブロック865でのチェックが実行される。暗号演算が完了した場合(例えば、置換出力レジスタ330の結果が必要なすべてである場合)、処理ユニットは、ブロック875でその処理を終了する。実行すべき追加の暗号演算がある場合、ブロック870が再度実行され、プロセスが繰り返される。1つの場合では、新しい値が置換入力レジスタ320及びマスク入力レジスタ410に書き込まれ得るが、一方で以前の反復がブロック830でまだ実行されている。
図8Bは、割り込みが有効化または構成されていない場合の同様のプロセスを示している。この場合、ブロック870に続いて、処理ユニットはブロック890に戻り、暗号演算の結果が、準備ができていることを示す準備完了フラグの状態の変化を待つ。処理ユニットは、ブロック890を実行するだけでなく、監視またはポーリングプロセスの一部としてこのブロックを断続的に実行することができる。
本明細書で説明される特定の実施例は、暗号アーキテクチャ、及びそのようなアーキテクチャを動作させる方法を提供し、これは暗号置換ユニットをマイクロプロセッサなどの処理ユニットと効率的にインタフェース接続する。本明細書で説明する特定の実施例は、低リソースのマイクロコントローラや組み込みデバイスでの実装、ならびに高速で安全なデータ処理の実装に適したものであり得る暗号方法を提供する。説明されている暗号アーキテクチャは、使用される処理ユニットのタイプに依存せず、プロセッサインタフェースにより、様々な処理ユニットを暗号置換ユニットに結合でき、様々な制御手順のオプションを共通の制御レジスタのセットから利用できる。暗号アーキテクチャは、メモリマッピング及び/または他のアプローチを使用して実装でき、したがって様々なタイプの処理ユニットへの簡単または透過的なデータアクセスを提供する。説明されているアプローチは、メモリマッピングされたレジスタまたはベクトルレジスタと命令のいずれかを介して、キーレス暗号置換とプロセッサコアの緊密な結合を提供することができ、プロセッサインタフェースは、消費電力とアイドルサイクルを削減するバッファアーキテクチャを提供する。
本明細書で説明される特定の実施例は、ISA拡張として、例えば、多種多様な処理ユニットに実装され得る。実施例は、量子耐性の対称及び非対称暗号の安全な実装を、直接及び/または間接的にサポートすることができる。本明細書で説明されるプロセッサインタフェースは、処理ユニットのバスアーキテクチャを介して、または他の入出力メカニズムを介して制御することができる。特定の実施例は、一定時間でエミッション保護されたバイナリ演算を提供するように構成できる。
本明細書に説明されている特定の実施例は、暗号置換を「ビルディングブロック」の高レベルアルゴリズムとして使用する、高レベルアルゴリズムの効率的なハードウェア及び/またはソフトウェア実装を可能にするために使用され得る。このような効率的なハードウェアとソフトウェアの共同設計の恩恵を受ける可能性のあるアルゴリズムの例には、以下のものが含まれている。暗号ハッシュ関数とメッセージダイジェスト(例えば、前述のSHA3及びSHAKE標準、前述のSNEIKアプローチの一部を形成するSNEIKHA、及び前述のASCONアプローチからのAsconハッシュ);メッセージ認証コード(MAC)などのSHA3派生関数(例えば、John Kelsey、Shu-Jen Chang、Ray Perlnerが「SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash」NIST Special Publication 800-185、米国国立標準技術研究所-NIST,2016年12月、で説明しており、参照により本明細書に組み込まれる);暗号置換に基づく関連データによる認証済み暗号化(AEAD)(例えば、以前に参照したSNEIK及びASCONアプローチならびにKEYAKアプローチで説明されているSNEIKEN及びAscon-AEADであり、Guido Bertoni、Joan Daemen、Seth Hoffert、Michael Peeters、Gilles Van Assche、及びRonny Van Keerが「CAESAR submission:Keyak v2」Keccak Team,2016年9月、において、記述しており、参照により本書に組み込まれる);暗号置換に基づく疑似乱数生成(PRNG)及び鍵導出関数(KDF)の構築;暗号プリミティブに基づく暗号モード、例えば、説明されているのは、Guido Bertoni、Joan Daemen、Seth Hoffert、Michael Peeters、Gilles Van Assche、Ronny Van Keerによる、「Farfalle: parallel permutation-based cryptography」IACR Cryptology ePrint Archive:Report2016/1188,2016年12月、及び、Guido Bertoni、Joan Daemen、Michael Peeters、Gilles Van Assche、Ronny Van Keer、Benoit Viguierによる、「KangarooTwelve: fast hashing based on Keccak-p」Proc. ACNS 2018,LNCS 10892,pp.400-418、Springer,2018年、であり、両方とも参照により本明細書に組み込まれるもの;Rivest-Shamir-Adleman(RSA)及びElliptic Curve Digital Signature Algorithm(ECDSA)などの、(例えば、FIPS標準186-4に記述されているような)置換ベースのプリミティブをビルディングブロックとして使用する従来の公開鍵暗号アルゴリズム;そして、暗号置換をビルディングブロックとして使用する多数のポスト量子公開鍵暗号アルゴリズム(例えば、BIKE、「Classic McEliece」、Dilithium、Falcon、FrodoKEM、GeMMS、Kyber、Luov、MQDSS、NewHope、NTRU、NTS-KEM、Picnic、qTESLA、Round5、Sabre、Sphincs+、及びThreeBears- 2019年3月にNIST情報技術研究所が発行した「Post-Quantum Cryptography:Round 2 Submissions」に記載されており、これも参照により本書に組み込まれる)がある。
特定の実施例は、特定のレジスタ内のデータにアクセスし、そのようなレジスタからデータを読み取る、及び/または書き込むことに言及しているが、実際には中間データストレージ及び/またはデータ構造は特定の実装で使用することができ、「~のデータ」への言及は「~から得られるデータ」にも適用することができ、例えば、説明されているプロセスに加えて、1つまたは複数の中間プロセスから生じるデータであることが理解される。XOR及びANDへの言及は、それぞれ論理「排他的論理和」及び論理「積(and)」演算を実行する論理演算を指す。また、特定のコンポーネントに結合された回路への言及は、実行されるファームウェアコード及び/または専用ハードウェア回路を介してかどうかにかかわらず、そのコンポーネント内の機能として代替的に実装され得ることも理解される。本明細書で説明される「回路」は、例えば、デジタル論理ゲートまたはFPGAのプログラム可能なゲートを使用して、ハードウェアに実装することができ、及び/またはメモリからロードされ、マイクロプロセッサなどのプロセッサによって実行されるコンピュータプログラムコードとして実装することができる。本明細書で説明する特定のシステムコンポーネント及び方法は、読み取り専用の更新可能なファームウェアメモリなどの非一時的な記憶媒体に格納可能な、ファームウェアまたは命令セットなどのコンピュータプログラムコードによって実装することができる。
上記の実施例は、例示的と理解されるべきである。さらなる実施例が想定される。例えば、ここで説明する特定の値はテスト実施例に基づいており、実装によって異なる場合がある(例えば、マイクロコントローラの仕様とタイプ、セキュリティ要件、及びその他の要因によって異なる)。各実施例の特定のコンポーネントは別々に説明されているが、ある実施例を参照して説明された機能は別の実施例で適切に実装することができ、実装によっては特定のコンポーネントが省略され得ることを理解されたい。任意の1つの実施例に関連して説明された任意の特徴は、単独でまたは説明した他の特徴と組み合わせて使用することができ、また、他の任意の実施例の1つまたは複数の特徴、または任意の他の実施例の任意の組み合わせと組み合わせて使用し得ることを理解されたい。例えば、システムコンポーネントに関して説明された特徴はまた、説明された方法の一部として実行されるように適合され得る。さらに、添付の特許請求の範囲で定義される本発明の範囲から逸脱することなく、上述されていない同等物及び修正が採用されてもよい。
120 プロセッサインタフェース
130 処理ユニット
140 暗号置換ユニット
210 データレジスタ
220 制御レジスタ

Claims (20)

  1. 暗号レジスタのセットを含むプロセッサインタフェースであって、少なくとも1つの処理ユニットによってアクセス可能である前記プロセッサインタフェースと、
    前記暗号レジスタのセット内に格納されたデータを使用して暗号置換を実行する回路を含む暗号置換ユニットと、を含み、
    前記少なくとも1つの処理ユニットは、前記暗号置換を指示し、プロセッサインタフェースを使用して前記暗号置換の結果にアクセスする、暗号アーキテクチャ。
  2. 前記暗号アーキテクチャが、前記少なくとも1つの処理ユニットによって実行される単一のマシンコード命令に基づいて暗号置換を実行するように構成されている、請求項1に記載の暗号アーキテクチャ。
  3. 前記単一のマシンコード命令が命令セットアーキテクチャ(ISA)拡張として実装されている、請求項2に記載の暗号アーキテクチャ。
  4. 前記プロセッサインタフェースが、少なくともbビットを格納するように構成された複数のレジスタを含み、bは置換入力のビットでのサイズである、請求項1~3のいずれか1項に記載の暗号アーキテクチャ。
  5. 前記暗号置換ユニットが、KECCAK-p置換を実行するように構成されている、請求項1~4のいずれか1項に記載の暗号アーキテクチャ。
  6. 前記暗号置換ユニットが、複数のラウンドを含むキーレス置換を実行するように構成されている、請求項1~5のいずれか1項に記載の暗号アーキテクチャ。
  7. 前記少なくとも1つの処理ユニットが、前記暗号アーキテクチャを使用して、
    入力データを置換状態と混合するための吸収暗号演算と、
    前記置換状態を使用して出力を取得するための搾取暗号演算と、
    前記置換状態を使用して入力データを暗号化するための暗号化暗号演算と、
    置換状態を使用して入力データを復号する復号暗号演算と、
    のうちの1つまたは複数を実行することができる、請求項1~6のいずれか1項に記載の暗号アーキテクチャ。
  8. 前記レジスタのセットが、
    置換状態を格納するための置換状態レジスタと、
    置換入力データを格納するための置換入力レジスタであって、前記少なくとも1つの処理ユニットによって書き込み可能である前記置換入力レジスタと、
    出力データを格納するための置換出力レジスタであって、前記少なくとも1つの処理ユニットによって読み取り可能である前記置換出力レジスタと、
    を含む、請求項1~6のいずれか1項に記載の暗号アーキテクチャ。
  9. 入力XOR演算を適用するための回路であって、前記入力XOR演算は、前記置換入力レジスタの前記置換入力データから得られたデータと、前記置換状態レジスタの前記置換状態から得られたデータとに適用される、前記回路を含み、
    入力XOR演算を適用するための前記回路は前記暗号置換の実行のための前記暗号置換ユニットにデータを供給するために通信可能に結合されている、
    請求項8に記載の暗号アーキテクチャ。
  10. 入力XOR演算を適用するための前記回路の出力を格納するためのXOR出力レジスタ
    を含む、請求項9に記載の暗号アーキテクチャ。
  11. 前記レジスタのセットが、
    入力マスクを格納するためのマスク入力レジスタであって、前記少なくとも1つの処理ユニットによって書き込み可能である、前記マスク入力レジスタと、
    前記マスク入力レジスタ及び前記置換状態レジスタに通信可能に結合されており、前記入力マスクから得られたデータ及び前記置換データから得られたデータにAND演算を適用する、置換マスキング回路と、
    前記置換マスキング回路及び前記置換入力レジスタに通信可能に結合され、前記置換マスキング回路から得られたデータ及び前記置換入力データから得られたデータにXOR演算を適用する入力適用回路であって、出力データを前記暗号置換ユニットに供給するように構成されている前記入力適用回路と、
    をさらに含む、請求項8~10のいずれか1項に記載の暗号アーキテクチャ。
  12. 暗号置換に続いて、前記暗号置換ユニットの出力が前記置換状態レジスタにコピーされる、請求項8~11のいずれか1項に記載の暗号アーキテクチャ。
  13. 前記暗号レジスタのセットが、前記少なくとも1つの処理ユニットからアクセス可能な1つまたは複数の制御レジスタを含む、請求項1~12のいずれか1項に記載の暗号アーキテクチャ。
  14. 前記1つまたは複数の制御レジスタが、
    前記少なくとも1つの処理ユニットによって書き込み可能であり、実行される暗号演算の識別子を格納する、識別子レジスタと、
    前記少なくとも1つの処理ユニットによって書き込み可能であり、前記暗号演算のための開始フラグを格納する、開始レジスタと、
    前記少なくとも1つの処理ユニットによって読み取り可能であり、前記暗号アーキテクチャが別の暗号演算を開始する準備ができていることを示す準備完了フラグを格納する、準備完了レジスタと、
    前記少なくとも1つの処理ユニットによって書き込み可能であり、暗号置換のラウンドに関連する1つまたは複数のフラグを格納する、1つまたは複数のラウンドレジスタと、
    前記少なくとも1つの処理ユニットによって書き込み可能であり、前記少なくとも1つの処理ユニットへの割り込みを制御する、割り込み制御レジスタ、
    のうちの1つまたは複数を含む、請求項13に記載の暗号アーキテクチャ。
  15. 前記暗号アーキテクチャが、SHA-3関数のための暗号置換を実行するために前記少なくとも1つの処理ユニットによって使用可能である、請求項1~11のいずれか1項に記載の暗号アーキテクチャ。
  16. 暗号演算を実行する方法であって、
    暗号置換ユニットにおいて、処理ユニットから前記暗号演算を実行するための命令を受信することと、
    前記暗号置換ユニットによって、暗号レジスタのセットの1つから置換状態をロードすることと、
    前記暗号置換ユニットを使用して、前記置換状態から得られたデータに対して暗号置換を実行することと、
    前記暗号置換ユニットによって、前記暗号置換の出力を前記暗号レジスタのセットの1つに格納することと、
    前記暗号置換ユニットによって、前記置換が完了したことを前記処理ユニットに示すことであって、前記処理ユニットは、前記暗号レジスタのセットからの前記暗号置換の前記出力にアクセスする、前記示すことと、
    を含む、方法。
  17. 制御レジスタのセットのうちの1つを介して、前記暗号置換ユニットが処理を開始する準備ができていることを示すことを含み、
    前記処理ユニット及び前記暗号置換ユニットの前記演算は、割り込みと、前記制御レジスタのセットのうちの1つの状態とのうちの1つまたは複数に基づいて同期される、
    請求項16に記載の方法。
  18. 前記処理ユニットによって、前記暗号レジスタのセットからの前記暗号置換の前記出力を読み取ること
    を含む、請求項16または請求項17に記載の方法。
  19. 前記暗号置換ユニットによって、ラウンド制御レジスタからラウンドカウントをロードすることと、
    前記暗号置換ユニットによって、前記暗号置換の前記ラウンドカウントを使用することと、
    前記ラウンド制御レジスタの前記ラウンドカウントをインクリメントすることと、を含み、
    前記ロード、使用、及びインクリメント演算は、前記ラウンド制御レジスタと終了制御レジスタの比較に基づいて繰り返される、
    請求項16~18のいずれか1項に記載の方法。
  20. 前記暗号置換を実行することが、
    前記暗号置換ユニットによって、置換入力レジスタから置換入力データをロードすることと、
    前記暗号置換ユニットによって、マスク入力レジスタからマスク入力データをロードすることと、を含み、
    前記暗号置換を実行することは、前記暗号置換ユニットによって、前記置換入力データと、前記マスク入力データ及び前記置換状態に実行されるAND演算の結果との関数として、XOR演算を実行することにより、前記置換レジスタ内の前記置換状態を更新することを含み、
    前記暗号置換の前記出力を前記暗号レジスタのセットの1つに格納することは、前記更新された置換状態を前記置換状態レジスタにロードすることを含む、
    請求項16~19のいずれか1項に記載の方法。
JP2022503796A 2019-03-18 2020-07-15 暗号置換のための暗号アーキテクチャ Pending JP2022541057A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1903674.8A GB2582900A (en) 2019-03-18 2019-03-18 Cryptography using a cryptographic state
GB1910372.0 2019-07-19
GB1910372.0A GB2585885A (en) 2019-03-18 2019-07-19 Cryptographic architecture for cryptographic permutation
PCT/GB2020/051699 WO2021014125A1 (en) 2019-03-18 2020-07-15 Cryptographic architecture for cryptographic permutation

Publications (1)

Publication Number Publication Date
JP2022541057A true JP2022541057A (ja) 2022-09-21

Family

ID=66381181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022503796A Pending JP2022541057A (ja) 2019-03-18 2020-07-15 暗号置換のための暗号アーキテクチャ

Country Status (7)

Country Link
US (2) US11822901B2 (ja)
EP (1) EP4000214A1 (ja)
JP (1) JP2022541057A (ja)
KR (1) KR20220028132A (ja)
CN (1) CN114258660A (ja)
GB (5) GB2582900A (ja)
WO (2) WO2020188269A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112217643B (zh) * 2019-07-09 2021-12-10 华为技术有限公司 运算方法、装置及设备
FR3118218B1 (fr) * 2020-12-21 2024-02-16 St Microelectronics Rousset Procédé pour valider un module logiciel externe en vue de son utilisation par un système sur une puce
US11985226B2 (en) * 2020-12-23 2024-05-14 Intel Corporation Efficient quantum-attack resistant functional-safe building block for key encapsulation and digital signature
WO2022146436A1 (en) * 2020-12-30 2022-07-07 Pqsecure Technologies, Llc A low footprint hardware architecture for kyber-kem
DE102021104867A1 (de) * 2021-03-01 2022-09-01 Infineon Technologies Ag Berechnung von hash-werten
US11522678B2 (en) 2021-06-08 2022-12-06 Intel Corporation Block cipher encryption for processor-accelerator memory mapped input/output communication
US20210297243A1 (en) * 2021-06-08 2021-09-23 Intel Corporation Permutation cipher encryption for processor-accelerator memory mapped input/output communication
US20220416998A1 (en) * 2021-06-23 2022-12-29 Intel Corporation Side channel protection for sha3 cryptographic functions
CN113472525B (zh) * 2021-06-24 2022-07-26 南京航空航天大学 基于后量子密码Saber算法的低内存占用密钥生成方法和加解密方法及其系统
GB2608999A (en) 2021-07-15 2023-01-25 Pqshield Ltd Cryptographic system for post-quantum cryptographic operations
US20220006645A1 (en) * 2021-09-21 2022-01-06 Intel Corporation Post-quantum secure lighteight integrity and replay protection for multi-die connections
WO2023091936A1 (en) * 2021-11-17 2023-05-25 D-Wave Systems Inc. Systems and methods for superconducting flux qubit readout
US11765604B2 (en) 2021-12-16 2023-09-19 T-Mobile Usa, Inc. Providing configuration updates to wireless telecommunication networks
WO2023119893A1 (ja) * 2021-12-23 2023-06-29 ソニーセミコンダクタソリューションズ株式会社 データ処理装置
KR20240018910A (ko) 2022-08-03 2024-02-14 경희대학교 산학협력단 양자 단대단 암호화 시스템 및 그 동작 방법
CN115118527B (zh) * 2022-08-26 2022-11-25 深圳市成为信息股份有限公司 超高频模组与pda的双向认证方法及相关设备

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3911330A (en) * 1974-08-27 1975-10-07 Nasa Nonlinear nonsingular feedback shift registers
US4589120A (en) * 1983-12-13 1986-05-13 Honeywell Inc. Unique start bit for data transmissions
JPH03251890A (ja) * 1990-03-01 1991-11-11 Kokusai Denshin Denwa Co Ltd <Kdd> 非線形フィードバック・シフトレジスタ装置
JP3012732B2 (ja) 1992-02-20 2000-02-28 富士通エフ・アイ・ピー株式会社 ブロック暗号処理装置
CA2173688C (en) * 1996-04-09 2000-01-18 Hideo Shimizu Encryption apparatus and method capable of controlling encryption process in accordance with an internal state
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
IL128007A (en) 1999-01-11 2003-02-12 Milsys Ltd Enhancements on compact logic devices and also for accelerating and securing computations in modular arithmetic especially for use in public key cryptographic co-processors designed for elliptic curve and rsa type computations
CA2375749A1 (en) * 2000-03-31 2001-10-11 Motorola, Inc. Scalable cryptographic engine
WO2003021849A2 (en) * 2001-08-31 2003-03-13 Hamilton John W A non-algebraic cryptographic architecture
US8194855B2 (en) 2003-06-30 2012-06-05 Oracle America, Inc. Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US8509427B2 (en) * 2005-08-01 2013-08-13 Eric Myron Smith Hybrid mode cryptographic method and system with message authentication
US20080019524A1 (en) * 2006-06-29 2008-01-24 Kim Moo S Apparatus and method for low power aes cryptographic circuit for embedded system
JP4960044B2 (ja) * 2006-09-01 2012-06-27 株式会社東芝 暗号処理回路及びicカード
US8538012B2 (en) 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US20080298583A1 (en) * 2007-05-31 2008-12-04 Lucent Technologies Inc. System and method of quantum encryption
US8151031B2 (en) * 2007-10-31 2012-04-03 Texas Instruments Incorporated Local memories with permutation functionality for digital signal processors
US8205066B2 (en) 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8208633B2 (en) * 2008-11-24 2012-06-26 Pitney Bowes Inc. Method and system for securing communications in a metering device
KR101210607B1 (ko) * 2008-12-08 2012-12-11 한국전자통신연구원 해시 암호 장치 및 방법
US8280040B2 (en) * 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
KR101566408B1 (ko) 2009-03-13 2015-11-05 삼성전자주식회사 불 마스크와 산술 마스크의 변환 회로 및 변환 방법
US8515059B2 (en) * 2010-03-30 2013-08-20 Daniel W. Engels Cryptographic processor with dynamic update of encryption state
WO2013089682A1 (en) * 2011-12-13 2013-06-20 Intel Corporation Method and apparatus to process keccak secure hashing algorithm
US8572410B1 (en) * 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
US9128698B2 (en) 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8983068B2 (en) * 2013-03-06 2015-03-17 Infineon Technologies Ag Masked nonlinear feedback shift register
JP6113091B2 (ja) * 2013-03-07 2017-04-12 キヤノン株式会社 ハッシュ値生成装置
US10331450B2 (en) * 2013-06-26 2019-06-25 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9274979B2 (en) * 2013-11-27 2016-03-01 Nvidia Corporation System, method, and computer program product for optimizing data encryption and decryption by implementing asymmetric AES-CBC channels
CN103812643A (zh) 2014-01-26 2014-05-21 厦门密安信息技术有限责任公司 基于arm的axi接口的sha3 ip核设计
US9515818B2 (en) * 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US10313129B2 (en) * 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions
US10511581B2 (en) * 2015-11-17 2019-12-17 International Business Machines Corporation Parallelizable encryption using keyless random permutations and authentication using same
US20180212761A1 (en) 2017-01-23 2018-07-26 Cryptography Research, Inc. Hardware circuit to perform round computations of arx-based stream ciphers
KR102033351B1 (ko) 2017-08-22 2019-10-17 국민대학교산학협력단 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
GB201802582D0 (en) * 2018-02-16 2018-04-04 Nordic Semiconductor Asa Protecting cryptographic key data

Also Published As

Publication number Publication date
GB2585885A (en) 2021-01-27
GB201903674D0 (en) 2019-05-01
GB2596763A (en) 2022-01-05
GB2601928B (en) 2023-10-04
KR20220028132A (ko) 2022-03-08
WO2020188269A1 (en) 2020-09-24
GB201910372D0 (en) 2019-09-04
EP4000214A1 (en) 2022-05-25
GB202114869D0 (en) 2021-12-01
WO2021014125A1 (en) 2021-01-28
GB2601928A (en) 2022-06-15
GB201911804D0 (en) 2019-10-02
GB2582900A (en) 2020-10-14
GB202202103D0 (en) 2022-04-06
CN114258660A (zh) 2022-03-29
US20220066741A1 (en) 2022-03-03
US11822901B2 (en) 2023-11-21
GB2596763B (en) 2023-02-15
US20220138349A1 (en) 2022-05-05

Similar Documents

Publication Publication Date Title
US20220138349A1 (en) Cryptographic architecture for cryptographic permutation
CN107924448B (zh) 硬件实施的单向密码术
JP7107670B2 (ja) ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法
US20180122271A1 (en) Lightweight cryptographic engine
CN102138300B (zh) 消息认证码预计算在安全存储器中的应用
US7636858B2 (en) Management of a trusted cryptographic processor
US8036379B2 (en) Cryptographic processing
CN110830258A (zh) 从服务器接收安全的软件更新信息的器件
US9961057B2 (en) Securing a cryptographic device against implementation attacks
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
EP3117558A1 (en) Dynamic encryption keys for use with xts encryption systems employing reduced-round ciphers
GB2532836A (en) Address-dependent key generation with substitution-permutation network
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
WO2019229192A1 (en) Memory-efficient hardware cryptographic engine
JP2022153639A (ja) 不揮発性メモリデバイス内部からの保護された通信
CN113839770A (zh) 用于tls分组加密和解密的高吞吐量后量子aes-gcm引擎
US9252943B1 (en) Parallelizable cipher construction
US6873707B1 (en) Hardware-based encryption/decryption employing cycle stealing
Hu et al. Taming energy cost of disk encryption software on data-intensive mobile devices
Ajmi et al. Efficient and lightweight in-memory computing architecture for hardware security
Conti et al. Design exploration of aes accelerators on fpgas and gpus
Ege et al. Memory encryption for smart cards
CN112487448B (zh) 一种加密信息处理装置、方法及计算机设备
Kolympianakis Securing access in embedded systems via DMA protection and light-weight cryptography.
Sousa HACC-V: hardware-assisted cryptographic coprocessor for RISC-V

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230628