JP2014137423A - 暗号処理装置、方法およびプログラム - Google Patents

暗号処理装置、方法およびプログラム Download PDF

Info

Publication number
JP2014137423A
JP2014137423A JP2013004977A JP2013004977A JP2014137423A JP 2014137423 A JP2014137423 A JP 2014137423A JP 2013004977 A JP2013004977 A JP 2013004977A JP 2013004977 A JP2013004977 A JP 2013004977A JP 2014137423 A JP2014137423 A JP 2014137423A
Authority
JP
Japan
Prior art keywords
character string
character
similar
hash
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.)
Granted
Application number
JP2013004977A
Other languages
English (en)
Other versions
JP6040780B2 (ja
Inventor
Ikuya Morikawa
郁也 森川
Ryusuke Masuoka
竜介 益岡
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 JP2013004977A priority Critical patent/JP6040780B2/ja
Publication of JP2014137423A publication Critical patent/JP2014137423A/ja
Application granted granted Critical
Publication of JP6040780B2 publication Critical patent/JP6040780B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】2つの文字列のハッシュ値、たとえば正規のパスワードと入力されたパスワードのハッシュ値を比較することによって、その2つの文字列が「近傍」にあるかどうかを判定する。
【解決手段】暗号処理装置は、第1の入力文字列に第1のワイルドカード文字を挿入することで得られる文字列を、第1の類似文字列として生成する第1の類似文字列生成部と、前記第1の類似文字列を暗号化関数に作用させて第1の比較暗号値を生成する第1の暗号化部と、第2の入力文字列に第2のワイルドカード文字を挿入することで得られる文字列を、第2の類似文字列として生成する第2の類似文字列生成部と、前記第2の類似文字列に前記暗号化関数を作用させて第2の比較暗号値を生成する第2の暗号化部と、前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定する類似暗号比較部とを含む。
【選択図】図6

Description

本発明は、暗号処理装置、方法およびプログラムに関する。
昨今、情報通信技術の進展により、電子計算機が他の電子計算機と相互に接続されて運用されることが非常に多くなった。これに伴い、電子計算機やその中で扱われるデータが正当な所有者や利用者以外からアクセスされる機会や、通信や処理のためにそうしたデータを他の計算機に預ける機会も増えた。このため、元のデータを秘匿したままで比較などの操作を可能とする技術が考案され、利用されている。
そうした技術の一つに、暗号学的ハッシュ関数(以下では、単にハッシュ関数と呼ぶこともある)を利用する暗号処理装置がある。
ハッシュ関数とは、任意のデータ(元データ)に作用させると、固定長のハッシュ値と呼ばれる別のデータに変換する写像として定義される。つまり、暗号学的ハッシュ関数は、同じ元データを常に同じハッシュ値に変換するが、異なる元データはほとんどの場合、同じハッシュ値に変換しない。「良い」ハッシュ関数は、元データの規則的な変化(たとえば数値の連続的な増減、特定のビットの反転など)に対して、対応するハッシュ値が乱雑な変化をするものである。
暗号学的ハッシュ関数とは、ハッシュ関数のうちハッシュ値の乱雑度や変換の一方向性が非常に強く、安全性の高いものを指す。つまり、元データを知らずにハッシュ値だけを見て元データを導き出したり、複数のハッシュ値だけを見てそれらの元データ間の関係や規則性を見出したりすることが不可能または非常に困難なものを指す。暗号学的ハッシュ関数として働く代表的なアルゴリズムとして、MD5、SHA−1、SHA−2などが知られている。
暗号学的ハッシュ関数は、安全性をもつことから、セキュリティを高める用途にしばしば使われる。たとえば、ディジタル署名やメッセージ認証コード (MAC)、パスワード認証などに使われている。このうちパスワード認証の用途では、ユーザが正規ユーザであるかどうかを判定するために、予め登録されているパスワードのハッシュ値と、ユーザが入力したハッシュ値を比較し、一致すればそのユーザを正規ユーザと判定する。
特開2010−237653公報
RFC 2104「HMAC: Keyed-Hashing for Message Authentication」
暗号化されていない2つの元データについて、2つのデータに暗号学的ハッシュ関数を作用させて得られる2つの暗号化データを比較する場合、元データが少しでも異なるとハッシュ値はまったく異なる値になるため、元データが類似していることを知ることができない。よって、ハッシュ関数を用いて暗号化をする場合、2つの元データが互いに類似しているのか否かを、暗号化データを比較しても分からないという問題がある。
たとえば、ユーザが正規ユーザであるかどうかを判定するために、予め登録されているパスワードのハッシュ値と、ユーザが入力したハッシュ値を比較する場合、正しいユーザが1文字違いのパスワードを所定の回数だけ誤って入力すると、アカウントロックが起こってしまう。アカウントロックが起こると、ロックを外すためには、管理者による解除が必要であったりと、パスワードを再び受け付けることが可能となるためには、時間と手間を要するという問題がある。また、アカウントロックが生じると、パスワードに対応する識別子(ID)で特定されるユーザのデータが消去されることがあるという問題がある。
パスワード認証の場合、正規ユーザが誤ったパスワードを入力する場合、入力されたパスワードは、部分的な文字列が一致するなど、正しいパスワードの「近傍」にあることが多い。ここで2つの文字列が互いに「近傍」にあるとは、全体の文字列の比較的高い割合の部分が一致することである。逆に、セキュリティを破ってログインしようとする攻撃者から入力されるパスワードが、正しいパスワードの近傍にあるケースは多くない。もし、上記の2つの状況が区別できれば、正規ユーザであるにも関わらず、連続してパスワードを誤った状況を検出できるが、そのような方法がないという問題がある。
よって、一つの側面として、本発明は、2つの入力文字列が「近傍」にあるか否かを示す類似度を、秘匿したまま比較する装置、方法を提供することを目的とする。
第1と第2の入力文字列が「近傍」にあるか否かを示す類似度を、秘匿したまま比較する暗号処理装置が提供される。暗号処理装置は、第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成する第1の類似文字列生成部と、前記第1の類似文字列を暗号化関数に作用させて第1の比較暗号値を生成する第1の暗号化部と、第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成する第2の類似文字列生成部と、前記第2の類似文字列に前記暗号化関数を作用させて第2の比較暗号値を生成する第2の暗号化部と、前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定する類似暗号比較部とを含む。
実施形態の暗号処理装置および方法では、2つの文字列のハッシュ値、たとえば正規のパスワードと入力されたパスワードのハッシュ値を比較することによって、その2つの文字列が「近傍」にあるかどうかを判定することができるという効果を奏する。
パスワード認証の概略を説明する図である。 正規ユーザからのオンライン総当り攻撃を受けたときの状況の例を示す図である。 攻撃者からのオンライン総当り攻撃を受けたときの状況の例を示す図である。 オンライン総当り攻撃に対する対策の一つとしての平文比較方式の例を示す図である。 オンライン総当り攻撃に対する対策の一つとして、近傍文字列すべてのハッシュ値を取っておく方法の例を示す図である。 オンライン総当り攻撃に対する対策の一つとして、近傍文字列すべてのハッシュ値を取っておく方法の別の例を示す図である。 開示の実施形態にしたがう近傍ハッシュの生成方法の例の概略を示す図である。 近傍ハッシュの生成方法の例を示す図である。 暗号システムの機能ブロックの例を示す図である。 図8の類似ハッシュ生成部の機能ブロックの例を示す図である。 図8の類似ハッシュ比較部の機能ブロックの例を示す図である。 類似ハッシュデータの例を示す図である。 暗号処理装置または、第1の類似ハッシュ生成部、第2の類似ハッシュ生成部、および/もしくは類似ハッシュ比較部の構成の例を示す構成図である。 類似文字列生成処理での処理の流れを示すフローチャートの例である。 1文字増減に対応した類似文字列生成処理での処理の流れを示すフローチャートの例である。 2文字増減に対応した類似文字列生成処理での処理の流れを示すフローチャートの例である。 比較処理での処理の流れを示すフローチャートの例である。
以下では、第1と第2の入力文字列が「近傍」にあるか否かを示す類似度を、秘匿したまま比較する暗号処理装置、方法およびプログラムが提供される。ここで2つの文字列が互いに「近傍」にあるとは、全体の文字列の比較的高い割合の部分が一致することである。
本明細書ではハッシュ関数のうち暗号学的ハッシュ関数だけを扱うので、以下では、特に断りのない限り、暗号学的ハッシュ関数、暗号学的ハッシュ値をそれぞれ単にハッシュ関数、ハッシュ値と呼ぶものとする。また、以下では用語「ハッシュ」と「ハッシュ値」を同等に扱うことがある。
また、ハッシュ関数の入力となるデータは任意のバイト列だが、以降では便宜的に任意個の文字が並んだ文字列として説明する。実際には、ASCII文字列のように1文字が1バイトに対応したデータとしてもよいし、文字列を文字符号化した結果のバイト列を元データとしてハッシュ関数に入力してもよい。
また、パスワードは、暗証番号のみならず、PIN、パスフレーズなどを含んでも良い。
<全般的な説明>
図1〜5を用いて、パスワード認証方法の概略と、それに対する攻撃法の例を説明する。
図1は、パスワード認証の概略を説明する図である。以下では、文字列を暗号化するために、その文字列に暗号化関数としてハッシュ関数を作用させ、暗号化値としてハッシュ値(または単にハッシュ)を得る方法を用いる。しかしながら、暗号化関数としては、MD2、MD4、MD5、SHA等のハッシュ関数に限らず、他の暗号化関数を用いても良い。暗号化関数としては、フィードバックシフトレジスタ(LFSR)によるシフト、ビットのシフト後、2個の要素を有する拡大ガロア体上GF(2)上の特性多項式の剰余などの一方向関数を含み得る。
事前処理として、正しいパスワードにハッシュ関数H’を作用させて、正しいハッシュを生成させておく。図1の例では、正しいパスワード「p@ssW0rd」にハッシュ関数H’を作用させ、正しいハッシュ「c6e71570a97」を生成する。
認証時には、ユーザによって入力されたパスワードにハッシュ関数H’を作用させてハッシュ(比較ハッシュ)を生成し、それを事前に得られている正しいハッシュと比較する。そして、ユーザによって入力されたパスワードから生成されたハッシュである比較ハッシュと正しいハッシュと一致すれば、その文字列を入力したユーザを正規ユーザとして認証する。
図1の例では、ユーザによって文字列「password」が入力されるとする。その文字列にハッシュ関数H’を作用させると、ハッシュ「56529076e997」が得られる。これと正しいハッシュ「c6e71570a97」を比較すると一致しないので、このユーザは正規ユーザとして認証されない。
一方、あるユーザがパスワードとして文字列「p@ssW0rd」を入力したとすると、この文字列にハッシュ関数H’を作用させると、ハッシュ「c6e71570a97」が得られる。これは正しいハッシュと一致する。よって、このユーザは正規ユーザとして認証される。
一般に、ハッシュ関数では元のデータが少しでも異なると、ハッシュ関数を作用して得られるハッシュ値はまったく異なる値になるため、元データが類似していることを知ることができない。つまり、二つの元データである文字列が類似している、たとえば1文字違いであることをそれらのハッシュ値のみから知ることはできない。
図2Aは、正規ユーザからのオンライン総当り攻撃を受けたときの状況の例を示す図である。図2Bは、攻撃者からのオンライン総当り攻撃を受けたときの状況の例を示す図である。
正規ユーザからの入力であっても、ケアレスミスや、ふとパスワードが思い出せなくなってしまったなどの理由で、パスワードを連続して何回か間違ってしまう状況がある。これは、パスワードがあらゆる場面で使われ、子供や老人など老若男女を問わずパスワードを使用するIT社会では頻出する可能性がある。このような状況では、正しいパスワードと何らかの関連性がある文字列が入力されることが多い。しかも、正規ユーザがパスワードを連続して何回か間違えるとアカウントロックが起こり、再度可能にするには、しばらく待つ、管理者に解除してもらう、など時間的なロスが発生するだけでなく、データが消去される可能性もある。
図2Aに示されている例では、正しいパスワードが文字列「p@ssW0rd」であるにも関わらず、正規ユーザが文字列「password」、「passWord」など、正しい文字列に「類似」の文字列が入力される。
また、認証システムには、正規でないユーザから、システムに格納されている個人データ等の秘匿データを盗むために、攻撃が仕掛けられることがある。
図2Bは、攻撃者が考え得る文字列全てを入力することによってセキュリティを破ろうとする攻撃を仕掛けたとき、パスワードとして入力される文字列の例である。この場合、攻撃者は正しいパスワードに関する情報を事前には全く持ち合わせていないので、正しいパスワードとは何ら関連性のない文字列を入力することが多い。図2Bの例では、正しいパスワードが文字列「p@ssW0rd」であるにも関わらず、文字列「xA51aaaa」など、正しいパスワードとハミング距離が長いだけでなく、正しい文字列とは「類似性が薄い」または正しい文字列の「近傍」にはない文字列が入力される。
もし、図2Aと図2Bに示されているような2つの状況を互いに見分けることができれば、総当たり攻撃の検出精度が高まる、アカウントロックの精度が高まり、正しいユーザのミスでロックしてしまう可能性が減るなどのメリットが期待できる。
しかし、こうした類似マッチができると、ハッシュ値のみから元データの類似性を知ることができるので、類似性がわからないときよりも安全性が低下している可能性がある。すなわち、ハッシュ値の元データを知りたい攻撃者は、予想した元データが正しい元データと完全に一致しなくても類似していれば類似していることがわかるので、次回以降の予想範囲をかなり狭めることができる。このため、類似マッチができないときよりも少ない試行回数で正しい元データを知ることができる可能性がある。こうした類似マッチでは、目的とする類似性がわかってしまうのは仕方がないが、それ以上の性質はわからないようにすることが望ましい。また、鍵付きハッシュの技術を用い、ハッシュ関数の処理に秘密情報を導入することで、秘密情報を知らない第三者には類似マッチすらできないようにすることで、安全性低下の脅威を軽減できる場合もある。
正規ユーザによるパスワード入力ミスと攻撃者によるパスワード入力ミスを見分ける方法の一つとして、図3に示されているような平文比較方式がある。
この方法では、入力されたパスワードと正しいパスワードの平文を比較する。しかし、平文のパスワードを保存するのは危険であるという問題がある。特に、正しいパスワードの平文が漏洩したり、管理者などの覗き見される可能性がある。正しパスワードを暗号化しておいても、暗号化の鍵が漏れたり、鍵が推測されるとパスワードが露見してしまう可能性がある。
正規ユーザによるパスワード入力ミスと攻撃者によるパスワード入力ミスを見分ける方法の別の例として、一方の元データに類似したデータすべてに対するハッシュ値(類似ハッシュ値)を作成するという方法が考えられる。それらのハッシュ値のいずれかがもう一方の元データから得たハッシュ値と一致すれば類似していることを知ることができる。たとえば、元データを「abcd」とすると、1文字目を置き換えた「bbcd」「cbcd」「dbcd」など、2文字目を置き換えた「aacd」「accd」「adcd」のように1文字違いの類似データをすべて作成し、それらのハッシュ値を作成することで、別の元データのハッシュ値がいずれかの類似ハッシュ値が一致すれば1文字違いであることがわかる。
図4は、オンライン総当り攻撃に対する対策の一つとして、近傍文字列すべてのハッシュ値を取っておく方法の例を示す図、図5はオンライン総当り攻撃に対する対策の一つとして、近傍文字列すべてのハッシュ値を取っておく方法の別の例を示す図である。
図4では、事前に正しいパスワードである文字列「p@ssW0rd」と1文字だけ異なる文字列を全て生成する。たとえば、1文字目を削除して「@ssW0rd」としたり、1文字目を置換して「a@ssW0rd」としたりする。そして、これらの正しいパスワードと1文字だけ異なる文字列のそれぞれにハッシュ関数H’を作用させ、ハッシュ値を得ておく。これらのハッシュは近傍ハッシュ群を形成する。正しいパスワードである文字列「p@ssW0rd」に対応するハッシュである主ハッシュも事前に得ておく。
ここで、近傍ハッシュ群とは、正しいパスワードを示す文字列の「近傍」にある文字列から生成されるハッシュ値の集まりであり得る。
認証時には、入力されたパスワード、たとえば「p@ssW0rd」にハッシュ関数H’を作用させ、比較ハッシュを得る。図4の場合、比較ハッシュとして文字列「c6e715703a97」が得られる。この比較ハッシュは、主ハッシュと一致する。
この方法では、パスワードをn文字とすると、近傍ハッシュ群の要素は約 n×96個必要(96は文字の種類数)となり、n=8 なら768個、2文字違いや文字挿入も考えると、近傍ハッシュ群の要素はもっと多くなる。
図5では、事前に正しいパスワードである文字列「p@ssW0rd」に対応するハッシュは正しい主ハッシュだけ得ておく。
認証時には、まず、入力された文字列にハッシュ関数H’を作用させ、主ハッシュを得る。また、入力された文字列と1文字だけ異なる文字列を全て生成し、これらの文字列全てから対応するハッシュを得る。これらのハッシュは近傍ハッシュ群を形成する。事前に得られている正しい主ハッシュと、認証時に入力された文字列に関連する主ハッシュおよび近傍ハッシュ群の要素を比較する。
図5の場合、認証時に入力された文字列「passW0rd」に対応するハッシュは正しい主ハッシュとは異なるが、近傍ハッシュ群の要素の一つが正しい主ハッシュと一致する。この場合、入力された文字列は、正規ユーザが誤って入力した文字列である可能性が高いと判定される。
しかし、この方法では、必要となる類似ハッシュ値の数が多すぎ、ハッシュ値生成の処理量または生成したハッシュ値を格納する容量が膨大になってしまう。具体的には、文字の種類がm、元データを構成する文字の数が最大nだったとすると、1文字違いの類似を表現するだけでもおよそm×n個のハッシュ値が必要になる。たとえば、ASCIIコードでは制御文字を除く文字はおよそ100種類あり、それら文字から構成される元データが最大16文字だとすると、およそ1600個の類似ハッシュ値が必要となる。
図6は、開示の実施形態にしたがう近傍ハッシュの生成方法の例の概略を示す図である。
本方法では、たとえば、比較対象の文字列aと文字列bがあるとする。このとき、まず文字列aの各位置の文字をワイルドカード文字に置き換えてからハッシュ値を計算する。ワイルドカード文字とは、本方式において任意の文字に合致することを表現するための特別な文字で、任意の文字の代替として使用される文字である。ワイルドカード文字は、元データに使われ得る文字でなければ何でもよく、あらかじめ一つを決めておく。こうして計算されたハッシュ値をまとめて、文字列aの類似ハッシュ値集合Aとする。文字列bに対しても同様に類似ハッシュ値集合Bを計算する。類似比較をするには、Aの要素のいずれかとBの要素のいずれかが一致するかどうかを比較する。一致するものがあれば、文字列aとbは1文字違いであることがわかる。
図6の例では、事前に正しいパスワードである文字列「p@ssW0rd」の各位置をワイルドカード「_」に置換した文字列を生成する。そして、これらの文字列にハッシュ関数h”を作用させておく。
認証時も、入力された文字列「passW0rd」の各位置をワイルドカード「_」に置換した文字列を生成する。そして、これらの文字列にハッシュ関数h”を作用させる。そして、事前に得られているハッシュと、認証時に得たハッシュ値のどれかが一致するなら、入力されたパスワードは1文字違いである。
これらの処理は、認証時に入力された文字列に対応するハッシュが、正しいパスワードに対応するハッシュとは異なることを判定した後に処理されても良いし、同時に処理されても良い。
この方法では、パスワードをn文字とすると、事前に保存するハッシュの数はn個、認証時に生成するハッシュの数もn個、そしてn回の比較よって、正規ユーザによるパスワード入力ミスと攻撃者によるパスワード入力ミスを見分けることができる。実際には文字列は最大16文字などと決めて、足りない分はパディングしても良い。
また、前記の方法で類似ハッシュ値集合を作ると、集合の大きさ(すなわち集合に含まれるハッシュの数)から元の文字列の長さ(すなわち文字数)がわかってしまう。これを防ぐには、元の文字列にパディングを施してから各文字の置換を行う。パディングの処理は、ワイルドカード文字と同様にパディングを表すための特別なパディング文字を用意して、既定の文字数に達するまで元の文字列の後ろに付け足す。もしも元の文字列が既定の文字数よりも長ければ、既定数を超える文字は取り除いて短くしても良いし、あるいは文字列はそのままでワイルドカード文字へ置換する文字位置を規定文字数までで止めても良い。
図7は、近傍ハッシュの生成方法の例を示す図である。
ワイルドカード文字を元の文字と置き換えるだけでなく、元の文字の前または後に挿入してもよい。これにより、1文字多いまたは少ないという類似も検出できる。前記のパディングで長さを揃えている場合は、挿入した分末尾の文字を取り除く。また、そうすると、パディング文字を置換した場合とパディング文字の前に挿入した場合とで同じ文字列が作られてしまい、類似ハッシュ値同士が一致する組数からパディング文字が何文字あるか、すなわち元の文字列が何文字かがわかってしまうため、これを避けるために、挿入位置がパディング文字の直前である場合は敢えて文字列が一致しないように変更を加える。文字列の最初にパディング文字を加えても良い。
また、ワイルドカード文字を複数の位置で置き換えまたは挿入することもできる。これにより、1文字だけでなく複数文字の違いや増加・減少も類似と見なして検出することができる。
図7の例では、元の8文字の文字列「abcdefgh」の後ろにパディング文字「.」を挿入し16文字の文字列「abcdefgh........」を生成する。そして、この16文字の文字列「abcdefgh........」の各位置をワイルドカード文字「_」に置換した後にハッシュ関数を作用させる(ハッシュする)。たとえば、16文字の文字列「abcdefgh........」の第1文字目をワイルドカードに置換すると、「_bcdefgh........」が得られ、これにハッシュ関数を作用させハッシュ値「c6e095202b97」を得る。
パディング文字は「.」、ワイルドカード文字は「_」としたが、パスワードに使われない文字なら何でも良く、また何バイトでも良い。制御文字であっても良い。
<装置の構成>
図8〜11を参照して、上記のような機能を有する暗号処理装置の例を説明する。
暗号処理装置10は電子計算機上のソフトウェアとして実現されるものとするが、ハードウェアとして実現されても構わない。
図8は、類似比較を行う暗号処理装置10の構成の例を示す図である。暗号処理装置10は、第1の類似ハッシュ生成部102、第2の類似ハッシュ生成部104、および類似ハッシュ比較部106を含む。類似ハッシュ比較部106は、第1の類似ハッシュ生成部102および第2の類似ハッシュ生成部104と電気的に接続される。第1の類似ハッシュ生成部102と第2の類似ハッシュ生成部104はそれぞれ、入力文字列Aおよび入力文字列Bから主ハッシュ値H(A)、H(B)および類似ハッシュデータ(近傍ハッシュ群)NA、NBを生成する。類似ハッシュ比較部106は、複数の入力文字列から作られた主ハッシュ値と類似ハッシュデータの組を使い、両者の一致結果および類似度を出力する。図8では、類似ハッシュ比較部106は、第1の類似ハッシュ生成部102の出力である主ハッシュ値H(A)と類似ハッシュデータNA、第2の類似ハッシュ生成部104の出力である主ハッシュ値H(B)と類似ハッシュデータNBを比較する。
第1の類似ハッシュ生成部102、第2の類似ハッシュ生成部104、および類似ハッシュ比較部106は互いに、物理的にまったく別々に配置されても良いし、ごく近くに配置されても良い。また、これらが一つの筐体内に収められていても良いし、互いに別個の筐体に収められても良い。互いに別個の筐体に収められている場合、ある場所で作られた類似ハッシュデータを通信によって移動させて、別の場所で比較に用いる。また第1の類似ハッシュ生成部102と第2の類似ハッシュ生成部104のいずれかが、類似ハッシュ比較部106と同じ筐体に収められていても良い。ここで、同じ筐体に収められていなくても、近い位置にあれば良いものとする。たとえば、同じ建物であったり、同じ組織内であってりしていても良い。また、物理的な配置だけでなく時間的な配置についても同様で、生成された類似ハッシュデータをすぐに比較に使っても構わないし、保存しておいて後で比較しても構わない。図の二つの類似ハッシュデータの一方は保存しておいて、もう一方は比較時に生成しても構わない。
図9は、図8の類似ハッシュ生成部102、104の機能ブロックの例を示す図である。類似ハッシュ生成部102と104は同一または類似の構成を有し、以下では、類似ハッシュ生成部102を例に説明をする。類似ハッシュ生成部102は、入力文字受付部1020、第1ハッシュ関数作用部1022、類似文字列群生成部1024、および第2ハッシュ関数作用部1026を含む。また、類似ハッシュ生成部104は、入力文字受付部1040、第1ハッシュ関数作用部1042、類似文字列群生成部1044、および第2ハッシュ関数作用部1046を含み、これらはそれぞれ、入力文字受付部1020、第1ハッシュ関数作用部1022、類似文字列群生成部1024、および第2ハッシュ関数作用部1026と同一または類似の構成および/または機能を有する。
類似ハッシュ生成部102は、入力文字列を受け取り、主ハッシュ値と類似ハッシュ値群を出力する。
入力文字受付部1020は、入力された文字列を入力文字列として受け取り、受け取った入力文字列を第1ハッシュ関数作用部1022および類似文字列群生成部1024に出力する。
第1ハッシュ関数作用部1022では、入力文字受付部1020から受けた入力文字列にハッシュ関数を作用させ、得られたハッシュ値を主ハッシュ値として出力する。
類似文字列群生成部1024は、図7に示したように、入力文字列を改変して複数の類似文字列を生成する。上述のように、類似文字列にワイルドカード文字が使用される。類似文字列群生成部1024で生成された類似文字列は、第2ハッシュ関数作用部1026に出力される。
第2ハッシュ関数作用部1026では、類似文字列群生成部1024から受けた類似文字列にハッシュ関数を作用させ、得られたハッシュ値を類似ハッシュデータとして出力する。
第1ハッシュ関数作用部1022と第2ハッシュ関数作用部1026で用いられるハッシュ関数は、暗号学的ハッシュ関数であれば良い。また、第1ハッシュ関数作用部1022と第2ハッシュ関数作用部1026は、同じアルゴリズムでなくても構わない。さらに、第1ハッシュ関数作用部1022と第2ハッシュ関数作用部1026は、一般にソルトと呼ばれる攪拌情報を加えるアルゴリズムを用いても良いし、鍵情報を用いるHMAC(ハッシュによるメッセージ認証コード)アルゴリズムであっても構わない。第1ハッシュ関数作用部1022と第2ハッシュ関数作用部1026は、まったく同じ構成および/または機能であるよりも、アルゴリズムそのものや付随するソルトまたは鍵情報の値が異なるほうが安全性は高く、望ましい。
図10は類似ハッシュ比較部106の構成の例を示す図である。類似ハッシュ比較部106は、二つの入力文字列A、Bに対するそれぞれの主ハッシュ値H(A)、H(B)と類似ハッシュデータの組NA、NBを入力として受け付け、一致または不一致を表す一致結果と、類似度を出力する。
類似ハッシュ比較部106は、主ハッシュ値比較部1060および類似ハッシュデータ比較部1062を含む。
主ハッシュ値比較部1060は、主ハッシュ値H(A)とH(B)を比較し、同じ値であれば一致、さもなければ不一致と判断する。
類似ハッシュデータ比較部1062は、類似ハッシュデータを比較して類似度を出力する。
図11は類似ハッシュデータの構成の例である。類似ハッシュデータは、類似度と類似ハッシュ値の組を一つ以上含む。類似度は、類似ハッシュ値が元の文字列から何文字分変化した文字列に対応するかを示している。類似ハッシュ値は、第1ハッシュ関数作用部1022と第2ハッシュ関数作用部1026の出力であり、長さや形式は用いられるハッシュ関数に依存する。図11では、用いられるアルゴリズムとしてSHA−1を想定し、80ビット(20バイト)のハッシュ値を40桁の16進数として表現している。
このように、暗号処理装置10は、第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成する第1の類似文字列生成部1022と、類似文字列に暗号化関数を作用させて第1の比較暗号値を生成する第1の暗号化部1026と、第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成する第2の類似文字列生成部1042と、第2の類似文字列に暗号化関数を作用させて第2の比較暗号値を生成する第2の暗号化部1046と、第1の比較暗号値と第2の比較暗号値を比較して、第1の入力文字列と第2の入力文字列の類似度を判定する類似暗号比較部106を含んでいる。
この場合、ある文字列の「類似度」とは、パディング文字に挿入または置換された文字数であっても良い。そして、ある文字列が、別の文字列について、パディング文字に挿入または置換された文字数が所定の文字数以下であるとき、互いに「近傍」にあると定義しても良い。
上記では、暗号化関数としてハッシュ関数を用いたが、別の暗号化関数を用いても良い。ハッシュ関数作用部は単に暗号化部、類似ハッシュ比較部は単に類似暗号比較部と呼ぶこともある。
上記では、2つの文字列にともにワイルドカードを挿入または文字列の少なくとも1文字をワイルドカードに置換して得られる文字列群を暗号化して得られる2つの暗号化値群を比較した。しかしながら、2つの文字列のうち一方のみから暗号化値群を生成し、もう一方の文字列の暗号化値と比較しても良い。
図12は、暗号処理装置10または、第1の類似ハッシュ生成部102、第2の類似ハッシュ生成部104、および/もしくは類似ハッシュ比較部106の構成の例を示す構成図である。図12は、暗号処理装置10または、第1の類似ハッシュ生成部102、第2の類似ハッシュ生成部104、および/もしくは類似ハッシュ比較部106として使用可能なコンピュータの一例の構成図である。
このコンピュータ500は、MPU502、ROM504、RAM506、ハードディスク装置508、入力装置510、表示装置512、インタフェース装置514、及び記録媒体駆動装置516を備えている。なお、これらの構成要素はバスライン520を介して接続されており、MPU502の管理の下で各種のデータを相互に授受することができる。
MPU(Micro Processing Unit)502は、このコンピュータ500全体の動作を制御する演算処理装置であり、コンピュータ500の制御処理部として機能する。
ROM(Read Only Memory)504は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。MPU502は、この基本制御プログラムをコンピュータ500の起動時に読み出して実行することにより、このコンピュータ500の各構成要素の動作制御が可能になる。
RAM(Random Access Memory)506は、MPU502が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置508は、MPU502によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。MPU502は、ハードディスク装置508に記憶されている所定の制御プログラムを読み出して実行することにより、後述する各種の制御処理を行えるようになる。
入力装置510は、例えばマウス装置やキーボード装置であり、図6のシステムの利用者により操作されると、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報をMPU502に送付する。
表示装置512は例えば液晶ディスプレイであり、MPU502から送付される表示データに応じて各種のテキストや画像を表示する。
インタフェース装置514は、このコンピュータ500に接続される各種機器との間での各種情報の授受の管理を行う。
記録媒体駆動装置516は、可搬型記録媒体518に記録されている各種の制御プログラムやデータの読み出しを行う装置である。MPU502は、可搬型記録媒体520に記録されている所定の制御プログラムを、記録媒体駆動装置516を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体218としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)などがある。
このようなコンピュータ500を用いて暗号処理装置を構成するには、例えば、上述の各処理部における処理をMPU502に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置508若しくは可搬型記録媒体520に予め格納しておく。そして、MPU502に所定の指示を与えてこの制御プログラムを読み出させて実行させる。こうすることで、暗号処理装置10または、第1の類似ハッシュ生成部102、第2の類似ハッシュ生成部104、および/もしくは類似ハッシュ比較部106が備えている機能がMPU502により提供される。
このような暗号処理装置10を用いることによって、2つの文字列のハッシュ値、たとえば正規のパスワードと入力されたパスワードのハッシュ値を比較することによって、その2つの文字列が「近傍」にあるかどうかを判定することができる。
また、正規ユーザによるパスワード入力ミスと攻撃者によるパスワード入力ミスを見分けることができる。
上記暗号処理装置をパスワード認証のための装置として用いる場合、正規ユーザが誤ったパスワードを入力すると、入力されたパスワードは、部分的な文字列が一致するなど、正しいパスワードの「近傍」にあることが多い。ここで2つの文字列が互いに「近傍」にあるとは、全体の文字列の比較的高い割合の部分が一致することである。逆に、セキュリティを破ってログインしようとする攻撃者から入力されるパスワードが、正しいパスワードの近傍にあるケースは多くない。上記の装置によれば、正しいパスワードについて何文字かをワイルドカード文字に置換した文字列から得られるハッシュ値と、入力された文字列について何文字かをワイルドカード文字に置換した文字列から得られるハッシュ値とを比較することによって、入力ミスか総当たり攻撃かを判別することができる。
<処理の例>
図12〜15を参照して、処理の例を説明する。本処理では、ワイルドカード文字と呼ばれる特別な文字を使う。ワイルドカード文字は、あらかじめ一つに決めておく必要があるが、本来の入力文字列に決して含まれない文字であれば何でもよい。一般的にはASCIIコードで0から31の範囲および127にある制御文字は入力文字列に使われることが少ないため、これらのいずれかを使うことができる。
また以降の説明では、類似比較できる最大文字数の既定値を16とする。さらに既定の長さにそろえるために使われるパディング文字もワイルドカード文字と同様に予め決めておく。パディング文字はワイルドカード文字とは別の文字であることが好ましい。
また、装置が図12に示されているような汎用コンピュータである場合には、図12〜15および/または下記の説明は、そのような処理を行う制御プログラムを定義する。すなわち、以下では、下記に説明する処理を汎用コンピュータに行わせる制御プログラムの説明でもある。
図12は、類似文字列生成処理での処理の流れを示すフローチャートの例である。図12は、入力文字列のうち1文字が別の文字に入れ替わっているような類似を検出できる例を示す。
S102で入力文字列受付部1020(1040)は、入力文字列sを受け取る。たとえば、s=「abcd」とする。
S104で入力文字列受付部1020(1040)は、S102で受け取った入力文字列sの末尾にパディング文字を既定文字数に達するまで追加する。s=「abcd」の場合は、パディング文字を「.」とすると、s=「abcd............」とする。
次に、S106で類似文字列群生成部1024(2044)は、文字位置を表す変数iを1に初期化する。
S108〜S112は、ループを構成しており、文字位置を表す変数iの値を1ずつ増加させながらループ処理を行う。ループはiの値が文字列sの長さを超えるまで繰り返す。
S108で類似文字列群生成部1024(2044)は、文字列sのi文字目をワイルドカード文字、たとえば「?」に置換し、類似ハッシュデータとして、類似度=1、文字列tの組(1、t)を出力する。
たとえば、文字列s=「abcd............」の第1文字目をワイルドカード文字「?」に置き換え、類似ハッシュデータとして、類似度=1、文字列t=「?bcd............」の組(1、t)が出力される。
S110で類似文字列群生成部1024(2044)は、文字位置を表す変数iを1つ増加させる。
S112で類似文字列群生成部1024(2044)は、文字位置を表す変数iが文字列sの文字数を超えているかを判定する。もし、本判定の結果が“YES”、すなわち、文字位置を表す変数iがsの文字数を超えていれば、処理を終了する。もし、本判定の結果が“NO”、すなわち、文字位置を表す変数iがsの文字数を超えていなければ、S108に戻る。
S108〜S112の処理によって、類似度=1、文字列t=「?bcd............」の組から、類似度=1、文字列t=「abcd...........?」まで、16個の類似ハッシュデータが生成される。
図13は、1文字増減に対応した類似文字列生成処理での処理の流れを示すフローチャートの例である。本処理は、類似文字列群生成部1024(2044)によって処理される。
S202〜S206までは、上述のS102〜S106の処理と同一である。
S208で類似文字列群生成部1024(2044)は、文字列sのi文字目の直前にワイルドカード文字、たとえば「?」を挿入し、最後の文字を削除した文字列uを作る。たとえば、文字列s=「abcd............」でi=1であれば、文字列u=「?abcd...........」である。
次のS210で類似文字列群生成部1024(2044)は、文字列uのi+1 文字目がパディング文字である場合、またはi文字目が末尾の文字でi+1文字目が存在しない場合、文字列uの先頭にパディング文字を追加する。文字列s=「abcd............」でi=5であれば、文字列u=「.abcd?.........」である。この場合、末尾のパディング文字は削除されてもよい。
S212で類似文字列群生成部1024(2044)は、類似ハッシュデータとして、類似度=1、文字列uの組(1、u)を出力する。
S214〜S216の処理は、S110〜S112の処理と同一である。
S214で類似文字列群生成部1024(2044)は、文字位置を表す変数iを1つ増加させる。
S216で類似文字列群生成部1024(2044)は、文字位置を表す変数iが文字列sの文字数を超えているかを判定する。もし、本判定の結果が“YES”、すなわち、文字位置を表す変数iがsの文字数を超えていれば、処理を終了する。もし、本判定の結果が“NO”、すなわち、文字位置を表す変数iがsの文字数を超えていなければ、S208に戻る。
図14は、2文字増減に対応した類似文字列生成処理での処理の流れを示すフローチャートの例である。図14は、入力文字列のうち2文字が別の文字に入れ替わっているような類似を検出できる例を示す。本処理は、類似文字列群生成部1024(2044)によって処理される。
この処理では、図13に示した1文字変更の場合と似ているが、すべての(i、j)の組(ただし、1≦i<j≦nで、nはパディング後の文字列sの長さ)に関してi文字目とj文字目をワイルドカード文字に置き換えた文字列tを作るため、二重のループで処理を行い、類似度2と文字列tの組を出力する。
S302〜S306までは、上述のS102〜S106の処理と同一である。
S308〜S314は、(第2の)文字位置を表す変数jに関するループを構成しており、文字位置を表す変数jの値を1ずつ増加させながらループ処理を行う。ループはjの値が文字列sの長さを超えるまで繰り返す。
S308では、文字位置を表(第2の)す変数jをi+1に初期化する。
S310で類似文字列群生成部1024(2044)は、文字列sのi文字目をワイルドカード文字、たとえば「?」に置換し、類似ハッシュデータとして、類似度=2、文字列tの組(2、t)を出力する。たとえば、文字列s=「abcd............」でi=1、j=2であれば、文字列t=「??cd...........」であり、i=1、j=16であれば、文字列t=「?bcd..........?」である。
S312で類似文字列群生成部1024(2044)は、文字位置を表す(第2の)変数jを1つ増加させる。
S314で類似文字列群生成部1024(2044)は、文字位置を表す(第2の)変数jが文字列sの文字数を超えているかを判定する。もし、本判定の結果が“YES”、すなわち、文字位置を表す(第2の)変数jがsの文字数を超えていれば、S316に進む。もし、本判定の結果が“NO”、すなわち、文字位置を表す(第2の)変数jがsの文字数を超えていなければ、S310に戻る。
S316で類似文字列群生成部1024(2044)は、文字位置を表す(第1の)変数iを1つ増加させる。
S318で類似文字列群生成部1024(2044)は、文字位置を表す(第1の)変数iが文字列sの文字数を超えているかを判定する。もし、本判定の結果が“YES”、すなわち、文字位置を表す(第1の)変数iがsの文字数を超えていれば、処理を終了する。もし、本判定の結果が“NO”、すなわち、文字位置を表す(第1の)変数iがsの文字数を超えていなければ、S308に戻る。
図15は、比較処理での処理の流れを示すフローチャートの例である。
この処理は、入力された類似ハッシュデータをそれぞれNA、NBとしたとき、NAの中の類似ハッシュ値とNBの中の類似ハッシュ値が等しいものを探し、その中で対応する類似度のうちもっとも小さい値を出力する、という処理である。基本的にハッシュ値の元の文字列(第2ハッシュ関数作用部1026(1046)の入力)に同じ数のワイルドカード文字が含まれているときのみハッシュ値も一致するので、類似度が異なるハッシュ値同士が一致することはまずない。この処理は様々な方法で実現でき、たとえば類似ハッシュ値の集合同士から共通要素を取り出してから、そのうちで類似度の小さいものを探す、という方法でもよいが、以下ではあらかじめ類似度の小さい順にソートしてから前から順番に探す方法を示す。
S402で類似ハッシュ比較部106は、類似ハッシュデータNAとNBを、それぞれ類似度昇順でソートする。
S404で類似ハッシュ比較部106は、類似ハッシュデータNAの先頭から順に類似度dA、ハッシュ値H(A)を取り出す。
S406で類似ハッシュ比較部106は、類似ハッシュデータNBの先頭から順に類似度dB、ハッシュ値H(B)を取り出す。
S408で類似ハッシュ比較部106は、dAとdBが等しく、かつH(A)とH(B)が等しいかを判定する。もし、本判定の結果が“NO”、すなわち、dAとdBが等しくない、またはH(A)とH(B)が等しくない場合には、S412に進む。また、本判定の結果が“YES”、すなわち、dAとdBが等しく、かつH(A)とH(B)が等しい場合には、S410に進む。
S410で類似ハッシュ比較部106は、類似度dA=dBを出力して、処理を終了する。
次のS412で類似ハッシュ比較部106は、類似ハッシュデータNBに残りの組があるかを判定する。もし、本判定の結果が“YES”、すなわち、類似ハッシュデータNBに残りの組がある場合には、S406に戻る。もし、本判定の結果が“NO”、すなわち、類似ハッシュデータNBに残りの組がない場合には、S414に進む。
次のS412で類似ハッシュ比較部106は、類似ハッシュデータNAに残りの組があるかを判定する。もし、本判定の結果が“YES”、すなわち、類似ハッシュデータNAに残りの組がある場合には、S404に戻る。もし、本判定の結果が“NO”、すなわち、類似ハッシュデータNAに残りの組がない場合には、S416に進む。
S416で類似ハッシュ比較部106は、類似ハッシュデータNAと類似ハッシュデータNBには類似のものがないという意味で、非類似であるという結果を出力して、処理を終了する。
上記のような装置および方法により、2つ以上の入力に対応する暗号学的ハッシュ値の集合同士を比較するだけで、入力が互いに「近傍」にあるか否か、たとえば、それらの元データがn文字違いなどの条件で類似しているかどうかを知ることが可能である。特に、上記のような装置および方法では、元の値を秘匿したまま、入力が互いに「近傍」にあるか否かを判定することができる。
さらに、類似しているかどうかを知ることができるという点を除けば、元データや元データ間の関係がわからないという安全性は保たれる。
上記のような装置および方法では、正しいパスワードの「近傍」にあるパスワード入力を判定するために必要とされるハッシュ値の数が少なくて済む。元データを構成する文字の数を最大nとすると、本方式では2×n個のハッシュ値で済ますことができる。
暗号化されていない2つの元データについて、2つのデータに暗号学的ハッシュ関数を作用させて得られる2つの暗号化データを比較する場合、元データが少しでも異なるとハッシュ値はまったく異なる値になるため、元データが類似していることを知ることができない。しかし、上記の暗号処理装置、方法を用いることによって、2つの元データが互いに類似しているのか否かを、暗号化データの比較によって判定することができる。
さらに、上記の暗号処理装置、方法では、2つの元データが互いに類似しているのか否かのもならず、2つの元データの「類似度」を、暗号化データの比較によって得ることができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成する第1の類似文字列生成部と、
前記第1の類似文字列に暗号化関数を作用させて第1の比較暗号値を生成する第1の暗号化部と、
第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成する第2の類似文字列生成部と、
前記第2の類似文字列に前記暗号化関数を作用させて第2の比較暗号値を生成する第2の暗号化部と、
前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定する類似暗号比較部と、
を含む暗号処理装置。
(付記2)
第1の前記類似文字列群生成部および/または第2の前記類似文字列群生成部は、複数の類似文字列を生成する、付記1に記載の暗号処理装置。
(付記3)
さらに、
前記第1の入力文字列および前記第2の入力文字列が所定の長さより短い場合に、前記所定の長さに達するまでパディングするために特定のパディング文字を挿入する入力文字列受付部を含む付記1または2に記載の暗号処理装置。
(付記4)
前記似文字列群生成部は、前記ワイルドカードの挿入および/または前記ワイルドカードへの置換の回数に依存して、前記入力文字列に対する類似度を出力する付記1乃至3のいずれか一項に記載の暗号処理装置。
(付記5)
前記第1の入力文字列および前記第2の入力文字列は、パスワードである付記1乃至4のいずれか一項に記載の暗号処理装置。
(付記6)
前記ワイルドカード文字は、制御文字である付記1乃至5のいずれか一項に記載の暗号処理装置。
(付記7)
前記暗号化関数はハッシュ関数である、付記1乃至6のいずれか一項に記載の暗号処理装置。
(付記8)
コンピュータによって実行される暗号処理方法であって、
第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成することと、
前記第1の類似文字列に暗号化関数を作用させて第1の比較暗号値を生成することと、
第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成することと、
前記第2の類似文字列に前記暗号化関数を作用させ第2の比較暗号値を生成することと、
前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定することを、
を含む暗号処理方法。
(付記9)
前記類似文字列を生成することは、複数の類似文字列を生成する、付記6に記載の暗号処理方法。
(付記10)
さらに、
前記第1の入力文字列および前記第2の入力文字列が所定の長さより短い場合に、前記所定の長さに達するまでパディングするために特定のパディング文字を挿入することを含む付記7または8に記載の暗号処理方法。
(付記11)
前記類似文字列を生成することは、前記ワイルドカードの挿入および/または前記ワイルドカードへの置換の回数に依存して、前記入力文字列に対する類似度を出力する付記7乃至9のいずれか一項に記載の暗号処理方法。
(付記12)
前記第1の入力文字列および前記第2の入力文字列は、パスワードである付記7乃至10のいずれか一項に記載の暗号処理方法。
(付記13)
前記ワイルドカード文字は、制御文字である付記7乃至11のいずれか一項に記載の暗号処理方法。
(付記14)
前記暗号化関数はハッシュ関数である、付記7乃至13のいずれか一項に記載の暗号処理方法。
(付記15)
第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成し、
前記第1の類似文字列に暗号化関数を作用させて第1の比較暗号値を生成し、
第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成し、
前記第2の類似文字列に前記暗号化関数を作用させて第2の比較暗号値を生成し、
前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定する
処理をコンピュータに実行させるプログラム。
(付記16)
前記類似文字列を生成させる処理では、複数の類似文字列を生成させる処理をコンピュータに実行させる付記12に記載のプログラム。
(付記17)
さらに、
前記第1の入力文字列および前記第2の入力文字列が所定の長さより短い場合に、前記所定の長さに達するまでパディングするために特定のパディング文字を挿入する処理をコンピュータに実行させる付記13または14に記載のプログラム。(付記18)
前記類似文字列を生成させる処理では、前記ワイルドカードの挿入および/または前記ワイルドカードへの置換の回数に依存して、前記入力文字列に対する類似度を出力させる処理をコンピュータに実行させる付記13乃至15のいずれか一項に記載のプログラム。
(付記19)
前記第1の入力文字列および前記第2の入力文字列は、パスワードである付記13乃至16のいずれか一項に記載のプログラム。
(付記20)
前記ワイルドカード文字は、制御文字である付記13乃至17のいずれか一項に記載のプログラム。
(付記21)
前記暗号化関数はハッシュ関数である、付記7乃至13のいずれか一項に記載のプログラム。
10 暗号処理装置
102 第1の類似ハッシュ生成部
104 第2の類似ハッシュ生成部
106 類似ハッシュ比較部
1020、1040 入力文字列受付部
1022、1042 第1ハッシュ関数作用部
1024、1044 類似文字列群生成部
1026、1046 第2ハッシュ関数作用部
1060 主ハッシュ比較部
1062 類似ハッシュ値群比較部

Claims (9)

  1. 第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成する第1の類似文字列生成部と、
    前記第1の類似文字列に暗号化関数を作用させて第1の比較暗号値を生成する第1の暗号化部と、
    第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成する第2の類似文字列生成部と、
    前記第2の類似文字列に前記暗号化関数を作用させて第2の比較暗号値を生成する第2の暗号化部と、
    前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定する類似暗号比較部と、
    を含む暗号処理装置。
  2. 第1の前記類似文字列群生成部および/または第2の前記類似文字列群生成部は、複数の類似文字列を生成する、請求項1に記載の暗号処理装置。
  3. さらに、
    前記第1の入力文字列および前記第2の入力文字列が所定の長さより短い場合に、前記所定の長さに達するまでパディングするために特定のパディング文字を挿入する入力文字列受付部を含む請求項1または2に記載の暗号処理装置。
  4. 前記似文字列群生成部は、前記ワイルドカードの挿入および/または前記ワイルドカードへの置換の回数に依存して、前記入力文字列に対する類似度を出力する請求項1乃至3のいずれか一項に記載の暗号処理装置。
  5. 前記第1の入力文字列および前記第2の入力文字列は、パスワードである付記1乃至4のいずれか一項に記載の暗号処理装置。
  6. 前記ワイルドカード文字は、制御文字である請求項1乃至5のいずれか一項に記載の暗号処理装置。
  7. 前記暗号化関数はハッシュ関数である、請求項1乃至6のいずれか一項に記載の暗号処理装置。
  8. コンピュータによって実行される暗号処理方法であって、
    第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成することと、
    前記第1の類似文字列に暗号化関数を作用させて第1の比較暗号値を生成することと、
    第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成することと、
    前記第2の類似文字列に前記暗号化関数を作用させ第2の比較暗号値を生成することと、
    前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定することを、
    を含む暗号処理方法。
  9. 第1の入力文字列に任意の文字として使用される第1のワイルドカード文字を挿入することで得られる文字列、または前記第1の入力文字列の少なくとも1文字を前記第1のワイルドカード文字に置換して得られる文字列を、第1の類似文字列として生成し、
    前記第1の類似文字列に暗号化関数を作用させて第1の比較暗号値を生成し、
    第2の入力文字列に任意の文字として使用される第2のワイルドカード文字を挿入することで得られる文字列、または前記第2の入力文字列の少なくとも1文字を前記第2のワイルドカード文字に置換して得られる文字列を、第2の類似文字列として生成し、
    前記第2の類似文字列に前記暗号化関数を作用させて第2の比較暗号値を生成し、
    前記第1の比較暗号値と前記第2の比較暗号値を比較して、前記第1の入力文字列と前記第2の入力文字列の類似度を判定する
    処理をコンピュータに実行させるプログラム。
JP2013004977A 2013-01-15 2013-01-15 暗号処理装置、方法およびプログラム Expired - Fee Related JP6040780B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013004977A JP6040780B2 (ja) 2013-01-15 2013-01-15 暗号処理装置、方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013004977A JP6040780B2 (ja) 2013-01-15 2013-01-15 暗号処理装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014137423A true JP2014137423A (ja) 2014-07-28
JP6040780B2 JP6040780B2 (ja) 2016-12-07

Family

ID=51414969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013004977A Expired - Fee Related JP6040780B2 (ja) 2013-01-15 2013-01-15 暗号処理装置、方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6040780B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180014774A (ko) * 2015-05-28 2018-02-09 알리바바 그룹 홀딩 리미티드 정보 입력 방법 및 장치
CN108243621A (zh) * 2016-10-27 2018-07-03 惠普发展公司,有限责任合伙企业 可替换物品认证
KR20230064796A (ko) * 2021-11-04 2023-05-11 고려대학교 산학협력단 가명 정보의 데이터 결합률 산출 시스템 및 방법
CN116132159A (zh) * 2023-02-02 2023-05-16 马上消费金融股份有限公司 数据加密方法、装置、电子设备及存储介质
JP7464499B2 (ja) 2020-10-28 2024-04-09 Kddi株式会社 コード化装置、コード化方法及びコード化プログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189485A (ja) * 1992-01-09 1993-07-30 Pfu Ltd キーワード検索方式
JP2001117661A (ja) * 1999-10-15 2001-04-27 Casio Comput Co Ltd 携帯型情報端末装置およびそのプログラム記録媒体
JP2003536320A (ja) * 2000-06-05 2003-12-02 フィーニックス テクノロジーズ リミテッド 複数のサーバを使用した遠隔パスワード認証のためのシステム、方法およびソフトウェア
JP2009169615A (ja) * 2008-01-15 2009-07-30 Hitachi Computer Peripherals Co Ltd データ漏洩防止方法及び該方法を適用した磁気ディスク装置
WO2011061862A1 (ja) * 2009-11-17 2011-05-26 株式会社日立製作所 生体情報を用いた認証システム及び認証装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189485A (ja) * 1992-01-09 1993-07-30 Pfu Ltd キーワード検索方式
JP2001117661A (ja) * 1999-10-15 2001-04-27 Casio Comput Co Ltd 携帯型情報端末装置およびそのプログラム記録媒体
JP2003536320A (ja) * 2000-06-05 2003-12-02 フィーニックス テクノロジーズ リミテッド 複数のサーバを使用した遠隔パスワード認証のためのシステム、方法およびソフトウェア
JP2009169615A (ja) * 2008-01-15 2009-07-30 Hitachi Computer Peripherals Co Ltd データ漏洩防止方法及び該方法を適用した磁気ディスク装置
WO2011061862A1 (ja) * 2009-11-17 2011-05-26 株式会社日立製作所 生体情報を用いた認証システム及び認証装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180014774A (ko) * 2015-05-28 2018-02-09 알리바바 그룹 홀딩 리미티드 정보 입력 방법 및 장치
KR102348769B1 (ko) * 2015-05-28 2022-01-06 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 정보 입력 방법 및 장치
CN108243621A (zh) * 2016-10-27 2018-07-03 惠普发展公司,有限责任合伙企业 可替换物品认证
JP2018537733A (ja) * 2016-10-27 2018-12-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 交換可能なアイテムの認証
CN108243621B (zh) * 2016-10-27 2021-01-05 惠普发展公司,有限责任合伙企业 可替换物品认证
US11001069B2 (en) 2016-10-27 2021-05-11 Hewlett-Packard Development Company, L.P. Replaceable item authentication
JP7464499B2 (ja) 2020-10-28 2024-04-09 Kddi株式会社 コード化装置、コード化方法及びコード化プログラム
KR20230064796A (ko) * 2021-11-04 2023-05-11 고려대학교 산학협력단 가명 정보의 데이터 결합률 산출 시스템 및 방법
KR102664104B1 (ko) * 2021-11-04 2024-05-08 고려대학교 산학협력단 가명 정보의 데이터 결합률 산출 시스템 및 방법
CN116132159A (zh) * 2023-02-02 2023-05-16 马上消费金融股份有限公司 数据加密方法、装置、电子设备及存储介质
CN116132159B (zh) * 2023-02-02 2024-04-09 马上消费金融股份有限公司 数据加密方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
JP6040780B2 (ja) 2016-12-07

Similar Documents

Publication Publication Date Title
CN103502992B (zh) 用于防篡改引导的系统和方法
JP6504013B2 (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
US8300828B2 (en) System and method for a derivation function for key per page
US8995653B2 (en) Generating a secret key from an asymmetric private key
JP6040780B2 (ja) 暗号処理装置、方法およびプログラム
US8472619B1 (en) Multiple validly decryptable messages
JP6927981B2 (ja) パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。
KR101078546B1 (ko) 범용 저장장치의 식별정보를 기반으로 하는 보안 데이터 파일 암호화 및 복호화 장치, 그를 이용한 전자 서명 시스템
JP2014072843A (ja) ワンタイムパスワード装置、システム及びプログラム
EP3637674A1 (en) Computer system, secret information verification method, and computer
CN111614467B (zh) 系统后门防御方法、装置、计算机设备和存储介质
CN113688399A (zh) 固件数字签名保护方法、装置、计算机设备及存储介质
WO2009129017A1 (en) Methods, apparatus and system for authenticating a programmable hardware device and for authenticating commands received in the programmable hardware device from a secure processor
US7809130B1 (en) Password recovery system and method
US20130031373A1 (en) Product authentication based upon a hyperelliptic curve equation and a curve pairing function
CN116305080B (zh) 一种密码通用检测方法
WO2018047120A1 (en) A system and method for data block modification detection and authentication codes
US10922292B2 (en) Metamorphic storage of passcodes
JP6246516B2 (ja) 情報処理システム
Molloy et al. Attack on the gridcode one-time password
CN115935299A (zh) 授权控制方法、装置、计算机设备和存储介质
Park et al. A study on the processing and reinforcement of message digest through two-dimensional array masking
JP2015082077A (ja) 暗号化装置、制御方法、及びプログラム
KR102256231B1 (ko) 디지털 포렌식 데이터 복호화 장치
EP3881214B1 (en) Change-tolerant method of generating an identifier for a collection of assets in a computing environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150903

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160719

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160915

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161024

R150 Certificate of patent or registration of utility model

Ref document number: 6040780

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees