説明

メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、およびプログラム

【課題】時間のかかる圧縮関数を用いる処理に、並列処理を利用する。
【解決手段】本発明のメッセージ認証子生成装置は、パディング部、メッセージ分割部、第1排他的論理和計算部、中間変数計算部、重み付き排他的論理和計算部、第2排他的論理和計算部、後処理部を備える。第1排他的論理和計算部は、データm,…,mの排他的論理和をSとする。中間変数計算部は、Δ・2とmとの排他的論理和を圧縮関数への入力として中間変数v,…,vN−1を求める。重み付き排他的論理和計算部は、中間変数v,…,vN−1の重み付き排他的論理和をWとする。第2排他的論理和計算部は、中間変数v,…,vN−1の排他的論理和をSとする。後処理部は、S、W、Sから圧縮関数を用いてメッセージ認証子τを求める。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信路上または記録媒体上のデータに対し、送信者またはデータ作成者の認証が行えるようにするためのメッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、およびプログラムに関する。
【背景技術】
【0002】
メッセージ認証では、メッセージ認証コードMACは、kビットの鍵Kと任意のビット長のデータMからメッセージ認証子τを生成する(τ←MAC(M))。送信者と受信者、またはデータ作成者とデータ利用者とは、メッセージ認証コードMACと鍵Kとを共有することで、次のように認証やデータ内容の検証を行うことができる。
【0003】
送信者またはデータ作成者は、メッセージ認証子生成装置で、鍵K(通常、鍵は1つだが、2つ以上の場合もある)とデータMからメッセージ認証子τを生成する。そして、データMとメッセージ認証子とを送信または保存する。受信者またはデータ利用者は、メッセージ認証子検証装置で、鍵KとデータMからメッセージ認証子τ’を生成する。そして、τとτ’とを比較する。τ=τ’ならば、送信者またはデータ作成者の認証、およびデータ内容の整合性が検証されたとする。τ≠τ’ならば、送信者またはデータ作成者の詐称、もしくはデータの改ざんがあると判断する。
【0004】
従来のメッセージ認証コードには、マークル・ダンガード反復を用いたハッシュ関数HMDを2回適用して安全性を高めたものとして、非特許文献1などがある。また、圧縮関数を用いたメッセージ認証コードであって、いわゆる誕生日限界を超えるような高い安全性を有するものには、例えば非特許文献2の構成法がある。しかし、非特許文献2の方法では、圧縮関数を呼び出す回数が、データMを圧縮関数に入力するために分割した数よりも多くなる。しかも、分割数を越えて圧縮関数を呼び出す回数も、データMの長さに依存しているため、処理量が多くなるという問題があった。
【0005】
高い安全性を確保しながら、分割数を超える圧縮関数を呼び出す回数がデータMの長さに依存しないようなメッセージ認証子生成方法として、特許文献1の方法がある。特許文献1のメッセージ認証子生成装置の構成を図1に、処理フローを図2に示す。さらに、図3に、各構成部での処理の流れを示す。メッセージ認証子生成装置100は、任意のビット長(メッセージ長)のデータDに対するメッセージ認証子τを出力する。メッセージ認証子生成装置100は、パディング部110、メッセージ分割部120、第1チェックサム計算部130、中間変数計算部140、第2チェックサム計算部150、後処理部160を備える。
【0006】
パディング部110は、データDに対して、あらかじめ定めたパディングを行うことで、b×Nビット(ただし、bはあらかじめ定めた整数、Nはb×NがデータDのメッセージ長よりも長くなる整数)のデータMを生成する(S110)。メッセージ分割部120は、データMを、N個に分割し、bビットのデータm,…,mを生成する(S120)。第1チェックサム計算部130は、データm,…,mの排他的論理和
【0007】
【数1】

【0008】
を計算し、第1チェックサムSとする(S130)。中間変数計算部140は、まず、cビット(ただし、cはあらかじめ定めた整数)の最初の中間変数vを定める。例えば、c個の“0”からなるビット列とあらかじめ定めておいてもよい。n=1からn=Nまで順番に、中間変数vn−1から中間変数vを求める計算
【0009】
【数2】

【0010】
を行う。この繰り返し処理で、中間変数vを求める(S140)。ただし、nは1以上N以下の整数、fはcビットの鍵kを用いてbビットのビット列をcビットのビット列に圧縮する圧縮関数、“‖”はビット列の結合を意味する記号、“0b−c”は“0”がb−c個並んだビット列、Δはbビットのあらかじめ定めたビット列である。例えば、f(m)は、(c+b)ビットのビット列をcビットのビット列に圧縮する圧縮関数fを用いて、
(m):=f(k‖m)
のように定義すればよい。また、代表的な圧縮関数には、c=160、b=512のsha1やc=256、b=512のsha256などがある(NIST, “Secure hash standard.” FIPS PUB 180-2 (2002))。
【0011】
第2チェックサム計算部150は、中間変数v,…,vの排他的論理和
【0012】
【数3】

【0013】
を計算し、第2チェックサムSとする(S150)。後処理部160は、計算
【0014】
【数4】

【0015】
によってメッセージ認証子τを求める(S160)。ただし、Δ’はbビットのあらかじめ定めたビット列、jは1から3の整数である。なお、Δ,…,Δ、およびΔ’,Δ’,Δ’は互いに異なるビット列である。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開2009−188794号公報
【非特許文献】
【0017】
【非特許文献1】M. Bellare, R. Canetti, H. Krawczyk, “Keying hash functions for message authentication,” CRYPTO 1996, LNCS vol.1109, pp.1-15, Springer, Heidelberg (1996).
【非特許文献2】K. Yasuda, “Multilane HMAC - Security beyond the Birthday Limit,” INDOCRYPT 2007, LNCS vol.4859, pp.18-32, Springer, Heidelberg (2007).
【発明の概要】
【発明が解決しようとする課題】
【0018】
しかしながら、従来技術は特許文献1のメッセージ認証子生成装置では、圧縮関数を用いる中間変数計算部140は、n=1からn=Nまで順番に、中間変数vn−1から中間変数vを求める処理を行う。したがって、並列処理を利用して中間変数vn’とvn”(ただしn’≠n”)を同時に求めることはできなかった。
【0019】
本発明は、時間のかかる圧縮関数を用いる処理に、並列処理を利用できる技術を提供することを目的とする。
【課題を解決するための手段】
【0020】
本発明のメッセージ認証子生成装置は、データDに対するメッセージ認証子τを出力する。本発明のメッセージ認証子生成装置は、パディング部、メッセージ分割部、第1排他的論理和計算部、中間変数計算部、重み付き排他的論理和計算部、第2排他的論理和計算部、後処理部を備える。
【0021】
【数5】

【0022】
はデータを2進表現したときのビットごとの排他的論理和、bはあらかじめ定めた整数、Nはb×NがデータDのメッセージ長よりも長くなる整数、fはcビットの鍵kを用いてbビットのビット列をcビットのビット列に圧縮する圧縮関数、Δはbビットのあらかじめ定めたビット列とする。
【0023】
パディング部は、データDに対して、あらかじめ定めたパディングを行うことで、b×NビットのデータMを生成する。メッセージ分割部は、データMを、N個に分割し、bビットのデータm,…,mを生成する。第1排他的論理和計算部は、
【0024】
【数6】

【0025】
を計算し、第1排他的論理和Sとする。中間変数計算部は、n=0〜N−1に対して
【0026】
【数7】

【0027】
ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、中間変数v,…,vN−1を求める。重み付き排他的論理和計算部は、w←vとし、n=1〜N−1に対して
【0028】
【数8】

【0029】
ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
の計算を行って得られるwN−1を、重み付き排他的論理和Wとする。第2排他的論理和計算部は、
【0030】
【数9】

【0031】
を計算し、第2排他的論理和Sとする。後処理部は、
【0032】
【数10】

【0033】
ただし、0b−2cは0がb−2c個並んだビット列、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、メッセージ認証子τとする。
【0034】
また、本発明のメッセージ認証子検証装置は、本発明のメッセージ認証子生成装置と比較部とを備え、データMとメッセージ認証子τとを入力とし、データMの検証を行う。メッセージ認証子生成装置は、データMからメッセージ認証子τ’を生成する。比較部は、メッセージ認証子τとメッセージ認証子τ’とを比較してデータMの検証結果を出力する。
【発明の効果】
【0035】
本発明のメッセージ認証子生成方法によれば、圧縮関数を用いて中間変数vを求める処理で、中間変数vn−1を用いない。したがって、並列処理を利用して複数の中間変数を同時に求めることができる。
【図面の簡単な説明】
【0036】
【図1】特許文献1のメッセージ認証子生成装置の構成を示す図。
【図2】特許文献1のメッセージ認証子生成装置の処理フローを示す図。
【図3】特許文献1のメッセージ認証子生成装置の各構成部での処理の流れを示す図。
【図4】本発明のメッセージ認証子生成装置の機能構成例を示す図。
【図5】本発明のメッセージ認証子生成装置の処理フロー例を示す図。
【図6】本発明のメッセージ認証子生成装置の各構成部での処理の流れを示す図。
【図7】本発明のメッセージ認証子検証装置の機能構成例を示す図。
【図8】本発明のメッセージ認証子検証装置の処理フロー例を示す図。
【発明を実施するための形態】
【0037】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0038】
図4に、本発明のメッセージ認証子生成装置の機能構成例を示す。また、図5に、本発明のメッセージ認証子生成装置の処理フロー例を示す。さらに、図6に、各構成部での処理の流れを示す。以下の説明では、
【0039】
【数11】

【0040】
はデータを2進表現したときのビットごとの排他的論理和、bはあらかじめ定めた整数、Nはb×NがデータDのメッセージ長よりも長くなる整数、nは0以上N−1以下の整数、fは圧縮関数、Δはbビットのあらかじめ定めたビット列とする。なお、図6の圧縮関数の表示は図3とは異なるが、同じ意味であり、fはcビットの鍵kを用いてbビットのビット列をcビットのビット列に圧縮する圧縮関数である。具体的には、
(m):=f(k‖m)
のように定義すればよい。代表的な圧縮関数には、c=160、b=512のsha1やc=256、b=512のsha256などがある(NIST, “Secure hash standard.” FIPS PUB 180-2 (2002))。“‖”はビット列の結合を意味する記号、“0”は“0”がb個並んだビット列、“0”は“0”がc個並んだビット列、2は整数2のbビット表現、2は整数2のcビット表現を意味する。また、Δは、
【0041】
【数12】

【0042】
で求められるビット列の先頭のbビットとすればよい。
【0043】
メッセージ認証子生成装置200は、任意のビット長(メッセージ長)のデータDに対するメッセージ認証子τを出力する。メッセージ認証子生成装置200は、パディング部110、メッセージ分割部220、第1排他的論理和計算部230、中間変数計算部240、重み付き排他的論理和計算部245、第2排他的論理和計算部250、後処理部260を備える。
【0044】
パディング部110は、データDに対して、あらかじめ定めたパディングを行うことで、b×NビットのデータMを生成する(S110)。メッセージ分割部220は、データMを、N個に分割し、bビットのデータm,…,mN−1を生成する(S220)。第1排他的論理和計算部230は、
【0045】
【数13】

【0046】
を計算し、第1排他的論理和Sとする(S230)。なお、図6の第1排他的論理和計算部230は、
【0047】
【数14】

【0048】
の処理を行うように表記されている。これは、初期値を0とおいてn=0〜N−1の繰返し処理を行う方法を示しており、初期値が0なので2つの式は同じ意味である。
【0049】
中間変数計算部240は、n=0〜N−1に対して
【0050】
【数15】

【0051】
ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、中間変数v,…,vN−1を求める(S240)。なお、例えば、圧縮関数がsha1やsha256のようなb=512の場合であれば、既約多項式をx512+x12+x+x+1とすればよい。上記の式から分かるように、中間変数vを求めるときに中間変数vn−1は不要であり、どの中間変数からでも求めることができるし、並列に求めることも可能である。
【0052】
重み付き排他的論理和計算部245は、w←vとし、n=1〜N−1に対して順番に
【0053】
【数16】

【0054】
ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
の計算を行って得られるwN−1を、重み付き排他的論理和Wとする(S245)。図6の重み付き排他的論理和計算部245は、
【0055】
【数17】

【0056】
としている。これは、w←vと同じ意味である。なお、例えば、圧縮関数がsha1のようなc=160の場合であれば、既約多項式をx160+x+x+x+1とし、sha256のようなc=256の場合であれば、既約多項式をx256+x10+x+x+1とすればよい。また、この処理は並列処理を利用できないが、乗算と排他的論理和の計算だけなので、計算効率を特に意識する必要はない。
【0057】
第2排他的論理和計算部250は、
【0058】
【数18】

【0059】
を計算し、第2排他的論理和Sとする(S250)。なお、図6の第2排他的論理和計算部250は、
【0060】
【数19】

【0061】
を行っている。これは、初期値を0とおいてn=0〜N−1の繰返し処理を行う方法を示しており、初期値が0なので2つの式は同じ意味である。
【0062】
後処理部260は、
【0063】
【数20】

【0064】
ただし、0b−2cは0がb−2c個並んだビット列、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、メッセージ認証子τとする(S260)。
【0065】
このように構成するので、本発明のメッセージ認証子生成装置は、誕生日限界を超える高い安全性を有し、特許文献1の発明と同等である。また、図6から分かるように、本発明のメッセージ認証子生成装置は、b×Nビット(メッセージ長m)のデータMのメッセージ認証子τを求めるために、N+3回圧縮関数を呼び出している。NはデータMを圧縮関数に入力するために分割した数である。つまり、本発明のメッセージ認証子生成装置は、圧縮関数を呼び出す回数は、データMの分割数(N回に相当)よりも3回多いだけであり、特許文献1と同じである。さらに、圧縮関数を用いて中間変数vを求める処理(S240)で、中間変数vn−1を用いない。したがって、中間変数vを順番に求める必要がなく、並列処理を利用して複数の中間変数を同時に求めることができる。この点が特許文献1の発明よりも優れている。
【実施例2】
【0066】
図7に本発明のメッセージ認証子検証装置の機能構成例を示す。また、図8に本発明のメッセージ認証子検証装置の処理フロー例を示す。メッセージ認証子検証装置500は、実施例1で示したメッセージ認証子生成装置200と比較部510と記録部590を備え、データMとメッセージ認証子τが入力、検証結果が出力である。
【0067】
メッセージ認証子検証装置500内のメッセージ認証子生成装置200は、データDからメッセージ認証子τ’を生成する(S200)。比較部510は、メッセージ認証子τとメッセージ認証子τ’とを比較する。そして、τ=τ’ならば、送信者またはデータ作成者の認証、およびデータ内容の整合性が検証されたとする。τ≠τ’ならば、送信者またはデータ作成者の詐称、もしくはデータの改ざんがあると判断する。そして、検証結果を出力する(S510)。なお、記録部590を備えず、その他の構成部でこれらの情報を記録してもよい。このような構成なので、メッセージ認証子検証装置500でも、メッセージ認証子生成装置200と同じ効果を得ることができる。
【0068】
<プログラム、記録媒体>
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0069】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0070】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0071】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0072】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0073】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【0074】
本発明は、通信路上または記録媒体上のデータに対し、送信者またはデータ作成者の認証を行うシステムに利用することができる。
【符号の説明】
【0075】
200 メッセージ認証子生成装置 110 パディング部
220 メッセージ分割部 230 排他的論理和計算部
240 中間変数計算部 245 排他的論理和計算部
250 排他的論理和計算部 260 後処理部
500 メッセージ認証子検証装置 510 比較部
590 記録部

【特許請求の範囲】
【請求項1】
データDに対するメッセージ認証子τを出力するメッセージ認証子生成装置であって、
【数21】


はデータを2進表現したときのビットごとの排他的論理和、bはあらかじめ定めた整数、Nはb×NがデータDのメッセージ長よりも長くなる整数、fはcビットの鍵kを用いてbビットのビット列をcビットのビット列に圧縮する圧縮関数、Δはbビットのあらかじめ定めたビット列とし、
前記データDに対して、あらかじめ定めたパディングを行うことで、b×NビットのデータMを生成するパディング部と、
前記データMを、N個に分割し、bビットのデータm,…,mを生成するメッセージ分割部と、
【数22】


を計算し、第1排他的論理和Sとする第1排他的論理和計算部と、
n=0〜N−1に対して
【数23】


ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、中間変数v,…,vN−1を求める中間変数計算部と、
←vとし、
n=1〜N−1に対して
【数24】


ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
の計算を行って得られるwN−1を、重み付き排他的論理和Wとする重み付き排他的論理和計算部と、
【数25】


を計算し、第2排他的論理和Sとする第2排他的論理和計算部と、
【数26】


ただし、0b−2cは0がb−2c個並んだビット列、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、メッセージ認証子τとする後処理部と
を備えるメッセージ認証子生成装置。
【請求項2】
請求項1記載のメッセージ認証子生成装置であって、
前記ビット列Δが
【数27】


で求められるビット列の先頭のbビットとする
ことを特徴とするメッセージ認証子生成装置。
【請求項3】
データDとメッセージ認証子τとを入力とし、データDの検証を行うメッセージ認証子検証装置であって、
前記データDからメッセージ認証子τ’を生成する請求項1または2記載のメッセージ認証子生成装置と、
前記メッセージ認証子τと前記メッセージ認証子τ’とを比較してデータDの検証結果を出力する比較部と
を備えるメッセージ認証子検証装置。
【請求項4】
データDに対するメッセージ認証子τを出力するメッセージ認証子生成方法であって、
【数28】


はデータを2進表現したときのビットごとの排他的論理和、bはあらかじめ定めた整数、Nはb×NがデータDのメッセージ長よりも長くなる整数、fはcビットの鍵kを用いてbビットのビット列をcビットのビット列に圧縮する圧縮関数、Δはbビットのあらかじめ定めたビット列とし、
パディング部が、前記データDに対して、あらかじめ定めたパディングを行うことで、b×NビットのデータMを生成するパディングステップと、
分割部が、前記データMを、N個に分割し、bビットのデータm,…,mを生成するメッセージ分割ステップと、
第1排他的論理和計算部が、
【数29】


を計算し、第1排他的論理和Sとする第1排他的論理和計算ステップと、
中間変数計算部が、n=0〜N−1に対して
【数30】


ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、中間変数v,…,vN−1を求める中間変数計算ステップと、
重み付き排他的論理和計算部が、w←vとし、
n=1〜N−1に対して
【数31】


ただし、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
の計算を行って得られるwN−1を、重み付き排他的論理和Wとする重み付き排他的論理和計算ステップと、
第2排他的論理和計算部が、
【数32】


を計算し、第2排他的論理和Sとする第2排他的論理和計算ステップと、
後処理部が
【数33】


ただし、0b−2cは0がb−2c個並んだビット列、この式の“・”は有限体GF(2)上の既約多項式の剰余環によって表現される有限体GF(2)の拡大体GF(2)の乗算
を計算し、メッセージ認証子τとする後処理ステップと
を有するメッセージ認証子生成方法。
【請求項5】
請求項4記載のメッセージ認証子生成方法であって、
前記ビット列Δが
【数34】


で求められるビット列の先頭のbビットとする
ことを特徴とするメッセージ認証子生成方法。
【請求項6】
データDとメッセージ認証子τとを入力とし、データDの検証を行うメッセージ認証子検証方法であって、
前記データDからメッセージ認証子τ’を生成する請求項4または5記載のメッセージ認証子生成方法の各ステップと、
比較部で、前記メッセージ認証子τと前記メッセージ認証子τ’とを比較してデータDの検証結果を出力する比較ステップと
を有するメッセージ認証子検証方法。
【請求項7】
請求項1から3のいずれかに記載の装置として、コンピュータを動作させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−259389(P2011−259389A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−134400(P2010−134400)
【出願日】平成22年6月11日(2010.6.11)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】