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

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

Info

Publication number
JP2018098739A
JP2018098739A JP2016244630A JP2016244630A JP2018098739A JP 2018098739 A JP2018098739 A JP 2018098739A JP 2016244630 A JP2016244630 A JP 2016244630A JP 2016244630 A JP2016244630 A JP 2016244630A JP 2018098739 A JP2018098739 A JP 2018098739A
Authority
JP
Japan
Prior art keywords
mask
key
random number
decryption
generated
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
JP2016244630A
Other languages
English (en)
Other versions
JP6810348B2 (ja
Inventor
龍一 大堀
Ryuichi Ohori
龍一 大堀
武司 下山
Takeshi Shimoyama
武司 下山
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 JP2016244630A priority Critical patent/JP6810348B2/ja
Priority to US15/830,506 priority patent/US10904006B2/en
Priority to EP17206142.6A priority patent/EP3337084B1/en
Publication of JP2018098739A publication Critical patent/JP2018098739A/ja
Application granted granted Critical
Publication of JP6810348B2 publication Critical patent/JP6810348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/304Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy based on error correction codes, e.g. McEliece
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3231Biological data, e.g. fingerprint, voice or retina
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Abstract

【課題】同一人に関する複数の暗号文の保護を強化する。【解決手段】複数のマスクの中からマスク13を選択する。マスク13を用いて乱数14aを変換したマスク乱数15aを生成し、生体情報から生成された生体特徴コード16aとマスク乱数15aとから鍵17aを生成すると共に、マスク13を示すマスク情報を保存させる。マスク13またはマスク13と所定の関係を満たす他のマスクを用いて乱数14bを変換したマスク乱数15bを生成し、生体特徴コード16bとマスク乱数15bとから鍵17bを生成する。鍵17a,17bのうちの一方の鍵と誤り訂正符号化方法18aとを用いて暗号文19bを生成する。【選択図】図2

Description

本発明は暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラムに関する。
現在、秘密情報の保護やユーザ認証などの暗号処理に生体情報が利用されることがある。生体情報は、人間の身体的特徴または行動的特徴を示す情報である。身体的特徴としては、例えば、指紋、静脈、虹彩などが挙げられる。行動的特徴としては、例えば、筆跡などが挙げられる。生体情報を利用した典型的な暗号処理では、生体情報から生成された生体特徴コードを用いて鍵を生成し、生成された鍵を用いて暗号化や復号を行う。
例えば、秘密情報の保護では、暗号化時に取得した生体特徴コード(例えば、暗号化時に撮像した指紋画像や静脈画像などから生成した生体特徴コード)から暗号鍵を生成し、生成された暗号鍵を用いて秘密情報を暗号化する。そして、復号時に取得した生体特徴コード(例えば、復号時に撮像した指紋画像や静脈画像などから生成した生体特徴コード)から復号鍵を生成し、生成された復号鍵を用いて暗号文を復号する。また、例えば、ユーザ認証では、ユーザ登録時に取得した生体特徴コードから暗号鍵を生成し、生成された暗号鍵を用いてテンプレートを生成して認証データベースに保存しておく。そして、認証時に取得した生体特徴コードから復号鍵を生成し、生成された復号鍵を用いてテンプレートを正しく復号できたか否かによってユーザの同一性を判定する。
ここで、生体特徴コードは、取得タイミングが異なっても同一人からは類似するものが取得され、別人からは類似しないものが取得されるという強い識別性を有する。このような生体特徴コードは、任意に選択可能なユーザIDやパスワードなどと異なり、漏洩しても変更することが容易でない。このため、暗号データ処理システムから生体特徴コードが漏洩してしまうリスクを低減することが好ましい。このような観点から、ファジーコミットメント(Fuzzy Commitment)などのバイオメトリック暗号が提案されている。
提案のファジーコミットメントでは、秘密情報を誤り訂正符号化し、生成された符号に暗号化時に取得した生体特徴コードを加算することで暗号文を生成する。そして、復号時に取得した生体特徴コードを暗号文から減算し、減算結果を誤り訂正復号することで暗号文を復号する。暗号化時の生体特徴コードと復号時の生体特徴コードとの差が小さい場合、その差は軽微なノイズとして誤り訂正復号によって除去され、秘密情報が復元される。一方、暗号化時の生体特徴コードと復号時の生体特徴コードとの差が大きい場合、大きなノイズによって誤り訂正復号が失敗し、秘密情報は復元されない。
なお、生体情報を利用したユーザ認証において、暗号化装置と復号装置との間で認証情報を安全に送信する遠隔認証システムが提案されている。提案の遠隔認証システムの暗号化装置は、暗号化毎に数値キーを決定し、決定した数値キーと所定の一次鍵とから暗号鍵を生成し、暗号鍵を用いて生体情報を暗号化し、使用された数値キーを示す復号制御情報と暗号化された生体情報とを含む認証情報を送信する。遠隔認証システムの復号装置は、復号制御情報から数値キーを復元し、復元した数値キーと所定の一次鍵とから復号鍵を生成し、復号鍵を用いて暗号化された生体情報を復号する。
また、登録コストを低減した生体認証システムが提案されている。提案の生体認証システムは、登録時に取得した生体情報からマスター補助情報を生成してIC(Integrated Circuit)に書き込む。また、生体認証システムは、登録パスワードを生成して認証サーバに登録すると共に、マスター補助情報を変換することで登録パスワードに対応する補助情報を生成し、補助情報を認証端末に保存する。生体認証システムは、認証時に取得した生体情報と認証端末に保存された補助情報とから、認証端末において認証パスワードを生成し、認証サーバにおいて登録パスワードと認証パスワードを照合する。
特開2001−7802号公報 特開2007−148470号公報
Ari Juels and Martin Wattenberg, "A fuzzy commitment scheme", Proc. of the 6th ACM (Association for Computing Machinery) conference on Computer and Communications Security, pp. 28-36, 1999
同一人が複数の認証システムに登録する場合など、同一人に関する異なる秘密情報を独立に暗号化して保護したい場合がある。しかし、生体情報を利用した従来の暗号処理技術では、同一人の生体情報から生成される複数の鍵の類似性により、ある暗号文を復号するための復号鍵を用いて他の暗号文を意図せず復号できてしまうことがある。そのため、例えば、ある秘密情報を復元するための復号鍵が漏洩すると、当該復号鍵が不正に流用されて、同一人に関する別の秘密情報も漏洩してしまうリスクがある。また、例えば、ある認証システムで使用する復号鍵が漏洩すると、当該復号鍵が不正に流用されて、別の認証システムへの不正なログインが成功してしまうリスクがある。
1つの側面では、本発明は、同一人に関する複数の暗号文の保護を強化できる暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラムを提供することを目的とする。
1つの態様では、情報処理システムが実行する暗号データ処理方法が提供される。複数のマスクの中から第1のマスクを選択する。第1のマスクを用いて第1の乱数を変換した第1のマスク乱数を生成し、生体情報から生成された第1の生体特徴コードと第1のマスク乱数とから第1の鍵を生成すると共に、選択した第1のマスクを示すマスク情報を保存させる。マスク情報が示す第1のマスクまたは第1のマスクと所定の関係を満たす第2のマスクを用いて第2の乱数を変換した第2のマスク乱数を生成し、第2の生体特徴コードと第2のマスク乱数とから第2の鍵を生成する。第1の鍵および第2の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する。
1つの態様では、取得部と処理部とを有する暗号データ処理装置が提供される。また、1つの態様では、コンピュータに実行させる暗号データ処理プログラムが提供される。
1つの側面では、同一人に関する複数の暗号文の保護を強化できる。
第1の実施の形態の暗号データ処理装置の例を示すブロック図である。 第1の実施の形態のデータ変換例を示す図である。 第2の実施の形態の暗号データ処理システムの例を示す図である。 サーバ装置のハードウェア例を示すブロック図である。 サーバ装置とクライアント装置の機能例を示すブロック図である。 第1のテンプレートテーブルの例を示す図である。 第1のクライアント登録処理の手順例を示すフローチャートである。 第1のクライアント認証処理の手順例を示すフローチャートである。 第1のサーバ認証処理の手順例を示すフローチャートである。 サーバ装置による復号鍵流用例を示すシーケンス図である。 第2のテンプレートテーブルの例を示す図である。 第2のクライアント登録処理の手順例を示すフローチャートである。 第2のクライアント認証処理の手順例を示すフローチャートである。 第2のサーバ認証処理の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の暗号データ処理装置の例を示すブロック図である。
第1の実施の形態の暗号データ処理装置10は、生体情報を利用した暗号処理を行うセキュリティ装置である。暗号データ処理装置10は、例えば、秘密情報を暗号化して保存しておく情報処理システムやユーザ認証を行う認証システムに使用される。暗号データ処理装置10は、クライアントコンピュータなどのクライアント装置や端末装置でもよいし、サーバコンピュータなどのサーバ装置でもよい。
暗号データ処理装置10は、取得部11および処理部12を有する。
取得部11は、ユーザの生体情報を取得する。生体情報は、指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を示す。取得部11は、撮像装置やタッチパネルなどの入力デバイスでもよいし、入力デバイスに接続される入力インタフェースでもよいし、入力デバイスを有する他の装置から生体情報を受信する通信インタフェースでもよい。
処理部12は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAM(Random Access Memory)などのメモリに記憶されたプログラムを実行する。プログラムには、暗号データ処理プログラムが含まれる。複数のプロセッサの集合を「プロセッサ」と呼ぶこともある。
図2は、第1の実施の形態のデータ変換例を示す図である。
処理部12は、所定の条件を満たす複数のマスクの中からマスク13を選択する。各マスクの非零ビット数は、好ましくは、後述する誤り訂正符号化方法18aの訂正可能ビット数より大きく、当該訂正可能ビット数の2倍に1を加えたビット数以下とする。
処理部12は、乱数14aを選択し、マスク13を用いて乱数14aを変換したマスク乱数15aを生成する。乱数14aからマスク乱数15aへの変換は、マスク13を用いたマスク処理であり、例えば、マスク13と乱数14aの間でビット毎の論理積を算出する演算である。処理部12は、生体情報から生成された生体特徴コード16aとマスク乱数15aとから鍵17aを生成する。例えば、処理部12は、誤り訂正符号化方法18aとは異なる他の誤り訂正符号化方法を用いてマスク乱数15aを符号化し、生成された符号と生体特徴コード16aを合成することで鍵17aを生成する。他の誤り訂正符号化方法は、好ましくは、線形符号化方法である。生成された符号と生体特徴コード16aとの合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。
処理部12は、上記の選択したマスク13を示すマスク情報を保存させる。マスク情報は、マスク13そのものでもよいし、計算によりマスク13を特定するための間接的情報であってもよい。処理部12は、暗号データ処理装置10が有する記憶部にマスク情報を保存してもよいし、他の装置にマスク情報を保存させてもよい。
処理部12は、鍵17aを生成した後、乱数14bを選択し、マスク情報が示すマスク13またはマスク13と所定の関係を満たす他のマスクを用いて、乱数14bを変換したマスク乱数15bを生成する。乱数14bからマスク乱数15bへの変換は、マスク13または上記他のマスクを用いたマスク処理であり、例えば、マスク13または上記他のマスクと乱数14bの間でビット毎の論理積を算出する演算である。処理部12は、生体情報から生成された生体特徴コード16bとマスク乱数15bとから鍵17bを生成する。
例えば、処理部12は、上記他の誤り訂正符号化方法を用いてマスク乱数15bを符号化し、生成された符号と生体特徴コード16bを合成することで鍵17bを生成する。生成された符号と生体特徴コード16bとの合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。鍵17bの生成に使用する生体情報は、鍵17aの生成後に取得した生体情報など、鍵17aの生成に使用した生体情報と異なってよい。
ここで、鍵17aおよび鍵17bの一方が暗号鍵として使用され、鍵17aおよび鍵17bの他方が復号鍵として使用される。処理部12は、暗号鍵と誤り訂正符号化方法18aとを用いて秘密情報19aを暗号化し、暗号文19bを生成する。例えば、処理部12は、秘密情報19aを誤り訂正符号化方法18aを用いて符号化し、生成された符号を上記他の誤り訂正符号化方法を用いて更に符号化し、その符号と暗号鍵とを合成することで暗号文19bを生成する。生成された符号と暗号鍵との合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。
鍵17aが暗号鍵である場合、例えば、処理部12は、鍵17aを生成してから鍵17bを生成する前に暗号文19bを生成する。鍵17bが暗号鍵である場合、処理部12は、鍵17a,17bを生成してから暗号文19bを生成する。暗号データ処理装置10は、暗号データ処理装置10が有する記憶部に暗号文19bや復号鍵を保存してもよいし、他の装置に暗号文19bや復号鍵を送信してもよい。
処理部12は、誤り訂正符号化方法18aに対応する復号方法18bと復号鍵とを用いて暗号文19bを復号させる。処理部12が暗号文19bを復号してもよいし、他の装置に暗号文19bを復号させてもよい。暗号文19bの復号では、例えば、暗号文19bと復号鍵とを合成し、上記他の誤り訂正符号化方法に対応する他の復号方法を用いて復号し、その復号結果を復号方法18bを用いて更に復号する。暗号文19bと復号鍵との合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。
なお、復号方法18bおよび上記他の復号方法を用いて暗号文19bを復号する場合、第1の復号パスおよび第2の復号パスを含む複数の復号パスを実行してもよい。第1の復号パスでは、上記他の復号方法の復号結果そのものを復号方法18bを用いて復号する。第2の復号パスでは、上記他の復号方法の復号結果に対してマスク13または上記他のマスクを合成し、合成結果を復号方法18bを用いて復号する。その場合、復号パスによって生成された複数の復号結果のうちの高々1つが正しい復号結果となる。
第1の実施の形態の暗号データ処理装置10によれば、復号鍵の生成に暗号鍵と同一人の生体情報が使用された場合には暗号文19bが復号可能であり、別人の生体情報が使用された場合には暗号文19bが復号不可となる。また、復号鍵の生成に暗号鍵と同一または対応するマスクが使用された場合には、暗号文19bが復号可能となる。これは、乱数14a,14bが同一または対応するマスクで制限されると、マスク乱数15aとマスク乱数15bの差が復号方法18bによって訂正可能な軽微なノイズとなるためである。一方、復号鍵の生成に暗号鍵とは無関係なマスクが使用された場合には、暗号文19bが復号不可となる。これは、マスク乱数15aとマスク乱数15bの差が復号方法18bによって訂正不能な大きなノイズとなるためである。
よって、同一人に関する複数の暗号文に異なるマスクを適用することで、これら複数の暗号文の保護を強化することができる。例えば、ある暗号文を復号するための復号鍵が漏洩しても、マスクが異なるため同一人に関する他の暗号文は復号されない。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図3は、第2の実施の形態の暗号データ処理システムの例を示す図である。
第2の実施の形態の暗号データ処理システムは、生体情報を利用した暗号処理を行う情報処理システムである。この暗号データ処理システムは、サーバ装置100,100aおよびクライアント装置200,200aを含む。サーバ装置100,100aおよびクライアント装置200,200aは、ネットワーク30に接続されている。ネットワーク30は、LAN(Local Area Network)でもよいし、インターネットなどの広域ネットワークでもよい。サーバ装置100,100aおよびクライアント装置200,200aは、同一の施設に設置されてもよいし互いに異なる施設に設置されてもよい。サーバ装置100,100aは、データセンタなどの専用の情報処理施設に設置されてもよい。
サーバ装置100,100aは、暗号化された秘密情報を管理するサーバコンピュータである。サーバ装置100とサーバ装置100aとは、互いに独立に秘密情報を管理する。サーバ装置100,100aによって、同一ユーザについての異なる秘密情報が管理されることがある。サーバ装置100,100aは、生体情報および秘密情報を利用してユーザ認証(生体認証)を行う認証装置であってもよい。また、サーバ装置100,100aは、互いに異なる組織が運用するサーバ装置であってもよい。例えば、サーバ装置100,100aは、異なる組織の認証システムに属してもよい。
クライアント装置200,200aは、ユーザが操作する端末装置である。クライアント装置200,200aは、PC(Personal Computer)や携帯端末装置などの特定ユーザのみが使用する個人端末装置でもよいし、ATM(Automated Teller Machine)などの不特定ユーザが使用する共有端末装置でもよい。
クライアント装置200には、撮像装置211が接続されている。クライアント装置200aには、撮像装置211aが接続されている。撮像装置211,211aは、ユーザの身体的特徴または行動的特徴を表す生体画像を撮像する。身体的特徴には指紋、静脈および虹彩が含まれる。行動的特徴には筆跡が含まれる。クライアント装置200,200aは、暗号処理に利用する特徴の種類を予め決めておいてもよい。その場合、撮像装置211,211aは、予め決められた特徴を表す生体画像を効率的に撮像できるように、特徴の種類に応じた専用の形状を有していてもよい。例えば、暗号処理に静脈を利用する場合、撮像装置211,211aは、手のひらを撮像しやすい形状を有していてもよい。
クライアント装置200,200aは、暗号化の際、接続された撮像装置を用いてユーザの生体画像を取得し、生体画像から生体特徴コードを生成する。生体特徴コードは、生体画像から抽出された特徴情報を示す符号である。クライアント装置200,200aは、生成された生体特徴コードを用いて暗号鍵を生成し、ユーザから与えられる秘密情報を暗号鍵で暗号化する。クライアント装置200,200aは、生成された暗号文を何れかのサーバ装置に送信する。また、クライアント装置200,200aは、復号の際、接続された撮像装置を用いてユーザの生体画像を取得し、生体画像から生体特徴コードを生成する。クライアント装置200,200aは、生成された生体特徴コードを用いて復号鍵を生成し、復号鍵を何れかのサーバ装置に送信する。
第2の実施の形態では主に、サーバ装置100,100aおよびクライアント装置200,200aを用いて生体認証を行うことを想定する。ユーザ登録時、クライアント装置200,200aは、暗号文を含むテンプレートを何れかのサーバ装置に送信する。テンプレートは、ユーザの同一性を判定するときに参照されるデータである。テンプレートが漏洩してもテンプレートから生体特徴コードを抽出できないように、生体特徴コードが保護されている。サーバ装置100,100aは、テンプレートを受信すると、受信したテンプレートをデータベースに保存する。データベースは、各サーバ装置が有していてもよいし、サーバ装置100,100aの外部に存在してもよい。
ユーザ認証時、クライアント装置200,200aは、復号鍵を何れかのサーバ装置に送信する。サーバ装置100,100aは、復号鍵を受信すると、データベースに保存されたテンプレートから暗号文を抽出し、受信した復号鍵によって暗号文を復号することを試みる。サーバ装置100,100aは、暗号文を復号できた場合は認証成功と判定し、認証成功を示す認証結果を返信する。一方、サーバ装置100,100aは、暗号文を復号できなかった場合は認証失敗と判定し、認証失敗を示す認証結果を返信する。
クライアント装置200,200aは、認証結果を受信すると、認証結果に応じてユーザインタフェースを制御する。認証成功の場合、例えば、クライアント装置200,200aは、認証成功のメッセージをディスプレイに表示し、クライアント装置200,200aが提供するサービスの全ての利用を許可する。一方、認証失敗の場合、例えば、クライアント装置200,200aは、認証失敗のメッセージをディスプレイに表示し、クライアント装置200,200aが提供するサービスの一部または全部の利用を拒否する。
なお、登録に使用するクライアント装置と認証に使用するクライアント装置は、同一でもよいし異なってもよい。すなわち、暗号鍵の生成に使用するクライアント装置と復号鍵の生成に使用するクライアント装置は、同一でもよいし異なってもよい。例えば、あるユーザがクライアント装置200を使用して登録を行い、クライアント装置200aを使用して認証を行ってもよい。また、クライアント装置200を登録専用のクライアント装置とし、クライアント装置200aを認証専用のクライアント装置としてもよい。
図4は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置100は、CPU101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。サーバ装置100が有する上記ユニットは、バスに接続されている。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、サーバ装置100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合をマルチプロセッサまたはプロセッサと言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、暗号データ処理プログラムが含まれる。なお、サーバ装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、サーバ装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど様々な種類のディスプレイを用いることができる。
入力信号処理部105は、サーバ装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース107は、ネットワーク30に接続され、ネットワーク30を介してクライアント装置200,200aと通信を行うインタフェースである。通信インタフェース107は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
サーバ装置100aやクライアント装置200,200aも、サーバ装置100と同様のハードウェアを用いて実装できる。ただし、クライアント装置200には撮像装置211が接続され、クライアント装置200aには撮像装置211aが接続される。撮像装置211,211aは、入力デバイスの一種と言うこともできる。クライアント装置200,200aは、接続された撮像装置から生体画像を取得するインタフェースを有する。取得された生体画像は、例えば、RAMやHDDなどの記憶装置に格納される。
次に、暗号処理アルゴリズムの例を説明する。まず、ファジーコミットメントと呼ばれることがある第1の暗号処理アルゴリズムを説明する。その次に、第1の暗号処理アルゴリズムを修正した第2の暗号処理アルゴリズムを説明し、更に第2の暗号処理アルゴリズムを修正した第3の暗号処理アルゴリズムを説明する。なお、以下の暗号処理アルゴリズムの説明では、扱うデータとして主に2進数のビット列を想定する。
第1の暗号処理アルゴリズムでは、数式(1)に示すテンプレートがデータベースに登録される。数式(1)において、「c」は暗号文、「g」は誤り訂正符号化を行う符号化関数、「p」は平文である秘密情報、「B」は暗号化時に取得された生体特徴コード、「h」はハッシュ関数である。テンプレートは、暗号文cとハッシュ値h(p)を含む。暗号文cは、秘密情報pを符号化関数gで誤り訂正符号化し、その誤り訂正符号に生体特徴コードBを加算することで生成される。生体特徴コードBが暗号鍵である。ハッシュ値h(p)は、ハッシュ関数hを用いて秘密情報pから算出される。なお、2進数のビット列に対する加算および減算は、ビット毎に排他的論理和を算出する演算である。
Figure 2018098739
第1の暗号処理アルゴリズムでは、復号時には数式(2)に示す計算が行われる。数式(2)において、「p*」は復号結果、「g-1」は符号化関数gに対応する誤り訂正復号を行う復号関数、「B*」は復号時に取得された生体特徴コードである。復号結果p*は、テンプレートに含まれる暗号文cから生体特徴コードB*を減算し、その減算結果を復号関数g-1で誤り訂正復号することで生成される。生体特徴コードB*が復号鍵である。
Figure 2018098739
ここで、暗号化時の生体特徴コードBと復号時の生体特徴コードB*とは、使用する撮像装置の違いや撮像環境の違い、ユーザの姿勢の違いなどの要因で完全には一致しないことが多い。ただし、生体特徴コードB,B*は、同一人から取得された場合には互いに近似しており、別人から取得された場合には近似しない。すなわち、生体特徴コードB,B*は、同一人から取得された場合のみ互いに近似する。
生体特徴コードB,B*が近似している場合、両者のハミング距離(両者の差のハミング重み)は復号関数g-1の訂正可能ビット数θ(誤り訂正能力)以下になる。ハミング距離は、2つのビット列の間で値が異なるビットの数である。ハミング重みは、1つのビット列の中で値が「0」でないビット(非零ビット)の数である。2進数のビット列については、ハミング重みは値が「1」であるビットの数である。よって、生体特徴コードB,B*が近似している場合、生体特徴コードB,B*の差は誤り訂正符号g(p)に対して軽微なノイズとなり、復号結果p*は秘密情報pと一致する。
一方、生体特徴コードB,B*が近似していない場合、両者のハミング距離は復号関数g-1の訂正可能ビット数θを超える。よって、生体特徴コードB,B*が近似していない場合、生体特徴コードB,B*の差は誤り訂正符号g(p)に対して訂正不能なノイズとなり、復号結果p*は秘密情報pと一致しない。すなわち、生体特徴コードB,B*が同一人から取得された場合のみ、復号結果p*が秘密情報pと一致する。
第1の暗号処理アルゴリズムでは、数式(3)に示すように復号結果p*が秘密情報pと一致するか否か判定される。すなわち、ハッシュ関数hを用いて復号結果p*からハッシュ値h(p*)が算出され、ハッシュ値h(p*)とテンプレートに含まれるハッシュ値h(p)とが比較される。ハッシュ関数hの性質から、生体特徴コードB,B*が近似している場合、すなわち、生体特徴コードB,B*が同一人から取得された場合のみハッシュ値h(p),h(p*)が一致する。そこで、ハッシュ値h(p),h(p*)が一致した場合は認証成功と判定され、一致しない場合は認証失敗と判定される。
Figure 2018098739
第1の暗号処理アルゴリズムでは、テンプレートに秘密情報p自体は含まれておらず、生体特徴コードB自体も含まれていない。しかし、復号鍵が生体特徴コードB*であるため、クライアント装置とサーバ装置の間で生体特徴コードB*自体が送信される可能性がある。また、認証成功時には秘密情報pが一時的に抽出されることになるため、サーバ装置に侵入した攻撃者またはサーバ装置の管理者は、この秘密情報pとテンプレートに含まれる暗号文cから生体特徴コードBを復元できるおそれがある。そこで、次の第2の暗号処理アルゴリズムでは、生体特徴コードB,B*の保護を強化する。
第2の暗号処理アルゴリズムでは、数式(4)に示すテンプレートがデータベースに登録される。数式(4)において、「f」は符号化関数gとは異なる誤り訂正符号化を行う符号化関数、「R」は暗号化時に選択された乱数である。テンプレートは、暗号文cとハッシュ値h(p)を含む。暗号文cは、秘密情報pを符号化関数gで誤り訂正符号化し、その誤り訂正符号を更に符号化関数fで誤り訂正符号化し、その誤り訂正符号に暗号鍵を加算することで生成される。暗号鍵は、乱数Rを符号化関数fで誤り訂正符号化し、その誤り訂正符号に生体特徴コードBを加算することで生成される。
Figure 2018098739
上記のように、第2の暗号処理アルゴリズムでは誤り訂正符号化が二重に行われる。符号化関数fが示す誤り訂正符号としては線形符号を用いる。符号化関数gが示す誤り訂正符号としては線形符号または非線形符号を用いる。線形符号の例として、ハミング符号、BCH(Bose Chaudhuri Hocquenghem)符号、リードソロモン符号、ターボ符号、LDPC(Low Density Parity Check)符号、畳み込み符号などを挙げることができる。非線形符号の例として、NR符号、ナドラ符号、グリーン符号などを挙げることができる。符号化関数gが示す誤り訂正符号として線形符号を用いる場合に、符号化関数f,gの誤り訂正符号の種類は異なってもよいし同じであってもよい。
なお、符号化関数fが示す誤り訂正符号は線形符号であるため、f(g(p))+f(R)+Bはf(g(p)+R)+Bと等価である。暗号文cを生成するにあたり、f(g(p)),f(R)を算出してからf(g(p))+f(R)+Bを算出してもよいし、g(p)+Rを算出してからf(g(p)+R)+Bを算出してもよい。
第2の暗号処理アルゴリズムでは、復号時には数式(5)に示す計算が行われる。数式(5)において、「f-1」は符号化関数fに対応する誤り訂正復号を行う復号関数、「R*」は復号時に選択された乱数である。復号結果p*は、テンプレートに含まれる暗号文cから復号鍵を減算し、その減算結果を復号関数f-1で誤り訂正復号し、その復号結果を更に復号関数g-1で誤り訂正復号することで生成される。復号鍵は、乱数R*を符号化関数fで誤り訂正符号化し、その誤り訂正符号に生体特徴コードB*を加算することで生成される。数式(5)の計算過程において、符号化関数fの線形性からf(g(p))+f(R)−f(R*)はf(g(p)+R−R*)と変形されている。
Figure 2018098739
ここで、第1の暗号処理アルゴリズムと同様、生体特徴コードB,B*が近似している場合、生体特徴コードB,B*の差は誤り訂正符号f(g(p)+R−R*)に対して軽微なノイズとなり、復号関数f-1の復号結果はg(p)+R−R*に一致する。また、乱数R,R*は、ハミング距離が復号関数g-1の訂正可能ビット数θ以下になるよう選択されるものとする。すると、乱数R,R*の差は誤り訂正符号g(p)に対して軽微なノイズとなり、復号関数g-1の復号結果p*はpと一致する。そして、第2の暗号処理アルゴリズムでは、第1の暗号処理アルゴリズムと同様、数式(3)に示すようにハッシュ関数hを用いて復号結果p*が秘密情報pと一致するか否か判定される。
第2の暗号処理アルゴリズムでは、復号鍵が乱数R*に依存するため、クライアント装置とサーバ装置の間で生体特徴コードB*自体は送信されない。また、テンプレートに含まれる暗号文cは乱数Rに依存するため、サーバ装置に侵入した攻撃者またはサーバ装置の管理者は、復号された秘密情報pを知っても暗号文cから生体特徴コードBを抽出できない。よって、生体特徴コードB,B*の保護が強化されている。
しかし、第2の暗号処理アルゴリズムで使用する乱数R,R*は、互いに近似するよう選択される。このため、ある暗号文の復号時に選択される乱数R1 *は、その暗号文の暗号化時に使用された乱数R1に近似するだけでなく、別の暗号文の暗号化時に使用された乱数R2にも近似することになる。そのため、同一人の生体特徴コードを用いて暗号化されている複数の暗号文は、その人の1つの復号鍵で全て復号できてしまうおそれがある。よって、例えば、サーバ装置に侵入した攻撃者またはサーバ装置の管理者は、あるユーザの復号鍵を取得した場合、その復号鍵を不正に流用して他のサーバ装置にある同一ユーザの暗号文を復号させることに成功してしまうおそれがある。そこで、次の第3の暗号処理アルゴリズムでは、同一人に関する複数の暗号文の保護を強化し、同一人に関する異なる秘密情報を互いに独立に保護できるようにする。
第3の暗号処理アルゴリズムでは、数式(6)に示すテンプレートがデータベースに登録される。数式(6)において、「M」はマスク、「R(M)」は暗号化時に選択された乱数rをマスクMでマスク処理したマスク乱数である。テンプレートは、暗号文cとハッシュ値h(p)とマスクMを含む。暗号文cは、秘密情報pを符号化関数gで誤り訂正符号化し、その誤り訂正符号を更に符号化関数fで誤り訂正符号化し、その誤り訂正符号に暗号鍵を加算することで生成される。暗号鍵は、マスク乱数R(M)を符号化関数fで誤り訂正符号化し、その誤り訂正符号に生体特徴コードBを加算することで生成される。
Figure 2018098739
マスクMは、符号化関数gの終域(符号化関数gの出力のビット長で定義されるビット列空間)に含まれる所定の条件を満たすビット列の中から、暗号化時にランダムに選択したものである。マスクMが満たす所定の条件は、そのハミング重みが復号関数g-1の訂正可能ビット数θより十分に大きく2θ+1を超えないことである。マスク処理前の乱数rは、符号化関数gの終域からランダムに選択したビット列である。マスク乱数R(M)は、選択した乱数rを選択したマスクMでマスク処理したものであり、2進数の場合は乱数rとマスクMの間でビット毎の論理積を算出することで生成したものである。
第3の暗号処理アルゴリズムでは、復号時には数式(7)に示す第1の復号パスと数式(8)に示す第2の復号パスの両方が実行される。数式(7)および数式(8)において、「M*」は復号に使用されるマスクであり、暗号化時に選択されテンプレートに含まれているマスクMと同一であることが想定される。「R*(M*)」は復号時に選択された乱数r*をマスクM*でマスク処理したマスク乱数である。マスク処理前の乱数r*は、符号化関数gの終域からランダムに選択したビット列である。マスク乱数R*(M*)は、選択した乱数r*をマスクM*でマスク処理したものであり、2進数の場合は乱数r*とマスクM*の間でビット毎の論理積を算出することで生成したものである。
Figure 2018098739
Figure 2018098739
第1の復号パスの復号結果p1 *は、テンプレートに含まれる暗号文cから復号鍵を減算し、その減算結果を復号関数f-1で誤り訂正復号し、その復号結果を更に復号関数g-1で誤り訂正復号することで生成される。復号鍵は、マスク乱数R*(M*)を符号化関数fで誤り訂正符号化し、その誤り訂正符号に生体特徴コードB*を加算することで生成される。符号化関数fの線形性から、f(g(p))+f(R(M))−f(R*(M*))はf(g(p)+R(M)−R*(M*))と変形される。第2の複合パスの復号結果p2 *は、暗号文cから復号鍵を減算し、その減算結果を復号関数f-1で誤り訂正復号し、その復号結果にテンプレートのマスクMを加算し、その加算結果を更に復号関数g-1で誤り訂正復号することで生成される。復号鍵は、第1の復号パスと同じである。
第3の暗号処理アルゴリズムでは、数式(9)に示すように、生体特徴コードB,B*が近似しており、かつ、マスクMとマスクM*が同じ場合、復号結果p1 *,p2 *の何れか一方が秘密情報pに一致する。これに対し、生体特徴コードB,B*が近似していない場合、第1の復号パスおよび第2の復号パスの両方で復号関数f-1の復号が失敗し、復号結果p1 *,p2 *の何れも秘密情報pに一致しない。また、マスクMとマスクM*が異なる場合、第1の復号パスおよび第2の復号パスの両方で復号関数g-1の復号が失敗し、復号結果p1 *,p2 *の何れも秘密情報pに一致しない。
Figure 2018098739
そして、第3の暗号処理アルゴリズムでは、数式(10)に示すように復号結果p1 *,p2 *の何れか一方が秘密情報pと一致するか否か判定される。すなわち、ハッシュ値h(p1 *)とテンプレートに含まれるh(p)とが比較され、また、ハッシュ値h(p2 *)とテンプレートに含まれるh(p)とが比較される。ハッシュ値h(p1 *),h(p2 *)の何れか一方がハッシュ値h(p)と一致した場合は認証成功と判定され、何れもハッシュ値h(p)と一致しない場合は認証失敗と判定される。よって、暗号文によってマスクMを変えることで、復号鍵の不正流用を抑止できる。
Figure 2018098739
ここで、マスクM,M*が一致している場合、マスク乱数R(M),R*(M*)は互いに近似しているか、または、マスクMを加算すれば互いに近似する。M=M*とすると、R(M)−R*(M)において値が「1」になるビットは、マスクMにおいて値が「1」であるビットに限定される。よって、R(M)−R*(M)のハミング重みはマスクMのハミング重みを超えない。R(M)−R*(M)のハミング重みは、訂正可能ビット数θ以下である場合と、訂正可能ビット数θを超える場合とに分けられる。
R(M)−R*(M)のハミング重みがθ以下である場合、第1の復号パスにおいて復号関数g-1の誤り訂正復号に成功する。R(M)−R*(M)のハミング重みがθを超える場合、マスクMで値が「1」でありR(M)−R*(M)で値が「0」になっているビットの数が、マスクMのハミング重みからR(M)−R*(M)のハミング重みを引いた値となる。よって、R(M)−R*(M)+Mのハミング重みは、2θ+1以下であるマスクMのハミング重みから訂正可能ビット数θを引いた値より小さい。すなわち、R(M)−R*(M)+Mのハミング重みは、訂正可能ビット数θ以下となる。このため、第2の復号パスにおいて復号関数g-1の誤り訂正復号に成功する。
これに対し、マスクM,M*が一致しない場合、マスク乱数R(M),R*(M*)は近似しない。マスク乱数R(M)のハミング重みはマスクMのハミング重みの半分程度の期待値をもち、マスク乱数R*(M*)のハミング重みはマスクM*のハミング重みの半分程度の期待値をもつ。このため、マスク乱数R(M),R*(M*)それぞれのハミング重みは、訂正可能ビット数θの半分より十分に大きい。また、マスクM,M*はランダムに選択されるため、マスクM,M*の両方で値が「1」になっているビットは少ない。よって、R(M)−R*(M*)のハミング重みは、訂正可能ビット数θより十分に大きくなる。R(M)−R*(M)+Mのハミング重みは、上記説明のマスク乱数R(M)をR(M)+Mに置き換えることで同様のロジックが成立するため、訂正可能ビット数θより十分に大きい。従って、第1の復号パスにおいて復号関数g-1の誤り訂正復号に失敗し、かつ、第2の復号パスにおいて復号関数g-1の誤り訂正復号に失敗する。
ここで、マスク乱数R(M),R*(M*)の差の性質について更に説明を補足する。なお、2進数のビット列空間では、加算も減算もビット毎の排他的論理和を算出する演算であり対称性を有することから、加算および減算を演算子「△」を用いて表記することとする。また、ビット列を値が「1」であるビットの位置の集合と同視する。また、ビット列のハミング重みを絶対値記号を用いて表記する。また、「〜」という関係演算子は、左辺は右辺の付近に分布し、左辺と右辺の差が大きくなる確率は低いことを表す。
マスクM,M*が一致している場合、マスク処理の性質からマスク乱数R(M),R*(M)について数式(11)が成立する。このため、R(M)△R*(M)のハミング重みとR(M)△R*(M)△Mのハミング重みについて数式(12)が成立する。数式(12)では、|A△B|=|A|+|B|−2|A∩B|という集合の性質を利用している。このことから、マスクMのハミング重みを2θ+1と仮定すると、数式(13)が成立する。すなわち、マスクM,M*が一致する場合、R(M)△R*(M)のハミング重みがθ以下であるか、R(M)△R*(M)△Mのハミング重みがθ以下になる。
Figure 2018098739
Figure 2018098739
Figure 2018098739
一方、マスクM,M*が異なる場合、マスク乱数R(M),R*(M*)について数式(14)が成立する。マスクM,M*が異なると、M∩M*のハミング重みは小さくなるためR(M)∩R*(M*)のハミング重みも小さくなり、数式(15)が成立する。すなわち、R(M)△R*(M*)のハミング重みは、マスクMのハミング重みの半分とマスクM*のハミング重みの半分を合計した値に近似する。マスクMのハミング重みがθより十分に大きくかつマスクM*のハミング重みがθより十分に大きいため、数式(16)の第1項の関係が成立する。また、上記R(M)をM\R(M)で置換することで同様のロジックが成立するため、数式(16)の第2項の関係が成立する。すなわち、マスクM,M*が異なる場合、R(M)△R*(M)のハミング重みがθより十分に大きく、かつ、R(M)△R*(M)△Mのハミング重みがθより十分に大きくなる。
Figure 2018098739
Figure 2018098739
Figure 2018098739
以上より、第3の暗号処理アルゴリズムでは、マスクM,M*が同じ場合は第1の復号パスと第2の復号パスの何れか一方が成功し、マスクM,M*が異なる場合には第1の復号パスと第2の復号パスの両方が失敗することになる。よって、復号鍵の流用を抑止し、同一人に関する異なる秘密情報を互いに独立に保護することができる。第2の実施の形態のサーバ装置100,100aおよびクライアント装置200,200aは、この第3の暗号処理アルゴリズムを利用して生体認証を実装する。なお、暗号鍵の生成時に選択したマスクMは復号鍵の生成時にも使用されるため、テンプレートにマスクMが含まれている。サーバ装置100,100aは、認証時にクライアント装置200,200aに対してテンプレートのマスクMを提供すればよい。ただし、暗号化時に選択されたマスクMをクライアント装置200,200aに保存しておくようにしてもよい。
なお、符号化関数fの誤り訂正符号としては、例えば、数式(17)に示すパラメータをもつリードソロモン符号を用いることができる。また、符号化関数gの誤り訂正符号としては、例えば、数式(18)に示すパラメータをもつリードソロモン符号を用いることができる。符号化関数gの終域と符号化関数fの始域(符号化関数fの入力のビット長で定義されるビット列空間)とが異なる場合、符号化関数gの出力から符号化関数fの入力を一意に特定可能な対応関係を定義して両者を結合してもよい。
Figure 2018098739
Figure 2018098739
次に、クライアント装置200,200aおよびサーバ装置100,100aの機能を説明する。以下では代表してクライアント装置200およびサーバ装置100の機能を説明する。クライアント装置200aもクライアント装置200と同様の機能を有し、サーバ装置100aもサーバ装置100と同様の機能を有する。
図5は、サーバ装置とクライアント装置の機能例を示すブロック図である。
クライアント装置200は、生体特徴コード生成部231、秘密情報提供部232、登録要求部233および認証要求部234を有する。生体特徴コード生成部231、秘密情報提供部232、登録要求部233および認証要求部234は、例えば、CPUが実行するプログラムモジュールを用いて実装することができる。
生体特徴コード生成部231は、クライアント装置200のユーザが登録または認証を指示した場合、撮像装置211に生体画像の撮像を指示し、撮像装置211から生体画像を取得する。例えば、生体特徴コード生成部231は、指先の画像、手のひらの画像、目の画像、または、ユーザが書いたサインの画像を取得する。生体特徴コード生成部231は、取得した生体画像から、撮像した部位に応じた方法で生体特徴コードを生成する。
例えば、生体特徴コード生成部231は、指先の画像から指紋の特徴を表す生体特徴コードを生成する。また、例えば、生体特徴コード生成部231は、手のひらの画像から静脈の特徴を表す生体特徴コードを生成する。また、例えば、生体特徴コード生成部231は、目の画像から虹彩の特徴を表す生体特徴コードを生成する。また、例えば、生体特徴コード生成部231は、サインの画像から筆跡の特徴を表す生体特徴コードを生成する。生体特徴コードは、例えば、2進数で表された所定長のビット列である。
秘密情報提供部232は、クライアント装置200のユーザが登録を指示した場合、ユーザの秘密情報を提供する。秘密情報は、予めクライアント装置200のRAMまたはHDDに記憶されていてもよいし、入力デバイスを介してユーザから入力されてもよい。秘密情報は、個々のユーザが作成する情報または個々のユーザに対して付与される情報であって、公開されることが想定されていない情報である。秘密情報として、例えば、ユーザID、パスワード、暗証番号、暗号処理用の秘密鍵、キャッシュカード番号やクレジットカード番号などの識別コードを使用できる。
登録要求部233は、クライアント装置200のユーザが登録を指示した場合、生体特徴コード生成部231から生体特徴コードを取得し、秘密情報提供部232から秘密情報を取得する。登録要求部233は、生体特徴コードおよび秘密情報を用いてテンプレートを生成し、テンプレートを含む登録要求をサーバ装置100に送信する。サーバ装置100が複数のユーザについての認証を行う場合、ユーザを識別するための識別情報が登録要求に含まれてもよい。識別情報は、ユーザIDなどユーザが入力した情報でもよいし、カード番号など記録媒体から読み出した情報でもよい。
認証要求部234は、クライアント装置200のユーザが認証を指示した場合、サーバ装置100に認証要求を送信する。サーバ装置100が複数のユーザについての認証を行う場合、ユーザを識別するための識別情報が認証要求に含まれてもよい。認証要求部234は、認証要求に対する応答として、マスクを含む復号鍵要求を受信する。すると、認証要求部234は、生体特徴コード生成部231から生体特徴コードを取得する。認証要求部234は、サーバ装置100から指定されたマスクと生体特徴コードとを用いて復号鍵を生成し、復号鍵をサーバ装置100に送信する。その後、認証要求部234は、認証成功または認証失敗を示す認証結果をサーバ装置100から受信する。
サーバ装置100は、データベース120、テンプレート登録部131、秘密情報抽出部132および検証部133を有する。データベース120は、例えば、RAM102またはHDD103に確保した記憶領域を用いて実装できる。テンプレート登録部131、秘密情報抽出部132および検証部133は、例えば、CPU101が実行するプログラムモジュールを用いて実装することができる。
データベース120は、クライアント装置200,200aで生成されたテンプレートを記憶する。各ユーザに対応するテンプレートには3つの項目が含まれる。テンプレート第1項は、生体特徴コードを用いて秘密情報を暗号化した暗号文である。テンプレート第2項は、秘密情報のハッシュ値である。テンプレート第3項は、暗号化時にクライアント装置200,200aが選択したマスクである。テンプレート第1項、第2項および第3項は、例えば、2進数で表されたビット列である。サーバ装置100が複数のユーザについての認証を行う場合、各テンプレートに対して識別情報が対応付けられる。
テンプレート登録部131は、クライアント装置200,200aから登録要求を受信する。すると、テンプレート登録部131は、登録要求に含まれるテンプレートをデータベース120に登録する。登録要求に識別情報が含まれる場合、テンプレート登録部131は、テンプレートと識別情報とを対応付けてデータベース120に登録する。
秘密情報抽出部132は、クライアント装置200,200aから認証要求を受信する。すると、秘密情報抽出部132は、データベース120に記憶されたテンプレートからテンプレート第3項のマスクを読み出し、読み出したマスクを含む復号鍵要求を返信する。認証要求に識別情報が含まれる場合、秘密情報抽出部132は、その識別情報に対応付けられたテンプレートからマスクを読み出す。その後、秘密情報抽出部132は、復号鍵要求に対する応答として復号鍵を受信する。すると、秘密情報抽出部132は、データベース120からテンプレート第1項の暗号文を読み出す。秘密情報抽出部132は、受信した復号鍵を用いて暗号文を復号し、秘密情報の抽出を試みる。
このとき、秘密情報抽出部132は、第1の復号パスと第2の復号パスを実行し、2つの復号結果を生成する。復号鍵の生成に使用された生体特徴コードおよびマスク値が正当である場合、第1の復号パスと第2の復号パスの何れか一方により秘密情報を正しく抽出することができる。これに対し、復号鍵の生成に使用された生体特徴コードおよびマスク値の少なくとも一方が正当でない場合、第1の復号パスと第2の復号パスの何れによっても秘密情報を正しく抽出することができない。
検証部133は、秘密情報抽出部132から第1の復号パスの復号結果と第2の復号パスの復号結果を取得する。検証部133は、取得した2つの復号結果それぞれのハッシュ値を算出する。また、検証部133は、データベース120からテンプレート第2項のハッシュ値を取得する。検証部133は、テンプレートのハッシュ値を、第1の復号パスの復号結果のハッシュ値および第2の復号パスの復号結果のハッシュ値それぞれと比較する。テンプレートのハッシュ値が2つの復号結果のハッシュ値の何れか一方と一致した場合、検証部133は、認証対象のユーザが登録されたユーザであると判定し、認証成功と判断する。これに対し、テンプレートのハッシュ値が2つの復号結果のハッシュ値の何れとも一致しない場合、検証部133は、認証対象のユーザが登録されたユーザでないと判定し、認証失敗と判断する。検証部133は、認証成功または認証失敗を示す認証結果を、認証要求を送信したクライアント装置に返信する。
図6は、第1のテンプレートテーブルの例を示す図である。
テンプレートテーブル121は、データベース120に記憶されている。テンプレートテーブル121は、認証単位毎(例えば、ユーザ毎)に、識別情報、暗号文c、ハッシュ値h(p)およびマスクMを含む。識別情報は、認証単位を識別する情報であり、ユーザIDやカード番号などであってもよい。暗号文cは、数式(6)に示したテンプレート第1項である。ハッシュ値h(p)は、数式(6)に示したテンプレート第2項である。マスクMは、数式(6)に示したテンプレート第3項である。テンプレートテーブル121には、複数の認証単位についてのテンプレートが登録され得る。
次に、クライアント装置200およびサーバ装置100の処理手順を説明する。
図7は、第1のクライアント登録処理の手順例を示すフローチャートである。
(S10)登録要求部233は、所定の条件を満たすマスク集合からランダムに1つマスクMを選択する。マスクMのハミング重みは、θより十分に大きく2θ+1を超えない。
(S11)登録要求部233は、乱数rをランダムに選択し、選択した乱数rをステップS10のマスクMでマスク処理したマスク乱数R(M)を生成する。マスク処理は、例えば、乱数rとマスクMの間でビット毎に論理積を算出する演算である。
(S12)生体特徴コード生成部231は、撮像装置211から生体画像を取得する。生体特徴コード生成部231は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードBを生成する。
(S13)登録要求部233は、ステップS11のマスク乱数R(M)を符号化関数fで誤り訂正符号化する。登録要求部233は、その誤り訂正符号にステップS12の生体特徴コードBを加算して暗号鍵を生成する。加算は、例えば、誤り訂正符号と生体特徴コードBとの間でビット毎に排他的論理和を算出する演算である。
(S14)秘密情報提供部232は、ユーザに関する秘密情報pを取得する。秘密情報提供部232は、RAMまたはHDDから秘密情報pを読み出してもよいし、ユーザに秘密情報pの入力を促して入力デバイスから秘密情報pを取得してもよい。
(S15)登録要求部233は、ステップS14の秘密情報pを符号化関数gで誤り訂正符号化し、更に符号化関数fで誤り訂正符号化する。登録要求部233は、その誤り訂正符号にステップS13の暗号鍵を加算して暗号文cを生成する。
(S16)登録要求部233は、秘密情報pのハッシュ値h(p)を生成する。
(S17)登録要求部233は、ステップS15の暗号文cとステップS16のハッシュ値h(p)とステップS10のマスクMを含むテンプレートを生成する。登録要求部233は、テンプレートを含む登録要求をサーバ装置100に送信する。この登録要求はサーバ装置100のテンプレート登録部131によって受信され、データベース120にテンプレートが登録される。なお、登録要求には識別情報が含まれてもよく、この識別情報と対応付けてテンプレートがデータベース120に登録されてもよい。
図8は、第1のクライアント認証処理の手順例を示すフローチャートである。
(S20)認証要求部234は、サーバ装置100に認証要求を送信する。認証要求には認証対象のユーザを示す識別情報が含まれてもよい。
(S21)認証要求部234は、マスクM*を含む復号鍵要求を受信する。
(S22)認証要求部234は、乱数r*をランダムに選択し、選択した乱数r*をステップS21のマスクM*でマスク処理したマスク乱数R*(M*)を生成する。マスク処理は、例えば、乱数r*とマスクM*の間でビット毎に論理積を算出する演算である。
(S23)生体特徴コード生成部231は、撮像装置211から生体画像を取得する。生体特徴コード生成部231は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードB*を生成する。
(S24)認証要求部234は、ステップS22のマスク乱数R*(M*)を符号化関数fで誤り訂正符号化する。認証要求部234は、その誤り訂正符号にステップS23の生体特徴コードB*を加算して復号鍵を生成する。加算は、例えば、誤り訂正符号と生体特徴コードB*との間でビット毎に排他的論理和を算出する演算である。
(S25)認証要求部234は、復号鍵をサーバ装置100に送信する。認証要求部234は、認証対象のユーザを示す識別情報を併せて送信してもよい。
(S26)認証要求部234は、認証結果をサーバ装置100から受信する。認証結果は認証成功または認証失敗を示す。認証要求部234は、認証結果をディスプレイに表示してもよい。認証失敗の場合、認証要求部234は、生体画像を再取得して復号鍵を生成し直すことで、認証手続きを再度行ってもよい。
図9は、第1のサーバ認証処理の手順例を示すフローチャートである。
(S30)秘密情報抽出部132は、クライアント装置200から認証要求を受信する。認証要求には認証対象のユーザを示す識別情報が含まれてもよい。
(S31)秘密情報抽出部132は、データベース120から認証対象のユーザのテンプレートに含まれるマスクM*を抽出する。認証要求に識別情報が含まれている場合、その識別情報に対応付けられたテンプレートからマスクM*を抽出してもよい。秘密情報抽出部132は、抽出したマスクM*をクライアント装置200に送信する。
(S32)秘密情報抽出部132は、クライアント装置200から復号鍵を受信する。復号鍵と併せて認証対象のユーザを示す識別情報を受信してもよい。
(S33)秘密情報抽出部132は、データベース120から認証対象のユーザのテンプレートに含まれる暗号文cを抽出する。ステップS30またはステップS32で識別情報を受信した場合、その識別情報に対応付けられたテンプレートからマスクM*を抽出してもよい。秘密情報抽出部132は、暗号文cとステップS32の復号鍵を合成する。例えば、秘密情報抽出部132は、暗号文cから復号鍵を減算する。減算は、例えば、暗号文cと復号鍵との間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部132は、合成したビット列を復号関数f-1で誤り訂正復号する。
(S34)秘密情報抽出部132は、ステップS33の復号結果に対して第1の復号パスを実行する。すなわち、秘密情報抽出部132は、ステップS33の復号結果を復号関数g-1で更に誤り訂正復号し、復号結果p1 *を生成する。
(S35)秘密情報抽出部132は、ステップS33の復号結果に対して第2の復号パスを実行する。すなわち、秘密情報抽出部132は、データベース120から認証対象のユーザのテンプレートに含まれるマスクMを抽出し、ステップS33の復号結果にマスクMを加算する。加算は、例えば、復号結果とマスクMとの間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部132は、マスクMを加算した後のビット列を復号関数g-1で更に誤り訂正復号し、復号結果p2 *を生成する。
(S36)検証部133は、ステップS34の復号結果p1 *のハッシュ値h(p1 *)と、ステップS35の復号結果p2 *のハッシュ値h(p2 *)を生成する。
(S37)検証部133は、データベース120から認証対象のユーザのテンプレートに含まれるハッシュ値h(p)を抽出する。検証部133は、ハッシュ値h(p1 *)がハッシュ値h(p)に一致するか、または、ハッシュ値h(p2 *)がハッシュ値h(p)に一致するか判断する。この条件を満たす場合はステップS38に処理が進み、この条件を満たさない場合はステップS39に処理が進む。
(S38)検証部133は、認証成功と判定する。検証部133は、認証成功を示す認証結果をクライアント装置200に送信する。
(S39)検証部133は、認証失敗と判定する。検証部133は、認証失敗を示す認証結果をクライアント装置200に送信する。
次に、復号鍵の不正流用を試みるシーケンス例を説明する。
図10は、サーバ装置による復号鍵流用例を示すシーケンス図である。
このシーケンス例では、クライアント装置200は認証要求をサーバ装置100に送信する(S40)。サーバ装置100はマスクM*を含む復号鍵要求をクライアント装置200に送信する(S41)。クライアント装置200は、指定されたマスクM*を用いて復号鍵を生成し、復号鍵をサーバ装置100に送信する(S42)。サーバ装置100は、認証成功と判定して認証成功通知をクライアント装置200に送信する(S43)。
ここで、サーバ装置100に侵入した攻撃者または悪意あるサーバ装置100の管理者が、不正にステップS42の復号鍵を取得したとする。そして、攻撃者または悪意ある管理者が、サーバ装置100または他の装置を用いてサーバ装置100aに認証要求を送信したとする。ここでは、攻撃にサーバ装置100が使用されたと仮定する(S44)。
すると、サーバ装置100aは、復号鍵要求をサーバ装置100に送信する(S45)。サーバ装置100は、ステップS42の復号鍵を不正に流用してサーバ装置100aに送信する。ここで、暗号化や復号にマスクが使用されていないと、流用した復号鍵による復号が成功してしまい、認証が成功してしまう可能性がある。しかし、サーバ装置100,100aに登録された同一人の暗号文に異なるマスクが使用されていると、流用した復号鍵による復号は失敗し、認証が失敗する。よって、サーバ装置100aは、認証失敗通知をサーバ装置100に送信することになる(S47)。
なお、ステップS42の復号鍵からは生体特徴コードB*を抽出できないため、攻撃者または悪意ある管理者は、ステップS45で指定されたマスクとクライアント装置で生成された生体特徴コードB*を組み合わせた正当な復号鍵を生成することはできない。
第2の実施の形態の暗号データ処理システムによれば、生体特徴コード自体はサーバ装置100,100aとクライアント装置200,200aとの間で送信されない。また、サーバ装置100,100aの中で一時的に復元される秘密情報を用いてもテンプレートから生体特徴コードを抽出できない。よって、生体特徴コードが漏洩するリスクを低減できる。また、同一人の生体情報を利用して複数の暗号文を生成した場合でも、マスクを変えることで、ある暗号文に対する復号鍵を他の暗号文に流用できないようにできる。よって、同一人に関する異なる秘密情報の保護を強化することができる。また、生体特徴コードが正当でかつマスクが正当な場合のみ復号が成功し、生体特徴コードが正当でないかまたはマスクが正当でない場合には復号が失敗するようにすることができる。よって、攻撃に対する安全性や運用上の安定性を向上させることができる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。
第3の実施の形態の暗号データ処理システムは、第2の実施の形態の暗号処理アルゴリズムをチャレンジ・レスポンス型認証に応用したものである。第3の実施の形態の暗号データ処理システムは、図4に示したハードウェア構成および図5に示したソフトウェア構成を用いて実装することができる。そこで、以下では第3の実施の形態を、第2の実施の形態で用いた図4,5中の符号を用いて説明することがある。
クライアント装置200とサーバ装置100の間でチャレンジ・レスポンス型認証を行う場合、クライアント装置200はサーバ装置100に認証要求を送信する。サーバ装置100は、ランダム性のあるチャレンジメッセージ(単に「チャレンジ」と言うことがある)をクライアント装置200に送信する。クライアント装置200は、チャレンジに基づいて正当な認証対象しか作り得ないレスポンスを生成しサーバ装置100に送信する。サーバ装置100は、送信したチャレンジと受信したレスポンスに基づいて認証成功か認証失敗かを判定し、認証結果をクライアント装置200に送信する。
第2の実施の形態の暗号処理アルゴリズムを応用する場合、数式(19)に示すテンプレートをサーバ装置100に登録しておく。数式(19)において、「k」は復号鍵、「m」は小マスク、「R(m)」は小マスクmに応じたマスク乱数である。テンプレートは、復号鍵kと小マスクmを含む。復号鍵kは、マスク乱数R(m)を符号化関数fで誤り訂正符号化し、その誤り訂正符号に生体特徴コードBを加算することで生成される。
Figure 2018098739
小マスクmは、符号化関数gの終域に含まれる所定の条件を満たすビット列の中から、復号鍵kの生成時にランダムに選択したものである。小マスクmが満たす所定の条件は、そのハミング重みが復号関数g-1の訂正可能ビット数θより十分に大きく2θより十分に小さいことである。例えば、小マスクmのハミング重みを1.5θ程度とする。マスク乱数R(m)は、符号化関数gの終域に含まれる所定の条件を満たすビット列の中から、復号鍵kの生成時にランダムに選択したものである。マスク乱数R(m)は小マスクmに依存する。マスク乱数R(m)が満たす所定の条件は、小マスクmで値が「0」であるビットはマスク乱数R(m)でも「0」であること、および、マスク乱数R(m)のハミング重みが小マスクmのハミング重みのちょうど半分または約半分であることである。
テンプレートをサーバ装置100に登録した後、次のようにユーザ認証を行う。サーバ装置100は、クライアント装置200からの認証要求に応じて大マスクMと平文集合Pを選択する。大マスクMは小マスクmに依存する。大マスクMは、符号化関数gの終域に含まれる所定の条件を満たすビット列の中から、認証時にランダムに選択される。大マスクMが満たす所定の条件は、小マスクmで値が「1」であるビットは大マスクMでも「1」であること、および、大マスクMのハミング重みが2θ+1を超えないことである。大マスクMのハミング重みは、2θ+1に近いことが好ましい。
平文集合Pは、符号化関数gの始域の部分集合であり、次の条件を満たすように認証時に符号化関数gの始域から選択される。平文集合Pが満たす所定の条件は、平文集合Pが十分に多くの元を含むこと(元の数が1より十分に大きいこと)、および、平文集合Pの元の数が符号化関数gの始域全体に対して十分に小さいことである。例えば、符号化関数gの誤り訂正符号が数式(18)のパラメータによって定義されるリードソロモン符号である場合、符号化関数gの始域は1719ビットのビット列空間である。この場合、先頭256ビットの値をランダムに決定することで、残りの1463ビットによって規定される21463個の元を含む平文集合Pを定義することができる。
サーバ装置100は、選択した大マスクMと平文集合Pを含むチャレンジをクライアント装置200に送信する。クライアント装置200は、平文集合Pの中から秘密情報pをランダムに選択する。また、クライアント装置200は、大マスクMに依存するマスク乱数R*(M)を生成する。マスク乱数R*(M)は、符号化関数gの終域に含まれる所定の条件を満たすビット列の中から、認証時にランダムに選択したものである。マスク乱数R*(M)が満たす所定の条件は、大マスクMで値が「0」であるビットはマスク乱数R*(M)でも値が「0」であることである。
クライアント装置200は、上記の秘密情報pおよびマスク乱数R*(M)を用いて、数式(20)に示す暗号文cを生成する。暗号文cは、秘密情報pを符号化関数gで誤り訂正符号化し、その誤り訂正符号を更に符号化関数fで誤り訂正符号化し、その誤り訂正符号に暗号鍵k*を加算することで生成される。暗号鍵k*は、マスク乱数R*(M)を符号化関数fで誤り訂正符号化し、その誤り訂正符号に対して認証時に取得した生体特徴コードB*を加算することで生成される。クライアント装置200は、暗号文cを含むレスポンスをサーバ装置100に送信する。
Figure 2018098739
サーバ装置100は、暗号文cを復号鍵kを用いて復号する。復号手順は第2の実施の形態と同様である。すなわち、サーバ装置100は、復号時には数式(21)に示す第1の復号パスと数式(22)に示す第2の復号パスの両方を実行する。
Figure 2018098739
Figure 2018098739
第1の復号パスの復号結果p1 *は、レスポンスに含まれる暗号文cからテンプレートに含まれる復号鍵kを減算し、その減算結果を復号関数f-1で誤り訂正復号し、その復号結果を更に復号関数g-1で誤り訂正復号することで生成される。第2の複合パスの復号結果p2 *は、チャレンジに含まれる暗号文cからテンプレートに含まれる復号鍵kを減算し、その減算結果を復号関数f-1で誤り訂正復号し、その復号結果に大マスクMを加算し、その加算結果を更に復号関数g-1で誤り訂正復号することで生成される。
サーバ装置100は、復号結果p1 *,p2 *の何れか一方が平文集合Pに含まれているか(平文集合Pに属する元であるか)判定する。復号結果p1 *,p2 *の何れか一方が平文集合Pに含まれている場合は認証成功と判定される。一方、復号結果p1 *,p2 *の何れも平文集合Pに含まれていない場合、認証失敗と判定される。
ここで、マスク乱数R(m)で値が「1」であるビットは、小マスクmで値が「1」であるビットに限られるため、大マスクMで値が「1」であるビットに限られる。また、マスク乱数R*(M)で値が「1」であるビットは、大マスクMで値が「1」であるビットに限られる。よって、R*(M)−R(m)のハミング重みが訂正可能ビット数θを超えない場合、第1の復号パスの復号関数g-1による誤り訂正復号が成功し、復号結果p1 *は秘密情報pに一致する。この場合、復号結果p1 *が平文集合Pの元となる。また、R*(M)−R(m)のハミング重みが訂正可能ビット数θを超える場合でも、第2の復号パスの復号関数g-1による誤り訂正復号が成功し、復号結果p2 *は秘密情報pに一致する。この場合、復号結果p2 *が平文集合Pの元となる。
次に、復号鍵kの流用可能性について説明する。サーバ装置100に登録された復号鍵kが、サーバ装置100に侵入した攻撃者またはサーバ装置100の管理者によって不正に取得されたとする。すると、この復号鍵kを用いて暗号文f(g(p))+f(R(m))+B*が不正に生成され、復号鍵f(R(m*))+Bが登録されたサーバ装置100aに対して不正な暗号文を含むレスポンスが送信される可能性がある。
しかし、サーバ装置100aは復号過程でg(p)+R(m)−R(m*)を算出することになる。マスク乱数R(m),R(m*)それぞれのハミング重みは、訂正可能ビット数θの半分より十分に大きい。また、小マスクm,m*の両方で値が「1」であるビットは少ない。よって、R(m)−R(m*)のハミング重みは訂正可能ビット数θより十分に大きく、復号関数g-1による誤り訂正復号は失敗する。
図11は、第2のテンプレートテーブルの例を示す図である。
テンプレートテーブル122は、サーバ装置100のデータベース120に記憶される。テンプレートテーブル122は、認証単位毎(例えば、ユーザ毎)に、識別情報、復号鍵kおよび小マスクmを含む。識別情報は、認証単位を識別する情報であり、ユーザIDやカード番号などであってもよい。復号鍵kは、数式(19)に示したテンプレート第1項である。小マスクmは、数式(19)に示したテンプレート第2項である。テンプレートテーブル122には、複数の認証単位についてのテンプレートが登録され得る。
次に、サーバ装置100およびクライアント装置200の処理手順を説明する。
図12は、第2のクライアント登録処理の手順例を示すフローチャートである。
(S50)登録要求部233は、所定の条件を満たすマスク集合からランダムに小マスクmを選択する。小マスクmのハミング重みは、θより十分に大きく2θより十分に小さい。
(S51)登録要求部233は、ステップS50の小マスクmに依存するマスク乱数R(m)を生成する。小マスクmで値が「0」であるビットは、マスク乱数R(m)でも値が「0」である。また、マスク乱数R(m)のハミング重みは、小マスクmのハミング重みのちょうど半分または約半分である。生成されるマスク乱数R(m)は、上記の条件を満たしている範囲でランダムに選択されたものである。
(S52)生体特徴コード生成部231は、撮像装置211から生体画像を取得する。生体特徴コード生成部231は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードBを生成する。
(S53)登録要求部233は、ステップS51のマスク乱数R(m)を符号化関数fで誤り訂正符号化する。登録要求部233は、その誤り訂正符号にステップS52の生体特徴コードBを加算して復号鍵kを生成する。加算は、例えば、誤り訂正符号と生体特徴コードBとの間でビット毎に排他的論理和を算出する演算である。
(S54)登録要求部233は、ステップS53の復号鍵kとステップS50の小マスクmを含むテンプレートを生成する。登録要求部233は、テンプレートを含む登録要求をサーバ装置100に送信する。この登録要求はサーバ装置100のテンプレート登録部131によって受信され、データベース120にテンプレートが登録される。
図13は、第2のクライアント認証処理の手順例を示すフローチャートである。
(S60)認証要求部234は、サーバ装置100に認証要求を送信する。
(S61)認証要求部234は、大マスクMと平文集合Pを定義する情報とを含むチャレンジをサーバ装置100から受信する。平文集合Pを定義する情報は、例えば、1719ビットのうちの先頭256ビットを指定する情報などである。
(S62)認証要求部234は、平文集合Pからランダムに秘密情報pを選択する。
(S63)認証要求部234は、チャレンジに含まれる大マスクMに依存するマスク乱数R*(M)を生成する。大マスクMで値が「0」であるビットは、マスク乱数R*(M)でも値が「0」である。生成されるマスク乱数R*(M)は、上記の条件を満たしている範囲でランダムに選択されたものである。
(S64)生体特徴コード生成部231は、撮像装置211から生体画像を取得する。生体特徴コード生成部231は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードB*を生成する。
(S65)認証要求部234は、ステップS63のマスク乱数R*(M)を符号化関数fで誤り訂正符号化する。認証要求部234は、その誤り訂正符号にステップS64の生体特徴コードB*を加算して暗号鍵を生成する。加算は、例えば、誤り訂正符号と生体特徴コードB*との間でビット毎に排他的論理和を算出する演算である。
(S66)認証要求部234は、ステップS62の秘密情報pを符号化関数gで誤り訂正符号化し、更に符号化関数fで誤り訂正符号化する。認証要求部234は、その誤り訂正符号にステップS65の暗号鍵を加算して暗号文cを生成する。
(S67)認証要求部234は、ステップS66の暗号文cを含むレスポンスを、チャレンジに対する応答としてサーバ装置100に送信する。
(S68)認証要求部234は、認証結果をサーバ装置100から受信する。
図14は、第2のサーバ認証処理の手順例を示すフローチャートである。
(S70)秘密情報抽出部132は、認証要求を受信する。
(S71)秘密情報抽出部132は、データベース120から認証対象のユーザのテンプレートに含まれる小マスクmを抽出する。秘密情報抽出部132は、小マスクmに依存する大マスクMを生成する。小マスクmで値が「1」であるビットは、大マスクMでも値が「1」である。また、大マスクMのハミング重みは2θ+1を超えない。生成される大マスクMは、上記の条件を満たしている範囲でランダムに選択されたものである。また、秘密情報抽出部132は、ランダムに平文集合Pを生成する。
(S72)秘密情報抽出部132は、大マスクMと平文集合Pを定義する情報とを含むチャレンジをクライアント装置200に送信する。
(S73)秘密情報抽出部132は、暗号文cを含むレスポンスを、チャレンジに対する応答としてクライアント装置200から受信する。
(S74)秘密情報抽出部132は、データベース120から認証対象のユーザのテンプレートに含まれる復号鍵kを抽出する。秘密情報抽出部132は、レスポンスに含まれる暗号文cとテンプレートから抽出した復号鍵kとを合成する。例えば、秘密情報抽出部132は、暗号文cから復号鍵kを減算する。減算は、例えば、暗号文cと復号鍵kとの間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部132は、合成したビット列を復号関数f-1で誤り訂正復号する。
(S75)秘密情報抽出部132は、ステップS74の復号結果に対して第1の復号パスを実行する。すなわち、秘密情報抽出部132は、ステップS74の復号結果を復号関数g-1で更に誤り訂正復号し、復号結果p1 *を生成する。
(S76)秘密情報抽出部132は、ステップS74の復号結果に対して第2の復号パスを実行する。すなわち、秘密情報抽出部132は、ステップS74の復号結果にステップS71の大マスクMを加算する。加算は、例えば、復号結果と大マスクMとの間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部132は、大マスクMを加算した後のビット列を復号関数g-1で更に誤り訂正復号し、復号結果p2 *を生成する。
(S77)検証部133は、ステップS75の復号結果p1 *とステップS76の復号結果p2 *の何れか一方が、ステップS71の平文集合Pに属するか判断する。復号結果p1 *,p2 *の一方が平文集合Pに属する場合、ステップS78に処理が進む。復号結果p1 *,p2 *の何れも平文集合Pに属さない場合、ステップS79に処理が進む。
(S78)検証部133は、認証成功と判定する。検証部133は、認証成功を示す認証結果をクライアント装置200に送信する。
(S79)検証部133は、認証失敗と判定する。検証部133は、認証失敗を示す認証結果をクライアント装置200に送信する。
第3の実施の形態の暗号データ処理システムによれば、チャレンジ・レスポンス型認証においても第2の実施の形態と同様の安全性を達成することができる。
[第4の実施の形態]
次に、第4の実施の形態を説明する。
第2の実施の形態および第3の実施の形態では主に、扱うデータが2進数で表現されている場合について説明した。これに対し、第4の実施形態では、第2の実施の形態および第3の実施の形態の暗号処理アルゴリズムを、正標数qをもつ有限体Fq上のベクトルで表現されるデータを対象として一般化する。以下の説明においてq=2とした暗号処理アルゴリズムは、第2の実施の形態および第3の実施の形態に相当する。なお、第2の実施の形態および第3の実施の形態では扱うデータが2進数で表現されているため「訂正可能ビット数」という表現を用いたが、第4の実施の形態ではこれに代えて「訂正可能誤り数」という表現を用いることとする。「訂正可能誤り数」は「訂正可能桁数」と言うこともできる。第2の実施の形態および第3の実施の形態の「訂正可能ビット数」は、「訂正可能誤り数」もしくは「訂正可能桁数」の一種である。
暗号処理アルゴリズムで使用するマスクMのハミング重みは、数式(23)を満たすものとする。数式(23)の第1項は、マスクMのハミング重みが復号関数g-1の訂正可能誤り数θより十分に大きいことを示す。なお、マスクMの「0」でない要素は、有限体Fqの「0」でない特定の要素に限定してもよい。マスク乱数R(M)には、次のような制約を課す。マスク乱数R(M)の「0」でない要素は、マスクMの「0」でない要素に限定される。復号パスは、有限体Fqの各元xに対応するように次のq通りを用意する。暗号文cから復号鍵kを減算して誤り訂正復号する際、f-1(c−k)の復号結果に、元xとマスクMの積xMを加算し、加算後の値を復号関数g-1で誤り訂正復号する。
Figure 2018098739
復号時に使用する生体特徴コードが正当でありかつマスクが正当である場合、これらq通りの復号結果の少なくとも1つが秘密情報pと一致する。R(M)−R*(M)+xMで表されるベクトルの中で自明に「0」でない|M|個の成分それぞれは、元xが値iに等しい場合のみ「0」になる。このような成分の個数をniとすると、数式(24)が成立する。iのうちniを最大化するものをIとすると、数式(25)が成立する。このとき、R(M)−R*(M)のハミング重みは|M|−nIであり、数式(23)の第2項が成立する。よって、R(M)−R*(M)+xMのハミング重みは訂正可能誤り数θを超えず、復号関数g-1で誤り訂正復号した復号結果は秘密情報pに一致する。
Figure 2018098739
Figure 2018098739
一方、暗号化時に使用するマスクMと復号時に使用するマスクM*が異なる場合、q通りの復号結果の何れも秘密情報pと一致しない。R(M)−R*(M)+xMで表されるベクトルの中で自明に「0」でない成分は、|M∪M*|〜2|M|個となる。このうち約|M*|×(q−1)/q個は、xの値に関係なく「0」でない。また、各元xに対して、残りの成分のうち約|M|×(q−1)/q個は「0」でない。よって、R(M)−R*(M)+xMのハミング重みは約2(q−1)×|M|/qである。このハミング重みは訂正可能誤り数θを超えており、復号結果は秘密情報pに一致しない。
第4の実施の形態の暗号データ処理システムによれば、2進数データ以外にも、正標数qをもつ有限体Fq上のベクトルで表現されるデータを対象として、第2の実施の形態および第3の実施の形態と同様の安全性を達成することができる。なお、第4の実施の形態の暗号データ処理システムは、第2の実施の形態および第3の実施の形態と同様のハードウェア構成およびソフトウェア構成を用いて実装できる。
10 暗号データ処理装置
11 取得部
12 処理部
13 マスク
14a,14b 乱数
15a,15b マスク乱数
16a,16b 生体特徴コード
17a,17b 鍵
18a 誤り訂正符号化方法
18b 復号方法
19a 秘密情報
19b 暗号文

Claims (8)

  1. 情報処理システムが実行する暗号データ処理方法であって、
    複数のマスクの中から第1のマスクを選択し、
    前記第1のマスクを用いて第1の乱数を変換した第1のマスク乱数を生成し、生体情報から生成された第1の生体特徴コードと前記第1のマスク乱数とから第1の鍵を生成すると共に、選択した前記第1のマスクを示すマスク情報を保存させ、
    前記マスク情報が示す前記第1のマスクまたは前記第1のマスクと所定の関係を満たす第2のマスクを用いて第2の乱数を変換した第2のマスク乱数を生成し、第2の生体特徴コードと前記第2のマスク乱数とから第2の鍵を生成し、
    前記第1の鍵および前記第2の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する、
    暗号データ処理方法。
  2. 前記第1の鍵および前記第2の鍵のうちの他方の鍵と前記誤り訂正符号化方法に対応する復号方法とを用いて前記暗号文を復号する、
    請求項1記載の暗号データ処理方法。
  3. 前記複数のマスクそれぞれの非零ビット数は、前記誤り訂正符号化方法の訂正可能ビット数より大きく、前記訂正可能ビット数の2倍に1を加えたビット数以下である、
    請求項1記載の暗号データ処理方法。
  4. 前記暗号文の復号では、前記第1のマスクおよび前記第2のマスクを用いない第1の復号と、前記第1のマスクまたは前記第2のマスクを更に用いる第2の復号とを実行し、前記第1の復号および前記第2の復号の一方が成功した場合に認証成功と判定する、
    請求項2記載の暗号データ処理方法。
  5. 前記第1の鍵の生成では、他の誤り訂正符号化方法を用いて前記第1のマスク乱数を符号化し、前記第1の生体特徴コードと合成することで前記第1の鍵を生成し、
    前記第2の鍵の生成では、前記他の誤り訂正符号化方法を用いて前記第2のマスク乱数を符号化し、前記第2の生体特徴コードと合成することで前記第2の鍵を生成し、
    前記暗号文は、秘密情報を前記誤り訂正符号化方法および前記他の誤り訂正符号化方法を用いて符号化し、前記一方の鍵と合成することで生成され、
    前記暗号文の復号では、前記暗号文と前記他方の鍵とを合成し、前記他の誤り訂正符号化方法に対応する他の復号方法および前記復号方法を実行する、
    請求項2記載の暗号データ処理方法。
  6. 前記暗号文の復号では、前記暗号文と前記他方の鍵とを合成し前記他の復号方法を用いて復号した中間データを生成し、前記中間データを前記復号方法を用いて復号する第1の復号と、前記中間データと前記第1のマスクまたは前記第2のマスクとを合成して前記復号方法を用いて復号する第2の復号とを実行し、前記第1の復号および前記第2の復号の一方が成功した場合に認証成功と判定する、
    請求項5記載の暗号データ処理方法。
  7. 生体情報を取得する取得部と、
    複数のマスクの中から第1のマスクを選択し、
    前記第1のマスクを用いて第1の乱数を変換した第1のマスク乱数を生成し、前記生体情報から生成された第1の生体特徴コードと前記第1のマスク乱数とから第1の鍵を生成すると共に、選択した前記第1のマスクを示すマスク情報を保存させ、
    前記マスク情報が示す前記第1のマスクまたは前記第1のマスクと所定の関係を満たす第2のマスクを用いて第2の乱数を変換した第2のマスク乱数を生成し、第2の生体特徴コードと前記第2のマスク乱数とから第2の鍵を生成し、
    前記第1の鍵および前記第2の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する処理部と、
    を有する暗号データ処理装置。
  8. コンピュータに、
    複数のマスクの中から第1のマスクを選択し、
    前記第1のマスクを用いて第1の乱数を変換した第1のマスク乱数を生成し、生体情報から生成された第1の生体特徴コードと前記第1のマスク乱数とから第1の鍵を生成すると共に、選択した前記第1のマスクを示すマスク情報を保存させ、
    前記マスク情報が示す前記第1のマスクまたは前記第1のマスクと所定の関係を満たす第2のマスクを用いて第2の乱数を変換した第2のマスク乱数を生成し、第2の生体特徴コードと前記第2のマスク乱数とから第2の鍵を生成し、
    前記第1の鍵および前記第2の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する、
    処理を実行させる暗号データ処理プログラム。
JP2016244630A 2016-12-16 2016-12-16 暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラム Active JP6810348B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016244630A JP6810348B2 (ja) 2016-12-16 2016-12-16 暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラム
US15/830,506 US10904006B2 (en) 2016-12-16 2017-12-04 Method and apparatus for cryptographic data processing
EP17206142.6A EP3337084B1 (en) 2016-12-16 2017-12-08 Cryptographic data processing method, cryptographic data processing apparatus, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016244630A JP6810348B2 (ja) 2016-12-16 2016-12-16 暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラム

Publications (2)

Publication Number Publication Date
JP2018098739A true JP2018098739A (ja) 2018-06-21
JP6810348B2 JP6810348B2 (ja) 2021-01-06

Family

ID=60654781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016244630A Active JP6810348B2 (ja) 2016-12-16 2016-12-16 暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラム

Country Status (3)

Country Link
US (1) US10904006B2 (ja)
EP (1) EP3337084B1 (ja)
JP (1) JP6810348B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10999296B2 (en) 2017-05-15 2021-05-04 Forcepoint, LLC Generating adaptive trust profiles using information derived from similarly situated organizations
US10999297B2 (en) 2017-05-15 2021-05-04 Forcepoint, LLC Using expected behavior of an entity when prepopulating an adaptive trust profile
US10943019B2 (en) 2017-05-15 2021-03-09 Forcepoint, LLC Adaptive trust profile endpoint
US10129269B1 (en) 2017-05-15 2018-11-13 Forcepoint, LLC Managing blockchain access to user profile information
US9882918B1 (en) 2017-05-15 2018-01-30 Forcepoint, LLC User behavior profile in a blockchain
US10917423B2 (en) 2017-05-15 2021-02-09 Forcepoint, LLC Intelligently differentiating between different types of states and attributes when using an adaptive trust profile
US10862927B2 (en) 2017-05-15 2020-12-08 Forcepoint, LLC Dividing events into sessions during adaptive trust profile operations
US10318729B2 (en) 2017-07-26 2019-06-11 Forcepoint, LLC Privacy protection during insider threat monitoring
US11646876B2 (en) * 2017-07-31 2023-05-09 Koninklijke Philips N.V. Distributing a computation output
CN108880811B (zh) * 2018-09-30 2021-11-23 北京集创北方科技股份有限公司 生物特征识别系统及其通信方法
US10997295B2 (en) 2019-04-26 2021-05-04 Forcepoint, LLC Adaptive trust profile reference architecture
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
CN113111341A (zh) * 2021-04-12 2021-07-13 北京沃东天骏信息技术有限公司 账号共享、登录方法和装置
CN114826752B (zh) * 2022-04-29 2024-02-27 深圳市汇顶科技股份有限公司 一种信号的加密方法、信号的加密装置以及终端设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4519963B2 (ja) 1999-06-21 2010-08-04 富士通株式会社 生体情報の暗号化・復号化方法および装置並びに、生体情報を利用した本人認証システム
JP4736744B2 (ja) 2005-11-24 2011-07-27 株式会社日立製作所 処理装置、補助情報生成装置、端末装置、認証装置及び生体認証システム
GB2450131B (en) * 2007-06-13 2009-05-06 Ingenia Holdings Fuzzy Keys
US8868923B1 (en) 2010-07-28 2014-10-21 Sandia Corporation Multi-factor authentication
US10102390B2 (en) * 2012-06-28 2018-10-16 Honeywell International Inc. Memory authentication with redundant encryption
US9565022B1 (en) * 2013-07-02 2017-02-07 Impinj, Inc. RFID tags with dynamic key replacement
US10454677B1 (en) * 2016-02-24 2019-10-22 United Services Automobile Associate (USAA) Cryptographic key generation from biometric data

Also Published As

Publication number Publication date
US20180174493A1 (en) 2018-06-21
EP3337084A1 (en) 2018-06-20
US10904006B2 (en) 2021-01-26
JP6810348B2 (ja) 2021-01-06
EP3337084B1 (en) 2019-04-03

Similar Documents

Publication Publication Date Title
JP6810348B2 (ja) 暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラム
JP6504013B2 (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
Chang et al. Cancelable multi-biometric approach using fuzzy extractor and novel bit-wise encryption
EP1149475B1 (en) A fuzzy commitment scheme
JP4881119B2 (ja) ユーザ認証方法、ユーザ側認証装置、および、プログラム
Nyang et al. Keylogging-resistant visual authentication protocols
JP6882666B2 (ja) 鍵生成装置および鍵生成方法
Panchal et al. Biometric-based cryptography for digital content protection without any key storage
US20030219121A1 (en) Biometric key generation for secure storage
US11227037B2 (en) Computer system, verification method of confidential information, and computer
KR102578428B1 (ko) 생체 인식 템플릿 보호 키 업데이트
Bansal et al. A cancelable biometric identification scheme based on bloom filter and format-preserving encryption
JPWO2016136142A1 (ja) 暗号文照合システム、方法、および記録媒体
JP6738061B2 (ja) 暗号文照合システム、方法、および記録媒体
JP6488954B2 (ja) 暗号データ処理方法、暗号データ処理システム、暗号データ処理装置および暗号データ処理プログラム
KR102024379B1 (ko) 생체 정보 기반의 전자 서명이 가능한 데이터 전송 장치 및 그 동작 방법
Abidin et al. Uncoupling biometrics from templates for secure and privacy-preserving authentication
CN114640526B (zh) 基于商用密码算法的web应用数据加密技术实现方法及系统
KR102425916B1 (ko) 가변 길이 퍼지 데이터를 지원하는 격자 기반 퍼지 추출 장치 및 방법
KR101960797B1 (ko) 생체 정보를 이용한 otp 인증 방법 및 이를 실행하는 시스템
Rudd et al. Caliper: continuous authentication layered with integrated PKI encoding recognition
Lai et al. An outer bound of the capacity region of biometric systems under keys, secrets, and privacy requirements

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190910

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190917

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201001

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201123

R150 Certificate of patent or registration of utility model

Ref document number: 6810348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150