(57)【要約】【課題】それぞれ暗号化された異なる数値データの大小比較を行うこと。【解決手段】数値としての文書とその識別子を入力値として導出鍵を算出すると共に上記識別子、文書を入力値とした計算により上記文書を暗号化した識別子毎暗号文を生成する暗号化装置５１０と、導出鍵および平文を入力値として第２のハッシュ関数による計算を行うことにより平文と他の平文との大小比較判定用の値である相対値を生成すると共に、導出鍵、識別子、および相対値とを入力値とした計算により上記相対値を暗号化した相対値暗号文を生成し、識別子毎暗号文と相対値暗号文から成る文字列を文書暗号文として生成し、他の暗号文とこれに対する識別子とが入力されたときに上記第２のハッシュ関数による計算により、異なる暗号文それぞれに対応した相対値を復元しこの相対値の大小比較を行うことにより、暗号化された異なる平文の大小判定を行う比較部５１３を備えた。【選択図】図１
2013005505.tif 000002
【特許請求の範囲】
【請求項１】
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出部と、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成部と、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値ｅ，ｅ’を生成する相対値生成部と、
前記導出鍵および前記識別子と前記相対値とを入力値として前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文隠蔽部とを具備すると共に、
前記識別子別暗号文と前記相対値暗号文とから成る文字列を前記平文に対する暗号文として生成し出力する暗号文生成出力機能を備えていることを特徴とした暗号化装置。
【請求項２】
請求項１に記載の暗号化装置において、
前記識別子別暗号文生成手段は、ある整数ｎについて、１からｎまでの任意の整数ｋに関して、前記導出鍵のｋ番目のブロックと前記識別子とから前記識別子別暗号文のｋ番目のブロック値を生成する機能を有し、
前記相対値生成部は、前記識別子別暗号文が有するｎ個の各データブロック列それぞれの値に対応したｋ番目のブロック値を、前記相対値として生成する相対値生成機能を備えていることを特徴とした暗号化装置。
【請求項３】
請求項１に記載の暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込む比較処理装置とを備え、
この比較処理装置が、
前記第１および第２の各暗号文それぞれに対応して設定された前記識別子および導出鍵を入力値として前記第２のハッシュ関数に基づく計算を行い前記各平文に対応した前記相対値ｅ，ｅ’を各別に復元する相対値復元部と、
前記異なる平文それぞれに対応した相対値の大小比較を行うことにより前記異なる平文の大小判定を行う大小比較判定機能を備えた相対値比較判定部とを有することを特徴とした暗号文比較システム。
【請求項４】
請求項３に記載の暗号文比較システムにおいて、
前記比較処理装置の比較部は、前記識別子別暗号分ｃ，ｃ’におけるカウンタ値で異なる値が最初に現れるカウンタ値ｊを最大不一致カウンタ値ｊとして特定する最大不一致カウンタ決定部を、予め装備すると共に、
前記比較部の相対値復元部は、各相対値ｅ，ｅ’の復元に際しては、前記最大不一致カウンタ値ｊおよび各相対値を含む前記第２のハッシュ関数にかかる相対値暗号文の関数の成立有無を判定すると共に、当該関数が成立する場合の当該各相対値ｅ，ｅ’の組を生成すると共に、これを復元した相対値として出力することを特徴とした暗号文比較システム。
【請求項５】
請求項４に記載の暗号文比較システムにおいて、
前記相対値比較判定部は、
前記相対値復元部から出力される識別子ＩＤの相対値ｅと識別子ＩＤ’の相対値ｅ’との差を演算する相対値差演算機能と、
識別子ＩＤの文書Ｍが識別子ＩＤ’の文書Ｎよりも大きいと判定された場合に「文書Ｍ＞文書Ｎ」を示す判定結果の記号として「０」を出力すると共に、識別子ＩＤ’の文書Ｎが識別子ＩＤの文書Ｍより大きいいと判定された場合に「文書Ｎ＞文書Ｍ」を示す判定結果の記号として「１」を出力する判定結果出力機能とを備えていることを特徴とした暗号文比較システム。
【請求項６】
異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出し、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成し、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成し、
前記導出鍵，前記識別子，及び前記相対値を入力値として前記第２のハッシュ関数による計算にて前記相対値を暗号化した相対値暗号文を生成し、
前記識別子別暗号文と前記相対値暗号文から成る文字列を、前記平文の暗号文として生成して出力すると共に、
上記各工程内容を前記暗号文比較システムが備えている暗号化装置が実行し、
前記他の平文に対応して生成した第２の暗号文と前記第１の暗号文とを入力として受けた場合に、前記第１および第２の暗号文それぞれにおける識別子および導出鍵に基づく前記第２のハッシュ関数による計算にて前記平文および前記他の平文それぞれに対応した前記相対値を復元し、
前記平文と前記他の平文のそれぞれに対応した相対値の大小比較を行うことにより前記平文の大小判定を行うようにし、
これら各処理工程を前記暗号文比較システムが備えている比較処理装置が実行するようにしたことを特徴とする暗号文比較方法。
【請求項７】
異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出機能、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成機能、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成する相対値生成機能、
前記導出鍵及び前記識別子と前記相対値とを入力値とした前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文生成機能、
および前記識別子別暗号文と前記相対値暗号文から成る前記平文と他の平文とについてその大小比較判定用の各文字列を生成する暗号文生成機能、
を設け、これらの各機能を前記暗号化装置が備えているコンピュータに実現させるようにしたことを特徴とする暗号文比較プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、数値データの暗号化を行う暗号化装置に関し、特に、暗号化装置により暗号化した異なる数値データの大小評価するための暗号文比較システムに関する。
【背景技術】
【０００２】
データベースには検索対象としての多数の数値データが記憶されており、データベースシステムでは、利用者からの要求に対する数値データの検索、抽出等の処理を行う。【０００３】
例えば、社外秘の数値データを記憶管理するデータベースにおいては、正規ユーザ以外の第３者ユーザに対するデータの漏洩等を抑制するために、データベースに記憶された数値データを暗号化している。データベースの構成要素である各数値データが暗号化されている場合、第３者ユーザに対しては、元の数値データそのものを、ある程度隠匿することは可能である。【０００４】
しかしながら、例えば、数値データが暗号化された暗号文Iについて、暗号化された他の暗号文IIと比べた場合、両暗号文に含まれる文字列を比較することにより、暗号文IおよびIIのそれぞれに対応する元の数値データの大小関係の判別ができてしまうという不都合がある。
また、様々な比較対象データを利用して大小関係の比較処理を繰り返し行うことにより、暗号化に利用された鍵に関する知識を全く持たない利用者からでも、暗号文に対応する数値データそのものが特定されてしまうという不都合がある。【０００５】
具体的には、様々な属性を持つタプルの集合であるテーブル情報（表）を有するデータベースシステムの運用において、ユーザから特定の属性を有する、ある数より大きい（あるいは小さい）数値のタプルを抽出することが要求された場合に、データベースシステム側では、暗号化に使われた鍵を知らずとも、暗号化された数値の大小を判定することが可能であるため、利用者の要求に応えることができる。【０００６】
また、数値データが暗号化されたタプルで対象の暗号文と他の暗号文とに含まれる接頭における一定数の文字列の一致を知ることができる場合、暗号文の大小を直接判別することができない場合がある。
この場合、暗号文に含まれる接頭の文字列が一致する候補となるタプルの暗号文をテーブル情報から全て抽出しなければならず、所望の数値データを確実に抽出することができない。【０００７】
更に、データベースにおけるテーブル情報では、暗号化の前後でデータの順序が保存されるため、暗号文から平文の数値の大きさが推察されてしまうといった不都合がある。【０００８】
これに対する公知の関連技術として、データベースに格納された数値データの暗号化を行う手法が知られている（非特許文献１）。この公知の関連技術では、平文としてのある数値Ｍと鍵Ｋとが与えられたとき、暗号文Ｃはある暗号化関数ＥＮＣを用いて、Ｃ＝ＥＮＣ（Ｋ、Ｍ）として生成される。
また、このとき２つの数ＭとＭ’（任意のＭ＞Ｍ’とする）に関して、ＥＮＣ（Ｋ、Ｍ）＞ＥＮＣ（Ｋ、Ｍ’）が成り立つ。【０００９】
すなわち、Ｃ＝ＥＮＣ（Ｋ、Ｍ）と、Ｃ’＝ＥＮＣ（Ｋ、Ｍ’)とが与えられると、ＣやＣ’を復号することなく、ＭおよびＭ’の大小関係を判別することができる。【００１０】
又、暗号化された数値の大小比較方法として、非特許文献２に開示されている手法が知られている。
この非特許文献２に開示されている手法は、共通鍵暗号の一種であるが、これは、Ｍ＝（ｂ［１］，・・・，ｂ[Ｎ]）のように、複数のブロックに分割して表現される平文である文書Ｍ（１００）を暗号化して、Ｃ＝（Ｃ［１］，Ｃ［２］，・・・，Ｃ[ｎ]）のように複数のブロックからなる暗号文１０１を生成するもので、図８乃至図９に、その内容が開示されている。【００１１】
この場合、比較される二つの平文が、もし最初のｋ個まで同一である場合、それらの暗号文も最初のｋ個までのブロックは等しいものとなる。このため、部分的な一致を暗号文のまま判別できてしまうため、あるｋに関して最初のｋ個のブロックが二つの平文で一致するとき、一致する接頭がある、あるいはｋ個の接頭が一致する。【００１２】
また、図８にあって、鍵Ｋ１０５、平文としての文書Ｍ１００が、Ｍ＝（ｂ［１］，・・・，ｂ[Ｎ])として与えられたとき、この非特許文献２では、暗号文Ｃ１０１を生成する暗号方式が開示されている。ここで、Ｃ[０]＝０とする。【００１３】
そして、この関連技術では、ｉ＝1，２，・・・，Ｎに関してｂ［ｉ］を選び出し、鍵Ｋ１０５と暗号文のｉ−１番目のブロック１０７も併せて利用し、ハッシュ関数等で実現される導出装置１０４を再帰的に用いて、暗号文のｉ番目のブロックＣ［ｉ］１０６をハッシュ関数（Ｈａｓｈ）を利用して計算する。【００１４】
ここで、Ｃ［ｉ］＝Ｈａｓｈ（Ｋ、（Ｃ［ｉ−１］、ｂ［ｉ］））とする。
又、暗号文Ｃ１０１を、Ｃ＝（Ｃ［１］，・・・，Ｃ［Ｎ]）とする。【００１５】
更に、暗号文Ｃの最初のｋ個のブロックを、Ｃの接頭ｋブロックと呼びＣ［ｋ］で表すと、
Ｃ［ｋ］＝（Ｃ［１］，・・・，Ｃ［ｋ]）となる。【００１６】
ここで、本暗号方式を使って暗号文の順序を比較する。
特に複数の数の暗号文の集合から、ある数値ａより小さな数の暗号文を復号することなく全て選び出したい場合、あるｋに関して、ａより小さな数とｋ個の接頭が一致するが、ａより大きな数とはｋ個の接頭は一致しない数の、暗号文Ｃの接頭ｋブロックＣ［ｋ］全ての集合を、Ｐ（ａ）とする。【００１７】
そして、この集合の大きさはａより小さい数の個数より小さい鍵を保持するものがＰ（ａ）を生成して、複数の暗号文の集合を保持するものに渡せば、後者は暗号文を復号することなく、その所持する暗号文の集合から、ａより小さな数の暗号文を選び出すことが可能となってしまう。
【先行技術文献】
【非特許文献】
【００１８】
【非特許文献１】AlexandraBoldyreva, Nathan Chenette, Younho Lee, Adam O'Neill: Order-PreservingSymmetric Encryption. EUROCRYPT 2009: 224-241
【非特許文献２】GeorgiosAmanatidis, Alexandra Boldyreva, Adam O'Neill: Provably-Secure Schemes forBasic Query Support in Outsourced Databases. DBSec 2007: 14-30
【発明の概要】
【発明が解決しようとする課題】
【００１９】
しかしながら、上記非特許文献１に開示された関連技術では、正規の利用者からの数値データ要求がない場合でも、暗号化されたデータをデコードすることなくその平文データの大小比較を行うことができてしまう。
このため、データベースにおける数値データが適切に暗号化されている場合でも、数値データに対する不正な検索処理や、データベースにおける特定の数値データが取得され、これにより、データベースの数値データが漏洩してしまうという不都合がある。【００２０】
また、上記非特許文献２では、異なる暗号文の接頭が一致することは、暗号化のための鍵を保持せずとも（つまり、暗号化のための鍵を知らなくても）、暗号文同士を比較することができるため、これをデータベースに対して利用した場合、データベースから接頭の文字列が一致する数値データが漏洩してしまうという不都合が生じ得る。【００２１】
［発明の目的］
本発明は、上記関連技術の有する不都合を改善し、暗号化された数値データの隠匿性を維持しつつ元の数値データの大小判定を行うことを可能とする暗号化装置、暗号文比較システム、暗号文比較方法、暗号文比較プログラムを提供することを、その目的とする。
【課題を解決するための手段】
【００２２】
上記目的を達成するために、本発明に係る暗号化装置は、数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出部と、前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成部と、前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成する相対値生成部と、前記導出鍵および前記識別子と前記相対値とを入力値として前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文隠蔽部３０７とを具備すると共に、前記識別子別暗号文と前記相対値暗号文とから成る文字列を前記平文に対する暗号文として生成し出力する暗号文生成出力機能５０６Ａを備えていることを特徴としている。【００２３】
また、上記目的を達成するために、本発明にかかる暗号文比較システムは、上気した暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込む比較処理装置とを備え、
この比較処理装置が、前記第１および第２の各暗号文それぞれに対応して設定された前記識別子および導出鍵を入力値として前記第２のハッシュ関数に基づく計算を行い前記各平文に対応した前記相対値ｅ，ｅ，  を各別に復元する相対値復元部と、前記異なる平文それぞれに対応した相対値の大小比較を行うことにより前記異なる平文の大小判定を行う大小比較判定機能を備えた相対値比較判定部とを有することを特徴としている。【００２４】
又、上記目的を達成するために、本発明にかかる暗号文比較方法は、異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出し、前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成し、前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成し、前記導出鍵，前記識別子，及び前記相対値を入力値として前記第２のハッシュ関数による計算にて前記相対値を暗号化した相対値暗号文を生成し、前記識別子別暗号文と前記相対値暗号文から成る文字列を、前記平文の暗号文として生成して出力すると共に、上記各工程内容を前記暗号文比較システムが備えている暗号化装置が実行し、
前記他の平文に対応して生成した第２の暗号文と前記第１の暗号文とを入力として受けた場合に、前記第１および第２の暗号文それぞれにおける識別子および導出鍵に基づく前記第２のハッシュ関数による計算にて前記平文および前記他の平文それぞれに対応した前記相対値を復元し、前記平文と前記他の平文のそれぞれに対応した相対値の大小比較を行うことにより前記平文の大小判定を行うようにし、
これら各処理工程を前記暗号文比較システムが備えている比較処理装置が実行するようにしたことを特徴としている。【００２５】
又、本発明にかかる暗号文比較プログラムは、異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出機能、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成機能、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成する相対値生成機能、
前記導出鍵及び前記識別子と前記相対値とを入力値とした前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文生成機能、
および前記識別子別暗号文と前記相対値暗号文から成る前記平文と他の平文とについてその大小比較判定用の各文字列を生成する暗号文生成機能、
を設け、これらの各機能を前記暗号化装置が備えているコンピュータに実現させるようにしたことを特徴としている。
【発明の効果】
【００２６】
本発明は、以上のように構成され機能するので、これによると、平文としての数値データと鍵情報から数値データの相対値を生成する手段と、異なる暗号文それぞれに対応した相対値を復元する手段とを備えた構成としたことにより、暗号化された平文である異なる数値データの隠匿性を維持しつつ数値データの大小比較を行うことを可能とする暗号化装置、暗号文比較システム、暗号文比較方法、暗号文比較プログラムを提供することができる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態にかかる暗号文比較システムの一実施形態を示すブロック図である。
【図２】図１に開示した暗号文比較システムにおける暗号化装置（装置Ａ）の導出鍵生成機能の動作内容を示す説明図である。
【図３】図１に開示した暗号文比較システムにおける暗号化装置（装置Ａ）の暗号文生成機能の動作内容を示す説明図である。
【図４】図１に開示した暗号文比較システムにおける比較処理装置（装置Ｂ）の比較判定部の動作内容を示す説明図である。
【図５】図１に開示した暗号文比較システムにおける導出鍵を生成するための動作処理ステップを示すフローチャートである。
【図６】図１に開示した暗号文比較システムにおける暗号文を生成するための動作処理ステップを示すフローチャートである。
【図７】図１に開示した暗号文比較システムにおける相対値を復元し比較する動作処理ステップを示すフローチャートである。
【図８】図１に開示した暗号文比較システムの公知の関連技術における暗号文を生成処理するためのブロック図である。
【図９】図１に開示した暗号文比較システムの公知の関連技術における暗号文を生成する動作内容を示すフローチャートである。
【発明を実施するための形態】
【００２８】
［実施形態］
次に、本発明に係る暗号文比較システムの実施形態を、図１乃至図７に基づいて説明する。
最初に、本実施形態における基本形な構成内容を説明し、その後に具体的内容を説明する。
【００２９】
図１乃至図４に示すように、本実施形態における暗号文比較システムは、暗号化対象の数値データである文書Ｍ（平文）５０２，この文書Ｍ５０２に対応して設定された識別子ＩＤ５０３，および文書５０２を暗号化する際に利用するマスターデータキーである主鍵５０１を入力項目として取得したときに、これらに基づき上記文書Ｍ５０２を暗号化した暗号文Ｃ５０８を生成する暗号化装置（装置Ａ）５１０と、この暗号化装置５１０から送り込まれた暗号文Ｃ５０８と予め設定された他の暗号文Ｃ’５１２とを取得した場合に暗号文Ｃ５０８の平文である文書（Ｍ）５０２と暗号文５１２の平文である文書（Ｎ）との大小比較処理を行う比較処理装置（装置Ｂ）５１４とを備えた構成を有する。
【００３０】
ここで、暗号文Ｃ’５１２は、当該暗号文Ｃ’５１２に対応して予め設定された識別子ＩＤ’５１１と共に、比較処理装置（装置Ｂ）５１４に外部入力されるものとする。
【００３１】
上記装置Ａ５１０および装置Ｂ５１４は、それぞれＣＰＵ（中央演算部）、半導体メモリなどの主記憶部およびＨＤＤなどの記憶装置を備え、プログラム制御によってデータ処理を行うサーバ装置や端末装置などのコンピュータであるものとする。
又、この装置Ｂは大小比較処理の判定結果を出力表示するためのディスプレイ装置を備えているものとする。
尚、この暗号文比較システムは、上記装置Ａおよび装置Ｂの実行内容を単一のコンピュータにより実現するように構成してもよい。
【００３２】
暗号化装置（装置Ａ）５１０は、図１に示すように、利用者により入力された主鍵５０１および文書Ｍ５０２に基づき導出鍵５０５を生成する導出鍵生成部５０４と、利用者により外部入力される主鍵５０１，文書５０２，識別子ＩＤ５０３と、導出鍵生成部５０４によって生成された導出鍵５０５とに基づき文書Ｍ５０２に対応する暗号文５０８を生成する暗号文生成部５０６を備えている。
【００３３】
この装置Ａ５１０の暗号文生成部５０６は、図３に示すように、入力された値に基づき第１のハッシュ関数（Ｈａｓｈ）を利用した計算を行うことにより識別子別暗号文ｃを算出する識別子別暗号文生成部３０３と、第２のハッシュ関数（Ｈａｓｈ３）を利用した計算を行うことにより相対値ｅ３０６を算出する相対値生成部３０５と、相対値ｅ３０６を第２のハッシュ関数（Ｈａｓｈ３）を利用した暗号化を行うことにより相対値暗号文ｆ３０８を生成する相対値隠蔽部３０７とを備え、上記算出された識別子別暗号文ｃ３０４および相対値暗号文ｆ３０８から成る暗号文Ｃを生成し出力する暗号文生成出力部５０６Ａとを備えている。
【００３４】
尚、装置Ａ５１０に対して入力される各文書（例えば、文書Ｍ）には、それぞれに対応した識別子ＩＤが割り当てられているものとする。以下、識別子ＩＤと文書Ｍの組を（ＩＤ，Ｍ）とする。
【００３５】
以下、これを詳説する。
暗号化装置（装置Ａ）５１０の導出鍵生成部５０４は、入力された文書Ｍを二進展開する。これにより、文書Ｍは、下記に示す（式１）の形式で表される。
Ｍ＝Σｉ＝１ｎｂ［ｉ］２ｉ  ・・・（式１）
尚、この（式１）におけるｎは文書Ｍのビット長を示すものとする。
ここで、（式１）におけるｂ［ｉ］を、ｂ［ｉ］∈｛０，１｝とする。また、文書Ｍは、Ｍ＝（ｂ［１］，ｂ［２］，・・・，ｂ［ｎ］）、であるものとする。
【００３６】
次に、暗号化装置（装置Ａ）５１０の内部構成について説明する。
この装置Ａ５１０には、予め設定されたハッシュ関数である第１のハッシュ関数（Ｈａｓｈ）、第２のハッシュ関数（Ｈａｓｈ３）が記憶されているものとする（図示なし）。ここで、Ｈａｓｈ、Ｈａｓｈ３はそれぞれｋを安全変数として以下に示す式２，３として表される。
Ｈａｓｈ：｛０，１｝ｋ×｛０，１｝*  →  ｛０，１｝ｋ  ・・・（式２）
Ｈａｓｈ３：｛０，１｝ｋ×｛０，１｝*  →  ｛０，１，２｝  ・・・（式３）
ここで、K∈｛０，１｝ｋを主鍵とする。
【００３７】
（導出鍵生成機能）
ここで、暗号化装置（装置Ａ）５１０の導出鍵生成部５０４が導出鍵Ｄ５０５を生成する機能（導出鍵生成機能）を、図２に基づいて説明する。
この図２では、導出鍵生成部５０４に対して、主鍵Ｋ５０１、文書Ｍ５０２が入力値として送り込まれた場合を示している。
【００３８】
このとき、文書Ｍ５０２は、Ｍ＝（ｂ［１］，ｂ［２］，・・・，ｂ［ｎ］）、として表されるものとする。
また、導出鍵Ｄは、Ｄ＝（ｄ［１］，ｄ［２］，・・・，ｄ［ｎ］）、として表されるものとする。
【００３９】
導出鍵生成部５０４は、上記第１のハッシュ関数（Ｈａｓｈ）を利用してｄ［０］を算出する。ここでは、ｄ［０］＝Ｈａｓｈ（Ｋ，０）とする。
【００４０】
また、導出鍵生成部５０４は、カウンタｉ＝１，２，・・・，ｎについて、１，２，・・・と昇順にｂ［ｉ］を選出する（ｉを対象カウンタとする）ｂ［ｉ］選出部５０４Ａを有すると共に、既に算出された導出鍵Ｄの接頭ブロックに含まれる（ｉ−１）番目のブロックの値と主鍵Ｋ５０１（図２）とを取得し、これに基づきハッシュ関数を利用した計算（以下に示す式４）を行うことにより導出鍵のｉ番目のブロックの値を算出するブロック値導出機能５０４Ａと、これを導出鍵Ｄとして出力する導出鍵出力機能５０４Ｃとを有する。
【００４１】
ｄ［ｉ］＝Ｈａｓｈ〔Ｋ，（ｄ［ｉ−１］，ｂ［ｉ］）〕  ・・・（式４）
【００４２】
この導出鍵生成部５０４は、対象カウンタが文書Ｍ５０２のビット長ｎと等しい値になった場合に（ｎ＝ｉ）、生成した導出鍵Ｄを出力する。
この場合、対象カウンタｉの値が文書Ｍ５０２のビット長ｎより小さい場合（ｉ＜ｎ）、導出鍵生成部５０４は、メモリ上に格納された導出鍵バッファ（図示せず）からｄ［ｉ−１］の値５０７を入力値として取得し、上記（式４）に基づいて対象カウンタの値を導出する（導出機能：再帰中の第ｉ回目の動作／導出鍵出力機能５０４Ｃ）。
これを１〜ｉ回目まで再帰的に実行することにより、導出鍵を構成するｉ番目のブロックｄ［ｉ］それぞれを算出し、上記した導出鍵Ｄを生成する。
【００４３】
（暗号文生成機能）
次に、上記暗号化装置５１０の暗号文生成部５０６が、主鍵Ｋ５０１，文書Ｍ５０２，および導出鍵Ｄ５０５を入力値として与えられた場合の暗号文Ｃ５０８を生成する機能（暗号文生成機能）について、図３に基づき説明する。
ここで、導出鍵Ｄ５０５，文書Ｍ５０２は、それぞれ、
導出鍵Ｄ５０５＝（ｄ［１］，ｄ［２］，・・・，ｄ［ｎ］）、
文書Ｍ５０２＝（ｂ［１］，ｂ［２］，・・・，ｂ［ｎ］）、
であるものとする。
【００４４】
この暗号文生成部５０６は、暗号化装置５１０の要部を成すもので、図３に示すように、暗号化された識別子（識別子別暗号文）ｃを生成する識別子別暗号文生成部３０３と、平文と他の平文との大小比較判定用の値である相対値ｅを生成する相対値生成部３０５と、生成された相対値ｅに基づいてカウンタ値１〜ｎそれぞれに対応した相対値暗号文ｆを算出する相対値隠蔽部３０７と、前記識別子別暗号文ｃと前記相対値暗号文ｆとから成る文字列を前記平文に対する暗号文として生成する暗号文生成出力機能５０６Ａとを備えている。
この内、識別子別暗号文生成部３０３は、入力値として与えられた識別子ＩＤ（図１の識別子ＩＤ５０３に対応）および導出鍵Ｄに基づき、第１のハッシュ関数（Ｈａｓｈ）を利用した計算を行うことにより識別子別暗号文ｃ３０４を算出する。
ここで、識別子別暗号文ｃ３０４を構成するｃ［ｉ］は、カウンタｉ＝１，２，・・・，ｎ、について、ｃ［ｉ］＝Ｈａｓｈ（ＩＤ，ｄ［ｉ］）と表される。
【００４５】
また、相対値生成部３０５は、入力値として与えられた主鍵Ｋ５０１，文書Ｍ５０２，および導出鍵Ｄ５０５に基づき、第２のハッシュ関数（Ｈａｓｈ３）を利用した計算を行うことにより、相対値ｅ３０６を算出する。
ここで、相対値ｅ３０６を構成するｅ［ｉ］は、カウンタｉ＝１，２，・・・，ｎについて、ｅ［ｉ］＝Ｈａｓｈ３（０，Ｋ，ｄ［ｉ−１］）＋ｂ［ｉ］ｍｏｄ３と表される。
【００４６】
更に、相対値隠蔽部３０７は、入力された識別子ＩＤ，導出鍵Ｄ，および相対値生成部３０５で生成される相対値ｅ３０６に基づき、第２のハッシュ関数（Ｈａｓｈ３）を利用した計算（式６）により、カウンタ値１〜ｎそれぞれに対応したｆ［ｉ］からなる相対値暗号文ｆ３０８を算出する。
【００４７】
ここで、導出鍵Ｄは、識別子ＩＤに対応して生成されたものとする。また、相対値暗号文ｆを構成するｆ［ｉ］は、カウンタｉ＝１，２，・・・，ｎ、について、
ｆ［ｉ］＝Ｈａｓｈ３（１，ＩＤ，ｄ［ｉ−１］）＋ｅ［ｉ］ｍｏｄ３  ・・・（式６）、と表されるものとする。
【００４８】
また、前述した暗号文生成部５０６は、カウンタｉ＝１，２，・・・，ｎのそれぞれに対応して算出された識別子別暗号文ｃ３０４および相対値暗号文ｆ３０８から成る暗号文Ｃ５０８を生成する。
尚、この暗号文Ｃ５０８は、
Ｃ＝〔（ｃ［１］，ｃ［２］，・・・ｃ［ｎ］），（ｆ［１］，ｆ［２］，・・・，ｆ［ｎ］）〕と表される。
【００４９】
次に、比較処理装置（装置Ｂ）５１４の内部構成について説明する。
この比較処理装置（装置Ｂ）５１４は、図１に示すように、暗号化装置Ａ５１０から入力された暗号文Ｃ５０８，識別子ＩＤ５０３，および導出鍵Ｄ５０５を取得し、暗号文Ｃ５０８と予め入力されたＩＤ’の暗号文（Ｃ’とする）それぞれに対応する平分の大小比較を行う比較部５１３を備えている。
【００５０】
この比較部５１３は、図４に示すように、暗号文Ｃ’に対応した識別子である識別子ＩＤ’５１１と識別子ＩＤ５０３に基づき生成されて成る導出鍵Ｄ４０３に基づいて生成したカウンタ値と、文書Ｎに対応した識別子別暗号文ｃ’におけるカウンタ値における異なる値が最初に現れるカウンタを特定する最大不一致カウンタ決定部４０８と、上記特定したカウンタの値に基づき暗号文Ｃ、Ｃ’それぞれに対応した相対値ｅ、ｅ’を復元する相対値復元部４０９と、復元された相対値ｅおよびｅ’の大小比較を行う相対値比較部４１１を備えている。
【００５１】
（比較判定機能）
次に、装置Ｂ５１４の比較部５１３が、入力として受けた異なる暗号文（暗号文Ｃ５０８と暗号文Ｃ’５１２）に基づき、この暗号文ＣおよびＣ’それぞれに対応した元文書Ｍおよび文書Ｎの大小比較判定を行う機能（比較判定機能）について、図４に基づき説明する。
【００５２】
図４では、比較部５１３に対して、文書Ｍに対応する識別子ＩＤ５０３と、この識別子ＩＤに対応して生成された相対値暗号文ｆと、識別子ＩＤ５０３に対応して生成された導出鍵Ｄ５０５が入力されたことを示している。
【００５３】
尚、上記識別子ＩＤ５０３、相対値暗号文ｆ、および導出鍵Ｄ５０５はそれぞれ識別子ＩＤ５０３（図１）、相対値暗号文（図２）、および導出鍵Ｄ５０５（図１）として装置Ａ（暗号化装置）から送り込まれたものであってもよい。
【００５４】
また、比較部５１３には、図４に示すように、暗号文Ｃ５０８との比較対象である暗号文Ｃ’５１２と、この暗号文Ｃ’５１２の識別子である識別子ＩＤ５０３が入力されている。
【００５５】
ここで、比較部５１３に入力された、相対値暗号文ｆは、
ｆ＝（ｆ［１］，ｆ［２］，・・・，ｆ［ｎ］）、
識別子ＩＤ（および、暗号文Ｃ）に対応する導出鍵Ｄは、
Ｄ＝（ｄ［１］，ｄ［２］，・・・ｄ［ｎ］）、
ＩＤ’の暗号文（つまり、暗号文Ｃ’）は、
Ｃ’＝〔（ｃ’［１］，ｃ’［２］，・・・ｃ’［ｎ］），（ｆ’［１］，ｆ’［２］，・・・，ｆ’［ｎ］）〕、として表されるものとする。
【００５６】
又、比較部５１３は、入力されたＩＤ’の暗号文（暗号文Ｃ’）を解析し、この暗号文をＩＤ’の識別子別暗号文ｃ’と、ＩＤ’の相対値暗号文ｆ’とを格別に抽出する。
【００５７】
ここで、暗号文Ｃ’の識別子別暗号文ｃ’を、
ｃ’＝（ｃ’［１］，ｃ’［２］，・・・，ｃ’［ｎ］）、
相対値暗号文ｆ’を、
ｆ’＝（ｆ’［１］，ｆ’［２］，・・・，ｆ’［ｎ］）とする。
【００５８】
上記比較部５１３の最大不一致カウンタ決定部４０８は、導出鍵Ｄ、識別子ＩＤ’を入力値として取得した場合に、この導出鍵Ｄ〔＝（ｄ［１］，ｄ［２］，・・・，ｄ［ｎ］）〕と識別子ＩＤ’に基づいて、カウンタｋについて１からｎまで昇順にハッシュ関数（Ｈａｓｈ）を利用した計算を行う（Ｈａｓｈ（ＩＤ’，ｄ［ｋ］））。
ここで、上記最大不一致カウンタ決定部４０８は、カウンタｋについて1からｎまでそれぞれ算出した値とＩＤ’の識別子別暗号文ｃ’（暗号文Ｃ’に対応）とが、カウンタｋについてそれぞれ等しいか否かを判定する。尚、識別子ＩＤ’は、装置Ｂ内に予め設定されていてもよい。
【００５９】
具体的には、最大不一致カウンタ決定部４０８は、以下に示す（式８）の等式がカウンタ１〜ｎそれぞれ（カウンタｋ）について成り立つか否かを判定する。
【００６０】
ｃ’［ｋ］＝Ｈａｓｈ（ＩＤ’，ｄ［ｋ］）・・・（式８）
ここで、最大不一致カウンタ決定部４０８は、カウンタｉ＝１から昇順に、式８の等式成立の可否を判定し、始めてこの等式（式８）が成り立たなくなったカウンタ値を、最大不一致カウンタｊ４１３（図４）として決定する。
【００６１】
また、相対値復元部４０９は、識別子ＩＤ、ＩＤ’、導出鍵Ｄ、および相対値暗号文ｅ，ｅ’それぞれに基づいて、以下に示す相対値暗号文ｆ，ｆ’の（式１０）または（式１１）が成り立つか否かを判定する。尚、ｅ，ｅ’∈｛０，１，２｝とする。
【００６２】
ｆ［ｊ］＝Ｈａｓｈ３（１，ＩＤ  ，ｄ［ｊ−１］）＋ｅ  ｍｏｄ３・・・（式１０）
ｆ’［ｊ］＝Ｈａｓｈ３（１，ＩＤ’，ｄ［ｊ−１］）＋ｅ’ｍｏｄ３・・・（式１１）
【００６３】
ここで、相対値復元部４０９は、上記（式１０）または（式１１）が成り立つｅおよびｅ’から成る相対値の組４１０を生成する。
【００６４】
相対値比較部４１１は、相対値復元部４０９から相対値の組（ｅおよびｅ’の組）を取得し、この相対値の組について、ｅ−ｅ’＝１  ｍｏｄ３が成立する場合は、識別子ＩＤの文書Ｍが識別子ＩＤ’の文書Ｎより大きいと判定し、「文書Ｍ＞文書Ｎ」を示す記号としての値（例えば０）を判定結果４１２として出力する。
【００６５】
また、相対値比較部４１１は、相対値復元部４０９から取得した相対値の組について、ｅ−ｅ’＝２  ｍｏｄ３が成立する場合は、識別子ＩＤ’の文書Ｎが識別子ＩＤの文書Ｍより大きいと判定し、「文書Ｎ＞文書Ｍ」を示す記号としての値（例えば１）を判定結果として出力する。
【００６６】
以上のように、本実施形態では、暗号化された異なる複数の暗号文について、暗号文に含まれる文字列からそれぞれの暗号文に対応する平文の大小判定がなされるのを有効に抑制することができる。
このため、暗号文の鍵に関する知識を全く持たない第３者が平文である数値データの大小関係を調べることを有効に抑制することが可能となる。
【００６７】
本実施形態の暗号文生成機能では、例えば、同一の平文（文書）に対応する、あるいは接頭部分が一致する平文（文書）に対応する、２つの暗号文が与えられた場合であっても、それぞれに対応する導出鍵の接頭は一致するが、異なる識別子を用いて暗号化がなされるため、両平文の一致、あるいは両平文における接頭の一致が判別できないように暗号化することができる。
【００６８】
また、装置Ｂにおける復元判定機能では、ある暗号文（Ｃ）と、この暗号文に対応する導出鍵とが与えられた場合に、他の暗号文（Ｃ’）と暗号文（Ｃ）とでそれらの対応する平文の接頭が一致するか否かを判別することができる。
【００６９】
また、２つのカウンタｋ個まで接頭の文字列が一致する平文の暗号文と、それぞれに対応する導出鍵が与えられた場合に、ｋ以下のカウンタｉについては、文書（平文）の二進展開要素であるｂ［ｉ］が一致するため、ｅ［ｉ］とｄ［ｉ］とｆ［ｉ］も一致し、その反面、ｆ[k+1]に関しては一致しないことから、二つのｆ［ｋ＋１］の値から両者の大小を判定することが可能となる。
【００７０】
ここでは、二つのｆ［ｉ］が一致しない場合に、それらの値から二つのｂ［ｉ］を決定することができ、ｆ［ｉ］が一致した場合には、この値からｂ［ｉ］を決定することができない。すなわち、接頭がｋで一致する２つの平文の暗号文それぞれにおけるｋブロック目の不一致と大小関係、つまりは、その値を特定することができるが、この場合、ｋ以下番目のブロックにおける値を有効に隠匿することができる。
【００７１】
［実施形態の動作説明］
次に、本実施形態である暗号文比較システムに対して、暗号化された文書の大小比較依頼があった場合について、その全体的な動作を説明する。
【００７２】
まず、ユーザからの依頼を受けた暗号化装置（装置Ａ）５１０の導出鍵生成部５０４は、数値データとしての文書（平文）とこれに対応する識別子ＩＤを入力値としたハッシュ関数による計算により導出鍵Ｄを算出し（導出鍵算出工程）、この識別子ＩＤと導出鍵Ｄを入力値とした上記ハッシュ関数による計算によって識別子ＩＤに対応した識別子毎暗号文を生成する（識別子別暗号文生成工程）。
【００７３】
また、暗号部生成部５０６が、上記入力された導出鍵および文書を入力値とした第２のハッシュ関数による計算を行うことにより上記文書と他の文書との大小比較判定用の値としての相対値を生成する（相対値生成工程）。
次いで、暗号部生成部５０６の相対値隠蔽装置３０７が前記第２のハッシュ関数を利用した導出鍵、識別子、および相対値を入力値とする計算により、相対値を暗号化した相対値暗号文を生成する（相対値暗号文生成工程）と共に、この識別子毎暗号文と相対値暗号文を含む上記文書の暗号文として生成する（暗号文生成工程）。
【００７４】
次に、比較部５１４が、暗号処理部が他の文書Ｃ’に対応して生成した第２の暗号文と第１及び第２の暗号文に対して第１および第２の暗号文それぞれにおける識別子および導出鍵に基づく前記第２のハッシュ関数による計算をおこなうことにより、文書Ｃ、文書Ｃ’それぞれに対応した相対値を復元する（相対値復元処理工程）。
次いで、比較部５１３は、平文および前記他の平文それぞれに対応した相対値の大小比較を行うことにより文書ＣおよびＣ’の大小判定を行う（大小比較判定処理工程）。
【００７５】
ここで、上記識別子毎暗号文生成工程、相対値生成工程、相対値暗号文生成工程、暗号文生成工程、相対値復元処理工程、および大小比較判定処理工程については、その実行内容をプログラム化し、コンピュータに実行させるように構成してもよい。
また、本プログラムは、非一時的な記憶媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリなどに記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
【００７６】
［導出鍵生成フェーズ］
次に、上記ハッシュ関数を利用して導出鍵Ｄを生成する動作工程について、図５のフローチャートに基づき説明する。
【００７７】
まず、導出鍵生成部５０４は、主鍵Ｋ５０１、文書Ｍ５０２が入力値として与えられたときに、ハッシュ関数（Ｈａｓｈ）を利用してｄ［０］を算出し、メモリ上に設定した接頭ブロックの値として特定する。ここでは、ｄ［０］＝Ｈａｓｈ（Ｋ，０）、とする（図５：ステップＳ５１／ｉ＝０）。
【００７８】
尚、文書Ｍは、Ｍ＝（ｂ［１］，ｂ［２］，・・・，ｂ［ｎ］）として表される。また、導出鍵Ｄは、Ｄ＝（ｄ［１］，ｄ［２］，・・・，ｄ［ｎ］）として表されるものとする。
【００７９】
次いで、導出鍵生成部５０４は、文書Ｍにおけるカウンタｉ＝１，２，・・・，ｎ、それぞれについて昇順にｂ［ｉ］の値を抽出する（図５：ステップＳ５２／ｉ＝ｉ＋１）。
ここで、導出鍵生成部５０４は、ｉ番目のブロックの値について、メモリ上に設定した接頭ブロックから（ｉ−１）番目のブロックの値を読み込み（図５：ステップＳ５３）、この値と主鍵Ｋ５０１に基づき、ハッシュ関数を利用した計算（以下に示す式４）を行うことにより、導出鍵Ｋ５０１のｉ番目のブロックの値を算出する（図５：ステップＳ５４／ｉ番目のブロック算出）。
ここで、導出鍵生成部５０４は、算出したｉ番目のブロックの値を接頭ブロックに格納する（ｉブロックを追加）。
【００８０】
ｄ［ｉ］＝Ｈａｓｈ（Ｋ，（ｄ［ｉ−１］，ｂ［ｉ］））  ・・・（式４）
【００８１】
次いで、導出鍵生成部５０４は、文書Ｍのビット長ｎと対象ブロックｉとが一致するか否かを判定し、一致しない場合に（図５：ステップＳ５５／ノー）、ｉ＋１を対象ブロックとして（図５：ステップＳ５２）再帰的に導出鍵を構成する各ブロックを設定する処理を行う（図５：ステップＳ５３〜５５）。
【００８２】
一方、文書Ｍのビット長ｎと対象ブロックｉとが一致した場合には（図５：ステップＳ５５／イエス）、導出鍵Ｄが生成される。
【００８３】
［暗号文生成フェーズ］
次に、本実施形態における暗号化装置（装置Ａ）の暗号文生成部５０６が、文書Ｍ５０２を暗号化した暗号文Ｃ５０８を生成する動作について、図１のブロック図および図６のフローチャートに基づき説明する。
【００８４】
ここで、導出鍵Ｄ５０５、および文書Ｍ５０２をそれぞれ、
導出鍵Ｄ＝（ｄ［１］，ｄ［２］，・・・，ｄ［ｎ］）、
文書Ｍ＝（ｂ［１］，ｂ［２］，・・・，ｂ［ｎ］）とする。
まず、暗号文生成部５０６の識別子別暗号文生成部３０３は、入力値として与えられた識別子ＩＤ５０３および導出鍵Ｄ５０５に基づき、ハッシュ関数（Ｈａｓｈ）を利用した計算を行うことにより、識別子別暗号文ｃを算出する（図６：ステップＳ６１）。
ここで、識別子別暗号文ｃを構成する各要素ｃ［ｉ］は、カウンタｉ＝１，２，・・・，ｎについて、ｃ［ｉ］＝Ｈａｓｈ（ＩＤ，ｄ［ｉ］）と表されるものとする。
【００８５】
次に、相対値生成部３０５が、入力値として与えられた主鍵Ｋ５０１、文書Ｍ５０２、および導出鍵Ｄ５０５に基づき、第２のハッシュ関数（Ｈａｓｈ３）を利用した計算を行うことにより、相対値ｅ（図３に対応）を算出する（図６：ステップＳ６２）。
ここで、相対値３０６を構成するｅ［ｉ］は、カウンタｉ＝１，２，・・・，ｎについて、ｅ［ｉ］＝Ｈａｓｈ３（０，Ｋ，ｄ［ｉ−１］）＋ｂ［ｉ］ｍｏｄ３
と表される。
【００８６】
次いで、相対値隠蔽部３０７が、入力された識別子ＩＤ５０３、導出鍵Ｄ５０５、および相対値生成部３０５で生成された相対値ｅ３０６に基づき、第２のハッシュ関数（Ｈａｓｈ３）を利用した計算（式６）により、カウンタ値１〜ｎそれぞれに対応したｆ［ｉ］からなる相対値暗号文ｆ３０８（図３）を算出する（図６：ステップＳ６３）。
【００８７】
上記相対値暗号文ｆ３０８を構成するｆ［ｉ］は、カウンタｉ＝１，２，・・・，ｎ、について、
ｆ［ｉ］＝Ｈａｓｈ３（１，ＩＤ，ｄ［ｉ−１］）＋ｅ［ｉ］ｍｏｄ３・・・（式６）
と表されるものとする。
【００８８】
また、暗号文生成部５０６は、カウンタｉ＝１，２，・・・，ｎ、それぞれに対応して算出された識別子別暗号文ｃ３０４および相対値暗号文ｆ３０８から成る暗号文Ｃを生成する。
尚、暗号文Ｃ５０８は、Ｃ＝〔（ｃ［１］，ｃ［２］，・・・ｃ［ｎ］），（ｆ［１］，ｆ［２］，・・・，ｆ［ｎ］）〕、と表される。
【００８９】
この暗号文生成フェーズでは、例えば、同一の平文（文書）に対応する、あるいは接頭部分が一致する平文（文書）に対応する、２つの暗号文が与えられた場合であっても、それぞれに対応する導出鍵の接頭は一致するが、異なる識別子を用いて暗号化がなされるため、両平文の一致、あるいは両平文における接頭の一致が判別できないように暗号化することができる。
【００９０】
［比較判定フェーズ］
次に、本実施形態における比較処理装置（装置Ｂ）５１４が、暗号文ＣおよびＣ’に基づき文書Ｍおよび文書Ｎの大小比較を行う動作について、図７のフローチャートに基づき説明する。
【００９１】
まず、比較処理装置（装置Ｂ）５１４の比較部５１３には、識別子ＩＤ５０３、識別子ＩＤ５０３に対応して生成された相対値暗号文ｆ３０８、識別子ＩＤ５０３に対応して生成された導出鍵Ｄ５０５が入力される。
【００９２】
また、この比較部５１３には、暗号文Ｃに対する比較対象としての暗号文Ｃ’が予め設定されており、この暗号文Ｃ’の識別子である識別子ＩＤ’と、この識別子ＩＤ’５１１に対応する暗号文Ｃ’（ＩＤ’の暗号文）とが比較部５１３に入力されるものとする（図７：ステップＳ７１）。
【００９３】
尚、相対値暗号文ｆは、
ｆ＝（ｆ［１］，ｆ［２］，・・・，ｆ［ｎ］）、
識別子ＩＤ（および、暗号文Ｃ）に対応する導出鍵Ｄ５０５は、
Ｄ＝（ｄ［１］，ｄ［２］，・・・ｄ［ｎ］）、
ＩＤ’の暗号文（暗号文Ｃ’）は、
Ｃ’＝〔（ｃ’［１］，ｃ’［２］，・・・ｃ’［ｎ］），（ｆ’［１］，ｆ’［２］，・・・，ｆ’［ｎ］）〕、として表されるものとする。
【００９４】
上記比較部５１３は、入力されたＩＤ’の暗号文（暗号文Ｃ’）を解析し、この暗号文Ｃ’をＩＤ’の識別子別暗号文ｃ’と、ＩＤ’の相対値暗号文ｆ’とを格別に抽出する（図７：ステップＳ７１）。
ここで、は暗号文Ｃ’の識別子別暗号文ｃ’を、
ｃ’＝（ｃ’［１］，ｃ’［２］，・・・，ｃ’［ｎ］）、
相対値暗号文ｆ’を、
ｆ’＝（ｆ’［１］，ｆ’［２］，・・・，ｆ’［ｎ］）、とする。
【００９５】
次いで、最大不一致カウンタ決定部４０８（図４）が、導出鍵Ｄ５０５、識別子ＩＤ’５１１を入力値として取得した場合に、この導出鍵Ｄと識別子ＩＤ’に基づいて、カウンタｋについて１からｎまで昇順にハッシュ関数（Ｈａｓｈ）を利用した計算を行う（Ｈａｓｈ（ＩＤ’，ｄ［ｋ］））。
ここで、最大不一致カウンタ決定部４０８は、カウンタｋについて１からｎまでそれぞれ算出した値とＩＤ’の識別子別暗号文ｃとが、カウンタｋについてそれぞれ等しいか否かを判定する。尚、識別子ＩＤ’は、装置Ｂ内に予め設定されていてもよい。
【００９６】
具体的には、最大不一致カウンタ決定部４０８は、以下に示す（式８）の等式がカウンタ１〜ｎそれぞれ（カウンタｋ）について成り立つか否かを判定する。
【００９７】
ｃ’［ｋ］＝Ｈａｓｈ（ＩＤ’，ｄ［ｋ］）・・・（式８）
ここで、最大不一致カウンタ決定部４０８は、カウンタ１から昇順に等式成立の可否を判定し、始めてこの等式（式８）が成り立たなくなったカウンタ値ｋを最大不一致カウンタｊ（４１３：図４）として決定する（図７：ステップＳ７２）。
【００９８】
次いで、相対値復元部４０９が、識別子ＩＤ、ＩＤ’、導出鍵Ｄ、および相対値暗号文ｆ，ｆ’それぞれに基づいて、以下に示す（式１０）または（式１１）が成り立つか否かを判定し、これに基づき相対値ｅ，ｅ’を復元する。ここで、ｅ，ｅ’∈｛０，１，２｝とする。
【００９９】
ｆ［ｊ］＝Ｈａｓｈ３（１，ＩＤ  ，ｄ［ｊ−１］）＋ｅ  ｍｏｄ３・・・（式１０）
ｆ’［ｊ］＝Ｈａｓｈ３（１，ＩＤ’，ｄ［ｊ−１］）＋ｅ’ｍｏｄ３・・・（式１１）
【０１００】
又、相対値復元部４０９は、上記（式１０）または（式１１）が成り立つ相対値ｅおよびｅ’から成る相対値ｅ，ｅ’の組を生成する（図７：ステップＳ７３）。
【０１０１】
次いで、相対値比較部４１１は、相対値復元部４０９から相対値の組（ｅおよびｅ’の組）を取得しこれを比較する（図７：ステップＳ７４）。
【０１０２】
ここで、相対値比較部４１１は、この相対値の組について、ｅ−ｅ’＝１ｍｏｄ３が成立する場合は、識別子ＩＤの文書Ｍが識別子ＩＤ’の文書Ｎより大きいと判定し、「文書Ｍ＞文書Ｎ」を示す記号としての値（例えば０）を判定結果として出力する（図７：ステップＳ７５）。
【０１０３】
また、相対値比較部４１１は、相対値復元部４０９から取得した相対値の組について、ｅ−ｅ’＝２ｍｏｄ３が成立する場合は、識別子ＩＤ’の文書Ｎが識別子ＩＤの文書Ｍより大きいと判定し、「文書Ｎ＞文書Ｍ」を示す記号としての値（例えば１）を判定結果４１２として出力する（図７：ステップＳ７５）。
【０１０４】
以上のように、本実施形態では、数値データが暗号化された暗号文が与えられたときに、これらの暗号文だけからはそれらの元の数値データの大小を比較することを抑制し、且つデータベースに対して正規利用者からある数値の暗号文に関して対応する数値データの大小比較の要求がなされた場合に、暗号かされた異なる暗号文に含まれる文字列から元の数値データと大小の比較を行うことができる。
このため、本実施形態のデータベースシステムでは、データベース利用者は、暗号化される前の数値データを管理者等に知られることなく、データベースに含まれる、特定の暗号化された数値より大きい（又は小さい）数値データを取得することができる。
【０１０５】
また、本実施形態では、２つの暗号文に含まれる文字列（例えば、接頭文字列）が一致する場合でも、暗号化のための鍵を知らない第３者がこの接頭文字列の一致に基づいて暗号文に対応する平文を探り当てることを有効に抑制することができる。
【０１０６】
このため、例えば、暗号化キーを知らない第３者が、データベースを構成する数値データと、データベース内の暗号化された数値データとの、数値データ同士の大小関係を利用して特定の数値データを抽出したり、取得したりするのを抑制することができ、これにより、データベースに含まれるデータのセキュリティを有効に高めることができる。
【０１０７】
上述の実施形態については、その新規な技術的内容の要点をまとめると、以下のようになる。
尚、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【０１０８】
〔付記１〕
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出部５０４と、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成部３０３と、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値ｅ，ｅ’を生成する相対値生成部３０５と、
前記導出鍵および前記識別子と前記相対値とを入力値として前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文隠蔽部３０７とを具備すると共に、
前記識別子別暗号文と前記相対値暗号文とから成る文字列を前記平文に対する暗号文として生成し出力する暗号文生成出力機能５０６Ａを備えていることを特徴とした暗号化装置。
【０１０９】
〔付記２〕
付記１に記載の暗号化装置において、
前記識別子別暗号文生成手段３０３は、ある整数ｎについて、１からｎまでの任意の整数ｋに関して、前記導出鍵のｋ番目のブロックと前記識別子とから前記識別子別暗号文のｋ番目のブロック値を生成する機能を有し、[0044][0084]
前記相対値生成部３０５は、前記識別子別暗号文が有するｎ個の各データブロック列それぞれの値に対応したｋ番目のブロック値を、前記相対値として生成する相対値生成機能を備えていることを特徴とした暗号化装置。
【０１１０】
〔付記３〕
付記１に記載の暗号化装置５１０と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込む比較処理装置５１４とを備え、
この比較処理装置５１４が、
前記第１および第２の各暗号文それぞれに対応して設定された前記識別子および導出鍵を入力値として前記第２のハッシュ関数に基づく計算を行い前記各平文に対応した前記相対値ｅ，ｅ’を各別に復元する相対値復元部４０９と、
前記異なる平文それぞれに対応した相対値の大小比較を行うことにより前記異なる平文の大小判定を行う大小比較判定機能を備えた相対値比較判定部４１１とを有することを特徴とした暗号文比較システム。
【０１１１】
〔付記４〕
付記３に記載の暗号文比較システムにおいて、
前記比較処理装置５１４の比較部５１３は、前記識別子別暗号分ｃ，ｃ’におけるカウンタ値で異なる値が最初に現れるカウンタ値ｊを最大不一致カウンタ値ｊとして特定する最大不一致カウンタ決定部を、予め装備すると共に[0058]〜[0060]、
前記比較部５１３の相対値復元部４０９は、各相対値ｅ，ｅ’の復元に際しては、前記最大不一致カウンタ値ｊおよび各相対値を含む前記第２のハッシュ関数にかかる相対値暗号文の関数の成立有無を判定すると共に、当該関数が成立する場合の当該各相対値ｅ，ｅ’の組を生成すると共に、これを復元した相対値として出力することを特徴とした暗号文比較システム[0061]〜[0063]。
【０１１２】
〔付記５〕
付記４に記載の暗号文比較システムにおいて、
前記相対値比較判定部４１１は、
前記相対値復元部４０９から出力される識別子ＩＤの相対値ｅと識別子ＩＤ’の相対値ｅ’との差を演算する相対値差演算機能と、
識別子ＩＤの文書Ｍが識別子ＩＤ’の文書Ｎよりも大きいと判定された場合に「文書Ｍ＞文書Ｎ」を示す判定結果の記号として「０」を出力すると共に、識別子ＩＤ’の文書Ｎが識別子ＩＤの文書Ｍより大きいいと判定された場合に「文書Ｎ＞文書Ｍ」を示す判定結果の記号として「１」を出力する判定結果出力機能とを備えていることを特徴とした暗号文比較システム。[0101]〜[0103]
【０１１３】
〔付記６〕
異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出し（導出鍵算出工程）、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成し（識別子別暗号文生成工程）、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成し（相対値生成工程）、
前記導出鍵，前記識別子，及び前記相対値を入力値として前記第２のハッシュ関数による計算にて前記相対値を暗号化した相対値暗号文を生成し（相対値暗号文生成工程）、
前記識別子別暗号文と前記相対値暗号文から成る文字列を、前記平文の暗号文として生成して出力すると共に（暗号文生成出力工程）、
上記各工程内容を前記暗号文比較システムが備えている暗号化装置が実行し、
前記他の平文に対応して生成した第２の暗号文と前記第１の暗号文とを入力として受けた場合に、前記第１および第２の暗号文それぞれにおける識別子および導出鍵に基づく前記第２のハッシュ関数による計算にて前記平文および前記他の平文それぞれに対応した前記相対値を復元し（相対値復元処理工程）、
前記平文と前記他の平文のそれぞれに対応した相対値の大小比較を行うことにより前記平文の大小判定を行うようにし（平文大小判定処理工程）、
これら各処理工程を前記暗号文比較システムが備えている比較処理装置が実行するようにしたことを特徴とする暗号文比較方法。
【０１１４】
〔付記７〕
異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出機能、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成機能、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成する相対値生成機能、
前記導出鍵及び前記識別子と前記相対値とを入力値とした前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文生成機能、
および前記識別子別暗号文と前記相対値暗号文から成る前記平文と他の平文とについてその大小比較判定用の各文字列を生成する暗号文生成機能、
を設け、これらの各機能を前記暗号化装置が備えているコンピュータに実現させるようにしたことを特徴とする暗号文比較プログラム。
【０１１５】
この出願は２０１１年７月５日に出願された日本出願特願２０１１−１４９５２０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１６】
本発明は、正規の利用者以外の第３者利用者や管理者に対して数値データが暗号化されたテーブル情報を管理するデータベースシステムに対して適用することができる。
【符号の説明】
【０１１７】
３０３  識別子別暗号文生成部
３０５  相対値生成部
３０７  相対値隠蔽部
４０８  最大不一致カウンタ決定部
４０９  相対値復元部
４１１  相対値比較判定部
５０４  導出鍵生成部（鍵導出部）
５０６  暗号文生成部
５０６Ａ  暗号文生成出力機能
５１０  暗号化装置（装置Ａ）
５１３  比較部
５１４  比較処理装置（装置Ｂ）
【図１】
2013005505.tif 000003
【図２】
2013005505.tif 000004
【図３】
2013005505.tif 000005
【図４】
2013005505.tif 000006
【図５】
2013005505.tif 000007
【図６】
2013005505.tif 000008
【図７】
2013005505.tif 000009
【図８】
2013005505.tif 000010
【図９】
2013005505.tif 000011
【手続補正書】
【提出日】平成25年12月27日(2013.12.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出部と、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成部と、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値ｅ，ｅ’を生成する相対値生成部と、
前記導出鍵および前記識別子と前記相対値とを入力値として前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文隠蔽部とを具備すると共に、
前記識別子別暗号文と前記相対値暗号文とから成る文字列を前記平文に対する暗号文として生成し出力する暗号文生成出力機能を備えていることを特徴とした暗号化装置。
【請求項２】
請求項１に記載の暗号化装置において、
前記識別子別暗号文生成部は、ある整数ｎについて、１からｎまでの任意の整数ｋに関して、前記導出鍵のｋ番目のブロックと前記識別子とから前記識別子別暗号文のｋ番目のブロック値を生成する機能を有し、
前記相対値生成部は、前記識別子別暗号文が有するｎ個の各データブロック列それぞれの値に対応したｋ番目のブロック値を、前記相対値として生成する相対値生成機能を備えていることを特徴とした暗号化装置。
【請求項３】
請求項１に記載の暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込む比較処理装置とを備え、
この比較処理装置が、
前記第１および第２の各暗号文それぞれに対応して設定された前記識別子および導出鍵を入力値として前記第２のハッシュ関数に基づく計算を行い前記各平文に対応した前記相対値ｅ，ｅ’を各別に復元する相対値復元部と、
前記異なる平文それぞれに対応した相対値の大小比較を行うことにより前記異なる平文の大小判定を行う大小比較判定機能を備えた相対値比較判定部とを有することを特徴とした暗号文比較システム。
【請求項４】
請求項３に記載の暗号文比較システムにおいて、
前記比較処理装置の比較部は、前記識別子別暗号分ｃ，ｃ’におけるカウンタ値で異なる値が最初に現れるカウンタ値ｊを最大不一致カウンタ値ｊとして特定する最大不一致カウンタ決定部を、予め装備すると共に、
前記比較処理装置の相対値復元部は、各相対値ｅ，ｅ’の復元に際しては、前記最大不一致カウンタ値ｊおよび各相対値を含む前記第２のハッシュ関数にかかる相対値暗号文の関数の成立有無を判定すると共に、当該関数が成立する場合の当該各相対値ｅ，ｅ’の組を生成すると共に、これを復元した相対値として出力することを特徴とした暗号文比較システム。
【請求項５】
請求項４に記載の暗号文比較システムにおいて、
前記相対値比較判定部は、
前記相対値復元部から出力される識別子ＩＤの相対値ｅと識別子ＩＤ’の相対値ｅ’との差を演算する相対値差演算機能と、
識別子ＩＤの文書Ｍが識別子ＩＤ’の文書Ｎよりも大きいと判定された場合に「文書Ｍ＞文書Ｎ」を示す判定結果の記号として「０」を出力すると共に、識別子ＩＤ’の文書Ｎが識別子ＩＤの文書Ｍより大きいいと判定された場合に「文書Ｎ＞文書Ｍ」を示す判定結果の記号として「１」を出力する判定結果出力機能とを備えていることを特徴とした暗号文比較システム。
【請求項６】
異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出し、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成し、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成し、
前記導出鍵，前記識別子，及び前記相対値を入力値として前記第２のハッシュ関数による計算にて前記相対値を暗号化した相対値暗号文を生成し、
前記識別子別暗号文と前記相対値暗号文から成る文字列を、前記平文の暗号文として生成して出力すると共に、
上記各工程内容を前記暗号文比較システムが備えている暗号化装置が実行し、
前記他の平文に対応して生成した第２の暗号文と前記第１の暗号文とを入力として受けた場合に、前記第１および第２の暗号文それぞれにおける識別子および導出鍵に基づく前記第２のハッシュ関数による計算にて前記平文および前記他の平文それぞれに対応した前記相対値を復元し、
前記平文と前記他の平文のそれぞれに対応した相対値の大小比較を行うことにより前記平文の大小判定を行うようにし、
これら各処理工程を前記暗号文比較システムが備えている比較処理装置が実行するようにしたことを特徴とする暗号文比較方法。
【請求項７】
異なる数値としての複数の平文それぞれを暗号化する暗号化装置と、この暗号化装置が異なる各平文に対応して生成した第１の暗号文および第２の暗号文を取り込んで両文書の大小を比較処理する比較処理装置とを備えた暗号文比較システムにあって、
数値としての平文及びこれに対応する識別子を入力値として予め設定された第１のハッシュ関数による計算により導出鍵を算出する鍵算出機能、
前記識別子および前記導出鍵を入力値として前記第１のハッシュ関数による計算によって前記識別子を暗号化した識別子別暗号文を生成する識別子別暗号文生成機能、
前記導出鍵および前記平文を入力値として予め設定された第２のハッシュ関数による計算を行うことにより前記平文と他の平文との大小比較判定用の値である相対値を生成する相対値生成機能、
前記導出鍵及び前記識別子と前記相対値とを入力値とした前記第２のハッシュ関数による計算により前記相対値を暗号化した相対値暗号文を生成する相対値暗号文生成機能、
および前記識別子別暗号文と前記相対値暗号文から成る前記平文と他の平文とについてその大小比較判定用の各文字列を生成する暗号文生成機能、
を設け、これらの各機能を前記暗号化装置が備えているコンピュータに実現させるようにしたことを特徴とする暗号文比較プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】変更
【補正の内容】
【００６７】
本実施形態の暗号文生成機能では、例えば、同一の平文（文書）に対応する、あるいは接頭部分が一致する平文（文書）に対応する、２つの暗号文が与えられた場合であっても、それぞれに対応する導出鍵の接頭は一致するが、異なる識別子を用いて暗号化がなされるため、両平文の一致、あるいは両平文における接頭の一致が判別できないように暗号化することができる。なお、本願明細書では段落［００３５］の「式１」の記載の通り、位の小さいものから順番に左から右にビットを並べる表記を採用するので、ここでいう「接頭」とは位の小さい側のビットを意味する。
【国際調査報告】
2013005505.tif 000012
2013005505.tif 000013
2013005505.tif 000014
2013005505.tif 000015