(57)【要約】【課題】楕円スカラー倍算やペアリング演算を伴う、内積述語暗号や関数型暗号を高速に実行する情報処理装置を提供する。【解決手段】暗号処理装置１０００は、汎用計算機２００と並列処理を実行する並列計算機１００とを備える。汎用計算機２００は、並列計算機１００で使用する入力データを生成し、生成した入力データを並列計算機１００に通信ポート２３０、１３０を介して送信する。並列計算機１００は、汎用計算機２００から送信された入力データに基づいて、複数のプロセッサ１１１を使用することにより、楕円スカラー倍算とペアリング演算との少なくともいずれかを、並列処理によって並列に計算する。【選択図】図１
2014138194.tif 000002
【特許請求の範囲】
【請求項１】
汎用計算機と並列処理を実行する並列計算機とを備える情報処理装置において、
前記汎用計算機は、
前記並列計算機で使用する入力データを生成し、生成した前記入力データを前記並列計算機に送信し、
前記並列計算機は、
前記汎用計算機から送信された前記入力データに基づいて、楕円スカラー倍算とペアリング演算との少なくともいずれかを、前記並列処理によって並列に計算することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、
内積述語暗号の暗号化を実行する暗号処理装置であり、
前記汎用計算機は、
前記入力データとして、属性ベクトルが格納された属性ベクトルテーブルと、乱数が格納された乱数テーブルとを生成し、
前記並列計算機は、
前記属性ベクトルテーブルと前記乱数テーブルとに基づいて多倍長乗算剰余を前記並列処理によって並列に計算し、多倍長乗算剰余の並列計算の結果に基づいて楕円スカラー倍算を前記並列処理によって並列に計算し、楕円スカラー倍算の並列計算の結果に基づいて楕円点加算を前記並列処理によって並列に計算することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記汎用計算機は、
前記属性ベクトルテーブルの各セルのうち予め定められたセルであって属性ベクトルを埋め込まないセルである特定セルと、前記乱数テーブルの各セルのうち予め定められたセルであって前記属性ベクトルテーブルの前記特定セルに対応すると共に乱数を埋め込まないセルである対応セルとに対して、多倍長乗算剰余の結果が巡回群位数となる値を設定することを特徴する請求項２に記載の情報処理装置。
【請求項４】
前記汎用計算機は、
前記属性ベクトルテーブルの前記特定セルに乗法単位元を設定する共に前記乱数テーブルの前記対応セルに巡回群位数を設定する第１の設定と、
前記属性ベクトルテーブルの前記特定セルに巡回群位数を設定する共に前記乱数テーブルの前記対応セルに乗法単位元を設定する第２の設定との、
いずれかの設定を実行することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記汎用計算機は、
暗号文と、固定長の秘密鍵とを前記並列計算機に送信し、
前記並列計算機は、
前記汎用計算機から送信された前記暗号文と前記秘密鍵とに基づいて、
ペアリング演算を前記並列処理によって並列に計算すると共に拡大体上乗算を前記並列処理によって並列に計算することを特徴とする請求項１〜４のいずれかに記載の情報処理装置。
【請求項６】
前記並列計算機は、
前記汎用計算機から送信された前記暗号文と前記秘密鍵とに基づいてペアリング演算を前記並列処理によって並列に計算し、ペアリング演算の並列計算の結果に基づいて拡大体上乗算を前記並列処理によって並列に計算することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記並列計算機は、
ペアリング演算を実行する際に、
ｎ次拡大体上の演算（ｎは２以上の整数）を、多倍長演算を行う複数のスレッドから構成されるｎ個のグループの各スレッドを同時に並列に動かすことでペアリング演算を実行する方式と、
ｎ次ツイスト曲線上の演算を、多倍長演算を行う複数のスレッドから構成されるｎ個のグループの各スレッドを同時に並列に動かすことでペアリング演算を実行する方式と
の少なくともいずれかの方式を用いることを特徴とする請求項５または６のいずれかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楕円スカラー倍算及びペアリング演算を伴う、内積述語暗号や関数型暗号を実行する情報処理装置に関する。
【背景技術】
【０００２】
現在、新しい暗号として研究が進んでいる内積述語暗号（特許文献１）や関数型暗号（特許文献２）では、１つの暗号文を生成する際に、複数回の楕円スカラー倍算を行う必要がある。また、１つの暗号文を復号する際も、複数回のペアリング演算を行う必要がある。通常、「楕円スカラー倍算」や「ペアリング演算」は重い処理であり、暗号文が増加するとその分だけ演算コストがかかる。また、内積述語暗号や関数型暗号では、述語や関数の複雑さが増加すると、暗号文１つあたりの楕円スカラー倍算・ペアリング演算の回数も増加し、演算コストが上がる。複雑な述語や関数の行うメッセージを大量に暗号化、復号する場合、これらの処理の高速化が求められる。
【０００３】
一方、大量のデータを低コストで処理するために、グラフィックプロセッサ（ＧＰＵ）を用いて暗号処理を行う装置が提案されている（例えば、特許文献３、非特許文献１、２、非特許文献３）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２７３３１７号公報
【特許文献２】特開２０１１−２３２４７５号公報
【特許文献３】特開２００７−２３３３８１号公報
【非特許文献】
【０００５】
【非特許文献１】Ｊａｗａｄ  Ｍａｓｏｏｄ，「ｇＫｒｙｐｔを使用して瞬時にデータを保護する：第１回」、［ｏｎｌｉｎｅ］、ＩＢＭホームページ、［平成２５年１月８日検索］、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ｉｂｍ．ｃｏｍ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｊｐ／ｌｉｎｕｘ／ｌｉｂｒａｒｙ／ｌ−ｇｋｒｙｐｔｄａｔａｅｎｃｒｙｐｔ１／＞
【非特許文献２】Ｊａｗａｄ  Ｍａｓｏｏｄ，「ｇＫｒｙｐｔを使用して瞬時にデータを保護する：第２回」、［ｏｎｌｉｎｅ］、ＩＢＭホームページ、［平成２５年１月８日検索］、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ｉｂｍ．ｃｏｍ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｊｐ／ｌｉｎｕｘ／ｌｉｂｒａｒｙ／ｌ−ｇｋｒｙｐｔｄａｔａｅｎｃｒｙｐｔ２／ｉｎｄｅｘ．ｈｔｍｌ？ｃａ＝ｄｒｓ−＞
【非特許文献３】村上智祐、他５名、「ＧＰＧＰＵでの暗号化アルゴリズムの実装と評価」、情報処理学会創立５０周年記念（第７２回）全国大会、ｐ１−５７〜１−５８
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１、非特許文献１、２及び非特許文献３によれば、ＧＰＵを用いて、共通鍵暗号やハッシュ関数を高速化する方式については記されているが、内積述語暗号や関数型暗号を高速化する方法については記されていない。
【０００７】
この発明は上記のような問題点を解決するためになされたもので、内積述語暗号や関数型暗号を高速に実行する情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００８】
この発明の情報処理装置は、
汎用計算機と並列処理を実行する並列計算機とを備える情報処理装置において、
前記汎用計算機は、
前記並列計算機で使用する入力データを生成し、生成した前記入力データを前記並列計算機に送信し、
前記並列計算機は、
前記汎用計算機から送信された前記入力データに基づいて、楕円スカラー倍算とペアリング演算との少なくともいずれかを、前記並列処理によって並列に計算することを特徴とする。
【発明の効果】
【０００９】
この発明により、楕円スカラー倍算やペアリング演算を伴う、内積述語暗号や関数型暗号を高速に実行する情報処理装置を提供できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１の暗号処理装置１０００の構成を示すブロック図。
【図２】実施の形態１で説明する内積述語暗号の暗号化のフローを示す図。
【図３】図２のＳ２０１で汎用計算機２００が生成する属性ベクトルテーブルＶＴ及び乱数テーブルＲＴを示す図。
【図４】図２のＳ２０３における並列計算機１００によるアクセス制御メッセージの生成法を示す図。
【図５】実施の形態１で説明する内積述語暗号の復号のフローを示す図。
【図６】図５のＳ５０１におけるセッション鍵生成法を示す図。
【図７】実施の形態２の２次拡大体上の１つ目の乗算の流れを示すフロー。
【図８】実施の形態２の２次拡大体上の２つ目の乗算の流れを示すフロー。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、実施の形態１における暗号処理装置１０００（情報処理装置）の構成を示すブロック図である。暗号処理装置１０００は、以下に述べる並列計算機１００として一般的に入手可能なＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて実現することも可能である。また、以下の実施の形態では、特許文献１に示す内積述語暗号について記すが、以下に説明する実施の形態の要諦は、同様の構成を取る関数型暗号にも適用可能である。内積述語暗号の詳細は（特許文献１）に譲り、以下の実施の形態では、並列計算機（例えば、上記ＧＰＵを搭載したグラフィックカード）を用いた暗号化と復号との実装について説明する。
【００１２】
暗号処理装置１０００は、複数のプロセッサ１１１を用いて並列処理を実行する並列計算機１００と、汎用計算機２００とを備える。並列計算機１００と汎用計算機２００とは、通信ポート１３０、通信ポート２３０によって接続されている。通信ポートはＥｔｈｅｒｎｅｔ（登録商標）のようなシリアル形式でも、ＰＣＩｅｘｐｒｅｓｓのようなバス形式でもよい。
【００１３】
（並列計算機１００）
並列計算機１００は、並列計算部１１０、メモリ１２０、通信ポート１３０を搭載し、それらがバス１４０で接続されている。また、並列計算部１１０は、複数のプロセッサ１１１、命令デコーダ１１２及びレジスタ１１３を含んでいる。
【００１４】
（汎用計算機２００）
汎用計算機２００は、汎用計算部２１０、メモリ２２０、通信ポート２３０を搭載し、それらがバス２４０で接続されている。汎用計算機２００としては、例えばＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）がある。汎用計算機２００の汎用計算部２１０は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１５】
図２は、内積述語暗号の暗号化のフローを示す。初めに、Ｓ２０１において、特許文献１により生成された属性ベクトルを、属性ベクトルテーブルＶＴ（単にＶＴと記す場合もある）にマッピングする（埋め込み属性テーブルの生成）。また、乱数を生成し、乱数テーブルＲＴ（単にＲＴと記す場合もある）を生成する（Ｓ２０１）。次に、Ｓ２０２において、データの暗号化に用いるセッション鍵を生成し、前記セッション鍵を用いて所望のデータを暗号化する。データ暗号化には共通鍵暗号を用いてもよい。さらに、ＣＣＭ等のメッセージ検証可能な利用モードによる暗号化を行ってもよい（Ｓ２０２）。最後に、Ｓ２０３において、埋め込み属性テーブルＶＴと乱数テーブルＲＴの値を用いて、（１）多倍長乗算剰余、（２）楕円スカラー倍算、（３）楕円点加算を行い、アクセス制御メッセージＡ（以下、単にＡと記す場合もある）を生成する。
【００１６】
（１）本実施の形態１では、Ｓ２０１、Ｓ２０２を汎用計算機２００で実行し、Ｓ２０３を並列計算機１００で実行する（第１形態という）。
（２）あるいは第１の形態とは別の形態として、第１形態の場合に加え、Ｓ２０２のステップ２のデータ暗号化を並列計算機１００で実行してもよい（第２形態という）。
（３）あるいは、第１形態に対して、Ｓ２０３のステップ１，３を汎用計算機で実行してもよい（第３形態という）。言い換えれば、図２の場合は、少なくともＳ２０３のステップ２の楕円スカラー倍算は並列計算機１００で並列に処理する。
（４）なお並列計算機１００〜汎用計算機２００との間のデータ通信は、それぞれの通信ポートを経由して行う。並列計算機１００は、汎用計算機２００の生成した入力データを汎用計算機２００から受信し、入力データに基づき並列計算し、その計算結果を汎用計算機２００に返す。
（５）なお、Ｓ２０１等を実行するのは、並列計算機１００が実行主体であれば並列計算部１１０の各プロセッサ１１１であり、汎用計算機２００が実行主体であれば汎用計算部２１０（ＣＰＵ）である。
【００１７】
（Ｓ２０１の処理内容）
図３は、Ｓ２０１で汎用計算機２００が生成する属性ベクトルテーブルＶＴ及び、乱数テーブルＲＴを示す。Ｓ２０１は、汎用計算機２００が実行する処理である。属性ベクトルテーブルＶＴ及び乱数テーブルＲＴは、図４でさらに後述するが、汎用計算機２００が生成する、並列計算機１００のための入力データである。汎用計算機２００は、これらの入力データを生成して、並列計算機１００へ送信する。以下、図３を説明する。
【００１８】
メッセージ数をｍ，ｍメッセージ当たりの最大属性ベクトル数をｎとし、
汎用計算機２００は、
属性ベクトルテーブルＶＴ［ｍ］［ｎ＋２］，乱数テーブルＲＴ［ｍ］［ｎ＋２］
を準備する。
属性ベクトルテーブルＶＴでは、ある１行が１メッセージに相当する。
ＶＴ［ｉ］［ｊ］（１≦ｉ≦ｍ，１≦ｊ≦ｎ）
に属性ベクトルＶ１，Ｖ２，・・・，ＶＬを設定する。
図３では、
Ｖ１［ｍ］［３］，Ｖ２［ｍ］［１］，・・・，ＶＬ［ｍ］［ｐ］（ｐ＜ｎ−５）、
とした場合について記す。
属性ベクトルテーブルＶＴでは、属性ベクトルはメッセージ毎に決められた位置に決められた値を設定する。
属性ベクトルを埋め込まないセル（図３ではｊ＝５の位置のセル（特定セル））は、
ＶＴ［ｉ］［ｊ］に乗法単位元（図３の例では「１」）を設定する（第１の設定）。
また、ＶＴ［ｉ］［ｎ＋１］，ＶＴ［ｉ］［ｎ＋２］
には、乗法単位元を設定する。
【００１９】
汎用計算機２００は、
ＲＴ［ｉ］［ｊ］（１≦ｉ≦ｍ，１≦ｊ≦ｎ＋２）
には、乱数を設定する。同じ属性ベクトルを設定した位置に対応する乱数テーブルには同じ乱数を設定し、異なる属性ベクトルを設定した位置に対応する乱数テーブルには異なる乱数を設定する。図３のＶ１［１］［１］〜Ｖ１［１］［３］は同じ属性ベクトルであるので、ＲＴのＶＴのセルに対応するセルには、同じ乱数Ｒ［１］［１］が設定されている。また、Ｖ２［１］［１］に対応するセルには乱数Ｒ［１］［１］と異なる乱数Ｒ［１］［２］が設定されている。
【００２０】
汎用計算機２００は、属性ベクトルを埋め込まないセル（図３ではｊ＝５のセル）に対応する乱数テーブルＲＴ［ｉ］［ｊ］のセル（対応セル）には、所定の定数（巡回群位数）を設定する。属性ベクトルテーブルＶＴの特定セルに単位元を設定し、特定セルに対応する乱数テーブルＲＴの対応セルに所定の定数として巡回群位数を設定することで（第１の設定）、多倍長乗算剰余の結果が巡回群位数となる（後述の図４の計算８０１を参照）。なお、属性ベクトルテーブルＶＴ［ｉ］［ｊ］の特定セルに巡回群位数を設定し、乱数テーブルＲＴ［ｉ］［ｊ］の対応セルに乗法の単位元を設定しても構わない（第２の設定）。これは後述の図４の計算８０１からわかるように、対応する成分同士であるＶＴ［ｉ］［ｊ］とＲＴ［ｉ］［ｊ］との多倍長乗算剰余の計算結果は可換だからである。
【００２１】
ＲＴ［ｉ］［ｎ＋１］は、特許文献１のパラメータρとして、Ｓ２０２のセッション鍵生成に使用する。
【００２２】
（Ｓ２０３の処理内容）
図４はＳ２０３におけるアクセス制御メッセージの生成法を示す。図４はＳ２０３の処理の全てを並列計算機１００が行う例を示すが、上記の第３形態で述べたように、少なくとも楕円スカラー倍算を並列計算機１００によって並列計算すればよい。
【００２３】
以下に図４の詳細を説明する。
（１．データ入力）
並列計算機１００は、ＶＴ［ｍ］［ｎ＋２］，ＲＴ［ｍ］［ｎ＋２］、及び、あらかじめ生成した基底ベクトルＢ［ｎ＋２］［ｎ＋２］（汎用計算機２００が生成、入力データの一例）を入力する。図４の入力におけるＶＴ［１］［１］〜ＶＴ［１］［ｎ＋２］、及びＶＴ［２］［１］〜ＶＴ［２］［ｎ＋２］は、図３の属性ベクトルテーブルＶＴの、１行目と２行目である。１行目、２行目は第１メッセージ（ｍ＝１）、第２メッセージ（ｍ＝２）に相当する。同様に図４の入力におけるＲＴ［１］［１］〜ＲＴ［１］［ｎ＋２］、及びＲＴ［２］［１］〜ＲＴ［２］［ｎ＋２］は、図３の乱数テーブルＲＴの、１行目と２行目である。
【００２４】
（２．多倍長乗算剰余）
並列計算機１００は、
ＶＴ［ｉ］［ｊ］とＲＴ［ｉ］［ｊ］（１≦ｉ≦ｍ，１≦ｊ≦ｎ＋２）との、多倍長乗算剰余を計算し、Ｍ［ｉ］［ｊ］に格納する。多倍長乗算剰余は、図４のように１メッセージ当たりｎ＋２回行い、これらは独立に計算できる。このため、並列計算機１００は、多倍長乗算剰余の計算を並列実行する。具体的には、並列計算機１００は複数のプロセッサ１１１等を用いて、図４に枠の中に「×」を記載して示すそれぞれの「計算８０１」（１メッセージ当たり（ｎ＋２）個の多倍長乗算剰余の計算）を並列処理によって並列に計算する。さらに、並列計算機１００は複数のメッセージに対しても並列に実行する。
【００２５】
（３．楕円スカラー倍算）
並列計算機１００は、Ｂ［ｎ＋２］とＭ［ｉ］［ｊ］とから楕円スカラー倍算ＥＣＳ（ｍ，Ｂ）を実行し、結果をＳ［ｍ］［ｎ＋２］［ｎ＋２］に格納する。Ｓ［ｉ］［ｊ］［ｋ］に格納する楕円スカラー倍ＥＣＳ（ｍ，Ｂ）は、下記の数式で決定する。
【００２６】
【数１】
2014138194.tif 000003
楕円スカラー倍算は、図４に示すように１メッセージ当たり（ｎ＋２）×（ｎ＋２）回行う。具体的には例えば図４のＭ［１］［１］は、Ｂ［１」〜Ｂ［ｎ＋２］に対して（ｎ＋２）回計算し、これをＭ［１］［１］〜Ｍ［１］［ｎ＋２］について計算するので、上記のように１メッセージ当たり（ｎ＋２）×（ｎ＋２）回行うことになる。これら（ｎ＋２）×（ｎ＋２）回の計算は独立に計算できる。このため、並列計算機１００は、楕円スカラー倍の計算を並列実行する。具体的には、並列計算機１００は複数のプロセッサ１１１等を用いて、図４に枠の中をハッチングで示すそれぞれの「計算８０２」（１メッセージ当たり「（ｎ＋２）×（ｎ＋２）」個の楕円スカラー倍算）を並列処理によって並列に計算する。さらに、異なるメッセージに対しても並列に実行する。
【００２７】
（４．楕円点加算）
並列計算機１００は、楕円スカラー倍算の結果に対し、楕円点加算を実行し、結果をアクセス制御メッセージＡ［ｍ］［ｎ＋２］に格納する。
Ａ［ｉ］［ｊ］（１≦ｉ≦ｍ，１≦ｊ≦ｎ＋２）
は下記の数式で計算する。
【００２８】
【数２】
2014138194.tif 000004
楕円点加算は１メッセージ当たり、（ｎ＋１）回の加算を（ｎ＋２）個実行する。１メッセージ当たりの（ｎ＋２）個の加算は独立して計算できる。このため、並列計算機１００は、（ｎ＋２）個の楕円点加算を並列実行する。具体的には、並列計算機１００は複数のプロセッサ１１１等を用いて、図４に枠の中に「＋」を記載して示すそれぞれの「計算８０３」（１メッセージ当たり（ｎ＋２）個の楕円点加算）を並列処理によって並列に計算する。さらに、異なるメッセージに対しても並列に実行する。
最後に、Ａを汎用計算機に出力する。
【００２９】
図５は、内積述語暗号の復号のフローを示す。内積述語暗号の復号では、アクセス制御メッセージＡ［ｍ］［ｎ＋２］からセッション鍵を生成する。
（１）まず、アクセス制御メッセージＡ（暗号文の一例）と、あらかじめ生成した秘密鍵とのペアリングを計算し、計算したペアリング値を拡大体上乗算して、セッション鍵を得る（Ｓ５０１）。
（２）次に、前記セッション鍵を用いて、暗号化されたデータを復号する（Ｓ５０２）。
【００３０】
図６はＳ５０１におけるセッション鍵生成法を示す。図６はＳ５０１の処理の全てを並列計算機１００で行う例を示すが、並列計算機１００は演算負荷の高いぺリング演算だけを並列実行しても良い。
【００３１】
（１．データ入力）
並列計算機１００は、図６のように、アクセス制御メッセージＡ［ｍ］［ｎ＋２］と、あらかじめ生成された固定長の秘密鍵である秘密鍵ベクトルＳＫ［ｎ＋２］（汎用計算機２００が生成）を入力する。
【００３２】
（２．ペアリング演算）
並列計算機１００は、
Ａ［ｉ］［ｊ］（１≦ｉ≦ｍ，１≦ｊ≦ｎ＋２）とＳＫ［ｊ］（１≦ｊ≦ｎ＋２）とのペアリングｅ（Ａ［ｉ］［ｊ］，ＳＫ［ｊ］）を計算し、結果をＥ［ｉ］［ｊ］に格納する。ペアリングは図６のように、１メッセージ当たり（ｎ＋２）回実施し、これらは独立に計算できる。このため、並列計算機１００は、ペアリング演算を並列実行する。具体的には、並列計算機１００は複数のプロセッサ１１１等を用いて、図６に枠の中をハッチングで示すそれぞれの「計算９０１」（１メッセージ当たり（ｎ＋２）個のペアリング演算）を並列処理によって並列に計算する。さらに、複数のメッセージに対しても並列に実行する。
【００３３】
（３．拡大体上乗算）
並列計算機１００は、セッション鍵Ｋ［ｍ］を下記の式で計算し、Ｋを汎用計算機に出力する。
【００３４】
【数３】
2014138194.tif 000005
Ｅ［ｉ］［ｊ］の乗算は拡大体上で行う。拡大体上の乗算は、セッション鍵ごとに独立して行える。このため、並列計算機１００は、拡大体上の乗算をセッション鍵ごとに並列に実行する。具体的には、並列計算機１００は複数のプロセッサ１１１等を用いて、図６に枠の中に「×」を記載して示すそれぞれの「計算９０２」（１セッション鍵当たり（ｎ＋１）個の拡大体上の乗算）を並列処理によって並列に計算する。
【００３５】
効果について説明する。以上に説明した実施の形態１では、計算に時間のかかる楕円スカラー倍算（図４の計算８０２）やペアリング演算（図６の計算９０１）を並列計算機を用いて並列実行する。これによって、高速に内積述語暗号の暗号化処理や復号処理を行うことができる。
【００３６】
実施の形態１のもう１つの効果として以下の効果がある。暗号化の際に属性値を埋め込まない場合に、ＶＴ［ｉ］［ｊ］（特定セル）に乗法単位元を設定し、対応するＲＴ［ｉ］［ｊ］（対応セル）に巡回群位数を設定した。あるいはＶＴ［ｉ］［ｊ］（特定セル）に巡回群位数を設定し、対応するＲＴ［ｉ］［ｊ］（対応セル）に乗法単位元を設定した。これにより、属性値を埋め込まない場合でも、属性値を埋め込んだ場合と同じように計算を行うことができ、属性値を埋め込むか否かの条件判定を削減することができる。巡回群位数を埋め込むことにより、楕円スカラー倍算の結果は無限遠点になるため、その後の楕円点加算において、楕円スカラー倍算の結果をそのまま足しても、楕円点加算の結果に影響を与えない。
【００３７】
実施の形態２．
本実施の形態２は、実施の形態１の図６に示したペアリング演算（計算９０１）において、２次拡大体上の２つの乗算を並列に実行する方法について記す。ペアリング演算（計算９０１）であるので、並列計算機１００が並列に計算する。
【００３８】
図７は、２次拡大体上の１つ目の乗算の流れを示すフローである。図７のグループ１とグループ２は、ペアリング演算における各計算９０１において実行される。図７において、グループ１とグループ２の各Ｓｔｅｐ（各スレッド）は同時に実行され、入出力データは各Ｓｔｅｐごとに完全に同期するものとする。各ステップでは入力の異なる同じ多倍長整数演算を実行する。また、Ｓｔｅｐ３の結果に対する乗算（Ｓｔｅｐ４）は片一方のグループで実行し、その間、他方のグループは演算を行わない。
【００３９】
図８は２次拡大体上の２つ目の乗算の流れを示すフロー図である。図７と同様に、図８のグループ１とグループ２は、ペアリング演算における各計算９０１において実行される。図８において、グループ１とグループ２の各Ｓｔｅｐ（各スレッド）は、同時に実行され、入出力データはＳｔｅｐごとに完全に同期するものとする。各ステップでは入力の異なる同じ演算を実行する。また、Ｓｔｅｐ３の結果に乗算は片一方のグループで実行し、その間、他方のグループは演算を行わない。さらに、グループ１のＳｔｅｐ２では、Ｓｔｅｐ１の結果の大小関係で演算対象が異なるが、同じ多倍長加算を行う。
【００４０】
効果について説明する。本実施の形態２によれば、実施の形態１の効果に加え、内積述語暗号の復号操作におけるペアリング演算をさらに高速化することができる。また、各ステップでは同じ演算を実行するため、多倍長演算前のオペランド設定のみを分岐処理することができ、多倍長演算処理の直列化によるスループットの低下を抑制することができる。
【００４１】
実施の形態２は、並列計算機１００が、２次拡大体上の演算を、多倍長演算を行う複数のステップ（スレッド）から構成される２個のグループの各ステップを同時に並列に動かすことでペアリング演算を実行する方式を説明したが、この２次拡大体上の演算はｎ次拡大体上の演算（ｎは３以上の整数）でも、上記の２次拡大体上の演算と同様に処理できる。つまり、記並列計算機１００は、ペアリング演算を実行する際に、ｎ次拡大体上の演算（ｎは２以上の整数）を、多倍長演算を行う複数のステップ（スレッド）から構成されるｎ個のグループの各スレッドを同時に並列に動かすことでペアリング演算を実行する。
【００４２】
また、並列計算機１００は、上記で述べたｎ次拡大体上の演算と同様に、ｎ次ツイスト曲線上の演算を実行してもよい。つまり、並列計算機１００は、ｎ次ツイスト曲線上の演算（ｎは２以上の整数）を、多倍長演算を行う複数のステップ（スレッド）から構成されるｎ個のグループの各ステップを同時に並列に動かすことでペアリング演算を実行する方式を採用しても構わない。
【００４３】
以上の実施の形態では以下の暗号処理装置を説明した。
汎用計算機と並列計算機とを備える暗号処理装置であって、
前記汎用計算機は、
前記並列計算機で使用する入力データを前記汎用計算機で多量に生成し、生成した前記入力データを前記並列計算機に送信し、
前記並列計算機は、
前記汎用計算機から送られてきた多量の前記入力データを並列に計算し、計算結果を汎用計算機に送付する暗号処理装置。
【００４４】
以上の実施の形態では以下の暗号処理装置を説明した。
前記並列計算機は、
楕円スカラー倍算もしくはペアリング演算を行う暗号処理装置。
【００４５】
以上の実施の形態では以下の暗号処理装置を説明した。
汎用計算機と並列計算機とを備え、内積述語暗号を実行する暗号処理装置であって、
前記汎用計算機は、
属性ベクトルと乱数とを多量に生成し、それぞれをそれぞれのテーブルに格納し、前記属性ベクトルと乱数とを格納した各テーブルを前記並列計算機に送信し、
前記並列計算機は、
前記汎用計算機から送信された属性ベクトルテーブルと乱数テーブルとをもとに、多倍長乗算剰余、楕円スカラー倍算、楕円点加算を計算し、計算結果を前記汎用計算機に送付する暗号処理装置。
【００４６】
以上の実施の形態では以下の暗号処理装置を説明した。
汎用計算機と並列計算機とを備え、内積述語暗号を実行する暗号処理装置であって、
前記汎用計算機は、
多量の暗号文と、固定長の秘密鍵を前記並列計算機に送信し、
前記並列計算機は、
前記汎用計算機から送信された前記暗号文と前記秘密鍵とをもとに、ペアリング演算、拡大体上乗算を計算し、計算結果を前記汎用計算機に送付する暗号処理装置。
【００４７】
以上の実施の形態では以下の暗号処理装置を説明した。
前記汎用計算機は、
属性ベクトルテーブルのうちの予め定められた箇所のセルであって属性ベクトルの埋め込みを行わない特定セルと、乱数テーブルの各セルのうち予め定められたセルであって前記属性ベクトルテーブルの前記特定セルに対応すると共に乱数を埋め込まないセルである対応セルとに対して、多倍長乗算剰余の結果が巡回群位数となる値を設定する情報処理装置。
【００４８】
以上の実施の形態では以下の暗号処理装置を説明した。
汎用計算機は、
属性ベクトルの埋め込みを行わない場合に、属性ベクトルを格納する属性ベクトルテーブルの当該位置に乗法単位元を設定し、乱数値を格納するテーブルの当該位置に巡回群位数を設定すること、または、属性ベクトルの埋め込みを行わない場合に、属性ベクトルテーブルの当該位置に巡回群位数を設定し、乱数値を格納するテーブルの当該位置に乗法単位元を設定する暗号処理装置。
【００４９】
以上の実施の形態では以下の暗号処理装置を説明した。
並列計算機１００は、ペアリング演算を実行する際に、ｎ次拡大体上の演算およびｎ次ツイスト曲線上の演算を、多倍長演算を行う複数のスレッドから構成されるｎ個のグループを同時並列に動かすことで処理を行う暗号処理装置。
【符号の説明】
【００５０】
１００  並列計算機、１１０  並列計算部、１１１  プロセッサ、１１２  命令デコーダ、１１３  レジスタ、１２０  メモリ、１３０  通信ポート、１４０  バス、２００  汎用計算機、２１０  汎用計算部、２２０  メモリ、２３０  通信ポート、２４０  バス、１０００  暗号処理装置。
【図１】
2014138194.tif 000006
【図２】
2014138194.tif 000007
【図３】
2014138194.tif 000008
【図４】
2014138194.tif 000009
【図５】
2014138194.tif 000010
【図６】
2014138194.tif 000011
【図７】
2014138194.tif 000012
【図８】
2014138194.tif 000013