JP6170476B2 - ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法 - Google Patents

ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法 Download PDF

Info

Publication number
JP6170476B2
JP6170476B2 JP2014161649A JP2014161649A JP6170476B2 JP 6170476 B2 JP6170476 B2 JP 6170476B2 JP 2014161649 A JP2014161649 A JP 2014161649A JP 2014161649 A JP2014161649 A JP 2014161649A JP 6170476 B2 JP6170476 B2 JP 6170476B2
Authority
JP
Japan
Prior art keywords
evaluation
hash
test
unit
output value
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
JP2014161649A
Other languages
English (en)
Other versions
JP2016038469A (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 JP2014161649A priority Critical patent/JP6170476B2/ja
Publication of JP2016038469A publication Critical patent/JP2016038469A/ja
Application granted granted Critical
Publication of JP6170476B2 publication Critical patent/JP6170476B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、入力キー(入力値)に対して出力値を得る実行が可能な実行ファイルが、コンシステントハッシュ法によるハッシュ関数か否かを評価するハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法に関する。
サーバ等においてデータ通信のセキュリティ等に適用される一般的なハッシュ関数は、キー入力による入力値に対して、そのハッシュ関数で定められた長さのハッシュ値を出力値として出力する。このハッシュ関数では、1つの入力値に対して1つの出力値が得られる。以降、このようなハッシュ関数を、一般的ハッシュ関数という。
コンシステントハッシュ法(Consistent hashing)に利用する一般的ハッシュ関数(以降、Cハッシュ関数という)がある。
Cハッシュ関数は、極端に類似した入力キー(入力値)に対しても出力値を分散させる必要がある。例えば、直交座標系における第1〜第4象限に、0〜99の数値を次のように分散させてマッピングする。第1象限に0〜24を、第2象限に25〜49を、第3象限に50〜74を、第4象限に75〜99をマッピングする。
Cハッシュ関数に求められる要件には、次の2つがある。1つ目は、上述したハッシュ値の分散例のように、どのようなキー区間(キーによる入力値の区間)に対しても、出力値が均一に分散されることである。2つ目は、計算速度が速いことである。従って、サーバ等に搭載される演算処理手段で用いられ、入力値に対して出力値を生成する関数が、その2つの要件を満たすCハッシュ関数であるか否かを適正に評価(ハッシュ評価)できることが重要となっている。その評価は、試験者が、テストデータを生成すると共に、複数のテスト項目に対するテストプログラムを作成して行っている。
ここで、ハッシュ評価とは、入力キー(入力値)に対して出力値を得る実行が可能な形式の実行ファイル(又は関数)で、生成される出力値に対して行う評価テストを指し、この結果がハッシュ値であるか否かを判定することにより、当該実行ファイル(又は関数)がCハッシュ関数であるか否かを判定する。
この種の評価を行う技術として、非特許文献1に記載の評価テストがある。この評価テストは、MULTI−S01(改ざん検知機能付きストリーム暗号運用モード)で使用される疑似乱数生成モジュール(PANAMA)の評価を行うものであり、テストデータを生成し、下記の6項目のテストに対するテストプログラムを作成後、疑似乱数が正常に生成されているか否かの評価を行う。この評価テストは、疑似乱数生成モジュール以外に、ハッシュ関数(一般的ハッシュ関数やCハッシュ関数)等の評価にも適用可能となっている。
6項目のテストとは、0/1等頻度性テスト(入力値の「0」と「1」とが等しい頻度か否かの確認テスト)、連性テスト、長周期連性テスト、一様性テスト、Avalanche(アバランチ)性テスト、線形複雑度テストであって、これらは、暗号モジュールに関するセキュリティ要件の仕様を規定する米国連邦標準規格のFIPS(Federal Information Processing Standardization)140−2に規定されたものである。FIPS140−2には、その6項目以外のテスト項目も規定されている。
「暗号アルゴリズム及び関連技術の評価報告書一覧(国内)、 ID No.137 暗号アルゴリズムの詳細評価報告書 疑似乱数生成 PANAMA(MULTI−S01内部)編」、[online]、平成15年4月24日、独立行政法人情報処理推進機構、[平成26年8月4日検索]、インターネット〈URL:http://www.ipa.go.jp/security/enc/CRYPTREC/fy15/cryptrec20030424_outrep01.html〉
上記の非特許文献1に記載の評価テストを、Cハッシュ関数の評価に適用したとする。この場合、試験者が例えば上記のように6項目のテストに対するテストプログラムを作成してCハッシュ関数の評価を行う。しかし、それらのテスト項目は、試験者がFIPS140−2に規定された各テスト項目の中から任意に選択して定めるものなので、Cハッシュ関数を適正に評価できるか否かが曖昧となる。このため、入力値に対して出力値を生成する関数が、Cハッシュ関数であるか否かの評価を適正に行うことができないという問題が生じる。
また、Cハッシュ関数の評価を行うためのテストプログラムは、複数のテスト項目毎に試験者が作成しなければならないので労力と時間が掛かる。言い換えれば、評価テストのための労務コストが高くなるという問題がある。
ところで、一般的ハッシュ関数の多くは、少ない母数やビット列が酷似したキー入力については、出力値に偏りがでる。例えば、一般的ハッシュ関数をf(n)=nとした場合に、入力値が「0,1,2」であれば、出力値は「0,1,2」となって分散しない。これは上述した直交座標系の例では第1象限に出力値が集まる状態である。つまり、少ない母数やビット列が酷似したキー入力の場合、この出力値に偏りが出るため、Cハッシュ関数を評価した場合、出力値の分散性が保持できるか否かを適正に評価することができないという問題がある。
本発明は、このような背景に鑑みてなされたものであり、入力値に対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数であるか否かの評価を適正に行うことができ、この評価テストのための労務コストを抑えることができるハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法を提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明は、入力値である入力キーに対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数を実現するものであるか否かを評価するハッシュ評価を行うハッシュ評価サーバであって、前記ハッシュ評価を行うための前記実行ファイルの評価テストの評価手順及び合格基準が定められ、且つ当該評価手順及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶する記憶部と、前記記憶部に記憶された前記評価パターン毎に適合した入力キーを生成する入力キー生成部と、前記実行ファイルが設定され、前記入力キー生成部で生成された入力キーに対して、当該設定された実行ファイルに従って出力値を生成するファイル実行部と、前記ファイル実行部で生成された出力値に対して、当該出力値に対応する前記入力キーの生成に係わった評価パターンの評価手順に基づき評価テストを行い、当該テスト結果が同評価テストの前記合格基準を満たせば、前記実行ファイルは前記所定ハッシュ関数であると評価するハッシュ評価部とを備えることを特徴とするハッシュ評価サーバである。
この構成によれば、記憶部に、実行ファイルの評価テストの評価手順及び合格基準が定められ、且つ当該評価手順及び合格基準が各々異なる評価パターンが予め定められた数だけ記憶されている。この予め定められた数の評価パターンを用いて、実行ファイルが所定ハッシュ関数であるか否かを評価するハッシュ評価を行うので、一定の基準でハッシュ評価を行うことができる。従って、実行ファイルが所定ハッシュ関数であるか否かの評価を適正に行うことができる。また、従来のように、試験者が評価テスト毎にテストプログラムを作成する必要がないので、労力と時間が掛からない。このため、評価テストのための労務コストを抑えることができる。
請求項2に係る発明は、前記所定ハッシュ関数は、コンシステントハッシュ法によるハッシュ関数であることを特徴とする請求項1に記載のハッシュ評価サーバである。
この構成によれば、実行ファイルがコンシステントハッシュ法によるハッシュ関数であることを適正に評価することができる。
請求項3に係る発明は、前記情報設定記憶部に記憶される予め定められた数の評価パターンは、0/1等頻度性、連性、長周期連性、一様性、Avalanche性、線形複雑度、自己相関、相互情報量の8項目の評価パターンであることを特徴とする請求項1又は2に記載のハッシュ評価サーバである。
この構成によれば、入力キーに対して実行ファイルに従って生成される出力値を、8項目の評価パターンに応じて評価テストする。この際、8項目の評価パターンの各々に適合した8パターンの入力キーが生成される。入力キーを生成する一例として、ビット列が酷似したキー生成を意図的に行う。従って、入力キーに偏りが生じてもなお、出力値に偏りが出ないことを確認することができ、本発明では、出力値の分散性が保持できるか否かを適正に評価することができる。
請求項4に係る発明は、前記情報設定記憶部に記憶される予め定められた数の評価パターンは、前記8項目の評価パターンの内、ユーザが所定数の評価パターンを任意に定めて記憶可能であることを特徴とする請求項3に記載のハッシュ評価サーバである。
この構成によれば、ユーザが実行する評価パターンを任意に変更することができる。このため、実行ファイルのハッシュ評価を行うための評価テストの内容を変更する場合に、容易に変更することができる。
請求項5に係る発明は、前記実行ファイルが前記出力値を生成するための生成速度を測定すると共に、当該実行ファイルが単位時間当たりに出力できる情報量を測定する性能測定部を更に備えることを特徴とする請求項1〜4の何れか1項に記載のハッシュ評価サーバである。
この構成によれば、実行ファイルの出力値の生成時間や、出力値の情報量を知ることができるので、ハッシュ評価時のサーバの処理速度等の性能を評価することができる。
請求項6に係る発明は、前記ハッシュ評価部の評価結果を、ユーザが画面上で読み取り可能にテキスト表示するためのテキストデータ形式に加工処理、又は、ユーザが画面上で読み取り可能にグラフィック表示するためのグラフ画像データ形式に加工処理する評価結果加工部を更に備えることを特徴とする請求項1〜5の何れか1項に記載のハッシュ評価サーバである。
この構成によれば、ユーザが、実行ファイルのハッシュ評価の評価結果を、画面上で確認することができる。
請求項7に係る発明は、請求項1〜6の何れか1項に記載のハッシュ評価サーバを備えることを特徴とするハッシュ評価システムである。
この構成によれば、ハッシュ評価システムにおいても、ハッシュ評価サーバと同様にハッシュ評価を行うことができる。
請求項8に係る発明は、入力値に対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数を実現するものであるか否かを評価するハッシュ評価を行うハッシュ評価サーバのハッシュ評価方法であって、前記ハッシュ評価サーバは、前記ハッシュ評価を行うための前記実行ファイルの評価テストの評価手順及び合格基準が定められ、且つ当該評価手順及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶する記憶部を備えており、前記記憶部に記憶された前記評価パターン毎に適合した入力キーを生成する第1ステップと、前記実行ファイルが設定され、前記第1ステップで生成された入力キーに対して、当該設定された実行ファイルに従って出力値を生成する第2ステップと、前記第2ステップで生成された出力値に対して、当該出力値に対応する前記第1ステップでの前記入力キーの生成に係わった評価パターンの評価手順に基づき評価テストを行い、当該テスト結果が同評価テストの前記合格基準を満たせば、前記実行ファイルは前記所定ハッシュ関数であると評価する第3ステップとを実行することを特徴とするハッシュ評価方法。
この方法によれば、記憶部に、実行ファイルの評価テストの評価手順及び合格基準が定められ、且つ当該評価手順及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶しておけば、実行ファイルが所定ハッシュ関数か否かのハッシュ評価を一定の基準で行うことができる。従って、実行ファイルが所定ハッシュ関数であるか否かの評価を適正に行うことができる。また、従来のように、試験者が評価テスト毎にテストプログラムを作成する必要がないので、評価テストのための労務コストを抑えることができる。
本発明によれば、入力値に対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数であるか否かの評価を適正に行うことができ、この評価テストのための労務コストを抑えることができるハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法を提供することができる。
本発明の実施形態に係るハッシュ評価システムの構成を示すブロック図である。 本実施形態に係るハッシュ評価システムにおけるアカウント登録及び認証処理、並びにハッシュ評価の処理を説明するためのシーケンス図である。 入力キー生成部及びファイル実行部の処理を説明するためのブロック図である。 連性テストの合格基準値を定める基準テーブルの図である。 相互情報量テストにおける実行ファイルに従った出力値の「0」又は「1」の各ビットの度数を示す図である。 相互情報量テストにおける実行ファイルに従った出力値の度数を変換した確率分布を示す図である。 端末機の図示せぬ画面にテキスト表示された8項目の評価結果を示し、(a)は全てOKの場合を示す図、(b)は長周期連性の項目のみNGの場合を示す図である。 端末機の図示せぬ画面にグラフィック表示された0/1等頻度性テストによる「1」の出現頻度の度数分布を示す図である。 本実施形態に係るハッシュ評価システムによるハッシュ評価処理の動作を説明するための第1のフローチャートである。 本実施形態に係るハッシュ評価システムによるハッシュ評価処理の動作を説明するための第2のフローチャートである。
以下、本発明の実施形態を、図面を参照して説明する。
<実施形態の構成>
図1は、本発明の実施形態に係るハッシュ評価システムの構成を示すブロック図である。
図1に示すハッシュ評価システム10は、前述したハッシュ評価を行うものであり、ユーザ端末機20と、ハッシュ評価サーバ(単に、評価サーバともいう)30と、アカウント管理サーバ40とを備えて構成されている。ユーザ端末機20、評価サーバ30及びアカウント管理サーバ40は、有線や無線回線によるインターネット回線で接続されている。なお、アカウント管理サーバ40を管理サーバ40ともいい、ユーザ端末機20を端末機20ともいう。
端末機20は、ユーザが、アカウント情報の登録や認証要求等の各種操作を行うコンピュータであり、送受信部20aと、アカウント要求応答部20bと、実行ファイル送信制御部20cと、評価結果表示制御部20dとを備える。なお、アカウント情報は、ユーザが、インターネット上のサーバやコンピュータへのログインを行う権利を得るための情報であり、ユーザID(Identification)やパスワードを含むものである。
評価サーバ30は、ハッシュ評価処理等を行うサーバであり、送受信部30aと、アカウント要求応答部30bと、情報設定記憶部(記憶部)30cと、ユーザ入力制御部30d1を有する入力キー生成部30dと、ファイル実行部30eと、出力値記憶部30fを有するハッシュ評価部30gと、性能測定結果記憶部30h1を有する性能測定部30hと、評価結果加工部30iとを備える。
管理サーバ40は、ユーザのアカウント情報の登録や認証等を行ってアカウントの管理を行うサーバであり、送受信部40aと、アカウント管理処理部40bと、評価項目実施管理部40cとを備える。
端末機20において、送受信部20aは、ユーザのアカウント登録や認証に係るアカウント情報並びに、その他、後述のように評価サーバ30との間で遣り取りされる各種情報を送受信する。
アカウント要求応答部20bは、ユーザのアカウント情報を評価サーバ30を介して管理サーバ40へ登録及び認証する要求の制御を行うと共に、管理サーバ40から評価サーバ30を介して返信されてきたアカウント登録の応答結果を表示する制御を行う。
これらの制御を、図2を参照して詳細に説明する。図2は本実施形態に係るハッシュ評価システムにおけるアカウント登録及び認証処理、並びにハッシュ評価の処理を説明するためのシーケンス図である。
図2において、端末機20のアカウント要求応答部20b(図1)は、ステップS1,S2に示すように、ユーザのアカウント情報を評価サーバ30を介して管理サーバ40へ登録する要求制御(アカウント登録要求)を行う。これに応じて、ステップS3に示すように、管理サーバ40がそのユーザのアカウント情報を登録する。管理サーバ40は、そのアカウント登録の結果を、ステップS4,S5に示すように評価サーバ30を介して端末機20へ応答(アカウント登録応答)する。端末機20のアカウント要求応答部20bは、ステップS6に示すように、その返信されてきたアカウント登録結果を表示する。
また、端末機20のアカウント要求応答部20bは、ステップS7,S8に示すように、ユーザのアカウント情報を認証する要求制御(アカウント認証要求)を評価サーバ30を介して管理サーバ40へ行う。これに応じて、ステップS9に示すように、管理サーバ40がそのユーザのアカウント情報の認証を行う。管理サーバ40は、そのアカウント認証の結果を、ステップS10,S11に示すように評価サーバ30を介して端末機20へ応答(アカウント認証応答)する。端末機20のアカウント要求応答部20bは、ステップS12に示すように、その返信されてきたアカウント認証結果を表示する。
なお、アカウント情報の登録要求を行う際の情報を、アカウント登録要求情報又は登録要求情報といい、アカウント情報の認証要求を行う際の情報を、アカウント認証要求情報又は認証要求情報という。また、端末機20に返信されてきたアカウントの登録の応答結果の情報を、アカウント登録応答情報又は登録応答情報といい、返信されてきたアカウントの認証の応答結果の情報を、アカウント認証応答情報又は認証応答情報という。
図1に戻って、実行ファイル送信制御部20cは、入力キーに応じた入力値に対して出力値を得る実行が可能な形式の実行ファイルの情報を、評価サーバ30へ送信(図2のS13参照)する制御を行う。実行ファイルは、具体的には、Cハッシュ関数(所定ハッシュ関数)、一般的ハッシュ関数、疑似乱数生成手段(疑似乱数生成モジュール)等を実現するプログラム情報である。
このような実行ファイルは、実行ファイル登録者によって、実行ファイルが入力を受け付け、ハッシュ値等の出力値を出力するように、実行ファイル送信制御部20cに実装される。また、実行ファイル送信制御部20cから評価サーバ30へ送信される実行ファイルが、入力値に対して出力値を得る実行形式で無い場合、端末機20へ、実行ファイルの登録不可能であることを示すメッセージ返信するようになっている。
評価結果表示制御部20dは、評価サーバ30から受信した評価結果の情報を図示せぬ画面に表示(図2のS17参照)する制御を行う。
次に、一般的なアカウント管理機能を有する管理サーバ40について説明する。
送受信部40aは、評価サーバ30との間で、上述したような各種情報を送受信する。
アカウント管理処理部40bは、アカウント情報に含まれるユーザIDやパスワードを事前登録する処理、ユーザIDに紐づきユーザ情報を更新する処理、ユーザIDに紐づきユーザ情報を削除する処理、ユーザID及びパスワードを用いてユーザの特定を行うアカウント認証の処理を行う。
評価項目実施管理部40cは、FIPS140−2に規定された評価項目の内、ユーザID毎に、どの評価項目で実行ファイルの評価テストを実施するかを管理する処理を行う。
本発明では、FIPS140−2に規定された評価項目の内、原則として、統計的性質として下記の8項目で実行ファイルを評価し、また、実行ファイルの性能測定として下記の2項目で評価するようになっている。
8項目とは、「0/1等頻度性」、「連性」、「長周期連性」、「一様性」、「Avalanche性」、「線形複雑度」、「自己相関」、「相互情報量」である。
実行ファイルの性能測定とは、後述の評価サーバ30のファイル実行部30eが実行する実行ファイルが出力値を出力するための出力時間と、実行ファイルが単位時間当たりに出力できる情報量とを測定することである。この性能測定のための2項目は、「出力値生成速度」と、「出力値生成情報量」である。これらの8項目及び2項目のテスト内容(以降、8項目+2項目)については後述する。後述の各項目のテスト内容の説明において出現する数式は、FIPS140−2規格で規定されるか、一般的に定められているものである。
つまり、評価項目実施管理部40cは、原則8項目+2項目で評価テストすることを管理するが、8項目+2項目の内、ユーザが任意のテスト実施項目を選択する指示を端末機20から受信した場合、これを管理する処理も行う。例えば、評価項目実施管理部40cが、ユーザAがAvalanche性テストのみ実施、ユーザBがAvalanche性テストを除く全てのテストを実施する指示を行った場合、その管理を行う。このように管理することにより、ユーザが任意の評価テストを選択でき、ハッシュ評価のテスト時間の短縮を図ることが可能となっている。
次に、評価サーバ30について説明する。評価サーバ30の構成要素は、大きく2つに分類でき、一般的な処理を行う送受信部30a及びアカウント要求応答部30bと、本発明の特徴であるハッシュ評価処理を行うための、情報設定記憶部30c、入力キー生成部30d、ファイル実行部30e、ハッシュ評価部30g、性能測定部30h及び評価結果加工部30iとに分類できる。この内、入力キー生成部30d、ファイル実行部30e及びハッシュ評価部30gは、上記8項目の評価パターン(評価項目)によるハッシュ評価のテストを行う。性能測定部30hは、上記2項目の評価パターンによる実行ファイルの性能測定のテストを行う。
送受信部30aは、端末機20又は管理サーバ40との間で遣り取りされる各種情報を送受信する。
アカウント要求応答部30bは、端末機20から送信されてきた登録要求情報に応じて、管理サーバ40にアカウント登録要求を行い、この登録要求に応じて管理サーバ40から返信されてきた登録応答情報を、端末機20へ送信する。また、アカウント要求応答部30bは、端末機20から送信されてきた認証要求情報に応じて、管理サーバ40にアカウント認証要求を行い、この認証要求に応じて管理サーバ40から返信されてきた認証応答情報を、端末機20へ送信する。つまり、図2のステップS1,S2,S4,S5,S7,S8,S10,S11の仲介処理を行う。
図1に示す情報設定記憶部30cは、実行ファイルをハッシュ評価するために予め定められた上記の8項目+2項目の評価パターンと、評価パターンの各々に関しての各設定情報を、テーブル化して記憶するものである。各設定情報とは、各評価パターンに関しての、「キー生成数、キー生成方法、評価アルゴリズム(評価手順)、合格基準値、評価パターン実行(ON)又は未実行(OFF)」の各情報である。ONは、当該ONが付されている評価パターンを実行し、OFFは、当該OFFが付されている評価パターンは実行しないことを示す。
入力キー生成部30dは、実行ファイルのハッシュ評価を行うために、情報設定記憶部30cに記憶された各評価パターンを参照して、評価パターン毎に適合した入力キー(単に、キーともいう)を、所定のキー生成数だけ生成する。入力キー生成部30dは、生成した入力キーをコマンドライン等により自動でファイル実行部30eへ入力する。
ユーザ入力制御部30d1は、入力キー生成部30dが本来生成するキーの入力が、ユーザが端末機20の操作により可能となるように制御する。つまり、ユーザが行う端末機20の操作で、任意のキーを入力できるようにする。なお、入力キー生成部30dは、ユーザ入力制御部30d1を備えない構成であってもよい。
ファイル実行部30eは、端末機20から送信されてきた実行ファイルをファイル記憶部30e1に記憶して設定する。また、ファイル実行部30eは、実行ファイルのハッシュ評価を行うために、先に設定された実行ファイルが、入力キー生成部30dで生成された入力キー(入力値)に対して、所定の出力値を生成する処理を実行する。
ここで、入力キー生成部30d及びファイル実行部30eの処理を、図3を参照して具体的に説明する。まず、図3に示すファイル実行部30eは、端末機20(図1)から送信されてきた実行ファイル53をファイル記憶部30e1に記憶して設定する。
次に、入力キー生成部30dが、情報設定記憶部30c(図1)に記憶された各評価パターンの内、例えば「0/1等頻度性」テストを行うに適合した入力キー51を生成する。「0/1等頻度性」テストについては後述するが、この際の入力キー51が、例えば、「0,1」形式のデータ(以降、バイナリデータ)である入力値を、1bit(ビットともいう)ずつ変更した64bitのキーを100,000パターン(10万パターンとも表現する)用意する。つまり、キーを64bit×10万パターン用意するものとする。この入力キー51がファイル実行部30eへ矢印Y1で示すように入力される。
次に、ファイル実行部30eは、入力キー生成部30dから入力されたキー51(入力値)に対して、先に設定された実行ファイル53に従った出力値55を生成し、これを、矢印Y2で示すように出力値記憶部30fへ出力する。出力値記憶部30fは、その出力値55を記憶する。この出力値55は、バイナリデータで表される。
ハッシュ評価部30gは、出力値記憶部30fに記憶された出力値のハッシュ評価を行う。このハッシュ評価は、情報設定記憶部30c(図1)に記憶された評価パターンの内、上記の出力値を得るために入力キー生成部30dが用いた評価パターンの評価アルゴリズムに基づき評価処理を行い、この評価処理結果が、同評価パターンの合格基準値を満たすか否かを判定することである。ハッシュ評価部30gは、そのハッシュ評価のための評価テストを、上記8項目全てについて行い、8項目全ての評価が合格であれば、実行ファイルがCハッシュ関数であると判定する。言い換えれば、ハッシュ評価は、8項目の統計的性質に関するテストを行って、コンシステントハッシュ法にふさわしい統計的性質があるハッシュ関数であるかどうかを確認することである。
ここで、8項目の評価パターン(評価項目)のテスト内容について説明する。
最初に、「0/1等頻度性」テストについて説明する。「0/1等頻度性」テストとは、実行ファイルで得られる出力値の「0」と「1」とが等しい頻度か否かを確認するテストであり、常に撹拌(分散)された出力値が得られることを確認する。このテストは次のように実施される。まず、図3に示す入力キー生成部30dが、情報設定記憶部30c(図1)に記憶された各評価パターンの中から「0/1等頻度性」の評価パターンを選択し、この選択された「0/1等頻度性」テストを行うに必要な入力キー51を生成する。
この入力キー51は、例えば、入力値を1bitずつ変更した64bitのキーを、10万パターンを用意する。この10万パターンが、キー生成数である。この入力キー51がファイル実行部30eへ矢印Y1で示すように入力される。
次に、ファイル実行部30eが、その入力されたキー51(入力値)に対して、先に設定された実行ファイル53に従った出力値55を生成し、この出力値55を、矢印Y2で示すように出力値記憶部30fへ出力する。出力値記憶部30fは、その出力値55を記憶する。この記憶される出力値55は、「0,1」が連続する20000ビット(2万ビットとも表現する)のデータとなる。この2万ビットは、出力値の64bitが約313パターン分(凡そ、64×313)となる。
次に、ハッシュ評価部30gが、記憶した出力値55のハッシュ評価を行う。まず、ハッシュ評価部30gは、情報設定記憶部30c(図1)から入力キー生成部30dが用いた評価パターンの「0/1等頻度性」の評価アルゴリズムを選択する。次に、ハッシュ評価部30gは、その選択した評価アルゴリズムに基づき、出力値55が「0/1等頻度性」の条件を満たすか否かを判定するための評価処理を行う。
この評価処理は、出力値55(64bit)において、連続する2万ビットの中に「1」となるビットの個数Xが、次の(式1)を満たすことを判定する。この際、評価アルゴリズムは、2万ビットの中の「1」を数える処理を行うものとなる。
9725<X<10275 …(式1)
但し、(式1)は、FIPS140−2規格で、2万ビットに対して必然的に定められるハッシュ評価の合格基準値である。なお、2万ビットの数値は、試験者がテスト条件に応じて変更することも可能である。この変更を行った場合は、変更したビット数に応じて上記(式1)のXの範囲を定める数値も所定の数値に変わる。
このように、入力値を1bitずつ変更した64bitのキー51を10万パターン、ファイル実行部30eに入力し、この入力により実行ファイル53に従って得られる出力値55(64bit)の連続2万ビットの中に「1」となるビットの個数Xが、上記(式1)を満たすことを判定する動作を、1回のテストとする。1回のテストにおいては、個数Xが、9725を超え、10275未満であれば、合格と判定される。
ハッシュ評価部30gは、上記1回のテストを予め定められた回数、例えば320回行い、この320回のテスト結果が、例えば99%以上(319回以上)を満たせば、「0/1等頻度性」テストは合格と判定する。その99%以上も、予め定められた合格基準値である。
なお、テストの回数、合格基準値は、人が任意に設定することも可能である。また、上述した「入力値を1bitずつ変更した64bitのキーを100000パターン」の各数値において、入力値の変更bit数と、キーのbit数、パターン数も、人が任意に設定可能である。例えば、「入力値を2bitずつ変更した128bitのキーを50000パターン」としてもよい。
次に、「連性」テストについて説明する。「連性」テストとは、出力値のビット「0」とビット「1」との発生確率が等しいならば、後述の「連の長さ」は正規分布に従うので、連の長さをテストで調査することにより、ビットの偏りについて調べるテストである。
まず、上述した実行ファイルに従って得られる出力値の例えば連続2万ビット(任意に設定可能)において、「0」が連続するビット数と、「1」が連続するビット数とを各々数え、これを頻度とする。また、「0」又は「1」の同記号が連続する連の長さが1,2,3,4,5,6以上の場合に分ける。図4に示すように、「連の長さ」と「頻度」とを対応付け、これを「連性」テストの合格基準値(FIPS140−2規格で規定)を定める基準テーブル57とする。
基準テーブル57は、連の長さ「1」の頻度が2315〜2685の間に入っていれば合格、連の長さ「2」の頻度が1114〜1386の間に入っていれば合格、連の長さ「3」の頻度が527〜723の間に入っていれば合格、連の長さ「4」の頻度が240〜384の間に入っていれば合格、連の長さ「5」の頻度が103〜209の間に入っていれば合格、連の長さ「6以上」の頻度が103〜209の間に入っていれば合格と判定することを定める。
従って、ハッシュ評価部30gは、上述した出力値の例えば連続2万ビットにおいて、「1」又は「0」の各々の連の長さ「1,2,3,4,5,6以上」の個数を数え、その頻度が基準テーブル57の合格基準値としての頻度以内であれば合格、頻度以外であれば不合格と判定する。各連の長さが1つのみ(例えば連の長さ=「3」のみ)でも、定められた頻度527〜723に入っていなければ、不合格と判定する。上記全ての連の長さが、各々に定められた頻度に入っていれば、合格と判定する。この出力値の連続2万ビットに基づく、合否の判定動作を、1回のテストとする。
ハッシュ評価部30gは、上記1回のテストを予め定められた回数、例えば320回行い、この320回のテスト結果が、例えば99%以上(319回以上)を満たせば、「連性」テストは合格と判定する。その99%以上も、予め定められた合格基準値である。
次に、「長周期連性」テストについて説明する。「長周期連性」テストは、上述した「連性」テストのサブテストに該当し、20000ビットのような短い系列内に、長い同一ビットの連があることは極めて珍しいので、ある長さ以上の同一ビット(例えば34ビット以上)の連の発生を極度の偏りと判定するテストである。
「連性」テストでは、図4に示す基準テーブル57において、連の長さが6以上の場合の頻度が規定されているが、この際に、ハッシュ評価部30gは、34以上(34ビット以上)の連の長さが1つでもあれば、不合格と判定する。1つもなければ合格と判定する。
前記の合否の判定動作は、出力値の連続2万ビットに基づき行われる場合を、1回のテストとする。
従って、ハッシュ評価部30gは、上記1回のテストを予め定められた回数、例えば320回行い、この320回のテスト結果が、例えば99%以上(319回以上)を満たせば、「長周期連性」テストは合格と判定する。その99%以上も、予め定められた合格基準値である。
次に、「一様性」テストについて説明する。「一様性」テストとは、出力値の一様性を確認するテストである。つまり、このテストでは、出力値を後述のように4ビット毎の多数のブロックに分けて測定するが、各ブロックの値(4ビットなので「0〜15」)は等しく、1/16となれば一様性があると言える。具体的には、各ブロック値が自由度15のカイ(χ)2乗分布に従うことを確認する。
上述した実行ファイルに従って得られる出力値の複数ビットの系列を、例えば4ビットずつの複数個のブロックに区切る。この区切った各ブロックが整数とみなすと、1ブロックが4ビットなので「0〜15」の16パターンになる。この16パターンの各々「0,1,2,…,15」が等頻度で出れば、出力値に一様性があると判定するテストである。
具体的には、ハッシュ評価部30gが、前記の出力値の系列20000ビットを4ビットずつの5000個のブロックに分ける。この5000個の各ブロックは整数とみなすと、4ビットなので「0〜15」を取る。「0〜15」の各数値の度数を、f(i)で表す。iは、0≦i≦15となる。この時、f(i)が、次の(式2)を満たせば合格、満たさなければ不合格と判定する。
Figure 0006170476
このように、「0〜15」の各々の数値の度数の2乗の和を取って、(式2)に当て嵌め、合否を判定する。この合否の判定動作は、出力値の連続2万ビットに基づき行われる場合を、1回のテストとする。
従って、ハッシュ評価部30gは、上記1回のテストを予め定められた回数、例えば320回行い、この320回のテスト結果が、例えば99%以上(319回以上)を満たせば、「一様性」テストは合格と判定する。その99%以上も、予め定められた合格基準値である。
次に、「Avalanche性」テストについて説明する。「Avalanche性」テストとは、入力キーと出力値を排他的論理和した系列において、どの程度のビット反転が発生するかを調べるテスト、換言すれば、入力キーに対し出力値がビット反転したかどうかを調べるテストである。
「Avalanche性」テストは、まず、入力キー生成部30dが、情報設定記憶部30c(図1)から評価パターンとして「Avalanche性」を選択し、この「Avalanche性」テストを行うに必要な入力キーを生成する。
入力キー生成部30dは、1ビット違いの入力キー(例えば入力値a)を生成してファイル実行部30eへ入力し、ファイル実行部30eが、実行ファイルに従って例えば出力値bを得る。入力値aと出力値bとの排他的論理和を取ってbit分布を評価する。この際、排他的論理和の結果において、半分程度のビットが異なっていれば、合格と判定する。
具体的には、ハッシュ評価部30gは、上記のように生成した2つのデータ、例えば、各80000bitsの系列の入力値aと出力値bであって、1<i<80000の関係を有する2つのデータに対して、下記の(式3)の計算を行い、度数分布を評価する。この結果、各80000bitsの系列の半分のビットが異なっていれば、合格と判定する。なお、合格と判定するための「半分のビット」は、予め定められる。
Figure 0006170476
この80000ビットの系列の入力値aと出力値bについて合否を判定するが、この際の合否の判定動作が、1回のテストとする。
従って、ハッシュ評価部30gは、上記1回のテストを予め定められた回数、例えば128回行い、この128回のテスト結果が、例えば99%以上(127回以上)を満たせば、「Avalanche性」テストは合格と判定する。その99%以上も、予め定められた合格基準値である。
次に、「線形複雑度」テストについて説明する。「線形複雑度」テストとは、出力値の乱数列(系列)の線形複雑度の最大値1に対し、線形複雑度が半分程度(0.5程度)であることを調べるテストである。これは、線形複雑度が高すぎると、それを逆手にとり出力値から入力値を推測することが可能になってしまう。そこで、線形複雑度は半分程度がよいといえる。
実行ファイルに従って得られる出力値の乱数列(系列)は、任意の部分列から他の部分列が予測不可能であることが安全上重要となる。一般に乱数列の予測は線形フィードバックシフトレジスタ(LFSR)を用いて行うので、非線形性が強いほど解読し難い。この非線形性の尺度として通常、LFSRのレジスタ段数を用い、これを線形複雑度としている。この線形複雑度が最大値の半分ほどが解読し難く、好ましい。
ここで、線形複雑度を求めるための式を、下記の(式4)〜(式11)に示す。
−1(D)=C(D)=1 …(式4)
−1=L=0 …(式5)
−1=−1 …(式6)
−1=1 …(式7)
Figure 0006170476
(式4)〜(式11)において、C(D)は結線多項式、Dは遅延演算子変数、sは前記の出力値の系列、kは暫定線形複雑度、dは系列の排他的論理和、Lは線形複雑度である。
ハッシュ評価部30gは、線形複雑度をBerlekamp-Masseyのアルゴリズムで求めるが、この際、上述の(式4)〜(式7)で初期設定を行った後、(式8)〜(式11)を実行することにより、(式11)において線形複雑度Lが求められる。この求められた線形複雑度Lが、次の(式12)を満たせば、合格と判定する。但し、(式12)において、N=1000とする。
0.45<L/N<0.55 …(式12)
上記の線形複雑度Lが(式12)を満たした場合の合否の判定動作が、1回のテストとする。
従って、ハッシュ評価部30gは、上記1回のテストを予め定められた回数、例えば128回行い、この128回のテスト結果が、例えば99%以上(127回以上)を満たせば、「線形複雑度」テストは合格と判定する。その99%以上も、予め定められた合格基準値である。
次に、「自己相関」テストについて説明する。「自己相関」とは、ある値がそれ自体をビットシフトした値とどれだけ良く整合するかを測る尺度であり、ビットシフトの大きさの関数として表される。つまり、自己相関テストとは、出力値のそれ自体との相互相関を測るものである。自己相関テストの結果は、半分程度がよいといえる。
入力キー生成部30d(図1)が「自己相関」テストを行うに必要な入力キーを生成する。この入力キーは、例えば、入力値を1bitずつ変更した64bitのキーを、100000パターン(つまり、64bit×10万パターン)を用意する。この入力キーがファイル実行部30eへ入力され、この入力キー(入力値)に対して、実行ファイルに従った出力値が生成され、出力値記憶部30fに記憶される。
ハッシュ評価部30gは、その記憶された出力値(64bit)と、出力値をTbitシフト(1≦T≦10)した系列との排他的論理和を取る。この排他的論理和で得られる系列は、「0,1」が連続する20000ビット(出力値の64bitが約313パターン分)となる。
次に、ハッシュ評価部30gは、その2万ビットの中に「1」となるビットの個数Xが、前述した(式1)を満たすことを判定する。この結果、個数Xが、9725を超え、10275未満であれば、合格と判定される。この判定動作が1回のテストである。
ハッシュ評価部30gは、1回のテストを予め定められた回数、例えば320回行い、この320回のテスト結果が、例えば99%以上(319回以上)を満たせば、「自己相関」テストは合格と判定する。
次に、「相互情報量」テストについて説明する。相互情報量とは、確率論及び情報理論において、2つの確率変数の相互依存の尺度を表す量である。最も典型的な相互情報量の物理単位はビットであり、2を底とする対数が使われることが多い。2つの確率変数の相互依存の尺度が少ない程、好ましい。そこで、「相互情報量」テストは、入力値と出力値との2つの確率変数の相互依存の尺度を確認するテストである。
入力キー生成部30dが「相互情報量」テストを行うに必要な入力キーを生成する。この入力キーは、例えば、入力値を1bitずつ変更した64bitのキーを、16000パターン(つまり、64bit×16000パターン)を用意する。次に、入力キー生成部30dは、16000パターンの入力キーを、16パターンずつに分割する。換言すると、入力キーを、16パターンを1セット(64×16=1024bit)として、16000/16=1000セット用意する。
この1000セットの入力キー(X)を、ファイル実行部30eに入力し、実行ファイルに従って出力値(Y)を、1000セットを得る。
次に、ハッシュ評価部30gは、1000セットの入力キー(X)及び1000セットの出力値(Y)に対して、「0」又は「1」の各ビットの度数を計数し、確率分布に変換する。これらの変換処理について図5及び図6を参照して説明する。
図5は前記の度数を示す行と列の表であり、行に入力キー(X)の「0」又は「1」が設定、列に出力値(Y)の「0」又は「1」が設定されている。なお、入力キー(X)の「0」又は「1」を入力ビット、出力値(Y)の「0」又は「1」を出力ビットともいう。図5では、度数(number)をNで示している。
X=0,Y=0の行列位置に記載のNx,y(0,0)=aは、入力ビットが「0」で出力ビットが「0」であり、変化なしの場合の個数aを示す。
X=0,Y=1の行列位置に記載のNx,y(0,1)=bは、入力ビット「0」が、出力ビット「1」に変化した場合の個数bを示す。
X=0の行におけるY=0とY=1との合計は、Nx(0)=a+bである。この式は、入力キーの1024ビットの内、「0」ビットが何個a+b(例えば510個)あるかを示す。
X=1,Y=0の行列位置に記載のNx,y(1,0)=cは、入力ビット「1」が、出力ビット「0」に変化した場合の個数cを示す。
X=1,Y=1の行列位置に記載のNx,y(1,1)=dは、入力ビットが「1」で出力ビットが「1」であり、変化なしの場合の個数dを示す。
X=1の行におけるY=0とY=1との合計は、Nx(1)=c+dである。この式は、入力キーの1024ビットの内、「1」ビットが何個c+d(例えば514個)あるかを示す。
Y=0の列におけるX=0とX=1との合計は、Ny(0)=a+cである。この式は、出力ビットが「0」だったものが、何個あるかを示す。
Y=1の列におけるX=0とX=1との合計は、Ny(1)=b+dである。この式は出力ビットが「1」だったものが、何個あるかを示す。
X,Y行列の合計度数Nは、N=a+b+c+dであり、510+514=1024となる。
このように、1000セットの入力キー(X)及び1000セットの出力値(Y)に対して、「0」又は「1」の各ビットの度数が計数される。
次に、確率分布に変換する処理を、図6を参照して説明する。図6に示す表も、図5の表と同様に、行に入力キー(X)の「0」又は「1」、列に出力値(Y)の「0」又は「1」が設定されている。図6では、確率(probability)をPで示している。
図6が図5と異なる点は、図5の各々の行列位置に記載の式の右辺の値(a,b,c,dを用いて表記)を、合計度数Nで割って確率分布Px、yを求める式を記載していることである。
即ち、図6のX=0,Y=0の行列位置には、確率分布のPx,y(0,0)=a/Nを記載し、X=0,Y=1の行列位置には、Px,y(0,1)=b/Nを記載し、X=0の行におけるY=0とY=1との合計には、Px(0)=(a+b)/Nを記載している。また、X=1,Y=0の行列位置には、Px,y(1,0)=c/Nを記載し、X=1,Y=1の行列位置には、Px,y(1,1)=d/Nを記載し、X=1の行におけるY=0とY=1との合計には、Px(1)=(c+d)/Nを記載している。
Y=0の列におけるX=0とX=1との合計は、Py(0)=(a+c)/Nである。この式は、出力ビットが「0」だった場合の確率分布を示す。
Y=1の列におけるX=0とX=1との合計は、Py(1)=(b+d)/Nである。この式は出力ビットが「1」だった場合の確率分布を示す。
X,Y行列の合計確率分布Pは、P=1で示すように必ず100%となる。
次に、ハッシュ評価部30gは、上述のように変換した確率分布を用いて、次の(式13)により、相互情報量I(X;Y)を求める。
I(X;Y)=H(X)−H(X|Y)
=−Px(0)logPx(0)−Px(1)logPx(1)
−Py(0)H(X|Y=0)−Py(1)H(X|Y=1)
…(式13)
但し、H(X)は、Xの不確かさを示す。Hはエントロピである。
また、H(X|Y)は、条件付きエントロピであり、Xが発生した上でのYのエントロピを示す。言い換えれば、Yを知って尚且つ残るXの不確かさであり、更には、Yを得るためのXがどれだけ不確定かを示している。
また、上の(式13)のH(X|Y=0)及びH(X|Y=1)を解くためには、下記の(式14)及び(式15)を計算する。
H(X|Y=0)=−Px|y(0|0)logPx|y(0|0)
−Px|y(1|0)logPx|y(1|0) …(式14)
H(X|Y=1)=−Px|y(0|1)logPx|y(0|1)
−Px|y(1|1)logPx|y(1|1) …(式15)
更に、(式14)のPx|y(0|0)及びPx|y(1|0)を解くためには、下記の(式16)及び(式17)を計算し、(式15)のPx|y(0|1)及びPx|y(1|1)を解くためには、後述の(式18)及び(式19)を計算する。(式16)〜(式19)の計算においては、上述で求めた確率分布を用いる。
Px|y(0|0)=Px,y(0,0)/Py(0) …(式16)
Px|y(1|0)=Px,y(1,0)/Py(0) …(式17)
Px|y(0|1)=Px,y(0,1)/Py(1) …(式18)
Px|y(1|1)=Px,y(1,1)/Py(1) …(式19)
次に、ハッシュ評価部30gは、上述のように求めた相互情報量I(X;Y)が、次の(式20)を満たすことを判定する。
I(X;Y)>0.95 …(式20)
ハッシュ評価部30gは、このような相互情報量I(X;Y)が(式20)を満たす判定を行い、この判定が、入力キーの1000セットの内、999セットにおいて満たせば、「相互情報量」テストは合格と判定する。
このように、ハッシュ評価部30gは、8項目全ての評価テストが合格であれば、実行ファイルがCハッシュ関数であると判定する。上述したように評価された8項目のテストの評価結果は、全てが出力値記憶部30fに記憶される。
次に、図1に示す性能測定部30hは、情報設定記憶部30cに記憶されている2項目(「出力値生成速度」及び「出力値生成情報量」)の評価パターンによる実行ファイルの性能測定のテストを行う。このテストは、図2に示すステップS14のハッシュ評価実行の処理にて行われる。
まず、性能測定部30hは、ファイル実行部30eに設定された実行ファイルに対して、情報設定記憶部30cから取得した「出力値生成速度」テストを行う。即ち、実行ファイルが出力値を生成するための生成速度を、[cycle/byte]を単位として測定する。[cycle/byte]は、一般的に、暗号化・復号のためのビット列を生成するキー系列生成処理において、1バイトのデータを暗号化するのに必要とするサイクル数を表す単位である。[cycle/byte]を単位とする出力値生成速度は、値が小さい方が高性能となる。
次に、性能測定部30hは、情報設定記憶部30cから取得した「出力値生成情報量」テストを行う。即ち、実行ファイルが単位時間当たりに出力できる情報量を、「MiB(メビバイト)/s」を単位として測定する。「MiB/s」を単位とする出力値生成情報量は、大きい方が高性能となる。
このように評価された2項目の性能測定結果は、全てが性能測定結果記憶部30h1に記憶される。
評価結果加工部30iは、ハッシュ評価部30gでハッシュ評価された8項目及び2項目の出力値の評価結果を、ユーザが端末機20の画面上で読み取り可能にテキスト表示するためのテキストデータ形式に加工処理する。例えば、8項目の評価結果であれば、図7(a)及び(b)に示すように、項目毎のテストの合格(OK)又は不合格(NG)の結果が、端末機20の図示せぬ画面に表示可能にテキストデータ形式に加工処理される。この加工処理は、図2に示すステップS15の評価結果加工の処理にて行われる。なお、図7(a)には、8項目全てのテストの評価結果がOKである例を示し、(b)には「長周期連性」テストの評価結果がNGである例を示した。
また、評価結果加工部30iは、ハッシュ評価された8項目及び2項目の出力値の評価結果を、ユーザが端末機20の画面上で読み取り可能にグラフィック表示するためのグラフ画像データ形式に加工処理する。例えば、図8に示すように、「0/1等頻度性」テストによる「1」の出現頻度の度数分布を、端末機20の画面に表示可能にグラフ画像データ形式に加工処理する。この加工処理も、図2に示すステップS15の評価結果加工の処理にて行われる。なお、図8には、実行ファイルに従って得られる出力値の連続ビットの中に「1」となるビット数が、980〜1020bitの幅で出現し、1000bitにおいて、23000の度数で出現する例を示した。
なお、図7及び図8に示す画面へのテキスト表示及びグラフ表示は、前述した通り、端末機20の評価結果表示制御部20dが行う。
<実施形態の動作>
次に、本実施形態に係るハッシュ評価システム10によるハッシュ評価処理の動作を、図9及び図10に示すフローチャートを参照して説明する。
最初に、図9に示すステップS101において、ユーザのアカウント情報の登録及び認証処理を行う。まず、ユーザが図1に示す端末機20からアカウント情報の登録要求の操作を行い、これに応じて、端末機20のアカウント要求応答部20bが、図2のステップS1,S2に示すように、アカウント登録要求の情報を評価サーバ30を介して管理サーバ40へ送信する。管理サーバ40は、ステップS3に示すように、そのユーザのアカウント情報を登録し、アカウント登録結果を、ステップS4,S5に示すように評価サーバ30を介して端末機20へ応答送信する。
この応答を受けた端末機20のアカウント要求応答部20bは、ステップS6に示すように、アカウント登録結果を端末機20の画面(図示せず)に表示する制御を行う。この表示を見て登録を確認したユーザは、端末機20からアカウント情報の認証要求の操作を行う。これに応じて、端末機20のアカウント要求応答部20bは、ステップS7,S8に示すように、ユーザのアカウント認証要求の情報を評価サーバ30を介して管理サーバ40へ送信する。
管理サーバ40は、ステップS9に示すように、そのユーザのアカウント情報の認証を行い、アカウント認証結果の応答を、ステップS10,S11に示すように評価サーバ30を介して端末機20へ送信する。この応答を受けた端末機20のアカウント要求応答部20bは、ステップS12に示すように、アカウント認証結果を表示する制御を行う。この表示をユーザが確認する。ここでは、アカウント認証が了承されたとする。
次に、図9のステップS102において、ユーザが端末機20に実装した実行ファイルを、端末機20から評価サーバ30へ送信する。これは、端末機20の実行ファイル送信制御部20cが、図2のステップS13に示すように、実行ファイルの情報を、評価サーバ30へ送信する。
図9のステップS103において、実行ファイルを受信した評価サーバ30は、ファイル実行部30eのファイル記憶部30e1(図3参照)に、実行ファイルを設定する。この際、実行ファイルが、入力値に対して出力値を得る実行形式で無い場合、評価サーバ30から端末機20へ、実行ファイルが登録不可能であることを示すメッセージが返信される。
次に、評価サーバ30は、図2のステップS14に示すハッシュ評価の実行に移行する。この際、管理サーバ40の評価項目実施管理部40cにおいては、該当ユーザIDに、8項目の評価項目(評価パターン)で実行ファイルを評価し、また、実行ファイルの性能測定として2項目の性能測定項目(評価パターン)で評価することが対応付けられて管理されているとする。8項目の評価項目は、「0/1等頻度性」、「連性」、「長周期連性」、「一様性」、「Avalanche性」、「線形複雑度」、「自己相関」、「相互情報量」である。2項目の性能測定項目は、「出力値生成速度」、「出力値生成情報量」である。
なお、端末機20からのユーザの実行ファイルが評価サーバ30で受信された際に、評価サーバ30が受信した実行ファイルのユーザIDを管理サーバ40へ通知し、管理サーバ40から該当ユーザの評価パターンの管理情報が評価サーバ30へ返信されるようになっている。これによって、評価サーバ30は、どの評価パターンでテストを行うかを把握する。
評価サーバ30によるハッシュ評価の実行は、まず、図9のステップS104において、入力キー生成部30dが、ファイル実行部30eに設定された実行ファイルのハッシュ評価をテストするための、評価パターンを情報設定記憶部30cから1つずつ取得する。例えば、最初に、8項目の内の「0/1等頻度性」の評価パターンが取得されたとする。入力キー生成部30dは、「0/1等頻度性」テストを行うに適合した入力キーを生成する。この生成された入力キーは、ファイル実行部30eへ入力される。
図9のステップS105において、ファイル実行部30eは、先に設定された実行ファイルに従って、上記入力された入力キー(入力値)に対して、所定の出力値を生成する。この生成は、前述の「0/1等頻度性」テストで説明したと同様に行われる。また、ファイル実行部30eで生成された出力値は、ステップS106において、出力値記憶部30fに記憶される。
次に、ステップS107において、ハッシュ評価部30gが、その記憶された出力値が「0/1等頻度性」の合格基準を満たして合格するか否かを、前述したように判定する。この1つの評価パターンの合否の結果は、ステップS108において、出力値記憶部30fに記憶される。
ここで、ステップS109において、ハッシュ評価部30gが、予め定められた全ての評価パターンの評価テストが終了したか否かを判定する。
終了した場合は、ステップS110(図10)に進む。終了していない場合は、上記ステップS104に戻って、入力キー生成部30dが、評価テストを行っていない内の次の評価パターンが情報設定記憶部30cから1つ取得される。例えば、「連性」の評価パターンが取得され、以降同様に、ステップS109まで処理を行う。このように、ステップS104〜S108において、8項目全ての評価パターンが取得されて評価テストが行われ、ステップS109において、全ての評価パターンの評価テストが終了したと判定された場合は、図10のステップS110に進む。
ステップS110において、ハッシュ評価部30gは、8項目全ての評価テストが合格であれば、実行ファイルがCハッシュ関数であると判定する。一方、8項目の内、1つの項目でも評価テストが不合格であれば、実行ファイルはCハッシュ関数でないと判定する。これらCハッシュ関数であるか否かの判定結果は、ステップS111において、出力値記憶部30fに記憶される。
次に、ステップS112において、性能測定部30hは、情報設定記憶部30cに記憶されている2項目の評価パターンの一方を取得する。例えば、「出力値生成速度」の評価パターンが取得されたとする。
次に、ステップS113において、性能測定部30hは、ファイル実行部30eに設定された実行ファイルに対して、「出力値生成速度」のテストを行う。即ち、実行ファイルが出力値を生成するための生成速度を、[cycle/byte]を単位として測定する。この測定結果は、性能測定結果記憶部30h1に記憶される。
次に、ステップS114において、性能測定部30hは、全ての性能測定が終了したか否かを判定する。終了していれば、ステップS115へ進む。終了していなければ、上記ステップS112に戻って、次の性能測定のための「出力値生成情報量」を、情報設定記憶部30cから取得し、ステップS113において、実行ファイルが単位時間当たりに出力できる情報量を、「MiB(メビバイト)/s」を単位として測定する。この測定結果は、性能測定結果記憶部30h1に記憶される。
この後、ステップS114において、全ての性能測定が終了したと判定されれば、ステップS115へ進む。なお、ステップS112〜S113の処理は、図2ではステップS14で行われる。
図10のステップS115において、評価結果加工部30iは、ハッシュ評価された8項目及び2項目の評価結果を、端末機20のユーザが読み取り可能なテキストデータ形式又はグラフ画像データ形式に加工処理する。この加工処理された評価結果情報は、送受信部30aにより端末機20へ送信される。この処理は、図2ではステップS15,S16にて行われる。
次に、図10のステップS116において、評価結果情報を受信した端末機20の評価結果表示制御部20dが、図示せぬ画面に図7に示すようなテキスト表示、又は図8に示すようなグラフ表示を行う。この処理は、図2ではステップS17にて行われる。以上の処理によってハッシュ評価処理が終了する。
<実施形態の効果>
以上説明した本実施形態のハッシュ評価システム10は、入力値である入力キーに対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数を実現するものであるか否かを評価するハッシュ評価を行うハッシュ評価サーバ30を備えている。
本発明の特徴は、評価サーバ30が、ハッシュ評価を行うための実行ファイルの評価テストの評価手順としての評価アルゴリズム及び合格基準が定められ、且つ当該評価アルゴリズム及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶する情報設定記憶部30cと、情報設定記憶部30cに記憶された評価パターン毎に適合した入力キーを生成する入力キー生成部30dとを備える。更に、評価サーバ30は、実行ファイルが設定され、入力キー生成部30dで生成された入力キーに対して、当該設定された実行ファイルに従って出力値を生成するファイル実行部30eと、ファイル実行部30eで生成された出力値に対して、当該出力値に対応する入力キーの生成に係わった評価パターンの評価アルゴリズムに基づき評価テストを行い、当該テスト結果が同評価テストの合格基準を満たせば、実行ファイルは所定ハッシュ関数であると評価するハッシュ評価部30gとを備える構成とした。
この構成によれば、情報設定記憶部30cに、実行ファイルの評価テストの評価アルゴリズム及び合格基準が定められ、且つ当該評価アルゴリズム及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶されている。この予め定められた数の評価パターンを用いて、実行ファイルが所定ハッシュ関数であるか否かを評価するハッシュ評価を行うので、一定の基準でハッシュ評価を行うことができる。従って、実行ファイルが所定ハッシュ関数であるか否かの評価を適正に行うことができる。また、従来のように、試験者が評価テスト毎にテストプログラムを作成する必要がないので、労力と時間が掛からない。このため、評価テストのための労務コストを抑えることができる。
また、所定ハッシュ関数は、コンシステントハッシュ法によるハッシュ関数(Cハッシュ関数)であることとした。
この場合、評価サーバ30によって、実行ファイルがCハッシュ関数であることを適正に評価することができる。
また、情報設定記憶部30cに記憶される予め定められた数の評価パターンは、予め規定された、0/1等頻度性、連性、長周期連性、一様性、Avalanche性、線形複雑度、自己相関、相互情報量の8項目の評価パターンであることとした。
この場合、入力キーに対して実行ファイルに従って生成される出力値を、8項目の評価パターンに応じて評価テストする。この際、8項目の評価パターンの各々に適合した8パターンの入力キーが生成される。入力キーを生成する一例として、ビット列が酷似したキー生成を意図的に行う。従って、入力キーに偏りが生じてもなお、出力値に偏りが出ないことを確認することができ、本実施形態では、出力値の分散性が保持できるか否かを適正に評価することができる。
また、情報設定記憶部30cに記憶される予め定められた数の評価パターンは、8項目の評価パターンの内、ユーザが所定数の評価パターンを任意に定めて記憶可能である構成とした。
この構成によれば、ユーザが情報設定記憶部30cに記憶しておく評価パターンを、自分で任意に変更することができる。このため、実行ファイルのハッシュ評価を行うための評価テストの内容を変更する場合に、容易に変更することができる。
また、評価サーバ30は、実行ファイルが出力値を生成するための生成速度を測定すると共に、当該実行ファイルが単位時間当たりに出力できる情報量を測定する性能測定部30hを更に備える構成とした。
この構成によれば、実行ファイルの出力値の生成時間や、出力値の情報量を知ることができるので、ハッシュ評価時の評価サーバ30の処理速度等の性能を評価することができる。
また、評価サーバ30は、ハッシュ評価部30gの評価結果を、ユーザが画面上で読み取り可能にテキスト表示するためのテキストデータ形式に加工処理、又は、ユーザが画面上で読み取り可能にグラフィック表示するためのグラフ画像データ形式に加工処理する評価結果加工部30iを更に備える構成とした。
この構成によれば、ユーザが、実行ファイルのハッシュ評価の評価結果を、画面上で確認することができる。
また、本実施形態のハッシュ評価方法は、評価サーバ30により、入力値に対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数を実現するものであるか否かを評価する。評価サーバ30は、ハッシュ評価を行うための実行ファイルの評価テストの評価アルゴリズム及び合格基準が定められ、且つ当該評価アルゴリズム及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶する情報設定記憶部30cを備えており、情報設定記憶部30cに記憶された評価パターン毎に適合した入力キーを生成する第1ステップと、実行ファイルが設定され、第1ステップで生成された入力キーに対して、当該設定された実行ファイルに従って出力値を生成する第2ステップと、第2ステップで生成された出力値に対して、当該出力値に対応する第1ステップでの入力キーの生成に係わった評価パターンの評価アルゴリズムに基づき評価テストを行い、当該テスト結果が同評価テストの合格基準を満たせば、実行ファイルは所定ハッシュ関数であると評価する第3ステップとを実行する。
この方法によれば、情報設定記憶部30cに、実行ファイルの評価テストの評価アルゴリズム及び合格基準が定められ、且つ当該評価アルゴリズム及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶しておけば、実行ファイルが所定ハッシュ関数か否かのハッシュ評価を一定の基準で行うことができる。従って、実行ファイルが所定ハッシュ関数であるか否かの評価を適正に行うことができる。また、従来のように、試験者が評価テスト毎にテストプログラムを作成する必要がないので、評価テストのための労務コストを抑えることができる。
その他、具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
10 ハッシュ評価システム
20 ユーザ端末機
20a 送受信部
20b アカウント要求応答部
20c 実行ファイル送信制御部
20d 評価結果表示制御部
30 評価サーバ
30a 送受信部
30b アカウント要求応答部
30c 情報設定記憶部
30d ユーザ入力制御部
30d1 ユーザ入力制御部
30e ファイル実行部
30e1 ファイル記憶部
30f 出力値記憶部
30g ハッシュ評価部
30f 出力値記憶部
30h 性能測定部
30h1 性能測定結果記憶部
30i 評価結果加工部
40 アカウント管理サーバ
40a 送受信部
40b アカウント管理処理部
40c 評価項目実施管理部

Claims (8)

  1. 入力値である入力キーに対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数を実現するものであるか否かを評価するハッシュ評価を行うハッシュ評価サーバであって、
    前記ハッシュ評価を行うための前記実行ファイルの評価テストの評価手順及び合格基準が定められ、且つ当該評価手順及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶する記憶部と、
    前記記憶部に記憶された前記評価パターン毎に適合した入力キーを生成する入力キー生成部と、
    前記実行ファイルが設定され、前記入力キー生成部で生成された入力キーに対して、当該設定された実行ファイルに従って出力値を生成するファイル実行部と、
    前記ファイル実行部で生成された出力値に対して、当該出力値に対応する前記入力キーの生成に係わった評価パターンの評価手順に基づき評価テストを行い、当該テスト結果が同評価テストの前記合格基準を満たせば、前記実行ファイルは前記所定ハッシュ関数であると評価するハッシュ評価部と
    を備えることを特徴とするハッシュ評価サーバ。
  2. 前記所定ハッシュ関数は、コンシステントハッシュ法によるハッシュ関数であることを特徴とする請求項1に記載のハッシュ評価サーバ。
  3. 前記情報設定記憶部に記憶される予め定められた数の評価パターンは、0/1等頻度性、連性、長周期連性、一様性、Avalanche性、線形複雑度、自己相関、相互情報量の8項目の評価パターンであることを特徴とする請求項1又は2に記載のハッシュ評価サーバ。
  4. 前記情報設定記憶部に記憶される予め定められた数の評価パターンは、前記8項目の評価パターンの内、ユーザが所定数の評価パターンを任意に定めて記憶可能であることを特徴とする請求項3に記載のハッシュ評価サーバ。
  5. 前記実行ファイルが前記出力値を生成するための生成速度を測定すると共に、当該実行ファイルが単位時間当たりに出力できる情報量を測定する性能測定部を
    更に備えることを特徴とする請求項1〜4の何れか1項に記載のハッシュ評価サーバ。
  6. 前記ハッシュ評価部の評価結果を、ユーザが画面上で読み取り可能にテキスト表示するためのテキストデータ形式に加工処理、又は、ユーザが画面上で読み取り可能にグラフィック表示するためのグラフ画像データ形式に加工処理する評価結果加工部を
    更に備えることを特徴とする請求項1〜5の何れか1項に記載のハッシュ評価サーバ。
  7. 請求項1〜6の何れか1項に記載のハッシュ評価サーバを備えることを特徴とするハッシュ評価システム。
  8. 入力値に対して出力値を得る実行が可能な実行ファイルが、予め定められた所定ハッシュ関数を実現するものであるか否かを評価するハッシュ評価を行うハッシュ評価サーバのハッシュ評価方法であって、
    前記ハッシュ評価サーバは、
    前記ハッシュ評価を行うための前記実行ファイルの評価テストの評価手順及び合格基準が定められ、且つ当該評価手順及び合格基準が各々異なる評価パターンを予め定められた数だけ記憶する記憶部を備えており、
    前記記憶部に記憶された前記評価パターン毎に適合した入力キーを生成する第1ステップと、
    前記実行ファイルが設定され、前記第1ステップで生成された入力キーに対して、当該設定された実行ファイルに従って出力値を生成する第2ステップと、
    前記第2ステップで生成された出力値に対して、当該出力値に対応する前記第1ステップでの前記入力キーの生成に係わった評価パターンの評価手順に基づき評価テストを行い、当該テスト結果が同評価テストの前記合格基準を満たせば、前記実行ファイルは前記所定ハッシュ関数であると評価する第3ステップと
    を実行することを特徴とするハッシュ評価方法。
JP2014161649A 2014-08-07 2014-08-07 ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法 Active JP6170476B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014161649A JP6170476B2 (ja) 2014-08-07 2014-08-07 ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014161649A JP6170476B2 (ja) 2014-08-07 2014-08-07 ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法

Publications (2)

Publication Number Publication Date
JP2016038469A JP2016038469A (ja) 2016-03-22
JP6170476B2 true JP6170476B2 (ja) 2017-07-26

Family

ID=55529583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014161649A Active JP6170476B2 (ja) 2014-08-07 2014-08-07 ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法

Country Status (1)

Country Link
JP (1) JP6170476B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006318092A (ja) * 2005-05-11 2006-11-24 Canon Inc 乱数生成エージェント
JP4546339B2 (ja) * 2005-06-29 2010-09-15 キヤノン株式会社 乱数生成装置及び乱数生成方法
JP4762166B2 (ja) * 2007-02-09 2011-08-31 株式会社東芝 乱数検査装置およびその検査方法

Also Published As

Publication number Publication date
JP2016038469A (ja) 2016-03-22

Similar Documents

Publication Publication Date Title
Hussain et al. A group theoretic approach to construct cryptographically strong substitution boxes
Killmann et al. A proposal for: Functionality classes for random number generators
Özkaynak Cryptographically secure random number generator with chaotic additional input
CN103713879B (zh) 基于光子到达时间的无偏高速量子随机数发生器
EP3229221B1 (en) Device and method for testing a physically unclonable function
JP2013242584A (ja) 暗号乱数発生器にシードを与えるための方法及び装置
Boriga et al. A New One‐Dimensional Chaotic Map and Its Use in a Novel Real‐Time Image Encryption Scheme
CN105656898B (zh) 一种基于多维度信息的激活码数据处理系统及方法
AU2018282486A1 (en) Systems and methods for generating random numbers using physical variations present in material samples
JP6585018B2 (ja) 認証サーバ、認証システムおよび認証方法
JP6743702B2 (ja) Macタグリスト生成装置、macタグリスト検証装置、macタグリスト生成方法、macタグリスト検証方法およびプログラム
JP6372295B2 (ja) 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置
JP6170476B2 (ja) ハッシュ評価サーバ、ハッシュ評価システム及びハッシュ評価方法
Plesch et al. Device-independent randomness amplification with a single device
Gaglio et al. A TRNG exploiting multi-source physical data
Zakaria et al. Modified A5/1 Based Stream Cipher For Modified A5/1 Based Stream Cipher For Secured GSM Communication Communication
JP2014007705A (ja) サイドチャネル評価装置及びサイドチャネル評価方法
CN107886463A (zh) 一种基于Chen系统和细胞自动机的数字图像加密方法
CN107646130A (zh) 用于生成电子电路固有的值的方法、生成该值的电子电路以及用于使用这样的值的方法
Srinivasan et al. Measuring diffusion in stream ciphers using statistical testing methods
JP5794638B2 (ja) サイドチャネル評価装置及びサイドチャネル評価方法
EP3563229A1 (en) Method for environmental resistant true random number generation
Hoang et al. Enhancing block cipher security with key-dependent random XOR tables generated via hadamard matrices and Sudoku game
Sajjad et al. SPN based RGB image encryption over Gaussian integers
Marinakis Design and evaluation of random number generators

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160921

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170612

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170630

R150 Certificate of patent or registration of utility model

Ref document number: 6170476

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150