JP6033504B1 - メッセージ認証子生成装置 - Google Patents

メッセージ認証子生成装置 Download PDF

Info

Publication number
JP6033504B1
JP6033504B1 JP2016525623A JP2016525623A JP6033504B1 JP 6033504 B1 JP6033504 B1 JP 6033504B1 JP 2016525623 A JP2016525623 A JP 2016525623A JP 2016525623 A JP2016525623 A JP 2016525623A JP 6033504 B1 JP6033504 B1 JP 6033504B1
Authority
JP
Japan
Prior art keywords
value
function
message
bits
authenticator
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
JP2016525623A
Other languages
English (en)
Other versions
JPWO2017009981A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6033504B1 publication Critical patent/JP6033504B1/ja
Publication of JPWO2017009981A1 publication Critical patent/JPWO2017009981A1/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/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • 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]
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

メッセージ認証子生成装置は、鍵KとメッセージMとを入力としてeビットのi倍のビット数の値Eを生成し、値Eをeビット毎に分割して、値M[1],...,M[i]を生成する。この際、メッセージ認証子生成装置は、値M[1],...,M[i]のうちの値M[1]と値M[i]とに鍵Kの少なくとも一部のビットが含まれるように値Eを生成する。メッセージ認証子生成装置は、任意の値を値S[0]として、j=1,...,iの各整数jについて昇順に、値S[j−1]と値M[j]とを入力として関数g[j]によって値R[j]を計算し、計算された値R[j]を置換関数P[j]で置換して値S[j]を計算する。メッセージ認証子生成装置は、値S[i]を用いてメッセージMの認証子Tを生成する。

Description

この発明は、置換を用いて安全かつ効率的にメッセージの認証子を生成する技術に関する。
メッセージ認証アルゴリズムを用いると、2者間でメッセージをやり取りする場合に、送信したメッセージが改ざんされているか否かを受信者が確認できる。
メッセージ認証アルゴリズムを用いて改ざん検出をチェックする場合、2者間で予め鍵Kを共有しておく。メッセージの送信者は、メッセージMと鍵KとからメッセージMの認証子Tを生成し、メッセージMと認証子Tとを受信者に送信する。メッセージの受信者は受け取ったメッセージMと鍵Kとから認証子T’を生成する。受信者は、認証子Tと認証子T’とが一致すれば改ざんされていないと判断し、一致しなければ改ざんされていると判断する。
メッセージ認証アルゴリズムの安全性は、ランダム関数との識別不可能性で示される。
メッセージ認証アルゴリズムFが識別不可能性を満たすとは、現実世界または理想世界のどちらか一方と対話する識別者Dを考え、識別者Dがどちらと対話しているかを当てることができないことを意味する。
現実世界では、鍵Kがランダムに選ばれ、識別者DはメッセージMを選んで、F(K,M)のメッセージ認証子を得ることができる。理想世界では、ランダム関数Rに対して、識別者DはメッセージMを選んで、R(M)の出力値を得ることができる。ここで、識別者DはメッセージMを何度も選択することができ、選択したメッセージMに対応するF(K,M)又はR(M)の出力値を得ることができる。
より厳密には、1ビットの値を出力する識別者Dを考える。識別者Dが現実世界で1を出力する確率と、識別者Dが理想世界で1を出力する確率との差によってメッセージ認証アルゴリズムFの識別不可能性が評価される。
識別者Dは、現実世界ではメッセージ認証アルゴリズムFの出力を複数得ることができ、理想世界ではランダム関数Rの出力を複数得ることができる。この時のメッセージMの総ビット数をσとすると、上記確率の差は、σを用いた確率p(σ)によって評価される。そして、確率p(σ)=1となるビット数σの値を識別計算量と呼ぶ。このビット数σの値は識別に必要な計算量となり、この値が大きいほど安全性は高くなる。
logσは、識別不可能性の安全性ビットと呼ばれる。例えば、σ=2128の場合、安全性ビットはlog128=128ビットとなる。
関数Fが識別不可能性の安全性を満たす場合、関数Fはメッセージ認証アルゴリズムとして使うことができるとともに、疑似乱数生成アルゴリズムとしても使うことができる。したがって、Key Derivation Functionやストリーム暗号などで用いる関数として関数Fを使うことができる。
非特許文献5には、非特許文献7に記載されたハッシュ関数であって、置換関数を用いたスポンジ構造のハッシュ関数を用いたメッセージ認証アルゴリズムが記載されている。
非特許文献8には、非特許文献5に記載されたメッセージ認証アルゴリズムを高速化したメッセージ認証アルゴリズムが記載されている。
非特許文献9のハッシュ関数Hとして、非特許文献7に記載されたハッシュ関数であって、置換関数を用いたスポンジ構造のハッシュ関数を用いることで、メッセージ認証アルゴリズムが構成される。
特開2009−129391号公報 特開2009−5163号公報
Mihir Bellare, Ran Canetti, and Hugo Krawczyk. Keying Hash Functions for Message Authentication. CRYPTO 1996. p1−15. Mihir Bellare. New Proofs for NMAC and HMAC: Security without Collision−Resistance. CRYPTO 2006. p602−619 Ralph C. Merkle. One Way Hash Functions and DES. CRYPTO 1989. p428−446 Ivan Damgard. A Design Principle for Hash Functions. CRYPTO 1989. p416−427 G. Bertoni, J. Daemen, M. Peeters, and G. V. Assche. On the security of the keyed sponge construction. Symmetric Key Encryption Workshop (SKEW) Security of Keyed Sponge Constructions Using a Modular Proof Approach. Elena Andreeva, Joan Daemen, Bart Mennink, and Gilles Van Assche. Fast Software Encryption 2015 (FSE 2015). G. Bertoni, J. Daemen, and M. Peeters. Sponge functions. Ecrypt Hash Workshop 2007 G. Bertoni, J. Daemen, and M. Peeters. Permutation−based encryption, authentication and authenticated encryption. Directions in Authenticated Ciphers 2012 FIPS PUB 198−1. The Keyed−Hash Message Authentication Code (HMAC). Guido Bertoni, Joan Daemen, Michael Peeters, and Gilles Van Assche. On the Indifferentiability of the Sponge Construction. EUROCRYPT 2008. p181−197.
非特許文献6には、非特許文献5,8に記載されたメッセージ認証アルゴリズムは、置換関数がランダム置換である場合、安全性ビットがmin{k,c/2,b/2}であることが示されている。非特許文献10には、非特許文献9のハッシュ関数Hとして非特許文献7に記載されたハッシュ関数を用いたメッセージ認証アルゴリズムは、置換関数がランダム置換である場合、安全性ビットがmin{c/2,b/2,n/2,k}であることが示されている。
ここで、kは鍵Kのビット数である。bは置換関数の入出力のビット数である。cはキャパシティのビット数であり、b=c+rである。rはレートのビット数である。nは認証子のビット数である。
この発明は、置換関数を用いたメッセージ認証アルゴリズムについての安全性を改善することと、計算量を少なくすることとの少なくともいずれかを目的とする。
この発明に係るメッセージ認証子生成装置は、
鍵KとメッセージMとを入力としてeビットのi倍のビット数の値Eを生成し、前記値Eをeビット毎に分割して、値M[1],...,M[i]を生成する入力値生成部であって、前記値M[1],...,M[i]のうちの値M[1]と値M[i]とに前記鍵Kの少なくとも一部のビットが含まれるように前記値Eを生成する入力値生成部と、
任意の値を値S[0]として、j=1,...,iの各整数jについて昇順に、値S[j−1]と値M[j]とを入力として関数g[j]によって値R[j]を計算し、計算された値R[j]を置換関数P[j]で置換して値S[j]を計算する関数計算部と、
前記関数計算部によって計算された値S[i]を用いて前記メッセージMの認証子Tを生成する認証子生成部と
を備える。
この発明では、置換関数P[j]がランダム置換である場合、安全性ビットがmin{c,b/2,k}であるメッセージ認証アルゴリズムを実現できる。
実施の形態1に係るメッセージ認証子生成装置100の構成図。 実施の形態1に係るメッセージ認証子生成装置100の動作を示すフローチャート。 実施の形態1に係るメッセージ認証アルゴリズムの説明図。 実施の形態1に係るメッセージ認証アルゴリズムの説明図。 実施の形態2に係るメッセージ認証子生成装置100の構成図。 実施の形態2に係るメッセージ認証子生成装置100の動作を示すフローチャート。 実施の形態2に係るメッセージ認証アルゴリズムの説明図。 実施の形態2に係るメッセージ認証アルゴリズムの説明図。 実施の形態2に係るメッセージ認証アルゴリズムの説明図。 実施の形態2に係るメッセージ認証アルゴリズムの説明図。 メッセージ認証子生成装置100の機能がソフトウェアで実現される場合のハードウェア構成例を示す図。 メッセージ認証子生成装置100の機能がハードウェアで実現される場合のハードウェア構成例を示す図。
実施の形態1.
***構成の説明***
図1に基づき、実施の形態1に係るメッセージ認証子生成装置100の構成を説明する。
メッセージ認証子生成装置100は、kビットの鍵Kと、メッセージMに対して、nビットの認証子Tを生成する。メッセージMは、送信対象のデータである。鍵Kは、メッセージMの送信先と予め共有されている秘密鍵である。k,nは1以上の整数である。
メッセージ認証子生成装置100は、入力値生成部110と、関数計算部120と、認証子生成部130とを備える。
入力値生成部110は、鍵KとメッセージMとを入力として、i個のeビットの値M[1],...,M[i]を生成する。i,eは1以上の整数である。
関数計算部120は、入力値生成部110によって生成された値M[1],...,M[i]を入力として、置換関数を用いたスポンジ構造のハッシュ関数Hにより、ハッシュ値である値S[i]を計算する。
認証子生成部130は、関数計算部120によって計算された値S[i]を用いてメッセージMの認証子Tを生成する。
***動作の説明***
図2及び図3に基づき、実施の形態1に係るメッセージ認証子生成装置100の動作を説明する。
実施の形態1に係るメッセージ認証子生成装置100の動作は、実施の形態1に係るメッセージ認証子生成方法に相当する。また、実施の形態1に係るメッセージ認証子生成装置100の動作は、実施の形態1に係るメッセージ認証子生成プログラムの処理に相当する。
ここでは、0≦d<bであり、e=b−dである。
S11のパディング処理では、入力値生成部110は、鍵KとメッセージMとをパディング関数の入力としてeビットのi倍のビット数の値Eを生成する。特に、入力値生成部110は、後述する値M[1],...,M[i]のうちの値M[1]と値M[i]とに鍵Kの少なくとも一部のビットが含まれるように値Eを生成する。
パディング関数とは、入力値にビット列を付加する関数である。
S12の分割処理では、入力値生成部110は、値Eを先頭からeビット毎に分割して、値M[1],...,M[i]を生成する。
S13の値S[0]設定処理では、関数計算部120は、bビットの固定値IVを値S[0]に設定する。
S14のハッシュ値計算処理では、関数計算部120は、j=1,...,iの各整数jについて昇順に、R[j]=g[j](S[j−1],M[j])、S[j]=P[j](R[j])を計算する。つまり、関数計算部120は、j=1,...,iの各整数jについて昇順に、値S[j−1]と入力値生成部110によって生成された値M[j]とを入力として関数g[j]によって値R[j]を計算し、計算された値R[j]を置換関数P[j]で置換して値S[j]を計算する。
ここで、各関数g[j]は、bビットとeビットとの2つの値を入力として、bビットの値を出力する関数であって、eビットの値を固定するとbビットの置換関数となる関数である。各関数g[j]は、同じ関数であってもよいし、異なる関数であってもよい。各置換関数P[j]は、bビットの置換関数である。各置換関数P[j]は、同じ置換関数であってもよいし、異なる関数であってもよい。
S15の値Z計算処理では、認証子生成部130は、値S[i]を入力として圧縮関数f[1]によって計算された値s[1]を値Zとする。そして、認証子生成部130は、値S[i]を値Q[1]として、値Zがnビット以上になるまでj=1から昇順に、値Q[j]を置換関数P’[j]で置換した値Q[j+1]を入力として圧縮関数f[j+1]によって計算された値s[j+1]を値Zに付加する。
ここで、各圧縮関数f[j]は、bビットの値をrビットの値に圧縮する関数である。各圧縮関数f[j]は、同じ関数であってもよいし、異なる関数であってもよい。各置換関数P’[j]は、bビットの置換関数である。各置換関数P’[j]は、同じ関数であってもよいし、異なる関数であってもよい。
S16の認証子抽出処理では、認証子生成部130は、値Zがnビット以上になった場合に、値Zのうちのnビットを認証子Tとする。
なお、S11からS12の処理が入力値生成処理であり、S13からS14の処理が関数計算処理であり、S15からS16の処理が認証子生成処理である。
***実施の形態1の効果***
実施の形態1に係るメッセージ認証子生成装置100は、置換関数を用いたメッセージ認証アルゴリズムを実現できる。そして、実現されたメッセージ認証アルゴリズムは、置換関数P[j]がランダム置換である場合、安全性ビットがmin{c,b/2,k}である。
非特許文献5,8に記載されたメッセージ認証アルゴリズムは、安全性ビットがmin{k,c/2,b/2}である。ここで、c/2<b/2である。また、kの値は鍵の長さであるため、鍵を長くすれば大きな値になる。そのため、安全性ビットを長くするには、c/2の値を大きくする必要がある。
実施の形態1に係るメッセージ認証子生成装置100によって実現されたメッセージ認証アルゴリズムは、安全性ビットがmin{c,b/2,k}である。そのため、非特許文献5,8に記載されたメッセージ認証アルゴリズムに比べて安全性ビットを容易に長くすることができる。
***他の構成***
S11では、入力値生成部110は、次のように値Eを生成してもよい。
入力値生成部110は、鍵Kの後に、メッセージMを付加して値Aを生成する。入力値生成部110は、値Aの後に値Xを付加してeビットの倍数のビット数の値Cを生成する。入力値生成部110は、値Cの後に鍵Kを付加して値Dを生成する。入力値生成部110は、値Dの後に値Yを付加してeビットのi倍のビット数の値Eを生成する。つまり、E=K||M||X||K||Yである。“||”は、連結を意味する記号である。
ここで、値X及び値Yの具体例としては、先頭ビットと最終ビットとが1でその他のビットが0であるビット列である。つまり、X=1||0・・・0||1、Y=1||0・・・0||1である。また、値Yは、値Eがeビットの倍数のビット数となるような最も短いビット列であり、値Dがeビットの倍数のビット数である場合にはビット数0のビット列である。
各関数g[j]は、排他的論理和を計算する関数であってもよい。つまり、S14では、関数計算部120は、j=1,...,iの各整数jについて昇順に、R[j]=S[j−1] xor (M[j]||0)、S[j]=P[j](R[j])を計算してもよい。
なお、入力値と0との排他的論理和を計算すると、入力値がそのまま得られる。そのため、図4に示すように、S[j−1]のうちのeビットと、M[j]との排他的論理和と、S[j−1]のうちの残りのdビットとを合わせた値が値R[j]としてもよい。つまり、S[j−1]のうちのdビットと0との排他的論理和の計算を省略してもよい。
また、ここでは、M[j]||0とした。つまり、値M[j]の後に、dビットの0が付加されるとした。しかし、0が付加される位置は値M[j]の後でなくてもよい。具体的には、値M[j]の前にdビットの0が付加されてもよい。つまり、0||M[j]であってもよい。
圧縮関数f[j]は、入力値からrビットを抽出する関数であってもよい。つまり、S15では、認証子生成部130は、値S[i]のうちのrビットを値Zとし、値S[i]を値Q[1]として、値Zがnビット以上になるまでj=1から昇順に、値Q[j]を置換関数P’[j]で置換した値Q[j+1]のうちのrビットを値Zに付加してもよい。
つまり、図3に示したメッセージ認証アルゴリズムを、図4に示すように構成してもよい。図4では、値Eの計算を、E=K||M||X||K||Yとしている。また、値R[j]の計算を、R[j]=S[j−1] xor (M[j]||0)としている。また、圧縮関数f[j]を入力値からrビットを抽出する関数としている。
実施の形態2.
***構成の説明***
図5に基づき、実施の形態2に係るメッセージ認証子生成装置100の構成を説明する。
メッセージ認証子生成装置100は、kビットの鍵Kと、メッセージMに対して、nビットの認証子Tを生成する。メッセージMは、送信対象のデータである。鍵Kは、メッセージMの送信先と予め共有されている秘密鍵である。k,nは1以上の整数である。
メッセージ認証子生成装置100は、第1入力値生成部111と、第2入力値生成部112と、第1関数計算部121と、第2関数計算部122と、計算値生成部131と、認証子生成部132とを備える。
第1入力値生成部111は、鍵KとメッセージMとを入力として、e1ビットの値M[1],...,M[i]を生成する。e1は1以上の整数である。
第2入力値生成部112は、鍵Kと、後述する計算値生成部131によって計算された値Nとを入力として、e3ビットの値N[1],...,N[i’]を生成する。i’は1以上の整数である。e3は1以上の整数である。
第1関数計算部121は、第1入力値生成部111によって生成された値M[1],...,M[i]を入力として、置換関数を用いたスポンジ構造のハッシュ関数Hにより、ハッシュ値である値S1[i]を計算する。
第2関数計算部122は、第2入力値生成部112によって生成された値N[1],...,N[i’]を入力として、置換関数を用いたスポンジ構造のハッシュ関数H’により、ハッシュ値である値S2[i’]を計算する。
計算値生成部131は、第1関数計算部121によって計算された値S1[i]を用いて値Nを生成する。
認証子生成部132は、第2関数計算部122によって計算された値S2[i’]を用いてメッセージMの認証子Tを生成する。
***動作の説明***
図6から図8に基づき、実施の形態2に係るメッセージ認証子生成装置100の動作を説明する。
実施の形態2に係るメッセージ認証子生成装置100の動作は、実施の形態2に係るメッセージ認証子生成方法に相当する。また、実施の形態2に係るメッセージ認証子生成装置100の動作は、実施の形態2に係るメッセージ認証子生成プログラムの処理に相当する。
ここでは、0≦d1,d2,d3<bであり、e1=b−d1,e2=b−d2,e3=b−d3である。e2は1以上の整数である。また、vは、1以上の整数である。
S21の第1パディング処理では、第1入力値生成部111は、鍵KとメッセージMとをパディング関数の入力としてe1ビットのi倍のビット数の値Cを生成する。特に、第1入力値生成部111は、後述する値M[1],...,M[i]のうちの値M[1]に鍵Kの少なくとも一部のビットが含まれるように値Cを生成する。
パディング関数とは、入力値にビット列を付加する関数である。
S22の第1分割処理では、第1入力値生成部111は、値Cを先頭からe1ビット毎に分割して、値M[1],...,M[i]を生成する。
S23の値S1[0]設定処理では、第1関数計算部121は、bビットの固定値IV1を値S1[0]に設定する。
S24の第1ハッシュ値計算処理では、第1関数計算部121は、j=1,...,iの各整数jについて昇順に、R1[j]=g1[j](S1[j−1],M[j])、S1[j]=P1[j](R1[j])を計算する。つまり、第1関数計算部121は、j=1,...,iの各整数jについて昇順に、値S1[j−1]と第1入力値生成部111によって生成された値M[j]とを入力として関数g1[j]によって値R1[j]を計算し、計算された値R1[j]を置換関数P1[j]で置換して値S1[j]を計算する。
ここで、各関数g1[j]は、bビットとe1ビットとの2つの値を入力として、bビットの値を出力する関数であって、e1ビットの値を固定するとbビットの置換関数となる関数である。各関数g1[j]は、同じ関数であってもよいし、異なる関数であってもよい。各置換関数P1[j]は、bビットの置換関数である。各置換関数P1[j]は、同じ置換関数であってもよいし、異なる関数であってもよい。
S25の値Z計算処理では、計算値生成部131は、値S1[i]を入力として圧縮関数f1[1]によって計算された値s1[1]を値Zとする。そして、計算値生成部131は、値S1[i]を値Q1[1]として、値Zがvビット以上になるまでj=1から昇順に、値Q1[j]を置換関数P1’[j]で置換した値Q1[j+1]を入力として圧縮関数f1[j+1]によって計算された値s1[j+1]を値Zに付加する。
ここで、各圧縮関数f1[j]は、bビットの値をe2ビットの値に圧縮する関数である。各圧縮関数f1[j]は、同じ関数であってもよいし、異なる関数であってもよい。各置換関数P1’[j]は、bビットの置換関数である。各置換関数P1’[j]は、同じ関数であってもよいし、異なる関数であってもよい。
S26の計算値抽出処理では、計算値生成部131は、値Zがvビット以上になった場合に、値Zのうちのvビットを値Nとする。
S27の第2パディング処理では、第2入力値生成部112は、鍵Kと値Nとをパディング関数の入力としてe3ビットのi’倍のビット数の値Eを生成する。特に、第2入力値生成部112は、値N[1],...,N[i’]のうちの値N[1]に鍵Kの少なくとも一部のビットが含まれるように値Eを生成する。
S28の第2分割処理では、第2入力値生成部112は、値Eを先頭からe3ビット毎に分割して、値N[1],...,N[i’]を生成する。
S29の値S2[0]設定処理では、第2関数計算部122は、bビットの固定値IV2を値S2[0]に設定する。
S30の第2ハッシュ値計算処理では、第2関数計算部122は、j=1,...,i’の各整数jについて昇順に、R2[j]=g2[j](S2[j−1],N[j])、S2[j]=P2[j](R2[j])を計算する。つまり、第2関数計算部122は、j=1,...,i’の各整数jについて昇順に、値S2[j−1]と第2入力値生成部112によって生成された値N[j]とを入力として関数g2[j]によって値R2[j]を計算し、計算された値R2[j]を置換関数P2[j]で置換して値S2[j]を計算する。
ここで、各関数g2[j]は、bビットとe3ビットとの2つの値を入力として、bビットの値を出力する関数であって、e3ビットの値を固定するとbビットの置換関数となる関数である。各関数g2[j]は、同じ関数であってもよいし、異なる関数であってもよい。各置換関数P2[j]は、bビットの置換関数である。各置換関数P2[j]は、同じ置換関数であってもよいし、異なる関数であってもよい。
S31の値W計算処理では、認証子生成部132は、値S2[i’]を入力として圧縮関数f2[1]によって計算された値s2[1]を値Wとする。そして、認証子生成部132は、値S2[i’]を値Q2[1]として、値Wがnビット以上になるまでj=1から昇順に、値Q2[j]を置換関数P2’[j]で置換した値Q2[j+1]を入力として圧縮関数f2[j+1]によって計算された値s2[j+1]を値Wに付加する。
ここで、各圧縮関数f2[j]は、bビットの値をrビットの値に圧縮する関数である。各圧縮関数f2[j]は、同じ関数であってもよいし、異なる関数であってもよい。各置換関数P2’[j]は、bビットの置換関数である。各置換関数P2’[j]は、同じ関数であってもよいし、異なる関数であってもよい。
S32の認証子抽出処理では、認証子生成部132は、値Wがnビット以上になった場合に、値Wのうちのnビットを認証子Tとする。
なお、S21からS22の処理が第1入力値生成処理であり、S23からS24の処理が第1関数計算処理であり、S25からS26の処理が計算値生成処理である。また、S27からS28の処理が第2入力値生成処理であり、S29からS30の処理が第2関数計算処理であり、S31からS32の処理が認証子生成処理である。
***実施の形態2の効果***
実施の形態2に係るメッセージ認証子生成装置100は、置換関数を用いたメッセージ認証アルゴリズムを実現できる。そして、実現されたメッセージ認証アルゴリズムは、置換関数P1[j]及び置換関数P2[j]がランダム置換である場合、安全性ビットがmin{c,b/2,v/2,k}である。
***他の構成***
S21では、第1入力値生成部111は、次のように値Cを生成してもよい。
第1入力値生成部111は、鍵Kとkビットの固定値ipadとの排他的論理和を計算して、値K1とする。第1入力値生成部111は、値K1の後に、メッセージMを付加して値Aを生成する。第1入力値生成部111は、値Aの後に値Xを付加してe1ビットのi倍のビット数の値Cを生成する。つまり、C=K1||M||Xである。
ここで、値Xの具体例としては、先頭ビットと最終ビットとが1でその他のビットが0であるビット列である。つまり、X=1||0・・・0||1である。また、値Xは、値Cがe1ビットの倍数のビット数となるような最も短いビット列であり、値Aがe1ビットの倍数のビット数である場合にはビット数0のビット列である。
各関数g1[j]は、排他的論理和を計算する関数であってもよい。つまり、S24では、第1関数計算部121は、j=1,...,iの各整数jについて昇順に、R1[j]=S1[j−1] xor (M[j]||0d1)、S1[j]=P1[j](R1[j])を計算してもよい。
なお、入力値と0との排他的論理和を計算すると、入力値がそのまま得られる。そのため、図9に示すように、S1[j−1]のうちのe1ビットと、M[j]との排他的論理和と、S1[j−1]のうちの残りのd1ビットとを合わせた値が値R[j]としてもよい。つまり、S1[j−1]のうちのd1ビットと0d1との排他的論理和の計算を省略してもよい。
また、ここでは、M[j]||0d1とした。つまり、値M[j]の後に、d1ビットの0が付加されるとした。しかし、0が付加される位置は値M[j]の後でなくてもよい。具体的には、値M[j]の前にd1ビットの0が付加されてもよい。つまり、0d1||M[j]であってもよい。
圧縮関数f1[j]は、入力値からe2ビットを抽出する関数であってもよい。つまり、S25では、計算値生成部131は、値S1[i]のうちのe2ビットを値Zとし、値S1[i]を値Q1[1]として、値Zがvビット以上になるまでj=1から昇順に、値Q1[j]を置換関数P1’[j]で置換した値Q1[j+1]のうちのe2ビットを値Zに付加してもよい。
S27では、第2入力値生成部112は、次のように値Eを生成してもよい。
第2入力値生成部112は、鍵Kとkビットの固定値opadとの排他的論理和を計算して、値K2とする。第2入力値生成部112は、値K2の後に、値Nを付加して値Dを生成する。第2入力値生成部112は、値Dの後に値Yを付加してe3ビットのi’倍のビット数の値Eを生成する。つまり、E=K2||N||Yである。
ここで、値Yの具体例としては、先頭ビットと最終ビットとが1でその他のビットが0であるビット列である。つまり、Y=1||0・・・0||1である。また、値Yは、値Eがe3ビットの倍数のビット数となるような最も短いビット列であり、値Dがe3ビットの倍数のビット数である場合にはビット数0のビット列である。また、固定値opadは、固定値ipadとは異なる値である。
各関数g2[j]は、排他的論理和を計算する関数であってもよい。つまり、S30では、第2関数計算部122は、j=1,...,i’の各整数jについて昇順に、R2[j]=S2[j−1] xor (N[j]||0d3)、S2[j]=P2[j](R2[j])を計算してもよい。
なお、入力値と0との排他的論理和を計算すると、入力値がそのまま得られる。そのため、図10に示すように、S2[j−1]のうちのe3ビットと、N[j]との排他的論理和と、S2[j−1]のうちの残りのd3ビットとが値R[j]としてもよい。つまり、S2[j−1]のうちのd3ビットと0d3との排他的論理和の計算を省略してもよい。
また、ここでは、N[j]||0d3とした。つまり、値N[j]の後に、d3ビットの0が付加されるとした。しかし、0が付加される位置は値N[j]の後でなくてもよい。具体的には、値N[j]の前にd3ビットの0が付加されてもよい。つまり、0d3||N[j]であってもよい。
圧縮関数f2[j]は、入力値からrビットを抽出する関数であってもよい。つまり、S31では、認証子生成部132は、値S2[i]のうちのrビットを値Wとし、値S2[i]を値Q2[1]として、値Wがnビット以上になるまでj=1から昇順に、値Q2[j]を置換関数P2’[j]で置換した値Q2[j+1]のうちのrビットを値Wに付加してもよい。
つまり、図7及び図8に示したメッセージ認証アルゴリズムを、図9及び図10に示すように構成してもよい。図9及び図10では、値Cの計算を、C=K1||M||Xとしている。また、値R1[j]の計算を、R1[j]=S1[j−1] xor (M[j]||0d1)としている。また、圧縮関数f1[j]を入力値からe2ビットを抽出する関数としている。また、値Eの計算を、E=K2||N||Yとしている。また、値R2[j]の計算を、R2[j]=S2[j−1] xor (N[j]||0d3)としている。また、圧縮関数f2[j]を入力値からrビットを抽出する関数としている。
***ハードウェア構成例の説明***
最後に、メッセージ認証子生成装置100のハードウェア構成例を説明する。
メッセージ認証子生成装置100はコンピュータである。
メッセージ認証子生成装置100の機能は、ソフトウェアで実現することもできるし、ハードウェアで実現することもできる。
図11は、メッセージ認証子生成装置100の機能がソフトウェアで実現される場合のハードウェア構成例を示す。
図12は、メッセージ認証子生成装置100の機能がハードウェアで実現される場合のハードウェア構成例を示す。
以下、図11及び図12を参照して、メッセージ認証子生成装置100のハードウェア構成例を説明する。
**メッセージ認証子生成装置100の機能がソフトウェアで実現される場合**
メッセージ認証子生成装置100の機能がソフトウェアで実現される場合は、図11に示すように、メッセージ認証子生成装置100は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力装置907、ディスプレイ908といったハードウェアを備える。
プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ901は、具体的には、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
補助記憶装置902は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)である。
メモリ903は、具体的には、RAM(Random Access Memory)である。
通信装置904は、データを受信するレシーバー9041及びデータを送信するトランスミッター9042を含む。通信装置904は、具体的には、通信チップ又はNIC(Network Interface Card)である。
プロセッサ901は、入力インタフェースを介して、入力装置907に接続されている。入力インタフェースは、入力装置907のケーブルが接続されるポートである。また、プロセッサ901は、ディスプレイインタフェースを介して、ディスプレイ908に接続されている。ディスプレイインタフェースは、ディスプレイ908のケーブルが接続されるポートである。
入力装置907は、具体的には、マウス、キーボード又はタッチパネルである。
ディスプレイ908は、具体的には、LCD(Liquid Crystal Display)である。
補助記憶装置902には、入力値生成部110と、関数計算部120と、認証子生成部130と、第1入力値生成部111と、第2入力値生成部112と、第1関数計算部121と、第2関数計算部122と、計算値生成部131と、認証子生成部132との機能を実現するプログラムが記憶されている。以下、入力値生成部110と、関数計算部120と、認証子生成部130と、第1入力値生成部111と、第2入力値生成部112と、第1関数計算部121と、第2関数計算部122と、計算値生成部131と、認証子生成部132とをまとめて「部」と表記する。
このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。
更に、補助記憶装置902には、OS(Operating System)も記憶されている。そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図11では、1つのプロセッサ901が図示されているが、メッセージ認証子生成装置100が複数のプロセッサ901を備えていてもよい。そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ903、補助記憶装置902、又は、プロセッサ901内のレジスタ又はキャッシュメモリに記憶される。また、「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
**メッセージ認証子生成装置100の機能がハードウェアで実現される場合**
メッセージ認証子生成装置100の機能がハードウェアで実現される場合は、図12に示すように、メッセージ認証子生成装置100は、処理回路990、通信装置904、入力装置907、ディスプレイ908といったハードウェアを備える。
通信装置904、入力装置907、ディスプレイ908及び信号線910は、図11で説明したものと同じであるため、説明を省略する。
処理回路990は、「部」の機能を実現する専用の電子回路である。処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)が想定される。
「部」の機能を1つの処理回路990で実現してもよいし、「部」の機能を複数の処理回路990に分散させて実現してもよい。
**メッセージ認証子生成装置100の機能がソフトウェアとハードウェアの組み合わせで実現される場合**
メッセージ認証子生成装置100の一部の機能を専用のハードウェアで実現し、他の機能をソフトウェア(プログラム)で実現するようにしてもよい。
**付記**
プロセッサ901、補助記憶装置902及びメモリ903と、処理回路990を、総称して「プロセッシングサーキットリー」という。
つまり、メッセージ認証子生成装置100のハードウェア構成が図11のハードウェア構成、図12のハードウェア構成のいずれであっても、「部」の機能は、プロセッシングサーキットリーにより実現される。
また、「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。
また、「部」の機能をファームウェアで実現してもよい。
100 メッセージ認証子生成装置、110 入力値生成部、111 第1入力値生成部、112 第2入力値生成部、120 関数計算部、121 第1関数計算部、122 第2関数計算部、130 認証子生成部、131 計算値生成部、132 認証子生成部。

Claims (4)

  1. 鍵KとメッセージMとを入力としてeビットのi倍のビット数の値Eを生成し、前記値Eをeビット毎に分割して、値M[1],...,M[i]を生成する入力値生成部であって、前記値M[1],...,M[i]のうちの値M[1]と値M[i]とに前記鍵Kの少なくとも一部のビットが含まれるように前記値Eを生成する入力値生成部と、
    固定値を値S[0]として、j=1,...,iの各整数jについて昇順に、値S[j−1]と前記入力値生成部によって生成された値M[j]とを入力として関数g[j]によって値R[j]を計算し、計算された値R[j]を置換関数P[j]で置換して値S[j]を計算する関数計算部と、
    前記関数計算部によって計算された値S[i]を用いて前記メッセージMの認証子Tを生成する認証子生成部と
    を備えるメッセージ認証子生成装置。
  2. 前記認証子生成部は、前記値S[i]を入力として圧縮関数f[1]によって計算された値s[]を値Zとし、前記値S[i]を値Q[1]として、前記値Zがnビット以上になるまでj=1から昇順に、前記値Q[j]を置換関数P’[j]で置換した値Q[j+1]を入力として圧縮関数f[j+1]によって計算された値s[j+1]を前記値Zに付加し、前記値Zがnビット以上になった場合に、前記値Zのうちのnビットを前記認証子Tとする
    請求項1に記載のメッセージ認証子生成装置。
  3. 前記入力値生成部は、前記鍵Kの後に、前記メッセージMを付加して値Aを生成し、前記値Aの後に値Xを付加してeビットの倍数のビット数の値Cを生成し、前記値Cの後に前記鍵Kを付加して値Dを生成し、前記値Dの後に値Yを付加して前記値Eを生成する
    請求項1又は2に記載のメッセージ認証子生成装置。
  4. j=1,...,iの各整数jについての前記関数g[j]は、排他的論理和を計算する関数である
    請求項1から3までのいずれか1項に記載のメッセージ認証子生成装置。
JP2016525623A 2015-07-15 2015-07-15 メッセージ認証子生成装置 Active JP6033504B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/070287 WO2017009981A1 (ja) 2015-07-15 2015-07-15 メッセージ認証子生成装置

Publications (2)

Publication Number Publication Date
JP6033504B1 true JP6033504B1 (ja) 2016-11-30
JPWO2017009981A1 JPWO2017009981A1 (ja) 2017-07-13

Family

ID=57419902

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525623A Active JP6033504B1 (ja) 2015-07-15 2015-07-15 メッセージ認証子生成装置

Country Status (5)

Country Link
US (1) US20180139048A1 (ja)
JP (1) JP6033504B1 (ja)
CN (1) CN107852331A (ja)
DE (1) DE112015006703T5 (ja)
WO (1) WO2017009981A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111953497B (zh) * 2020-08-06 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种基于hmac算法的消息认证码生成装置及方法
CN114513311B (zh) * 2022-02-25 2024-09-03 上海芯钛信息科技有限公司 一种改进消息认证码算法的方法、装置、设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009005163A (ja) * 2007-06-22 2009-01-08 Nippon Telegr & Teleph Corp <Ntt> メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4810289B2 (ja) * 2006-04-17 2011-11-09 ルネサスエレクトロニクス株式会社 メッセージ認証子生成装置、メッセージ認証子検証装置、及びメッセージ認証システム
WO2013032869A1 (en) * 2011-08-26 2013-03-07 Life Technologies Corporation Systems and methods for identifying an individual

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009005163A (ja) * 2007-06-22 2009-01-08 Nippon Telegr & Teleph Corp <Ntt> メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7015002618; BERTONI, Guido et al.: 'On the security of the keyed sponge construction' In: Symmetric Key Encryption Workshop 2011 , 2011, pp. 1-15 *

Also Published As

Publication number Publication date
JPWO2017009981A1 (ja) 2017-07-13
US20180139048A1 (en) 2018-05-17
WO2017009981A1 (ja) 2017-01-19
DE112015006703T5 (de) 2018-04-05
CN107852331A (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
US20130195266A1 (en) Apparatus and Method for Producing a Message Authentication Code
JP6305642B2 (ja) メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
US11349668B2 (en) Encryption device and decryption device
US11436946B2 (en) Encryption device, encryption method, decryption device, and decryption method
CN111052670B (zh) 加密装置、解密装置、加密方法、解密方法和计算机能读取的存储介质
JP6033504B1 (ja) メッセージ認証子生成装置
JP6194136B2 (ja) 疑似乱数生成装置及び疑似乱数生成プログラム
US11876888B2 (en) Encryption device, decryption device, encryption method, decryption method, and computer readable medium
JP2011002810A (ja) 暗号化装置、プログラム、暗号システム及び暗号化方法
CN112640359B (zh) 消息认证装置、消息认证方法及计算机可读取的存储介质
US11177936B2 (en) Message authenticator generation apparatus
JP6305643B2 (ja) メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム
JP4914329B2 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体
JP2010256749A (ja) ハッシュ値生成装置、ハッシュ値生成方法およびプログラム
WO2022239163A1 (ja) 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体
JP6732698B2 (ja) 追加データ付き認証暗号システム、暗号化装置、復号装置、追加データ付き認証暗号方法、およびプログラム
JP2012014077A (ja) ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム
JP2020134730A (ja) ブロック暗号装置、ブロック暗号方法およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161025

R150 Certificate of patent or registration of utility model

Ref document number: 6033504

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250