JP6044738B2 - 情報処理装置、プログラム及び記憶媒体 - Google Patents

情報処理装置、プログラム及び記憶媒体 Download PDF

Info

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
Application number
JP2016512615A
Other languages
English (en)
Other versions
JPWO2015156020A1 (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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Application granted granted Critical
Publication of JP6044738B2 publication Critical patent/JP6044738B2/ja
Publication of JPWO2015156020A1 publication Critical patent/JPWO2015156020A1/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/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]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Description

本発明は、情報処理装置、プログラム及び記憶媒体に関する。
近年、組込機器においてもセキュリティ的な観点から暗号機能を搭載する必要が高まっている。このような暗号機能に用いられる暗号方式として、例えば、共通鍵暗号方式であるAES(Advanced Encryption Standard)の利用モードとしてGCM(Galois/Counter Mode)を用いるAES−GCMが挙げられる。
AES−GCMに用いられる暗号化アルゴリズムεは、秘密鍵K、イニシャルベクタIV、平文メッセージP、認証パラメータAを入力として、暗号文C及び認証タグTを出力する。これを数式で書けば以下のようになる。
Figure 0006044738
ここで、認証パラメータAは、暗号化されずに、認証にのみ使用されるデータである。
上記のようなAES−GCMに用いられる暗号化アルゴリズムεは、AES暗号化関数、GCTR関数及びGHASH関数で構成される(例えば、非特許文献1参照)。
NIST: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC, NIST Special Publication 800-38D, November, 2007.
ここで、組込機器においては、汎用的なコンピュータシステムと比べて比較的安価なCPU(Central Processing Unit)やMPU(Micro Processing Unit)、ROM(Read Only Memory)などが搭載される。したがって、組込機器においては、限られたハードウェア資源の中で演算時間の高速化を図るため、効率的なアルゴリズムで上記の暗号化アルゴリズムεを実装する必要がある。
他方、上記の暗号化アルゴリズムεにおいては、認証タグTの生成などに用いられるGHASH関数の演算時間が暗号化アルゴリズムε全体の演算時間を大きく左右している。したがって、GHASH関数のアルゴリズムを効率化し、GHASH関数の演算時間を減少させることで、暗号化アルゴリズムε全体の演算時間を減少させることができる。
本発明の一実施形態は、上記の点に鑑みてなされたもので、効率のよいGHASH関数の演算を行うことを目的とする。
上記目的を達成するため、本発明の一実施形態は、ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置であって、少なくとも所定の認証パラメータと、暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割し、この分割された1以上のブロックを、16個の要素からなる8ビットの配列を複数用いて、所定のアルゴリズムからなるGHASH関数によりブロック毎に順次演算し、演算結果を暗号化部により暗号化した第2の暗号化情報を生成し、認証タグを生成する。
本発明の一実施形態によれば、効率のよいGHASH関数の演算を行うことができる。
第1の実施形態に係る情報処理装置の一例のハードウェア構成図である。 第1の実施形態に係る情報処理装置の一例の機能構成図である。 認証対象メッセージの一例の構成図である。 第1の実施形態に係る認証タグ生成処理の一例のフローチャートである。 GHASH関数の演算処理の概略を説明するための一例の説明図である。 第1の実施形態に係るGHASH関数の演算処理の一例のフローチャート(1/2)である。 第1の実施形態に係るGHASH関数の演算処理の一例のフローチャート(2/2)である。 第2の実施形態に係る情報処理装置の一例の機能構成図である。 変換テーブルの一例の構成図である。 第2の実施形態に係るGHASH関数の演算処理の一例のフローチャート(1/2)である。 第2の実施形態に係るGHASH関数の演算処理の一例のフローチャート(2/2)である。 第3の実施形態に係るGHASH関数の演算処理の一例のフローチャート(1/2)である。 第3の実施形態に係るGHASH関数の演算処理の一例のフローチャート(2/2)である。 第4の実施形態に係るGHASH関数の演算処理の一例のフローチャート(1/2)である。 第4の実施形態に係るGHASH関数の演算処理の一例のフローチャート(2/2)である。 第5の実施形態に係るGHASH関数の演算処理の一例のフローチャート(1/2)である。 第5の実施形態に係るGHASH関数の演算処理の一例のフローチャート(2/2)である。
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[第1の実施形態]
<ハードウェア構成>
本実施形態における各種処理を実行可能な情報処理装置の一構成例について説明する。図1は、第1の実施形態に係る情報処理装置の一例のハードウェア構成図である。
図1に示すように、情報処理装置10は、MPU11、RAM(Random Access Memory)12、ROM13、外部I/F14を備える。また、情報処理装置10のこれら各部は、バスBを介して相互に接続されている。
MPU11は、ROM13に格納されているプログラムやデータ(例えば、本実施形態を実現するプログラムやデータ)をRAM12上に読み出し、処理を実行することで、情報処理装置10全体の制御や機能を実現する演算装置である。
RAM12は、プログラムやデータを一時的に保持する揮発性の半導体メモリ(記憶装置)である。
ROM13は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。
外部I/F14は、外部機器と接続するためのインタフェースである。外部I/F14には、例えばLAN(Local Area Network)コントローラなどの通信デバイスやUSB(Universal Serial Bus)メモリなどの補助記憶装置(記憶媒体)が接続される。このため、例えば、補助記憶装置に格納された本実施形態を実現するプログラムやデータが、外部I/F14を介して、RAM12上に読み出されてもよい。
なお、図1に示される本実施形態に係る情報処理装置10のハードウェア構成は一例であり、情報処理装置10は、その他の任意のハードウェアを有する構成であってもよい。
ここで、以降では、本実施形態に係る情報処理装置10は、産業用機器や家電製品などの他の電子機器に内蔵される、いわゆる組み込みシステムであるものとして説明する。したがって、本実施形態に係る情報処理装置10が備えるMPU11、RAM12、ROM13の性能及び容量は、PC(パーソナルコンピュータ)などの汎用的なコンピュータシステムと比べて、大幅に低性能及び低容量であるものとする。換言すれば、本実施形態に係る情報処理装置10のハードウェア資源は、汎用的なコンピュータシステムと比べて、制限的であるものとする。
なお、本実施形態に係る情報処理装置10は、組み込みシステムに限られず、PCなどの汎用的なコンピュータシステムであってもよい。この場合、情報処理装置10は、例えばHDD(Hard Disk Drive)などの補助記憶装置、キーボードやマウスなどの入力装置、ディスプレイなどの表示装置を備えていてもよい。
<機能構成>
次に、本実施形態に係る情報処理装置10の機能構成について説明する。図2は、第1の実施形態に係る情報処理装置の一例の機能構成図である。
情報処理装置10は、暗号化部110、分割部120、ハッシュ演算部130、認証タグ生成部140、認証対象メッセージ1000を有している。
暗号化部110は、与えられた秘密鍵K及びイニシャルベクタIVに基づいてGCTR関数により、入力された情報を暗号化する。なお、GCTR関数で用いる暗号化関数は、ブロック暗号に用いられる任意の暗号化関数(暗号化エンジン)を用いてよい。すなわち、暗号化関数として、AES−GCMで用いられるAES暗号化関数の他に、例えば、DES(Data Encryption Standard)、トリプルDES、Camelliaなどで暗号化を行う暗号化関数を用いてもよい。なお、以降、本実施形態に係る情報処理装置10の暗号化部110は、暗号化関数としてAES暗号化関数を用いて、GCTR関数の演算を行うものとして説明する。換言すれば、本実施形態に係る情報処理装置10は、AES−GCMにより暗号化を行うものとする。
分割部120は、認証対象メッセージ1000を128ビット毎のブロックに分割する処理を行う。
ハッシュ演算部130は、分割部120により128ビット毎のブロックに分割された認証対象メッセージ1000を入力としてGHASH関数の演算を行う。
認証タグ生成部140は、GHASH関数の演算結果(ハッシュ値)を暗号化部110で暗号化した情報から認証タグTを生成する。認証タグ生成部140は、例えば、暗号化したGHASH関数のハッシュ値から所定数の上位ビットを抽出することで認証タグTを生成する。
認証対象メッセージ1000は、GHASH関数への入力データである。認証対象メッセージ1000は、例えば図3に示されるような構成を有している。なお、認証対象メッセージ1000は、例えばROM13などの記憶装置に記憶されている。
図3は、認証対象メッセージの一例の構成図である。図3に示される認証対象メッセージ1000は、認証パラメータAと、所定のvビットからなる0と、暗号文Cと、所定のuビットからなる0と、(len(A))64で表されるビット列と、(len(C))64で表されるビット列とから構成される。
認証パラメータAは、暗号化を行う側及び復号を行う側の間で予め定められた暗号化されていない所定の情報である。認証パラメータAは、暗号化を行う側及び復号を行う側の間で任意に定めることができる情報である。
また、上記におけるv及びuは、それぞれ、以下の式により定義される。
Figure 0006044738
Figure 0006044738
ここで、len(A)及びlen(C)は、それぞれ認証パラメータA及び暗号文Cのビット列の長さである。また、[len(A)/128]及び[len(C)/128]は、それぞれlen(A)/128以上の最小の整数及びlen(C)/128以上の最小の整数である。
暗号文Cは、暗号化されていない平文情報Pを、暗号化部110により暗号化した暗号文である。また、(len(A))64及び(len(C))64は、それぞれlen(A)を64ビットで表したビット列及びlen(C)を64ビットで表したビット列である。
上記のような構成の認証対象メッセージ1000に基づいて認証タグTを生成することにより、暗号文Cを復号する側において、受け取った暗号文Cの完全性及び復号側の主体の認証を行うことができる。
<処理の詳細>
次に、本実施形態に係る情報処理装置10の処理の詳細について、図面を参照しつつ説明する。
《認証タグ生成処理》
まず、認証タグ生成処理について説明する。図4は、第1の実施形態に係る認証タグ生成処理の一例のフローチャートである。
分割部120は、認証対象メッセージ1000を128ビット毎のブロックに分割する(ステップS101)。ここで、認証対象メッセージ1000は、m個のブロックに分割されたものとし、この分割された各ブロックX(i=1,・・・,m)と表す。
次に、ハッシュ演算部130は、分割部120により分割された認証対象メッセージ1000を入力し、GHASH関数により演算を行う(ステップS102)。ここで、ハッシュ演算部130が行うGHASH関数による演算処理の概略を図5を用いて説明する。図5は、GHASH関数の演算処理の概略を説明するための一例の説明図である。
図5において、X,X,・・・,Xは、分割部120により分割された認証対象メッセージ1000の各ブロックである。また、Yは、各ビット成分が0の128ビットのビット列である。また、Hは、各ビット成分が0の128ビットのビット列を、AES暗号化関数により暗号化したビット列(なお、このビット列は128ビットである。)である。なお、このHは、GHASH関数のサブキーである。このとき、ハッシュ演算部130は、X,X,・・・,Xを入力としてGHASH関数により以下の演算処理を行う。
Step1)ハッシュ演算部130は、XとYとのビット毎の排他的論理和(+)を演算する。次に、ハッシュ演算部130は、X(+)Yの演算結果とHとの乗算(×)を演算する。ここで、乗算演算子(×)は、ガロア体GF(2128)上の乗算演算子である。以上を換言すれば、ハッシュ演算部130はStep1において、Y=(X(+)Y)(×)Hを演算する。
なお、ガロア体GF(2128)の元X及びYについて、ガロア体GF(2128)上の乗算演算子(×)による演算X(×)Yの演算結果Z128は、i=0,・・・,127に対して、以下で定義される式を順次演算することにより得られる。なお、bは、Xの最上位ビットからi番目のビットを表す。すなわち、Xは、ビット列b・・・b127を用いてX=b・・・b127と表されるものとする。
Figure 0006044738
ここで、Zは各ビット成分が0の128ビットのビット列である。また、VはYであり、「>>」は、右にビット列をシフトするシフト演算子である。さらに、Rは、上位8ビットのビット成分が「11100001」で表され、下位120ビットのビット成分がすべて0のビット列である。換言すれば、Rは、ガロア体GF(2128)の既約多項式x127+x126+x125+x120に対応するビット列である。
Step2)ハッシュ演算部130は、XとYとのビット毎の排他的論理和(+)を演算する。次に、ハッシュ演算部130は、X(+)Yの演算結果とHとの乗算(×)を演算する。以上を換言すれば、ハッシュ演算部130はStep2において、Y=(X(+)Y)(×)Hを演算する。
ハッシュ演算部130は、以上のような処理すべてのブロックX,X,・・・,Xに対して行う。換言すれば、ハッシュ演算部130は、i=1,・・・,mに対し、Y=(Yi−1(+)X)(×)Hを演算する。そして、最終的に得られるビット列YがGHASH関数のハッシュ値である。以上、概略を説明したGHASH関数の演算処理についての詳細は後述する。
図4の説明に戻る。暗号化部110は、予め与えられた秘密鍵K及びイニシャルベクタIVに基づいてGCTR関数によりハッシュ値Yを暗号化する(ステップS103)。なお、このとき暗号化部110が用いるGCTR関数は、平文情報Pを暗号化して暗号文Cを生成した際に用いたGCTR関数と同様の秘密鍵Kを用いる(ただし、イニシャルカウンタブロック(ICB)は異なる)。
続いて、認証タグ生成部140は、上記のステップS103において暗号化した情報から所定の上位tビットを抽出することで認証タグTを生成する(ステップS104)。ここで、tは予め定められた1以上128以下の数値である。
以上により、本実施形態に係る情報処理装置10は、認証パラメータAと暗号文Cを含む認証対象メッセージ1000を入力としてGHASH関数のハッシュ値を得る。そして、このハッシュ値を暗号化した後、この暗号化した情報について所定数の上位ビットを抽出することにより認証タグTを得ることができる。なお、暗号文Cを復号する復号側においても同様の処理により認証タグTを得ることにより、暗号文Cの完全性の検証及び復号側の主体の認証を行うことができる。
《GHASH関数の演算処理》
次に、図4のステップS102におけるGHASH関数の演算処理について、図6及び図7を用いて詳細に説明する。
ステップS201において、ハッシュ演算部130は、m個のブロックに分割された認証対象メッセージ1000のi番目のブロックを表す変数としてiを準備し、iを1に初期化する。また、ハッシュ演算部130は、16個の要素からなる符号なし8ビットの配列Y[16]を準備し、それぞれ0で初期化する。すなわち、Y[0]=00000000,・・・,Y[15]=00000000とする。なお、この配列Y[16]は、図5を用いて説明したGHASH関数の演算処理の概略のStep1において、最初のブロックXとの排他的論理和を演算する被演算子Yに相当する。
ステップS202において、ハッシュ演算部130は、m個のブロックに分割された認証対象メッセージ1000のi番目のブロックを格納するための16個の要素からなる符号なし8ビットの配列X[16]を準備し、この配列X[16]にi番目のブロックを入力する。また、ハッシュ演算部130は、この配列X[16]との排他的論理和を演算する被演算子を格納するための符号なし8ビットの配列Yi−1[16]を入力する。ここで、iが1のとき、配列Yi−1[16]は上記のステップS201で初期化した配列Y[16]である。すなわち、例えば、図5を用いて説明したStep1では、配列X[16]には128ビットのブロックXを格納して入力し、配列Y[16]には128ビットのブロックYを格納して入力する。このように、本実施形態に係る情報処理装置10におけるGHASH関数の演算処理では、128ビットのブロックを16個の要素からなる8ビットの配列に格納する。これにより、GHASH関数の演算処理を配列の1要素毎に繰り返し行うことができる。
ステップS203において、ハッシュ演算部130は、各種ローカル変数や配列の初期化を行う。具体的には、ハッシュ演算部130は以下を行う。
・配列X[16]及び配列Yi−1[16]のj番目の要素を表す変数jを準備し、jを0に初期化する。
・ある特定のビットが1であるか否かを判定するために用いる変数kを準備し、kを2に初期化する。
・配列X[16]及び配列Yi−1[16]のj番目の要素のビット毎の排他的論理和の演算結果を格納する符号なし8ビットの変数xを準備し、xに、X[0]とYi−1[0]とのビット毎の排他的論理和の演算結果を代入する。すなわち、x=X[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)として行うことができる。
ステップS204において、ハッシュ演算部130は、xとkのビット毎の論理積の演算結果が0であるか否かを判定する。ここで、演算子「&」は、ビット毎の論理積を示す演算子である。ここで、例えばkが128(2)である場合、x&kが0であるか否かを判定することは、xの最上位ビットが0であるか否かを判定することに等しい。同様に、後述する処理においてkが1ビット右にシフトされた結果、kの値が64(2)になった場合、x&kが0であるか否かを判定することは、xの最上位ビットから1ビット下位のビット(左から2番目のビット)が0であるか否かを判定することに等しい。換言すれば、b・・・bを8ビットのビット列としてx=b・・・bと表されるとすれば、ハッシュ演算部130は、xのビット列を最上位ビットbから順に最下位bまで、該当のビットが0であるか否かを繰り返し判定する。ハッシュ演算部130は、x&kの演算結果が0でない場合、ステップS205に進み、他方、x&kの演算結果が0である場合、ステップS206に進む。
ステップS205において、ハッシュ演算部130は、配列Z[16]と配列V[16]の各要素についてそれぞれビット毎の排他的論理和を演算し、演算結果をそれぞれ配列Z[16]に代入する。具体的には、ハッシュ演算部130は、以下の処理を行う。
・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関数の演算速度の高速化を図ることができる。
一般に、for文などの繰り返し処理を用いる場合、for文中に記述された処理を行った後、カウンタをインクリメントし、for文の先頭に戻り、繰り返しを行うか否かの判定を行う。したがって、本実施形態に係る情報処理装置10のように、汎用的なコンピュータシステムと比較して演算速度が遅い組み込みシステムにおいては、繰り返し処理を用いずに処理を記述した方が演算時間削減の効果が顕著に現れる。
ステップS206において、ハッシュ演算部130は、kが1より大きいか否かを判定する。ハッシュ演算部130は、kが1より大きい場合、ステップS207に進む。他方、ハッシュ演算部130は、kが1以下の場合(すなわち、kが1である場合)、ステップS208に進む。
ステップS207において、ハッシュ演算部130は、kを1ビット右にシフトするシフト演算を行い、この演算結果をkに代入する。すなわち、k>>=1とする。これにより、ハッシュ演算部130は、上述したステップS204の処理において、xのビット列について、上位ビットから順に1であるか否かを判定することができる。なお、演算子「>>=」は、右シフト演算した結果を代入するための複合代入演算子である。
ステップS208において、ハッシュ演算部130は、jが15より小さいか否かを判定する。ハッシュ演算部130は、jが15より小さい場合、ステップS209に進む。他方、ハッシュ演算部130は、jが15以上の場合(すなわち、jが15である場合)、ステップS214に進む。なお、jが15である場合とは、認証対象メッセージ1000の分割された1つのブロックXの演算処理が完了した場合である。したがって、後述するステップS214〜S215の処理において、このときのiがmである場合(すなわち、認証対象メッセージ1000の最後のブロックの演算処理が完了した場合)、ハッシュ値を出力する。他方、iがmより小さい場合は、認証対象メッセージ1000の次のブロックの演算処理を行う。
ステップS209において、ハッシュ演算部130は、以下の代入処理を行う。
・kに2を代入する。
・jの値に1を加算した結果をjに代入する。換言すれば、jの値をインクリメントする。
・xに、X[j]とYi−1[j]とのビット毎の排他的論理和の演算結果を代入する。すなわち、x=X[j]^Yi−1[j]とする。
これにより、配列X[16]及び配列Yi−1[16]について、次の要素のGHASH関数の演算処理を行うことができる。
ステップS210において、ハッシュ演算部130は、V[15]と1とのビット毎の論理積の演算結果が0であるか否かを判定する。すなわち、ハッシュ演算部130は、V[15]の最下位ビットが0であるか否かを判定する。これは、換言すれば、ハッシュ演算部130は、V[0]〜V[15]に格納されているビット列を左から順に並べたビット列をVとすれば、このVの最下位ビットが0であるか否かを判定することに等しい。ハッシュ演算部130は、V[15]と1とのビット毎の論理積の演算結果が0でない場合(すなわち、演算結果が1である場合)、ステップS211に進み、演算結果が0である場合、ステップS212に進む。
ステップS211において、ハッシュ演算部130は、符号なし8ビットの変数rに16進数「0xE1」を代入する。換言すれば、ハッシュ演算部130は、rにビット列「11100001」を代入する。これは、ガロア体GF(2128)の既約多項式x127+x126+x125+x120に対応するビット列の上位8ビットに相当する。
ステップS212において、ハッシュ演算部130は、符号なし8ビットの変数rに0を代入する。
ステップS213において、ハッシュ演算部130は、配列V[16]に対して以下の演算処理及び代入処理を行う。
・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)である。
以上のステップS213の処理についてもステップS205と同様に、ハッシュ演算部130は、例えば、C言語におけるfor文などの繰り返し処理を用いずに行う。これにより、for文などの繰り返し処理を行う場合と比較してGHASH関数の演算速度の高速化を図ることができる。
ここで、ハッシュ演算部130は、上記のステップS213の処理の後、ステップS204の処理へ戻る。これにより、ハッシュ演算部130は、現在着目しているx=b・・・bのあるビットbの次のビットbl+1についてGHASH関数の演算を行う(ただし、l<7)。なお、l=7の場合は、配列X[j]及び配列Yi−1[j]の次の要素をビット毎の排他的論理和で演算した演算結果の最上位ビットについてGHASH演算を行う(ただし、j<15)。
ステップS214において、ハッシュ演算部130は、以下の代入処理を行う。
・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]とする。
ステップS215において、ハッシュ演算部130は、iの値がmより大きいか否かを判定する。ハッシュ演算部130は、iの値がmより大きい場合(すなわち、iがm+1の場合)、処理を終了させる。このとき、ハッシュ演算部130は、配列Yi−1[16](すなわち、配列Y[16])をハッシュ値として出力する。他方、ハッシュ演算部130は、iの値がm以下の場合、ステップS202の処理に戻る。すなわち、ハッシュ演算部130は、ステップS202において、認証対象メッセージ1000の次のブロックXを代入した配列X[16]と、ステップS214で得た配列Yi―1[16]を入力としてGHASH関数の演算処理を行う。
なお、上記において図6及び図7を用いて説明したGHASH関数の演算処理は、AES−GCMによる平文メッセージPの暗号化(又は暗号文Cの復号)処理と並列に行うことができる。換言すれば、GHASH関数の演算処理は、認証対象メッセージ1000がすべて揃っていなくても(例えば、暗号文Cが作成途中などであっても)、認証対象メッセージ1000に少なくとも128ビットのデータが含まれていれば、128ビットずつ処理を行うことができる。このことは、以降において説明するGHASH関数の演算処理においても同様である。
以上のように、本実施形態に係る情報処理装置10は、GHASH関数の演算処理において、配列の各要素に対する演算処理及び代入処理を行うための繰り返し処理を用いず処理を行う。したがって、繰り返し処理に伴う変数のインクリメントやジャンプ処理、判定処理を省くことでハードウェア資源を効率的に使用することができ、処理の高速化を図ることができる。これは、本実施形態に係る情報処理装置10のように、コスト的制約が伴うことにより汎用的なコンピュータシステムに比べて比較的低価格のMPU11等が搭載される組込み機器において特に実益があるものと考えられる。なお、本実施形態に係る情報処理装置10のGHASH関数は、配列の要素への代入処理を、繰り返し処理を用いずに逐次処理(順次処理)として処理する。このため、プログラム容量は若干増えるものの、同スペックのMPU11を用いた場合、GHASH関数の演算処理は約2〜4倍程度高速化される。
[第2の実施形態]
次に、第2の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において、配列V[16]を1ビットずつシフトさせるのではなく、必要なビット数をまとめてシフトさせることが第1の実施形態と相違する。また、配列V[16]を複数ビットシフトさせた場合に用いるr(ガロア体GF(2128)上の既約多項式に対応するビット列)の変換テーブルを使用する。
<機能構成>
次に、本実施形態に係る情報処理装置10の機能構成について説明する。図8は、第2の実施形態に係る情報処理装置の一例の機能構成図である。本実施形態に係る情報処理装置10の機構構成は、変換テーブル2000を有する点が第1の実施形態の情報処理装置10と相違する。
変換テーブル2000は、図9に示されるデータ構成を有している。図9では、変換テーブル2000は、256個の要素からなる符号なし16ビットの配列Rmap[256]で定義されている。この変換テーブル2000は、GHASH関数の演算処理において配列V[16]を何ビットシフトさせる必要があるのかに応じて、rの値を変換テーブル2000の対応する要素に変換するためのものである。
<処理の詳細>
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第1の実施形態と相違する。
《GHASH関数の演算処理》
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図10及び図11を用いて詳細に説明する。なお、上記第1の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図6及び図7)との相違点は、ステップS301〜ステップS308に示す処理である。そこで、以下では、ステップS301〜ステップS308に示す処理について説明する。
ステップS301において、ハッシュ演算部130は、各種ローカル変数や配列の初期化を行う。具体的には、ハッシュ演算部130は、第1の実施形態における図6のステップS203の処理に加えて、以下の処理を行う。
・配列V[16]をシフト演算するためのシフト数をカウントする変数sBitを準備し、sBitを0に初期化する。
ステップS302において、ハッシュ演算部130は、sBitが0より大きいか否かを判定する。すなわち、ハッシュ演算部130は、配列V[16]をシフト演算する必要があるか否かを判定する。ハッシュ演算部130は、sBitが0より大きい場合(すなわち、シフト演算する必要がある場合)、ステップS303に進む。他方、ハッシュ演算部130は、sBitが0である場合(すなわち、シフト演算する必要がない場合)、ステップS205に進む。
ステップS303において、ハッシュ演算部130は、sBitが7より大きいか否かを判定する。これは、配列V[16]のシフト演算を8ビット以下ずつ行わせるためである。したがって、例えばsBitの値が10である場合、ハッシュ演算部130は、8ビットのシフト演算と2ビットのシフト演算を配列V[16]に対して行う。
ステップS304において、ハッシュ演算部130は、配列V[16]を右にシフトさせるビット数pとして8を代入する。
ステップS305において、ハッシュ演算部130は、配列V[16]を右にシフトさせるビット数pとしてsBitの値を代入する。
ステップS306において、ハッシュ演算部130は、以下の処理を行う。
・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]とする。
ここで、例えば、p=1である場合、q=7であるから、(V[15]<<q)の演算結果の1つの候補は128である。したがって、このとき、r=Rmap[128]=0xE100となる。これは、ガロア体GF(2128)上の既約多項式に対応するビット列の上位16ビットに対応する。なお、p=1である場合の(V[15]<<q)の演算結果の他の候補は0である。この場合、r=Rmap[0]=0x0000となる。
同様に、p=2である場合、q=6であるから、(V[15]<<q)の演算結果の値の1つの候補は192である。したがって、このとき、r=Rmap[192]=0x9180となる。これは、ガロア体GF(2128)上の既約多項式に対応するビット列の上位16ビットと、このビット列を右に1ビットシフトしたビット列との排他的論理和を演算した演算結果と一致する。なお、p=2である場合の(V[15]<<q)の演算結果の他の候補は、0,64,128である。これらは、それぞれV[15]の下位2ビットが00,01,10である。
なお、pが3以上の場合も同様の方法により演算することができる。このように、変換テーブル2000は、配列V[16]をシフトさせるビット数に応じて、対応するrの値が定義されたテーブルである。
ステップS307において、ハッシュ演算部130は、配列V[16]に対して以下の演算処理及び代入処理を行う。
・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))とする。
上記ステップS306の処理の後、ハッシュ演算部130は、ステップS302に戻る。したがって、なおsBitの値が1以上である場合、ハッシュ演算部130は、再びステップS303〜S307の処理を行う。これにより、本実施形態に係る情報処理装置10のGHASH関数の演算処理においては、配列V[16]のシフト演算を複数ビットまとめて行うことができる。したがって、配列V[16]に1ビットずつシフト演算を行うことを繰り返すことに比べて、高速に処理を行うことができる。
ステップS308において、ハッシュ演算部130は、sBitの値に1を加算した結果をsBitに代入する。換言すれば、ハッシュ演算部130は、sBitの値をインクリメントする。すなわち、第1の実施形態におけるGHASH関数の演算処理において図7のステップS210〜ステップS213の処理に代えて、ステップS308の処理の処理を行う。これにより、上述したステップS307の処理において配列V[16]をまとめて複数ビットのシフト演算を行うことができる。
以上のように本実施形態に係る情報処理装置10は、GHASH関数の演算処理において、配列のシフト演算を複数ビットまとめて処理する。また、そのためシフト演算するシフト数に応じて、所定の値にrを変換するための変換テーブルを用いる。このように、複数ビットをまとめてシフト演算を行うことシフト演算の演算回数を減少させることができる。したがって、第1の実施形態に係る情報処理装置10におけるGHASH関数の演算処理に比べて、さらに高速化を図ることができる。
[第3の実施形態]
次に、第3の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において、配列V[16]のシフト演算を2ビットシフトさせる処理と1ビットシフトさせる処理とで構成する。これにより、本実施形態に係る情報処理装置10は、変換テーブル2000を有することなく、第1の実施形態よりもGHASG関数の演算処理速度を高速化させることできる。なお、本実施形態に係る情報処理装置10の機能構成は、第1の実施形態に係る情報処理装置10の機能構成と同様である。
<処理の詳細>
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第2の実施形態と相違する。
《GHASH関数の演算処理》
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図12及び図13を用いて詳細に説明する。なお、上記第2の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図10及び図11)との相違点は、ステップS401〜ステップS412に示す処理である。そこで、以下では、ステップS401〜ステップS412に示す処理について説明する。
ステップS401において、ハッシュ演算部130は、sBitが2以上であるか否かを判定する。これにより、sBitが2以上である場合、後述するステップS402〜ステップS407の処理を繰り返し行うことで、配列V[16]のシフト演算を2ビットずつ行う。ハッシュ演算部130は、sBitが2以上である場合、ステップS402に進む。他方、ハッシュ演算部130は、sBitが2未満である場合(すなわち、sBitが0又は1である場合)、ステップS408に進む。
ステップS402において、ハッシュ演算部130は、配列V[16]に対して以下の演算処理及び代入処理を行う。
・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)とする。
ステップS403において、ハッシュ演算部130は、rの値がいずれであるかを判定する。ハッシュ演算部130は、rの値が1である場合、ステップS404に進み、rの値が2である場合ステップS405に進む、rの値が3である場合、ステップS406に進む。
ステップS404において、ハッシュ演算部130は、以下の演算処理及び代入処理を行う。
・V[1]と0x80との排他的論理和を演算し、この演算結果をV[1]に代入する。すなわち、V[1]=V[1]^0x80とする。
・V[0]と0x70との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0x70とする。
ここで、上記の0x80及び0x70は、第2の実施形態における変換テーブル200のR[64]の値の下位8ビット及び上位8ビットである。したがって、本実施形態に係るGHASH関数の演算処理では、変換テーブル2000を用いずに、変換テーブル2000の該当の値を直接使用する。換言すれば、本実施形態に係るGHASH関数では、これらの該当の値をいわゆるマジックナンバーとしてソースコード上に記述する。
ステップS405において、ハッシュ演算部130は、以下の演算処理及び代入処理を行う。
・V[0]と0xE1との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0xE1とする。
なお、この0xE1は、第2の実施形態における変換テーブル200のR[128]の値の上位8ビットである。
ステップS406において、ハッシュ演算部130は、以下の演算処理及び代入処理を行う。
・V[1]と0x80との排他的論理和を演算し、この演算結果をV[1]に代入する。すなわち、V[1]=V[1]^0x80とする。
・V[0]と0x91との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0x91とする。
なお、これらの0x80及び0x91は、第2の実施形態における変換テーブル200のR[192]の値の下位8ビット及び上位8ビットである。
ステップS407において、ハッシュ演算部130は、sBitの値を2減算した結果をsBitに代入する。その後、ハッシュ演算部130は、ステップS401に戻る。すなわち、ハッシュ演算部130は、sBitの値が1以下となるまで、ステップS402〜S406で説明した配列V[16]の2ビットずつのシフト演算処理を行う。
ステップS408において、ハッシュ演算部130は、sBitの値が0より大きいか否かを判定する。すなわち、ハッシュ演算部130は、sBitの値が1であるか否かを判定する。ハッシュ演算部130は、sBitの値が0より大きい場合、ステップS409に進む。他方、ハッシュ演算部130は、sBitの値が0以下である場合(すなわち、sBitの値が0である場合)、ステップS206に進む。
ステップS409において、ハッシュ演算部130は、配列V[16]に対して以下の演算処理及び代入処理を行う。
・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)とする。
ステップS410において、ハッシュ演算部130は、rの値が1であるか否かを判定する。すなわち、ハッシュ演算部130は、V[15]の最下位ビットが1であるか否かを判定する。ハッシュ演算部130は、rの値が1である場合、ステップS411に進む。他方、rの値が1でない場合ステップS412に進む。
ステップS411において、ハッシュ演算部130は、以下の演算処理及び代入処理を行う。
・V[0]と0xE1との排他的論理和を演算し、この演算結果をV[0]に代入する。すなわち、V[0]=V[0]^0xE1とする。
ステップS412おいて、ハッシュ演算部130は、sBitに0を代入する。
以上にように本実施形態に係る情報処理装置10は、GHASH関数の演算処理において配列のシフト演算を2ビットのシフト演算と1ビットのシフト演算とを組み合わせて行う。例えば配列を5ビットシフト演算する必要がある場合は、2ビットのシフト演算を2回と1ビットのシフト演算を1回行う。これにより、第2の実施形態に係る情報処理装置10のように変換テーブル2000を有することなく、高速にGHASH関数の演算処理を行うことができる。
GHASH関数の入力である認証対象メッセージ1000は、暗号文Cが含まれている。したがって、認証対象メッセージ1000のビット列においてビット成分1が連続して3回以上現れる確率は低いと考えられる。したがって、本実施形態に係る情報処理装置10が行うGHASH関数の演算処理では、変換テーブル2000を用いずに、配列のシフト演算を2ビットのシフト演算と1ビットのシフト演算とを組み合わせて行う。これにより、本実施形態に係る情報処理装置10では、変換テーブル2000を記憶するためのROM13の容量を節約でき、かつ、第1の実施形態に係る情報処理装置10が行うGHASH関数の演算処理よりも高速化を実現することができる。
[第4の実施形態]
次に、第4の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において符号なし8ビットの配列V[16]及び配列Z[16]の代わりに符号なし16ビットの配列V[8]及び配列Z[8]を用いる。なお、本実施形態に係る情報処理装置10の機能構成は、第1の実施形態に係る情報処理装置10の機能構成と同様である。
<処理の詳細>
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第1の実施形態と相違する。
《GHASH関数の演算処理》
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図14及び図15を用いて詳細に説明する。なお、上記第1の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図6及び図7)との相違点は、ステップS501〜ステップS508に示す処理である。そこで、以下では、ステップS501〜ステップS508に示す処理について説明する。
ステップS501において、ハッシュ演算部130は、各種ローカル変数や配列の初期化を行う。具体的には、ハッシュ演算部130は以下を行う。
・配列X[16]及び配列Yi−1[16]の要素を表すための変数jを準備し、jを0に初期化する。
・ある特定のビットが1であるか否かを判定するために用いる変数kを準備し、kを215に初期化する。
・配列X[16]及び配列Yi−1[16]の2j番目の要素のビット毎の排他的論理和の演算結果を8ビット左にシフトさせたビット列と2j+1番目の要素のビット毎の排他的論理和の演算結果とのビット毎の論理和を格納する符号なし16ビットの変数xを準備する。そして、x=((X[0]^Yi−1[0])<<8)|(X[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]とする。
ステップS502において、ハッシュ演算部130は、配列Z[8]と配列V[8]の各要素についてそれぞれビット毎の排他的論理和を演算し、演算結果をそれぞれ配列Z[8]に代入する。具体的には、ハッシュ演算部130は、以下の処理を行う。
・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]とする。
ステップS503において、ハッシュ演算部130は、jが7より小さいか否かを判定する。ハッシュ演算部130は、jが7より小さい場合、ステップS504に進む。他方、ハッシュ演算部130は、jが7以上の場合(すなわち、jが7である場合)、ステップS508に進む。なお、jが7である場合とは、認証対象メッセージ1000の分割された1つのブロックXの演算処理が完了した場合である。
ステップS504において、ハッシュ演算部130は、以下の代入処理を行う。
・kに215を代入する。
・jの値に1を加算した結果をjに代入する。換言すれば、jの値をインクリメントする。
・xに、X[2j]とYi−1[2j]とのビット毎の排他的論理和の演算結果を8ビット左にシフトさせたビット列と、X[2j+1]とYi−1[2j+1]とのビット毎の排他的論理和の演算結果とのビット毎の論理和の演算結果を代入する。すなわち、x=((X[2j]^Yi−1[2j])<<8)|(X[2j+1]^Yi−1[2j+1])とする。
ステップS505において、ハッシュ演算部130は、V[7]と1とのビット毎の論理積の演算結果が0であるか否かを判定する。すなわち、ハッシュ演算部130は、V[7]の最下位ビットが0であるか否かを判定する。ハッシュ演算部130は、V[7]と1とのビット毎の論理積の演算結果が0でない場合(すなわち、演算結果が1である場合)、ステップS506に進み、演算結果が0である場合、ステップS212に進む。
ステップS506において、ハッシュ演算部130は、符号なし16ビットの変数rに16進数「0xE100」を代入する。換言すれば、ハッシュ演算部130は、rにビット列「1110000100000000」を代入する。これは、ガロア体GF(2128)の既約多項式x127+x126+x125+x120に対応するビット列の上位16ビットに相当する。
ステップS507において、ハッシュ演算部130は、配列V[8]に対して以下の演算処理及び代入処理を行う。
・V[7]を右に1ビットシフト演算した演算結果とV[6]を左に15ビットシフト演算した結果とのビット毎の論理和を演算し、演算結果をV[]に代入する。すなわち、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との排他的論理和を演算することに等しい。
ステップS508において、ハッシュ演算部130は、以下の代入処理を行う。
・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とする。
以上にように本実施形態に係る情報処理装置10は、GHASH関数の演算処理において符号なし16ビットの配列V[8]及び配列Z[8]を用いて処理を行う。これにより、配列V[8]のシフト演算の処理回数などを減少させることができる。したがって、第4の実施形態に係る情報処理装置10が行うGHASH関数の演算時間を高速化させることができる。
また、配列V[8]を符号なし16ビットとすることで、情報処理装置10のMPU16が例えば16ビットのMPUである場合は、GHASH関数の演算時間をさらに高速化させることができる。
[第5の実施形態]
次に、第5の実施形態に係る情報処理装置10について説明する。本実施形態においては、GHASH関数の演算処理において符号なし8ビットの配列V[16]及び配列Z[16]の代わりに符号なし32ビットの配列V[4]及び配列Z[4]を用いる。なお、本実施形態に係る情報処理装置10の機能構成は、第1の実施形態に係る情報処理装置10の機能構成と同様である。
<処理の詳細>
次に、本実施形態に係る情報処理装置10の処理の詳細について説明する。なお、本実施形態に係る情報処理装置10は、GHASH関数の演算処理が第1の実施形態と相違する。
《GHASH関数の演算処理》
上記で説明した図4のステップS102における本実施形態に係るGHASH関数の演算処理について、図16及び図17を用いて詳細に説明する。なお、上記第1の実施形態に係る情報処理装置10において実行されるGHASH関数の演算処理(図6及び図7)との相違点は、ステップS601〜ステップS608に示す処理である。そこで、以下では、ステップS601〜ステップS608に示す処理について説明する。
ステップS601において、ハッシュ演算部130は、各種ローカル変数や配列の初期化を行う。具体的には、ハッシュ演算部130は以下を行う。
・配列X[16]及び配列Yi−1[16]の要素を表すための変数jを準備し、jを0に初期化する。
・ある特定のビットが1であるか否かを判定するために用いる変数kを準備し、kを231に初期化する。
・符号なし32ビットの変数xを準備し、x=((X[0]^Yi−1[0])<<24)|((X[1]^Yi−1[1])<<16)|((X[2]^Yi−1[2])<<8)|(X[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]とする。
ステップS602において、ハッシュ演算部130は、配列Z[4]と配列V[4]の各要素についてそれぞれビット毎の排他的論理和を演算し、演算結果をそれぞれ配列Z[4]に代入する。具体的には、ハッシュ演算部130は、以下の処理を行う。
・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]とする。
ステップS603において、ハッシュ演算部130は、jが3より小さいか否かを判定する。ハッシュ演算部130は、jが3より小さい場合、ステップS604に進む。他方、ハッシュ演算部130は、jが3以上の場合(すなわち、jが3である場合)、ステップS608に進む。なお、jが3である場合とは、認証対象メッセージ1000の分割された1つのブロックXの演算処理が完了した場合である。
ステップS604において、ハッシュ演算部130は、以下の代入処理を行う。
・kに231を代入する。
・jの値に1を加算した結果をjに代入する。換言すれば、jの値をインクリメントする。
・x=((X[4j]^Yi−1[4j])<<24)|((X[4j+1]^Yi−1[4j+1])<<16)|((X[4j+2]^Yi−1[4j+2])<<8)|(X[4j+3]^Yi−1[4j+3])とする。
ステップS605において、ハッシュ演算部130は、V[3]と1とのビット毎の論理積の演算結果が0であるか否かを判定する。すなわち、ハッシュ演算部130は、V[3]の最下位ビットが0であるか否かを判定する。ハッシュ演算部130は、V[3]と1とのビット毎の論理積の演算結果が0でない場合(すなわち、演算結果が1である場合)、ステップS606に進み、演算結果が0である場合、ステップS212に進む。
ステップS606において、ハッシュ演算部130は、符号なし16ビットの変数rに16進数「0xE1000000」を代入する。換言すれば、ハッシュ演算部130は、rに上位8ビットが「11100001」、下位24ビットが0のビット列を代入する。これは、ガロア体GF(2128)の既約多項式x127+x126+x125+x120に対応するビット列の上位32ビットに相当する。
ステップS607において、ハッシュ演算部130は、配列V[4]に対して以下の演算処理及び代入処理を行う。
・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との排他的論理和を演算することに等しい。
ステップS608において、ハッシュ演算部130は、以下の代入処理を行う。
・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とする。
以上にように本実施形態に係る情報処理装置10は、GHASH関数の演算処理において符号なし32ビットの配列V[4]及び配列Z[4]を用いて処理を行う。これにより、配列V[4]のシフト演算の処理回数などを第4の実施形態よりも減少させることができる。したがって、第5の実施形態に係る情報処理装置10が行うGHASH関数の演算時間を第4の実施形態よりも高速化させることができる。
また、配列V[4]を符号なし32ビットとすることで、情報処理装置10のMPU16が例えば32ビットのMPUである場合は、GHASH関数の演算時間をさらに高速化させることができる。
なお、本実施形態において、分割部120は、分割手段の一例である。ハッシュ演算部130は、ハッシュ演算手段の一例である。認証タグ生成部140は、認証タグ生成手段の一例である。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、上記の各実施形態を組み合わせたり、種々の変形や変更が可能である。
本願は、日本国に2014年4月10日に出願された基礎出願2014−081338号に基づくものであり、その全内容はここに参照をもって援用される。
10 情報処理装置
11 MPU
12 RAM
13 ROM
14 外部I/F
110 暗号化部
120 分割部
130 ハッシュ演算部
140 認証タグ生成部
1000 認証対象メッセージ
2000 変換テーブル
B バス

Claims (8)

  1. ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置であって、
    少なくとも所定の認証パラメータと前記暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割する分割手段と、
    前記分割手段により分割された1以上のブロックを、所定のアルゴリズムからなるGHASH関数により前記ブロック毎に順次演算するハッシュ演算手段と、
    前記ハッシュ演算手段による演算結果を前記暗号化部により暗号化した第2の暗号化情報を生成し、該第2の暗号化情報から前記第1の暗号化情報の完全性の検証及び前記第1の暗号化情報の復号を行う主体の認証を行うための認証タグを生成する認証タグ生成手段と、を有し、
    前記GHASH関数は、128ビットの所定の配列を用いて、該所定の配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数を演算し、該必要な回数分まとめてシフト演算を実行する情報処理装置。
  2. GF(2128)で表されるガロア体上の既約多項式に対応するビット列について、前記所定の配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数に応じて前記ビット列を変換させた変換テーブルを記憶する記憶手段を有し、
    前記GHASH関数は、前記所定のアルゴリズムにおける前記所定の配列に格納されている情報と前記ビット列との排他的論理和演算について、前記シフト演算が必要な回数の演算結果に応じて、前記変換テーブルの変換後のビット列を用いて、前記所定の配列に格納されている情報と前記変換後のビット列との排他的論理和演算を実行する、請求項記載の情報処理装置。
  3. 前記GHASH関数は、前記所定のアルゴリズムにおける前記所定の配列に格納されている情報とGF(2128)で表されるガロア体上の既約多項式に対応するビット列との排他的論理和演算について、前記所定の配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数が1回又は2回のいずれかに応じて、前記所定の配列に格納されている情報と前記回数に応じたビット列との排他的論理和演算を実行する、請求項記載の情報処理装置。
  4. 前記所定の配列は、8ビットの要素が16個含まれる配列である、請求項1乃至3
    の何れか一項に記載の情報処理装置。
  5. 前記所定の配列は、16ビットの要素が8個含まれる配列である、請求項1乃至3
    の何れか一項に記載の情報処理装置。
  6. 前記所定の配列は、32ビットの要素が4個含まれる配列である、請求項1乃至3
    の何れか一項に記載の情報処理装置。
  7. ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置を、
    少なくとも所定の認証パラメータと前記暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割する分割手段、
    前記分割手段により分割された1以上のブロックを、所定のアルゴリズムからなるGHASH関数により前記ブロック毎に順次演算するハッシュ演算手段、
    前記ハッシュ演算手段による演算結果を前記暗号化部により暗号化した第2の暗号化情報を生成し、該第2の暗号化情報から前記第1の暗号化情報の完全性の検証及び前記第1の暗号化情報の復号を行う主体の認証を行うための認証タグを生成する認証タグ生成手段、
    として機能させ、
    前記GHASH関数は、128ビットの所定の配列を用いて、該配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数を演算し、該必要な回数分まとめてシフト演算を実行するプログラム。
  8. ブロック暗号により暗号化を行う暗号化部を有し、電子機器に組み込み可能な情報処理装置を、
    少なくとも所定の認証パラメータと前記暗号化部により平文情報を暗号化した第1の暗号化情報とを含む認証対象メッセージを、128ビット毎に1以上のブロックに分割する分割手段、
    前記分割手段により分割された1以上のブロックを、所定のアルゴリズムからなるGHASH関数により前記ブロック毎に順次演算するハッシュ演算手段、
    前記ハッシュ演算手段による演算結果を前記暗号化部により暗号化した第2の暗号化情報を生成し、該第2の暗号化情報から前記第1の暗号化情報の完全性の検証及び前記第1の暗号化情報の復号を行う主体の認証を行うための認証タグを生成する認証タグ生成手段、
    として機能させ、
    前記GHASH関数は、128ビットの所定の配列を用いて、該配列に格納されている情報を1ビット右へシフトさせるためのシフト演算が必要な回数を演算し、該必要な回数分まとめてシフト演算を実行するプログラムが格納された記憶媒体。
JP2016512615A 2014-04-10 2015-02-04 情報処理装置、プログラム及び記憶媒体 Active JP6044738B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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