JP5276526B2 - ビット列生成装置、ビット列生成方法及びプログラム - Google Patents

ビット列生成装置、ビット列生成方法及びプログラム Download PDF

Info

Publication number
JP5276526B2
JP5276526B2 JP2009142479A JP2009142479A JP5276526B2 JP 5276526 B2 JP5276526 B2 JP 5276526B2 JP 2009142479 A JP2009142479 A JP 2009142479A JP 2009142479 A JP2009142479 A JP 2009142479A JP 5276526 B2 JP5276526 B2 JP 5276526B2
Authority
JP
Japan
Prior art keywords
hash
value
bit string
bit
input
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
JP2009142479A
Other languages
English (en)
Other versions
JP2010286781A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2009142479A priority Critical patent/JP5276526B2/ja
Publication of JP2010286781A publication Critical patent/JP2010286781A/ja
Application granted granted Critical
Publication of JP5276526B2 publication Critical patent/JP5276526B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、情報セキュリティ技術の応用技術に関し、特に、任意長のランダムなビット列を出力する技術に関する。
任意長のランダムなビット列であるマスクを生成する従来のマスク生成関数としてMFG1がある(例えば、非特許文献1参照)。以下にMFG1:{0,1}*×N→{0,1}nの構成を示す。なお、{0,1}*は任意長のビット列を示し、{0,1}nはビット長nのビット列を示し、Nは0以上の整数の集合を示し、α→βはαからβへの写像を示し、α||βはαとβとのビット結合(ビット連結)を示し、[α]βは、αから切り出された上位βビットを示し、CEIL(α)は、α以上の最小の整数(αのCeil関数値)を示し、<i>32はiを32ビットでエンコーディングしたビット列を示し、Hはハッシュ関数H:{0,1}*→{0,1}nを示し、x∈{0,1}*, L∈{1,...,n・232}である。
MFG1(x,L)=H(x||<0>32)||...||H(x||<CEIL(L/n)-2>32)
||[H(x||<CEIL(L/n)-1>32)]L-n(CEIL(L/n)-1) …(1)
また、マスク生成関数の安全性の評価基準のひとつにIndifferentiabilityがある(例えば、非特許文献2参照)。この評価基準では、理想的なマスク生成関数のオラクルΦを利用できるシミュレータが存在すると仮定する。なお、このシミュレータは攻撃者に依存しないで構成される。そして、攻撃者が、理想的なハッシュ関数等のオラクルφを利用できる正規なマスク生成関数にクエリーを与えて得られる値と、クエリーを当該シミュレータに与えて得られる値とを識別できる確率が、無視できる関数以下となる場合、当該マスク生成関数は、オラクルΦに対してIndifferentiable(Indifferentiabilityな意味で安全)であるとする(例えば、非特許文献2参照)。なお、マスク生成関数がIndifferentiabilityな意味で安全であることの証明は、セキュリティパラメータkに依存する多項式によって攻撃者の資源範囲(演算時間の上限、クエリー数の上限、クエリー等の最大ビット数)を仮定し、その仮定のもとで行われる。
ISO/IEC 9796-3 : Information technology -- Security techniques -- Digital signature schemes giving message recovery -- Part 3: Discrete logarithm based mechanisms Ueli M. Maurer, Renato Renner, and Clements Holenstein, "Indifferentiability, Impossibility Results on Reductions, and Applications to the Random Oracle Methodology," In Moni Naor, editor, TCC 2004, Volume 2951 of LNCS, pages 21-39, Heidelberg, 2004. Springer.
式(1)に示すように、MFG1は、入力値x,Lに対し、ハッシュ値H(x||<0>32),...,H(x||<CEIL(L/n)-2>32)及びハッシュ値H(x||<CEIL(L/n)-1>32)から切り出された値 [H(x||<CEIL(L/n)-1>32)]L-n(CEIL(L/n)-1)のビット結合値H(x||<0>32)||...||H(x||<CEIL(L/n)-2>32)||[H(x||<CEIL(L/n)-1>32)]L-n(CEIL(L/n)-1)を出力する関数である。よって、MFG1を構成する各ブロックH(x||<0>32),...,H(x||<CEIL(L/n)-2>32)及び[H(x||<CEIL(L/n)-1>32)]L-n(CEIL(L/n)-1)は、それぞれ、x||<i>32(i∈{0,...,CEIL(L/n)-1})をクエリーとして理想的なハッシュ関数等のオラクルに与えて得られる値であるといえる。このクエリーx||<i>32は各iの間で互いに独立であり、攻撃者はどんなに大きなiに対応するクエリーx||<i>32であってもほぼ同様に生成できる。
前述のように、マスク生成関数がIndifferentiabilityな意味で安全であることの証明は攻撃者の資源範囲を仮定して行われる。この仮定における安全性の評価は、上述のシミュレータが、与えられたクエリーが攻撃者の資源範囲内あれば正規な処理を実行し、与えられたクエリーが攻撃者の資源を超えるものであった場合には乱数を返答することで実現できる。ここで、上述のシミュレータは、攻撃者についての情報を知らないため、攻撃者から送られたクエリーから当該クエリーが攻撃者の資源範囲内のものであるか否かを判定しなければならない。しかし、上述のように、MFG1に対するクエリーx||<i>32は各iの間で互いに独立であり、上述のシミュレータは、クエリーx||<i>32のみから当該クエリーが攻撃者の資源範囲内のものであるか否かを判定することはできない。よって、従来のMFG1では、マスク生成関数がIndifferentiabilityな意味で安全であることを証明することができなかった。
本発明はこのような点に鑑みてなされたものであり、Indifferentiabilityな意味で安全であるか否かを証明することが可能なマスク生成関数の演算を行う装置、方法、及びそのプログラムを提供することを目的とする。
本発明では、少なくとも任意値xが入力され、各カウント値i∈{0,...,Max}(iは整数、MAXは1以上の整数)に対し、それぞれ、任意値xを含むハッシュ入力情報u(i)のハッシュ値y(i)を生成し、各ハッシュ値y(i)及び/又は当該ハッシュ値y(i)の一部のビット列をビット結合し、任意ビット長Lのビット列を生成する。少なくとも一部のカウント値iに対応するハッシュ入力情報u(i)は、さらに、カウント値j(i)(j(i)∈{0,...,Max})に対応するハッシュ連鎖値v(j(i))を含む。ハッシュ連鎖値v(j(i))は、カウント値m(i)(m(i)∈{0,...,Max},m(i)≠j(i))に対応するハッシュ連鎖値v(m(i))を含む情報のハッシュ値又はその一部のビット列であり、カウント値p(i)(p(i)∈{0,...,Max},p(i)≠i)に対応するハッシュ入力情報u(p(i))は、さらに、ハッシュ連鎖値v(m(i))を含む。
ここで、少なくとも一部のカウント値iに対応するハッシュ入力情報u(i)は、カウント値j(i)(j(i)∈{0,...,Max})に対応するハッシュ連鎖値v(j(i))を含む。この場合、少なくとも一部のカウント値iに対応するハッシュ入力情報u(i)は、他のカウント値j(i)に対応するハッシュ連鎖値v(j(i))を求めた後でなければ生成できない。ハッシュ入力情報u(i)はクエリーに相当するが、攻撃者はハッシュ入力情報u(i)を生成するためにそれに対応するハッシュ連鎖値v(j(i))を得る必要がある。そして、そのために上述のオラクルにさらにクエリーを送る必要があり、その回数はハッシュ連鎖値v(j(i))のハッシュ連鎖回数に依存する。そのため、上述のシミュレータは、攻撃者から送られたハッシュ入力情報u(i)を判定することによって、ハッシュ入力情報u(i)が何回のハッシュ連鎖によって得られたかを知ることができる。このハッシュ連鎖回数は、攻撃者の演算時間やクエリーの数に対応する。よって、上述のシミュレータは、攻撃者から送られたクエリーから当該クエリーが攻撃者の資源範囲内のものであるか否かを知ることができる。その結果、上述のシミュレータは、与えられたクエリーが正しくハッシュ連鎖によって得られたものであれば正規な処理を実行し、与えられたクエリーが正しくハッシュ連鎖によって得られたものでなければ乱数を返答することができる。よって、本発明のマスク生成関数では、Indifferentiabilityな意味で安全であることを証明することができる。
以上のように、本発明のマスク生成関数では、Indifferentiabilityな意味で安全であることを証明することができる。
第1実施形態のビット列生成装置の構成を説明するためのブロック図。 第1実施形態の処理を説明するためのフローチャート。 第2実施形態のビット列生成装置の構成を説明するためのブロック図。 第2実施形態の処理を説明するためのフローチャート。 第3実施形態の処理を説明するためのフローチャート。 第3実施形態の処理を説明するためのフローチャート。
以下、図面を参照して本発明の実施形態を説明する。
〔定義〕
まず、以下で共通に使用する用語・記号を定義する。
{0,1}*:任意長のビット列。
{0,1}n:ビット長nのビット列。
N:0以上の整数の集合。
α→β:αからβへの写像。
α||β:αとβとのビット結合(ビット連結)。
[α]β:αから切り出された上位βビット。例えば、[11101001]3=111。
[α]β:αから切り出された下位βビット。例えば、[11101001]5=01001。
CEIL(α):α以上の最小の整数(αのCeil関数値)。
<i>:iを所定のビットでエンコーディングしたビット列。
k:1以上の整数定数であるセキュリティパラメータ。
H,G:ハッシュ関数。ハッシュ関数の例はSHA-1などである。
〔第1実施形態〕
第1実施形態では、まず、入力部に、少なくとも任意値xが入力される。次に、ハッシュ演算部が、各カウント値i∈{0,...,Max}(iは整数、MAXは1以上の整数)に対し、それぞれ、任意値xを含むハッシュ入力情報u(i)のハッシュ値y(i)を生成する。本形態のハッシュ演算部は、ハッシュ入力情報u(i)を第1ハッシュ関数Hに入力してハッシュ値y(i)=H(u(i))を生成する。その後、ビット結合部が、ハッシュ値y(i)及び/又はハッシュ値y(i)の一部のビット列をビット結合し、任意ビット長Lのビット列を生成する。
ここで、少なくとも一部のカウント値iに対応するハッシュ入力情報u(i)は、さらに、カウント値j(i)(j(i)∈{0,...,Max})に対応するハッシュ連鎖値v(j(i))を含む。当該ハッシュ連鎖値v(j(i))は、カウント値m(i)(m(i)∈{0,...,Max},m(i)≠j(i))に対応するハッシュ連鎖値v(m(i))を含む情報のハッシュ値又はその一部のビット列である。本形態の場合、当該ハッシュ連鎖値v(j(i))は、カウント値p(i)(p(i)∈{0,...,Max},p(i)≠i)に対応するハッシュ入力情報u(p(i))(ハッシュ連鎖値v(m(i))を含む)を第1ハッシュ関数Hに入力して得られたハッシュ値y(p(i))=H(u(p(i)))又はその一部のビット列である。
以下では、一例として、Max=t-1, t=CEIL(L/(n-k)), i∈{0,...,t-1}, j(i)=i-1, p(i)=i-1, m(i)=i-2, u(i)=v(i-1)||x||<i>, y(i)=H(v(i-1)||x||<i>), z(i)=[y(i)]n-k, v(i-1)=[y(i-1)]k=[H(v(i-2)||x||<i-1>)]k(i≧1の場合), v(i-1)=v(-1)=0k∈{0,1}k(i=0の場合)とし、入力(x,L)∈{0,1}*×N(N≧1)に対して任意ビット長Lのビット列F(x,L)=z(0)||...||z(t-2)||[z(t-1)]r(r=L-(n-k)(t-1))を出力する場合を例示する。なお、本形態では、nはkを変数とする多項式でありn>kを満たす。また、第1ハッシュ関数HはH:{0,1}*→{0,1}nである。
<構成>
図1は、第1実施形態のビット列生成装置100の構成を説明するためのブロック図である。
図1に例示するように、本形態のビット列生成装置100は、制御部101と、メモリ102aと、初期値メモリ102bと、入力部103と、パラメータ算出部104と、カウンタ105と、ハッシュ演算部106と、ビット切出し部107と、ビット結合部108とを有する。
本形態のビット列生成装置100は、例えば、CPU(central processing unit)、RAM(random-access memory)、ROM(read-only memory)等を備えた公知のコンピュータに所定のプログラムが読み込まれ、CPUがこのプログラムを実行することで構築されるものである。制御部101、パラメータ算出部104、カウンタ105、ハッシュ演算部106、ビット切出し部107及びビット結合部108は、例えば、CPUが所定のプログラムを実行することで構築される処理部である。なお、これらの処理部の少なくとも一部が集積回路によって構成されてもよい。また、メモリ102aや初期値メモリ102bは、補助記憶装置、RAM、キャッシュメモリ、レジスタ、集積回路の素子、又は、それらの少なくとも一部を結合した記憶領域である。また、入力部103は、例えば、マウス、キーボード、入力ポート、データ受信装置、記憶装置からのデータ読み出し装置などである。
なお、図1では、複数のハッシュ演算部106やビット切出し部107が図示されているが、これは表記の便宜上からであり、必ずしも複数のハッシュ演算部106やビット切出し部107が存在しなくてもよい。また、ビット列生成装置100は、制御部101の制御のもと各処理を実行する。また、以下では説明を簡略化するが、各処理部から出力されたデータは、逐一、メモリ102aに格納される。メモリ102aに格納されたデータは、必要に応じて各処理部に入力されてその処理に利用される。
<処理>
図2は、第1実施形態の処理を説明するためのフローチャートである。以下、この図を用いて、本形態の処理を説明する。なお、以下の処理の前提として、k,nの値が設定され、初期値メモリ102bにハッシュ連鎖値の初期値v(-1)=0kが格納されているものとする。
まず、入力部103に(x,L)∈{0,1}*×Nが入力される(ステップS101)。Lはパラメータ算出部104に入力され、パラメータ算出部104は、
t=CEIL(L/(n-k)) …(2)
の演算を行い、その演算結果tを出力する(ステップS102)。
また、パラメータ算出部104は、
r=L-(n-k)(t-1) …(3)
の演算を行い、その演算結果rを出力する(ステップS103)。パラメータ算出部104から出力された演算結果tは制御部101に入力され、演算結果rはビット切出し部107に入力される。
次に、カウンタ105がカウント値iを0に設定する(ステップS104)。
次に、ハッシュ演算部106に、初期値メモリ102b又はビット切出し部107から出力されたハッシュ連鎖値v(i-1)と、入力部103に入力されたxと、カウンタ105から出力されたカウント値iとが入力される。ハッシュ演算部106は、
y(i)=H(v(i-1)||x||<i>) …(4)
の演算を行い、そのハッシュ値y(i)を出力する(ステップS105)。
ハッシュ値y(i)は、ビット切出し部107に入力される。ビット切出し部107は、
z(i)=[y(i)]n-k …(5)
v(i)=[y(i)]k …(6)
の演算によってハッシュ値y(i)から一部のビット列を切り出し、それによって得られたビット列z(i)とハッシュ連鎖値v(i)とを出力する(ステップS106、S107)。
次に、制御部101が、カウンタ105から出力されたカウント値iがt-2であるか否かを判定する(ステップS108)。ここで、i=t-2でないと判定されたならば、カウンタ105がi+1を新たなiとしてカウントアップを行い(ステップS109)、処理がステップS105に戻される。一方、i=t-2であると判定されたならば、ハッシュ演算部106に、ビット切出し部107から出力されたハッシュ連鎖値v(t-2)と、入力部103に入力されたxと、カウンタ105から出力されたカウントアップされたカウント値i=t-1とが入力される。ハッシュ演算部106は、カウント値i=t-1に対応する
y(t-1)=H(v(t-2)||x||<t-1>) …(7)
の演算を行い、そのハッシュ値y(t-1)を出力する(ステップS110)。
ハッシュ演算部106から出力されたハッシュ値y(t-1)は、ビット切出し部107に入力される。ビット切出し部107は、カウント値i=t-1に対応する
z(t-1)=[y(t-1)]r …(8)
の演算を行い、ハッシュ値y(t-1)から一部のビット列を切り出し、それによって得られたビット列z(t-1)を出力する(ステップS111)。
ビット切出し部107から出力された各ビット列z(i)(i∈{0,...,t-1})は、ビット結合部108に入力される。ビット結合部108は、
F(x,L)=z(0)||...||z(t-2)||z(t-1) …(9)
の演算によって各ビット列z(i)のビット結合し、ビット長Lのビット列F(x,L)を生成して出力する(ステップS112)。
<第1実施形態の変形例>
本発明は第1実施形態に限定されない。
例えば、本形態のハッシュ入力情報u(i)は、ハッシュ連鎖値v(i-1)と、任意値xと、カウント値iのエンコーディングビット列<i>とのビット結合であった。しかし、少なくとも一部にカウント値iに対応するハッシュ入力情報u(i)が、カウント値iのエンコーディングビット列<i>を含まない構成でもよい。また、少なくとも一部にカウント値iに対応するハッシュ入力情報u(i)が、ハッシュ連鎖値v(i-1)と、任意値xと、その他の情報(例えば、乱数や装置の固有情報など)とのビット結合であってもよいし、ハッシュ連鎖値v(i-1)と、任意値xと、エンコーディングビット列<i>と、当該その他の情報とのビット結合であってもよい。
また、各ビット列z(i)(i∈{0,...,t-1})が、式(9)以外の順序でビット結合されてもよい。また、本形態では、各カウント値iに対するハッシュ入力情報u(i),u(p(i))(i≠p(i))とハッシュ連鎖値v(j(i)),v(m(i))とが、j(i)=i-1, p(i)=i-1, m(i)=i-2の関係を満たすこととしたが、例えば、j(i)=i+1, p(i)=i+1, m(i)=i+2など、j(i),p(i)(i≠p(i)),m(i)がカウント値iに対するその他の関数であってもよい。この場合、それに応じてカウント値の更新方法が異なる。本形態では、j(i)=i-1, p(i)=i-1, m(i)=i-2としたため、カウント値iを0からt-1まで1ずつ増加させながら繰り返し処理を実行したが、例えば、j(i)=i+1, p(i)=i+1, m(i)=i+2の場合には、カウント値iをt-1から0まで1ずつ減少させながら繰り返し処理を実行すればよい。
また、本形態では、ハッシュ連鎖値の初期値がv(-1)=0kであったが、ハッシュ連鎖値の初期値が任意の定数、または任意値xの関数値であるなど、その他の値をハッシュ連鎖値の初期値v(-1)としてもよい。また、本形態では、j(i)=i-1, p(i)=i-1, m(i)=i-2としたため、ハッシュ連鎖値v(-1)に初期値を設定したが、j(i),p(i)(i≠p(i)),m(i)がその他の関数である場合には、それに応じて初期値が設定されるハッシュ連鎖値が異なる。例えば、j(i)=i+1, p(i)=i+1, m(i)=i+2の場合には、v(t+1)に初期値を設定する。
また、本形態では、ハッシュ値y(i)の上位n-kビット又はrビットをビット列z(i)=[y(i)]n-kとしたが、ハッシュ値y(i)のその他のビット位置(例えば、下位n-kビット又はrビット、離散的に切出したn-kビット又はrビット)をビット列z(i)としてもよい。また、ハッシュ値y(i)(i≠t-1)そのものをビット列z(i)(i≠t-1)とし、ハッシュ値y(i)(i=t-1)から切出したrビットをビット列z(i)(i=t-1)としてもよい。この場合、t=CEIL(L/n),r=L-n(t-1)となる。また、本形態では、z(t-1)=[y(t-1)]rと演算したが、[y(t-1)]n-kを計算した後にz(t-1)=[[y(t-1)]n-k]rを計算してもよい。また、本形態では、nがkを変数とする多項式であったがnが定数でもよい。
また、本形態では、入力部103にxとLとが入力されることとしたが、Lを固定とし、入力部103にxのみが入力される構成でもよい。
〔第2実施形態〕
第2実施形態は、第1実施形態の変形例であり、第1ハッシュ関数Hのハッシュ値からハッシュ連鎖値を生成するのではなく、別途計算される第2ハッシュ関数Gのハッシュ値からハッシュ連鎖値を生成する。
第2実施形態でも、まず、入力部に、少なくとも任意値xが入力される。次に、ハッシュ演算部が、各カウント値i∈{0,...,Max}(iは整数、MAXは1以上の整数)に対し、それぞれ、任意値xを含むハッシュ入力情報u(i)のハッシュ値y(i)を生成する。本形態のハッシュ演算部は、ハッシュ入力情報u(i)を第1ハッシュ関数Hに入力してハッシュ値y(i)=H(u(i))を生成する。その後、ビット結合部が、ハッシュ値y(i)及び/又はハッシュ値y(i)の一部のビット列をビット結合し、任意ビット長Lのビット列を生成する。
ここで、少なくとも一部のカウント値iに対応するハッシュ入力情報u(i)は、さらに、カウント値j(i)(j(i)∈{0,...,Max})に対応するハッシュ連鎖値v(j(i))を含む。当該ハッシュ連鎖値v(j(i))は、カウント値m(i)(m(i)∈{0,...,Max},m(i)≠j(i))に対応するハッシュ連鎖値v(m(i))を含む情報のハッシュ値又はその一部のビット列である。本形態の場合、当該ハッシュ連鎖値v(j(i))は、ハッシュ連鎖値v(m(i))を含む情報を第2ハッシュ関数Gに入力して得られたハッシュ値又はその一部のビット列であり、当該「ハッシュ連鎖値v(m(i))を含む情報」は、任意値xに依存しない情報である。また、カウント値p(i)(p(i)∈{0,...,Max},p(i)≠i)に対応するハッシュ入力情報u(p(i))は、さらに、ハッシュ連鎖値v(m(i))を含む。
以下では、一例として、Max=t-1, t=CEIL(L/n), i∈{0,...,t-1}, j(i)=i-1, p(i)=i-1, m(i)=i-2, u(i)=v(i-1)||x||<i>, y(i)=H(v(i-1)||x||<i>), v(i-1)=G(v(i-2)||<i-1>)(i≧1の場合), v(i-1)=v(-1)=0k∈{0,1}k(i=0の場合)とし、入力(x,L)∈{0,1}*×N(N≧1)に対して任意ビット長Lのビット列F(x,L)=y(0)||...||y(t-2)||[y(t-1)]r(r=L-n(t-1))を出力する場合を例示する。なお、本形態では、nはkを変数とする多項式でありn>kを満たす。また、第1ハッシュ関数HはH:{0,1}*→{0,1}nであり、第2ハッシュ関数GはG:{0,1}*→{0,1}kである。また、以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<構成>
図3は、第2実施形態のビット列生成装置200の構成を説明するためのブロック図である。なお、図3において、第1実施形態と共通する部分については、第1実施形態と同じ符号を用いた。
図3に例示するように、本形態のビット列生成装置200は、制御部101と、メモリ102aと、初期値メモリ102bと、入力部103と、パラメータ算出部204と、カウンタ105と、ハッシュ演算部106,209と、ビット切出し部207と、ビット結合部208とを有する。
本形態のビット列生成装置200は、例えば、CPU、RAM、ROM等を備えた公知のコンピュータに所定のプログラムが読み込まれ、CPUがこのプログラムを実行することで構築されるものである。例えば、パラメータ算出部204、ハッシュ演算部209、ビット切出し部207、ビット結合部208は、例えば、CPUが所定のプログラムを実行することで構築される処理部である。なお、これらの処理部の少なくとも一部が集積回路によって構成されてもよい。
なお、図1では、複数のハッシュ演算部106,209が図示されているが、これは表記の便宜上からであり、必ずしも複数のハッシュ演算部106,209が存在しなくてもよい。また、ビット列生成装置200は、制御部101の制御のもと各処理を実行する。また、以下では説明を簡略化するが、各処理部から出力されたデータは、逐一、メモリ102aに格納される。メモリ102aに格納されたデータは、必要に応じて各処理部に入力されてその処理に利用される。
<処理>
図4は、第2実施形態の処理を説明するためのフローチャートである。以下、この図を用いて、本形態の処理を説明する。なお、以下の処理の前提として、k,nの値が設定され、初期値メモリ102bにハッシュ連鎖値の初期値v(-1)=0kが格納されているものとする。
まず、入力部103に(x,L)∈{0,1}*×Nが入力される(ステップS101)。Lはパラメータ算出部104に入力され、パラメータ算出部204は、
t=CEIL(L/n) …(10)
の演算を行い、その演算結果tを出力する(ステップS202)。
また、パラメータ算出部204は、
r=L-n(t-1) …(11)
の演算を行い、その演算結果rを出力する(ステップS203)。パラメータ算出部104から出力された演算結果tは制御部101に入力され、演算結果rはビット切出し部207に入力される。
次に、カウンタ105がカウント値iを0に設定する(ステップS104)。
次に、ハッシュ演算部106に、初期値メモリ102b又はハッシュ演算部209から出力されたハッシュ連鎖値v(i-1)と、入力部103に入力されたxと、カウンタ105から出力されたカウント値iとが入力される。ハッシュ演算部106は、
y(i)=H(v(i-1)||x||<i>) …(12)
の演算を行い、そのハッシュ値y(i)を出力する(ステップS105)。
次に、ハッシュ演算部209に、初期値メモリ102b又はハッシュ演算部209から出力されたハッシュ連鎖値v(i-1)と、カウンタ105から出力されたカウント値iとが入力される。ハッシュ演算部209は、
v(i)=G(v(i-1)||<i>) …(13)
の演算を行い、そのハッシュ値v(i)をハッシュ連鎖値v(i)として出力する(ステップS207)。
次に、制御部101が、カウンタ105から出力されたカウント値iがt-2であるか否かを判定する(ステップS108)。ここで、i=t-2でないと判定されたならば、カウンタ105がi+1を新たなiとしてカウントアップを行い(ステップS109)、処理がステップS105に戻される。一方、i=t-2であると判定されたならば、ハッシュ演算部106に、ハッシュ演算部209から出力されたハッシュ連鎖値v(t-2)と、入力部103に入力されたxと、カウンタ105から出力されたカウントアップされたカウント値i=t-1とが入力される。ハッシュ演算部106は、カウント値i=t-1に対応する
y(t-1)=H(v(t-2)||x||<t-1>) …(14)
の演算を行い、そのハッシュ値y(t-1)を出力する(ステップS110)。
ハッシュ演算部209から出力されたハッシュ値y(t-1)は、ビット切出し部207に入力される。ビット切出し部207は、カウント値i=t-1に対応する
z(t-1)=[y(t-1)]r …(15)
の演算を行い、ハッシュ値y(t-1)から一部のビット列を切り出し、それによって得られたビット列z(t-1)を出力する(ステップS211)。
ハッシュ演算部106から出力されたハッシュ値y(0),...,y(t-2)と、ビット切出し部207から出力されたビット列z(t-1)とは、ビット結合部208に入力される。ビット結合部208は、
F(x,L)=y(0)||...||y(t-2)||z(t-1) …(16)
の演算によって各ハッシュ値y(0),...,y(t-2)とビット列z(t-1)とをビット結合し、ビット長Lのビット列F(x,L)を生成して出力する(ステップS212)。
<第2実施形態の変形例>
本発明は第2実施形態に限定されない。
例えば、本形態では、カウント値iを増加させながら行われる繰り返し処理の中でハッシュ連鎖値v(i)を計算することとした(ステップS207)。しかし、本形態のハッシュ連鎖値v(i)は入力される任意値xに依存しない。そのため、必要となるすべてのハッシュ連鎖値v(i)をまとめて計算してもよく、また、ハッシュ連鎖値v(j)がステップS101より前に事前計算されハッシュ値y(i)が並列計算されていてもよい。これにより、演算速度を向上させることができる。
また、本形態のハッシュ入力情報u(i)は、ハッシュ連鎖値v(i-1)と、任意値xと、カウント値iのエンコーディングビット列<i>とのビット結合であった。しかし、少なくとも一部にカウント値iに対応するハッシュ入力情報u(i)が、カウント値iのエンコーディングビット列<i>を含まない構成でもよい。また、少なくとも一部にカウント値iに対応するハッシュ入力情報u(i)が、ハッシュ連鎖値v(i-1)と、任意値xと、その他の情報(例えば、乱数や装置の固有情報など)とのビット結合であってもよいし、ハッシュ連鎖値v(i-1)と、任意値xと、エンコーディングビット列<i>と、当該その他の情報とのビット結合であってもよい。
また、本形態のハッシュ連鎖値v(i)は、ハッシュ連鎖値v(i-1)とエンコーディングビット列<i>とのビット結合のハッシュ値G(v(i-1)||<i>)であった。しかし、少なくとも一部にカウント値iに対応するハッシュ連鎖値v(i)が、カウント値iのエンコーディングビット列<i>を含まない値のハッシュ値(例えば、v(i)=G(v(i-1)))であってもよい。また、少なくとも一部にカウント値iに対応するハッシュ連鎖値v(i)が、ハッシュ連鎖値v(i-1)と、エンコーディングビット列<i>と、その他の情報(例えば、乱数や装置の固有情報など)とのビット結合のハッシュ値であってもよいし、ハッシュ連鎖値v(i-1)と、当該その他の情報とのビット結合のハッシュ値であってもよい。また、ハッシュ値G(v(i-1)||<i>)などのハッシュ値の一部のビットをハッシュ連鎖値v(i)としてもよい。
また、各ビット列y(0),...,y(t-2),z(t-1)が式(16)以外の順序でビット結合されてもよい。また、本形態では、各カウント値iに対するハッシュ入力情報u(i),u(p(i))(i≠p(i))とハッシュ連鎖値v(j(i)),v(m(i))とが、j(i)=i-1, p(i)=i-1, m(i)=i-2の関係を満たすこととしたが、例えば、j(i)=i+1, p(i)=i+1, m(i)=i+2など、j(i),p(i)(i≠p(i)),m(i)がカウント値iに対するその他の関数であってもよい。この場合、それに応じてカウント値の更新方法が異なる。本形態では、j(i)=i-1, p(i)=i-1, m(i)=i-2としたため、カウント値iを0からt-1まで1ずつ増加させながら繰り返し処理を実行したが、例えば、j(i)=i+1, p(i)=i+1, m(i)=i+2の場合には、カウント値iをt-1から0まで1ずつ減少させながら繰り返し処理を実行すればよい。
また、本形態では、ハッシュ連鎖値の初期値がv(-1)=0kであったが、ハッシュ連鎖値の初期値が任意の定数、または任意値xの関数値であるなど、その他の値をハッシュ連鎖値の初期値v(-1)としてもよい。また、本形態では、j(i)=i-1, p(i)=i-1, m(i)=i-2としたため、ハッシュ連鎖値v(-1)に初期値を設定したが、j(i),p(i)(i≠p(i)),m(i)がその他の関数である場合には、それに応じて初期値が設定されるハッシュ連鎖値が異なる。例えば、j(i)=i+1, p(i)=i+1, m(i)=i+2の場合には、v(t+1)に初期値を設定する。
また、本形態では、ハッシュ値y(0),...,y(t-2)とビット列z(t-1)とのビット結合をビット列F(x,L)としたが、各ハッシュ値y(0),...,y(t-2)のそれぞれ一部のビット列とビット列z(t-1)とのビット結合をビット列F(x,L)としてもよい。この場合、tやrは、ビット列F(x,L)のビット長がLとなるように算出される。
また、本形態では、nがkを変数とする多項式であったがnが定数でもよい。また、本形態では、入力部103にxとLとが入力されることとしたが、Lを固定とし、入力部103にxのみが入力される構成でもよい。
〔第3実施形態〕
次に本発明の第3実施形態を説明する。
本形態は、第1,2実施形態の変形例であり、一部のカウント値iに対応するハッシュ入力情報u(i)のみがハッシュ連鎖値v(j(i))を含む形態である。これにより、ハッシュ連鎖値v(j(i))の演算コストを削減できるとともに、ハッシュ連鎖値v(j(i))を含まないハッシュ入力情報u(i)やそのハッシュ値を同時並列に計算でき、演算速度を向上させることができる。
なお、本形態の構成は第1,2実施形態と同様であるため、以下では構成の説明を省略し、処理を中心に説明を行う。
<実施例1>
図5は、第3実施形態の処理を説明するためのフローチャートである。
図5の例では、カウント値i∈{0,...,t-1}のうち、i=w・q(wは2以上の整数、qは正の整数)を満たす場合にのみ、入力情報u(i)がハッシュ連鎖値v(j(i))を含む。一方、i≠w・qとなるカウント値iに対応する入力情報u(i)はハッシュ連鎖値v(j(i))を含まない。なお、本形態でも第1実施形態と同様、j(i)=i-1, p(i)=i-1, m(i)=i-2の場合を例にとって説明する。
まず、第1実施形態と同様のステップS101からS103の処理が実行される。次に、ハッシュ演算部106(図1)に、入力部103に入力されたxと、カウンタ105から出力されたカウント値i(i∈{0,...t-1}, i≠w・q)とが入力される。ハッシュ演算部106は、これらの各カウント値i(i∈{0,...t-1}, i≠w・q)に対して
y(i)=H(x||<i>) …(17)
の演算を行い、そのハッシュ値y(i)を出力する(ステップS304)。この各カウント値iについての式(17)の演算は同時並列に実行されてもよいし、直列的に実行されてもよい。
これらのハッシュ値y(i)のうち、カウント値i(i∈{0,...t-1}, i=w・q-1)に対応するものがビット切出し部107に入力される。ビット切出し部107は、カウント値i(i∈{0,...t-1}, i=w・q-1)に対し、
v(i)=[y(i)]k …(18)
の演算によってハッシュ値y(i)から一部のビット列を切り出し、それによって得られたビット列z(i)とハッシュ連鎖値v(i)とを出力する(ステップS305)。この各カウント値iについての式(18)の演算は同時並列に実行されてもよいし、直列的に実行されてもよい。
次に、ハッシュ演算部106に、初期値メモリ102b又はビット切出し部107から出力されたハッシュ連鎖値v(i-1) (i∈{0,...t-1}, i=w・q)と、入力部103に入力されたxと、カウンタ105から出力されたカウント値i(i∈{0,...t-1}, i=w・q)とが入力される。ハッシュ演算部106は、これらの各カウント値i(i∈{0,...t-1}, i=w・q)に対して
y(i)=H(v(i-1)||x||<i>) …(19)
の演算を行い、そのハッシュ値y(i)を出力する(ステップS306)。この各カウント値iについての式(19)の演算は同時並列に実行されてもよいし、直列的に実行されてもよい。
各カウント値i∈{0,...t-2}に対応するハッシュ値y(i)は、ビット切出し部107に入力される。ビット切出し部107は、
z(i)=[y(i)]n-k …(20)
の演算によってハッシュ値y(i)から一部のビット列を切り出し、それによって得られたビット列z(i)(i∈{0,...t-2})を出力する(ステップS307)。
その後、第1実施形態と同様のステップS111及びS112の処理が実行される。
<実施例2>
図6は、第3実施形態の処理を説明するためのフローチャートである。
図6の例では、カウント値i∈{0,...,t-1}のうち、i=w・q(wは2以上の整数、qは正の整数)を満たす場合にのみ、入力情報u(i)がハッシュ連鎖値v(j(i))を含む。一方、i≠w・qとなるカウント値iに対応する入力情報u(i)はハッシュ連鎖値v(j(i))を含まない。なお、本形態でも第1実施形態と同様、j(i)=i-1, p(i)=i-1, m(i)=i-2の場合を例にとって説明する。また、以下の処理の前提として、初期値メモリ102bにハッシュ連鎖値の初期値v(-w)=0kが格納されているものとする。
まず、第2実施形態と同様のステップS101,S202,S203の処理が実行される。次に、ハッシュ演算部106(図3)に、入力部103に入力されたxと、カウンタ105から出力されたカウント値i(i∈{0,...t-1}, i≠w・q)とが入力される。ハッシュ演算部106は、これらの各カウント値i(i∈{0,...t-1}, i≠w・q)に対して式(17)の演算を行い、そのハッシュ値y(i)を出力する(ステップS304)。この各カウント値iについての式(17)の演算は同時並列に実行されてもよいし、直列的に実行されてもよい。
次に、カウンタ105がカウント値iを0に設定する(ステップS315)。
次に、ハッシュ演算部106に、初期値メモリ102b又はハッシュ演算部209から出力されたハッシュ連鎖値v(i-1)と、入力部103に入力されたxと、カウンタ105から出力されたカウント値iとが入力される。ハッシュ演算部106は、
y(i)=H(v(i-w)||x||<i>) …(21)
の演算を行い、そのハッシュ値y(i)を出力する(ステップS316)。
次に、ハッシュ演算部209に、初期値メモリ102b又はハッシュ演算部209から出力されたハッシュ連鎖値v(i-w)と、カウンタ105から出力されたカウント値iとが入力される。ハッシュ演算部209は、
v(i)=G(v(i-w)||<i>) …(22)
の演算を行い、そのハッシュ値v(i)をハッシュ連鎖値v(i)として出力する(ステップS317)。
次に、制御部101が、カウンタ105から出力されたカウント値iがt-1以上であるか否かを判定する(ステップS318)。ここで、i≧t−1でないと判定されたならば、カウンタ105がi+wを新たなiとしてカウントアップを行い(ステップS319)、処理がステップS316に戻される。一方、i≧t−1であると判定されたならば、第2実施形態のステップS211,S212の処理が実行される。
<第3実施形態の変形例>
本発明は第3実施形態に限定されない。例えば、第3実施形態の実施例1,2では、カウント値i∈{0,...,t-1}のうち、i=w・q(wは2以上の整数、qは正の整数)を満たす場合にのみ、入力情報u(i)がハッシュ連鎖値v(j(i))を含む例を説明した。しかし、その他のカウント値i∈{0,...,t-1}の部分集合についてのみ、入力情報u(i)がハッシュ連鎖値v(j(i))を含むこととしてもよい。また、上記の各処理において、前述の第1実施形態の変形例や第2実施形態の変形例で述べた変形がなされてもよい。
〔その他の変形例等〕
上述の各実施形態の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
本発明の利用分野としては、暗号鍵の生成処理や電子署名などの暗号通信分野を例示できる。
100,200 ビット列生成装置

Claims (7)

  1. 少なくとも任意値xが入力される入力部と、
    各カウント値i∈{0,...,Max}(iは整数、MAXは1以上の整数)に対し、それぞれ、前記任意値xを含むハッシュ入力情報u(i)のハッシュ値y(i)を生成するハッシュ演算部と、
    前記ハッシュ値y(i)及び/又は前記ハッシュ値y(i)の一部のビット列をビット結合し、任意ビット長Lのビット列を生成するビット結合部と、を有し、
    少なくとも一部のカウント値iに対応する前記ハッシュ入力情報u(i)は、さらに、カウント値j(i)(j(i)∈{0,...,Max})に対応するハッシュ連鎖値v(j(i))を含み、
    前記ハッシュ連鎖値v(j(i))は、カウント値m(i)(m(i)∈{0,...,Max},m(i)≠j(i))に対応するハッシュ連鎖値v(m(i))を含む情報のハッシュ値又はその一部のビット列であり、
    カウント値p(i)(p(i)∈{0,...,Max},p(i)≠i)に対応するハッシュ入力情報u(p(i))は、さらに、前記ハッシュ連鎖値v(m(i))を含む、
    ことを特徴とするビット列生成装置。
  2. 請求項1のビット列生成装置であって、
    前記ハッシュ演算部は、前記ハッシュ入力情報u(i)を第1ハッシュ関数Hに入力して前記ハッシュ値y(i)を生成し、
    前記ハッシュ連鎖値v(m(i))を含む情報は、前記ハッシュ入力情報u(p(i))であり、
    前記ハッシュ連鎖値v(j(i))は、前記ハッシュ入力情報u(p(i))を前記第1ハッシュ関数Hに入力して得られたハッシュ値y(p(i))又はその一部のビット列である、
    ことを特徴とするビット列生成装置。
  3. 請求項1のビット列生成装置であって、
    前記ハッシュ演算部は、前記ハッシュ入力情報u(i)を第1ハッシュ関数Hに入力して前記ハッシュ値y(i)=H(u(i))を生成し、
    前記ハッシュ連鎖値v(j(i))は、前記ハッシュ連鎖値v(m(i))を含む情報を第2ハッシュ関数Gに入力して得られたハッシュ値又はその一部のビット列であり、
    前記ハッシュ連鎖値v(m(i))を含む情報は、前記任意値xに依存しない情報である、
    ことを特徴とするビット列生成装置。
  4. 請求項3のビット列生成装置であって、
    前記ハッシュ連鎖値v(j)は、前記任意値xが前記入力部に入力される前に事前計算された値である、
    ことを特徴とするビット列生成装置。
  5. 請求項1から4の何れかのビット列生成装置であって、
    一部のカウント値iに対応する前記ハッシュ入力情報u(i)のみが前記ハッシュ連鎖値v(j(i))を含む、
    ことを特徴とするビット列生成装置。
  6. 入力部とハッシュ演算部とビット結合部とビット結合部とを有するビット列生成装置が実行するビット列生成方法であって、
    前記入力部に、少なくとも任意値xが入力されるステップと、
    前記ハッシュ演算部が、各カウント値i∈{0,...,Max}(iは整数、MAXは1以上の整数)に対し、それぞれ、前記任意値xを含むハッシュ入力情報u(i)のハッシュ値y(i)を生成するステップと、
    前記ビット結合部が、前記ハッシュ値y(i)及び/又は前記ハッシュ値y(i)の一部のビット列をビット結合し、任意ビット長Lのビット列を生成するステップと、を有し、
    少なくとも一部のカウント値iに対応する前記ハッシュ入力情報u(i)は、さらに、カウント値j(i)(j(i)∈{0,...,Max})に対応するハッシュ連鎖値v(j(i))を含み、
    前記ハッシュ連鎖値v(j(i))は、カウント値m(i)(m(i)∈{0,...,Max},m(i)≠j(i))に対応するハッシュ連鎖値v(m(i))を含む情報のハッシュ値又はその一部のビット列であり、
    カウント値p(i)(p(i)∈{0,...,Max},p(i)≠i)に対応するハッシュ入力情報u(p(i))は、さらに、前記ハッシュ連鎖値v(m(i))を含む、
    ことを特徴とするビット列生成方法。
  7. 請求項1から5の何れかのビット列生成装置としてコンピュータを機能させるためのプログラム。
JP2009142479A 2009-06-15 2009-06-15 ビット列生成装置、ビット列生成方法及びプログラム Active JP5276526B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009142479A JP5276526B2 (ja) 2009-06-15 2009-06-15 ビット列生成装置、ビット列生成方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009142479A JP5276526B2 (ja) 2009-06-15 2009-06-15 ビット列生成装置、ビット列生成方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2010286781A JP2010286781A (ja) 2010-12-24
JP5276526B2 true JP5276526B2 (ja) 2013-08-28

Family

ID=43542503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009142479A Active JP5276526B2 (ja) 2009-06-15 2009-06-15 ビット列生成装置、ビット列生成方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5276526B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113496762B (zh) * 2021-05-20 2022-09-27 山东大学 一种生物基因序列的概要数据生成方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002304121A (ja) * 2001-04-09 2002-10-18 Nippon Telegr & Teleph Corp <Ntt> ハッシュ関数演算装置、そのプログラム及びその記録媒体
JP2006337429A (ja) * 2005-05-31 2006-12-14 Nippon Telegr & Teleph Corp <Ntt> マスク生成関数演算装置、そのプログラム及び記録媒体

Also Published As

Publication number Publication date
JP2010286781A (ja) 2010-12-24

Similar Documents

Publication Publication Date Title
US11159305B2 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
Wang et al. FPGA-based Niederreiter cryptosystem using binary Goppa codes
Barker et al. Recommendation for random bit generator (RBG) constructions
US20150262074A1 (en) Solving digital logic constraint problems via adiabatic quantum computation
US20200052913A1 (en) Reducing amount of helper data in silicon physical unclonable functions via lossy compression without production-time error characterization
JP5429502B2 (ja) 範囲検索システム、範囲検索方法、及び範囲検索用プログラム
Saarinen et al. Shorter messages and faster post-quantum encryption with Round5 on Cortex M
CN113098691A (zh) 数字签名方法、签名信息的验证方法、相关装置及电子设备
CN112466032B (zh) 电子投票方法、装置及电子设备
Liu et al. A novel security key generation method for SRAM PUF based on Fourier analysis
JP5276526B2 (ja) ビット列生成装置、ビット列生成方法及びプログラム
Ebrahimzadeh et al. On longest paths and diameter in random Apollonian networks
US11070354B2 (en) System and method for generating a symmetrically balanced output
JP6844696B2 (ja) 認証タグ生成装置、認証タグ検証装置、方法及びプログラム
JP2017073716A (ja) タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラム
CN115309861A (zh) 一种密文检索系统、方法、计算机设备及存储介质
Park et al. A lightweight BCH code corrector of trng with measurable dependence
Bohman et al. Independent sets in hypergraphs omitting an intersection
JP6980154B2 (ja) データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム
CN114911851B (zh) 数据查询方法、装置及存储介质
Dai et al. Multiple Dimensional Encoding/Modulation Shift‐and‐Addition Design for Distributed Systems
Di Crescenzo et al. Cryptographic password obfuscation
Frisch et al. A Practical Approach to Estimate the Min-Entropy in PUFs
CN115801228B (zh) 交互信息加密的方法、装置、电子设备及存储介质
CN103678334A (zh) 计算地理信息的数字摘要的方法和设备

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110720

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110922

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130517

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5276526

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350