JP6372295B2 - 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置 - Google Patents

物理乱数生成回路の品質テスト方法、乱数発生器および電子装置 Download PDF

Info

Publication number
JP6372295B2
JP6372295B2 JP2014210969A JP2014210969A JP6372295B2 JP 6372295 B2 JP6372295 B2 JP 6372295B2 JP 2014210969 A JP2014210969 A JP 2014210969A JP 2014210969 A JP2014210969 A JP 2014210969A JP 6372295 B2 JP6372295 B2 JP 6372295B2
Authority
JP
Japan
Prior art keywords
random number
score
circuit
physical random
scores
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
JP2014210969A
Other languages
English (en)
Other versions
JP2016081247A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014210969A priority Critical patent/JP6372295B2/ja
Priority to US14/847,078 priority patent/US20160110165A1/en
Publication of JP2016081247A publication Critical patent/JP2016081247A/ja
Application granted granted Critical
Publication of JP6372295B2 publication Critical patent/JP6372295B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

本発明は、物理乱数生成回路の品質テスト方法、乱数発生器および電子装置に関する。
近年,情報化社会の発展に伴い、電子決済やクラウドストレージなどの情報ネットワークを利用したサービスが普及してきた。これらのサービスを安全に運用するためには情報セキュリティ技術による安全性の確保が必須である。近年、情報セキュリティの基盤技術として、様々な暗号方式が利用されている。
暗号方式とはデータ(平文と呼ぶ)を第三者が見ても理解できないデータ(暗号文と呼ぶ)に変換する技術である。暗号方式は、おおきくは公開鍵暗号方式と共通鍵暗号方式と呼ばれる二つの方式に分けることができる。公開鍵暗号方式は、暗号化と復号においてそれぞれ異なる鍵を使う暗号方式である。暗号化を行うための鍵(公開鍵と呼ぶ)を一般に公開し、暗号文を復号するための鍵(秘密鍵と呼ぶ)を受信者のみの秘密情報とすることで、誰でも受信者にしかわからない暗号文を作成できるようになる。
これに対し、共通鍵暗号方式と呼ばれる暗号方式は、暗号化と復号で同一の鍵(秘密鍵と呼ぶ)を用いる方式である。この秘密鍵を送信者と受信者以外の第三者に対して秘密にすることで、データの安全性を保つ。共通鍵暗号方式の暗号文は、この秘密鍵を知っている者だけが解読することはできる。
これら暗号方式の安全性は、秘密鍵の安全性に依存している。もしも秘密鍵が何らかの方法で第三者に予測されてしまうと、第三者が暗号文を解読できるようになってしまうため、データを安全に保護することができない。これを防ぐために、秘密鍵は第三者に予測不可能な乱数によって生成することが一般的である。
乱数は、その生成法によって擬似乱数と物理乱数(真性乱数)に大別される。擬似乱数は、確定的な計算によって作り出された数列の一部分のことである。擬似乱数生成アルゴリズムに初期値(シード:seedと呼ぶ)を与えることにより、擬似乱数を生成することができる。擬似乱数は、その擬似乱数生成アルゴリズムとseedが分かれば予測可能であるという性質がある。このため、秘密鍵を生成する手段として擬似乱数と予測可能なseedを用いることは、安全性に大きな問題がある。しかしながら、擬似乱数は計算によって生成されるため、特殊なデバイスを必要とせずCPUのみで生成できるという利点がある。一方、物理乱数は、デバイス中の熱雑音などのように、本質的にランダムな物理現象から抽出されたものである。良い物理乱数は再現性がなく、予測することが不可能であるため、擬似乱数生成器のseed生成方式として安全性が高い。良い物理乱数をseedとして使う擬似乱数生成器は、予測不可能な擬似乱数を生成するため、秘密鍵の生成に適している。
しかし、物理乱数の質が悪く乱数性が低い場合は、秘密鍵の安全性が著しく低下してしまう。物理乱数生成器は、温度や電圧の変化、年月の経過等の環境変動の影響を受け、生成する物理乱数の乱数性が大きく低下してしまう場合があることが知られている。乱数性の低い物理乱数は容易に予測されてしまうため、それを元に秘密鍵を生成することは危険である。物理乱数生成器は、スマートカードや携帯電話といった、安全性が求められるデバイスの暗号通信やデジタル署名認証にも使われるが、これらのデバイスは小型で持ち運びが可能なため、容易に悪い環境に晒されうる。そのため、物理乱数の乱数性の悪化により脆弱な秘密鍵を生成することを避けるために、物理乱数の乱数性(エントロピー)を動的に計測する技術が求められている。
物理乱数生成器のエントロピーに関する望ましい仕様について、米国の物理乱数生成器に関する文書[SP800-90B]が知られている。そこには、ヘルステストとIIDテストが記載されている。ヘルステストは、Repetition Count TestおよびAdaptive Proportion Testを含み、ヘルステストを行う自己検定回路を搭載することは必須とされ、発生した乱数の乱数性がヘルステストにより低いと判断された場合、その乱数列は出力することが許されない。したがって、ヘルステストは、物理乱数生成器を実際に使用する際に毎回行われ、ヘルステストにより、物理乱数生成回路が同一値を極端に連続して出力し続けるといった事態を検出することができる。
一方、IIDテストは、物理乱数生成器の製造時に行う、厳密な乱数性を検査するテストであり、シャッフリングテストおよび統計テストを含み、双方ともに合格の場合にIIDテスト合格とする。IIDテストは、ヘルステストでは検出できない類の乱数性の低い乱数列についても検出することができる。しかし、IIDテストに含まれるシャッフリングテストは、処理コストが大きい。そのため、IIDテストは、物理乱数生成器の使用時ではなく、製造時にのみ解析マシン上などで実施し、乱数性の低い不良な物理乱数生成器を排除するために実行される。文書[SP800-90B]も、物理乱数生成器にIIDテストを行う機構を設けることを要求していない。
特開2008−197847号公報 特開2006−318092号公報 特開2004−310314号公報
NIST DRAFR Special Publication 800-90B, "Recommendation for the Entropy Sources Used for Random Bit Generation", Elaine Barker, John Kelsey
物理乱数生成器は、環境変動や年月の経過によって出力する乱数の乱数性が低下することが起こり得る。IIDテストのように厳密なテストを製造時にしか行わない場合、出荷後の実使用時に乱数性が下がったとしてもそれを検出することはできない。こういった事態を回避するためには、テストをオンチップで実行可能にすることが重要であるが、IIDテストは、処理コストが大きく、IIDテストを実行するテスト回路を物理乱数生成器に搭載するのは難しい。
1つの側面では、本発明は、回路規模を抑えた物理乱数生成器を提供することを目的とする。
第1の態様によれば、物理乱数生成回路の品質テスト方法であって、初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、種類毎にスコアの分布範囲を規定する上限値と下限値を記憶し、複数の検証乱数列を生成し、前記複数の検証乱数列のそれぞれについて前記複数種類のスコアを計算し、前記検証乱数列の前記複数スコアを、前対応する種類の前記上限値及び前記下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲内に分布する頻度を判定し、前記分布する頻度に基づいて、品質が不良であるか否かを判定し、前記初期乱数列のシャッフリングにより生成した複数の変異乱数列の複数のスコアについての前記上限値及び下限値の生成および記憶は、前記物理乱数生成回路の製造時に行い、前記検証乱数列の生成および品質の判定は、前記物理乱数生成回路の出荷後の通常使用時に行う物理乱数生成回路の品質テスト方法が提供される。
第2の態様によれば、物理乱数生成回路と、前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行う乱数生成器が提供される。
第3の態様によれば、乱数生成器と、前記乱数生成器の生成した乱数を利用した処理を行う処理部と、を有し、前記乱数生成器は、物理乱数生成回路と、前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行う電子装置が提供される。
実施形態によれば、回路規模を抑えた物理乱数生成器が実現される。
図1は、米国の物理乱数生成器に関する文書[SP800-90B]に準拠した一般的な物理乱数生成器の構成を示す図である。 図2は、IIDテストを実行する解析マシンの機能ブロック図である。 図3は、シャッフリングテストの大まかな処理手順を示すフローチャートである。 図4は、物理乱数生成器に、上記のシャッフリングテストを実行するための回路をオンチップ実装した場合の回路構成例を示す図である。 図5は、図4の回路構成をオンチップ実装した場合のメモリコスト(容量)を示す図である。 図6は、第1実施形態の物理乱数生成器の概略構成を示す図である。 図7は、第1実施形態の物理乱数生成器のシャッフリングテスト部の機能ブロック図である。 図8は、スコアリスト格納部において、10組の11種のスコア群を記憶する構成を示す図である。 図9は、第1実施形態の物理乱数生成器が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。 図10は、第2実施形態の物理乱数生成器が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。 図11は、物理乱数生成器を使用した暗号演算機能を持つ電子装置の構成例を示す図である。
図1は、米国の物理乱数生成器に関する文書[SP800-90B]に準拠した一般的な物理乱数生成器の構成を示す図である。
図1の物理乱数生成器10は、物理乱数生成回路11と、レジスタ12と、Repetition Count Test(繰り返しカウントテスト)回路13と、Adaptive Proportion Test (適応比例テスト)回路14と、制御回路15と、を有する。物理乱数生成回路11は、熱雑音やRSラッチ等の公知の任意の方法で物理乱数を生成する。レジスタ12は、物理乱数生成回路11の生成した乱数を一時保存する。Repetition Count Test回路13およびAdaptive Proportion Test回路14は、受け取った乱数列の乱数性を簡易的に検定するヘルステスト回路を形成する。ヘルステスト回路は、レジスタ12に記憶された乱数列に対して、[SP800-90B]に準拠したヘルステストと呼ばれる自己検定を行い、受け取った乱数列の乱数性を簡易的に検定する。制御回路15は、両方のテストに合格した場合に乱数性が高いと判断し、レジスタ12にその乱数列を出力するように指令し、一方のテストに合格しなかった場合に乱数性が低いと判断し、レジスタ12にその乱数列を出力せずに破棄するように指令する。このように、両方のヘルステストに合格した場合のみ乱数を出力することが許される。Repetition Count Test回路13およびAdaptive Proportion Test回路14におけるヘルステストについては、説明を省略する。
[SP800-90B]では、図1のヘルステスト回路は必須とされている。ヘルステストは、物理乱数生成器10を実際に使用する際に毎回行われる。このヘルステストにより、物理乱数生成回路が同一値を極端に連続して出力し続けるといった事態を検出することができる。
[SP800-90B]には、物理乱数生成器の製造時に行う厳密な乱数性のテストとして、IIDテスト(IID Test[SP800-90B])が存在する。このテストは、前述のヘルステストでは検出できない類の乱数性の低い乱数列についても検出することができる。
図2は、IIDテストを実行する解析マシンの機能ブロック図である。
解析マシン20は、コンピュータ装置で実現される。解析マシン20は、シャッフリングテストを行うシャッフリングテスト部21と、統計テストを行う統計テスト部22と、判定部23と、を有する。解析マシン20は、テスト対象の物理乱数生成器10から乱数を100万ビット以上取得し、この乱数をシャッフリングテストおよび統計テストにかけ、両方ともに合格の場合IIDテスト合格とする。
図3は、シャッフリングテストの大まかな処理手順を示すフローチャートである。
ステップS10で、物理乱数生成器10の生成する100万ビット以上(ここでは100万ビットとする)の乱数列を取得する。
ステップS11で、取得した100万ビット以上の乱数列を10等分して、10個の10万ビット乱数列を生成する。
ステップS12で、10等分した各乱数列(10万ビット乱数列)に対して、それぞれステップS23までの以下の処理を実行するための設定を行う。
ステップS13で、11種のスコアを計算し、記憶する。11種のスコアは、 [SP800-90B]に記載されているCompression Score,Over/Under Runs Score×2,Excursion Score,Directional Runs Score×3,Covariance Score,Collision Score×3である。
ステップS14で、ステップS18までの以下の処理を1000回繰り返すための設定を行う。
ステップS15で、10万ビット乱数列を所定の手順でシャッフルし、変異乱数列を生成する。
ステップS16で、シャッフルして生成した変異乱数列の11種のスコアを計算する。
ステップS17で、11種のスコアをスコアリストに格納する。
ステップS18で、繰り返し回数が1000回になったかを判定し、1000回になるまでS14からS15を繰り返す。
したがって、S14からS18を1000回繰り返すことにより、シャッフルが1000回行われ、1000個の変異乱数列が生成され、11種のスコアが1000組計算され、スコアリストに格納される。
ステップS19で、スコアリストに格納された1000組のスコアを、スコアの種類ごとに昇順ソートする。
ステップS20で、ステップS13で計算したシャッフル前の10万ビット乱数列の各スコア(ここでは原スコア)と、昇順ソートした各種のリストを比較する。
ステップS21で、11種の原スコアのうち、リストの51位〜949位中に入るか判定し、入ればステップS23に進み、入らなければステップS22に進む。
ステップS22で、51位〜949位中に入らなかった原スコアにマークする。言い換えれば、1000個のスコアのリストにおいて、原スコアが、51位〜949位の範囲であればマークを付さず、50位以下または950位以上であればマークを付す。
ステップS23で、繰り返し回数が10回になったかを判定し、10回になるまでS12からS23を繰り返す。
以上のようにして、各種の10個の原スコアについて、マークを付すか否かの処理が完了する。
ステップS24で、各種について、10個の原スコアの内8個以上でマークが付されているか判定し、8個以上でマークが付されていればステップS26に進み、それ以外であれば、すなわち3個以上でマークを付されていなければステップS25に進む。
ステップS25で、テスト対象の物理乱数生成器10を合格と判定し、ステップS27に進み、終了する。
ステップS26で、テスト対象の物理乱数生成器10を不合格と判定し、ステップS27に進み、終了する。
また、IIDテストとして記載されている統計テストでは、二種類のカイ二乗検定を行う。統計テストは、シャッフリングテストに比べて簡単なテストであり、処理コストは小さい。
IIDテストは、処理コストが大きいため、物理乱数生成器の使用時ではなく、製造時にのみ解析マシン上などで実施し、乱数性の低い不良な物理乱数生成器が出荷されるのを排除するために実行される。
以上説明したように、ヘルステスト回路は、物理乱数生成器を使用中に乱雑さが低下していないかを検知するための回路であり、[SP800-90B]準拠の物理乱数生成器であれば必ず搭載されている。しかし、ヘルステスト回路は単純な回路であるため、明らかに乱雑でないにも関わらずヘルステストによる検出を逃れる数列が存在する。例えば、010101010101010101…や、0011001100110011…や、00000000001111111111…などである。ヘルステストで検知できる偏った数列とは、同一値が極端に連続している数列や、0/1比率があまりに偏っている数列である。例に挙げた数列はこのどちらにも当てはまらないため、ヘルステストで検出することはできない。
このように、ヘルステストでは検出できない偏った数列が存在することが、ヘルステスト回路のみを搭載した物理乱数生成器の1つの課題である。
物理乱数生成器は、環境変動や年月の経過によって出力する乱数の乱数性が低下しうる。IIDテストのように厳密なテストを製造時にしか行わない場合、出荷後の実使用時に乱数性が下がったとしてもそれを検出することはできない。こういった事態を回避するためには、IIDテストに相当する厳密なテストをオンチップで実行可能にすることが重要である。厳密なテストを実行可能なテスト回路をオンチップ搭載することで、物理乱数生成装置の利用者は様々な環境下でも安全な物理乱数を得ることができ、情報セキュリティ技術を使用する製品の安全性の向上につながる。
前述のIIDテストは、上記の課題として挙げたような偏った数列を検出することができる。しかし、IIDテストは、ヘルステストと異なり通常は物理乱数生成器の製造時に解析マシン上で実行するテストであり、テストには多くのメモリと処理時間が必要である。
図4は、物理乱数生成器に、上記のシャッフリングテストを実行するための回路をオンチップ実装した場合の回路構成例を示す図であり、物理乱数生成回路を合わせて示している。
物理乱数生成器は、サブセット乱数格納部31と、シャッフル回路32と、シャッフル乱数格納部33と、スコア計算回路34と、スコア格納部35と、ソート回路36と、スコアリスト格納部37と、合否判定回路38と、を有する。これらは、オンチップのコンピュータシステムで実現される。
上記のように、100万ビットの乱数列を取得したのちIIDテストを実行する場合、100万ビットの乱数列を記憶する必要があり、メモリのサイズが大きくなる。そこで、図4の回路構成では、サブセット乱数格納部31は、10万ビットの容量を有し、サブセット乱数格納部31に10万ビットの乱数列が貯まるごとに、図3のS14からS22までを行うようにした。S14からS22までの処理が終了すると、新たに10万ビットの乱数列を取得する。これを合計10回繰り返す。物理乱数生成回路11の乱数性が良好であれば、時間をおいて10回生成した10万ビットの乱数列は、連続して生成された100万ビットの乱数列を10等分に分割した乱数列と、同等のエントロピーであると考えられ、IIDテストと同等であると想定できる。これにより、物理乱数生成回路11の生成した乱数列を記憶するメモリの容量が1/10になる。
シャッフル乱数格納部33は、10万ビットの容量を有する。スコア格納部35は、11種のスコアが10回生成され、それを記憶するため、11種スコア(11records)(448ビット)×10=4,480ビットの容量を有する。
スコアリスト格納部37は、シャッフルして生成した1000個の乱数列に対してそれぞれ11種のスコアを計算して保存し、それを10回繰り返すので、1000×11種スコア(11records)×10=4,480,000ビットの容量を有する。
図5は、図4の回路構成をオンチップ実装した場合のメモリコスト(容量)を示す図である。
図5に示すように、4,687,480ビットの容量が必要であり、大きなメモリコストとなる。
また、高性能のコンピュータを利用した解析マシン上でIIDテストを実行する場合でも大きな処理コスト(時間)(例えば、15分)が必要であり、オンチップ実装した図4の回路では、さらに処理時間が長くなる。
処理コストは、例えば、次の通りである。
ステップS15のシャッフル計算の合計が、10回×乱数1,000個=10,000回である。
ステップS13およびS16のスコア計算の合計が、10回×乱数1,001個×スコア11種=110,110回である。
このように、解析マシン上でなく、図4のようにオンチップ実装された回路で、物理乱数生成器の使用時にオンチップでIIDテストを実行しようとした場合、多大なメモリコストおよび処理コストを要する。
以下に説明する実施形態の物理乱数生成器は、セルフテストでは検出できない乱数性の低い乱数の発生を検出するテストを、短時間で且つオンチップで実行する。
図6は、第1実施形態の物理乱数生成器の概略構成を示す図である。
第1実施形態の物理乱数生成器40は、物理乱数生成回路41と、レジスタ42と、Repetition Count Test回路43と、Adaptive Proportion Test回路44と、制御回路45と、解析テスト部46と、を有する。物理乱数生成回路41、レジスタ42、Repetition Count Test回路43、Adaptive Proportion Test回路44および制御回路45は、図1で説明した対応する要素と同じであり、説明は省略する。
解析テスト部46は、オンチップのコンピュータシステムで実現され、物理乱数生成回路41以外の他の部分と共通に実現してもよい。解析テスト部46は、シャッフリングテスト部47と、統計テスト部48と、判定部49と、を含む処理機能部を有する。統計テスト部48および判定部49は、図2で説明した対応する要素と同じであり、説明は省略する。シャッフリングテスト部47は、図2で説明した対応する要素が実行するシャッフリングテストに類似のテストを行うが、ハードウエア構成および処理内容が異なり、図4のIIDテストを実行する回路に比べてメモリコストおよび処理コストが小さい。
第1実施形態の物理乱数生成器40は、[SP800-90B]のIIDテストに類似したテストを行う解析テスト部46を物理乱数生成器40に組み込み、物理乱数生成回路41が生成した物理乱数を毎回この解析テスト部46でテストする。これによりヘルステストの問題点を補うことができるが、[SP800-90B]のIIDテストと同じテストを行うのでは、前述のように、メモリコスト(容量)および処理コスト(時間)が大きくなり、オンチップ実装は難しい。例えば、シャッフリングテストの処理は高速のコンピュータで形成された解析マシン上で実行したとしても、15分前後かかる。仮に物理乱数生成器が解析マシン並みに高性能な装置だったとしても、物理乱数が必要なときに毎回15分待機することは現実的ではない。ましてや、スマートフォンやスマートカードに搭載される物理乱数生成器となると、その計算性能は解析マシンと比べて遥かに劣るため、テストを終えるまでにさらに長い時間を必要とすることになる。
そこで、物理乱数生成器の製造時に、物理乱数生成器が生成した元の乱数列をシャッフルして作った変異乱数列のスコアリストを計算し、あらかじめ不揮発性メモリ(スコアリスト格納部)に書き込んでおくことが考えられる。シャッフリングテストをオンチップ実行するときは、新たに生成した乱数列に対するスコア計算のみを行い、そのスコアとあらかじめ保存しておいたスコアリストと比較して合否判定を行う。シャッフリングテストの処理時間の長さは、シャッフルによる変異乱数の生成とそのスコア計算に起因するため、それをあらかじめ実行しておくことで処理時間を大幅に減らすことができる。
しかし、この手法を単純に適用した場合、変異乱数の膨大なスコアデータをすべて不揮発性メモリに保存しておく必要があり、小型の組み込み機器用の物理乱数生成器などに、そのような大容量の不揮発性メモリを搭載することは現実には難しい。
そこで、第1実施形態の物理乱数生成器では、さらにスコアリスト格納部の小規模化を行っている。「元々の乱数列の乱数性が高いならば、それをランダムシャッフルして生成した変異乱数列の乱数性も同様に高い。したがって、元々の乱数列のスコアと変異乱数列のスコアには有意な差がないはずである。」と想定される。シャッフリングテストの手順の意味は、この想定を確かめることにあると考えられる。乱数性の高い乱数のスコアが、変異乱数列のスコアリストと比較したときに極端に上位または極端に下位に該当する確率は低く、それが8回発生する確率は、前記の確率のマイナス8乗となる。このような現象が発生したときに、シャッフリングテストはこの物理乱数生成器の乱数性を低いものと判断し、不合格とする。
第1実施形態の物理乱数生成器は、元の乱数列の変異乱数列のスコアリストの、例えば上位5%および下位5%の境界スコアのみをスコアリスト格納部に保存しておく。そして、この二つの値と元々の乱数列のスコアを比較する回路を追加することで、元の乱数列のスコアが変異乱数列のスコアリストの両側5%に該当しているか否かを判別する。両側の5%に10回中8回以上該当する確率は約10のマイナス8乗であり、このような状態が発生したならば、元々の乱数列の乱数性が低いと断じることができる。第1実施形態の物理乱数生成器は、このようにしてIIDテストのシャッフリングテストと同等レベルの判定を行う。なお、統計テストを実行するのに要するメモリコストおよび処理コストは、シャッフリングテストに比べて無視できるので、統計テストをオンチップで実行することに特に問題はないので、説明は省略する。
図7は、第1実施形態の物理乱数生成器40のシャッフリングテスト部47の機能ブロック図であり、物理乱数生成回路41を合わせて示している。
第1実施形態の物理乱数生成器40のシャッフリングテスト部47は、サブセット乱数格納部51と、スコア計算回路52と、スコア格納部53と、スコアリスト格納部54と、スコア比較回路55と、合否判定回路56と、を有する。これらは、オンチップのコンピュータシステムで実現される。
図4の構成と比較すると、第1実施形態の物理乱数生成器40のシャッフリングテスト部47は、シャッフル回路32、シャッフル乱数格納部(10万ビット)33およびソート回路36が除かれ、スコア比較回路55が追加されている。さらに、スコアリスト格納部54のサイズが、10×1000×11種スコア(11records)から10×2×11種スコア(11records)へ小規模化した。すなわち、スコアリスト格納部のサイズは、図4に比べて1/500になった。スコアリスト格納部54の詳細については後述する。
次に、第1実施形態の物理乱数生成器40の製造時の処理手順および使用時の動作について説明する。
物理乱数生成器40の製造時に、メーカーは次の手順を実行する。
物理乱数生成器40に対して、図3に手順を示したシャッフリングテストを含む[SP800-90B]のIIDテストを実行する。IIDテストの結果が不合格であれば、物理乱数生成器40は破棄され、出荷されない。IIDテストの結果が合格であれば、図3のステップS19で得られたソート済みの変異乱数列のスコアリストの上から51番目および949番目をスコア種別ごとに取得し、物理乱数生成器40のスコアリスト格納部54に書き込む。スコアリストは、10×10万ビット乱数列に対して生成されるので、10組のスコア群が生成される。以下、上から51番目のスコア群を上位境界スコア、949番目のスコア群を下位境界スコアと呼ぶ。
図8は、スコアリスト格納部54において、10組の11種のスコア群を記憶する構成を示す図である。
スコア群60−1は、スコアセット01を記憶し、スコアセット01の11種のスコア群Score_01〜Score_11の上位境界スコア61−1および62−1と、下位境界スコア63−1および63−1とを記憶する。言い換えれば、11種の上位境界スコアと11種の下位境界スコアを記憶する。他のスコア群60−2〜60−10も同様である。
スコアは種別によってデータ長が異なり、11種のスコアの合計データ長は448ビットである。1つのスコアセットは、上位・下位それぞれ11種のスコアを持つため、合計データ長は448×2=896ビットである。スコアリスト格納部54は、10個のスコアセットを保持するので、合計データ長は896×10=8960ビットとなる。
図9は、第1実施形態の物理乱数生成器40が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。
ステップS30で、処理を開始する。
ステップS31で、ステップS35までの処理を10回繰り返すための初期設定を行う。
ステップS32で、物理乱数生成回路41が10万ビットの乱数列を生成し、レジスタ42に格納する。
ステップS33で、スコア計算回路52が、得られた10万ビットの乱数列に対して11種のスコアを算出する。
ステップS34で、スコア計算回路52が、計算したスコアをスコア格納部53に格納する。
ステップS35で、繰り返し回数が10回になったかを判定し、10回になるまでS31からS35を繰り返す。
以上の処理により、スコア格納部53に、11種のスコアが10セット格納される。
ステップS36で、ステップS40までの処理を10回繰り返すための初期設定を行う。
ステップS37で、スコア比較回路55が、スコアリスト格納部54から上位境界スコア(11種)・下位境界スコア(11種)を1セット取り出し、スコア格納部53に格納された1セットの11種のスコアを取出し、比較する。
ステップS38で、スコア比較回路55は、スコア格納部53から取出した1セットの各種のスコアが上位境界スコアと下位境界スコアの間であればステップS40に進み、それ以外であれば、ステップS39に進む。
ステップS39で、スコア比較回路55は、上位境界スコアと下位境界スコアの間でなかったスコアにマークを付す。
ステップS40で、繰り返し回数が10回になったかを判定し、10回になるまでS36からS40を繰り返す。
ステップS41で、合否判定回路56は、同種のスコアが8回以上マークされたか判定し、8回以上マークされた場合、ステップS43に進み、7回以下、すなわち同種のスコアで3回以上マークが付されていない場合、ステップS42に進む。
ステップS42で、合否判定回路56は、合格と判定し、ステップS44に進んで終了する。
ステップS43で、合否判定回路56は、不合格と判定し、ステップS44に進んで終了する。
以上の処理により、シャッフリングテストに合格したか判定され、合格した場合には、さらに統計テストを行い、統計テストが合格の場合、第1実施形態の物理乱数生成器40は正常であると判定される。もし、シャッフリングテストが不合格か、シャッフリングテストは合格だが統計テストが不合格の場合、第1実施形態の物理乱数生成器40は不正常であると判定され、その旨利用者に通知される。なお、第1実施形態では、統計テストを行うものとして説明したが、統計テストを行うか否かは任意である。
シャッフリングテストについては、図3に示した処理手順の場合に比べて、1/1000になった。
第1実施形態の物理乱数生成器40は、正常であると判定されると、物理乱数生成回路41が乱数を発生し、レジスタ42に記憶され、その乱数に対してヘルステストが行われ、不合格であれば、乱数は破棄され、合格であれば、乱数は出力される。
第1実施形態では、10万ビットの乱数列を10回生成し、10回生成した乱数列について11種のスコアを計算してマークを付すか否か判定し、その後10回のうち8回、同種のスコアがマークされた場合不合格とした。これは、10回中3回,同種のスコアがマークされなければ,そのスコアはもう計算する必要はないということである。そこで、次に説明する第2実施形態の物理乱数生成器40は、利用者によって物理乱数生成を求められたときに実行する手順を変更して、正常であることが判明した場合には、シャッフリングテストを打ち切る。
第2実施形態の物理乱数生成器は、第1実施形態の物理乱数生成器40と同じ構成を有し、合格数レジスタを設けたこと、および利用者によって物理乱数生成を求められたときに実行する手順が異なる。
図10は、第2実施形態の物理乱数生成器40が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。
ステップS50で、処理を開始する。
ステップS52で、スコア別の合格数レジスタをすべてゼロにリセットする。
ステップS52で、ステップS60までの処理を10回繰り返すための初期設定を行う。
ステップS53で、物理乱数生成回路41が10万ビットの乱数列を生成し、レジスタ42に格納する。
ステップS54で、スコア計算回路52が、得られた10万ビットの乱数列に対して11種のスコアを算出する。
ステップS55で、スコア比較回路55が、スコアリスト格納部54から上位境界スコア(11種)・下位境界スコア(11種)を1セット取り出し、計算した11種のスコアを、上位境界スコア・下位境界スコアと比較する。
ステップS56で、スコア比較回路55は、計算した各種のスコアが上位境界スコアと下位境界スコアの間であればステップS58に進み、それ以外であれば、ステップS57に進む。
ステップS57で、スコア比較回路55は、スコアごとに、上位境界スコアと下位境界スコアの間でなかった場合、合格数レジスタを1増加する。
ステップS58で、すべてのスコアで合格数レジスタの値が3以上であるか判定し、3未満であればステップS60に進み、3以上であればステップS59に進み、S52からS60のループを抜ける。
ステップS59で、合否判定回路56は、合格と判定し、ステップS62に進んで終了する。
ステップS60で、繰り返し回数が10回になったかを判定し、10回になるまでS52からS60を繰り返す。
ステップS61で、合否判定回路56は、不合格と判定し、ステップS62に進んで終了する。
これ以降の処理は、第1実施形態と同じである。
以上説明したように、第2実施形態では、すべてのスコアについて3回以上合格が出た場合には正常であることが判明するので、シャッフリングテストを打ち切ることにより、テスト速度を向上させることができる。
以上、第1および第2実施形態を説明したが、各種の変形例があり得る。例えば、スコアリスト格納部54に格納するスコアは51番目および949番目に限定されない。例えば、境界値および境界値で規定される範囲に入る頻度を適宜設定し、合否を判定することが可能である。
以上説明したように、第1および第2実施形態の物理乱数生成器は、ヘルステストに比べてより高精度に、偏った乱数列を検出することができる。前述のように、ヘルステストは01010101などといった固定パターンの繰り替えしといった数列を検出することはアルゴリズム上不可能であったが、第1および第2実施形態の物理乱数生成器は、このような数列が検出できる。さらに、第1および第2実施形態の物理乱数生成器は、[SP800-90B]のIIDテストに従っているため、0/1比率の極端な偏りや同一値の極端な連続だけでなく、乱数列の各要素がそれぞれ独立で出現しているかどうかといった高度な検定を実施できる。
第1および第2実施形態の物理乱数生成器は、偏った乱数列(例:同一パターンの繰り返し、0/1比率が極端に偏っている(エントロピーが低い)、各要素間に相関関係があるなど)を検出する。これにより、物理乱数生成器の利用者に安全な物理乱数を提供する。安全な物理乱数をシード(seed)とすることにより、安全な秘密鍵を生成することができるため、暗号などの情報セキュリティ技術を使用する製品の安全性を向上させることができる。
物理乱数生成器は、環境変動や年月の経過によって出力する乱数の乱数性が低下しうる。[SP800-90B]に記載されるようにIIDテストのように厳密なテストは製造時にのみ行う場合、出荷後の実使用時に乱数性が下がったとしてもそれを検出することはできない。こういった事態を回避するためには、厳密なテストをオンチップで実行可能にすることが重要である。第1および第2実施形態の物理乱数生成器は、厳密なテストをオンチップ実行可能であり、物理乱数生成器の利用者は様々な環境下でも安全な物理乱数を得ることができ、情報セキュリティ技術を使用する製品の安全性の向上につながる。
ここで、第1および第2実施形態の物理乱数生成器を使用する電子装置の例を説明する。
図11は、物理乱数生成器を使用した暗号演算機能を持つ電子装置の構成例を示す図である。
電子装置は、物理乱数生成器40と、擬似乱数生成装置71と、暗号演算装置72と、CPU75と、ROM76と、RAM77と、を有する。暗号演算装置72は、共通鍵暗号回路73と、公開鍵暗号回路74と、を有する。物理乱数生成器40は、第1または第2実施形態の物理乱数生成器である。擬似乱数生成装置71は、物理乱数生成器40の生成した物理乱数をシード(seed)として擬似乱数列を生成する。
暗号演算装置72は、この擬似乱数生成装置71を使って秘密鍵を生成し、利用者に安全な秘密鍵に基づく暗号機能を提供する。ここでは、暗号演算装置72は、共通鍵暗号回路73により共通鍵を生成すると共に、共通鍵に関係する暗号処理を行い、公開鍵暗号回路74により公開鍵を生成すると共に、公開鍵に関係する暗号処理を行う。擬似乱数生成装置71および暗号演算装置72は、広く知られている技術により実現され、特に限定されない。
CPU75、ROM76およびRAM77は、コンピュータを形成し、電子装置の処理を行う。
物理乱数生成器を必要とする電子装置は、主に暗号機能を含む製品であり、そのような電子装置では、コンピュータが暗号演算装置72の生成する暗号を使用した処理、例えば認証処理の認証結果に応じた処理を行う。暗号機能を含む製品の具体例としてが、携帯電話、スマートカード、コンピュータ、プリンタ等が挙げられる、さらに、ゲーム機なども生成した物理乱数を利用しており、ゲーム機などの電子装置でも、第1および第2実施形態の物理乱数生成器の使用が有効である。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
40 物理乱数生成器
41 物理乱数生成回路
42 レジスタ
43 Repetition Count Test回路
44 Adaptive Proportion Test 回路
45 制御回路
46 解析テスト部
47 シャッフリングテスト部
48 統計テスト部
49 判定部
51 サブセット乱数格納部
52 スコア計算回路
53 スコア格納部
54 スコアリスト格納部
55 スコア比較回路
56 合否判定回路

Claims (9)

  1. 物理乱数生成回路の品質テスト方法であって、
    初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、種類毎にスコアの分布範囲を規定する上限値と下限値を記憶し、
    複数の検証乱数列を生成し、
    前記複数の検証乱数列のそれぞれについて前記複数種類のスコアを計算し、
    前記検証乱数列の前記複数スコアを、前対応する種類の前記上限値及び前記下限値と比較し、
    前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲内に分布する頻度を判定し、
    前記分布する頻度に基づいて、品質が不良であるか否かを判定し、
    前記初期乱数列のシャッフリングにより生成した複数の変異乱数列の複数のスコアについての前記上限値及び下限値の生成および記憶は、前記物理乱数生成回路の製造時に行い、
    前記検証乱数列の生成および品質の判定は、前記物理乱数生成回路の出荷後の通常使用時に行うことを特徴とする物理乱数生成回路の品質テスト方法。
  2. 前記検証乱数列の前記複数スコアの値の計算を行うごとに、各スコアについての前記分布範囲に対して分布するか否かを判定し、
    複数回の判定結果から品質が不良であるか否かの判定が完了した時点で、前記検証乱数列の生成を停止する請求項1に記載の物理乱数生成回路の品質テスト方法。
  3. 前記初期乱数列は、100万ビット以上の乱数列であり、
    前記初期乱数列を10等分した乱数列の複数種類のスコアの分布範囲を規定する10セットの値を記憶する請求項1または2に記載の物理乱数生成回路の品質テスト方法。
  4. 前記変異乱数列は、1000個生成され、
    スコアは、11種類であり、
    各種類について1000個のスコア値の分布が計算され、前記分布の上位5%および下位5%の境界値がそれぞれ前記上限値及び下限値として記憶され、
    前記検証乱数列は10回生成され、
    スコア種類について、8個の値が、前記上位5%の境界値より大きいかまたは前記下位5%の境界値より小さい場合に、不良であると判定する請求項1から3のいずれか1項に記載の物理乱数生成回路の品質テスト方法。
  5. 物理乱数生成回路と、
    前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、
    前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、
    前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、
    前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、
    前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、
    前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行うことを特徴とする乱数生成器。
  6. 前記比較回路は、前記検証乱数列の前記複数スコアの値の演算を行うごとに、各スコアについての前記分布範囲に対して分布するか否かを判定し、
    前記合否判定回路は、複数回の判定結果から品質が不良であるか否かの判定が完了した時点で、前記検証乱数列の生成を停止する請求項に記載の乱数生成器。
  7. 前記初期乱数列は、100万ビット以上の乱数列であり、前記初期乱数列を10等分した前記複数の変異乱数列の複数種類のスコアについて、前記種類毎の前記分布範囲を規定する10セットの値を記憶する請求項またはに記載の乱数生成器。
  8. 前記変異乱数列は、1000個生成され、
    スコアは、11種類であり、
    前記スコアリスト格納部は、各種類について1000個のスコア値の分布が演算され、前記分布の上位5%および下位5%の境界の値を、前記分布範囲を規定する値として記憶し、
    前記検証乱数列は10回生成され、
    前記合否判定回路は、各種類について、8個の値が、前記上位5%の境界値より大きいかまたは前記下位5%の境界値より小さい場合に、不良であると判定する請求項からのいずれか1項に記載の乱数生成器。
  9. 乱数生成器と、
    前記乱数生成器の生成した乱数を利用した処理を行う処理部と、を有し、
    前記乱数生成器は、
    物理乱数生成回路と、
    前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、
    前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、
    前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、
    前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、
    前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、
    前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行うことを特徴とする電子装置。
JP2014210969A 2014-10-15 2014-10-15 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置 Active JP6372295B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014210969A JP6372295B2 (ja) 2014-10-15 2014-10-15 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置
US14/847,078 US20160110165A1 (en) 2014-10-15 2015-09-08 Quality detecting method, random number generator, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014210969A JP6372295B2 (ja) 2014-10-15 2014-10-15 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置

Publications (2)

Publication Number Publication Date
JP2016081247A JP2016081247A (ja) 2016-05-16
JP6372295B2 true JP6372295B2 (ja) 2018-08-15

Family

ID=55749132

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014210969A Active JP6372295B2 (ja) 2014-10-15 2014-10-15 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置

Country Status (2)

Country Link
US (1) US20160110165A1 (ja)
JP (1) JP6372295B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6918582B2 (ja) * 2017-06-02 2021-08-11 パナソニック株式会社 乱数性検証システム及び乱数性検証方法
US11055065B2 (en) * 2018-04-18 2021-07-06 Ememory Technology Inc. PUF-based true random number generation system
JP7122722B2 (ja) * 2019-07-25 2022-08-22 ▲しゃーん▼碼科技股▲ふん▼有限公司 高速暗号化鍵生成エンジン
CN113094677B (zh) * 2021-06-10 2021-10-01 天聚地合(苏州)数据股份有限公司 身份验证方法、装置、存储介质及设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868630B1 (en) * 2011-03-18 2014-10-21 Board Of Regents Of The University Of Texas System Verification of pseudorandom number streams
JP2014075082A (ja) * 2012-10-05 2014-04-24 Renesas Electronics Corp 乱数生成器および乱数生成方法
US9075674B2 (en) * 2012-12-12 2015-07-07 Freescale Semiconductor, Inc. Systems with adjustable sampling parameters and methods of their operation
US20150199175A1 (en) * 2013-02-14 2015-07-16 Yongge Wang Systems and Methods for Performing Randomness and Pseudorandomness Generation, Testing, and Related Cryptographic Techniques

Also Published As

Publication number Publication date
US20160110165A1 (en) 2016-04-21
JP2016081247A (ja) 2016-05-16

Similar Documents

Publication Publication Date Title
Majzoobi et al. Slender PUF protocol: A lightweight, robust, and secure authentication by substring matching
US9628272B2 (en) PUF authentication and key-exchange by substring matching
EP3454318B1 (en) Security system with entropy bits generated by a puf
Rostami et al. Robust and reverse-engineering resilient PUF authentication and key-exchange by substring matching
US10256983B1 (en) Circuit that includes a physically unclonable function
US7681103B2 (en) Reliable generation of a device-specific value
US11005668B2 (en) System and method for generating secret information using a high reliability physically unclonable function
Turan et al. Recommendation for password-based key derivation
TWI416921B (zh) 用於信號產生器式裝置安全性之方法、積體電路及電腦程式產品
TWI503688B (zh) 用以藉由測試裝置對安全晶片認證存取之方法
US11243744B2 (en) Method for performing a trustworthiness test on a random number generator
US20150318999A1 (en) Derivation of a Device-Specific Value
US20180183589A1 (en) Secret key generation using a high reliability physically unclonable function
EP3577642B1 (en) Methods and devices for protecting data
JPWO2008056613A1 (ja) 認証装置
US20090110188A1 (en) Configurable random number generator
GB2507988A (en) Authentication method using physical unclonable functions
US20060004829A1 (en) Rolling keys
JP6372295B2 (ja) 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置
WO2013088939A1 (ja) 識別情報生成装置及び識別情報生成方法
US11368319B2 (en) Integrated circuit performing authentication using challenge-response protocol and method of using the integrated circuit
US11171793B2 (en) Method and system for detecting an attack on a physically unclonable function (PUF)
Delavar et al. A ring oscillator-based PUF with enhanced challenge-response pairs
US20130179966A1 (en) Password authentication circuit and method
Turan et al. Sp 800-132. recommendation for password-based key derivation: Part 1: Storage applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180402

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180702

R150 Certificate of patent or registration of utility model

Ref document number: 6372295

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150