(57)【要約】【課題】合成数位数ペアリング曲線を使用した鍵交換を行うための通信データ量を削減する。【解決手段】第１暗号処理装置１は、第１素数を位数とする第１部分群に含まれる第１元に対するスカラー倍算により第１スカラー倍点を算出する。また第１暗号処理装置１は、第２素数を位数とする第２部分群に含まれる第２元に対するスカラー倍算により第２スカラー倍点を算出する。そして第１暗号処理装置１は、第１スカラー倍点と第２スカラー倍点とを加算して得られた第３元を示すデータを送信する。第２暗号処理装置２は、第１素数と第２素数とのうちの少なくとも一方を秘密鍵として記憶する。そして第２暗号処理装置２は、第３元を示すデータを受信し、第３元に対する、秘密鍵に示される値のスカラー倍算により、第３元から第１元および第２元を抽出する。【選択図】図１
2019029751.tif 000002
【特許請求の範囲】
【請求項１】
第１素数と第２素数との積を位数とする群に含まれる、合成数位数ペアリングを構成できる楕円曲線上の座標を示す複数の元のうちの、前記第１素数を位数とする第１部分群に含まれる第１元と前記第２素数を位数とする第２部分群に含まれる第２元とを記憶する記憶部と、
乱数を生成し、前記乱数を用いた前記第１元に対するスカラー倍算により第１スカラー倍点を算出し、前記乱数を用いた前記第２元に対するスカラー倍算により第２スカラー倍点を算出し、前記第１スカラー倍点と前記第２スカラー倍点とを加算し、加算により得られた第３元を示すデータを送信する処理部と、
を有する暗号処理装置。
【請求項２】
前記処理部は、前記第３元の送信先の装置から部分鍵情報を取得し、前記第１元、前記第２元、および前記部分鍵情報を用いて共有鍵を生成し、前記共有鍵で暗号化した暗号データを、前記第３元の送信先の装置に送信する、
請求項１記載の暗号処理装置。
【請求項３】
前記処理部は、前記部分鍵情報として第４元と第５元とを取得し、前記第１元と前記第４元を用いて、第１鍵生成アルゴリズムにより第１鍵を生成し、前記第２元と前記第５元とを用いて、前記第１鍵生成アルゴリズムとは異なる第２鍵生成アルゴリズムにより第２鍵を生成し、前記第１鍵と前記第２鍵とを結合した前記共有鍵を生成する、
請求項２記載の暗号処理装置。
【請求項４】
前記処理部は、前記部分鍵情報として第４元と第５元とを取得し、前記第１元と前記第４元とを用いて第１共有鍵を生成し、前記第３元の送信先の装置との間で、前記第１共有鍵で暗号化した第１データを通信し、前記第２元と前記第５元とを用いて第２共有鍵を生成し、前記第３元の送信先の装置との間で、前記第２共有鍵で暗号化した第２データを通信する、
請求項２記載の暗号処理装置。
【請求項５】
第１素数と第２素数との積を位数とする群に含まれる、合成数位数ペアリングを構成できる楕円曲線上の座標を示す複数の元のうちの、前記第１素数を位数とする第１部分群に含まれる第１元と前記第２素数を位数とする第２部分群に含まれる第２元とを記憶する第１記憶部と、乱数を生成し、前記乱数を用いた前記第１元に対するスカラー倍算により第１スカラー倍点を算出し、前記乱数を用いた前記第２元に対するスカラー倍算により第２スカラー倍点を算出し、前記第１スカラー倍点と前記第２スカラー倍点とを加算し、加算により得られた第３元を示すデータを送信する第１処理部と、を有する第１暗号処理装置と、
前記第１素数と前記第２素数とのうちの少なくとも一方を秘密鍵として記憶する第２記憶部と、前記第３元を示すデータを受信し、前記第３元に対する、前記秘密鍵に示される値のスカラー倍算により、前記第３元から前記第１元および前記第２元を抽出する第２処理部と、を有する第２暗号処理装置と、
を有する暗号化通信システム。
【請求項６】
前記第２処理部は、部分鍵情報を生成し、前記部分鍵情報を前記第１暗号処理装置に送信し、
前記第１処理部は、前記部分鍵情報を受信し、前記第１元、前記第２元、及び前記部分鍵情報を用いて共有鍵を生成し、前記共有鍵で暗号化した暗号データを、前記第２暗号処理装置に送信し、
前記第２処理部は、前記暗号データを受信し、前記第１元、前記第２元、及び前記部分鍵情報を用いて前記共有鍵を生成し、前記暗号データを前記共有鍵で復号する、
請求項５記載の暗号化通信システム。
【請求項７】
前記第２記憶部は、前記第１素数を前記秘密鍵として記憶しており、
前記第２処理部は、前記第３元に対する前記秘密鍵に示される値のスカラー倍算により、前記第３元から前記第１元を抽出し、前記第３元からの前記第１元の減算により、前記第３元から前記第２元を抽出する、
請求項５または６記載の暗号化通信システム。
【請求項８】
コンピュータが、
第１素数と第２素数との積を位数とする群に含まれる、合成数位数ペアリングを構成できる楕円曲線上の座標を示す複数の元のうちの、前記第１素数を位数とする第１部分群に含まれる第１元と前記第２素数を位数とする第２部分群に含まれる第２元とを取得し、
乱数を生成し、
前記乱数を用いた前記第１元に対するスカラー倍算により第１スカラー倍点を算出し、
前記乱数を用いた前記第２元に対するスカラー倍算により第２スカラー倍点を算出し、
前記第１スカラー倍点と前記第２スカラー倍点とを加算し、
加算により得られた第３元を示すデータを送信する、
暗号処理方法。
【請求項９】
コンピュータに、
第１素数と第２素数との積を位数とする群に含まれる、合成数位数ペアリングを構成できる楕円曲線上の座標を示す複数の元のうちの、前記第１素数を位数とする第１部分群に含まれる第１元と前記第２素数を位数とする第２部分群に含まれる第２元とを取得し、
乱数を生成し、
前記乱数を用いた前記第１元に対するスカラー倍算により第１スカラー倍点を算出し、
前記乱数を用いた前記第２元に対するスカラー倍算により第２スカラー倍点を算出し、
前記第１スカラー倍点と前記第２スカラー倍点とを加算し、
加算により得られた第３元を示すデータを送信する、
処理を実行させる暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、暗号化通信システム、暗号処理方法、および暗号処理プログラムに関する。
【背景技術】
【０００２】
近年、計算機やネットワークに関する技術の進展と普及に伴い、無線通信網やインターネットなどを通じて重要なデータがやりとりされる機会が増えている。無線通信網やインターネットでは通信経路上での盗聴や改ざん、なりすましなどの不正行為が比較的容易である。そこで、通信されるデータの安全性を維持するため、通信相手の認証とそれに基づく通信内容の保護を行うことが可能な暗号化通信技術に対する需要が高まっている。
【０００３】
暗号化通信技術のうち広く使われているものとして、Secure Sockets Layer（ＳＳＬ）やその後継であるTransport Layer Security（ＴＬＳ）が挙げられる。ＴＬＳはWorld Wide Web（ＷＷＷ）通信、電子メールの送受信、仮想専用線（ＶＰＮ：Virtual Private Network）通信、サービス間の通信など、様々な用途に広く使われている。ＴＬＳでは、認証と鍵交換／鍵合意のために公開鍵暗号技術が使用される。公開鍵暗号技術としては、R. Rivest, A. Shamir, L. AdelmanによるＲＳＡ暗号・署名方式、ＤＳＳ（Digital Signature Algorithm）署名方式、ＤＨ（Diffie-Hellman）鍵交換方式、ＥＣＤＨ（Elliptic Curve Diffie-Hellman）鍵交換方式などがある。ＥＣＤＨ鍵交換方式は、楕円曲線暗号の一つであり、楕円曲線（elliptic curve）を用いた鍵交換方式である。
【０００４】
個人の属性や行動に関するデータ（パーソナルデータ）や企業などの組織の機密データは、通信時に暗号化されるだけでなく、保存する際にも暗号化して保存される。このようなパーソナルデータや機密データを利用する際、データを復号してから利用したのでは、復号することによってデータの安全性が低下し、データ漏洩の危険性が増加する。そこで、個人データや機密データを暗号化したまま利用することを可能にする暗号技術が注目されている。このような暗号技術として、準同型暗号技術がある。準同型暗号技術は、暗号化と復号で一対の異なる鍵を用いる公開鍵暗号方式の一つであり、暗号化したままデータ操作が可能となる機能を備えた暗号技術である。
【０００５】
準同型暗号方式では、二つ以上の暗号文を対象に加算や乗算などに対応する操作を行うことで、暗号文を復号することなく、元の平文同士に対して加算や乗算を行った演算結果の暗号文を得ることができる。これにより排他的論理和、論理積、否定といった操作が実現できるため、あらゆる論理回路による演算を実現可能である。
【０００６】
なお準完全準同型暗号は、乗算の回数を制限することで実用的な性能を実現している。それに対して、加算と乗算を何度でも行える完全準同型暗号方式も提唱されている。完全準同型暗号方式は、暗号化・復号や秘匿演算といった処理にかかる時間や暗号文のサイズが膨大であり、現在のところ、性能的に実用的ではない。
【０００７】
そこで、実用性の高い準完全準同型暗号による、様々な応用技術が提案されている。例えば、楕円曲線の１つである合成数位数ペアリング曲線と呼ばれるパラメータを利用した技術がある。楕円曲線を利用した鍵交換技術としては、他に、ＭＢ（McCullagh,Barreto）鍵交換方式と呼ばれる鍵交換方式もある。
【０００８】
暗号技術に関する発明としては、例えば楕円曲線上のペアリングに基づく署名方式において、署名者と検証者との間で送受信する電子署名のデータ長を削減する電子署名システムがある。また、有理点群の埋め込み次数を１とした場合において、有理点情報を圧縮・復元する有理点情報圧縮装置もある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１７８０３５号公報
【特許文献２】国際公開第２０１２／０４６８０５号
【非特許文献】
【００１０】
【非特許文献１】C. Gentry, "Fully Homomorphic Encryption Using Ideal Lattices", STOC '09 Proceedings of the forty-first annual ACM symposium on Theory of computing, ACM, 2009-05-31, pp.169-178.
【非特許文献２】D. Boneh, E-J. Goh, and K. Nissim, "Evaluating 2-DNF Formulas on Ciphertexts", TCC'05 Proceedings of the Second international conference on Theory of Cryptography, Springer-Verlag, 2005-02-10, pp.325-341.
【非特許文献３】N. McCullagh and P.S.L.M. Barreto, "A New Two-Party Identity-Based Authenticated Key Agreement", CT-RSA'05 Proceedings of the 2005 international conference on Topics in Cryptology, Springer-Verlag, 2005-02-14, pp.262-274.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
合成数位数ペアリング曲線を用いて暗号化通信を行うとき、通信を行う２つの機器間で共有鍵を生成するために、まず、互いの楕円曲線上の点のデータを交換する。しかし、合成数位数ペアリング曲線を用いた暗号化通信を行う場合に交換する点のデータのサイズは、合成数位数ペアリング曲線以外の楕円曲線を用いた暗号化通信を行う場合の点のデータのサイズよりも大きい。そのため合成数位数ペアリング曲線を用いて暗号化通信を行う場合、点のデータを通信する際の通信データ量が大きくなる。しかも、暗号化通信の安全性を高めるため、データ交換の対象となる点が２個以上となる場合もある。データ交換の対象となる点の数が増えれば、ネットワーク上のデータ量がさらに増大する。
【００１２】
１つの側面では、本件は、合成数位数ペアリング曲線を使用した鍵交換を行うための通信データ量を削減することを目的とする。
【課題を解決するための手段】
【００１３】
１つの案では、記憶部と処理部とを有する暗号処理装置が提供される。記憶部は、第１素数と第２素数との積を位数とする群に含まれる、合成数位数ペアリングを構成できる楕円曲線上の座標を示す複数の元のうちの、第１素数を位数とする第１部分群に含まれる第１元と第２素数を位数とする第２部分群に含まれる第２元とを記憶する。処理部は、まず乱数を生成する。次に処理部は、乱数を用いた第１元に対するスカラー倍算により第１スカラー倍点を算出する。次に処理部は、乱数を用いた第２元に対するスカラー倍算により第２スカラー倍点を算出する。さらに処理部は、第１スカラー倍点と第２スカラー倍点とを加算する。そして処理部は、加算により得られた第３元を示すデータを送信する。
【発明の効果】
【００１４】
１態様によれば、合成数位数ペアリング曲線を使用した鍵交換を行うための通信データ量を削減することができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係るシステムの一例を示す図である。
【図２】第２の実施の形態のシステム構成の一例を示す図である。
【図３】端末装置のハードウェアの一構成例を示す図である。
【図４】各装置の機能を示すブロック図である。
【図５】配布される情報の例を示す図である。
【図６】第２の実施の形態における鍵交換手順を示すシーケンス図である。
【図７】端末装置による暗号データの送信処理の手順を示すフローチャートである。
【図８】生体認証サーバによる認証処理の手順を示すフローチャートである。
【図９】第３の実施の形態における鍵交換手順を示すシーケンス図である。
【発明を実施するための形態】
【００１６】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
第１の実施の形態について説明する前に、合成数位数ペアリング曲線について説明し、さらにこの曲線を用いて鍵交換を行う際の課題について説明する。
【００１７】
まず第１の実施の形態に係る暗号技術に用いる記号の定義を行う。以下では、自然数の集合をＮ、整数の集合をＺとし、素数ｎ１，ｎ２∈Ｎに対して、群の位数ｎ＝ｎ１×ｎ２∈Ｎと定義する。群の位数とは、群に含まれる元の個数である。ｎ１およびｎ２は秘密鍵として利用され、安全性の観点から、位数ｎは素因数分解困難であることが求められる。そのため、ｎ１やｎ２は１０２４ビット以上のサイズとなる。このとき、ｎで割った余りによって生成される加法群をＺ／ｎＺ、その既約剰余類群を（Ｚ／ｎＺ）×と表記する。また、群Ｇ、ＧTをそれぞれ位数ｎの加法的巡回群および乗法的巡回群とし、ｇ∈Ｇを群Ｇの生成元とする。このとき、双線形写像ｅ：Ｇ×Ｇ→ＧTは非退化であり、位数ｎが合成数である。このことから、双線形写像ｅは合成数位数ペアリングと呼ばれる。なお双線形写像ｅ：Ｇ×Ｇ→ＧTが非退化であるとは、（ｉ）任意のａ，ｂ∈Ｚに対し、ｅ（ｇa，ｇb）＝ｅ（ｇ，ｇ）ab、（ｉｉ）ｅ（ｇ，ｇ）≠１GTかつＧT＝〈ｅ（ｇ，ｇ）〉を満たすことである。なお、１GTをＧTにおける単位元とする。
【００１８】
合成数位数ペアリング曲線とは、一般の楕円曲線の中でも上記の合成数位数ペアリングを構成できる特殊な楕円曲線のことである。素数ｐに対し、四則演算可能な集合｛０，１，．．．，ｐ−１｝を素体Ｆpと呼ぶ。「方程式Ｅ：ｙ2＝ｘ3＋ａｘ＋ｂ（ａ，ｂ∈Ｆp，ΔE＝４ａ3＋２７ｂ2≠０）」で定義される曲線が、素体Ｆp上の楕円曲線である。素体Ｆp上に定義される四則演算は、整数における四則演算の結果に対して素数ｐで割った余りを表している。そのため、｛０，１，．．．，ｐ−１｝以外の整数についても、その整数を素数ｐで割った余りに置き換えることで、素体Ｆpの要素と考えることができる。
【００１９】
ここで、一般の楕円曲線と合成数位数ペアリング曲線とのそれぞれについて、群Ｇの元のサイズと、元を２個送信する際の通信量を示す。
＜群Ｇの元のサイズ＞
・楕円曲線：５１２ビット
・合成数位数ペアリング曲線：８１９２ビット
＜元を２個送信する際の通信量＞
・楕円曲線：１０２４ビット
・合成数位数ペアリング曲線：１６３８４ビット
このように、楕円曲線での群Ｇの元のサイズが５１２ビットであるのに対し、合成数位数ペアリング曲線における元のサイズは８１９２ビットとサイズが大きい。そのため、合成数位数ペアリング曲線を用いた暗号化通信技術には、鍵交換などを目的として元を通信する際の通信量が非常に大きいという課題がある。
【００２０】
そこで第１の実施の形態では、合成数位数ペアリング曲線を用いた暗号化通信を行う場合における、通信量の削減技術を提供する。第１の実施の形態における暗号化通信技術では、群Ｇの元を２個送る場合の通信量を、元１個分の量に削減する。
【００２１】
具体的には、第１の実施の形態では、合成数位数ペアリング曲線における群Ｇの位数が合成数である特徴を活用して、通信する２個の元を加算により１個の元に合成して通信を行い、通信後にもとの２個の元に分離可能な手法を提案する。これにより、第１の実施の形態の技術を適用しなければ通信時に元２個分の通信量となるのに対し、第１の実施の形態の技術の適用により、１個分の元のサイズでの２個の元を示すデータの通信が実現する。
【００２２】
以下に、第１暗号処理装置１で２個の元を合成し、合成した元を第２暗号処理装置２でもとの元に分離する原理について説明する。なお以下の説明は、群Ｇと呼んだ場合、合成数位数ペアリング曲線を構成することができる群を指すものとする。
【００２３】
まず、群Ｇにおける、素数ｎ１およびｎ２を位数とする部分群を、それぞれＧn1、Ｇn2とする。ここで、部分群Ｇn1に属する生成元を、有理点Ｐn1とする。また部分群Ｇn2に属する生成元を、有理点Ｐn2とする。有理点とは、素体Ｆp上に定義される「方程式Ｅ：ｙ2＝ｘ3＋ａｘ＋ｂ（ａ，ｂ∈Ｆp，ΔE＝４ａ3＋２７ｂ2≠０）」を満たすｘ，ｙの組のことである。有理点が構成する集合は加法群となり、有理点同士の加算・減算を計算することができる。ただし、加法などの計算ルールは、後述するように、例えばｘ座標、ｙ座標を足し合わせるような単純な計算ではない。
【００２４】
群の性質から、有理点Ｐn1，Ｐn2は以下の式を満たす。
［ｎ１］Ｐn1＝Ｏ  ・・・（１）
［ｎ２］Ｐn2＝Ｏ  ・・・（２）
ここで、式（１）、（２）における「Ｏ」は群Ｇにおける加法の単位元であり、無限遠点とも呼ばれる。式（１）、（２）の左辺は、素体Ｆp上の楕円曲線上の点のスカラー倍点（scalar multiplied point）を求める計算である。スカラー倍点は、素体Ｆp上の楕円曲線Ｅ上の点Ｐをｄ個（ｄは自然数）加算して得られる点（ｄ×Ｐ＝Ｐ＋Ｐ＋・・・＋Ｐ）である。ここでは、ｄ個の有理点Ｐを加算するスカラー倍点を［ｄ］Ｐと表記する。すなわち式（１）は、部分群Ｇn1に含まれる有理点Ｐn1を「ｎ１」個足し合わせたとき、群Ｇにおける無限遠点となることを示している。また式（２）は、部分群Ｇn2に含まれる有理点Ｐn2を「ｎ２」個足し合わせたとき、群Ｇにおける無限遠点となることを示している。
【００２５】
スカラー倍点を求める計算は、スカラー倍算（scalar multiplication）と呼ばれる。スカラー倍算は、以下に示す楕円曲線の加法を繰り返し適用することで計算できる。
素体Ｆp上の楕円曲線Ｅ：ｙ2＝ｘ3＋ａｘ＋ｂ上の２点Ｐ，Ｑ（≠Ｏ）の和Ｒ＝Ｐ＋Ｑは、以下のように求めることができる。
１．２点Ｐ，Ｑを通る直線（Ｐ＝Ｑの場合にはＰを通る接線）Ｌを引く。
２．楕円曲線Ｅと直線Ｌの３つ目の交点（Ｐ，Ｑとは別の交点）をＲ’とする（交点がない場合にはＲ’＝Ｏとする）。
３．Ｒ’のｘ軸に関する対称点をＲとする（Ｒ’＝Ｏの場合にはＲ＝Ｏとする）。
【００２６】
このような加法の定義に従って、楕円曲線Ｅ上の２点Ｐ，Ｑの和を求めることができる。以下、楕円曲線上の点の和は、上記の楕円曲線の加法に従って計算されるものとする。
式（１）、（２）から、有理点Ｐn1と有理点Ｐn2はそれぞれ異なる自然数によりスカラー倍点を計算することで、これらの元の成分を消せることが分かる。この特徴を用いると、２個のスカラー倍点をそれぞれ有理点Ｐn1と有理点Ｐn2とから生成し、生成された２つのスカラー倍点を加算して１つの元にした後、その元を２つのスカラー倍点に分離することができる。すなわち、２つのスカラー倍点について、通信時にはこれらを加算することで１個の元にし、通信後、元の位数である素数ｎ２（または素数ｎ１）によるスカラー倍算を計算することで、有理点Ｐn1（または有理点Ｐn2）の成分を、送信された元から抽出することができる。
【００２７】
なお、ＥＣＤＨ鍵交換やＩＤベース認証付き鍵交換などの楕円曲線を用いる鍵交換方式では、ｘ（ｘ∈Ｚ）をスカラー値とし、点Ｐ（Ｐ∈Ｇ）に対するスカラー倍点ｃ＝［ｘ］Ｐを通信する。そのため、通信対象の元をスカラー倍点と呼ぶこともできる。
【００２８】
図１は、第１の実施の形態に係る暗号化通信システムの一例を示す図である。図１の例では、第１暗号処理装置１と第２暗号処理装置２とが、ネットワーク３を介して接続されている。第１暗号処理装置１および第２暗号処理装置２は、例えばコンピュータである。
【００２９】
第１暗号処理装置１は、第１記憶部１ａと第１処理部１ｂとを有する。第１記憶部１ａは、公開パラメータを記憶する。第１記憶部１ａが記憶する公開パラメータには、合成数位数ペアリングを構成できる楕円曲線上の座標を示す複数の元を有する群の情報（自然数の集合Ｎ、群Ｇ、群ＧT、標数ｐ）が含まれる。この群は、第１素数と第２素数との積を位数とする。さらに公開パラメータには、第１素数を位数とする第１部分群に含まれる第１元（部分群Ｇn1に含まれる有理点Ｐn1）と第２素数を位数とする第２部分群に含まれる第２元（部分群Ｇn2に含まれる有理点Ｐn2）が含まれる。
【００３０】
第１処理部１ｂは、第１元に対するスカラー倍算により第１スカラー倍点を算出する。次に第１処理部１ｂは、第２元に対するスカラー倍算により第２スカラー倍点を算出する。さらに第１処理部１ｂは、第１スカラー倍点と第２スカラー倍点とを加算する。そして第１処理部１ｂは、加算により得られた第３元を示すデータを送信する。
【００３１】
第２暗号処理装置２は、第２記憶部２ａと第２処理部２ｂとを有する。第２記憶部２ａは、公開パラメータに加え、第１素数と第２素数とのうちの少なくとも一方を秘密鍵として記憶する。第２処理部２ｂは、第３元を示すデータを受信し、第３元に対する、秘密鍵に示される値のスカラー倍算により、第３元から第１元および第２元を抽出する。
【００３２】
以下、暗号化通信システムにおける処理を、具体的に説明する。
第１暗号処理装置１は、例えば２つの乱数を生成し、それぞれを一時鍵ｘ1，ｘ2とする。次に第１暗号処理装置１は、有理点Ｐn1を第１元として、有理点Ｐn1に対して一時鍵ｘ1によるスカラー倍算を行い、スカラー倍点ｃ1（＝［ｘ1］Ｐn1）を生成する。さらに第１暗号処理装置１は、有理点Ｐn2を第２元として、有理点Ｐn2に対して一時鍵ｘ2によるスカラー倍算を行い、スカラー倍点ｃ2（＝［ｘ2］Ｐn2）を生成する。次に第１暗号処理装置１は、２つのスカラー倍点を加算した元ｃ＝ｃ1＋ｃ2を、第３元として第２暗号処理装置２に送信する。
【００３３】
第２暗号処理装置２は、元ｃを受信後、秘密鍵ｎ２を用いて以下の計算を行うことでｃ1を抽出する。
まず第２暗号処理装置２は、以下の式（３）を計算する。
ｃ1’＝［ｎ２］ｃ  ・・・（３）
ここで［ｎ２］ｃ＝［ｎ２］ｃ1＋［ｎ２］ｃ2＝［ｎ２］ｃ1＋［ｎ２］［ｘ2］Ｐn2である。式（２）より、［ｎ２］［ｘ2］Ｐn2＝［ｘ2］Ｏとなる。無限遠点Ｏは、スカラー倍算を行っても、得られるスカラー倍点は無限遠点Ｏである。従って、
ｃ1’＝［ｎ２］ｃ1＋Ｏ＝［ｎ２］ｃ1  ・・・（４）
となる。そこで第２暗号処理装置２は、ｃ1’に対する、ｎ２の逆元ｎ２-1によるスカラー倍点を、以下の式（５）によって計算し、スカラー倍点ｃ1を得る。
ｃ1＝［ｎ２-1］ｃ1’  ・・・（５）
そして第２暗号処理装置２は、式（５）で得られたスカラー倍点ｃ1を用い、以下の式（６）によりスカラー倍点ｃ2を得る。
ｃ2＝ｃ−ｃ1  ・・・（６）
このようにして、２個の元（スカラー倍点ｃ1、スカラー倍点ｃ2）を加算して１個の元ｃに合成した後、通信後にもとの２個の元に分離することが可能となる。元ｃのデータ量は、もとの元１つ分と同じである。従って２つの元を合成して通信することにより、２つの元を別々に送信する場合に比べて、元を送信するためのデータ量が半分で済む。
【００３４】
このようにして送信された元は、例えば共有鍵の生成に使用することができる。共有鍵を生成する場合、第２暗号処理装置２の第２処理部２ｂは、部分鍵情報を生成し、部分鍵情報を第１暗号処理装置１に送信する。部分鍵情報は、例えば群Ｇに含まれる、合成数位数ペアリング曲線上の座標を示す２つの元（第４元、第５元）である。
【００３５】
第１暗号処理装置１の第１処理部１ｂは、部分鍵情報を受信し、第１元、第２元、及び部分鍵情報を用いて共有鍵を生成する。例えば第１処理部１ｂは、部分鍵情報として第４元と第５元とを取得した場合、第１元と第４元を用いて、第１鍵生成アルゴリズムにより第１鍵を生成する。また第１処理部１ｂは、第２元と第５元とを用いて、第１鍵生成アルゴリズムとは異なる第２鍵生成アルゴリズムにより第２鍵を生成する。そして第１処理部１ｂは、第１鍵と第２鍵とを結合した共有鍵を生成する。第１鍵と第２鍵とを結合するとは、例えば第１鍵を示す記号列の後ろに、第２鍵を示す記号列を繋げることである。共有鍵を生成すると、第１処理部１ｂは、共有鍵で暗号化した暗号データを、第２暗号処理装置２に送信する。
【００３６】
第２暗号処理装置２の第２処理部２ｂは、暗号データを受信し、第１元、第２元、及び部分鍵情報を用いて、第１暗号処理装置１が生成したものと同じ共有鍵を生成する。そして第２処理部２ｂは、暗号データを共有鍵で復号する。
【００３７】
このように元ｃは、暗号化通信の共有鍵の生成に利用することができる。すなわち、第１の実施の形態に示した技術により、暗号化通信に使用する共有鍵を生成するために通信するデータ量を削減することが可能となる。
【００３８】
なお、第２暗号処理装置２の第２処理部２ｂが、部分鍵情報として第４元と第５元とを取得したとき、２回の暗号化通信それぞれで使用する２つの共有鍵を生成することもできる。この場合、例えば第１暗号処理装置１の第１処理部１ｂは、第１元と第４元とを用いて第１共有鍵を生成する。同様に第２暗号処理装置２の第２処理部２ｂは、第１元と第４元とを用いて第１共有鍵を生成する。そして第１処理部１ｂと第２処理部２ｂは、第１共有鍵で暗号化した暗号データの通信を行う。その後、第１暗号処理装置１の第１処理部１ｂは、第２元と第５元とを用いて第２共有鍵を生成する。同様に第２暗号処理装置２の第２処理部２ｂは、第２元と第５元とを用いて第２共有鍵を生成する。そして第１処理部１ｂと第２処理部２ｂは、第２共有鍵で暗号化した暗号データの通信を行う。
【００３９】
このようにして、異なる共有鍵を使用する２回分の暗号化通信における共有鍵生成用に送信する元のデータ量を削減することができる。
なお、第１暗号処理装置１または第２暗号処理装置２の処理は、例えばコンピュータ読み取り可能な暗号処理プログラムを、第１暗号処理装置１または第２暗号処理装置２内のプロセッサに実行させることで実現できる。暗号処理プログラムは、他のプログラムの一部として組み込まれていてもよい。また第１暗号処理装置１または第２暗号処理装置２の処理を、電子回路などのハードウェアとして実現したり、集積回路の一機能として実現したりしてもよい。
【００４０】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、生体認証の暗号化を行うためのＩＤベース認証付き鍵交換システムにおいて、鍵交換のための通信データ量を削減するものである。
【００４１】
ＩＤベース認証付き鍵交換方式の一つに、ＭＢ鍵交換方式がある。ＭＢ鍵交換方式は楕円曲線上のペアリング写像により実現される鍵交換方式である。ＭＢ鍵交換方式による鍵交換を、合成数位数ペアリング曲線で実装すると、システムの秘密鍵が漏えいした場合に過去の通信内容が漏えいするという脆弱性がある。この脆弱性はＥＣＤＨ鍵交換方式と組み合わせることで対策可能である。
【００４２】
なお合成数位数ペアリング曲線は、準完全準同型暗号を実現するだけでなく、ＥＣＤＨ鍵交換方式も実現可能である。ＥＣＤＨ鍵交換方式は、一般の楕円曲線でも実現可能であるが、準同型暗号方式を適用したシステムでＥＣＤＨ鍵交換方式を利用する場合には、合成数位数ペアリング曲線によりＥＣＤＨ鍵交換方式による鍵交換を実現することでライブラリを準備するコストを削減できる。
【００４３】
ＭＢ鍵交換方式とＥＣＤＨ鍵交換方式とを組み合わせた場合、生体情報を送信する側の端末装置は、ＭＢ鍵交換方式を実行するための元とＥＣＤＨ鍵交換方式を実行するための元の、計２個の元を送ることとなる。２つの元を別々に送信したのでは通信量が増加するため、第２の実施の形態では、これらの２つの元を圧縮して送信することで、通信量を削減する。
【００４４】
図２は、第２の実施の形態のシステム構成の一例を示す図である。第２の実施の形態では、例えば、鍵生成装置３１０、端末装置１００、および生体認証サーバ２００が、ネットワーク２０を介して接続されている。
【００４５】
鍵生成装置３１０は、鍵生成センタ３００に設置されたコンピュータである。鍵生成装置３１０は、端末装置１００と生体認証サーバ２００との間で公開鍵暗号技術を用いた通信を行うための鍵を生成する。例えば鍵生成装置３１０は、端末装置１００用の公開鍵と秘密鍵との組を生成すると共に、生体認証サーバ２００用の公開鍵と秘密鍵との組を生成する。端末装置１００用の秘密鍵は、鍵生成センタ３００から、端末装置１００を使用しているユーザ３０に渡される。ユーザ３０は、受け取った秘密鍵を端末装置１００に入力する。生体認証サーバ２００用の秘密鍵は、鍵生成センタ３００から、生体認証サーバ２００の管理者に渡される。生体認証サーバ２００の管理者は、受け取った秘密鍵を生体認証サーバ２００に入力する。
【００４６】
端末装置１００は、ユーザ３０が使用するコンピュータである。端末装置１００は、センサ２５によりユーザ３０の生体情報を読み取り、生体情報の特徴を示す特徴ベクトルを暗号化する。そして端末装置１００は、暗号化された特徴ベクトルを、生体認証サーバ２００に送信する。なお生体情報は、例えば手のひら静脈、指紋、虹彩、顔などの情報である。
【００４７】
生体認証サーバ２００は、生体情報に基づいて、ユーザ３０が本人であることの認証処理を行う。例えば生体認証サーバ２００は、ユーザ３０の生体情報に対応する照合用の特徴ベクトルを、暗号化した状態で予め保持している。生体認証サーバ２００は、端末装置１００から暗号化された特徴ベクトルを受信すると、受信した特徴ベクトルと照合用の特徴ベクトルとを、暗号化されたまま照合し、認証の成否を判定する。
【００４８】
図３は、端末装置のハードウェアの一構成例を示す図である。端末装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００４９】
メモリ１０２は、端末装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００５０】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００５１】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００５２】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００５３】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００５４】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００５５】
機器接続インタフェース１０７は、端末装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、図２に示したセンサ２５に加え、メモリ装置２６やメモリリーダライタ２７を接続することができる。メモリ装置２６は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２７は、メモリカード２８へのデータの書き込み、またはメモリカード２８からのデータの読み出しを行う装置である。メモリカード２８は、カード型の記録媒体である。
【００５６】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００５７】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、生体認証サーバ２００および鍵生成装置３１０も、図３に示した端末装置１００と同様のハードウェアにより実現することができる。また第１の実施の形態に示した第１暗号処理装置１と第２暗号処理装置２も、図３に示した端末装置１００と同様のハードウェアにより実現することができる。
【００５８】
端末装置１００または生体認証サーバ２００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。端末装置１００または生体認証サーバ２００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
【００５９】
例えば、端末装置１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また端末装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２６、メモリカード２８などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００６０】
次に、生体情報に関する暗号化通信を行うために各装置が有する機能について説明する。
図４は、各装置の機能を示すブロック図である。鍵生成装置３１０は、鍵生成部３１１を有する。鍵生成部３１１は、端末装置１００用の秘密鍵と生体認証サーバ２００用の秘密鍵とを生成する。
【００６１】
端末装置１００は、共有鍵生成部１１０、認証情報送信部１２０、および生体情報取得部１３０を有する。共有鍵生成部１１０は、生体認証サーバ２００と通信し、生体認証サーバ２００と共通の鍵（共有鍵）を生成する。認証情報送信部１２０は、生体認証サーバ２００へ、生体情報の特徴ベクトルを、共有鍵で暗号化して送信する。生体情報取得部１３０は、センサ２５を介して、ユーザ３０の生体情報を読み取り、特徴ベクトルを生成する。図４の例では、ユーザ３０の手のひら３１から、センサ２５によって、手のひら静脈の情報を読み取っている。センサ２５が読み取った情報は、生体情報取得部１３０に入力される。生体情報取得部１３０は、入力された手のひら静脈の情報を、その情報の特徴を表す特徴ベクトルに変換する。
【００６２】
生体認証サーバ２００は、生体情報データベース（ＤＢ）２１０、共有鍵生成部２２０、および認証部２３０を有する。生体情報ＤＢ２１０は、ユーザ３０の識別子に対応付けて、ユーザの生体情報の特徴ベクトルを、暗号化した状態で記憶する。生体情報ＤＢ２１０としては、例えば生体認証サーバ２００が有するストレージ装置の記憶領域の一部が使用される。共有鍵生成部２２０は、端末装置１００と通信し、端末装置１００と共通の鍵（共有鍵）を生成する。認証部２３０は、暗号化された生体情報の特徴ベクトルを、端末装置１００から受信する。そして認証部２３０は、受信した特徴ベクトルが、ユーザ３０本人の生体情報から生成されたものであるか否かを判断する。例えば認証部２３０は、受信した特徴ベクトルと、生体情報ＤＢ２１０に格納されているユーザ３０の特徴ベクトルとの距離を、暗号化された状態のまま計算する。次に認証部２３０は、算出した距離を共有鍵で復号する。そして認証部２３０は、復号された距離が所定値以下であれば、受信した特徴ベクトルが、ユーザ３０本人の生体情報から生成されたものであると認証する。
【００６３】
なお、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
このようなシステムにおいて、暗号化通信に利用する情報には、公開情報と秘密情報とがある。公開情報には、「合成数位数Ｎ（＝ｎ１×ｎ２）」、「楕円曲線Ｅ」、「標数ｐ」、「位数である素数ｎ１の有理点Ｐn1」、「位数である素数ｎ２の有理点Ｐn2」、「位数である素数ｎ２の有理点Ｐpub＝［ｓ］Ｐn2」、および「文字列を群ＺNの元に写像するハッシュ関数Ｈ」がある。秘密情報には、「システム秘密鍵：整数ｓ」、「サーバの秘密鍵：素数ｎ１、素数ｎ２、有理点ＳB＝［１／（Ｈ（ＩＤB）＋ｓ）］Ｐn2、一時鍵ｙ」、および「ユーザの秘密鍵：有理点ＳA＝［１／（Ｈ（ＩＤA）＋ｓ）］Ｐn2、一時鍵ｘ」がある。
【００６４】
なお、有理点ＳAにおける「Ｈ（ＩＤA）」は、端末装置１００の識別子「ＩＤA」のハッシュ値である。また有理点ＳBにおける「Ｈ（ＩＤB）」は、生体認証サーバ２００の識別子「ＩＤB」のハッシュ値である。
【００６５】
公開情報は、例えば鍵生成装置３１０から端末装置１００と生体認証サーバ２００とに配布される。秘密情報のうち、「有理点ＳA」は鍵生成装置３１０から端末装置１００に配布され、「有理点ＳB」は鍵生成装置３１０から生体認証サーバ２００に配布される。
【００６６】
図５は、配布される情報の例を示す図である。公開情報については、例えば鍵生成装置３１０から端末装置１００と生体認証サーバ２００とのそれぞれへ、ネットワーク２０を介して送信される。秘密情報については、例えばネットワーク２０以外の手段によって、ユーザ３０または生体認証サーバ２００の管理者に渡される。そしてユーザ３０が、秘密情報として受け取った「有理点ＳA」を、端末装置１００に入力する。また生体認証サーバ２００の管理者が、秘密情報として受け取った「素数ｎ１、素数ｎ２、有理点ＳB」を、生体認証サーバ２００に入力する。
【００６７】
端末装置１００は、公開情報と端末装置１００用の秘密情報とを、メモリまたはストレージ装置に格納する。同様に生体認証サーバ２００は、公開情報と生体認証サーバ２００用の秘密情報とを、メモリまたはストレージ装置に格納する。
【００６８】
その後、ユーザ３０が端末装置１００を用いて、生体認証サーバ２００に対して生体認証を要求する際に、ＭＢ鍵交換方式とＥＣＤＨ鍵交換方式とを組み合わせた鍵交換が実行される。
【００６９】
図６は、第２の実施の形態における鍵交換手順を示すシーケンス図である。図６に示す処理は、例えばユーザ３０が端末装置１００へ、生体認証の実行指示を入力したときに実行される。
【００７０】
まず端末装置１００は、生体認証サーバ２００へ、接続要求とＩＤAとを送信する（ステップＳ１０１）。生体認証サーバ２００は、受信したＩＤAをメモリに記憶する。また生体認証サーバ２００は、接続要求に応じて、ＩＤBを端末装置１００に送信する（ステップＳ２０１）。端末装置１００は、受信したＩＤBをメモリに記憶する。このようにして、端末装置１００と生体認証サーバ２００との間で、互いの装置ＩＤが交換される。
【００７１】
次に端末装置１００は、ＩＤBのハッシュ値ｂ（＝Ｈ（ＩＤB））を計算する（ステップＳ１０２）。次に端末装置１００は、乱数生成機能により一時鍵ｘを生成し、一時鍵ｘと有理点Ｐn1とに基づいて、１つ目の部分鍵ＲAを計算する（ステップＳ１０３）。部分鍵ＲAは、有理点Ｐn1に対する、一時鍵ｘによるスカラー倍算（［ｘ］Ｐn1）によって求められる。１つ目の部分鍵ＲAは、ＥＣＤＨ鍵交換方式に適合する鍵生成用の元である。
【００７２】
次に端末装置１００は、２つ目の部分鍵Ａを算出する（ステップＳ１０４）。部分鍵Ａは、有理点Ｐn2に対する、ハッシュ値ｂによるスカラー倍算（［ｂ］Ｐn2）の結果にＰpubを加算し、加算結果に一時鍵ｘを乗算した値である。２つ目の部分鍵Ａは、ＭＢ鍵交換方式に適合する鍵生成用の元である。
【００７３】
このようにして、有理点Ｐn1，Ｐn2を、それぞれＭＢ鍵交換方式とＥＣＤＨ鍵交換方式の部分鍵を作るためのベースの元として、一時鍵ｘにより部分鍵が生成される。
次に端末装置１００は、２つの部分鍵を加算する（ステップＳ１０５）。これにより、２個の元が１個の合成部分鍵Ａ’（＝ＲA＋Ａ）に合成される。端末装置１００は、合成により得られた合成部分鍵Ａ’を生体認証サーバ２００に送信する（ステップＳ１０６）。
【００７４】
生体認証サーバ２００では、ＩＤBを送信後、ＩＤAのハッシュ値ａ（＝Ｈ（ＩＤA））を計算する（ステップＳ２０２）。次に生体認証サーバ２００は、乱数生成機能により一時鍵ｙを生成し、一時鍵ｙと有理点Ｐn1とに基づいて、１つ目の部分鍵ＲBを計算する（ステップＳ２０３）。部分鍵ＲBは、有理点Ｐn1に対する、一時鍵ｙによるスカラー倍算（［ｙ］Ｐn1）によって求められる。１つ目の部分鍵ＲBは、ＥＣＤＨ鍵交換方式に適合する鍵生成用の元である。
【００７５】
次に生体認証サーバ２００は、２つ目の部分鍵Ｂを算出する（ステップＳ２０４）。部分鍵Ｂは、有理点Ｐn2に対する、ａによるスカラー倍算（［ａ］Ｐn2）の結果にＰpubを加算し、加算結果に一時鍵ｙを乗算した値である。２つ目の部分鍵Ｂは、ＭＢ鍵交換方式に適合する鍵生成用の元である。
【００７６】
このようにして、有理点Ｐn1，Ｐn2を、それぞれＭＢ鍵交換方式とＥＣＤＨ鍵交換方式用の部分鍵を作るためのベースの元として、一時鍵ｙにより部分鍵が生成される。生体認証サーバ２００は、生成した２つの部分鍵ＲBとＢを、端末装置１００に送信する（ステップＳ２０５）。
【００７７】
次に生体認証サーバ２００は、端末装置１００から受信した合成部分鍵Ａ’から、秘密鍵ｎ２を用いることでＥＣＤＨ鍵交換方式用の部分鍵ＲAを抽出する（ステップＳ２０６）。具体的には、生体認証サーバ２００は、まず「ＲA’＝［ｎ２］Ａ’」を計算する。次に生体認証サーバ２００は、「ＲA＝［ｎ２-1］ＲA’」を計算する。
【００７８】
次に生体認証サーバ２００は、ＥＣＤＨ鍵交換方式用の部分鍵を用いて、受信した合成部分鍵Ａ’からＭＢ鍵交換方式用の部分鍵Ａを取り出す（ステップＳ２０７）。具体的には、生体認証サーバ２００は、「Ａ’−ＲA＝Ａ」を計算する。
【００７９】
以降の処理では、端末装置１００と生体認証サーバ２００は、互いに受信したＭＢ鍵交換方式およびＥＣＤＨ鍵交換方式用の部分鍵から鍵合成の処理を実行する。
すなわち端末装置１００は、まずＥＣＤＨ鍵交換方式用の部分鍵θ1を計算する（ステップＳ１０７）。具体的には、端末装置１００は、「θ1＝［ｘ］ＲB＝［ｘｙ］Ｐn1」を計算する。次に端末装置１００は、ＭＢ鍵交換方式用の部分鍵θ2を計算する（ステップＳ１０８）。具体的には、端末装置１００は、「θ2＝ｅ（［ｘ］Ｂ，ＳA）」を計算する。そして端末装置１００は、２つの部分鍵を結合し、１つの鍵θを生成する（Ｓ１０９）。
【００８０】
同様に、生体認証サーバ２００は、まずＥＣＤＨ鍵交換方式用の部分鍵θ1を計算する（ステップＳ２０８）。具体的には、端末装置１００は、「θ1＝［ｙ］ＲA＝［ｘｙ］Ｐn1」を計算する。次に生体認証サーバ２００は、ＭＢ鍵交換方式用の部分鍵θ2を計算する（ステップＳ２０９）。具体的には、生体認証サーバ２００は、「θ2＝ｅ（［ｙ］Ａ，ＳB）」を計算する。そして生体認証サーバ２００は、２つの部分鍵を結合し、１つの鍵θを生成する（Ｓ２１０）。実際に暗号化通信に使用する鍵は、ＰＲＦ（Pseudo Random Function）などを用いて、θから作成される乱数であってもよい。
【００８１】
なお、ステップＳ１０８で得られる部分鍵θ2は、「θ2＝ｅ（［ｘ］Ｂ，ＳA）＝ｅ（Ｐ，Ｑ）xy」と表すことができる。他方ステップＳ２０９で得られる部分鍵θ2は、「θ2＝ｅ（［ｙ］Ａ，ＳB）＝ｅ（Ｐ，Ｑ）xy」と表すことができる。従って、端末装置１００と生体認証サーバ２００とにおいて、同じ値の部分鍵θ2が生成されている。
【００８２】
このようにして、端末装置１００から生体認証サーバ２００に送信するＭＢ鍵交換方式とＥＣＤＨ鍵交換方式用の２個の元を１個の元に圧縮することが可能となる。
なお図６に示した処理で使用しているパラメータのうち、「ＩＤA，ＩＤB，Ｐn2，Ｐpub，ａ，ｂ，Ａ，Ｂ，θ2」は、ＭＢ鍵交換方式で使用するパラメータである。すなわち図６に示す処理のうち、ステップＳ１０２，Ｓ１０４，Ｓ１０８，Ｓ２０２，Ｓ２０４，Ｓ２０９は、ＭＢ鍵交換方式による鍵交換を実現するための処理である。また「Ｐn1，ＲA，ＲB，θ1」は、ＥＣＤＨ鍵交換方式で使用するパラメータである。すなわち図６に示す処理のうち、ステップＳ１０３，Ｓ１０７，Ｓ２０３，Ｓ２０８は、ＥＣＤＨ鍵交換方式による鍵交換を実現するための処理である。
【００８３】
端末装置１００と生体認証サーバ２００とは、ＭＢ鍵交換方式とＥＣＤＨ鍵交換方式とを組み合わせた共有鍵を用いて、例えば生体情報の特徴ベクトルを暗号化した暗号データの通信を行う。
【００８４】
図７は、端末装置による暗号データの送信処理の手順を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］共有鍵生成部１１０は、ユーザ３０からの生体認証の実行指示の入力に応じて、接続要求とＩＤAとを生体認証サーバ２００に送信する。
【００８５】
［ステップＳ１２２］共有鍵生成部１１０は、生体認証サーバ２００からＩＤBを受信したか否かを判断する。共有鍵生成部１１０は、ＩＤBを受信した場合、処理をステップＳ１２３に進める。また共有鍵生成部１１０は、ＩＤBを受信していなければ、ＩＤBを受信するまでステップＳ１２２の処理を繰り返す。
【００８６】
［ステップＳ１２３］共有鍵生成部１１０は、乱数を生成し、一時鍵ｘとする。
［ステップＳ１２４］共有鍵生成部１１０は、ｂ（＝Ｈ（ＩＤB））、ＲA（＝［ｘ］Ｐn1）、Ａ（＝ｘ（［ｂ］Ｐn2＋Ｐpub））、Ａ’（＝ＲA＋Ａ）を計算する。
【００８７】
［ステップＳ１２５］共有鍵生成部１１０は、Ａ’を生体認証サーバ２００に送信する。
［ステップＳ１２６］共有鍵生成部１１０は、生体認証サーバ２００からＲBとＢとを受信したか否かを判断する。共有鍵生成部１１０は、ＲBとＢとを受信した場合、処理をステップＳ１２７に進める。また共有鍵生成部１１０は、ＲBとＢとを受信していなければ、ＲBとＢとを受信するまでステップＳ１２６の処理を繰り返す。
【００８８】
［ステップＳ１２７］共有鍵生成部１１０は、θ1（＝［ｘ］ＲB）、θ2（＝ｅ（［ｘ］Ｂ，ＳA）、θ（＝θ1||θ2）を計算する。
［ステップＳ１２８］生体情報取得部１３０は、センサ２５を介して、ユーザ３０の生体情報を読み取る。例えば生体情報取得部１３０は、手のひら３１から静脈の情報を読み取る。
【００８９】
［ステップＳ１２９］生体情報取得部１３０は、読み取った生体情報の特徴ベクトルを生成する。
［ステップＳ１３０］認証情報送信部１２０は、特徴ベクトルをθで暗号化し、暗号データを生成する。このときの暗号化アルゴリズムには、例えば合成数位数ペアリング曲線を用いた準同型暗号方式が用いられる。
【００９０】
［ステップＳ１３１］認証情報送信部１２０は、生成した暗号データを、生体認証サーバ２００に送信する。
このようにして、端末装置１００から、生体情報の特徴を表す特徴ベクトルの暗号データが送信される。
【００９１】
図８は、生体認証サーバによる認証処理の手順を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
［ステップＳ２２１］共有鍵生成部２２０は、端末装置１００から、接続要求とＩＤAとを受信したか否かを判断する。共有鍵生成部２２０は、接続要求とＩＤAとを受信した場合、処理をステップＳ２２２に進める。また共有鍵生成部２２０は、接続要求とＩＤAを受信していなければ、ＩＤAを受信するまでステップＳ２２１の処理を繰り返す。
【００９２】
［ステップＳ２２２］共有鍵生成部２２０は、ＩＤBを端末装置１００に送信する。
［ステップＳ２２３］共有鍵生成部２２０は、乱数を生成し、一時鍵ｙとする。
［ステップＳ２２４］共有鍵生成部２２０は、ａ（＝Ｈ（ＩＤA））、ＲB（＝［ｙ］Ｐn1）、Ｂ（＝ｙ（［ａ］Ｐn2＋Ｐpub））を計算する。
【００９３】
［ステップＳ２２５］共有鍵生成部２２０は、ＲBとＢを端末装置１００に送信する。
［ステップＳ２２６］共有鍵生成部２２０は、端末装置１００から、Ａ’を受信したか否かを判断する。共有鍵生成部２２０は、Ａ’を受信した場合、処理をステップＳ２２７に進める。また共有鍵生成部２２０は、Ａ’を受信していなければ、Ａ’を受信するまでステップＳ２２６の処理を繰り返す。
【００９４】
［ステップＳ２２７］共有鍵生成部２２０は、ＲA’（＝［ｎ２］Ａ’）、ＲA（＝［ｎ２-1］ＲA’）、Ａ（＝Ａ’−ＲA）を計算する。
［ステップＳ２２８］共有鍵生成部２２０は、θ1（＝［ｙ］ＲA）、θ2（＝ｅ（［ｙ］Ａ，ＳB）、θ（＝θ1||θ2）を計算する。
【００９５】
［ステップＳ２２９］認証部２３０は、端末装置１００から暗号データを受信したか否かを判断する。共有鍵生成部２２０は、暗号データを受信した場合、処理をステップＳ２３０に進める。また認証部２３０は、暗号データを受信していなければ、暗号データを受信するまでステップＳ２２９の処理を繰り返す。
【００９６】
［ステップＳ２３０］認証部２３０は、受信した暗号データと、ユーザ３０の照合用特徴ベクトルとの距離を計算する。例えば認証部２３０は、暗号データのままユークリッド二乗距離を計算する。
【００９７】
［ステップＳ２３１］認証部２３０は、ステップＳ２３０で計算した距離をθで復号する。
［ステップＳ２３２］認証部２３０は、復号された距離が所定の閾値以下か否かにより、認証の成否を判定する。例えば認証部２３０は、距離が閾値以下であれば、受信した特徴ベクトルに対応する生体情報が、ユーザ３０のものであると認証する。また認証部２３０は、距離が閾値を超えていれば、受信した特徴ベクトルに対応する生体情報が、ユーザ３０のものではないと判断する。
【００９８】
以上のようにして、ＭＢ鍵交換方式とＥＣＤＨ鍵交換方式とを組み合わせた鍵交換方式によって生成した鍵を用いて、準同型暗号方式による暗号データの通信を行うことができる。しかも、ＭＢ鍵交換方式とＥＣＤＨ鍵交換方式とを組み合わせているにもかかわらず、２つの部分鍵をＡ’にまとめて送信しているため、共有鍵を生成するための元の通信データ量が少なくて済む。例えば、ＲAとＡとのサイズが共に８１９２ビットの場合、通信されるＡ’のサイズも８１９２ビットである。すなわち、ＲAとＡとを個別に通信する場合に比べ、通信データ量が半分で済む。
【００９９】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、ＥＣＤＨ鍵交換方式による鍵交換を２回実行する鍵交換システムである。通常のＥＣＤＨ鍵交換方式では、セッションを接続するごとに、暗号化通信に利用する鍵を１つ生成する。それに対し、第３の実施の形態では、２回分の鍵交換をまとめて行い、次回の暗号化通信に利用する鍵も予め作成しておく。これにより、繰り返し通信が行われる装置間の通信量を削減できる。
【０１００】
図９は、第３の実施の形態における鍵交換手順を示すシーケンス図である。図９に示す処理は、例えばユーザ３０が端末装置１００へ、生体認証の実行指示を入力したときに実行される。
【０１０１】
まず、端末装置１００は、乱数生成機能により一時鍵ｘ1，ｘ2を生成する（ステップＳ１４１）。次に端末装置１００は、部分鍵ＲA1（＝［ｘ1］Ｐn1）を計算する（ステップＳ１４２）。次に端末装置１００は、部分鍵ＲA2（＝［ｘ2］Ｐn2）を計算する（ステップＳ１４３）。これにより２回分のＥＣＤＨ鍵交換方式用の部分鍵ＲA1と部分鍵ＲA2が計算される。そして端末装置１００は、２つの部分鍵を加算することで、１つの元ＲA（＝ＲA1＋ＲA2）を生成する（ステップＳ１４４）。端末装置１００は、次のセッション確立まで、ｘ2をメモリ１０２またはストレージ装置１０３に保持する（ステップＳ１４５）。端末装置１００は、生成した元ＲAを、接続要求と共に生体認証サーバ２００に送信する（ステップＳ１４６）。
【０１０２】
生体認証サーバ２００は、乱数生成機能により一時鍵ｙ1を生成する（ステップＳ２４１）。次に生体認証サーバ２００は、ベースの元（有理点Ｐn1）から部分鍵ＲB1（＝［ｙ1］Ｐn1）を計算する（ステップＳ２４２）。そして生体認証サーバ２００は、部分鍵ＲB1を端末装置１００に送信する（ステップＳ２４３）。
【０１０３】
生体認証サーバ２００は、端末装置１００から接続要求と元ＲAとを受信すると、受信した元ＲAから、秘密鍵ｎ２を用いて部分鍵ＲA1を抽出する（ステップＳ２４４）。具体的には、生体認証サーバ２００は、まずＲA1’（＝［ｎ２］ＲA）を計算し、その計算結果を用いてＲA1（＝［ｎ２-1］ＲA1’）を計算する。次に生体認証サーバ２００は、元ＲAから、部分鍵ＲA2（＝ＲA−ＲA1）を抽出する（ステップＳ２４５）。ここで生体認証サーバ２００は、次のセッションにおける暗号化通信が行われるまで、ＲA2をメモリまたはストレージ装置に保持する（ステップＳ２４６）。
【０１０４】
その後、端末装置１００は、一時鍵ｘ1，ｙ1を用いてＥＣＤＨ鍵交換方式による共有鍵θ3（＝［ｘ1］ＲB1＝［ｘ1ｙ1］Ｐn1）を作成する（ステップＳ１４７）。同様に、生体認証サーバ２００も、一時鍵ｘ1，ｙ1を用いてＥＣＤＨ鍵交換方式による共有鍵θ3（＝［ｙ1］ＲA1＝［ｘ1ｙ1］Ｐn1）を作成する（ステップＳ２５１）。これにより、端末装置１００と生体認証サーバ２００との間で、共有鍵θ3を用いて暗号化した暗号データによる暗号化通信を行うことができる。
【０１０５】
２回目のＥＣＤＨ鍵交換方式による鍵交換を行う際には、まず端末装置１００が、生体認証サーバ２００へ接続要求を送信する（ステップＳ１５１）。生体認証サーバ２００は、乱数生成機能により一時鍵ｙ2を生成する（ステップＳ２５２）。次に生体認証サーバ２００は、ベースの元（有理点Ｐn2）を用いて部分鍵ＲB2（＝［ｙ2］Ｐn2）を計算する（ステップＳ２５３）。そして生体認証サーバ２００は、部分鍵ＲB2を端末装置１００に送信する（ステップＳ２５４）。
【０１０６】
部分鍵ＲB2を受信した端末装置１００は、受信した部分鍵ＲB2と前回のＥＣＤＨ鍵交換方式での鍵交換時に保持しておいた一時鍵ｘ2を用いてＥＣＤＨ鍵交換方式による共有鍵θ4（＝［ｘ2］ＲB2＝［ｘ2ｙ2］Ｐn2）を作成する（ステップＳ１５２）。一方、生体認証サーバ２００は、前回のＥＣＤＨ鍵交換方式による鍵交換時に保持しておいた部分鍵ＲA2を取り出し、一時鍵ｙ2とＲA2とに基づいてＥＣＤＨ鍵交換方式による共有鍵θ4（＝［ｙ2］ＲA2＝［ｘ2ｙ2］Ｐn2）を作成する（ステップＳ２５５）。これにより、端末装置１００と生体認証サーバ２００との間で、共有鍵θ4を用いて暗号化した暗号データによる暗号化通信を行うことができる。
【０１０７】
以上のように鍵交換を実施することで、ＥＣＤＨ鍵交換方式による鍵交換を二回実行する際に、端末装置１００から生体認証サーバ２００に送信するＥＣＤＨ鍵交換方式用の二つの元（部分鍵）を一つの元に圧縮することが可能となる。
【０１０８】
〔その他の実施の形態〕
第２，第３の実施の形態には、生体認証のためのデータを暗号化して通信するシステムの例を示したが、生体認証以外のデータの暗号化にも同様の技術を適用して、共有鍵の生成に用いる元の通信データ量を削減することができる。
【０１０９】
また第２，第３の実施の形態では、端末装置１００から生体認証サーバ２００に送信する元のデータ量を削減しているが、同様に生体認証サーバ２００から端末装置１００に送信する元のデータ量を削減することもできる。例えば第２の実施の形態であれば、図６のステップＳ２０５で送信するＲB，Ｂを、１つの元にまとめて送信することもできる。また第３の実施の形態であれば、図９のステップＳ２４３とステップＳ２５４で送信するＲB1，ＲB2を、１つの元にまとめて送信することもできる。これにより、通信データ量がさらに削減される。
【０１１０】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１１】
１  第１暗号処理装置
１ａ  第１記憶部
１ｂ  第１処理部
２  第２暗号処理装置
２ａ  第２記憶部
２ｂ  第２処理部
３  ネットワーク
【図１】
2019029751.tif 000003
【図２】
2019029751.tif 000004
【図３】
2019029751.tif 000005
【図４】
2019029751.tif 000006
【図５】
2019029751.tif 000007
【図６】
2019029751.tif 000008
【図７】
2019029751.tif 000009
【図８】
2019029751.tif 000010
【図９】
2019029751.tif 000011