JP7116050B2 - 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 - Google Patents

認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 Download PDF

Info

Publication number
JP7116050B2
JP7116050B2 JP2019517913A JP2019517913A JP7116050B2 JP 7116050 B2 JP7116050 B2 JP 7116050B2 JP 2019517913 A JP2019517913 A JP 2019517913A JP 2019517913 A JP2019517913 A JP 2019517913A JP 7116050 B2 JP7116050 B2 JP 7116050B2
Authority
JP
Japan
Prior art keywords
data
instruction
block
instructions
computer
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.)
Active
Application number
JP2019517913A
Other languages
English (en)
Other versions
JP2019535036A (ja
Inventor
グレイナー、ダン
スリゲル、ティモシー
ツェリン、クリスチャン
ジャコビ、クリスチャン
パプロトスキ、ウラジーミル
ヴィセグラディ、タマス
ブエントゲン、ラインハルト、テオドール
ブラッドベリー、ジョナサン
プラニック、アディティア、ニティン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019535036A publication Critical patent/JP2019535036A/ja
Application granted granted Critical
Publication of JP7116050B2 publication Critical patent/JP7116050B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • 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/30018Bit or string instructions
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

1つまたは複数の態様は、一般に、コンピューティング環境内の処理に関し、特に、データの暗号処理および認証に関連付けられた処理に関する。
電子情報処理の文脈におけるセキュリティで保護されたメッセージ送信は、メッセージの暗号化および暗号解読ならびに認証を含む。メッセージは、送信前に送信側によって暗号化され、暗号化されたメッセージの調査によって真の内容が第三者に公開されないことを保証する。一方、メッセージは、受信側によって暗号解読され、元の内容を公開する。さらに、メッセージ認証は、送信側によって提供されたメッセージの内容が誤って、または悪意を持って送信中に変更されていないことを保証する。したがって、受信されたメッセージは、実際に、送信されたメッセージと同じである。
U.S. National Institute of Science and Technology (NIST) Special Publication 800-38D, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC(GMAC:Galois Message Authentication Code)に、以下の動作が記載されている。
NIST SP 800-38Dにおいて説明されている、ガロア・ハッシュ(GHASH:Galois Hashing)アルゴリズムを使用した追加認証データの認証。追加認証データの例は、メッセージ用のネットワーク・ルーティング情報である。このデータは、ネットワーク・ルータがメッセージを適切にディスパッチできるように、暗号化されないが、ルーティング情報は認証され、例えば、データが予期されたソースから来たことを保証する必要があることがある。
高度暗号化標準(AES:advanced encryption standard)などの、128ビットのブロック・サイズで承認された対称鍵ブロック暗号を使用したメッセージの暗号処理。暗号処理されたブロックの繰り返しの可能性を最小限に抑えるために、この暗号処理技術は、1つのブロックから、暗号処理プロセスに含まれている次のブロックにインクリメントされるカウンタを使用する。
GHASHを使用して暗号化されたメッセージ・データの認証。
さまざまな暗号処理アルゴリズムを使用してメッセージの暗号処理を実行するため、およびメッセージのメッセージ・ディジットを生成するために、個別の命令を使用できる。
U.S. National Institute of Scienceand Technology (NIST) Special Publication 800-38D, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC "z/Architecture Principles of Operation," IBM Publication No. SA22-7832-10, March2015 "Power ISA (TM) Version 2.07B," International Business Machines Corporation, April 9, 2015
認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法を提供する。
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するために処理回路によって実行される命令を格納しているストレージ媒体を備える。この方法は、例えば、暗号処理および認証を含む、複数の動作を実行するための命令を取得することと、命令を実行することとを含む。この実行することは、命令によって提供されたデータの1つのセットを暗号処理して、暗号処理されたデータを取得することと、暗号処理されたデータを指定された位置に配置することとを含む。この実行することは、命令によって提供されたデータの追加のセットを認証することをさらに含んでおり、この認証することは、メッセージ認証タグの少なくとも一部を生成する。メッセージ認証タグの少なくとも一部は、選択された位置に格納される。さらに別の実施形態では、この実行することは、暗号処理されたデータを認証することをさらに含む。
追加認証データのメッセージ・ダイジェストを生成すること、メッセージを暗号処理すること、および暗号化されたメッセージのメッセージ・ダイジェストを生成することができる1つの命令が提供される。この命令は、フェッチされ、デコードされ、実行される命令の数を減らすことによって、および暗号文がフェッチされる回数を減らすことによって、システムの性能を改善する。
1つの例では、データの追加のセットは、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、この実行することは、データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかを判定することをさらに含む。この認証することは、データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかに基づいて実行される。この判定することは、例えば、命令の最後の追加認証データ制御(additional authenticated data control)をチェックして、データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかを判定することを含む。最後の追加認証データ制御は、追加認証データの最後のブロックが提供されているかどうかを示し、単一の命令が、追加認証データの最初のブロック、中間のブロック、および最後のブロックを処理できるようにする。
さらに、1つの例では、データの1つのセットは、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、この実行することは、データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することをさらに含む。この暗号処理することは、データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかに基づいて実行される。この判定することは、例えば、命令の最後のテキスト制御をチェックして、データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することを含む。最後のテキスト制御は、平文/暗号文の最後のブロックが提供されているかどうかを示し、単一の命令が、平文/暗号文の最初のブロック、中間のブロック、および最後のブロックを処理できるようにする。
例として、暗号処理することは、選択された値に設定されている命令によって提供される制御に基づいて、データの1つのセットを暗号化すること、または特定の値に設定されている命令によって提供される制御に基づいて、データの1つのセットを暗号解読することを含む。
一実施形態では、データの追加のセットを認証することは、ハッシュ技術を使用して、メッセージ認証タグの少なくとも一部を生成すること含む。一実施形態では、ハッシュ技術は、選択された値に設定されている命令の、ハッシュ・サブキー(hash subkey)によって提供される制御に基づいて、命令によって使用されるパラメータ・ブロックに格納されるハッシュ・サブキーを使用する。ハッシュ・サブキーによって提供される制御によって、プログラムは、それ自身のハッシュ・サブキーを提供したことを示すことができ、このようにして、同じハッシュ・サブキーを使用する場合に、性能上の利益をもたらすことができる。
一例として、データの1つのセットは、メッセージの少なくとも一部を含み、データの追加のセットは、メッセージのルーティング情報を含む。
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。 図1のプロセッサの詳細をさらに示す図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。 図3のメモリの詳細をさらに示す図である。 本発明の態様による、認証命令を含む暗号メッセージの書式の一実施形態を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージの1つまたは複数の態様によって使用される汎用レジスタ(汎用レジスタ0(GR0))の内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージよって使用される別の汎用レジスタ(汎用レジスタ1(GR1))の内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージによって1つまたは複数の態様において使用されるレジスタRの内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージによって1つまたは複数の態様において使用されるレジスタRの内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージによって1つまたは複数の態様において使用されるレジスタR+1の内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージによって1つまたは複数の態様において使用されるレジスタRの内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージによって1つまたは複数の態様において使用されるレジスタR+1の内容の一例を示す図である。 本発明の態様による、図5の認証命令を含む暗号メッセージによって使用するためのパラメータ・ブロックの書式の一例を示す図である。 本発明の態様による、ハッシュ・サブキーを暗号化する一例を示す図である。 本発明の態様による、追加認証データの完全なブロックのガロア・ハッシュ処理の一例を示す図である。 本発明の態様による、追加認証データの最後の(短い)ブロックのガロア・ハッシュ処理の一例を示す図である。 本発明の態様による、暗号化のためのメッセージの完全なブロックの結合された暗号処理およびハッシュ処理の一例を示す図である。 本発明の態様による、暗号解読のためのメッセージの完全なブロックの結合された暗号処理およびハッシュ処理の一例を示す図である。 本発明の態様による、メッセージの最後の(短い)ブロックの暗号処理およびハッシュ処理の一例を示す図である。 本発明の態様による、最後のタグのハッシュ処理および暗号化の一例を示す図である。 本発明の態様による、認証命令を含む暗号メッセージに関連付けられた選択された処理の一例を示す図である。 本発明の態様による、認証命令を含む暗号メッセージに関連付けられた処理の一例を示す図である。 本発明の態様による、認証命令を含む暗号メッセージに関連付けられた処理の一例を示す図である。 本発明の態様による、認証命令を含む暗号メッセージに関連付けられた処理の一例を示す図である。 本発明の態様による、認証命令を含む暗号メッセージに関連付けられた処理の一例を示す図である。 本発明の態様による、認証命令を含む暗号メッセージに関連付けられた処理の一例を示す図である。 本発明の態様による、追加の認証動作を伴って暗号メッセージを実行するように構成された命令を実行することを含んでいる、コンピューティング環境内の処理を容易にする一例を示す図である。 本発明の態様による、追加の認証動作を伴って暗号メッセージを実行するように構成された命令を実行することを含んでいる、コンピューティング環境内の処理を容易にする一例を示す図である。
1つまたは複数の態様によれば、認証および暗号処理の機能を結合する単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令(hardware machine instruction))が提供される。例えば、(追加認証データおよびメッセージの両方の)メッセージ認証タグを生成する機能を、メッセージの暗号処理と結合する単一の命令が提供される。一実施形態では、この命令は、ガロア/カウンタ・モードの仕様に従って暗号処理および認証を実行するが、他の実施形態では、この命令は、追加のアルゴリズムまたは他のアルゴリズムあるいはその両方を使用して、暗号処理および認証を実行してもよい。この命令は、本明細書では、認証命令を含む暗号メッセージと呼ばれる。
前述したように、データ暗号化アルゴリズム、トリプル・データ暗号化アルゴリズム、および高度暗号化標準を含む、さまざまな暗号処理アルゴリズムを使用してメッセージの暗号処理を実行するため、およびメッセージ・ダイジェストを生成するために、別々の命令を使用できる。さらに、GHASHを含むさまざまなハッシュ・アルゴリズムを実行するために、他の機能を使用できる。しかし、メッセージの暗号処理と、追加認証データの認証を含むメッセージの認証を結合する、単一の命令は存在しない。したがって、本発明の態様によれば、メッセージの暗号処理および認証を結合するそのような命令(例えば、認証命令を含む暗号メッセージ)が提供される。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態が、図1を参照して説明される。1つの例では、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるz/Architectureに基づく。z/Architectureの一実施形態は、“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。Z/ARCHITECTUREは、International Business Machines Corporation(米国ニューヨーク州アーモンク)の登録商標である。
別の例では、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるPower Architectureに基づく。Power Architectureの一実施形態は、“Power ISA (TM) Version 2.07B,” International Business Machines Corporation, April 9, 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。POWER ARCHITECTUREは、International Business Machines Corporation(米国ニューヨーク州アーモンク)の登録商標である。
コンピューティング環境は、インテルx86アーキテクチャを含むが、これに限定されない、他のアーキテクチャに基づいてもよい。その他の例も存在する。
図1に示されているように、コンピューティング環境100は、例えば、1つまたは複数のプロセッサまたはプロセッシング・ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に結合するバス18を含んでよいが、これらに限定されない、コンピュータ・システム/サーバ12を含んでいる。
バス18は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、1つまたは複数の任意の種類のバス構造を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(MicroChannel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnect)バスを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:randomaccess memory)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム34を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバス18に接続することができる。下でさらに示され、説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含むことができる。
例えば、一連の(少なくとも1つの)プログラム・モジュール42を含んでいるプログラム/ユーティリティ40がメモリ28に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの何らかの組み合わせは、それぞれネットワーク環境の実装を含んでよい。プログラム・モジュール42は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信することもできる。そのような通信は、入出力(I/O:Input/Output)インターフェイス22を介して行うことができる。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図示されているように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ12と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
1つの例では、プロセッサ16は、命令を実行するために使用される複数の機能コンポーネントを含む。図2に示されているように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント120と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット122と、デコードされた命令を実行するための命令実行コンポーネント124と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント126と、実行された命令の結果を提供するための書き戻しコンポーネント130とを含む。これらのコンポーネントのうちの1つまたは複数は、本発明の態様によれば、本明細書に記載されているように、追加認証データの認証を含む、暗号処理および認証動作136を提供してよい。
プロセッサ16は、一実施形態では、機能コンポーネントのうちの1つまたは複数によって使用される1つまたは複数のレジスタ140も含む。
1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図3を参照して説明される。この例では、コンピューティング環境200は、例えば、1つまたは複数のバス208またはその他の接続あるいはその両方などを介して互いに結合された、ネイティブ中央処理装置(CPU:central processing unit)202、メモリ204、および1つまたは複数の入出力デバイスまたはインターフェイス206あるいはその両方を含む。例として、コンピューティング環境200は、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるPowerPCプロセッサまたはpSeriesサーバ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテルItanium IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、またはその他の企業によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組み合わせを含んでよい。
ネイティブ中央処理装置202は、環境内で処理中に使用される1つまたは複数の汎用レジスタまたは1つまたは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ210を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置202は、メモリ204に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ204に格納されたエミュレータ・コード212を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード212は、z/Architecture以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、pSeriesサーバ、HP Superdomeサーバなど)が、z/Architectureをエミュレートし、z/Architectureに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
エミュレータ・コード212に関連する詳細が、図4を参照してさらに説明される。メモリ204に格納されたゲスト命令250は、ネイティブCPU202のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命令250は、z/Architectureプロセッサ16上で実行するように設計されてよいが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU202上でエミュレートされる。1つの例では、エミュレータ・コード212は、メモリ204から1つまたは複数のゲスト命令250を取得するため、および取得された命令のローカル・バッファリングを必要に応じて提供するための命令フェッチ・ルーチン252を含む。エミュレータ・コード212は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令256に変換するための命令変換ルーチン254も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
さらに、エミュレータ212は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン260を含む。エミュレーション制御ルーチン260は、ネイティブCPU202に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令256の実行は、データをメモリ204からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定された何らかの種類の算術演算または論理演算を実行することを含んでよい。
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置202によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ210を使用して、またはメモリ204内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令250、ネイティブ命令256、およびエミュレータ・コード212は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
本明細書において使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコード、ミリコード、またはマクロコード、あるいはその組み合わせを含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
1つの例では、取得され、変換されて実行されるゲスト命令250は、本明細書に記載された認証命令を含む暗号メッセージである。あるアーキテクチャ(例えば、z/Architecture)の命令が、メモリからフェッチされ、変換され、別のアーキテクチャ(例えば、PowerPC、pSeries、インテルなど)のネイティブ命令256のシーケンスとして表される。その後、これらのネイティブ命令が実行される。
命令の明示的フィールドおよび暗黙的フィールドを含んでいる、認証命令を含む暗号メッセージ、ならびに(ネイティブ・システム内またはエミュレートされたシステム内の)プロセッサによる実行の一実施形態に関連する詳細が本明細書において説明される。本発明の態様によれば、認証命令を含む暗号メッセージは、追加認証データおよびメッセージの両方のメッセージ認証タグを生成する機能を、メッセージの暗号処理と結合する、単一の命令である。
認証命令を含む暗号メッセージの一実施形態が、図5を参照して説明される。1つの例では、認証命令を含む暗号メッセージ300は、認証動作を伴う暗号メッセージを示すためのオペレーション・コード(オペコード)を含むオペコード・フィールド302(例えば、ビット0~15)、少なくとも1つの第1のレジスタ(R)を指定するために使用される第1のレジスタ・フィールド304(例えば、ビット24~27)、少なくとも1つの第2のレジスタ(R)を指定するために使用される第2のレジスタ・フィールド306(例えば、ビット28~31)、および少なくとも1つの第3のレジスタ(R)を指定するために使用される第3のレジスタ・フィールド308(例えば、ビット16~19)を含む。各フィールド304~308は、1つの例では、別々であり、オペコード・フィールドから独立している。さらに、一実施形態では、フィールド304~308は、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合されてよい。
1つの例では、Rフィールドによって指定された偶数番号が付けられたレジスタの内容は、第1のオペランドのアドレスを含む。さらに、RフィールドおよびRフィールドによって指定された偶数と奇数のレジスタ対の内容は、第2のおよび第3のオペランドのアドレスおよび長さをそれぞれ含む。
命令内でエンコードされるR、R、およびRに加えて、命令の1つの実装は、例えば汎用レジスタ0(GR0)および汎用レジスタ1(GR1)を含む、1つまたは複数のインプライド・レジスタを使用する。各レジスタが、図6~12を参照して以下でさらに説明される。
最初に図6を参照して、汎用レジスタ0(320)の書式の一実施形態が説明される。1つの例では、汎用レジスタ0は、フラグ(F:flags)フィールド322(例えば、ビット48~55)、変更子(M:modifier)制御324(例えば、ビット56)、および機能コード(FC:function code)フィールド326(例えば、ビット57~63)を含む。各フィールドが、以下でさらに説明される。
フラグ(F)322:汎用レジスタ0のビット位置48~55は、機能の動作を制御する8ビットのフラグ・フィールドを含む。フラグ・フィールドは、汎用レジスタ0のビット57~63内の機能コードが暗号処理機能を指定するとき(すなわち、機能コードがゼロ以外であるとき)に、意味を持つ。1つの例では、フラグ・フィールドの書式は次のとおりである。
予備:フラグ・フィールドのビット0~4は予備であり、ゼロを含むべきである。そうでない場合、プログラムは将来、互換性を維持して動作しなくなることがある。
ハッシュ・サブキーによって提供される(HS:Hash Subkey Supplied)フラグ:フラグ・フィールドのビット5は、パラメータ・ブロック(下で説明される)内のハッシュ・サブキー(H:hash subkey)フィールドが有効なハッシュ・サブキーを含んでいるかどうかを示す。HSフラグは、機能コードがゼロ以外であり、機能が暗号化された暗号鍵を使用しない場合に意味を持つ。HSフラグは、暗号化された暗号鍵を使用する機能では、無視される。
最後の追加認証データ(LAAD:Last Additional Authenticated Data)フラグ:フラグ・フィールドのビット6は、第3のオペランドの内容に資格を与える。LAADフラグが1である場合、第3のオペランドが最後の一連の追加認証データ・ブロックを指定していることを示す。LAADフラグが0である場合、第3のオペランドが最後の一連の追加認証データ・ブロックを指定していないことを示す。
最後の平文/暗号文(LPC:Last Plaintext/Ciphertext)フラグ(本明細書では、最後のテキスト制御とも呼ばれる):フラグ・フィールドのビット7は、第2のオペランドの内容に資格を与える。LPCフラグが1である場合、第2のオペランドが最後の一連の平文または暗号文ブロックを指定していることを示す。LPCフラグが0である場合、第2のオペランドが最後の一連の平文または暗号文ブロックを指定していないことを示す。
LPCフラグが1、かつLAADフラグが0の場合、指定例外が認識され、動作が抑制される。
変更子(M)324:汎用レジスタ0のビット57~63内の機能コードがゼロ以外である場合、汎用レジスタ0のビット位置56は、暗号化または暗号解読が機能によって実行されることになっていることを示す変更子制御を含む。M制御がゼロである場合、機能は第2のオペランドの暗号化を実行し、M制御が1である場合、機能は第2のオペランドの暗号解読を実行する。機能コードがゼロである場合、M制御は無視される。
機能コード(FC)326:汎用レジスタ0のビット位置57~63は、機能コードを含む。命令の動作において、機能コードによって指定された機能が実行される。認証を含む暗号メッセージに割り当てられる機能コードの例としては、以下が挙げられる。
Figure 0007116050000001
汎用レジスタ0のビット0~31は無視される。汎用レジスタ0のビット32~47は予備であり、ゼロを含むべきである。そうでない場合、プログラムは将来、互換性を維持して動作しなくなることがある。
問い合わせ機能(例えば、機能コード0)は、他の機能の利用可能性を示す手段を提供する。問い合わせ機能の場合、汎用レジスタR、R、R+1、R、およびR+1の内容は無視される。
問い合わせ機能以外の機能の場合(すなわち、ゼロ以外の機能コードを有する機能の場合)、メッセージ認証タグが、第3のオペランドの内容から、およびM制御が0または1のいずれであるかに応じて、得られた第1のオペランドまたは第2のオペランドのいずれかの内容から、形成される。M制御に基づいて、パラメータ・ブロック(下で説明される)からの暗号鍵およびカウンタ値を使用して、第2のオペランドが暗号化されるか、または暗号解読され、その結果が第1のオペランドの位置に配置される。
図7に示されているように、汎用レジスタ1(330)は、ストレージ内のパラメータ・ブロックの左端のバイトの論理アドレス332を含む。24ビット・アドレス指定モードでは、汎用レジスタ1のビット位置40~63の内容はアドレスを構成し、ビット位置0~39の内容は無視される。31ビット・アドレス指定モードでは、汎用レジスタ1のビット位置33~63の内容はアドレスを構成し、ビット位置0~32の内容は無視される。64ビット・アドレス指定モードでは、汎用レジスタ1のビット位置0~63の内容はアドレスを構成する。
図8を参照すると、Rフィールド(304)は、汎用レジスタを指定し、偶数番号が付けられたレジスタを指定することになっており、そうでない場合、指定例外が認識される。RおよびRフィールドはそれぞれ、偶数と奇数の汎用レジスタ対を指定し、それぞれ、偶数番号が付けられたレジスタを指定することになっており、そうでない場合、指定例外が認識される。RフィールドがRフィールドまたはRフィールドのいずれかと同じレジスタを指定する場合も、指定例外が認識される。
第1、第2、第3のオペランドの左端のバイトの位置は、汎用レジスタR304(図8)、R306(図9)、およびR308(図11)の内容によってそれぞれ指定される。第2のオペランドの位置のバイト数は、汎用レジスタR+1(370、図10)内で指定される。第1のオペランドは、第2のオペランドと同じ長さである。第3のオペランドの位置のバイト数は、汎用レジスタR+1(390、図12)内で指定される。
動作の一部として、汎用レジスタR(380、図11)内のアドレス382が、処理された第3のオペランドのバイト数によってインクリメントされ、汎用レジスタR+1(390)内の長さ392が、同じ数によってデクリメントされ、さらに、汎用レジスタRおよびR内のアドレス342、362が、処理された第2のオペランドのバイト数によってそれぞれインクリメントされ、汎用レジスタR+1(370)内の長さ372が、同じ数によってデクリメントされる。アドレスおよび長さの形成および更新は、アドレス指定モードによって決まる。
例えば、24ビット・アドレス指定モードでは、汎用レジスタR、R、およびR内のビット位置40~63の内容が、第1、第2、および第3のオペランドのアドレスをそれぞれ構成し、ビット位置0~39の内容が無視され、更新されたアドレスのビット40~63が、汎用レジスタR、R、およびR内の対応するビットを置き換え、更新されたアドレスのビット位置40からの繰り上げが無視され、汎用レジスタR、R、およびRのビット位置32~39の内容が0に設定される。31ビット・アドレス指定モードでは、汎用レジスタR、R、およびR内のビット位置33~63の内容が、第1、第2、および第3のオペランドのアドレスをそれぞれ構成し、ビット位置0~32の内容が無視され、更新されたアドレスのビット33~63が、汎用レジスタR、R、およびR内の対応するビットを置き換え、更新されたアドレスのビット位置33からの繰り上げが無視され、汎用レジスタR、R、およびRのビット位置32の内容が0に設定される。64ビット・アドレス指定モードでは、汎用レジスタR、R、およびRのビット位置0~63の内容が、第1、第2、および第3のオペランドのアドレスをそれぞれ構成し、更新されたアドレスのビット0~63が、汎用レジスタR、R、およびRの内容を置き換え、ビット位置0からの繰り上げが無視される。
24ビット・アドレス指定モードおよび31ビット・アドレス指定モードの両方では、汎用レジスタR+1のビット位置32~63の内容が、第1および第2のオペランド内のバイト数を指定する32ビット符号なし2進整数を形成し、ビット位置0~31の内容が無視され、更新された値のビット32~63が、汎用レジスタR+1内の対応するビットを置き換える。64ビット・アドレス指定モードでは、汎用レジスタR+1のビット位置0~63の内容が、第1および第2のオペランド内のバイト数を指定する64ビット符号なし2進整数を形成し、更新された値が、汎用レジスタR+1の内容を置き換える。
24ビット・アドレス指定モードおよび31ビット・アドレス指定モードの両方では、汎用レジスタR+1のビット位置32~63の内容が、第3のオペランド内のバイト数を指定する32ビット符号なし2進整数を形成し、ビット位置0~31の内容が無視され、更新された値のビット32~63が、汎用レジスタR+1内の対応するビットを置き換える。64ビット・アドレス指定モードでは、汎用レジスタR+1のビット位置0~63の内容が、第3のオペランド内のバイト数を指定する64ビット符号なし2進整数を形成し、更新された値が、汎用レジスタR+1の内容を置き換える。
24ビット・アドレス指定モードまたは31ビット・アドレス指定モードでは、汎用レジスタR、R、R+1、R、およびR+1のビット位置0~31の内容は変更されない。
アクセス・レジスタ・モードでは、アクセス・レジスタ1、R、R、およびRが、パラメータ・ブロック、第1のオペランド、第2のオペランド、および第3のオペランドを含んでいるアドレス空間をそれぞれ指定する。
各機能が、以下で説明される。
問い合わせ(機能コード0)
この機能は、例えばパラメータ・ブロックに格納された128ビット状態ワードを含んでいる、パラメータ・ブロックを使用する。このフィールドのビット0~127は、認証命令を含む暗号メッセージの機能コード0~127にそれぞれ対応する。ビットが1である場合、対応する機能がインストールされ、そうでない場合、その機能はインストールされない。
問い合わせ機能の実行が完了したときに、条件コード0が設定され、条件コード1、2、および3は、この機能には適用できない。
ガロア/カウンタ・モード(GCM)-AES機能(選択的なゼロ以外の機能コード)
一実施形態では、次の6つのGCM-AES機能が存在する。
* GCM-AES-128(機能コード18)
* GCM-AES-192(機能コード19)
* GCM-AES-256(機能コード20)
* GCM-暗号化 AES-128(機能コード26)
* GCM-暗号化 AES-192(機能コード27)
* GCM-暗号化 AES-256(機能コード28)
これらの機能はパラメータ・ブロックも使用し、GCM-AES機能に使用されるパラメータ・ブロックの一例が、図13を参照して説明される。1つの例では、パラメータ・ブロック400は以下を含む。
予備:パラメータ・ブロックのバイト0~11は予備である。予備フィールドは、命令の予測不可能な値を含むことがある。
カウンタ値(CV:Counter Value)402:パラメータ・ブロックのバイト12~15は、例えば32ビット2進整数を含む。初期カウンタ値412(パラメータ・ブロックのバイト64~79内のJ)の左端の12バイトが、CVフィールドの内容の右側に連結され、下で説明されるGCTR(ガロア・カウンタ)機能によって使用される初期カウンタ・ブロック(ICB:initial counter block)を形成する。
命令の実行ごとに、CPUは、パラメータ・ブロック内のCVフィールドを、処理された第2のオペランドのブロックの数だけインクリメントする。CVフィールドのビット位置0からの繰り上げは無視される。
タグ(T:Tag)404:パラメータ・ブロックのバイト16~31は、メッセージ認証タグ・フィールドを含む。
第3のオペランドのブロックごと、および得られた第1のオペランド(Mが0である場合)のブロックごとまたは第2のオペランド(Mが1である場合)のブロックごとに、CPUは、タグ・フィールドを、下で説明されるガロア・ハッシュ(GHASH:Galois Hash)機能の入力および出力の両方として使用する。すべての追加認証データおよび暗号文がハッシュされた場合、TAADL408フィールドおよびTPCL410フィールド(下で説明される)の連結が、GHASHを使用してハッシュされ、ハッシュの結果が、GCTR機能を使用して暗号化されて、最後のタグ(T)フィールドをパラメータ・ブロック内に生成する。
ハッシュ・サブキー(H)406:GCM-AES機能の場合、パラメータ・ブロックのバイト32~47は、例えば、命令のGHASH機能によって使用される128ビット・ハッシュ・サブキーを含む。ハッシュ・サブキーによって提供されるフラグ(HS、汎用レジスタ0のビット53)が0である場合、CPUは、暗号鍵(K:key)を使用して、2進ゼロの128ビットを暗号化することによって、ハッシュ・サブキーを計算し、ハッシュ・サブキーをHフィールドに格納し、HSフラグを1に設定する。HSフラグが1である場合、CPUは、Hフィールド内の、プログラムによって提供されるハッシュ・サブキーを使用し、この場合、HフィールドおよびHSフラグは変更されない。
GCM-暗号化-AES機能の場合、パラメータ・ブロックのバイト32~47は予備であり、ゼロを含むべきである。そうでない場合、プログラムは将来、互換性を維持して動作しなくなることがある。この場合、CPUは、暗号解読された暗号鍵(K)を使用して、2進ゼロの128ビットを暗号化することによって、ハッシュ・サブキーを計算し、この場合、HフィールドおよびHSフラグは変更されない。
追加認証データの全長(TAADL:Total Additional Authenticated Data Length)408:パラメータ・ブロックのバイト48~55は、処理されているメッセージの追加認証データ全体の全長をビット単位で指定する64ビット符号なし2進整数を含む。
平文または暗号文の全長(TPCL:Total Plaintext or Ciphertext Length)410:パラメータ・ブロックのバイト56~63は、処理されているメッセージの平文または暗号文全体の全長をビット単位で指定する64ビット符号なし2進整数を含む。
初期カウンタ値(J)412:パラメータ・ブロックのバイト64~79は、(a)GCTR機能によって使用される初期カウンタ・ブロックの左端の96ビットを提供するため、および(b)最後の認証タグ(T)フィールドを暗号化するために使用される、128ビット初期カウンタ値を含む。
暗号鍵(K)414:暗号化動作および暗号解読動作において使用される暗号鍵は、パラメータ・ブロックのバイト80から始まる。パラメータ・ブロック内の鍵フィールドのサイズおよびオフセットは、下に示されているように、機能コードによって決まる。
Figure 0007116050000002
AESラッピング鍵検証パターン(WKVP:Wrapping Key Verification Pattern)418:GCM-暗号化-AES機能(コード26~28)の場合、パラメータ・ブロック内の鍵の直後の32バイトは、AESラッピング鍵検証パターン(WKVP)を含む。
GCM-AES機能(コード18~20)の場合、WKVPフィールドは、パラメータ・ブロック内に存在しない。
一実施形態では、GCM-AES機能の場合、追加認証データの認証ならびにメッセージの暗号処理および認証は、動作のシーケンスを含む。汎用レジスタ0内のフラグおよび機能コードによって決まる、実行される動作のシーケンスは、例えば、以下を含む。
1.ラッピング鍵検証:このプロセスは、命令の実行ごとに1回実行され、暗号化されたラッピング鍵を使用する機能が鍵の正しいバージョンを使用することを保証する。GCM-暗号化-AES機能(機能コード26~28)の場合、32バイトのWKVPフィールドの内容が、AESラッピング鍵検証パターン・レジスタの内容と比較される。それらが一致しない場合、第1のオペランドおよびパラメータ・ブロックの位置は変更されず、条件コード(例えば、1)を設定することによって、動作が完了される。それらが一致する場合、パラメータ・ブロックの鍵フィールド414の内容が、AESラッピング鍵を使用して暗号解読され、機能によって使用される128ビットの暗号鍵(K414)を取得するが、パラメータ・ブロックの鍵フィールドは変更されない。暗号化された鍵(コード18~20)を使用しないGCM-AES機能の場合、ラッピング鍵検証は実行されない。
2.ハッシュ・サブキーの計算:このプロセスは、128ビットのゼロの値を受け取り、暗号処理アルゴリズム(例えば、AES暗号化)を使用して暗号処理する。ラップされた鍵を使用しない機能の場合、実装によって、プログラムが事前に計算されたハッシュ・サブキーを指定できるようにする。ハッシュ・サブキーは、GHASH処理において使用され、結果としてメッセージ認証タグを生成する。
GCM-AES機能(機能コード18~20)の場合、以下が適用される。
* ハッシュ・サブキーによって提供されるフラグ(HS、汎用レジスタ0のビット53)が0である場合、AESアルゴリズムを使用して、128個の2進ゼロのブロックが暗号化される。図14に示されているように、AESアルゴリズム500は、パラメータ・ブロックからの鍵(K)フィールド414を使用する。得られた128ビットのハッシュ・サブキー504がパラメータ・ブロックのHフィールド406に配置され、HSフラグが汎用レジスタ0内で1に設定される。
* HSフラグが1である場合、パラメータ・ブロック内のHフィールド406がハッシュ・サブキーとして使用される。この場合、HフィールドおよびHSフラグは変更されない。
GCM-暗号化-AES機能(機能コード26~28)の場合、HSフラグは無視される。暗号解読された鍵(K)を使用する図14に示されたAESアルゴリズムを使用して、128個の2進ゼロのブロックが暗号化される。この場合、パラメータ・ブロックのHフィールド406およびHSフラグは変更されない。
3.追加認証データのハッシュ処理:いずれかの追加認証データがGHASHアルゴリズムによって処理されて、部分的なメッセージ・タグを形成する。汎用レジスタR+1内の第3のオペランドの長さがゼロ以外である場合、追加認証データのハッシュ処理が実行される。この場合、命令のRのオペランドによって指定された偶数番号が付けられた汎用レジスタは、GHASHアルゴリズムを使用したメッセージ認証タグの計算に使用されるデータを含んでいるストレージ位置のアドレスを含む。第3のオペランドのブロックに加えて、GHASH機能は、パラメータ・ブロック内のハッシュ・サブキー406およびタグ・フィールド404を入力値として使用する。
処理が第3のオペランドの左端から開始されて、1ブロックずつ右に進むかのように、結果が取得される。追加認証データの1つまたは複数の完全な16バイト・ブロックが残っている場合、処理は図15に示されているようになり、図15において、510での動作はビット単位の排他的ORであり、512での動作はGF(2128)上のGCM乗算演算である。
1つの実装では、次のいずれかが真である場合に、追加認証データのハッシュ処理が終了する。
* 第3のオペランドの長さ未満の、CPUによって決定されたブロック数が処理された。この場合、それまでに計算されたメッセージ認証が、パラメータ・ブロックのTフィールド404に配置され、汎用レジスタRが、処理された第3のオペランドのバイト数だけインクリメントされ、汎用レジスタR+1が、同じ量だけデクリメントされ、例えば条件コード3を設定することによって、命令が完了する。
* 最後の追加認証データ・フラグ(LAAD、汎用レジスタ0のビット54)が0であり、第3のオペランドに残っているバイトの数が16未満である。この場合、それまでに計算されたメッセージ認証タグが(もしあれば)、パラメータ・ブロックのTフィールド404に配置され、汎用レジスタRが、処理された第3のオペランドのバイト数だけ(もしあれば)インクリメントされ、汎用レジスタR+1が、同じ量だけデクリメントされ、例えば条件コード2を設定することによって、命令が完了する。
* LAADフラグが1であり、第3のオペランドに残っているバイトの数が1~15の範囲内である。この場合、以下が実行される。
- 残っている短いブロックのコピーの右側に十分な2進ゼロが埋められ、GHASHを使用してハッシュされる完全なブロックを形成する。
- 汎用レジスタRが、処理された第3のオペランドのバイト数だけインクリメントされ、汎用レジスタR+1内の第3のオペランドの長さが0に設定される。
第3のオペランドの最後のブロックの処理は、図16に示されているようになる。
* LAADフラグが1であり、第3のオペランドに残っているバイトの数が0である。この場合、命令が、例えば条件コード3を伴って完了するのか、それとも処理が、第2のオペランドの暗号処理およびハッシュ処理を続行するのかは、下で説明されているように、モデルに依存する。
汎用レジスタR+1内の第3のオペランドの長さが最初に0であり、LAADフラグが1である場合、追加認証データのハッシュ処理は実行されない。この場合、パラメータ・ブロック内のTフィールド404がフェッチされて、変更されずに再び格納されるかどうかは、モデルに依存する。
4.メッセージの暗号処理およびハッシュ処理:これは、メッセージを暗号化または暗号解読し、暗号化されたデータに基づいてメッセージ・タグを計算するプロセスである。Mビット(汎用レジスタ0のビット56)に応じて、第2のオペランドの各ブロックが、GCTR機能を使用して暗号化されるか、または暗号解読される。暗号化または暗号解読された各結果は、第1のオペランドの位置に配置され、暗号化されたオペランドは、GHASH機能を使用してハッシュされる。GCTR処理およびGHASH処理の結合が、GCM機能として説明される。
概念的には、図17および図18に示されているように、処理が第1および第2のオペランドの左端から開始されて、1ブロックずつ右に進むかのように、結果が取得される。しかし、モデルに応じて、動作のユニットは、第1および第2のオペランドの複数のブロックを並列に処理してよく、したがって、各ブロックは、必ずしも左から右への順序でアクセスされなくてよい。さらに、複数のアクセスが1つのブロックに対して行われてよく、暗号化動作の場合、第1のオペランドのブロックが、格納された後に、再びフェッチされてよい。
GCTR機能は、初期カウンタ値(J)412の左端の12バイトを左側に、4バイトのカウンタ(CV)402を右側に連結して形成された16バイトの初期カウンタ・ブロック(ICB)を使用する。GCTRは、鍵フィールドも使用する(GCM-AES機能の場合、パラメータ・ブロックから直接使用するか、またはGCM-暗号化-AES機能の場合、暗号解読された鍵を使用する)。GCTRによって暗号処理されるブロックごとに、カウンタ値(CV)が1だけインクリメントされ、カウンタ値のビット位置0からの繰り上げが無視される。その後、GCTR機能は、インクリメントされたカウンタ値と連結されたJの左端の12バイトから形成された16バイトのカウンタ・ブロック(CB:counter block)を使用する。
GHASH機能は、暗号化されたデータ(すなわち、Mが0である場合、暗号化された第1のオペランドの結果、またはMが1である場合、第2のオペランド)、パラメータ・ブロックから、または先行するステップからのタグ(T)フィールド、およびハッシュ・サブキーを使用する。
Mビットが0である場合(すなわち、第2のオペランドが暗号化されている場合)、完全なブロックのGCM処理は、図17に示されているようになる。Mビットが1である場合(すなわち、第2のオペランドが暗号解読されている場合)、完全なブロックのGCM処理は、図18に示されているようになる。
1つの例では、次のいずれかが真になるまで、暗号化または暗号解読のいずれかの暗号処理およびハッシュ処理が継続する。
* 第2のオペランドの長さ未満の、CPUによって決定されたブロック数が処理された。この場合、現在のカウンタ値がパラメータ・ブロックのCVフィールド402に配置され、それまでに計算されたメッセージ認証タグが、パラメータ・ブロックのTフィールド404に配置され、汎用レジスタRおよびRが、処理された第2のオペランドのバイト数だけインクリメントされ、汎用レジスタR+1が、同じ量だけデクリメントされ、例えば条件コード3を設定することによって、命令が完了する。
* 最後の平文/暗号文フラグ(LPC、汎用レジスタ0のビット55)が0であり、第2のオペランドに残っているバイトの数が16未満である。この場合、現在のカウンタ値がパラメータ・ブロックのCVフィールド402に配置され、それまでに計算されたメッセージ認証タグが(もしあれば)、パラメータ・ブロックのTフィールド404に配置され、汎用レジスタRおよびRが、処理された第2のオペランドのバイト数だけ(もしあれば)インクリメントされ、汎用レジスタR+1が、同じ量だけデクリメントされ、例えば条件コード2を設定することによって、命令が完了する。
* LPCフラグが1であり、第2のオペランドに残っているバイトの数が1~15の範囲内である。この場合、以下が実行される。
- 第2のオペランドの残りのバイトのコピーの右側に十分な2進ゼロが埋められて、GCTRアルゴリズムを使用して暗号処理される完全なブロックを形成し、その結果得られる暗号化または暗号解読されたブロックの左端のバイトが、第1のオペランドの位置に配置される。第1のオペランドの位置に配置されるバイトの数は、第2のオペランドに残っているバイトの数(つまり、16未満)と同じである。
- その後、GHASHアルゴリズムが暗号文に適用される。Mが0である場合、GHASHアルゴリズムへの入力は、完全なブロックを形成するために右側に十分な2進ゼロが埋められた、第1のオペランドの位置に格納された短いブロックのコピーを含む。Mが1である場合、GHASHアルゴリズムへの入力は、GCTRアルゴリズムへの入力(すなわち、完全なブロックを形成するために右側に十分な2進ゼロが埋められた、第2のオペランドの残りのバイトのコピー)と同じである。
- 現在のカウンタ値が、パラメータ・ブロックのCVフィールド402に配置され、得られたタグ値がパラメータ・ブロック内に配置され、汎用レジスタRおよびRが、処理された第2のオペランドのバイト数だけインクリメントされ、汎用レジスタR+1が0に設定される。
第2のオペランドの最後のブロックのGCM処理は、図19に示されているようになる。
* LPCフラグが1であり、第2のオペランドに残っているバイトの数が0である。この場合、命令が、例えば条件コード3を伴って完了するのか、それとも、下で説明されているように最後のメッセージ認証タグのハッシュ処理および暗号化の処理を続行するのかは、モデルに依存する。
5.最後のメッセージ認証タグのハッシュ処理および暗号化:このプロセスは、追加認証データおよびメッセージの全長をビット単位で受け取り、それにGHASHアルゴリズムを適用し、その後、暗号化された初期カウンタ値とマージして、最終的なメッセージ認証タグを形成する。パラメータ・ブロックからの64ビットの追加認証データの全長(TAADL)フィールドおよび平文または暗号文の全長(TPCL)フィールドの連結を含んでいる128ビットの値が、GHASH機能を使用してハッシュされる。GHASH機能は、連結された長さフィールド、暗号処理およびハッシュ処理の動作において計算されたタグ(T)フィールド、およびハッシュ・サブキーを使用する。
次に、GHASHの得られた128ビットの出力が、GCTRアルゴリズムによって処理される。暗号処理およびハッシュ処理の動作とは異なり、GCTRへの入力カウンタは、パラメータ・ブロックからの初期カウンタ・ブロック(J)フィールド412である、ということに注意する。得られた128ビット値が、パラメータ・ブロック内のタグ(T)フィールド404を置き換え、命令が、例えば条件コード0を伴って完了する。図20は、最後のタグ値のハッシュ処理および暗号化の一実施形態を示している。
一実施形態では、命令を発行するプログラムは、正確なTAADLおよびTPCLの値を(例えば、ビット単位で)提供する役割を担う。さらに別の実施形態では、プログラムは、メッセージの処理の開始時に、TAADLおよびTPCLの値を0に設定してよく、CPUは、命令の1回または複数回の反復される実行がメッセージを処理するときに、これらのフィールドを更新できる。
命令に関連するその他の詳細を、以下に示す。
部分的な完了をもたらす条件(例えば、条件コード3)の検出は、モデルに応じて変わり、命令が実行されるたびに異なる番号であってよい。CPUによって決定されたブロック数は、通常、ゼロ以外である。特定の異常な状況では、この数は0であってよく、進行しないで、条件コード(例えば、3)が設定されてよい。ただし、CPUは、この進行しないケースの無限の再発を防ぐ。
次のいずれかが真である場合、結果は予測不可能である。
* 第3のオペランドが、追加認証データの処理中に更新されることのあるパラメータ・ブロックのいずれかの部分と破壊的に重複する。
* LAADフラグが1であり、次のいずれかが真である。
- 第2のオペランドが、暗号処理およびハッシュ処理中に更新されることのあるパラメータ・ブロックのいずれかの部分と破壊的に重複する。
- 第1のオペランドが、暗号処理およびハッシュ処理中にアクセスされることのあるパラメータ・ブロックのいずれかの部分と破壊的に重複する。
- 第1のオペランドが第2のオペランドと破壊的に重複するが、これらのオペランドが同じ位置を指定しない。
処理が左から右に向かって実行されると仮定して、データがある位置に移動された後に、その位置がソースとして使用される場合に、オペランドは、破壊的に重複すると言われる。
命令によって設定されるさまざまな条件コードの1つの例、およびLAADフラグおよびLPCフラグに基づいて得られる第2および第3のオペランドの長さを以下に示す。
Figure 0007116050000003

説明:
- 適用されない
† 汎用レジスタR1、R2、およびR3内の第1、第2、および第3のオペランドのアドレスも変化しない。
‡ これらの条件(CC0の条件と同一である)に対してCC3が設定されるかどうかは、モデルに依存する。
CC 条件コード
LAAD 最後の追加認証データ・フラグ、汎用レジスタ0のビット54
LPC 最後の平文/暗号文フラグ、汎用レジスタ0のビット55
第3のOpL 第3のオペランドの長さ
第2のOpL 第2のオペランドの長さ
命令によってCVフィールド、Tフィールド、およびHフィールドのみが格納されるとしても、パラメータ・ブロック内のいずれかの位置に関して、格納タイプ・アクセス例外(Store-type access exceptions)が認識されることがある。
第1のオペランドの位置に関して、および格納されるパラメータ・ブロックの部分に関して、PERストレージ変更イベントが認識されることがある。第1、第2、および第3のオペランドの位置に関して、および(パラメータ・ブロックの予備フィールドを含んでいる)パラメータ・ブロックに関して、PERゼロ・アドレス検出イベントが認識されることがある。これらの位置のうちの1つまたは複数に関してPERイベントが検出された場合、PERアクセス識別(PAID:PER access identification)およびPER ASCE ID(AI)においてどの位置が識別されるかは、予測不可能である。
パラメータ・ブロックに関してPERストレージ変更イベントが認識された場合、処理された第1、第2、または第3のオペランドの位置のバイト数は、予測不可能である。第1のオペランドの位置に関してストレージ変更PERイベントが認識された場合、イベントが報告される前に、4K未満の追加バイトが第1のオペランドの位置に格納される。
第3のオペランドの長さが最初に0であるときに、第3のオペランドはアクセスされず、汎用レジスタR3内の第3のオペランドのアドレスおよび汎用レジスタR+1内の第3のオペランドの長さは変更されない。第2のオペランドの長さが最初に0であるときに、第2のオペランドはアクセスされず、汎用レジスタR内の第2のオペランドのアドレスおよび汎用レジスタR+1内の第2のオペランドの長さは変更されない。ただし、第2および第3のオペランドの長さが両方とも0である場合でも、パラメータ・ブロックはアクセスされてよい。
フィールドおよびRフィールドの内容が同じである場合、指定されたレジスタの内容が、処理されたバイト数の倍数ではなく、処理されたバイト数だけインクリメントされる。
このCPU、他のCPU、およびチャンネル・プログラムによって観察されるとき、パラメータ・ブロックおよびストレージ・オペランドへの参照は、多重アクセス参照であってよく、これらのストレージ位置へのアクセスは、必ずしもブロック・コンカレントではなく、これらのアクセスまたは参照のシーケンスは定義されない。
特定の異常な状況では、処理された第1、第2、および第3のオペランドの最後のユニットを反映するようにレジスタを更新しないで、条件コード3を設定することによって、命令の実行が完了してよい。この場合に処理されるユニットのサイズは、状況およびモデルに応じて変わるが、処理されていて、報告されていない第1および第2のオペランドの部分がストレージ内で重複せず、処理されていて、報告されていない第1および第3のオペランドの部分がストレージ内で重複しないように、制限される。いかなる場合でも、該当する場合は、処理されたすべての第1のオペランドの位置に関して、変更ビットが設定され、PERストレージ変更イベントが報告される。
ラッピング鍵検証パターン・レジスタとの暗号化された暗号鍵の比較を実行する機能の場合、比較の結果が不一致になり、各オペランドの長さがゼロ以外であるときに、第1、第2、および第3のオペランドに関してアクセス例外およびPERゼロ・アドレス検出イベントが認識されるかどうかは、予測不可能である。
命令の1回の実行において処理される大きさよりも大きいオペランドの部分に関して、アクセス例外が報告されることがあるが、オペランドの長さを超える位置に関してアクセス例外は認識されず、処理されている現在の位置から4Kバイトよりも大きく超える位置に関しても、アクセス例外は認識されない。
1つの例では、次のいずれかが発生した場合に、指定例外が認識され、他の動作は実行されない。
1.汎用レジスタ0のビット57~63が、割り当てられていないか、またはインストールされていない機能コードを指定する。
2.Rフィールド、Rフィールド、またはRフィールドが、奇数番号が付けられたレジスタまたは汎用レジスタ0を指定する。
3.Rフィールドが、RフィールドまたはRフィールドのいずれかと同じレジスタを指定する。
4.機能コードがゼロ以外であり、LPCフラグが1である(平文または暗号文の最後のブロックが処理されていることを示す)が、LAADフラグが0(一部の追加認証データが処理されていないことを示す)である。
生成される条件コードの例:
0 正常完了
1 検証パターンとの不一致
2 不完全な処理(LAADフラグが0であるときに、残っている第3のオペランドの長さが、例えば16未満であるか、またはLPCフラグが0であるときに、残っている第2のオペランドの長さが、例えば16未満である)
3 部分的な完了(モデルに依存する制限を超えた)
プログラム例外の例として、以下が挙げられる。
* アクセス(オペランド2、オペランド3、パラメータ・ブロックのフィールドのフェッチ、オペランド1、カウンタ値、ハッシュ・サブキー、タグの格納)
* 演算(メッセージ・セキュリティ・アシスト例外8がインストールされていない場合)
* 指定
* トランザクション制約
さらに、実行優先度に関する例外/完了条件の例として、以下が挙げられる。
1.~7.一般的なケースに関する、プログラム割込み条件の優先度と同じ優先度を持つ例外。
8.無効な機能コードまたは無効なレジスタ番号に起因する指定例外。
9.LAADフラグが0であるときに、LPCフラグが1であることに起因する指定例外(機能コードがゼロ以外である場合に適用できる)。
10.A.1 パラメータ・ブロックへのアクセスに関するアクセス例外。
10.A.2.検証パターンとの不一致に起因する条件コード1。
10.B 第1、第2、または第3のオペランドへのアクセスに関するアクセス例外。
11.第3のオペランドの部分的な処理に起因する条件コード3。
12.LAADフラグが0であるときに、残っている第3のオペランドの長さが例えば16未満であることに起因する条件コード2。
13.第2のオペランドの部分的な処理に起因する条件コード3。
14.LPCフラグが0であるときに、残っている第2のオペランドの長さが例えば16未満であることに起因する条件コード2。
15.正常完了に起因する条件コード0。
さらに、1つまたは複数の実施形態では、以下が適用される。
プログラムは、個々のメッセージを処理するときに、1つの例では、パラメータ・ブロック内の次のフィールドを最初に設定し、条件コード(例えば、0)を伴って命令が完了するまで、これらのフィールドを変更せず、そうしないと、結果がGCM規格に従わない。
a. カウンタ値(CV):CVフィールドは、初期カウンタ値(J)フィールドの右端の4バイトを使用して初期化される。
b. タグ(T):タグ・フィールドは、0に初期化される。
c. ハッシュ・サブキー(H):KMA-GCM-AES機能(コード18~20)の場合、以下が適用される。
* HSフラグが1である場合、プログラムは、事前に計算されたハッシュ・サブキーをHフィールドに提供する。サブキーは、AESアルゴリズムを使用して暗号化された、例えば16バイトの0を含む。
* HSフラグが0である場合、CPUは、AESアルゴリズムおよびパラメータ・ブロック内の鍵フィールドを使用して、例えば16バイトの0を暗号化し、その結果をHフィールドに格納し、HSフラグを1に設定する。
KM-暗号化-AES機能(コード26~28)の場合、CPUは、ハッシュ・サブキーを計算し、HフィールドおよびHSフラグは変更されない。
d. 初期カウンタ値(J):初期カウンタ値は、プログラムによって提供される初期化ベクトル(IV:initialization vector)から生成される。プログラムが例えば96ビットのIVを使用する場合、プログラムは、そのIVをJフィールドの左端の12バイトに格納し、16進数の00000001をJフィールドの右端のバイトに格納する。プログラムが異なる長さを有するIVを使用する場合、プログラムは、GHASHアルゴリズムを使用して、IVの例えば16バイトのハッシュ値をJフィールドに提供する。
e. 鍵値(K)およびラッピング鍵検証パターン(WKaVP):個々のメッセージを適切に暗号処理するために、鍵を、命令のすべての実行で同じにする。KM-暗号化-AES機能の場合、ラッピング鍵検証パターン・フィールドも、変更されない。
最後の平文または暗号文のブロックを処理するとき(すなわち、LPCフラグが1であるとき)、パラメータ・ブロック内の追加認証データの全長(TAADL)フィールドおよび平文/暗号文の全長(TPCL)フィールドが、メッセージ全体の各追加認証データおよび平文または暗号文のビット単位の全長を含む。
プログラムは、メッセージの信頼性を保証するために、暗号解読されたメッセージのハッシュ・タグを、暗号化されたときのメッセージのハッシュ・タグと比較する役割を担う。
LAADフラグおよびLPCフラグは、命令の1回の実行でメッセージの一部の構成要素を使用できない場合に、メッセージを暗号処理してハッシュできるようにする手段を提供する。例えば、メッセージの平文または暗号文の部分が、複数のディスクまたはテープのレコードにまたがっていて、メッセージの一部のブロックがストレージに読み取られなかった場合、プログラムは、LPCフラグが0に設定された命令を発行することによって、メッセージの前のブロックを処理することができる。メッセージの最後の平文または暗号文のブロックを使用できる場合、プログラムは、LPCフラグが1に設定された命令を発行することによって、メッセージの暗号処理を完了できる。
LAADフラグまたはLPCフラグのいずれかまたは両方が0であることに起因して、条件コード2が設定された場合、オペランドのアドレスおよび長さを含んでいる汎用レジスタおよびパラメータ・ブロックが、それまでの進行を示すように更新される。ただし、(プログラムが単に命令に分岐して戻り、動作を続行できる)条件コード3とは異なり、プログラムは、必要に応じて命令に分岐して戻る前に、オペランドのアドレスおよび長さ、ならびにLAADフラグおよびLPCフラグを更新する役割を担う。条件コード2に応答してプログラムが単に命令に分岐して戻る場合、1つの例では、非生産的なプログラムのループが発生する。
条件コード3が設定された場合、プログラムが単に命令に分岐して戻り、動作を続行できるように、オペランドのアドレスおよび長さを含んでいる汎用レジスタおよびパラメータ・ブロックが、通常は更新される。
ガロア/カウンタ・モードのさまざまな機能に関するその他の詳細が、下で説明される。これらは例に過ぎず、U.S. National Institute of Science and Technology (NIST) Special Publication 800-38D, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMACに記載されている。変形が行われてよく、あるいはガロア/カウンタ・モードまたはその他の暗号モードあるいはその両方に関連するその他の機能が使用されてよく、あるいはその両方が行われてよい。
以下の機能を理解するために、次のシンボルが説明される。
変数:
A 追加認証データ。
C 暗号文。
H ハッシュ・サブキー。
ICB 初期カウンタ・ブロック。
IV 初期化ベクトル。
K ブロック暗号鍵。
P 平文。
R ブロック乗算演算(block multiplication operation)用のアルゴリズム内の定数。
T 認証タグ。
t 認証タグのビット長。
演算および機能:
「0」のビットから成るビット列。
CIPH(X) ブロックXに適用される鍵Kの下でのブロック暗号の前方暗号機能(forward cipher function)の出力。
GCTR(ICB,X) 初期カウンタ・ブロックICBを使用して、鍵Kがビット列Xに適用される、特定のブロック暗号のGCTR機能の出力。
GHASH(X) ビット列Xに適用されるハッシュ・サブキーHの下でのGHASH機能の出力。
inc(X) 1モジュロ2による、整数の2進表現と見なされる、ビット列Xの右端のsビットのインクリメントの出力。
int(X) 2進表現であるビット列Xに対応する整数。
len(X) ビット列Xのビット長。
LSB(X) ビット列Xの右端のsビットから成るビット列。
MSB(X) ビット列Xの左端のsビットから成るビット列。
Figure 0007116050000004

実数x以上の最小の整数。
[x] x<2である場合の、sビットの列としての非負整数xの2進表現。
X>>1 ビット列Xの右端のビットを切り捨て、「0」のビットを左側の先頭に追加して得られるビット列。
X||Y 2つのビット列XおよびYの連結。
Figure 0007116050000005

同じ長さの2つのビット列XおよびYのビット単位の排他的OR。
X∃Y 特定の2進ガロア・フィールドの要素と見なされる、2つのブロックXおよびYの積。
正の整数iに関する、積「・」の下でのXのi乗
x・y 2つの整数xおよびyの積。
例えば、ブロック(X・Y)の乗算の一例として、以下が挙げられる。
前提条件:
R=11100001||0120とする。
入力:
ブロックX、Y。
出力:
ブロックX・Y
ステップ:
1.X...X127は、X内のビットのシーケンスを示すものとする。
2.Z=0128およびV=Yとする。
3.i=0~127に関して、ブロックZi+1およびVi+1を次のように計算する。
i+1=Z [x=0の場合、または]
Figure 0007116050000006

[x=1の場合]
i+1=V>>1 [LSB(V)=0の場合、または]
Figure 0007116050000007

[LSB(V)=1の場合]
4.Z128を返す。
GCM暗号化機能の一例を、下にさらに詳細に示す。
アルゴリズム: GCM-AE(IV,P,A)
前提条件:
128ビットのブロック・サイズを使用する承認されたブロック暗号CIPH。
鍵K。
サポートされる入力/出力の長さの定義。
鍵に関連付けられたサポートされるタグの長さt。
入力:
初期化ベクトルIV(サポートされる長さを有する)。
平文P(サポートされる長さを有する)。
追加認証データA(サポートされる長さを有する)。
出力:
暗号文C。
認証タグT。
ステップ:
1.H=CIPH(0128)とする。
2.ブロックJを次のように定義する。
len(IV)=96の場合、J=IVΨ031Ψ1とする。
len(IV)γ96の場合、
Figure 0007116050000008

とし、
=GHASH(IVΨ0s+64Ψ[len(IV)64])とする。
3.C=GCTR(inc32(J),P)とする。
4.
Figure 0007116050000009

とし、
Figure 0007116050000010

とする
5.ブロックSを次のように定義する。
S=GHASH(AΨ0ΨCΨ0Ψ[len(A)]64Ψ[len(C)]64)。
6.T=MSBt(GCTR(J,S))とする。
7.(C,T)を返す。
GCM暗号解読機能の一実施形態が下で説明される。
アルゴリズム:GCM-AD(IV,C,A,T)
前提条件:
上の暗号化の場合と同じ
入力:
初期化ベクトルIV。
暗号文C。
追加認証データA。
認証タグT。
出力:
平文Pまたは信頼性がないことを示すFAIL。
ステップ:
1.IV、A、またはCのビット長がサポートされていない場合、またはlen(T)γtの場合、FAILを返す。
2.H=CIPH(0128)とする。
3.ブロックJを次のように定義する。
len(IV)=96の場合、J=IVΨ031Ψ1とする。
len(IV)γ96の場合、
Figure 0007116050000011

とし、
=GHASH(IVΨ0s+64Ψ[len(IV)64])とする。
4.P=GCTR(inc32(J),C)とする。
5.
Figure 0007116050000012

とし、
Figure 0007116050000013

とする。
6.ブロックSを次のように定義する。
S=GHASH(AΨ0ΨCΨ0Ψ[len(A)]64Ψ[len(C)]64)。
7.T’=MSBt(GCTR(J,S))とする。
8.T=T’である場合、Pを返し、そうでない場合、FAILを返す。
ガロア・ハッシュ(GHASH)機能の一実施形態が下で説明される。
アルゴリズム:GHASH(X)
前提条件:
ブロックH、ハッシュ・サブキー。
入力:
何らかの正の整数mに関してlen(X)=128mとなる、ビット列X。
出力:
ブロックGHASH(X)。
ステップ:
1.X,X,...,Xm-1,Xは、X=XΨXΨ,...,ΨXm-1ΨXとなるようなブロックの一意のシーケンスを示すものとする。
2.Yを「ゼロ・ブロック」0128(すなわち、128ビットの0)とする。
3.i=1,...,mに関して、Y=(Yi-1/X)∃Hとする。
4.Yを返す。
さらに、ガロア・カウンタ(GCTR)機能の一実施形態が下で説明される。
アルゴリズム:GCTR(ICB,X)
前提条件:
128ビットのブロック・サイズを使用する承認されたブロック暗号CIPH。
鍵K。
入力:
初期カウンタ・ブロックICB。
任意の長さのビット列X。
出力:
ビット長len(X)のビット列Y。
ステップ:
1.Xが空の列である場合、Yとして空の列を返す。
2.
Figure 0007116050000014

とする。
3.X1,X2,...,Xn-1,X は、次のようになるビット列の一意のシーケンスを示すものとする。
X=X1ΨX2Ψ...ΨXn-1ΨX
1,X2,...,Xn-1は完全なブロックである。
4.CB=ICBとする。
5.i=2~nに関して、CB=inc32(CBi-1)とする。
6.i=1~n-1に関して、Y=X/CIPH(CBi)とする。[最後を除くすべての完全なブロックに関する]
7.Y =X /MSBlen(Xn*)(CIPH(CB))とする。[最後の完全なブロックまたは部分的なブロックに関する]
8.Y=Y1ΨY2Ψ...ΨY とする。
9.Yを返す。
認証命令を含む暗号メッセージの図解表現が図21に示されている。図に示されているように、認証命令を含む暗号メッセージ300は、暗号処理(暗号化または暗号解読)された結果を含んでいる第1のオペランド600、暗号処理(暗号化または暗号解読)されてハッシュされるメッセージを含んでいる第2のオペランド602、および認証(ハッシュ)されるが暗号処理されない追加データを含んでいる第3のオペランド604を含む。
認証命令を含む暗号メッセージの一実施形態に関連付けられた処理に関する詳細が、図22~26を参照してさらに説明される。
図22を参照すると、最初に、命令によって使用される汎用レジスタ0に含まれる機能コードが有効かどうかに関する判定が行われる(照会700)。機能コードが有効でない場合、エラーが提供されてよく(ステップ702)、命令の処理が完了する。そうではなく、機能コードが有効である場合、第1、第2、または第3のレジスタ・フィールド(すなわち、R、R、R)内で指定されたレジスタが、奇数番号が付けられたレジスタであるかどうかに関する判定がさらに行われる(照会704)。それらのレジスタのうちの1つが奇数番号が付けられたレジスタである場合、1つの例では、エラーが提供され(ステップ706)、処理が完了する。そうでない場合、Rフィールド内で指定されたレジスタがRフィールド内で指定されたレジスタに等しいかどうか、またはRフィールド内で指定されたレジスタがRフィールド内で指定されたレジスタに等しいかどうかに関する判定がさらに行われる(照会708)。RまたはR内で指定されたレジスタがR内で指定されたレジスタに等しい場合、1つの例ではエラーが指定されてよく(ステップ710)、処理が完了する。そうでない場合、最後の平文/暗号文フラグが指定された値(1など)に等しいかどうか、および最後の追加認証データ・フラグが選択された値(0など)に設定されているかどうかに関するチェックがさらに行われる。これらが両方とも真である場合、エラーが提供されてよく(ステップ714)、命令の処理が完了する。そうではなく、最後の平文/暗号文制御が1に等しくなく、最後の追加認証データ制御が0に等しくない場合、機能コードが0に等しいかどうかに関するチェックが行われる(照会716)。機能コードが0である場合、問い合わせ機能が実行され、有効な機能がパラメータ・ブロックに格納される(ステップ718)。1つの例では、例えば0の条件コードが設定される(ステップ720)。しかし、機能コードが0でない場合、処理は、図23を参照して説明されているように、ハッシュ・サブキーの生成を続行する。
図23を参照すると、暗号化された鍵を使用しない暗号処理機能の場合、プログラムは、プログラム自身のハッシュ・サブキーをパラメータ・ブロックに提供するか、または命令にハッシュ・サブキーを生成させてよい。暗号化された鍵を使用する暗号処理機能の場合、命令がハッシュ・サブキーを生成し、プログラムによって提供されたハッシュ・サブキーは無視される。したがって、一実施形態では、機能コードが暗号化されていない鍵の機能を指定している(すなわち、指定された値(20など)以下の機能コードである)かどうかに関する判定が行われる(照会730)。機能コードが暗号化されていない鍵の機能を指定している(すなわち、機能コードが例えば20以下である)場合、プログラムがハッシュ・サブキーを提供したかどうかに関する判定が行われる(照会732)。プログラムがハッシュ・サブキーを提供しなかった(例えば、HS制御が0である)場合、ハッシュ・サブキーが生成される(ステップ734)。例えば、H=AES(0128,鍵)である。さらに、ハッシュ・タグがパラメータ・ブロック(PL.H)に格納され、ハッシュ・サブキーによって提供される制御(HS)が1に設定される(ステップ736)(説明および図におけるPLは、パラメータ・ブロックを指している)。
照会732に戻り、プログラムがハッシュ・サブキーを提供した場合(例えば、HS制御が1である場合)、図24を参照して説明されているように、処理が追加認証データのハッシュ処理を続行する。
照会730に戻り、機能コードが暗号化された鍵を使用する機能を指定している場合(例えば、機能コードが20より大きい場合)、機能はラッピング鍵の機能であり、Hが計算される(例えば、H=AES(0128,鍵))(ステップ738)が、保存されず、図24を参照して説明されているように、処理が追加認証データのハッシュ処理を続行する。
図24を参照すると、一実施形態では、モデルに依存するタイムアウトがあったかどうかに関する判定が行われる(照会740)。モデルに依存するタイムアウトがあった場合、1つの例では、処理が例えば3の条件コードを伴って終了する(ステップ742)。しかし、モデルに依存するタイムアウトが発生しなかった場合、オペランド3の長さ(Op3L)が指定された値(16など)より大きいかどうかに関する判定が行われる(照会744)。オペランド3の長さが16より大きい場合、完全な追加認証データ・ブロックを処理に使用できる(ステップ746)。例えば、パラメータ・ブロック(PL.T)内のタグ404がH∃(PL.T/Op3A)に設定され、はOp3Aが第3のオペランド(Op3A)へのポインタであることを示し(すなわち、パラメータ・ブロック内のタグ・フィールド(T)と、Rによって指定された汎用レジスタが指しているストレージとの排他的ORが計算される)、一例として、16バイトがオペランド3(Op3A)のアドレスに追加され、一例として、16バイトがオペランド3の長さ(Op3L)から差し引かれる。Op3Lは、例えばオペランド3のバイト単位の長さである。その後、処理は照会740を続行する。
照会744に戻り、オペランド3の長さが指定された値(例えば、16)以下である場合、フラグ・フィールドの最後の追加認証データ制御の判定が行われる(照会750)。制御の値が0である場合、一実施形態では、条件コード(条件コード2など)が設定される(ステップ752)。これは、処理される追加認証データが存在することを示す。
照会750に戻り、制御が1である場合、オペランド3の長さ(Op3L)のチェックがさらに行われる(照会754)。この長さが0より大きい場合、パラメータ・ブロックのタグ404が設定され(例えば、PL.T=H∃(PL.T/(Op3A[Op3L]Ψゼロ[16-Op3L])))、オペランド3のアドレスが、オペランド3の長さだけインクリメントされ、オペランド3の長さが0に設定される(ステップ756)。その後、処理が、図25を参照して説明されているように、平文/暗号文の処理を続行する。さらに、オペランド3の長さが0である場合(照会754)、処理が、図25の平文/暗号文の処理を続行する。
図25を参照すると、モデルに依存するタイムアウトがあったかどうかに関する判定が行われる(照会760)。モデルに依存するタイムアウトがあった場合、処理が例えば3の条件コードを伴って完了する(ステップ762)。モデルに依存するタイムアウトがなかった場合、オペランド2の長さ(Op2L)が指定された値(16など)より大きいかどうかに関する判定が行われる(照会764)。オペランド2の長さが指定された値より大きい場合、CB=PL.J[12]Ψ++PL.CV(++はインクリメントを示し、パラメータ・ブロック内のカウンタ値がインクリメントされる)、およびOp1A=AES(鍵,CB)/Op2A、PL.T=H∃(PL.T/(M?Op2A:Op1A))(ステップ766)となる。(1つの例では、テキスト(M?Op2A:Op1A)は、Mが真または偽(1または0)のいずれであるかに関する判定が行われることを示す。真である場合、Op2Aが第2のオペランド内の入力暗号文へのポインタとして使用される。偽である場合、Op1Aが、第1のオペランド内の出力暗号文へのポインタである。)さらに、オペランド1(Op1A)のアドレスが、例えば16バイトだけインクリメントされ、オペランド2(Op2A)のアドレスが、例えば16バイトだけインクリメントされ、オペランド2の長さ(Op2L)が、例えば16バイトだけデクリメントされる(ステップ766)。その後、処理が照会760に進む。
照会764に戻り、オペランド2の長さが指定された値(例えば、16)以下である場合、フラグ・フィールドの最後の平文/暗号文制御のチェックが行われる(照会768)。フラグが0に等しい場合、指定された条件コード(例えば、条件コード2)が設定される(ステップ770)。これは、処理される平文/暗号文がさらに存在することを示す。しかし、最後の平文/暗号文制御が1に設定された場合、オペランド2の長さに関する判定がさらに行われる(照会772)。この長さが0より大きい場合、CB=PL.J[12]Ψ++PL.CV、およびOp1A=AES(PL.鍵,CB)/(Op2A[Op2L]Ψゼロ[16-Op2L)、PL.T=H∃(PL.T/(M?Op2A:Op1A[Op2L]Ψゼロ[16=Op2L]))となる(ステップ774)。さらに、オペランド1およびオペランド2のアドレスが、オペランド2の長さだけ増やされ、その後、オペランド2の長さが0に設定される(ステップ774)。その後、またはオペランド2の長さが0である場合(照会772)、処理が、図26を参照して説明されているように、最後のタグの処理を続行する。
図26を参照すると、タグがH∃(PL.T/(PL.TAADLΨPL.TPCL)に設定され、追加認証データの最大ビット長および暗号文最大ビット長に対してハッシュ機能(例えば、GHASH)が実行される。その後、タグがAES(PL.鍵,PL.J)/PL.Tに設定され、最後のハッシュ値と、暗号化された初期カウンタ(J)との排他的ORが計算されて、タグの結果を形成する(ステップ780)。(すなわち、前に計算されたタグと、2つのビット長フィールドの連結との排他的ORが計算され、その結果に対してGHASHが実行される。その後、Jフィールドが暗号化され、その結果と、上の計算結果との排他的ORが計算され、最後のタグを形成する。)その後、処理が完了し、例えば0の条件コードが設定される(ステップ782)。
本明細書では、ハッシュ処理および暗号処理を単一の命令(例えば、単一の設計されたマシン命令)に結合する機能が説明されており、この機能は、割込み可能な命令を適切に再実行してメッセージの処理を続行できることを保証するための制御をさらに含む。再実行の1つの理由が、下で説明される。
1つの実装では、z/Architectureによって定義された暗号処理命令は、64ビット・レジスタを使用してメッセージの長さを定義し、したがって、メッセージの長さは、最大18,446,744,073,709,551,616(16E)バイトになることができる。GCMの仕様は、メッセージの長さを、68,719,476,736(64G)バイト、すなわち、32ビット・カウンタの最大値に128ビット(16バイト)のメッセージ・ブロックのサイズを掛けた値に制限する。しかし、著しく長時間の命令の実行を防ぐために、いずれかの個別の暗号処理命令の処理が、非常に小さい量(通常は、最大で4,096バイト)に制限される。暗号処理命令が完了するときに、暗号処理命令は、処理されたバイト数に基づいて、メッセージのオペランドのアドレスおよび長さを指定するレジスタを更新する。命令がメッセージを部分的にしか処理しない場合、命令は、指示的な条件コード(例えば、CC3)を設定することによって完了する。命令がメッセージを完全に処理する場合、命令は、代替の指示的な条件コード(例えば、CC0)を設定することによって完了する。
本明細書に記載されているように、認証命令を含む暗号メッセージは、非常に大きいメッセージに対応することができるが、1回の実行ではメッセージの一部しか処理できない。認証命令を含む暗号メッセージは、例えばプログラムによって指定される2つの制御の組み合わせならびに追加認証データおよびメッセージを含んでいるオペランドの残りの長さに基づいて、追加認証データのハッシュ処理ならびにメッセージの暗号処理およびハッシュ処理における進行を区別する。
* 最後の追加認証データ(LAAD)制御は、プログラムが追加認証データのオペランド全体を提供したかどうかを示す。
* 最後の平文/暗号文(LPC)フラグは、プログラムが、暗号処理および認証されるメッセージ・テキスト全体を提供したかどうかを示す。
命令は、各オペランドの長さを指定する汎用レジスタ内の値と共に、LAAD制御およびLPC制御の組み合わせに基づいて、入力に対していくつかのチェックを実行し、矛盾する制御を拒否することができる。
ハッシュ処理および暗号処理を単一の命令に結合することによって、追加認証データをハッシュするために別の命令を実行することが回避され、ハッシュおよび暗号処理のためにメッセージのオペランドを複数回フェッチすることが回避され、結合された動作が、ハードウェア・コプロセッサによって効率的に実行され得る。プログラムは、単一の命令を使用することによって、0を暗号化してハッシュ・サブキーを形成することと、TAADLおよびTPCLをハッシュすることと、カウンタとしてJを使用して最後のタグを暗号化およびハッシュすることとを実行するために、命令を別々に発行する必要がない。
認証命令を含む暗号メッセージの実行を含む、コンピューティング環境内の処理を容易にする一実施形態が、図27~28を参照して説明される。
図27を参照すると、一実施形態では、暗号処理および認証を含む複数の動作を実行するための命令が取得され(ステップ800)、この命令が実行される(ステップ802)。この実行することは、例えば、命令によって提供されたデータの1つのセットを暗号処理して暗号処理されたデータを取得することと(ステップ804)、暗号処理されたデータを指定された位置に配置することと(ステップ806)、命令によって提供されたデータの追加のセットを認証することであって、この認証することが、メッセージ認証タグの少なくとも一部を生成する、認証することと(ステップ808)、メッセージ認証タグの少なくとも一部を選択された位置に格納すること(ステップ810)とを含む。さらに別の実施形態では、この実行することは、暗号処理されたデータを認証することをさらに含む(ステップ812)。
1つの例では、データの追加のセットは、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり(814)、この実行することは、データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかを判定すること(ステップ816)と、データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかに基づいて認証を実行すること(ステップ818)とをさらに含む。
この判定することは、例えば、命令の最後の追加認証データ制御をチェックして、データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかを判定することを含む(ステップ820)。
さらに、1つの例では、図28を参照すると、データの1つのセットは、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり(822)、この実行することは、データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかを判定すること(ステップ824)と、データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかに基づいて暗号処理を実行すること(ステップ826)とをさらに含む。
この判定することは、例えば、命令の最後のテキスト制御をチェックして、データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することを含む(ステップ828)。
例として、暗号処理することは、選択された値に設定されている命令によって提供される制御に基づいて、データの1つのセットを暗号化すること(ステップ830)、または特定の値に設定されている命令によって提供される制御に基づいて、データの1つのセットを暗号解読すること(ステップ832)を含む。
一実施形態では、データの追加のセットを認証することは、ハッシュ技術を使用して、メッセージ認証タグの少なくとも一部を生成すること含む(ステップ834)。さらに、一実施形態では、ハッシュ技術は、選択された値に設定されている命令の、ハッシュ・サブキーによって提供される制御に基づいて、命令によって使用されるパラメータ・ブロックに格納されるハッシュ・サブキーを使用する(ステップ836)。
一例として、データの1つのセットは、メッセージの少なくとも一部を含み、データの追加のセットは、メッセージのルーティング情報を含む(840)。
本明細書に記載されているように、1つの例では、追加認証データのメッセージ・ダイジェストを生成する(すなわち、ハッシュする)ことと、メッセージを暗号処理することと、暗号化されたメッセージのメッセージ・ダイジェストを生成することとを実行するように構成された単一の命令が提供される。他の例では、複数の機能のうちの1つまたは複数が提供されないことがある。
1つの例では、命令は以下を使用する。
プログラムがプログラム自身のハッシュ・サブキーを提供したことを示すことができるようにする、HSフラグ。これによって、同じハッシュ・サブキーを使用する場合に、性能上の利益をもたらす。ハッシュ・サブキーは、暗号化された鍵の機能の場合に計算される(格納されない)。
追加認証データの最後のブロックが提供されたことを示すLAADフラグ。これによって、単一の命令が、追加認証データの最初のブロック、中間のブロック、および最後のブロックを処理できるようにする。
平文/暗号文の最後のブロックが提供されたことを示すLPCフラグ。これによって、単一の命令が、平文/暗号文の最初のブロック、中間のブロック、および最後のブロックを処理できるようにし、LAADと共に、命令の使用に関する何らかの妥当性チェックを実現する。
本発明の態様は、データの暗号化/暗号解読または認証あるいはその両方などの、セキュリティに関連付けられた処理を含むが、これに限定されない、コンピューティング環境内の処理を改善するコンピュータ技術に密接に関係している。
データ暗号化標準(DES:Data Encryption Standard)などの他の暗号化技術、またはSHA(セキュア・ハッシュ・アルゴリズム:Secure Hash Algorithm)-2、SHA-3などの他のハッシュ処理技術、あるいはその両方を使用することを含むが、これに限定されない、多くの変形が可能である。
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数人の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
さらに別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・システムでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、異なる命令、命令形式、命令フィールド、または命令値、あるいはその組み合わせが使用されてよい。多くの変形が可能である。
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える(comprise)」または「備えている(comprising)」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、1つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
添付の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等なものは、もしあれば、具体的に請求されるとき、その他の請求される要素と組み合わせて、機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。

Claims (20)

  1. コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、処理回路に、
    暗号処理および認証を含む複数の動作を実行するための命令が、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令であり、認証動作を伴う暗号メッセージを示すためのオペレーション・コードを含むオペコード・フィールド、および前記命令によって使用される1つまたは複数のレジスタを指定するために使用される1つまたは複数のレジスタ・フィールドを含んでいる、前記命令を取得することと、
    前記命令の前記1つまたは複数のレジスタのうちの1つのレジスタを使用して提供されたデータの1つのセットを暗号処理して、暗号処理されたデータを取得することと、
    前記暗号処理されたデータを指定された位置に配置することと、
    前記命令によって提供されたデータの追加のセットを認証することであって、メッセージ認証タグの少なくとも一部を生成する、前記認証することと、
    前記メッセージ認証タグの前記少なくとも一部を選択された位置に格納することと
    を実行させるためのプログラムを記録したコンピュータ可読記憶媒体を備える、コンピュータ・プログラム製品。
  2. 前記暗号処理されたデータを取得することの後に、前記暗号処理されたデータを認証することをさらに含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  3. 前記データの追加のセットが、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、前記データの追加のセットを認証することが、
    前記データの追加のセットが、認証されるデータの最後のブロックを含んでいるかどうかを判定することと、
    前記データの追加のセットが前記認証されるデータの最後のブロックを含んでいるかどうかに基づいて前記認証することと
    をさらに含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  4. 前記判定することが、前記命令の最後の追加認証データ制御をチェックして、前記データの追加のセットが前記認証されるデータの最後のブロックを含んでいるかどうかを判定することを含んでいる、請求項3に記載のコンピュータ・プログラム製品。
  5. 前記データの1つのセットが、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、前記暗号処理することが、
    前記データの1つのセットが、暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することと、
    前記データの1つのセットが前記暗号処理されるデータの最後のブロックを含んでいるかどうかに基づいて前記暗号処理することと
    をさらに含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  6. 前記判定することが、前記命令の最後のテキスト制御をチェックして、前記データの1つのセットが前記暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することを含んでいる、請求項5に記載のコンピュータ・プログラム製品。
  7. 前記暗号処理することが、選択された値に設定されている前記命令によって提供された制御に基づいて前記データの1つのセットを暗号化することを含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  8. 前記暗号処理することが、特定の値に設定されている前記命令によって提供された制御に基づいて前記データの1つのセットを暗号解読することを含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  9. 前記データの追加のセットを前記認証することが、ハッシュ技術を使用して、前記メッセージ認証タグの前記少なくとも一部を生成することを含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  10. 前記ハッシュ技術が、選択された値に設定されている前記命令の、ハッシュ・サブキーによって提供される制御に基づいて、前記命令によって使用されるパラメータ・ブロックに格納されるハッシュ・サブキーを使用する、請求項9に記載のコンピュータ・プログラム製品。
  11. 前記データの1つのセットが、メッセージの少なくとも一部を含んでおり、前記データの追加のセットが、前記メッセージのルーティング情報を含んでいる、請求項1に記載のコンピュータ・プログラム製品。
  12. コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信するプロセッサと、
    前記プロセッサに、
    暗号処理および認証を含む複数の動作を実行するための命令が、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令であり、認証動作を伴う暗号メッセージを示すためのオペレーション・コードを含むオペコード・フィールド、および前記命令によって使用される1つまたは複数のレジスタを指定するために使用される1つまたは複数のレジスタ・フィールドを含んでいる、前記命令を取得することと、
    前記命令の前記1つまたは複数のレジスタのうちの1つのレジスタを使用して提供されたデータの1つのセットを暗号処理して、暗号処理されたデータを取得することと、
    前記暗号処理されたデータを指定された位置に配置することと、
    前記命令によって提供されたデータの追加のセットを認証することであって、メッセージ認証タグの少なくとも一部を生成する、前記認証することと、
    前記メッセージ認証タグの前記少なくとも一部を選択された位置に格納することと
    を実行させるためのプログラムを記録したコンピュータ可読記憶媒体
    を含んでいる、コンピュータ・システム。
  13. 前記暗号処理されたデータを取得することの後に、前記暗号処理されたデータを認証することをさらに含んでいる、請求項12に記載のコンピュータ・システム。
  14. 前記データの追加のセットが、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、前記データの追加のセットを認証することが、
    前記データの追加のセットが認証されるデータの最後のブロックを含んでいるかどうかを判定することであって、前記命令の最後の追加認証データ制御をチェックして、前記データの追加のセットが、前記認証されるデータの最後のブロックを含んでいるかどうかを判定する、前記判定することと、
    前記データの追加のセットが前記認証されるデータの最後のブロックを含んでいるかどうかに基づいて前記認証することと
    をさらに含んでいる、請求項12に記載のコンピュータ・システム。
  15. 前記データの1つのセットが、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、前記暗号処理することが、
    前記データの1つのセットが暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することであって、前記命令の最後のテキスト制御をチェックして、前記データの1つのセットが、前記暗号処理されるデータの最後のブロックを含んでいるかどうかを判定する、前記判定することと、
    前記データの1つのセットが前記暗号処理されるデータの最後のブロックを含んでいるかどうかに基づいて前記暗号処理することと
    をさらに含んでいる、請求項12に記載のコンピュータ・システム。
  16. 前記データの追加のセットを前記認証することが、ハッシュ技術を使用して前記メッセージ認証タグの前記少なくとも一部を生成することを含んでおり、前記ハッシュ技術が、選択された値に設定されている前記命令の、ハッシュ・サブキーによって提供される制御に基づいて、前記命令によって使用されるパラメータ・ブロックに格納されるハッシュ・サブキーを使用する、請求項12に記載のコンピュータ・システム。
  17. コンピューティング環境内の処理を容易にするためのコンピュータ実装方法であって、プロセッサによって、
    暗号処理および認証を含む複数の動作を実行するための命令が、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令であり、認証動作を伴う暗号メッセージを示すためのオペレーション・コードを含むオペコード・フィールド、および前記命令によって使用される1つまたは複数のレジスタを指定するために使用される1つまたは複数のレジスタ・フィールドを含んでいる、前記命令を取得することと、
    前記命令の前記1つまたは複数のレジスタのうちの1つのレジスタを使用して提供されたデータの1つのセットを暗号処理して、暗号処理されたデータを取得することと、
    前記暗号処理されたデータを指定された位置に配置することと、
    前記命令によって提供されたデータの追加のセットを認証することであって、メッセージ認証タグの少なくとも一部を生成する、前記認証することと、
    前記メッセージ認証タグの前記少なくとも一部を選択された位置に格納することと
    を実行する、コンピュータ実装方法。
  18. 前記暗号処理されたデータを取得することの後に、前記暗号処理されたデータを認証することをさらに含んでいる、請求項17に記載のコンピュータ実装方法。
  19. 前記データの追加のセットが、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、前記データの追加のセットを認証することが、
    前記データの追加のセットが認証されるデータの最後のブロックを含んでいるかどうかを判定することであって、前記命令の最後の追加認証データ制御をチェックして、前記データの追加のセットが、前記認証されるデータの最後のブロックを含んでいるかどうかを判定する、前記判定することと、
    前記データの追加のセットが前記認証されるデータの最後のブロックを含んでいるかどうかに基づいて前記認証することと
    をさらに含んでいる、請求項17に記載のコンピュータ実装方法。
  20. 前記データの1つのセットが、データの1つまたは複数のブロックのうちのデータの少なくとも1つのブロックを含んでおり、前記暗号処理することが、
    前記データの1つのセットが暗号処理されるデータの最後のブロックを含んでいるかどうかを判定することであって、前記命令の最後のテキスト制御をチェックして、前記データの1つのセットが、前記暗号処理されるデータの最後のブロックを含んでいるかどうかを判定する、前記判定することと、
    前記データの1つのセットが前記暗号処理されるデータの最後のブロックを含んでいるかどうかに基づいて前記暗号処理することと
    をさらに含んでいる、請求項17に記載のコンピュータ実装方法。
JP2019517913A 2016-10-13 2017-10-02 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 Active JP7116050B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/292,377 2016-10-13
US15/292,377 US9680653B1 (en) 2016-10-13 2016-10-13 Cipher message with authentication instruction
PCT/EP2017/074971 WO2018069080A1 (en) 2016-10-13 2017-10-02 Cipher message with authentication instruction

Publications (2)

Publication Number Publication Date
JP2019535036A JP2019535036A (ja) 2019-12-05
JP7116050B2 true JP7116050B2 (ja) 2022-08-09

Family

ID=59009411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019517913A Active JP7116050B2 (ja) 2016-10-13 2017-10-02 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法

Country Status (21)

Country Link
US (1) US9680653B1 (ja)
EP (1) EP3526927B1 (ja)
JP (1) JP7116050B2 (ja)
KR (1) KR102259962B1 (ja)
CN (1) CN109845182B (ja)
AU (1) AU2017341251B2 (ja)
BR (1) BR112019007567B8 (ja)
CA (1) CA3037231A1 (ja)
DK (1) DK3526927T3 (ja)
ES (1) ES2863676T3 (ja)
HU (1) HUE054035T2 (ja)
IL (1) IL265553B (ja)
LT (1) LT3526927T (ja)
MX (1) MX371225B (ja)
PL (1) PL3526927T3 (ja)
PT (1) PT3526927T (ja)
RU (1) RU2727152C1 (ja)
SI (1) SI3526927T1 (ja)
TW (1) TWI642294B (ja)
WO (1) WO2018069080A1 (ja)
ZA (1) ZA201902292B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10044499B2 (en) * 2014-04-10 2018-08-07 Fuji Electric Co., Ltd. Information processing apparatus, program, and storage medium
WO2018193507A1 (ja) * 2017-04-17 2018-10-25 日本電気株式会社 認証タグ生成装置、認証タグ検証装置、方法及びプログラム
US11438137B2 (en) * 2017-09-01 2022-09-06 Mitsubishi Electric Corporation Encryption device, decryption device, encryption method, decryption method, and computer readable medium
WO2020065820A1 (ja) * 2018-09-27 2020-04-02 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
US11303456B2 (en) * 2019-02-15 2022-04-12 International Business Machines Corporation Compute digital signature authentication sign instruction
US11075763B2 (en) * 2019-02-15 2021-07-27 International Business Machines Corporation Compute digital signature authentication sign with encrypted key instruction
US11108567B2 (en) * 2019-02-15 2021-08-31 International Business Machines Corporation Compute digital signature authentication verify instruction
US11917067B2 (en) * 2019-12-28 2024-02-27 Intel Corporation Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007006184A (ja) 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> 暗号処理装置及び認証アプリケーションプログラム
JP2013534668A (ja) 2010-06-24 2013-09-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータで実装される方法、コンピュータ・システム、およびコンピュータ・プログラム
JP2015501946A (ja) 2011-11-17 2015-01-19 エイアールエム リミテッド 暗号化アルゴリズム内のハッシュ値の生成をサポートするためのsimd命令
WO2015156020A1 (ja) 2014-04-10 2015-10-15 富士電機株式会社 情報処理装置、プログラム及び記憶媒体
JP2016517562A (ja) 2013-03-14 2016-06-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 擬似乱数生成操作を実施するための命令

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63271567A (ja) * 1987-04-30 1988-11-09 Hitachi Ltd 非対称密結合マルチプロセツサシステム
KR0177655B1 (ko) * 1995-11-22 1999-05-15 배순훈 긴 문자열에 적합한 암호화 및 해독화 방법
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
US20080214300A1 (en) * 2000-12-07 2008-09-04 Igt Methods for electronic data security and program authentication
US6948067B2 (en) * 2002-07-24 2005-09-20 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US7703128B2 (en) 2003-02-13 2010-04-20 Microsoft Corporation Digital identity management
US7159122B2 (en) 2003-05-12 2007-01-02 International Business Machines Corporation Message digest instructions
DE10349580A1 (de) * 2003-10-24 2005-05-25 Robert Bosch Gmbh Verfahren und Vorrichtung zur Operandenverarbeitung in einer Prozessoreinheit
EP1536606A1 (fr) * 2003-11-27 2005-06-01 Nagracard S.A. Méthode d'authentification d'applications
US7827223B2 (en) 2004-04-22 2010-11-02 Fortress Gb Ltd. Accelerated throughput synchronized word stream cipher, message authenticator and zero-knowledge output random number generator
US8260259B2 (en) * 2004-09-08 2012-09-04 Qualcomm Incorporated Mutual authentication with modified message authentication code
KR100675837B1 (ko) * 2004-12-13 2007-01-29 한국전자통신연구원 고속 gcm-aes 블록 암호화 장치 및 방법
GB2443244A (en) * 2006-10-05 2008-04-30 Hewlett Packard Development Co Authenticated Encryption Method and Apparatus
US8340280B2 (en) * 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8775794B2 (en) 2010-11-15 2014-07-08 Jpmorgan Chase Bank, N.A. System and method for end to end encryption
US20160005032A1 (en) * 2012-11-28 2016-01-07 Hoverkey Ltd. Method and system of providing authentication of user access to a computer resource via a mobile device using multiple separate security factors
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10530576B2 (en) * 2015-02-13 2020-01-07 Insyde Software Corp. System and method for computing device with improved firmware service security using credential-derived encryption key
KR101613146B1 (ko) * 2015-03-24 2016-04-18 주식회사 티맥스데이터 데이터베이스 암호화 방법
US9578505B2 (en) * 2015-04-21 2017-02-21 International Business Machines Corporation Authentication of user computers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007006184A (ja) 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> 暗号処理装置及び認証アプリケーションプログラム
JP2013534668A (ja) 2010-06-24 2013-09-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータで実装される方法、コンピュータ・システム、およびコンピュータ・プログラム
JP2015501946A (ja) 2011-11-17 2015-01-19 エイアールエム リミテッド 暗号化アルゴリズム内のハッシュ値の生成をサポートするためのsimd命令
JP2016517562A (ja) 2013-03-14 2016-06-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 擬似乱数生成操作を実施するための命令
WO2015156020A1 (ja) 2014-04-10 2015-10-15 富士電機株式会社 情報処理装置、プログラム及び記憶媒体

Also Published As

Publication number Publication date
PL3526927T3 (pl) 2021-08-16
CA3037231A1 (en) 2018-04-19
EP3526927A1 (en) 2019-08-21
LT3526927T (lt) 2021-03-25
IL265553A (en) 2019-05-30
AU2017341251A1 (en) 2019-04-04
EP3526927B1 (en) 2021-02-17
DK3526927T3 (da) 2021-03-22
IL265553B (en) 2021-04-29
JP2019535036A (ja) 2019-12-05
US9680653B1 (en) 2017-06-13
SI3526927T1 (sl) 2021-04-30
ZA201902292B (en) 2019-11-27
HUE054035T2 (hu) 2021-08-30
TWI642294B (zh) 2018-11-21
WO2018069080A1 (en) 2018-04-19
BR112019007567A2 (pt) 2019-07-02
KR102259962B1 (ko) 2021-06-03
KR20190059965A (ko) 2019-05-31
MX2019003604A (es) 2019-06-17
CN109845182A (zh) 2019-06-04
CN109845182B (zh) 2022-04-26
BR112019007567B8 (pt) 2022-08-09
BR112019007567B1 (pt) 2022-07-05
PT3526927T (pt) 2021-03-25
AU2017341251B2 (en) 2020-10-01
MX371225B (es) 2020-01-09
TW201820816A (zh) 2018-06-01
ES2863676T3 (es) 2021-10-11
RU2727152C1 (ru) 2020-07-21

Similar Documents

Publication Publication Date Title
JP7116050B2 (ja) 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法
US10142101B2 (en) Hardware enforced one-way cryptography
US10313129B2 (en) Keyed-hash message authentication code processors, methods, systems, and instructions
JP5120830B2 (ja) 共用のハードウェアを利用して暗号文及びメッセージ認証コードを生成するための方法及びシステム
US8036379B2 (en) Cryptographic processing
TWI773960B (zh) 用於以加密金鑰指令計算數位簽章驗證標記之電腦程式產品、電腦系統及電腦實施方法
JP6735926B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
KR20060009247A (ko) 인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체
TWI811514B (zh) 用於計算數位簽章認證標記指令之電腦程式產品、電腦系統及電腦實施方法
CN114154174A (zh) 后量子签名设施的状态同步
TW202032398A (zh) 計算數位簽章認證驗證指令
AU2017333398B2 (en) Padding for creating a message digest
CA3037231C (en) Cipher message with authentication instruction
Team Security Analysis of Cryptsetup/LUKS

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190530

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210719

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220422

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220422

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220506

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220510

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: 20220719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220728

R150 Certificate of patent or registration of utility model

Ref document number: 7116050

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150