JP6044738B2 - 情報処理装置、プログラム及び記憶媒体 - Google Patents
情報処理装置、プログラム及び記憶媒体 Download PDFInfo
- Publication number
- JP6044738B2 JP6044738B2 JP2016512615A JP2016512615A JP6044738B2 JP 6044738 B2 JP6044738 B2 JP 6044738B2 JP 2016512615 A JP2016512615 A JP 2016512615A JP 2016512615 A JP2016512615 A JP 2016512615A JP 6044738 B2 JP6044738 B2 JP 6044738B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- information
- array
- processing apparatus
- predetermined
- 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
Links
- 230000010365 information processing Effects 0.000 title claims description 80
- 238000004364 calculation method Methods 0.000 claims description 197
- 238000006243 chemical reaction Methods 0.000 claims description 25
- 238000012795 verification Methods 0.000 claims 3
- 230000006870 function Effects 0.000 description 114
- 238000000034 method Methods 0.000 description 108
- 238000006467 substitution reaction Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 238000003491 array Methods 0.000 description 5
- 230000003252 repetitive effect Effects 0.000 description 4
- 238000013478 data encryption standard Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000209507 Camellia Species 0.000 description 1
- 235000018597 common camellia Nutrition 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
Description
<ハードウェア構成>
本実施形態における各種処理を実行可能な情報処理装置の一構成例について説明する。図1は、第1の実施形態に係る情報処理装置の一例のハードウェア構成図である。
次に、本実施形態に係る情報処理装置10の機能構成について説明する。図2は、第1の実施形態に係る情報処理装置の一例の機能構成図である。
次に、本実施形態に係る情報処理装置10の処理の詳細について、図面を参照しつつ説明する。
まず、認証タグ生成処理について説明する。図4は、第1の実施形態に係る認証タグ生成処理の一例のフローチャートである。
次に、図4のステップS102におけるGHASH関数の演算処理について、図6及び図7を用いて詳細に説明する。
・配列Xi[16]及び配列Yi−1[16]のj番目の要素を表す変数jを準備し、jを0に初期化する。
・ある特定のビットが1であるか否かを判定するために用いる変数kを準備し、kを27に初期化する。
・配列Xi[16]及び配列Yi−1[16]のj番目の要素のビット毎の排他的論理和の演算結果を格納する符号なし8ビットの変数xを準備し、xに、Xi[0]とYi−1[0]とのビット毎の排他的論理和の演算結果を代入する。すなわち、x=Xi[0]^Yi−1[0]とする。なお、演算子「^」は、ビット毎の排他的論理和を示す演算子(+)である。このように、以降では、ビット毎の排他的論理和を示す演算子を「^」で表す。
・GHASH関数の演算結果を格納するための16個の要素からなる符号なし8ビットの配列Z[16]を準備し、それぞれ0で初期化する。すなわち、Z[0]=00000000,・・・,Z[15]=00000000とする。このような初期化は、例えば、C言語におけるmemset関数を用いてmemset(Z,0,16)として行うことができる。
・ガロア体上の乗算演算(×)を行うための符号なし8ビットの配列V[16]を準備し、GHASH関数のサブキーHを格納する。これは、例えば、サブキーHが16個の要素からなる符号なし8ビットの配列H[16]に格納されている場合、C言語におけるmemcpy関数を用いてmemcpy(V,H,16)として行うことができる。
・Z[0]とV[0]とのビット毎の排他的論理和を演算し、演算結果をZ[0]に代入する。すなわち、Z[0]=Z[0]^V[0]とする。
・Z[1]とV[1]とのビット毎の排他的論理和を演算し、演算結果をZ[1]に代入する。すなわち、Z[1]=Z[1]^V[1]とする。
・・・
・Z[15]とV[15]とのビット毎の排他的論理和を演算し、演算結果をZ[15]に代入する。すなわち、Z[15]=Z[15]^V[15]とする。
以上のように、ハッシュ演算部130は、例えば、C言語におけるfor文などの繰り返し処理を用いずに、配列への代入処理に行う。これにより、for文などの繰り返し処理を行う場合と比較してGHASH関数の演算速度の高速化を図ることができる。
・kに27を代入する。
・jの値に1を加算した結果をjに代入する。換言すれば、jの値をインクリメントする。
・xに、Xi[j]とYi−1[j]とのビット毎の排他的論理和の演算結果を代入する。すなわち、x=Xi[j]^Yi−1[j]とする。
これにより、配列Xi[16]及び配列Yi−1[16]について、次の要素のGHASH関数の演算処理を行うことができる。
・V[15]を右に1ビットシフト演算した演算結果とV[14]を左に7ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[15]に代入する。すなわち、V[15]=(V[15]>>1)|(V[14]<<7)とする。なお、「>>」は右ビットシフト演算子、「<<」は左ビットシフト演算子、「|」はビット毎の論理和演算子を表す。
・V[14]を右に1ビットシフト演算した演算結果とV[13]を左に7ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[14]に代入する。すなわち、V[14]=(V[14]>>1)|(V[13]<<7)とする。
・・・
・V[1]を右に1ビットシフト演算した演算結果とV[0]を左に7ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[1]に代入する。すなわち、V[1]=(V[1]>>1)|(V[0]<<7)とする。
・V[0]を右に1ビットシフト演算した演算結果とrとのビット毎の排他的論理和を演算し、演算結果をV[0]に代入する。すなわち、V[0]=(V[0]>>1)^rとする。
なお、上記のステップS213の処理は、V[0]〜[15]に格納されているビット列を左から順に並べたビット列をVとすれば、このVのビット列を右に1ビットシフト演算し、この演算結果の上位8ビットとrとの排他的論理和を演算することに等しい。また、rが0である場合、排他的論理和による演算結果は、Vのビット列を右に1ビットシフトさせた演算結果と等しい。換言すれば、(V>>1)^r=(V>>1)である。
・iの値に1を加算した結果をiに代入する。換言すれば、iの値をインクリメントする。
・Yi−1[0]にZ[0]を代入する。すなわち、Yi−1[0]=Z[0]とする。
・Yi−1[1]にZ[1]を代入する。すなわち、Yi−1[1]=Z[1]とする。
・・・
・Yi−1[15]にZ[15]を代入する。すなわち、Yi−1[15]=Z[15]とする。
次に、第2の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において、配列V[16]を1ビットずつシフトさせるのではなく、必要なビット数をまとめてシフトさせることが第1の実施形態と相違する。また、配列V[16]を複数ビットシフトさせた場合に用いるr(ガロア体GF(2128)上の既約多項式に対応するビット列)の変換テーブルを使用する。
次に、本実施形態に係る情報処理装置10の機能構成について説明する。図8は、第2の実施形態に係る情報処理装置の一例の機能構成図である。本実施形態に係る情報処理装置10の機構構成は、変換テーブル2000を有する点が第1の実施形態の情報処理装置10と相違する。
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第1の実施形態と相違する。
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図10及び図11を用いて詳細に説明する。なお、上記第1の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図6及び図7)との相違点は、ステップS301〜ステップS308に示す処理である。そこで、以下では、ステップS301〜ステップS308に示す処理について説明する。
・配列V[16]をシフト演算するためのシフト数をカウントする変数sBitを準備し、sBitを0に初期化する。
・sBitからpを減算した結果をsBitに代入する。すなわち、sBit=sBit−pとする。
・配列V[16]を左にシフトさせるビット数qとして、8−pを代入する。すなわち、q=8−pとする。
・配列V[16]の最上位16ビット(すなわち、V[0]及びV[1]にそれぞれ格納されるビット列)とビット毎の排他的論理和を演算するrについて、変換テーブル2000を用いて対応する値を代入する。具体的には、r=Rmap[(V[15]<<q)&0xFF]とする。
・V[15]を右にpビットシフト演算した演算結果とV[14]を左にqビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[15]に代入する。すなわち、V[15]=(V[15]>>p)|(V[14]<<q)とする。
・・・
・V[2]を右にpビットシフト演算した演算結果とV[1]を左にqビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[2]に代入する。すなわち、V[2]=(V[2]>>p)|(V[1]<<q)とする。
・V[1]を右にpビットシフト演算した演算結果とV[0]を左にqビットシフト演算した結果とのビット毎の論理和を演算し、この演算結果とrの下位8ビットとの排他的論理和を演算した結果をV[1]に代入する。すなわち、V[1]=((V[1]>>p)|(V[0]<<q))^(uint8_t)(r&0xFF)とする。ここで、「(uint8_t)」は、r&0xFFを符号なし8ビットに型変換するためのキャスト演算子である。
・V[0]を右にpビットシフト演算した演算結果とrの上位8ビットとのビット毎の論理和を演算し、演算結果をV[0]に代入する。すなわち、V[0]=(V[0]>>p)^(uint8_t)((r>>8)&0xFF))とする。
次に、第3の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において、配列V[16]のシフト演算を2ビットシフトさせる処理と1ビットシフトさせる処理とで構成する。これにより、本実施形態に係る情報処理装置10は、変換テーブル2000を有することなく、第1の実施形態よりもGHASG関数の演算処理速度を高速化させることできる。なお、本実施形態に係る情報処理装置10の機能構成は、第1の実施形態に係る情報処理装置10の機能構成と同様である。
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第2の実施形態と相違する。
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図12及び図13を用いて詳細に説明する。なお、上記第2の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図10及び図11)との相違点は、ステップS401〜ステップS412に示す処理である。そこで、以下では、ステップS401〜ステップS412に示す処理について説明する。
・V[15]と3とのビット毎の論理積の演算結果をrに代入する。すなわち、r=V[15]&3とする。換言すれば、rに、V[15]の下位2ビットの値を代入する。
・V[15]を右に2ビットシフト演算した演算結果とV[14]を左に6ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[15]に代入する。すなわち、V[15]=(V[15]>>2)|(V[14]<<6)とする。
・・・
・V[1]を右に2ビットシフト演算した演算結果とV[0]を左に6ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[1]に代入する。すなわち、V[1]=(V[1]>>2)|(V[0]<<6)とする。
・V[0]を右に2ビットシフト演算した演算結果をV[0]に代入する。すなわち、V[0]=(V[0]>>2)とする。
・V[1]と0x80との排他的論理和を演算し、この演算結果をV[1]に代入する。すなわち、V[1]=V[1]^0x80とする。
・V[0]と0x70との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0x70とする。
ここで、上記の0x80及び0x70は、第2の実施形態における変換テーブル2000のR[64]の値の下位8ビット及び上位8ビットである。したがって、本実施形態に係るGHASH関数の演算処理では、変換テーブル2000を用いずに、変換テーブル2000の該当の値を直接使用する。換言すれば、本実施形態に係るGHASH関数では、これらの該当の値をいわゆるマジックナンバーとしてソースコード上に記述する。
・V[0]と0xE1との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0xE1とする。
なお、この0xE1は、第2の実施形態における変換テーブル2000のR[128]の値の上位8ビットである。
・V[1]と0x80との排他的論理和を演算し、この演算結果をV[1]に代入する。すなわち、V[1]=V[1]^0x80とする。
・V[0]と0x91との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0x91とする。
なお、これらの0x80及び0x91は、第2の実施形態における変換テーブル2000のR[192]の値の下位8ビット及び上位8ビットである。
・V[15]と1とのビット毎の論理積の演算結果をrに代入する。すなわち、r=V[15]&1とする。換言すれば、rに、V[15]の下位1ビットの値を代入する。
・V[15]を右に1ビットシフト演算した演算結果とV[14]を左に7ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[15]に代入する。すなわち、V[15]=(V[15]>>1)|(V[14]<<7)とする。
・・・
・V[1]を右に1ビットシフト演算した演算結果とV[0]を左に7ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[1]に代入する。すなわち、V[1]=(V[1]>>1)|(V[0]<<7)とする。
・V[0]を右に1ビットシフト演算した演算結果をV[0]に代入する。すなわち、V[0]=(V[0]>>1)とする。
・V[0]と0xE1との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0xE1とする。
次に、第4の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において符号なし8ビットの配列V[16]及び配列Z[16]の代わりに符号なし16ビットの配列V[8]及び配列Z[8]を用いる。なお、本実施形態に係る情報処理装置10の機能構成は、第1の実施形態に係る情報処理装置10の機能構成と同様である。
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第1の実施形態と相違する。
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図14及び図15を用いて詳細に説明する。なお、上記第1の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図6及び図7)との相違点は、ステップS501〜ステップS508に示す処理である。そこで、以下では、ステップS501〜ステップS508に示す処理について説明する。
・配列Xi[16]及び配列Yi−1[16]の要素を表すための変数jを準備し、jを0に初期化する。
・ある特定のビットが1であるか否かを判定するために用いる変数kを準備し、kを215に初期化する。
・配列Xi[16]及び配列Yi−1[16]の2j番目の要素のビット毎の排他的論理和の演算結果を8ビット左にシフトさせたビット列と2j+1番目の要素のビット毎の排他的論理和の演算結果とのビット毎の論理和を格納する符号なし16ビットの変数xを準備する。そして、x=((Xi[0]^Yi−1[0])<<8)|(Xi[1]^Yi−1[1])とする。
・GHASH関数の演算結果を格納するための8個の要素からなる符号なし16ビットの配列Z[8]を準備し、それぞれ0で初期化する。すなわち、Z[0]=0000000000000000,・・・,Z[7]=0000000000000000とする。
・ガロア体上の乗算演算(×)を行うための符号なし16ビットの配列V[8]を準備し、GHASH関数のサブキーHを格納する。具体的には、V[0]=(H[0]<<8)|H[1],・・・,V[7]=(H[14]<<8)|H[15]とする。
・Z[0]とV[0]とのビット毎の排他的論理和を演算し、演算結果をZ[0]に代入する。すなわち、Z[0]=Z[0]^V[0]とする。
・Z[1]とV[1]とのビット毎の排他的論理和を演算し、演算結果をZ[1]に代入する。すなわち、Z[1]=Z[1]^V[1]とする。
・・・
・Z[7]とV[7]とのビット毎の排他的論理和を演算し、演算結果をZ[7]に代入する。すなわち、Z[7]=Z[7]^V[7]とする。
・kに215を代入する。
・jの値に1を加算した結果をjに代入する。換言すれば、jの値をインクリメントする。
・xに、Xi[2j]とYi−1[2j]とのビット毎の排他的論理和の演算結果を8ビット左にシフトさせたビット列と、Xi[2j+1]とYi−1[2j+1]とのビット毎の排他的論理和の演算結果とのビット毎の論理和の演算結果を代入する。すなわち、x=((Xi[2j]^Yi−1[2j])<<8)|(Xi[2j+1]^Yi−1[2j+1])とする。
・V[7]を右に1ビットシフト演算した演算結果とV[6]を左に15ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[7]に代入する。すなわち、V[7]=(V[7]>>1)|(V[6]<<15)とする。
・V[6]を右に1ビットシフト演算した演算結果とV[5]を左に15ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[6]に代入する。すなわち、V[6]=(V[6]>>1)|(V[5]<<15)とする。
・・・
・V[1]を右に1ビットシフト演算した演算結果とV[0]を左に15ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[1]に代入する。すなわち、V[1]=(V[1]>>1)|(V[0]<<15)とする。
・V[0]を右に1ビットシフト演算した演算結果とrとのビット毎の排他的論理和を演算し、演算結果をV[0]に代入する。すなわち、V[0]=(V[0]>>1)^rとする。
なお、上記のステップS507の処理は、V[0]〜[7]に格納されているビット列を左から順に並べたビット列をVとすれば、このVのビット列を右に1ビットシフト演算し、この演算結果の上位16ビットとrとの排他的論理和を演算することに等しい。
・iの値に1を加算した結果をiに代入する。換言すれば、iの値をインクリメントする。
・Yi−1[0]に、Z[0]を右に8ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[0]=(Z[0]>>8)&0xFFとする。
・Yi−1[1]に、Z[0]の下位8ビットを代入する。すなわち、Yi−1[1]=Z[0]&0xFFとする。
・・・
・Yi−1[14]に、Z[7]を右に8ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[14]=(Z[7]>>8)&0xFFとする。
・Yi−1[15]に、Z[7]の下位8ビットを代入する。すなわち、Yi−1[15]=Z[7]&0xFFとする。
次に、第5の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において符号なし8ビットの配列V[16]及び配列Z[16]の代わりに符号なし32ビットの配列V[4]及び配列Z[4]を用いる。なお、本実施形態に係る情報処理装置10の機能構成は、第1の実施形態に係る情報処理装置10の機能構成と同様である。
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第1の実施形態と相違する。
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図16及び図17を用いて詳細に説明する。なお、上記第1の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図6及び図7)との相違点は、ステップS601〜ステップS608に示す処理である。そこで、以下では、ステップS601〜ステップS608に示す処理について説明する。
・配列Xi[16]及び配列Yi−1[16]の要素を表すための変数jを準備し、jを0に初期化する。
・ある特定のビットが1であるか否かを判定するために用いる変数kを準備し、kを231に初期化する。
・符号なし32ビットの変数xを準備し、x=((Xi[0]^Yi−1[0])<<24)|((Xi[1]^Yi−1[1])<<16)|((Xi[2]^Yi−1[2])<<8)|(Xi[3]^Yi−1[3])とする。
・GHASH関数の演算結果を格納するための4個の要素からなる符号なし32ビットの配列Z[4]を準備し、それぞれ0で初期化する。すなわち、Z[0]=032,・・・,Z[3]=032とする。
・ガロア体上の乗算演算(×)を行うための符号なし32ビットの配列V[4]を準備し、GHASH関数のサブキーHを格納する。具体的には、V[0]=(H[0]<<24)|(H[1]<<16)|(H[2]<<8)|H[3],・・・,V[3]=(H[12]<<24)|(H[13]<<16)|(H[14]<<8)|H[15]とする。
・Z[0]とV[0]とのビット毎の排他的論理和を演算し、演算結果をZ[0]に代入する。すなわち、Z[0]=Z[0]^V[0]とする。
・Z[1]とV[1]とのビット毎の排他的論理和を演算し、演算結果をZ[1]に代入する。すなわち、Z[1]=Z[1]^V[1]とする。
・・・
・Z[3]とV[3]とのビット毎の排他的論理和を演算し、演算結果をZ[3]に代入する。すなわち、Z[3]=Z[3]^V[3]とする。
・kに231を代入する。
・jの値に1を加算した結果をjに代入する。換言すれば、jの値をインクリメントする。
・x=((Xi[4j]^Yi−1[4j])<<24)|((Xi[4j+1]^Yi−1[4j+1])<<16)|((Xi[4j+2]^Yi−1[4j+2])<<8)|(Xi[4j+3]^Yi−1[4j+3])とする。
・V[3]を右に1ビットシフト演算した演算結果とV[2]を左に31ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[3]に代入する。すなわち、V[3]=(V[3]>>1)|(V[2]<<31)とする。
・V[2]を右に1ビットシフト演算した演算結果とV[1]を左に31ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[2]に代入する。すなわち、V[2]=(V[2]>>1)|(V[1]<<31)とする。
・V[1]を右に1ビットシフト演算した演算結果とV[0]を左に31ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[1]に代入する。すなわち、V[1]=(V[1]>>1)|(V[0]<<31)とする。
・V[0]を右に1ビットシフト演算した演算結果とrとのビット毎の排他的論理和を演算し、演算結果をV[0]に代入する。すなわち、V[0]=(V[0]>>1)^rとする。
なお、上記のステップS507の処理は、V[0]〜[3]に格納されているビット列を左から順に並べたビット列をVとすれば、このVのビット列を右に1ビットシフト演算し、この演算結果の上位32ビットとrとの排他的論理和を演算することに等しい。
・iの値に1を加算した結果をiに代入する。換言すれば、iの値をインクリメントする。
・Yi−1[0]に、Z[0]を右に24ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[0]=(Z[0]>>24)&0xFFとする。
・Yi−1[1]に、Z[0]を右に16ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[1]=(Z[0]>>16)&0xFFとする。
・Yi−1[2]に、Z[0]を右に8ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[2]=(Z[0]>>8)&0xFFとする。
・Yi−1[3]に、Z[0]の下位8ビットを代入する。すなわち、Yi−1[3]=Z[0]&0xFFとする。
・Yi−1[4]に、Z[1]を右に24ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[4]=(Z[1]>>24)&0xFFとする。
・・・
・Yi−1[14]に、Z[3]を右に8ビットシフト演算した演算結果の下位8ビットを代入する。すなわち、Yi−1[14]=(Z[3]>>8)&0xFFとする。
・Yi−1[15]に、Z[3]の下位8ビットを代入する。すなわち、Yi−1[15]=Z[3]&0xFFとする。
11 MPU
12 RAM
13 ROM
14 外部I/F
110 暗号化部
120 分割部
130 ハッシュ演算部
140 認証タグ生成部
1000 認証対象メッセージ
2000 変換テーブル
B バス
Claims (8)
- ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置であって、
少なくとも所定の認証パラメータと前記暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割する分割手段と、
前記分割手段により分割された1以上のブロックを、所定のアルゴリズムからなるGHASH関数により前記ブロック毎に順次演算するハッシュ演算手段と、
前記ハッシュ演算手段による演算結果を前記暗号化部により暗号化した第2の暗号化情報を生成し、該第2の暗号化情報から前記第1の暗号化情報の完全性の検証及び前記第1の暗号化情報の復号を行う主体の認証を行うための認証タグを生成する認証タグ生成手段と、を有し、
前記GHASH関数は、128ビットの所定の配列を用いて、該所定の配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数を演算し、該必要な回数分まとめてシフト演算を実行する情報処理装置。 - GF(2128)で表されるガロア体上の既約多項式に対応するビット列について、前記所定の配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数に応じて前記ビット列を変換させた変換テーブルを記憶する記憶手段を有し、
前記GHASH関数は、前記所定のアルゴリズムにおける前記所定の配列に格納されている情報と前記ビット列との排他的論理和演算について、前記シフト演算が必要な回数の演算結果に応じて、前記変換テーブルの変換後のビット列を用いて、前記所定の配列に格納されている情報と前記変換後のビット列との排他的論理和演算を実行する、請求項1記載の情報処理装置。 - 前記GHASH関数は、前記所定のアルゴリズムにおける前記所定の配列に格納されている情報とGF(2128)で表されるガロア体上の既約多項式に対応するビット列との排他的論理和演算について、前記所定の配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数が1回又は2回のいずれかに応じて、前記所定の配列に格納されている情報と前記回数に応じたビット列との排他的論理和演算を実行する、請求項2記載の情報処理装置。
- 前記所定の配列は、8ビットの要素が16個含まれる配列である、請求項1乃至3
の何れか一項に記載の情報処理装置。 - 前記所定の配列は、16ビットの要素が8個含まれる配列である、請求項1乃至3
の何れか一項に記載の情報処理装置。 - 前記所定の配列は、32ビットの要素が4個含まれる配列である、請求項1乃至3
の何れか一項に記載の情報処理装置。 - ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置を、
少なくとも所定の認証パラメータと前記暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割する分割手段、
前記分割手段により分割された1以上のブロックを、所定のアルゴリズムからなるGHASH関数により前記ブロック毎に順次演算するハッシュ演算手段、
前記ハッシュ演算手段による演算結果を前記暗号化部により暗号化した第2の暗号化情報を生成し、該第2の暗号化情報から前記第1の暗号化情報の完全性の検証及び前記第1の暗号化情報の復号を行う主体の認証を行うための認証タグを生成する認証タグ生成手段、
として機能させ、
前記GHASH関数は、128ビットの所定の配列を用いて、該配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数を演算し、該必要な回数分まとめてシフト演算を実行するプログラム。 - ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置を、
少なくとも所定の認証パラメータと前記暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割する分割手段、
前記分割手段により分割された1以上のブロックを、所定のアルゴリズムからなるGHASH関数により前記ブロック毎に順次演算するハッシュ演算手段、
前記ハッシュ演算手段による演算結果を前記暗号化部により暗号化した第2の暗号化情報を生成し、該第2の暗号化情報から前記第1の暗号化情報の完全性の検証及び前記第1の暗号化情報の復号を行う主体の認証を行うための認証タグを生成する認証タグ生成手段、
として機能させ、
前記GHASH関数は、128ビットの所定の配列を用いて、該配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数を演算し、該必要な回数分まとめてシフト演算を実行するプログラムが格納された記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014081338 | 2014-04-10 | ||
JP2014081338 | 2014-04-10 | ||
PCT/JP2015/053076 WO2015156020A1 (ja) | 2014-04-10 | 2015-02-04 | 情報処理装置、プログラム及び記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6044738B2 true JP6044738B2 (ja) | 2016-12-14 |
JPWO2015156020A1 JPWO2015156020A1 (ja) | 2017-04-13 |
Family
ID=54287601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016512615A Active JP6044738B2 (ja) | 2014-04-10 | 2015-02-04 | 情報処理装置、プログラム及び記憶媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10044499B2 (ja) |
EP (1) | EP3032523B1 (ja) |
JP (1) | JP6044738B2 (ja) |
WO (1) | WO2015156020A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3032523B1 (en) * | 2014-04-10 | 2019-03-27 | Fuji Electric Co., Ltd. | Information processing device, program, and storage medium |
JP6750985B2 (ja) * | 2016-04-15 | 2020-09-02 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | 通信装置および通信方法 |
US9680653B1 (en) * | 2016-10-13 | 2017-06-13 | International Business Machines Corporation | Cipher message with authentication instruction |
CN108173640B (zh) * | 2017-12-11 | 2020-12-15 | 上海高顿教育科技有限公司 | 一种高安全性的字符串对称加密和解密方法 |
US11516013B2 (en) * | 2018-06-28 | 2022-11-29 | Intel Corporation | Accelerator for encrypting or decrypting confidential data with additional authentication data |
CN112422494B (zh) * | 2020-08-06 | 2022-09-23 | 上海幻电信息科技有限公司 | 数据传输方法、数据安全验证方法及数据传输系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060126835A1 (en) * | 2004-12-13 | 2006-06-15 | Kim Kwang O | High-speed GCM-AES block cipher apparatus and method |
US20080240423A1 (en) * | 2007-03-28 | 2008-10-02 | Shay Gueron | Speeding up galois counter mode (gcm) computations |
JP2014002230A (ja) * | 2012-06-18 | 2014-01-09 | Nippon Telegr & Teleph Corp <Ntt> | 認証暗号化装置、認証復号装置、およびプログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2817992B1 (fr) * | 2000-12-12 | 2003-04-18 | Philippe Charles Gab Guillemot | Dispositif d'ecran video numerique |
US9209967B2 (en) * | 2007-03-12 | 2015-12-08 | Exelis, Inc. | Precalculated encryption key |
TWI342703B (en) * | 2007-05-10 | 2011-05-21 | Ind Tech Res Inst | Low-latency method and apparatus of ghash operation for authenticated encryption galois counter mode |
US20090080646A1 (en) * | 2007-09-21 | 2009-03-26 | Chih-Hsu Yen | Method And Architecture For Parallel Calculating Ghash Of Galois Counter Mode |
US8231195B2 (en) * | 2008-05-08 | 2012-07-31 | Canon Kabushiki Kaisha | Print element substrate, printhead, and printing apparatus |
US8767957B1 (en) * | 2008-10-29 | 2014-07-01 | Purdue Research Foundation | Communication encryption method and device |
US20100303229A1 (en) * | 2009-05-27 | 2010-12-02 | Unruh Gregory | Modified counter mode encryption |
US8290147B2 (en) * | 2009-10-30 | 2012-10-16 | General Dynamics C4 Systems, Inc. | Systems and methods for efficiently creating digests of digital data |
EP3032523B1 (en) * | 2014-04-10 | 2019-03-27 | Fuji Electric Co., Ltd. | Information processing device, program, and storage medium |
US9680653B1 (en) * | 2016-10-13 | 2017-06-13 | International Business Machines Corporation | Cipher message with authentication instruction |
-
2015
- 2015-02-04 EP EP15776988.6A patent/EP3032523B1/en active Active
- 2015-02-04 JP JP2016512615A patent/JP6044738B2/ja active Active
- 2015-02-04 WO PCT/JP2015/053076 patent/WO2015156020A1/ja active Application Filing
- 2015-02-04 US US14/917,331 patent/US10044499B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060126835A1 (en) * | 2004-12-13 | 2006-06-15 | Kim Kwang O | High-speed GCM-AES block cipher apparatus and method |
US20080240423A1 (en) * | 2007-03-28 | 2008-10-02 | Shay Gueron | Speeding up galois counter mode (gcm) computations |
JP2014002230A (ja) * | 2012-06-18 | 2014-01-09 | Nippon Telegr & Teleph Corp <Ntt> | 認証暗号化装置、認証復号装置、およびプログラム |
Non-Patent Citations (3)
Title |
---|
JPN6016030581; Morris Dworkin: 'Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC' NIST Special Publication 800-38D, 200711 * |
JPN6016030582; Darrel Hankerson, Alfred Menezes and Scott Vanstone: Guide to Elliptic Curve Cryptography , 2004, p.47-56, 215, 216, Springer-Verlag New York, Inc. * |
JPN7016002340; Seog Chung Seo, et al.: 'TinyECCK: Effcient Elliptic CurveCryptography Implementation over GF(2m) on 8-bit MICAz Mote' IEICE TRANSACTIONS on Information and Systems Vol.E91-D No.5, 20080501, p.1338-1347 * |
Also Published As
Publication number | Publication date |
---|---|
US10044499B2 (en) | 2018-08-07 |
EP3032523A4 (en) | 2016-08-10 |
US20160226660A1 (en) | 2016-08-04 |
EP3032523B1 (en) | 2019-03-27 |
JPWO2015156020A1 (ja) | 2017-04-13 |
WO2015156020A1 (ja) | 2015-10-15 |
EP3032523A1 (en) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6044738B2 (ja) | 情報処理装置、プログラム及び記憶媒体 | |
JP6083234B2 (ja) | 暗号処理装置 | |
EP1927212B1 (en) | Homophonic substitution symmetric key encryption | |
WO2019114122A1 (zh) | 登录信息的加密方法、装置、电子设备及介质 | |
WO2014109828A2 (en) | Method for secure substring search | |
JP6575532B2 (ja) | 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム | |
JP5852518B2 (ja) | 認証暗号化装置、認証復号装置、およびプログラム | |
JP2016114855A (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP2007316614A (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
US20130243191A1 (en) | Encryption key generating apparatus | |
JP2013138409A (ja) | 情報処理装置およびその方法 | |
US20200186328A1 (en) | Encryption device, decryption device, encryption method, decryption method, and computer readable medium | |
CN112740618A (zh) | 签名装置、验证装置、签名系统、签名方法、签名程序、验证方法以及验证程序 | |
CN111385092B (zh) | 使用信息盲化的密码装置及其密码处理方法 | |
JP6890589B2 (ja) | 計算デバイス及び方法 | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
RU2188513C2 (ru) | Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки | |
JP5354914B2 (ja) | 暗号処理装置及び復号処理装置及びプログラム | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
JP6904417B2 (ja) | 乱数算出装置、乱数算出方法、暗号装置、及び、乱数算出プログラム | |
JP5268011B2 (ja) | 暗号化システム及び復号化システム | |
JP6876423B2 (ja) | ストリーム暗号における内部状態の初期化装置、方法及びプログラム | |
KR20230061028A (ko) | 부채널 공격을 방지하기 위한 암호문 비교 장치 및 방법 | |
CN114547645A (zh) | 浮点数处理方法、装置、终端以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160920 |
|
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: 20161018 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161031 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6044738 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |