JP2007086170A - 汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム - Google Patents

汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム Download PDF

Info

Publication number
JP2007086170A
JP2007086170A JP2005272090A JP2005272090A JP2007086170A JP 2007086170 A JP2007086170 A JP 2007086170A JP 2005272090 A JP2005272090 A JP 2005272090A JP 2005272090 A JP2005272090 A JP 2005272090A JP 2007086170 A JP2007086170 A JP 2007086170A
Authority
JP
Japan
Prior art keywords
data
hash function
input
input data
matrix
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.)
Pending
Application number
JP2005272090A
Other languages
English (en)
Inventor
Masaru Obana
賢 尾花
Akitomo Tanaka
聡寛 田中
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2005272090A priority Critical patent/JP2007086170A/ja
Priority to US12/067,618 priority patent/US7933905B2/en
Priority to PCT/JP2006/317780 priority patent/WO2007034685A2/ja
Publication of JP2007086170A publication Critical patent/JP2007086170A/ja
Pending legal-status Critical Current

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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0852Quantum cryptography
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 要素数の小さいε−汎用ハッシュ関数族を実現する。
【解決手段】 入力データ拡大装置100には、入力データ103が入力される。入力データ拡大装置100は、入力データ103から一意に定まる第1の拡大装置出力および第2の拡大装置出力を導出し、出力する。第1の拡大装置出力および第2の拡大装置出力は、群である出力データ集合B の元である。ε−Δハッシュ関数計算装置101は、第1の拡大装置出力を入力とし、関数集合 HΔの元であってハッシュ関数指定データ104によって指定される関数 hΔの計算を行う。関数集合 HΔは、出力データ集合B の任意の元d と、出力データ集合B の任意の異なる二つの元x,y に対して、h(x)-h(y)=d となるようなh∈HΔの個数が、 |HΔ|・ε以下となるという特徴を有する。加算装置102は、関数 hΔの計算結果と第2の拡大装置出力との加算結果を出力する。
【選択図】 図1

Description

本発明は、汎用ハッシュ関数族計算装置、汎用ハッシュ関数族計算方法、汎用ハッシュ関数族計算プログラム、および共有鍵生成システムに関し、特にハッシュ関数族の要素数が小さい汎用ハッシュ関数族計算装置、汎用ハッシュ関数族計算方法、汎用ハッシュ関数族計算プログラム、およびそのような汎用ハッシュ関数族計算装置を用いた共有鍵生成システムに関する。
集合A から集合B へのε−汎用ハッシュ関数族とは、集合A から集合B への関数の集合H であり、集合A に属する任意の相異なる二つの要素x,y に対して、h(x)=h(y) となるH の元h の個数がε×|H| 以下となるような関数の集合のことを指す。ただし、|H| は集合H の要素数である。以下、任意の集合S に対して、 S の要素数を|S| と表すこととする。ε−汎用ハッシュ関数族は非特許文献1および非特許文献2に示されているように、メッセージ認証コードや量子鍵配送における秘匿性増強処理のために利用される。
従来のε−汎用ハッシュ関数族を実現する方式が、非特許文献2および非特許文献3に記載されている。また、非特許文献2および非特許文献3では、ε−汎用ハッシュ関数族の要素数の下界が示されている。メッセージ認証コードや量子鍵配送でε−汎用ハッシュ関数を利用する場合、効率の観点から、用いるε−汎用ハッシュ関数族の要素数は小さいことが望まれるが、従来は、非常に限られたパラメータに関してしか要素数の下界を達成する方式が知られていなかった。下界を達成できない入力集合A および出力集合B に対するε−汎用ハッシュ関数族を構成する方法としては、非特許文献1に記載されているように、集合A から元k を選び、入力データx との積を取った後に、集合A から集合B への縮小変換を施すという方式が知られている。この場合 εの値は1/|B| となり、ε−汎用ハッシュ関数族の要素数は集合A の要素数と等しくなるが、非特許文献3で示されている要素数の下界である|A|/|B| は達成できていない。また、非特許文献4では、ε−汎用ハッシュ関数の構成法が記載されているが、非特許文献4に記載された方法は、ハッシュ計算の高速化を目指したハッシュ関数の汎用的な構成法であり、ハッシュ関数集合の要素数を小さくすることを目指したものではない。
さらに、出力となる集合B の要素数が大きな場合に関する方式(ε−汎用ハッシュ関数族の要素数の下界を達成する方式)については、量子鍵配送等の有用なアプリケーションがあるにも関わらず、従来ほとんど方式が知られていなかった。
また、“cascade ”と呼ばれる誤り訂正処理が、非特許文献5に紹介されている。
また、入力データのビットを切り出し、その切り出されたデータに対するハッシュ計算を行うシステムが特許文献1に記載されている。
特開2001−134178号公報(段落0018、図4) C.H.Bennett,G.Brassard,C.Crepeau and U.Maurer,"Generalized Privacy Amplification",IEEE Trans. Information Theory,vol.41,no.6,1995年,pp.1915-1923 D.R.Stinson,"Universal Hashing and Authentication Codes",Designs, Codes and Cryptography,vol.4,1994年,pp.369-380 D.R.Stinson,"Combinatorial Techniques for Universal Hashing",Journal of Computer and System Sciences,vol.48,No.2,1994年,pp.337--346 Martin Boesgaard, Thomas Christensen and Erik Zenner,"Badger - A Fast and Provably Secure MAC",Proceedings of Applied Cryptography and Network Security, ACNS2005, Lecture Notes in Computer Science,vol. 3531,Springer Verlag,2005年,pp.176-191 G.Brassard, L.Salvail, "Secret-Key Reconciliation by Public Discussion", Proc. Eurocrypto’93, Lecture Notes in Computer Science, Vol.765, Springer Verlag, 1994年, pp.410-423
前述のように、従来技術によって実現されたε−汎用ハッシュ関数族では、要素数が最小となるような入力集合および出力集合が限定されていた。しかし、要素数の小さいε−汎用ハッシュ関数族に属するハッシュ関数の計算を行えることが好ましい。
そこで、本発明は、要素数の小さいε−汎用ハッシュ関数族を実現可能な汎用ハッシュ関数族計算装置、汎用ハッシュ関数族計算方法、汎用ハッシュ関数族計算プログラムを提供することを目的とする。また、本発明は、通信における送信側および受信側で共有される共有鍵を、要素数の小さいε−汎用ハッシュ関数族を用いて生成する共有鍵生成システムを提供することを目的とする。
本発明の第1の態様の汎用ハッシュ関数族計算装置は、入力データを用いた演算を行い出力データを出力する汎用ハッシュ関数族計算装置であって、入力データが入力され、一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大手段と、ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データが入力され、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの一方を入力としたときの、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算するΔハッシュ関数計算手段と、Δハッシュ関数計算手段によって計算されたハッシュ値と、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算手段とを備え、Δハッシュ関数計算手段が、ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算することを特徴とする。
出力データ集合は、 mビットのデータの集合であり、入力データは、 nビットのデータであり、ハッシュ関数指定データは、 mビットのデータであり、nとmとの間には、 n≦2・mという関係が成立し、入力データ拡大手段が、出力データ集合の二つの元として、入力データの上位 mビットデータ、および入力データの下位 mビットのデータを導出し、Δハッシュ関数計算手段が、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの一方と、 mビットのハッシュ関数指定データとのガロア体GF(2m)上での積算を計算し、その積算結果をハッシュ値とする構成であってもよい。
出力データ集合は、 mビットのデータの集合であり、入力データは、 nビットのデータであり、ハッシュ関数指定データは、 mビットのデータであり、nとmとの間には、 n≦2・mという関係が成立し、入力データ拡大手段が、出力データ集合の二つの元として、入力データの上位 mビットのデータ、および入力データの最上位から数えて m+1番目のビットから n番目のビットまでのビット列に2・m-nビットの0のビット列を連結した mビットのデータを導出し、Δハッシュ関数計算手段が、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの一方と、 mビットのハッシュ関数指定データとのガロア体GF(2m)上での積算を計算し、その積算結果をハッシュ値とする構成であってもよい。
また、本発明の第2の態様の汎用ハッシュ関数族計算装置は、ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行う汎用ハッシュ関数族計算装置であって、加算および積算が定義可能な体である第1の集合に属する元が第1の入力データとして入力されるとともに、第1の集合に属する元がハッシュ関数指定データとして入力され、第1の入力データとハッシュ関数指定データとの積算を行う積算手段と、上への写像であって線型性を満たす写像によって、積算手段による積算結果を、当該汎用ハッシュ関数族計算装置の出力データの集合である第2の集合の元に変換するデータ変換手段と、第2の集合に属する元が第2の入力データとして入力され、データ変換手段によって積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を当該汎用ハッシュ関数族計算装置の出力データとして出力する加算手段とを備えたことを特徴とする。
第2の集合は、群であり、加算手段が、データ変換手段によって積算結果から変換された第2の集合の元と、第2の入力データとを、第2の集合上で加算する構成であってもよい。
また、本発明の第3の態様の汎用ハッシュ関数族計算装置は、スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力する汎用ハッシュ関数族計算装置であって、前記集合上のベクトルが第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データが入力され、行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出するテプリッツ行列演算手段と、前記集合上のベクトルであって出力データと要素数が等しいベクトルが第2の入力データとして入力され、テプリッツ行列演算手段によって導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算手段とを備えたことを特徴とする。
行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、第2の入力データは、前記集合上の m次元ベクトルであり、テプリッツ行列演算手段が、行列指定データによって定められるm行n列のテプリッツ行列と、 n次元ベクトルである第1の入力データとの積を計算して m次元ベクトルを導出し、加算手段が、テプリッツ行列演算手段によって導出された m次元ベクトルと、第2の入力データとを加算する構成であってもよい。
行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、第2の入力データは、前記集合上の m次元ベクトルであり、テプリッツ行列演算手段が、行列指定データによって定められるm行n列のテプリッツ行列に対して行の基本変形を行い、基本変形後のm行n列の行列と、第1の入力データとの積を計算して m次元ベクトルを導出し、加算手段が、テプリッツ行列演算手段によって導出された m次元ベクトルと、第2の入力データとを加算する構成であってもよい。
行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、第2の入力データは、前記集合上の m次元ベクトルであり、テプリッツ行列演算手段が、行列指定データによって定められるm行n列のテプリッツ行列に対して列の基本変形を行い、基本変形後のm行n列の行列と、第1の入力データとの積を計算して m次元ベクトルを導出し、加算手段が、テプリッツ行列演算手段によって導出された m次元ベクトルと、第2の入力データとを加算する構成であってもよい。
テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列と第1の入力データとの積を計算し、加算手段は、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段による積算結果と、第2の入力データとを加算する構成であってもよい。そのような構成によれば、テプリッツ行列の行数および列数を調整することができる。
テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列に対して行の基本変形を行い、基本変形後の行列と第1の入力データとの積を計算し、加算手段は、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段による積算結果と、第2の入力データとを加算する構成であってもよい。そのような構成によれば、テプリッツ行列の行数および列数を調整することができる。
テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列に対して列の基本変形を行い、基本変形後の行列と第1の入力データとの積を計算し、加算手段は、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段による積算結果と、第2の入力データとを加算する構成であってもよい。そのような構成によれば、テプリッツ行列の行数および列数を調整することができる。
また、本発明による共有鍵生成システムは、第1の態様の汎用ハッシュ関数族計算装置をデータの送信側および受信側それぞれに備え、送信側と受信側でそれぞれ共通の共有鍵を生成する共有鍵生成システムであって、乱数データを発生する乱数発生手段と、乱数発生手段が発生した第1の乱数データを記憶する送信側記憶手段と、第1の乱数データを量子通信路を介して送信する第1の量子通信手段と、第1の量子通信手段から量子通信路を介して第1の乱数データを受信する第2の量子通信手段と、第2の量子通信手段が受信した第1の乱数データを記憶する受信側記憶手段と、送信側記憶手段に記憶された第1の乱数データに基づき、送信側と受信側とで同一のデータを生成する送信側誤り訂正手段と、受信側記憶手段に記憶された第1の乱数データに基づき、送信側と受信側とで同一のデータを生成する受信側誤り訂正手段と、送信側誤り訂正手段が生成したデータを、送信側の汎用ハッシュ関数族計算装置の入力データ拡大手段に入力し、乱数発生手段が発生した第2の乱数データを、ハッシュ関数指定データとして送信側の汎用ハッシュ関数族計算装置のΔハッシュ関数計算手段に入力する送信側入力手段と、乱数発生手段が発生した第2の乱数データを通信路を介して送信する第2の乱数データ送信手段と、第2の乱数データ送信手段から通信路を介して第2の乱数データを受信する第2の乱数データ受信手段と、受信側誤り訂正手段が生成したデータを、受信側の汎用ハッシュ関数族計算装置の入力データ拡大手段に入力し、第2の乱数データ受信手段が受信した第2の乱数データを、ハッシュ関数指定データとして受信側の汎用ハッシュ関数族計算装置のΔハッシュ関数計算手段に入力する受信側入力手段とを備え、送信側の汎用ハッシュ関数族計算装置は、送信側入力手段によって入力されたデータに応じた出力データを共有鍵として出力し、受信側の汎用ハッシュ関数族計算装置は、送信側入力手段によって入力されたデータに応じた出力データを共有鍵として出力することを特徴とする。
また、本発明による汎用ハッシュ関数族計算方法は、入力データを用いた演算を行い出力データを出力する汎用ハッシュ関数族計算方法であって、入力データ拡大手段が、入力データを入力されるデータ入力ステップと、Δハッシュ関数計算手段が、ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データを入力される指定データ入力ステップと、入力データ拡大手段が、一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大ステップと、Δハッシュ関数計算手段が、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの一方を入力としたときの、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算するΔハッシュ関数計算ステップと、加算手段が、Δハッシュ関数計算ステップで計算されたハッシュ値と、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算ステップとを含み、Δハッシュ関数計算手段が、Δハッシュ関数計算ステップで、ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算することを特徴とする。
また、本発明による汎用ハッシュ関数族計算方法は、ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行う汎用ハッシュ関数族計算方法であって、積算手段が、加算および積算が定義可能な体である第1の集合に属する元を第1の入力データとして入力され、第1の集合に属する元をハッシュ関数指定データとして入力される指定データ等入力ステップと、加算手段が、当該汎用ハッシュ関数族計算方法の出力データの集合である第2の集合に属する元を第2の入力データとして入力される第2の入力データ入力ステップと、積算手段が、第1の入力データとハッシュ関数指定データとの積算を行う積算ステップと、データ変換手段が、上への写像であって線型性を満たす写像によって、積算ステップでの積算結果を、第2の集合の元に変換するデータ変換ステップと、加算手段が、データ変換ステップで積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を当該汎用ハッシュ関数族計算方法の出力データとして出力する加算ステップとを含むことを特徴とする。
また、本発明による汎用ハッシュ関数族計算方法は、スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力する汎用ハッシュ関数族計算方法であって、テプリッツ行列演算手段が、前記集合上のベクトルを第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データを入力される指定データ入力ステップと、加算手段が、前記集合上のベクトルであって出力データと要素数が等しいベクトルを第2の入力データとして入力される第2の入力データ入力ステップと、テプリッツ行列演算手段が、行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出する行列演算ステップと、加算手段が、行列演算ステップで導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算ステップとを含むことを特徴とする。
また、本発明による汎用ハッシュ関数族計算プログラムは、入力データを用いた演算を行い出力データを出力するコンピュータに搭載される汎用ハッシュ関数族計算プログラムであって、前記コンピュータに、入力データが入力されるデータ入力処理、ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データが入力される指定データ入力処理、一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大処理、ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数の、入力データ拡大処理で導出された出力データ集合の二つの元のうちの一方を入力としたときにおけるハッシュ値を計算するΔハッシュ関数計算処理、Δハッシュ関数計算処理で計算されたハッシュ値と、入力データ拡大処理で導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算処理を実行させることを特徴とする。
また、本発明による汎用ハッシュ関数族計算プログラムは、ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行うコンピュータに搭載される汎用ハッシュ関数族計算プログラムであって、前記コンピュータに、加算および積算が定義可能な体である第1の集合に属する元が第1の入力データとして入力され、第1の集合に属する元がハッシュ関数指定データとして入力される指定データ等入力処理、前記コンピュータの出力データの集合である第2の集合に属する元が第2の入力データとして入力される第2の入力データ入力処理、第1の入力データとハッシュ関数指定データとの積算を行う積算処理、上への写像であって線型性を満たす写像によって、積算処理での積算結果を、第2の集合の元に変換するデータ変換処理、およびデータ変換処理で積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を前記コンピュータの出力データとして出力する加算処理を実行させることを特徴とする。
また、本発明による汎用ハッシュ関数族計算プログラムは、スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力するコンピュータに搭載される汎用ハッシュ関数族計算プログラムであって、前記コンピュータに、前記集合上のベクトルが第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データが入力される指定データ入力処理、前記集合上のベクトルであって出力データと要素数が等しいベクトルが第2の入力データとして入力される第2の入力データ入力処理、行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出する行列演算、および行列演算処理で導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算処理を実行させることを特徴とする。
また、本発明による汎用ハッシュ関数族計算方法は、入力データを用いた演算を行い出力データを出力する汎用ハッシュ関数族計算方法であって、入力データを入力されるデータ入力ステップと、ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データを入力される指定データ入力ステップと、一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大ステップと、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの一方を入力としたときの、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算するΔハッシュ関数計算ステップと、Δハッシュ関数計算ステップで計算されたハッシュ値と、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算ステップとを含み、Δハッシュ関数計算ステップで、ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算することを特徴とする。
出力データ集合は、 mビットのデータの集合であり、入力データは、 nビットのデータであり、ハッシュ関数指定データは、 mビットのデータであり、nとmとの間には、 n≦2・mという関係が成立し、入力データ拡大ステップで、出力データ集合の二つの元として、入力データの上位 mビットデータ、および入力データの下位 mビットのデータを導出し、Δハッシュ関数計算ステップで、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの一方と、 mビットのハッシュ関数指定データとのガロア体GF(2m)上での積算を計算し、その積算結果をハッシュ値とする方法であってもよい。
出力データ集合は、 mビットのデータの集合であり、入力データは、 nビットのデータであり、ハッシュ関数指定データは、 mビットのデータであり、nとmとの間には、 n≦2・mという関係が成立し、入力データ拡大ステップで、出力データ集合の二つの元として、入力データの上位 mビットのデータ、および入力データの最上位から数えて m+1番目のビットから n番目のビットまでのビット列に2・m-nビットの0のビット列を連結した mビットのデータを導出し、Δハッシュ関数計算ステップで、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの一方と、 mビットのハッシュ関数指定データとのガロア体GF(2m)上での積算を計算し、その積算結果をハッシュ値とする方法であってもよい。
また、本発明による汎用ハッシュ関数族計算方法は、ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行う汎用ハッシュ関数族計算方法であって、加算および積算が定義可能な体である第1の集合に属する元を第1の入力データとして入力され、第1の集合に属する元をハッシュ関数指定データとして入力される指定データ等入力ステップと、当該汎用ハッシュ関数族計算方法の出力データの集合である第2の集合に属する元を第2の入力データとして入力される第2の入力データ入力ステップと、第1の入力データとハッシュ関数指定データとの積算を行う積算ステップと、上への写像であって線型性を満たす写像によって、積算ステップでの積算結果を、第2の集合の元に変換するデータ変換ステップと、データ変換ステップで積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を当該汎用ハッシュ関数族計算方法の出力データとして出力する加算ステップとを含むことを特徴とする。
第2の集合は、群であり、加算ステップで、データ変換ステップで積算結果から変換された第2の集合の元と、第2の入力データとを、第2の集合上で加算する方法であってもよい。
また、本発明による汎用ハッシュ関数族計算方法は、スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力する汎用ハッシュ関数族計算方法であって、
前記集合上のベクトルを第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データを入力される指定データ入力ステップと、前記集合上のベクトルであって出力データと要素数が等しいベクトルを第2の入力データとして入力される第2の入力データ入力ステップと、行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出する行列演算ステップと、行列演算ステップで導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算ステップとを含むことを特徴とする。
行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、第2の入力データは、前記集合上の m次元ベクトルであり、行列演算ステップで、行列指定データによって定められるm行n列のテプリッツ行列と、 n次元ベクトルである第1の入力データとの積を計算して m次元ベクトルを導出し、加算ステップで、行列演算ステップで導出された m次元ベクトルと、第2の入力データとを加算する方法であってもよい。
行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、第2の入力データは、前記集合上の m次元ベクトルであり、行列演算ステップで、行列指定データによって定められるm行n列のテプリッツ行列に対して行の基本変形を行い、基本変形後のm行n列の行列と、第1の入力データとの積を計算して m次元ベクトルを導出し、加算ステップで、行列演算ステップで導出された m次元ベクトルと、第2の入力データとを加算する方法であってもよい。
行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、第2の入力データは、前記集合上の m次元ベクトルであり、行列演算ステップで、行列指定データによって定められるm行n列のテプリッツ行列に対して列の基本変形を行い、基本変形後のm行n列の行列と、第1の入力データとの積を計算して m次元ベクトルを導出し、加算ステップで、行列演算ステップで導出された m次元ベクトルと、第2の入力データとを加算する方法であってもよい。
指定データ入力ステップで、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、第2の入力データ入力ステップで、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、行列演算ステップで、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列と第1の入力データとの積を計算し、加算ステップで、行列演算ステップでの積算結果と、第2の入力データとを加算する方法であってもよい。
指定データ入力ステップで、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、第2の入力データ入力ステップで、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、
行列演算ステップで、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列に対して行の基本変形を行い、基本変形後の行列と第1の入力データとの積を計算し、加算ステップで、行列演算ステップでの積算結果と、第2の入力データとを加算する方法であってもよい。
指定データ入力ステップで、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、第2の入力データ入力ステップで、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、行列演算ステップで、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列に対して列の基本変形を行い、基本変形後の行列と第1の入力データとの積を計算し、加算ステップで、行列演算ステップでの積算結果と、第2の入力データとを加算する方法であってもよい。
本発明によれば、要素数の小さいε−汎用ハッシュ関数族を実現することができる。また、通信における送信側および受信側で共有される共有鍵を、要素数の小さいε−汎用ハッシュ関数族を用いて生成することができる。
以下、本発明の実施の形態を図面を参照して説明する。なお、既に説明したように、任意の集合S の要素数は、|S| と表すものとする。本発明による汎用ハッシュ関数族計算装置は、ε−汎用ハッシュ関数族を実現する。換言すれば、本発明による汎用ハッシュ関数族計算装置は、ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行う。
実施の形態1.
図1は、本発明による汎用ハッシュ関数族計算装置の第1の実施の形態を示すブロック図である。第1の実施の形態の汎用ハッシュ関数族計算装置は、図1に示すように、入力データ拡大装置100(入力データ拡大手段)と、ε−Δハッシュ関数計算装置101(Δハッシュ関数計算手段)と、加算装置102(加算手段)とを備える。そして、本実施の形態の汎用ハッシュ関数族計算装置には、入力データ集合A の元である入力データ103と、ε−Δハッシュ関数計算装置101で用いられるハッシュ関数を指定するハッシュ関数指定データ104とが入力される。また、汎用ハッシュ関数族計算装置は、出力データ105を出力する。出力データ105は、|A|≦|B|2 となる出力データ集合B であって、群である出力データ集合B の元である。
汎用ハッシュ関数族計算装置は、ε−汎用ハッシュ関数族を実現する装置であるので、入力データ集合A は、ε−汎用ハッシュ関数族に対する入力データの集合であり、出力データ集合B は、ε−汎用ハッシュ関数族の出力データの集合である。
入力データ拡大装置100には、入力データ集合A の元である入力データ103が入力される。そして、入力データ拡大装置100は、入力データ拡大装置100自身の出力データとして、二つの出力データを出力する。入力データ拡大装置100が出力する二つの出力データのうち、ε−Δハッシュ関数計算装置101に対して出力する出力データを第1の拡大装置出力と記す。また、入力データ拡大装置100が出力する二つの出力データのうち、加算装置102に対して出力する出力データを第2の拡大装置出力と記す。第1の拡大装置出力および第2の拡大装置出力は、いずれも出力データ集合B の元である。
入力データ拡大装置100は、以下の二つの条件を満たすように第1の拡大装置出力および第2の拡大装置出力を導出すればよく、以下の二つの条件を満たしていれば、第1の拡大装置出力および第2の拡大装置出力を導出する方法は限定されない。第1の条件は、ε−汎用ハッシュ関数族に対する入力データの集合A の元が入力され、出力される二つの出力データ(第1の拡大装置出力および第2の拡大装置出力)はいずれもε−汎用ハッシュ関数族の出力データの集合B の元であることである。第2の条件は、入力データ拡大装置100が一対一の関数(写像)として動作することである。すなわち、入力データ103として異なるデータが入力データ拡大装置100に入力された場合、入力データ拡大装置100は必ず異なるデータを出力することである。従って、入力データ拡大装置100に、ある入力データが入力されたときの出力データ(第1の拡大装置出力および第2の拡大装置出力)と、別の入力データが入力されたときの出力データ(第1の拡大装置出力および第2の拡大装置出力)とは、必ず異なる。
ε−Δハッシュ関数計算装置101には、第1の拡大装置出力およびハッシュ関数指定データ104が入力される。ε−Δハッシュ関数計算装置101は、第1の拡大装置出力を入力とし、関数集合 HΔの元であってハッシュ関数指定データ104によって指定される関数 hΔの計算を行う。そして、その計算結果(第1の拡大装置出力を入力とする関数 hΔのハッシュ値)を加算装置102に出力する。この計算結果は、データ出力集合B の元である。関数 hΔは、以下のような特徴を有する関数集合 HΔの元である。関数集合 HΔは、出力データ集合B の任意の元d と、出力データ集合B の任意の異なる二つの元x,y に対して、h(x)-h(y)=d となるようなh∈HΔの個数が、 |HΔ|・ε以下となるという特徴を有する。すなわち、 HΔの元のうち、h(x)-h(y)=d を満足するhの個数が |HΔ|・ε以下となるという特徴を有する。ここで、εは、ハッシュ関数の安全性を表す定数であり、予め要求される安全性に基づいて決定される。また、出力データ集合B は、HΔの定義域集合であり、また、HΔの定義域集合の値域集合である。
加算装置102には、第2の拡大装置出力と、ε−Δハッシュ関数計算装置101による計算結果とが入力される。そして、加算装置102は、入力された二つのデータ(第2の拡大装置出力、ε−Δハッシュ関数計算装置101による計算結果)の集合B 上での加算を行い、その加算結果を出力データ105として出力する。
次に、動作について説明する。
図2は、本実施の形態の汎用ハッシュ関数族計算装置の動作の例を示すフローチャートである。まず、入力データ拡大装置100に入力データ103が入力され、また、ε−Δハッシュ関数計算装置101にハッシュ関数指定データ104が入力される(ステップS11)。入力データ拡大装置100は、入力データ103に基づいて、第1の拡大装置出力および第2の拡大装置出力を導出し、第1の拡大装置出力をε−Δハッシュ関数計算装置101に出力し、第2の拡大装置出力を加算装置102に出力する(ステップS12)。ε−Δハッシュ関数計算装置101は、第1の拡大装置出力を入力とし、ハッシュ関数指定データ104によって指定される関数 hΔの計算を行い、その計算結果を加算装置102に出力する(ステップS13)。加算装置102は、第2の拡大装置出力と、ε−Δハッシュ関数計算装置101による計算結果との、集合B 上での加算を行い、その加算結果を出力データ105として出力する(ステップS14)。
以下に、ステップS12で入力データ拡大装置100が第1の拡大装置出力および第2の拡大装置出力を導出する例について説明する。入力データ拡大装置100に、入力データ103として nビットのデータが入力されるものとする。また、入力データ拡大装置100は、第1の拡大装置出力および第2の拡大装置出力として、それぞれ mビットのデータを出力するものとする。ただし、 n≦2・mという関係が成立しているものとする。また、出力データ集合は、 mビットのデータの集合であるものとする。
入力データ拡大装置100は、ステップS12において、例えば、 nビットの入力データ103の上位 mビットのデータを第1の拡大装置出力とし、下位 mビットのデータを第2の拡大装置出力とする。あるいは、 nビットの入力データ103の下位 mビットのデータを第1の拡大装置出力とし、上位 mビットのデータを第2の拡大装置出力としてもよい。以下、このような第1の拡大装置出力および第2の拡大装置出力の導出態様を第1の導出態様と記す。
また、入力データ拡大装置100は、 ステップS12において、nビットの入力データ103の上位 mビットのデータを第1の拡大装置出力とし、入力データ103の最上位から数えて m+1番目のビットから n番目までのビット列に2・m-nビットの0のビット列を連結した mビットのデータを第2の拡大装置出力としてもよい。あるいは、 nビットの入力データ103の上位 mビットのデータを第2の拡大装置出力とし、入力データ103の最上位から数えて m+1番目のビットから n番目までのビット列に2・m-nビットの0のビット列を連結した mビットのデータを第1の拡大装置出力としてもよい。以下、このような第1の拡大装置出力および第2の拡大装置出力の導出態様を第2の導出態様と記す。
入力データ拡大装置100が第1の導出態様または第2の導出態様で第1の拡大装置出力および第2の拡大装置出力を導出する場合、ハッシュ関数指定データ104として mビットのデータが入力される。また、この場合、ε−Δハッシュ関数計算装置101は、 mビットのデータであるハッシュ関数指定データ104と、第1の拡大装置出力とのガロア体GF(2m)上での積算を計算し、その計算結果を加算装置102に出力する。また、加算装置102は、ε−Δハッシュ関数計算装置101の計算結果と、 mビットのデータである第2の拡大装置出力とのガロア体GF(2m)上での加算を計算し、その加算結果を出力データ105として出力する。
ここで示した第1の導出態様および第2の導出態様は、いずれも入力データ拡大装置100の動作の例示である。既に説明した第1の条件および第2の条件を満たしていれば、第1の拡大装置出力および第2の拡大装置出力を導出する方法は限定されない。
なお、第1の導出態様や第2の導出態様では、入力データ103として nビットのデータが入力されるものとして説明した。入力データ103としてどのような表現のデータが入力され、出力データ105としてどのような表現のデータが出力されるかは、汎用ハッシュ関数族計算装置の設計により異なり、入力データ103や出力データ105の表現は特定の表現に限定されない。例えば、後述する第1の実施例で示すように、入力データ103は n次元のベクトル表現で表されたガロア体GF(qn)の元であり、出力データ105は、 m次元のベクトル表現で表されたガロア体GF(qm)の元であってもよい。また、ハッシュ関数指定データ104の表現も特定の表現に限定されない。
本実施の形態によれば、ε−Δハッシュ関数集合(上述の関数集合HΔ )として、要素数の小さい関数集合を選択することにより、要素数の小さいε−汎用ハッシュ関数族を実現することができる。そして、要素数が最小となるε−Δ関数集合を選択すれば、ε−汎用ハッシュ関数族の要素数を最小にすることができる。
本実施の形態において、入力データ拡大装置100、ε−Δハッシュ関数計算装置101、および加算装置102は、それぞれの機能を有するハードウェアであってもよい。あるいは、入力データ拡大装置100、ε−Δハッシュ関数計算装置101、および加算装置102は、汎用ハッシュ関数族計算プログラムに従って動作するコンピュータによって実現されてもよい。例えば、汎用ハッシュ関数族計算プログラムが記憶装置に記憶され、コンピュータによって読み取られ、コンピュータが汎用ハッシュ関数族計算プログラムに従って動作することで、入力データ拡大装置100、ε−Δハッシュ関数計算装置101、および加算装置102として機能してもよい。
実施の形態2.
図3は、本発明による汎用ハッシュ関数族計算装置の第2の実施の形態を示すブロック図である。第2の実施の形態の汎用ハッシュ関数族計算装置は、図3に示すように、積算装置200(積算手段)と、データ変換装置201(データ変換手段)と、加算装置202(加算手段)とを備える。そして、本実施の形態の汎用ハッシュ関数族計算装置には、第1の入力データ203と、第2の入力データ204と、ハッシュ関数を指定するハッシュ関数指定データ205とが入力される。また、汎用ハッシュ関数族計算装置は、群である出力データ集合B の元である出力データ206を出力する。本実施の形態において、第1の入力データ203は、加算および積算が定義できる体である集合A (第1の集合)の元である。また、第2の入力データ204は、出力データ集合B (第2の集合)の元である。また、ハッシュ関数指定データ205は、集合A の元である。本実施の形態では、第1の入力データ203と第2の入力データ204との組み合わせが入力データ集合の元となる。よって、入力データ集合の要素数は、|A|・|B|と表すことができる。
積算装置200には、第1の入力データ203とハッシュ関数指定データ205とが入力される。そして、積算装置200は、第1の入力データ203とハッシュ関数指定データ205との体A 上での積算を行い、その積算結果をデータ変換装置に出力する。
データ変換装置201は、上への写像であり、かつ線形性を満たす写像を行う装置である。データ変換装置201には、積算装置200による積算結果が入力される。そして、データ変換装置201は、その積算結果を出力データ集合B の元に変換し、変換結果を加算装置202に出力する。データ変換装置201による変換は、上への写像であり、かつ線形性を満たす写像であって、積算装置200による積算結果を出力データ集合B の元に変換するものであればよく、そのような条件を満たしている変換であれば、特に限定されない。
加算装置202には、データ変換装置201が出力した変換結果と、第2の入力データ204とが入力される。加算装置202は、データ変換装置201が出力した変換結果と第2の入力データ204との集合B 上での加算を行い、その加算結果を出力データ206として出力する。
次に、動作について説明する。
図4は、本実施の形態の汎用ハッシュ関数族計算装置の動作の例を示すフローチャートである。まず、積算装置200に第1の入力データ203およびハッシュ関数指定データ205が入力され、加算装置202に第2の入力データ204が入力される(ステップS21)。積算装置200は、第1の入力データ203とハッシュ関数指定データ205との体A 上での積算を行い、その積算結果をデータ変換装置に出力する(ステップS22)。次にデータ変換装置201は、ステップS22の積算結果を出力データ集合B の元に変換する(ステップS23)。そして、加算装置202は、ステップS23の変換結果と第2の入力データ204との集合B 上での加算を行い、その加算結果を出力データ206として出力する(ステップS24)。
なお、第1の入力データ203や第2の入力データ204としてどのような表現のデータが入力され、出力データ206としてどのような表現のデータが出力されるかは、汎用ハッシュ関数族計算装置の設計により異なり、第1の入力データ203、第2の入力データ204、出力データ206の表現は特定の表現に限定されない。同様に、ハッシュ関数指定データ205の表現も特定の表現に限定されない。
本実施の形態によれば、ε=1/|B|、入力データ集合の要素数が|A|・|B|、出力データ集合の要素数が|B| 、関数集合の要素数が |A|となるようなε−汎用ハッシュ関数族を実現することができる。そして、要素数が最小となるようなε−汎用ハッシュ関数族を実現することができる。
本実施の形態において、積算装置200、データ変換装置201、および加算装置202は、それぞれの機能を有するハードウェアであってもよい。あるいは、積算装置200、データ変換装置201、および加算装置202は、汎用ハッシュ関数族計算プログラムに従って動作するコンピュータによって実現されてもよい。例えば、汎用ハッシュ関数族計算プログラムが記憶装置に記憶され、コンピュータによって読み取られ、コンピュータが汎用ハッシュ関数族計算プログラムに従って動作することで、積算装置200、データ変換装置201、および加算装置202として機能してもよい。
実施の形態3.
図5は、本発明による汎用ハッシュ関数族計算装置の第3の実施の形態を示すブロック図である。第3の実施の形態の汎用ハッシュ関数族計算装置は、図5に示すように、テプリッツ行列積算装置300(テプリッツ行列演算手段)と、加算装置301(加算手段)とを備える。そして、本実施の形態の汎用ハッシュ関数族計算装置には、第1の入力データ302と、第2の入力データ303と、行列指定データ304とが入力される。また、汎用ハッシュ関数族計算装置は、出力データ305を出力する。
第1の入力データ302は、スカラー積および加算が定義できる集合A上のn次元ベクトルである。すなわち、第1の入力データ302は、集合Aのn個の元からなるベクトルである。第2の入力データ303は、集合A上のm次元ベクトルである。すなわち、第2の入力データ303は、集合Aのm個の元からなるベクトルである。本実施の形態では、第1の入力データ302と第2の入力データ303との組み合わせが入力データ集合の元となる。
また、行列指定データ304は、m行n列行列Ai,j (1≦i≦m,1≦j≦n)のうち、k-i=l-j を満たす任意の i,j,k,l (1≦i,k≦m,1≦j,l≦n)に対して Ai,j=Ak,l を満足する行列であるテプリッツ行列を一意に指定するA上の n+m-1 次元ベクトルである。ここでは、テプリッツ行列の行数、列数は、それぞれm行、n列であり、m,n の値は固定値であるものとして説明する。テプリッツ行列は、第1行の各要素および第1列の各要素が決定されれば、一意に定められる。行列指定データ304は n+m-1次元ベクトルであり、この n+m-1次元ベクトルの n+m-1個の要素によりm行n列行列の第1行および第1列の各要素を定めることができる。よって、行列指定データ304により、テプリッツ行列を一意に指定することができる。
例えば、入力される行列指定データ304( n+m-1次元ベクトル)の最初の m番目までの要素がテプリッツ行列の第1列の要素であり、 m+1番目から n+m-1番目までの要素がテプリッツ行列の第1行の要素のうち1列目の要素を除いた要素であるものとすると予め定めておくことによって、行列指定データ304からテプリッツ行列の第1行および第1列が定まる。なお、この場合、行列指定データ304の1番目の要素は、テプリッツ行列の第1行第1列の要素となる。その結果、テプリッツ行列を定めることができる。
出力データ305は、集合A上のm次元ベクトルである。
テプリッツ行列積算装置300には、第1の入力データ302と行列指定データ304とが入力される。テプリッツ行列積算装置300は、行列指定データ304によって指定されるテプリッツ行列(行列指定データ304によって一意に定められるテプリッツ行列)と第1の入力データ302との積算を行う。テプリッツ行列積算装置300は、この積算結果である集合A上のm次元ベクトルを加算装置301に出力する。
加算装置301には、テプリッツ行列積算装置300の出力である m次元ベクトルと、集合A上のm次元ベクトルである第2の入力データ303とが入力される。そして、加算装置301は、入力された二つのデータの m次元ベクトル上での加算を行い、 m次元ベクトル上での加算結果を出力データ305として出力する。
次に、動作について説明する。
図6は、本実施の形態の汎用ハッシュ関数族計算装置の動作の例を示すフローチャートである。まず、テプリッツ行列積算装置300に第1の入力データ302および行列指定データ304が入力され、加算装置301に第2の入力データ303が入力される(ステップS31)。テプリッツ行列積算装置300は、行列指定データ304によって指定されるテプリッツ行列と第1の入力データ302との積算を行い、その積算結果を加算装置301に出力する(ステップS32)。加算装置301は、ステップS32の積算結果と第2の入力データ303との m次元ベクトル上での加算を行い、その加算結果を出力データ305として出力する。
第3の実施の形態によれば、ε=1/|A|m 、入力データ集合の要素数が|A|n+m、出力データ集合の要素数が|A|m、関数集合の要素数が|A|n+m-1となるようなε−汎用ハッシュ関数族を実現することができる。そして、非特許文献1に記載された方式よりも要素数の小さいε−汎用ハッシュ関数族を実現することができる。
次に、第3の実施の形態の変形例について説明する。
上記の第3の実施の形態では、テプリッツ行列積算装置300が、行列指定データ304によって指定されるテプリッツ行列と第1の入力データ302との積算を行うものとして説明した。テプリッツ行列積算装置300は、行列指定データ304によってテプリッツ行列を定めた後、そのテプリッツ行列に対して行の基本変形あるいは列の基本変形を施し、基本変形が施された後の行列と第1の入力データ302との積算を行い、その積算結果を加算装置301に出力してもよい。加算装置301は、その積算結果と、第2の入力データ303との加算を行えばよい。
行の基本変形として、以下の変形が挙げられる。第1に、行列(ここではテプリッツ行列)の第 a行と第 b行とを交換する変形が挙げられる。第2に、行列(ここではテプリッツ行列)の第 a行の各要素をc倍する変形が挙げられる。第3に、行列(ここではテプリッツ行列)の第 a行の各要素に、第 b行の各要素をc倍した値を加算する変形が挙げられる。ここでcは、行列の各要素の集合の元であってc≠0である値であれば任意の値である。また、ここでは、aおよびbは、1≦a≦m,1≦b≦mを満たす自然数であればよい。テプリッツ行列積算装置300は、行列指定データ304によって指定されるテプリッツ行列に対して、上記の3種類のいずれかの基本変形(行の基本変形)を行い、基本変形後の行列と第1の入力データ302との積算を行えばよい。
列の基本変形として、以下の変形が挙げられる。第1に、行列(ここではテプリッツ行列)の第 a列と第 b列とを交換する変形が挙げられる。第2に、行列(ここではテプリッツ行列)の第 a列の各要素をc倍する変形が挙げられる。第3に、行列(ここではテプリッツ行列)の第 a列の各要素に、第 b列の各要素をc倍した値を加算する変形が挙げられる。ここでcは、行列の各要素の集合の元であってc≠0である値であれば任意の値である。また、ここでは、aおよびbは、1≦a≦n,1≦b≦nを満たす自然数であればよい。テプリッツ行列積算装置300は、行列指定データ304によって指定されるテプリッツ行列に対して、上記の3種類のいずれかの基本変形(列の基本変形)を行い、基本変形後の行列と第1の入力データ302との積算を行えばよい。
本変形例でも第3の実施の形態と同様の効果が得られる。
次に、第3の実施の形態の他の変形例について説明する。
第3の実施の形態および上述の変形例では、テプリッツ行列の行数、列数は、それぞれm行、n列であり、m,n の値は固定値であるものとして説明した。テプリッツ行列の列数および行数が固定値でなく、入力されるデータに応じてテプリッツ行列積算装置300がテプリッツ行列の列数および行数を決定してもよい。
本変形例では、テプリッツ行列積算装置300には、第1の入力データ302および行列指定データ304の他に、テプリッツ行列の行数および列数も入力される。ただし、入力される行数をm、入力され列数をnとした場合、行列指定データ304として、スカラー積および加算が定義できる集合A上の n+m-1次元のベクトルが入力される。すなわち、入力されるテプリッツ行列の行数m、列数n、およびベクトルである行列指定データ304の要素数( rとする。)の間には、r=n+m-1 という関係が成立する。
また、第1の入力データ302として、集合A上のn次元ベクトルがテプリッツ行列積算装置300に入力され、第2の入力データ303として、集合A上のm次元ベクトルが加算装置301に入力される。
テプリッツ行列積算装置300は、行列指定データ304が入力され、また、行数mおよび列数nが入力されると、例えば、ベクトルである行列指定データ304の最初の m番目までの要素がテプリッツ行列の第1列の要素であり、 m+1番目から n+m-1番目までの要素がテプリッツ行列の第1行の要素のうち1列目の要素を除いた要素であると決定する。また、この場合、行列指定データ304の1番目の要素は、テプリッツ行列の第1行第1列の要素である。この結果、テプリッツ行列積算装置300は、テプリッツ行列の第1行および第1列を定めることができる。そして、テプリッツ行列積算装置300は、決定した第1行および第1列に基づいてテプリッツ行列を定める。
入力された行列指定データ304、行数mおよび列数nによってテプリッツ行列を決定した後、テプリッツ行列積算装置300は、テプリッツ行列と第1の入力データ302との積算を行えばよい。また、加算装置301は、その積算結果と第2の入力データ303との加算を行い、加算結果を出力データ305として出力すればよい。
また、本変形例において、入力された行列指定データ304、行数mおよび列数nによってテプリッツ行列を決定した後、テプリッツ行列積算装置300は、そのテプリッツ行列に対して行の基本変形または列の基本変形を施し、基本変形後の行列と第1の入力データ302との積算を行い、その積算結果を加算装置301に出力してもよい。加算装置301は、その積算結果と、第2の入力データ303との加算を行えばよい。
また、入力されるテプリッツ行列の行数m、列数n、およびベクトルである行列指定データ304の要素数r の間には、r=n+m-1 という関係が成立する。従って、行列指定データ304が入力されれば、行数と列数のいずれか一方が入力されれば、他方を導出することができる。
例えば、行列指定データ304および列数が入力されれば、テプリッツ行列積算装置300は、ベクトルである行列指定データ304の要素数rと列数nとを用いて、m=r-n+1 という計算によって行数m を導出することができる。従って、本変形例において、行数と列数のうち列数が入力され、行数が入力されなくてもよい。この場合、テプリッツ行列積算装置300が行列指定データ304の要素数r と列数n から行数m を導出する。
同様に、例えば、行列指定データ304および行数が入力されれば、テプリッツ行列積算装置300は、ベクトルである行列指定データ304の要素数rと行数mとを用いて、n=r-m+1 という計算によって列数n を導出することができる。従って、本変形例において、行数と列数のうち行数が入力され、列数が入力されなくてもよい。この場合、テプリッツ行列積算装置300が行列指定データ304の要素数r と行数m から列数n を導出する。
このように、本変形例では、テプリッツ行列の行数mと列数nの双方がテプリッツ行列積算装置300に入力されてもよいし、また、テプリッツ行列の行数mと列数nのいずれか一方が入力されてもよい。
本変形例でも第3の実施の形態と同様の効果が得られる。また、本変形例では、テプリッツ行列の行数および列数を自由に調整することができる。
本実施の形態において、テプリッツ行列積算装置300および加算装置301は、それぞれの機能を有するハードウェアであってもよい。あるいは、テプリッツ行列積算装置300および加算装置301は、汎用ハッシュ関数族計算プログラムに従って動作するコンピュータによって実現されてもよい。例えば、汎用ハッシュ関数族計算プログラムが記憶装置に記憶され、コンピュータによって読み取られ、コンピュータが汎用ハッシュ関数族計算プログラムに従って動作することで、テプリッツ行列積算装置300および加算装置301として機能してもよい。
次に、第1の実施例を、図1を参照して説明する。本実施例は、第1の実施の形態の実施例である。また、本実施例の説明において、n,m は自然数であり、q は素数または素数をべき乗した整数であるものとする。
本実施例において、入力データ103はガロア体GF(qn)の元であり、出力データ105はガロア体GF(qm)の元であり、 n≦2・mを満足するものとする。ガロア体GF(qn)は、第1の実施の形態で述べた入力データ集合A に相当し、ガロア体GF(qm)は、第1の実施の形態で述べた出力データ集合B に相当する。
一般に、ガロア体GF(qn)の元を xとすると、元 x∈GF(qn)は、ガロア体 GF(q)={0,1,2,3,...,q-1} の n個の元を用いて(x1,x2,...,xn)と表すことができる。各xi(0≦i≦n )は、0からq-1のいずれかである。この(x1,x2,...,xn)は、一般に元 xのベクトル表現と呼ばれる。なお、ガロア体 GF(q)の要素数は q個であり、ガロア体GF(qn)の元 xは、ガロア体 GF(q)の元を用いた n次元ベクトルとして表されるので、ガロア体GF(qn)の要素数(すなわち、入力データ集合の要素数)は、qnとなる。ここでは、ガロア体GF(qn)の元について説明したが、ガロア体GF(qm)の元についても同様であり、ガロア体GF(qm)の要素数(出力データ集合の要素数)は、qmとなる。
また、本実施例では、ε−Δハッシュ関数集合 HΔとして、要素数がqmとなる関数集合 HΔ={hk| h_k(x)=k×x, k∈GF(qm)} を用いるものとする。そして、ガロア体GF(qm)の元である k( k∈GF(qm))が、ハッシュ関数族の要素を一意に指定するハッシュ関数指定データ104として入力されるものとする。
入力データ拡大装置100には、ベクトル表現(x1,x2,...,xn)で表されるガロア体GF(qn)の元 xの元が入力データ103として入力される。入力データ拡大装置100は、元 xから第1の拡大装置出力(y1とする。)および第2の拡大装置出力(y2とする。)を生成する。y1およびy2は、ガロア体GF(qm)の元であり(すなわち、 y1,y2∈GF(qm))、 m次元ベクトルのベクトル表現で表すことができる。本実施例では、入力データ拡大装置100は、元 xの 1番目の要素から m番目の要素までの m個の要素からなるベクトルで表したGF(qm)の元をy1とする。すなわち、入力データ拡大装置100は、y1=(x1,x2,...,xm) とする。また、入力データ拡大装置100は、元 xの m+1番目の要素から n番目の要素までの要素に、2・m-n個の“0”を連結したベクトルで表したGF(qm)の元をy2とする。すなわち、入力データ拡大装置100は、y2=(xm+1,xm+2,...,xn,0,0,...,0) とする。そして、入力データ拡大装置100は、第1の拡大装置出力としてy1=(x1,x2,...,xm) をε−Δハッシュ関数計算装置101に出力し、第2の拡大装置出力としてy2=(xm+1,xm+2,...,xn,0,0,...,0) を加算装置102に出力する。
なお、本実施例では、ガロア体GF(qn)の元 xの元が入力データ103として入力され、入力データ拡大装置100は、ガロア体GF(qm)の2つの元y1,y2 を出力する。そして、ここで条件となるのは、入力されるx の表現を(x1,x2,...,xn)としたときに、2つの出力の表現が(x1,x2,...,xm), (xm+1,xm+2,...,xn,0,0,...,0)となることである。ただし、 x,y1,y2や出力データ105の表現形式は、特定の表現形式に限定されるわけではない。
ε−Δハッシュ関数計算装置101には、第1の拡大装置出力であるy1=(x1,x2,...,xm) が入力される。また、ε−Δハッシュ関数計算装置101には、ガロア体GF(qm)の元である k( k∈GF(qm))がハッシュ関数指定データ104として入力される。ε−Δハッシュ関数計算装置101は、y1と kとをGF(qm)上で積算し、その積算結果であるy1×k を加算装置102に出力する。
GF(qm)上の積算について説明する。f(x)を GF(q)上の元を係数として持つ m次既約多項式( m次多項式であって因数分解できないもの)とする。このとき、GF(qm)の二つの元a=(a1,a2,...,am), b=(b1,b2,...,bm) の積算結果をc=(c1,c2,...,cm)とすると、ci( 1≦i≦m)は、以下のように表される。
ci = (a1+a2 x+a3 x2+…+amxm-1)(b1+b2x+b3x2+…+bmxm-1) mod f(x)のi-1次の係数
なお、このようなGF(qm)上の積算は公知である。
加算装置102には、第2の拡大装置出力であるy2=(xm+1,xm+2,...,xn,0,0,...,0) と、ε−Δハッシュ関数計算装置101による積算結果y1×k とが入力される。加算装置102は、y2とy1×k とをGF(qm)上で加算し、その加算結果を出力データ105として出力する。
GF(qm)上の加算について説明する。GF(qm)の二つの元a=(a1,a2,...,am), b=(b1,b2,...,bm) のGF(qm)上での加算を行うときには、 a,bの各要素をGF(q) 上、つまり法(modulo)上で行う。よって、GF(qm)の二つの元a=(a1,a2,...,am), b=(b1,b2,...,bm) の加算結果a+b のベクトル表現は、(a1+b1 mod q, a2+b2 mod q,...,am+bm mod q)となる。なお、このようなGF(qm)上の加算は公知である。
本実施例では、入力データ集合の要素数は、qnとなり、出力データ集合の要素数はqmとなり、ε−汎用ハッシュ関数族の要素数はqmとなる。
次に、第2の実施例を、図3を参照して説明する。本実施例は、第2の実施の形態の実施例である。本実施例の説明においても、n,m は自然数であり、q は素数であるものとする。
本実施例において、第1の入力データ203はガロア体GF(qn)の元であり、第2の入力データ204はガロア体GF(qm)の元である。ハッシュ関数指定データ205は、ガロア体GF(qn)の元である。出力データ206は、ガロア体GF(qm)の元である。第1の入力データ203およびハッシュ関数指定データ205は、それぞれガロア体 GF(q)上の n次元ベクトル(もしくは列)で表現される。また、第2の入力データ204および出力データ206は、それぞれガロア体 GF(q)上の m次元ベクトル(もしくは列)で表現される。ただし、本実施例において、ハッシュ関数指定データ205は、GF(qn)の元であればよく、その表現形式は特定の表現形式に限定されるわけではない。第1の入力データ203、第2の入力データ204、出力データ206の表現形式についても、特定の表現形式に限定されるわけではない。
なお、ガロア体GF(qn)は、第2の実施の形態で述べた集合A に相当する。また、ガロア体GF(qm)は、第2の実施の形態で述べた出力データ集合B に相当する。また、第2の実施の形態で述べたように、第1の入力データ203と第2の入力データ204との組み合わせが入力データ集合の元となる。よって、入力データ集合の要素数は、ガロア体GF(qn)の要素数とガロア体GF(qm)の要素数との積である。
また、本実施例では、データ変換装置201として、GF(qn)の元y=(y1,y2,...,yn)が入力されたときに、そのy をGF(qm)の元z=(z1,z2,...,zm)に変換し、z=(z1,z2,...,zm)を出力する装置を用いる。
本実施の形態では、積算装置200には、GF(qn)の元である第1の入力データ203およびハッシュ関数指定データ205が入力される。第1の入力データ203として入力されるGF(qn)の元をx1とし、ハッシュ関数指定データ205として入力されるGF(qn)の元を kとする。積算装置200は、入力された二つのデータx1と kとをGF(qn)上で積算し、その積算結果をデータ変換装置201に出力する。x1と kとのGF(qn)上での積算結果をy とし、y は、(y1,y2,...,yn)と表されるとする。すなわち、y=x1×k=(y1,y2,...,yn)である。
データ変換装置201には、積算結果y=(y1,y2,...,yn)が入力される。データ変換装置201は、その積算結果を、GF(qn)の元z=(z1,z2,...,zm)に変換し、元z=(z1,z2,...,zm)を加算装置202に出力する。
加算装置202には、データ変換装置201による変換結果z と、第2の入力データ204(x2とする。)とが入力される。加算装置202は、z とx2とを GF(qm)上で加算し、その加算結果であるz+x2を出力データ206として出力する。
本実施例では、入力データ集合の要素数は、qn+mとなり、出力データ集合の要素数は、qmとなり、ε−汎用ハッシュ関数族の要素数はqnとなる。ε−汎用ハッシュ関数族の要素数(qn)が入力データ集合の要素数(qn+m)を出力データ集合の要素数(qm)で除算した値と等しくなっており、本実施例では要素数が最小となるε−汎用ハッシュ関数族を実現していることが確かめられる。
次に、第3の実施例を、図5を参照して説明する。本実施例は、第3の実施の形態の実施例である。本実施例では、テプリッツ行列の行数、列数は、それぞれm行、n列であり、m,n の値は固定値であるものとする。
本実施例において、第1の入力データ302は、ガロア体GF(q)上のn次元ベクトル(すなわち、ガロア体GF(q)のn個の元からなるベクトル)である。第2の入力データ303は、ガロア体GF(q)上のm次元ベクトル(すなわち、ガロア体GF(q)のm個の元からなるベクトル)である。また、出力データ305は、GF(q)上のm次元ベクトルである。
また、本実施例では、 GF(q)上のm行n列テプリッツ行列を指定する行列指定データ304を、 GF(q)上の m+n-1次元ベクトル T=(t1,1,t2,1,t3,1,..., tm,1,t1,2,t1,3,...,t1,n)で定義する。このm+n-1次元ベクトルTの要素であるti,jは、テプリッツ行列のi行j列の要素を表している。よって、ベクトルT が入力されれば、テプリッツ行列積算装置300は、ベクトルTのn+m-1個の要素によりm行n列行列の第1行および第1列の各要素を定めることができる。そして、テプリッツ行列の性質から、行列の第1行目および第1列目の各要素を定めれば、テプリッツ行列積算装置300は、テプリッツ行列を一意に定めることができる。
第1の入力データ302(ガロア体GF(q)上のn次元ベクトル)の集合の要素数は、qnである。また、第2の入力データ303(ガロア体GF(q)上のm次元ベクトル)の集合の要素数は、qmである。第1の入力データ302と第2の入力データ303との組み合わせが入力データ集合の元となるので、入力データ集合の要素数は、qn+mである。また、テプリッツ行列を一意に定める行列指定データ304( GF(q)上の m+n-1次元ベクトル)の集合の要素数(すなわち、ε−汎用ハッシュ関数族の要素数)は、qm+n-1である。
テプリッツ行列積算装置300には、GF(q)上のn次元ベクトルである第1の入力データ302(x1とする。)が入力され、また、行列指定データ304として GF(q)上の m+n-1次元ベクトル Tもテプリッツ行列積算装置300に入力される。テプリッツ行列積算装置300は、ベクトル Tからm行n列のテプリッツ行列(MTと記す。)を定める。そして、テプリッツ行列積算装置300は、テプリッツ行列MTと第1の入力データ302であるx1との積算を行い、その積算結果であるMT・x1を加算装置301に出力する。
加算装置301には、テプリッツ行列積算装置300による積算結果MT・x1が入力される。また、加算装置301には、GF(q)上のm次元ベクトルである第2の入力データ303(x2とする。)が入力される。加算装置301は、入力された二つのデータ(MT・x1およびx2)について、GF(q)上のm次元ベクトル上での加算を行い、その加算結果MT・x1+x2を出力データ305として出力する。
本実施例では、入力データ集合の要素数は、qn+mとなり、出力データ集合の要素数は、qmとなり、ε−汎用ハッシュ関数族の要素数はqn+m-1となる。ε−汎用ハッシュ関数族の要素数(qn+m-1)が入力データ集合の要素数(qn+m)よりも小さくなっていることから、非特許文献1 に記載された方式よりも要素数の小さいε−汎用ハッシュ関数族を実現していることが確かめられる。
第4の実施例では、第1の実施の形態の汎用ハッシュ関数族計算装置を用いた共有鍵生成システムを示す。図7は、共有鍵生成システムの構成例を示すブロック図である。図7に示す共有鍵生成システムは、第1の実施の形態の汎用ハッシュ関数族計算装置と量子通信路を用いて、秘密鍵の共有を実現する。また、本実施例で用いられる量子通信路は、 1ビットの情報の伝送に単一光子を用いるものであり、量子通信路の途中で、第三者による盗聴が行われた場合には、送信者と受信者の両者の情報を比較することにより、盗聴が行われた事実、およびどの程度の量の情報が盗聴されたかを検知可能であるという特徴を有する。
本実施例において、共有鍵生成システムは、送信側の装置(送信者の装置)として、乱数発生器400と、第1の量子通信機401と、第1の計算機402と、第1の記憶装置403と、第1の汎用ハッシュ関数計算装置420とを備える。また、第1の記憶装置403は、量子通信路で発生した誤りの訂正を行うための誤り訂正プログラム(第1の誤り訂正プログラム408)を記憶している。第1の計算機402は、第1の誤り訂正プログラム408を読み込み、第1の誤り訂正プログラム408に従って誤り訂正処理を実行する。
また、本実施例において、共有鍵生成システムは、受信側の装置(受信者の装置)として、第2の量子通信機405と、第2の計算機406と、第2の記憶装置407と、第2の汎用ハッシュ関数計算装置430とを備える。また、第2の記憶装置407は、量子通信路で発生した誤りの訂正を行うための誤り訂正プログラム(第2の誤り訂正プログラム409)を記憶している。第2の計算機406は、第2の誤り訂正プログラム409を読み込み、第2の誤り訂正プログラム409に従って誤り訂正処理を実行する。
第1の汎用ハッシュ関数計算装置420および第2の汎用ハッシュ関数計算装置430は、いずれも第1の実施の形態の汎用ハッシュ関数族計算装置である。第1の汎用ハッシュ関数計算装置420は、第1の入力データ拡大装置421と、第1のε−Δハッシュ関数計算装置423と、第1の加算装置425とを備える。第2の汎用ハッシュ関数計算装置430は、第2の入力データ拡大装置431と、第2のε−Δハッシュ関数計算装置433と、第2の加算装置435とを備える。第1の入力データ拡大装置421および第2の入力データ拡大装置431は、いずれも第1の実施の形態で説明した入力データ拡大装置100(図1参照。)に相当する。第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433は、いずれも第1の実施の形態で説明したε−Δハッシュ関数計算装置101(図1参照。)に相当する。また、第1の加算装置425および第2の加算装置435は、いずれも第1の実施の形態で説明した加算装置102(図1参照。)に相当する。
ただし、本実施例では、第1の入力データ拡大装置421および第2の入力データ拡大装置431には、いずれも入力データとして nビットのデータが入力される。また、第1の入力データ拡大装置421および第2の入力データ拡大装置431は、いずれも第1の拡大装置出力および第2の拡大装置出力として mビットのデータを出力する。ここで、 n≦2・mという関係が成立しているものとする。本例では、第1の入力データ拡大装置421は、入力データ( nビット)の上位 mビットを第1の拡大装置装置出力として第1のε−Δハッシュ関数計算装置423に出力する。また、第1の入力データ拡大装置421は、入力データ( nビット)の下位 mビットを第2の拡大装置装置出力として第1の加算装置425に出力する。同様に、第2の入力データ拡大装置431は、入力データ( nビット)の上位 mビットを第1の拡大装置装置出力として第2のε−Δハッシュ関数計算装置433に出力する。また、第2の入力データ拡大装置431は、入力データ( nビット)の下位 mビットを第2の拡大装置装置出力として第2の加算装置435に出力する。
また、本実施例では、ε−Δハッシュ関数集合 HΔとして、要素数が2mとなる関数集合 HΔ={hk| h_k(x)=k×x, k∈GF(2m)}を用い、 mビットのデータである kを、ハッシュ関数族の要素を一意に指定するハッシュ関数指定データとする。従って、第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433には、ハッシュ関数指定データとして mビットのデータが入力される。
また、本実施例において、乱数発生器400は、乱数データを発生する。本例では、乱数発生器400は、 nビットの乱数データを発生するものとする。第1の量子通信機401と第2の量子通信機405は、量子通信路404によって接続され、情報を送受信する。
また、第1の計算機402と第2の計算機406は、通信路410によって接続され情報を送受信する。さらに、第1の計算機402および第2の計算機406は、それぞれ誤り訂正プログラムに従って誤り訂正処理を実行する。また、第1の計算機402は、第1の汎用ハッシュ関数計算装置420にデータを入力し、第1の汎用ハッシュ関数計算装置420から出力されたデータを共有鍵として第1の記憶装置403に記憶させる処理を行う。同様に、第2の計算機406は、第2の汎用ハッシュ関数計算装置420にデータを入力し、第2の汎用ハッシュ関数計算装置420から出力されたデータを共有鍵として第2の記憶装置407に記憶させる処理を行う。
次に、動作について説明する。
まず、乱数発生器400が、送信者と受信者との間で共有される鍵の元となる情報を出力する。この乱数発生器400から出力された情報は、第1の量子通信機401および第1の計算機402に入力される。
第1の計算機402は、乱数発生器400から入力された情報を、第1の記憶装置403に記憶させる。
また、第1の量子通信機401は、乱数発生器400から入力された情報を、量子通信路404を介して第2の量子通信機405に送信する。第2の量子通信機405は、その情報を受信すると、受信した情報を第2の計算機406に出力する。第2の計算機406は、その情報を第2の記憶装置407に記憶させる。
送信者の記憶装置(第1の記憶装置403)に記憶された乱数発生器の出力情報と、量子通信路404を介して伝達され、受信者の記憶装置(第2の記憶装置407)に記憶された情報とは、量子通信路の誤り、および第三者による盗聴等の理由により、同一のデータとなっていない可能性が高い。この二つのデータ(第1の記憶装置403に記憶された情報および第2の記憶装置407に記憶された情報)を一致させるため、送信者は、第1の計算機402に第1の誤り訂正プログラム408による処理を実行させる。また、受信者は、第2の計算機406に第2の誤り訂正プログラム409による処理を実行させる。第1の計算機402は、第1の誤り訂正プログラム408に従って誤り訂正処理を実行し、第2の計算機406は、第2の誤り訂正プログラム409に従って誤り訂正処理を実行する。第1の計算機402および第2の計算機406は、誤り訂正処理において、ビット数が nビットである同一のデータを生成する。このとき、第1の記憶装置403に記憶された乱数発生器の出力情報と、量子通信路404を介して伝達され、第2の記憶装置407に記憶された情報とが、同一のデータになっていなくても、誤り訂正処理において、ビット数が nビットである同一のデータを生成する。そして、第1の計算機402は、その nビットのデータを第1の記憶装置403に記憶させる。第2の計算機406も、 nビットのデータを第2の記憶装置407に記憶させる。
第1の計算機402および第2の計算機406による誤り訂正処理について、より詳しく説明する。乱数発生器400は、 nビットの乱数データを発生させるので、第1の計算機402および第2の計算機406は、盗聴等により生じた誤りを訂正して、送信側と受信側とでそれぞれ nビットの同一のデータを生成する。なお、誤り訂正処理の開始前に、送信側および受信側にそれぞれ記憶された nビットのデータを、ここでは情報系列と呼ぶことにする。
まず、第1の計算機402は、第1の記憶装置403に記憶された情報系列を複数のブロックに分割し、第2の計算機406も同様に、第2の記憶装置407に記憶された情報系列を複数のブロックに分割する。分割するブロックの大きさは、送信側と受信側とで同一の大きさである。また、第1の計算機402は、分割によって得られた各ブロック毎にパリティを計算し、計算したパリティを、古典通信路である通信路410を介して第2の計算機406に送信する。また、第2の計算機406も、分割によって得られた各ブロック毎にパリティを計算する。
第2の計算機406は、ブロック毎に、第2の計算機406自身が計算したパリティと、第1の計算機402から受信したパリティとを比較する。そして、パリティが一致しないブロックを検出したならば、そのブロックを指定する情報を第1の計算機402に送信する。
第1の計算機402および第2の計算機406はそれぞれ、パリティが一致していないブロックを、さらに複数のブロックに分割する。この場合も、分割するブロックの大きさは送信側と受信側とで同一である。なお、パリティが一致していないブロックは、盗聴等によって奇数個のエラーが生じているブロックである。偶数個のエラーが生じている場合には、送信側と受信側でパリティが一致することになる。第1の計算機402は、パリティが一致していないブロックをさらに複数のブロックに分割したならば、その分割後の各ブロック毎にパリティを計算し、計算したパリティを第2の計算機406に送信する。第2の計算機406も、パリティが一致していないブロックを、さらに複数のブロックに分割し、その分割後の各ブロック毎にパリティを計算する。第2の計算機406は、ブロック毎に、第2の計算機406自身が計算したパリティと、第1の計算機402から受信したパリティとを比較する。そして、パリティが一致しないブロックを検出したならば、そのブロックを指定する情報を第1の計算機402に送信する。
上述のように、第1の計算機402および第2の計算機406は、ブロックを分割して、分割後のパリティを比較し、パリティが一致しないブロックがあれば、再度分割することを繰り返す。第1の計算機402および第2の計算機406は、この繰り返し処理を、エラーの生じた箇所が特定できるまで繰り返す。また、エラーの生じた箇所が特定できたならば、第2の計算機406は、そのエラーを訂正する。
上述のエラー訂正処理が完了したならば、第1の計算機402および第2の計算機406はそれぞれ、情報系列のビットの並びを入れ替える処理を行い、上述のエラー訂正処理と同様の処理(ブロックの分割を繰り返してエラーの生じた箇所を特定し、エラーの生じた箇所を特定できたならばそのエラーを訂正する処理)を行う。第1の計算機402および第2の計算機406は、分割したブロックのパリティが全て一致するまでこのエラー訂正処理を行う。なお、ビットの並びの入れ替え方は、送信側と受信側とで同一である。
なお、送信側と受信側とでブロックのパリティが一致した場合であっても、偶数個のエラーがブロックに含まれている可能性がある。そこで、上述のように情報系列のビットの並びを入れ替え、上述のエラー訂正処理と同様の処理(ブロックの分割を繰り返してエラーの生じた箇所を特定し、エラーの生じた箇所を特定できたならばそのエラーを訂正する処理)を行うことを繰り返す。ビットの並びを入れ替え、パリティが一致していてエラー訂正をする必要がない場合が所定回数連続したならば、情報系列のビットの並びを入れ替える処理を終了し、そのときにビットの並びを入れ替えていた nビットのデータを、第1の計算機402は第1の記憶装置403に記憶させる。また、第2の計算機406は、その nビットのデータを第2の記憶装置407に記憶させる。この処理により、誤り訂正処理が終了する。なお、上記の所定回数は、偶数個のエラーが生じていない可能性が十分に高いと言えるように予め定められた回数である。
上記の誤り訂正処理では、パリティを用いる場合を例に説明したが、Hamming Codeを用いてもよい。また、パリティやHamming Codeは、ブロック長の小さな弱い符号であるが、 BCH符号やLDPC符号等の強力な誤り訂正符号を用いてもよい。
なお、上記の誤り訂正処理において、第1の計算機402および第2の計算機406が送受信する情報量が小さい場合、盗聴等されにくいが、通信回数(送受信回数)が増加する。一方、第1の計算機402および第2の計算機406が送受信する情報量が大きい場合、盗聴等されやすくなるが、通信回数(送受信回数)は少なくて済む。盗聴等の困難性と、通信回数が適切になるように、送受信する情報量を設定すればよい。
誤り訂正プログラムによる誤り訂正処理を実行した結果、第三者によって盗聴された情報の量が見積もられる。盗聴された情報の量の見積りについて説明する。量子通信路404では、盗聴を行おうとすると、1/2の確率で情報の盗聴に成功し、1/2の確率で情報の盗聴に失敗する。そして、情報の盗聴が失敗した場合には、盗聴時に量子通信路404において伝送されていた情報が別の情報に変化する。このため、第1の記憶装置403に記憶された乱数発生器の出力情報と、量子通信路404を介して伝達されて第2の記憶装置407に記憶された情報とを比較し、値が食い違っているビットの数によって盗聴に失敗した情報量を見積ることができる。そして、その情報量と同程度の情報量に関しては、盗聴に成功していたと推定することができる。
送信者と受信者は、以下に示す手順に従い、第1の汎用ハッシュ関数計算装置420および第2の汎用ハッシュ関数計算装置430に対し、共有されたデータ(送信側と受信側とで同一の nビットのデータ)を入力することによって、盗聴によって第三者に得られた情報を無効にすることができる。
乱数発生器400は、例えば、送信者の操作により、 mビットのデータを出力する。第1の計算機402には、この乱数発生器400の出力データが入力される。そして、第1の計算機402は、乱数発生器400の出力データ( mビットのデータ)を、ハッシュ関数指定データとして、第1のε−Δハッシュ関数計算装置423に入力する。また、第1の計算機402は、乱数発生器400の出力データを、通信路410を介して第2の計算機406に送信する。第2の計算機406は、この mビットのデータを受信すると、受信したデータを、ハッシュ関数指定データとして、第2のε−Δハッシュ関数計算装置433に入力する。
次に、第1の計算機402は、第1の記憶装置403に記憶された誤り訂正処理の結果(送信側と受信側とで同一の nビットのデータ)を読み込み、入力データとして、第1の入力データ拡大装置421に入力する。第1の入力データ拡大装置421は、入力された nビットのデータから第1の拡大装置出力および第2の拡大装置出力(いずれも mビットのデータ)を生成し、出力する。本実施例では、第1の入力データ拡大装置421は、入力された nビットのデータの上位 mビットのデータを第1の拡大装置出力とし、第1の拡大装置出力を第1のε−Δハッシュ関数計算装置423に出力する。また、第1の入力データ拡大装置421は、入力された nビットのデータの下位 mビットのデータを第2の拡大装置出力とし、第2の拡大装置出力を第1の加算装置425に出力する。
受信側の装置でも同様の動作を行う。すなわち、第2の計算機406は、第2の記憶装置407に記憶された誤り訂正処理の結果(送信側と受信側とで同一の nビットのデータ)を読み込み、入力データとして、第2の入力データ拡大装置431に入力する。第2の入力データ拡大装置431は、入力された nビットのデータから第1の拡大装置出力および第2の拡大装置出力(いずれも mビットのデータ)を生成し、出力する。第2の入力データ拡大装置431は、入力された nビットのデータの上位 mビットのデータを第1の拡大装置出力とし、第1の拡大装置出力を第2のε−Δハッシュ関数計算装置433に出力する。また、第2の入力データ拡大装置431は、入力された nビットのデータの下位 mビットのデータを第2の拡大装置出力とし、第2の拡大装置出力を第2の加算装置435に出力する。
第1のε−Δハッシュ関数計算装置423には、第1の入力データ拡大装置421から出力された第1の拡大装置出力が入力される。第1のε−Δハッシュ関数計算装置423は、その第1の拡大装置出力と、先に入力された乱数発生器400の出力データとのGF(2m)上での積算を行い、その積算結果を出力する。
同様に、第2のε−Δハッシュ関数計算装置433にも、第2の入力データ拡大装置431から出力された第1の拡大装置出力が入力される。第2のε−Δハッシュ関数計算装置433は、その第1の拡大装置出力と、先に入力された乱数発生器400の出力データ(通信路410を介して第2の計算機406に伝送され、第2の計算機406から入力されたデータ)とのGF(2m)上での積算を行い、その積算結果を出力する。
また、送信側において、第1の加算装置425には、第1の入力データ拡大装置421によって出力された第2の拡大装置出力と、第1のε−Δハッシュ関数計算装置423によって出力された積算結果とが入力される。第1の加算装置425は、この入力された二つのデータのGF(2m)上での加算を行い、その加算結果を出力する。
受信側においても同様に、第2の加算装置435には、第2の入力データ拡大装置431によって出力された第2の拡大装置出力と、第2のε−Δハッシュ関数計算装置433によって出力された積算結果とが入力される。第2の加算装置435は、この入力された二つのデータのGF(2m)上での加算を行い、その加算結果を出力する。
第1の加算装置425および第2の加算装置435がそれぞれ出力した加算結果が、送信側と受信側で共通の共通鍵となる。第1の計算機402は、第1の加算装置425によって出力された加算結果(共通鍵)を第1の記憶装置403に記憶させる。受信側においても同様に、第2の計算機406は、第2の加算装置435によって出力された加算結果(共通鍵)を第2の記憶装置407に記憶させる。
本実施例において、乱数発生手段は、乱数発生器400によって実現される。送信側記憶手段は、第1の記憶装置403によって実現される。第1の量子通信手段は、第1の量子通信機401によって実現される。第2の量子通信手段は、第2の量子通信機405によって実現される。受信側記憶手段は、第2の記憶装置407によって実現される。送信側誤り訂正手段は、第1の誤り訂正プログラム408に従って誤り訂正処理を実行する第1の計算機402によって実現される。受信側誤り訂正手段は、第2の誤り訂正プログラム409に従って誤り訂正処理を実行する第2の計算機406によって実現される。送信側入力手段および第2の乱数データ送信手段は、第1の計算機402によって実現される。受信側入力手段および第2の乱数データ受信手段は、第2の計算機406によって実現される。また、本実施例では、乱数発生器400が出力する mビットのデータが第2の乱数データに相当する。
本実施例のように共有鍵を計算することにより、送受信者間で共有された鍵(送信側と受信側とで共有された共有鍵)を、盗聴を行った第三者が推定しようとする際に、その第三者が盗聴で得た情報が共有鍵の推定にほとんど役に立たなくなるという効果が得られる。
また、ハッシュ関数集合の要素数を削減できるという本発明の効果は、特に量子暗号通信において以下の様な効果を生む。1番目の効果は、量子暗号通信における暗号鍵生成速度を向上できることである。量子通信路404を伝送される情報と第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433に入力される mビットの乱数データは、盗聴者にとって予測不可能である必要があるため、乱数発生器400には真性乱数回路を使用する必要がある。ここで、真性乱数発生回路の乱数生成速度は現時点(2005年9月)で最速でも数Mbpsであり、限られた速度の真性乱数出力から如何にして多くの暗号鍵を得るかが大きな追求点となる。図7に例示する共有鍵生成システムでは、第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433に必要とされる乱数のサイズが減少することにより、暗号鍵の元情報として使用できる乱数量が増加し、結果として暗号鍵生成速度が向上する。
2番目の効果は、第1の計算機402および第2の計算機406の処理負荷を軽減できることである。第1の計算機402および第2の計算機406では、誤り訂正プログラム及び秘匿増強プログラムが実行されているのに加え、膨大な通信量が発生すると処理負荷が高くなり各々の処理を行えなくなる危険性が生じる。第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433に入力される乱数データのサイズが減少することにより、通信路410を通して第2のε−Δハッシュ関数計算装置433に供給する情報量を削減でき、第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433の処理負荷を軽減できる。
3番目の効果は、暗号通信用の鍵量を向上できることである。通信路410を介した通信は”なりすまし”を防止する為に認証を必要とし、一般には、過去に生成した暗号鍵を使用して相互認証を行う。通信路410を介して伝送する情報量が多い程、認証用途で消費される鍵量が増え、本来の暗号通信用途の鍵量が減少してしまう。第1のε−Δハッシュ関数計算装置423および第2のε−Δハッシュ関数計算装置433に入力される乱数データのサイズが減少することにより、通信路410を介した通信量を削減でき、認証用途の鍵量を削減すると同時に本来の暗号通信用途の鍵量を向上できる。
また、実施例4では、第1の実施の形態で説明した第1の導出態様を適用した場合を示したが、第1の拡大装置出力および第2の拡大装置出力の導出態様は、他の態様であってもよい。例えば、第1の実施の形態で説明した第2の導出態様であってもよい。
本発明は、量子通信を用いて鍵共有を行う場合の秘匿性増強に適用できる。また、メッセージ認証コードを実現する際の部品としても利用可能である。
本発明による汎用ハッシュ関数族計算装置の第1の実施の形態を示すブロック図である。 第1の実施の形態の汎用ハッシュ関数族計算装置の動作の例を示すフローチャートである。 本発明による汎用ハッシュ関数族計算装置の第2の実施の形態を示すブロック図である。 第2の実施の形態の汎用ハッシュ関数族計算装置の動作の例を示すフローチャートである。 本発明による汎用ハッシュ関数族計算装置の第3の実施の形態を示すブロック図である。 第3の実施の形態の汎用ハッシュ関数族計算装置の動作の例を示すフローチャートである。 共有鍵生成システムの構成例を示すブロック図である。
符号の説明
100 入力データ拡大装置
101 ε−Δハッシュ関数計算装置
102 加算装置
200 積算装置
201 データ変換装置
202 加算装置
300 テプリッツ行列積算装置
301 加算装置

Claims (19)

  1. 入力データを用いた演算を行い出力データを出力する汎用ハッシュ関数族計算装置であって、
    入力データが入力され、一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大手段と、
    ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データが入力され、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの一方を入力としたときの、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算するΔハッシュ関数計算手段と、
    Δハッシュ関数計算手段によって計算されたハッシュ値と、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算手段とを備え、
    Δハッシュ関数計算手段は、ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算する
    ことを特徴とする汎用ハッシュ関数族計算装置。
  2. 出力データ集合は、 mビットのデータの集合であり、
    入力データは、 nビットのデータであり、
    ハッシュ関数指定データは、 mビットのデータであり、
    nとmとの間には、 n≦2・mという関係が成立し、
    入力データ拡大手段は、出力データ集合の二つの元として、入力データの上位 mビットデータ、および入力データの下位 mビットのデータを導出し、
    Δハッシュ関数計算手段は、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの一方と、 mビットのハッシュ関数指定データとのガロア体GF(2m)上での積算を計算し、その積算結果をハッシュ値とする
    請求項1に記載の汎用ハッシュ関数族計算装置。
  3. 出力データ集合は、 mビットのデータの集合であり、
    入力データは、 nビットのデータであり、
    ハッシュ関数指定データは、 mビットのデータであり、
    nとmとの間には、 n≦2・mという関係が成立し、
    入力データ拡大手段は、出力データ集合の二つの元として、入力データの上位 mビットのデータ、および入力データの最上位から数えて m+1番目のビットから n番目のビットまでのビット列に2・m-nビットの0のビット列を連結した mビットのデータを導出し、
    Δハッシュ関数計算手段は、入力データ拡大手段によって導出された出力データ集合の二つの元のうちの一方と、 mビットのハッシュ関数指定データとのガロア体GF(2m)上での積算を計算し、その積算結果をハッシュ値とする
    請求項1に記載の汎用ハッシュ関数族計算装置。
  4. ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行う汎用ハッシュ関数族計算装置であって、
    加算および積算が定義可能な体である第1の集合に属する元が第1の入力データとして入力されるとともに、第1の集合に属する元がハッシュ関数指定データとして入力され、第1の入力データとハッシュ関数指定データとの積算を行う積算手段と、
    上への写像であって線型性を満たす写像によって、積算手段による積算結果を、当該汎用ハッシュ関数族計算装置の出力データの集合である第2の集合の元に変換するデータ変換手段と、
    第2の集合に属する元が第2の入力データとして入力され、データ変換手段によって積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を当該汎用ハッシュ関数族計算装置の出力データとして出力する加算手段とを備えた
    ことを特徴とする汎用ハッシュ関数族計算装置。
  5. 第2の集合は、群であり、
    加算手段は、データ変換手段によって積算結果から変換された第2の集合の元と、第2の入力データとを、第2の集合上で加算する
    請求項4に記載の汎用ハッシュ関数族計算装置。
  6. スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力する汎用ハッシュ関数族計算装置であって、
    前記集合上のベクトルが第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データが入力され、行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出するテプリッツ行列演算手段と、
    前記集合上のベクトルであって出力データと要素数が等しいベクトルが第2の入力データとして入力され、テプリッツ行列演算手段によって導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算手段とを備えた
    ことを特徴とする汎用ハッシュ関数族計算装置。
  7. 行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、
    第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、
    第2の入力データは、前記集合上の m次元ベクトルであり、
    テプリッツ行列演算手段は、行列指定データによって定められるm行n列のテプリッツ行列と、 n次元ベクトルである第1の入力データとの積を計算して m次元ベクトルを導出し、
    加算手段は、テプリッツ行列演算手段によって導出された m次元ベクトルと、第2の入力データとを加算する
    請求項6に記載の汎用ハッシュ関数族計算装置。
  8. 行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、
    第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、
    第2の入力データは、前記集合上の m次元ベクトルであり、
    テプリッツ行列演算手段は、行列指定データによって定められるm行n列のテプリッツ行列に対して行の基本変形を行い、基本変形後のm行n列の行列と、第1の入力データとの積を計算して m次元ベクトルを導出し、
    加算手段は、テプリッツ行列演算手段によって導出された m次元ベクトルと、第2の入力データとを加算する
    請求項6に記載の汎用ハッシュ関数族計算装置。
  9. 行列指定データは、m行n列のテプリッツ行列を一意に指定するデータであり、
    第1の入力データは、スカラー積および加算が定義可能な集合上の n次元ベクトルであり、
    第2の入力データは、前記集合上の m次元ベクトルであり、
    テプリッツ行列演算手段は、行列指定データによって定められるm行n列のテプリッツ行列に対して列の基本変形を行い、基本変形後のm行n列の行列と、第1の入力データとの積を計算して m次元ベクトルを導出し、
    加算手段は、テプリッツ行列演算手段によって導出された m次元ベクトルと、第2の入力データとを加算する
    請求項6に記載の汎用ハッシュ関数族計算装置。
  10. テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、
    テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列と第1の入力データとの積を計算し、
    加算手段は、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段による積算結果と、第2の入力データとを加算する
    請求項6に記載の汎用ハッシュ関数族計算装置。
  11. テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、
    テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列に対して行の基本変形を行い、基本変形後の行列と第1の入力データとの積を計算し、
    加算手段は、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段による積算結果と、第2の入力データとを加算する
    請求項6に記載の汎用ハッシュ関数族計算装置。
  12. テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方を入力され、第1の入力データとして、テプリッツ行列の列数と同数の要素からなるベクトルを入力され、行列指定データとして、テプリッツ行列の列数と行数の和から1減算した数と同数の要素からなるベクトルを入力され、
    テプリッツ行列演算手段は、テプリッツ行列の行数と列数の両方あるいはいずれか一方および行列指定データによってテプリッツ行列の第1列および第1行を特定してテプリッツ行列を定め、当該テプリッツ行列に対して列の基本変形を行い、基本変形後の行列と第1の入力データとの積を計算し、
    加算手段は、第2の入力データとして、テプリッツ行列の行数と同数の要素からなるベクトルを入力され、テプリッツ行列演算手段による積算結果と、第2の入力データとを加算する
    請求項6に記載の汎用ハッシュ関数族計算装置。
  13. 請求項1から請求項3のうちのいずれか1項に記載された汎用ハッシュ関数族計算装置をデータの送信側および受信側それぞれに備え、送信側と受信側でそれぞれ共通の共有鍵を生成する共有鍵生成システムであって、
    乱数データを発生する乱数発生手段と、
    乱数発生手段が発生した第1の乱数データを記憶する送信側記憶手段と、
    第1の乱数データを量子通信路を介して送信する第1の量子通信手段と、
    第1の量子通信手段から量子通信路を介して第1の乱数データを受信する第2の量子通信手段と、
    第2の量子通信手段が受信した第1の乱数データを記憶する受信側記憶手段と、
    送信側記憶手段に記憶された第1の乱数データに基づき、送信側と受信側とで同一のデータを生成する送信側誤り訂正手段と、
    受信側記憶手段に記憶された第1の乱数データに基づき、送信側と受信側とで同一のデータを生成する受信側誤り訂正手段と、
    送信側誤り訂正手段が生成したデータを、送信側の汎用ハッシュ関数族計算装置の入力データ拡大手段に入力し、乱数発生手段が発生した第2の乱数データを、ハッシュ関数指定データとして送信側の汎用ハッシュ関数族計算装置のΔハッシュ関数計算手段に入力する送信側入力手段と、
    乱数発生手段が発生した第2の乱数データを通信路を介して送信する第2の乱数データ送信手段と、
    第2の乱数データ送信手段から通信路を介して第2の乱数データを受信する第2の乱数データ受信手段と、
    受信側誤り訂正手段が生成したデータを、受信側の汎用ハッシュ関数族計算装置の入力データ拡大手段に入力し、第2の乱数データ受信手段が受信した第2の乱数データを、ハッシュ関数指定データとして受信側の汎用ハッシュ関数族計算装置のΔハッシュ関数計算手段に入力する受信側入力手段とを備え、
    送信側の汎用ハッシュ関数族計算装置は、送信側入力手段によって入力されたデータに応じた出力データを共有鍵として出力し、
    受信側の汎用ハッシュ関数族計算装置は、送信側入力手段によって入力されたデータに応じた出力データを共有鍵として出力する
    ことを特徴とする共有鍵生成システム。
  14. 入力データを用いた演算を行い出力データを出力する汎用ハッシュ関数族計算方法であって、
    入力データ拡大手段が、入力データを入力されるデータ入力ステップと、
    Δハッシュ関数計算手段が、ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データを入力される指定データ入力ステップと、
    入力データ拡大手段が、一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大ステップと、
    Δハッシュ関数計算手段が、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの一方を入力としたときの、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算するΔハッシュ関数計算ステップと、
    加算手段が、Δハッシュ関数計算ステップで計算されたハッシュ値と、入力データ拡大ステップで導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算ステップとを含み、
    Δハッシュ関数計算手段が、Δハッシュ関数計算ステップで、ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数のハッシュ値を計算する
    ことを特徴とする汎用ハッシュ関数族計算方法。
  15. ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行う汎用ハッシュ関数族計算方法であって、
    積算手段が、加算および積算が定義可能な体である第1の集合に属する元を第1の入力データとして入力され、第1の集合に属する元をハッシュ関数指定データとして入力される指定データ等入力ステップと、
    加算手段が、当該汎用ハッシュ関数族計算方法の出力データの集合である第2の集合に属する元を第2の入力データとして入力される第2の入力データ入力ステップと、
    積算手段が、第1の入力データとハッシュ関数指定データとの積算を行う積算ステップと、
    データ変換手段が、上への写像であって線型性を満たす写像によって、積算ステップでの積算結果を、第2の集合の元に変換するデータ変換ステップと、
    加算手段が、データ変換ステップで積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を当該汎用ハッシュ関数族計算方法の出力データとして出力する加算ステップとを含む
    ことを特徴とする汎用ハッシュ関数族計算方法。
  16. スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力する汎用ハッシュ関数族計算方法であって、
    テプリッツ行列演算手段が、前記集合上のベクトルを第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データを入力される指定データ入力ステップと、
    加算手段が、前記集合上のベクトルであって出力データと要素数が等しいベクトルを第2の入力データとして入力される第2の入力データ入力ステップと、
    テプリッツ行列演算手段が、行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出する行列演算ステップと、
    加算手段が、行列演算ステップで導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算ステップとを含む
    ことを特徴とする汎用ハッシュ関数族計算方法。
  17. 入力データを用いた演算を行い出力データを出力するコンピュータに搭載される汎用ハッシュ関数族計算プログラムであって、
    前記コンピュータに、
    入力データが入力されるデータ入力処理、
    ハッシュ関数集合から当該ハッシュ関数集合の元であるハッシュ関数を一意に指定するハッシュ関数指定データが入力される指定データ入力処理、
    一対一写像として、前記入力データから、前記出力データの集合である出力データ集合の二つの元を導出する入力データ拡大処理、
    ハッシュ関数集合の定義域集合に属する任意の異なる二つの元をx,y とし、ハッシュ関数集合の値域集合に属する任意の元をd としたときにh(x)-h(y)=d を満足するハッシュ関数集合の元h の個数が、ハッシュ関数集合の元となるハッシュ関数の数に予め定められた所定値を乗じた値以下となるという条件を満足するハッシュ関数集合に属するハッシュ関数であって、ハッシュ関数指定データに指定されるハッシュ関数の、入力データ拡大処理で導出された出力データ集合の二つの元のうちの一方を入力としたときにおけるハッシュ値を計算するΔハッシュ関数計算処理、
    Δハッシュ関数計算処理で計算されたハッシュ値と、入力データ拡大処理で導出された出力データ集合の二つの元のうちの他方とを加算し、加算結果を出力データとして出力する加算処理
    を実行させるための汎用ハッシュ関数族計算プログラム。
  18. ε−汎用ハッシュ関数族に属するハッシュ関数の計算を行うコンピュータに搭載される汎用ハッシュ関数族計算プログラムであって、
    前記コンピュータに、
    加算および積算が定義可能な体である第1の集合に属する元が第1の入力データとして入力され、第1の集合に属する元がハッシュ関数指定データとして入力される指定データ等入力処理、
    前記コンピュータの出力データの集合である第2の集合に属する元が第2の入力データとして入力される第2の入力データ入力処理、
    第1の入力データとハッシュ関数指定データとの積算を行う積算処理、
    上への写像であって線型性を満たす写像によって、積算処理での積算結果を、第2の集合の元に変換するデータ変換処理、および
    データ変換処理で積算結果から変換された第2の集合の元と、第2の入力データとを加算し、加算結果を前記コンピュータの出力データとして出力する加算処理
    を実行させるための汎用ハッシュ関数族計算プログラム。
  19. スカラー積および加算が定義可能な集合上のベクトルを出力データとして出力するコンピュータに搭載される汎用ハッシュ関数族計算プログラムであって、
    前記コンピュータに、
    前記集合上のベクトルが第1の入力データとして入力され、テプリッツ行列を一意に指定する行列指定データが入力される指定データ入力処理、
    前記集合上のベクトルであって出力データと要素数が等しいベクトルが第2の入力データとして入力される第2の入力データ入力処理、
    行列指定データによって定められるテプリッツ行列と第1の入力データとを用いた演算により、出力データと要素数が等しいベクトルを導出する行列演算、および
    行列演算処理で導出されたベクトルと、第2の入力データとの加算を行い、加算結果を出力データとして出力する加算処理
    を実行させるための汎用ハッシュ関数族計算プログラム。
JP2005272090A 2005-09-20 2005-09-20 汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム Pending JP2007086170A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005272090A JP2007086170A (ja) 2005-09-20 2005-09-20 汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム
US12/067,618 US7933905B2 (en) 2005-09-20 2006-09-07 Universal-hash-function-family calculation unit and shared-key generation system
PCT/JP2006/317780 WO2007034685A2 (ja) 2005-09-20 2006-09-07 汎用ハッシュ関数族計算装置および共有鍵生成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005272090A JP2007086170A (ja) 2005-09-20 2005-09-20 汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム

Publications (1)

Publication Number Publication Date
JP2007086170A true JP2007086170A (ja) 2007-04-05

Family

ID=37889267

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005272090A Pending JP2007086170A (ja) 2005-09-20 2005-09-20 汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム

Country Status (3)

Country Link
US (1) US7933905B2 (ja)
JP (1) JP2007086170A (ja)
WO (1) WO2007034685A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012049765A (ja) * 2010-08-26 2012-03-08 Mitsubishi Electric Corp 秘匿性増強処理演算装置およびこれを備えた量子暗号通信端末
JP2015099310A (ja) * 2013-11-20 2015-05-28 三菱電機株式会社 秘匿性増強装置および秘匿性増強データ処理方法
US9112677B2 (en) 2011-04-08 2015-08-18 Nec Corporation Communication device and cryptographic key creation method in cryptographic key sharing system
JP5902362B1 (ja) * 2013-02-20 2016-04-13 クゥアルコム・インコーポレイテッドQualcomm Incorporated キャリーレス乗算を用いて計算されるユニバーサルハッシュ関数を使用したメッセージ認証
JP2017530581A (ja) * 2014-08-19 2017-10-12 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 暗号学的チェックサムの生成

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8387003B2 (en) * 2009-10-27 2013-02-26 Oracle America, Inc. Pluperfect hashing
US8483394B2 (en) 2010-06-15 2013-07-09 Los Alamos National Security, Llc Secure multi-party communication with quantum key distribution managed by trusted authority
US9002009B2 (en) 2010-06-15 2015-04-07 Los Alamos National Security, Llc Quantum key distribution using card, base station and trusted authority
EP3965324A3 (en) * 2010-12-10 2022-03-23 Sun Patent Trust Signal generation method and signal generation device
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US9287994B2 (en) 2011-09-30 2016-03-15 Los Alamos National Security, Llc Great circle solution to polarization-based quantum communication (QC) in optical fiber
US9866379B2 (en) 2011-09-30 2018-01-09 Los Alamos National Security, Llc Polarization tracking system for free-space optical communication, including quantum communication
US9509506B2 (en) 2011-09-30 2016-11-29 Los Alamos National Security, Llc Quantum key management
US9230548B2 (en) * 2012-06-06 2016-01-05 Cypress Semiconductor Corporation Hybrid hashing scheme for active HMMS
CA2882288C (en) 2012-08-17 2020-10-27 Los Alamos National Security, Llc Quantum communications system with integrated photonic devices
US9646105B2 (en) * 2012-11-08 2017-05-09 Texas Instruments Incorporated Reduced complexity hashing
JP6192998B2 (ja) * 2013-06-11 2017-09-06 株式会社東芝 通信装置、通信方法、プログラムおよび通信システム
US9384145B2 (en) * 2013-08-26 2016-07-05 Oracle International Corporation Systems and methods for implementing dynamically configurable perfect hash tables
US10574461B2 (en) * 2013-09-30 2020-02-25 Triad National Security, Llc Streaming authentication and multi-level security for communications networks using quantum cryptography
US9680651B2 (en) 2014-10-27 2017-06-13 Seagate Technology Llc Secure data shredding in an imperfect data storage device
US9558128B2 (en) 2014-10-27 2017-01-31 Seagate Technology Llc Selective management of security data
US11392944B2 (en) 2015-05-20 2022-07-19 Ripple Luxembourg S.A. Transfer costs in a resource transfer system
US10740732B2 (en) 2015-05-20 2020-08-11 Ripple Luxembourg S.A. Resource transfer system
US11481771B2 (en) * 2015-05-20 2022-10-25 Ripple Luxembourg S.A. One way functions in a resource transfer system
WO2017068481A1 (en) * 2015-10-20 2017-04-27 Jayaram Sanjay System for managing data
US10095635B2 (en) 2016-03-29 2018-10-09 Seagate Technology Llc Securing information relating to data compression and encryption in a storage device
CN114531229B (zh) * 2021-12-31 2023-09-01 华南师范大学 一种用于多自由度调制qkd的保密增强方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122538A (ja) * 1998-10-20 2000-04-28 Lucent Technol Inc ビットの集まりの短縮表現を生成する方法
WO2003007543A1 (fr) * 2001-07-10 2003-01-23 Mitsubishi Denki Kabushiki Kaisha Dispositif et procede d'affinage de donnees partagees

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577250B2 (en) * 2004-08-12 2009-08-18 Cmla, Llc Key derivation functions to enhance security
US7321659B2 (en) * 2003-10-01 2008-01-22 International Business Machines Corporation Simple universal hash for plaintext aware encryption
US7418100B2 (en) * 2004-10-20 2008-08-26 Cisco Technology, Inc. Enciphering method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122538A (ja) * 1998-10-20 2000-04-28 Lucent Technol Inc ビットの集まりの短縮表現を生成する方法
WO2003007543A1 (fr) * 2001-07-10 2003-01-23 Mitsubishi Denki Kabushiki Kaisha Dispositif et procede d'affinage de donnees partagees

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
JPN6011065416; Krovetz, T. and Rogaway, P.: 'Fast Universal Hashing with Small Keys and No Preprocessing: The PolyR Construction' Lecture Notes in Computer Science Vol.2015, 2001, p.73-89 *
JPN6011065419; Krawczyk, H.: 'LFSR-based Hashing and Authentication' Lecture Notes in Computer Science Vol.839, 1994, p.129-139 *
JPN6011065424; Halevi, S. and Krawczyk, H.: 'MMH: Software Message Authentication in the Gbit/Second Rates' Lecture Notes in Computer Science Vol.1267, 1997, p.172-189 *
JPN6011065427; Heng, S.-H. and Kurosawa, K.: 'Square Hash with a Small Key Size' IEICE transactions on fundamentals of electronics, communications and computer sciences Vol.E87-A(1), 20040101, p.54-59 *
JPN6012051760; Bierbrauer, J. et al.: 'On Families of Hash Functions via Geometric Codes and Concatenation' Lecture Notes in Computer Science Vol.773, 1993, p.331-342 *
JPN6012051762; Stinson, D. R.: 'Universal hash families and the leftover hash lemma , and applications to cryptography and computing' Journal of Combinatorial Mathematics and Combinatorial Computeing Vol.42, 2002, p.3-31 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012049765A (ja) * 2010-08-26 2012-03-08 Mitsubishi Electric Corp 秘匿性増強処理演算装置およびこれを備えた量子暗号通信端末
US9112677B2 (en) 2011-04-08 2015-08-18 Nec Corporation Communication device and cryptographic key creation method in cryptographic key sharing system
JP5902362B1 (ja) * 2013-02-20 2016-04-13 クゥアルコム・インコーポレイテッドQualcomm Incorporated キャリーレス乗算を用いて計算されるユニバーサルハッシュ関数を使用したメッセージ認証
JP2015099310A (ja) * 2013-11-20 2015-05-28 三菱電機株式会社 秘匿性増強装置および秘匿性増強データ処理方法
JP2017530581A (ja) * 2014-08-19 2017-10-12 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 暗号学的チェックサムの生成
US10396996B2 (en) 2014-08-19 2019-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Generating cryptographic checksums

Also Published As

Publication number Publication date
US20090240913A1 (en) 2009-09-24
WO2007034685A2 (ja) 2007-03-29
US7933905B2 (en) 2011-04-26

Similar Documents

Publication Publication Date Title
JP2007086170A (ja) 汎用ハッシュ関数族計算装置、方法、プログラム、および共有鍵生成システム
JP7486529B2 (ja) プライベート情報検索に応用される準同型暗号化方法
KR100697476B1 (ko) 양자키 배송 방법 및 통신 장치
KR100742450B1 (ko) 양자키 배송 방법 및 통신 장치
Horlemann-Trautmann et al. Information set decoding in the Lee metric with applications to cryptography
JPWO2005109379A1 (ja) 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
Sengupta et al. Message mapping and reverse mapping in elliptic curve cryptosystem
Singh et al. Generalisations of NTRU cryptosystem
JPWO2009128370A1 (ja) 調整値付きブロック暗号装置、暗号生成方法および記録媒体
Lau et al. New rank codes based encryption scheme using partial circulant matrices
Ogawa et al. Aggregate message authentication codes with detecting functionality from biorthogonal codes
Sasaki et al. Preimage attacks on 41-step SHA-256 and 46-step SHA-512
JP2007019789A (ja) 乱数共有システムおよび方法
US11895230B2 (en) Information processing apparatus, secure computation method, and program
JP4459526B2 (ja) 量子鍵配送方法および通信装置
Stuart et al. Nonlinear cryptosystem based on QC-LDPC codes for enhanced security and reliability with low hardware complexity and reduced key size
Nosouhi et al. Bit Flipping Key Encapsulation for the Post-Quantum Era
JP5578422B2 (ja) 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム
Xu et al. Attacking the Niederreiter-type cryptosystem based on rank metric
US11502818B2 (en) System to secure encoding and mapping on elliptic curve cryptography (ECC)
Han et al. Joint encryption and channel coding scheme based on balancing indices and polar codes
Dey et al. Secure key encapsulation mechanism with compact ciphertext and public key from generalized srivastava code
AU2021106274A4 (en) A protocol for assuring data integrity in cloud setting by using a fully homomorphic batch encryption scheme with integer and shorter public key (hbeis)
Peng et al. A fast additively symmetric homomorphic encryption scheme for vector data
Ong et al. Lattices from totally real number fields with large regulator

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120206

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121002