(57)【要約】  秘密計算装置（１）はホスト計算部（１０）及びＦＰＧＡ（４０５）を備える。ホスト計算部（１０）はＦＰＧＡ（４０５）に論理回路を形成する。ＦＰＧＡ（４０５）は、初期値（ＩＶ）から公開鍵Ｋｐと秘密鍵（Ｋｓ）を生成し、公開鍵（Ｋｓ）で暗号化された秘密鍵（Ｃｍｋ）を取得し、秘密鍵（Ｃｍｋ）を秘密鍵Ｋｓで復号する鍵計算回路（２２２）、秘密鍵（ｍｋ）でコンテンツ（Ｑ）が暗号化された暗号化データ（Ｃａ）を取得し、暗号化データ（Ｃａ）を復号された秘密鍵ｍｋで復号する復号演算回路（２２４）、コンテンツ（Ｑ）に処理（Ｆｕｎｃ）を実施し、処理コンテンツＱを生成する高速演算回路（２２５）、処理コンテンツ（Ｑ）を秘密鍵（ｍｋ）で暗号化する暗号化演算回路（２２６）及び処理コンテンツＱの暗号化データを出力する出力回路（２２７）を備える。
2020144758.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算部と、論理回路の回路構成を回路情報によって変更できる論理回路装置とを備え、
前記ホスト計算部は、
アプリケーションに対応付いた前記回路情報を使用することにより前記論理回路装置に複数の論理回路を形成し、
前記複数の論理回路が形成された前記論理回路装置は、
公開鍵と秘密鍵とのペアを生成し、前記公開鍵によって暗号化されたユーザ秘密鍵を取得し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する鍵計算回路と、
前記ユーザ秘密鍵で暗号化されたコンテンツを取得し、暗号化された前記コンテンツを復号された前記ユーザ秘密鍵で復号する復号演算回路と、
復号された前記コンテンツに前記アプリケーションに対応付いた処理を実施し、前記コンテンツの処理結果である処理コンテンツを生成するコンテンツ演算回路と、
前記処理コンテンツを前記ユーザ秘密鍵で暗号化する暗号化演算回路と、
暗号化された前記処理コンテンツを出力する出力回路と
を備える秘密計算装置。
【請求項２】
前記鍵計算回路は、
初期値を用いて公開鍵と秘密鍵との前記ペアを生成する請求項１に記載の秘密計算装置。
【請求項３】
前記論理回路装置は、
回路構成が変化しない前記論理回路が形成される固定領域を有し、
前記鍵計算回路は、
前記固定領域に形成されており、同一の前記初期値に対して同一の公開鍵と同一の秘密鍵とのペアを生成する請求項２に記載の秘密計算装置。
【請求項４】
前記鍵計算回路は、
複数の異なる前記初期値を用いて、前記初期値ごとに前記公開鍵と前記秘密鍵との前記ペアを生成する請求項３に記載の秘密計算装置。
【請求項５】
前記初期値と、前記初期値から生成された前記公開鍵とは、
真正であることを保証する真正情報が対応付いた状態で、鍵情報を格納する鍵情報格納装置に格納されている請求項４に記載の秘密計算装置。
【請求項６】
前記鍵計算回路は、
前記ユーザ秘密鍵で暗号化された前記コンテンツを格納する暗号化コンテンツ格納装置から、前記ユーザ秘密鍵で暗号化された前記コンテンツを取得する請求項１から請求項５のいずれか一項に記載の秘密計算装置。
【請求項７】
前記鍵計算回路は、
物理的複製不能関数を用いて第１の鍵情報を生成し、前記第１の鍵情報を用いて前記秘密鍵を暗号化し、前記復号演算回路が暗号化された前記コンテンツを復号する際に、前記物理的複製不能関数を用いて前記第１の鍵情報と同一の第２の鍵情報を生成し、前記第１の鍵情報を用いて暗号化された前記秘密鍵を前記第２の鍵情報を用いて復号し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する請求項１に記載の秘密計算装置。
【請求項８】
請求項１に記載の秘密計算装置と通信するクライアント装置であって、
前記秘密計算装置に前記回路情報を送信する送信制御部と、
前記秘密計算装置から前記公開鍵を取得し、前記公開鍵で前記ユーザ秘密鍵を暗号化し、前記ユーザ秘密鍵で前記コンテンツを暗号化し、前記公開鍵で暗号化された前記ユーザ秘密鍵と前記ユーザ秘密鍵で暗号化された前記コンテンツとを前記秘密計算装置に送信する暗号制御部と、
暗号化された前記処理コンテンツを前記秘密計算装置から取得し、暗号化された前記処理コンテンツを前記ユーザ秘密鍵で復号する復号制御部と
を備えるクライアント装置。
【請求項９】
前記送信制御部は、
前記秘密計算装置に、鍵情報が入力データとして適用された場合、前記鍵情報の認証値を出力する認証プログラムを送信し、
前記暗号制御部は、
前記秘密計算装置から前記公開鍵と共に第１の認証値を取得し、前記秘密計算装置に送信された前記認証プログラムと同一の前記認証プログラムに前記鍵情報として前記公開鍵を適用することにより第２の認証値を取得し、前記第１の認証値と前記第２の認証値とを比較し、比較結果が正しいと判断した場合に、暗号化された前記ユーザ秘密鍵を前記秘密計算装置に送信する請求項８に記載のクライアント装置。
【請求項１０】
前記送信制御部は、
前記認証プログラムを前記回路情報に含めることにより、前記認証プログラムを前記秘密計算装置に送信する請求項９に記載のクライアント装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘密計算を行う秘密計算装置及び秘密計算を要求するクライアント装置に関する。
【背景技術】
【０００２】
＜秘密計算＞
秘密計算とは、データを秘匿したま、指定された関数による演算を行う技術である。例えば特許文献１は、特定の演算に限定されない、準同型暗号を用いた秘密計算制御装置を開示する。【０００３】
＜クラウドＦＰＧＡ＞
クラウドサービスとして、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を搭載したコンピューティングインスタンスの提供が普及している。例えば、Ａｍａｚｏｎ  ＥＣ２  Ｆ１が挙げられる。このクラウドサービスは、アプリケーションからＦＰＧＡを動的に再構成し、アプリケーションにおいてボトルネックとなる演算をＦＰＧＡにオフロードして、処理を高速化することができる。【０００４】
＜ＰＵＦ＞
ＰＵＦ（Ｐｈｙｓｉｃａｌ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）は、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の製造ばらつきを用いてデバイス固有のＩＤを生成する技術である。例えば特許文献２では、同一の論理回路であっても出力の過渡遷移が製造ばらつきによって異なることを利用したＩＤの生成技術が開示される。一般にこのような製造ばらつきを利用したＩＤはＩＤを生成するたびに誤りを含む。この誤りを訂正し補正することで、毎回同じＩＤを生成する技術として非特許文献１のＦｕｚｚｙ  Ｅｘｔｒａｃｔｏｒがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１３６１９０号公報
【特許文献２】国際公開第２０１１／０８６６８８号パンフレット
【非特許文献】
【０００６】
【非特許文献１】Ｆｕｚｚｙ  Ｅｘｔｒａｃｔｏｒｓ：  Ｈｏｗ  ｔｏ  Ｇｅｎｅｒａｔｅ  Ｓｔｒｏｎｇ  Ｋｅｙｓ  ｆｒｏｍ  Ｂｉｏｍｅｔｒｉｃｓ  ａｎｄ  Ｏｔｈｅｒ  Ｎｏｉｓｙ  Ｄａｔａ，  Ｅｕｒｏｃｒｙｐｔ  ２００４  ｐｐ．５２３−５４０
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の秘密計算では、準同型暗号のような計算コストの高い演算が伴う。よって、加算、減算及び比較のように軽い処理に対して秘密計算を適用するケースであれば実現性がある。しかし、従来技術は、画像に対する認識処理、柔軟なデータベース検索または圧縮などのような計算コストの高い処理に対する秘密計算には向いていない。【０００８】
本発明は、計算コストの高い処理をハードウェア処理でアクセラレーションすると同時に、秘密計算を実現する装置の提供を目的とする。
【課題を解決するための手段】
【０００９】
この発明の秘密計算装置は、
ホスト計算部と、論理回路の回路構成を回路情報によって変更できる論理回路装置とを備え、
前記ホスト計算部は、
アプリケーションに対応付いた前記回路情報を使用することにより前記論理回路装置に複数の論理回路を形成し、
前記複数の論理回路が形成された前記論理回路装置は、
初期値を用いて公開鍵と秘密鍵とのペアを生成し、前記公開鍵によって暗号化されたユーザ秘密鍵を取得し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する鍵計算回路と、
前記ユーザ秘密鍵で暗号化されたコンテンツを取得し、暗号化された前記コンテンツを復号された前記ユーザ秘密鍵で復号する復号演算回路と、
復号された前記コンテンツに前記アプリケーションに対応付いた処理を実施し、前記コンテンツの処理結果である処理コンテンツを生成するコンテンツ演算回路と、
前記処理コンテンツを前記ユーザ秘密鍵で暗号化する暗号化演算回路と、
暗号化された前記処理コンテンツを出力する出力回路と
を備える。
【発明の効果】
【００１０】
本発明の秘密計算装置は、ホスト計算部と論理回路装置とを備えたので、計算コストの高い処理をハードウェア処理でアクセラレーションし、かつ、秘密計算を実現する装置を提供できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１の図で、秘密計算装置１の全体構成を示す図。
【図２】実施の形態１の図で、秘密計算装置１のハードウェア構成を示す図。
【図３】実施の形態１の図で、ホストコンピュータ４０１の具体的なハードウェア構成を示す図。
【図４】実施の形態１の図で、クライアント装置４０６のハードウェア構成を示す図。
【図５】実施の形態１の図で、クライアント・サーバモデルにおける秘密計算の全体の処理フローを示す図。
【図６】実施の形態１の図で、ＦＰＧＡ４０５に形成される高速計算回路２０の回路構成を示す図。
【図７】実施の形態１の図で、鍵計算回路２２２の回路構成を示す図。
【図８】実施の形態１の図で、アプリケーションが秘密鍵ｍｋを複数管理する場合の鍵格納回路２２３の図。
【図９】実施の形態１の図で、変形例１の高速計算回路２０を示す図。
【図１０】実施の形態１の図で、変形例１のホストコンピュータ４０１ａ，４０１ｂを示す図。
【図１１】実施の形態１の図で、変形例１のホストコンピュータ４０１ａのハードウェア構成を示す図。
【図１２】実施の形態１の図で、変形例１のＶＭ管理装置７００のハードウェア構成を示す図。
【図１３】実施の形態１の図で、変形例２の処理フローを示す図。
【図１４】実施の形態１の図で、変形例３の処理フローを示す図。
【発明を実施するための形態】
【００１２】
＜表記＞
以下の実施の形態１で使用する表記を説明する。
ＰＵＦ＿ＫｅｙＧｅｎ（ＩＶ）→（ＨＤ，Ｋｐ，Ｋｓ）      （式１０１）
式１０１は、ＰＵＦ、Ｆｕｚｚｙ  Ｅｘｔｒａｃｔｏｒｓ及び公開鍵暗号の鍵アルゴリズムを用いた処理である。式１０１は、初期値ＩＶを用いて、補助データＨＤ、公開鍵Ｋｐ、秘密鍵Ｋｓを生成する処理を示す。
【００１３】
ＰＲＦ：疑似ランダム関数を示す。例えば、ＳＨＡ−２５６がある。
Ｚｎ：剰余群
×：楕円スカラー倍算
＋：楕円曲線上の点加算
【００１４】
Ｅｎｃ（Ｋｐ，ｍｋ）      （式１０２）
式１０２は、公開鍵暗号ｋｐによる秘密鍵ｍｋの暗号化を示す。
【００１５】
ＰＵＦ＿ＫｅｙＲｅｐ  （ＩＶ，ＨＤ）  →  Ｋｓ        （式１０３）
式１０３は、ＰＵＦ、Ｆｕｚｚｙ  Ｅｘｔｒａｃｔｏｒｓ及び公開鍵暗号の鍵アルゴリズムを用いた、秘密鍵Ｋｓの生成処理を示す。式１０３は、初期値ＩＶと補助データＨＤを用いて、ＰＵＦ及びＦｕｚｚｙ  Ｅｘｔｒａｃｔｏｒｓによる再生成処理を行い、Ｋｓを生成することを意味する。
【００１６】
Ｄｅｃ（Ｋｓ，  Ｃｍｋ）        （式１０４）
式１０４は、秘密鍵ＫｓによるＣｍｋに対する復号処理を示す。
【００１７】
Ｅ（ｍｋ，Ｐ）        （式１０５）
式１０５は、共通鍵暗号における秘密鍵ｍｋによるＰの暗号化処理を示す。
【００１８】
Ｄ（ｍｋ，Ｃａ）        （式１０６）
式１０６は、共通鍵暗号における秘密鍵ｍｋによるＣａの復号処理を示す。
【００１９】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１から図１２を参照して秘密計算装置１を説明する。
図１は、秘密計算装置１の全体構成を示す図である。秘密計算装置１は、ホスト計算部１０、ホスト記憶部１０Ｍ、高速計算回路２０、ローカル記憶装置２０Ｍを備えている。高速計算回路２０は、固定処理回路２１と動的処理回路２２とを備えている。ローカル記憶装置２０Ｍには固定処理回路２１がアクセスする。
【００２０】
図２は、図１の秘密計算装置１のハードウェア構成を示す。ホスト計算部１０と、論理回路の回路構成を回路情報１２によって変更できる論理回路装置とを備える。ＦＰＧＡ４０５は論理回路装置である。ホスト計算部１０は、アプリケーションのバイナリ４０２をＣＰＵ４０４が実行することで実現される。ホスト計算部１０は、アプリケーションに対応付いた回路情報１２を使用することにより論理回路装置であるＦＰＧＡ４０５に複数の論理回路を形成する。回路情報１２は後述する図５のステップＳ１１でクライアント装置４０６から送信される。アプリケーションのバイナリ４０２は、ホストコンピュータ４０１のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０４で処理される。アプリケーションのバイナリ４０２の処理は、図１におけるホスト計算部１０が行う。
【００２１】
高速計算回路２０は、ホストコンピュータ４０１のＦＰＧＡ４０５で実現される。アプリケーションのバイナリ４０２を処理するＣＰＵ４０４は、アプリケーション毎に異なるＦＰＧＡ４０５のバイナリ４０３をＦＰＧＡ４０５にロードし、ＦＰＧＡ上に構成する回路を変更する。ＦＰＧＡ４０５に構成される回路によって、アプリケーション毎の演算の高速化が図れる。
【００２２】
図１の高速計算回路２０の備える固定処理回路２１と動的処理回路２２とを説明する。固定処理回路２１は、メモリアクセスのような処理を高速化する演算に依存しない機能を処理する。高速計算回路２０はＦＰＧＡ４０５で実現されるが、高速計算回路２０のうち固定処理回路２１は動的再構成されず、固定された回路で構成される。
一方、動的処理回路２２は高速化させる演算のための回路であり、アプリケーション毎に回路構成が切り替わる。すなわち、動的処理回路２２は、ホスト計算部１０で実行されるアプリケーションによってアクセラレーション対象となる演算が異なる。処理Ｆとしては、圧縮処理、検索のクエリ処理及びニューラルネットワークによる認識処理が挙げられる。
【００２３】
図３は、ホストコンピュータ４０１の具体的なハードウェア構成を示す。後述の図５ではクライアント・サーバモデルを説明する。秘密計算装置１は、ホストコンピュータ４０１でありサーバ４０７でもある。ホストコンピュータ４０１は、ハードウェアとして、ＣＰＵ４０４、主記憶装置４０８、補助記憶装置４０９、ローカル記憶装置２０Ｍ、通信インタフェース４１０及びＦＰＧＡ４０５を備えている。ＣＰＵ４０４はサーキットリーである。ＦＰＧＡ４０５はローカル記憶装置２０Ｍと接続している。主記憶装置４０８はホスト記憶部１０Ｍである。あるいは補助記憶装置４０９はホスト記憶部１０Ｍである。以下の説明では主記憶装置４０８がホスト記憶部１０Ｍとして説明する。ホストコンピュータ４０１は機能要素としてホスト計算部１０を有する。ホスト計算部１０は、ＣＰＵ４０４がホスト計算プログラム４１２を実行することで実現される。ホスト計算プログラム４１２は補助記憶装置４０９に格納されている。ホスト計算部１０は通信インタフェース４１０を介してクライアント装置４０６と通信する。
【００２４】
図４は、図５の説明で登場するクライアント装置４０６のハードウェア構成を示す。クライアント装置４０６は、ハードウェアとして、ＣＰＵ５０１、主記憶装置５０２、補助記憶装置５０３、通信インタフェース５０４を備えている。ホストコンピュータ４０１は機能要素として送信制御部５０１ａ、暗号制御部５０１ｂ及び復号制御部５０１ｃを有する。送信制御部５０１ａ、暗号制御部５０１ｂ及び復号制御部５０１ｃの機能は、ＣＰＵ５０１が制御プログラム５０１ｄを実行することで実現される。制御プログラム５０１ｄ及び回路情報１２が、補助記憶装置５０３に格納されている。ＣＰＵ５０１は通信インタフェース５０４を介して、サーバ４０７と通信する。
【００２５】
＊＊＊  動作の説明  ＊＊＊
図１の秘密計算装置１の動作を説明する。ホスト計算部１０は、ホスト記憶部１０Ｍに対してリードアクセス及びライトアクセスを伴った処理を行う。以下、リードアクセス及びライトアクセスをＲ／Ｗと表記する。ここで、処理負荷の高い処理については、高速計算回路２０がホスト計算部１０の代わりに処理を行う。この処理は後述の式９に示す処理Ｆｕｎｃである。以下、これをアクセラレーションと呼ぶ。アクセラレーションの詳細な動作は次の通りである。ホスト計算部１０は、高速計算回路２０が処理するデータを、固定処理回路２１経由でローカル記憶装置２０Ｍに転送する。
一般に、この転送はＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）で行われる。ローカル記憶装置２０Ｍに転送されたデータは、決められた単位ごとに、固定処理回路２１経由で、動的処理回路２２に転送される。動的処理回路２２は、指定されている処理Ｆｕｎｃを高速に実行し、処理結果を、固定処理回路２１経由でローカル記憶装置２０Ｍに転送する。最後にローカル記憶装置２０Ｍからホスト記憶部１０Ｍに演算結果をＤＭＡで転送する。
【００２６】
実施の形態１ではアクセラレーションにおける秘密計算を実現する手段を提供する。
図５は、クライアント・サーバモデルにおける秘密計算の全体の処理フローを示す。秘密計算の全体は、クライアント・サーバモデルによる処理を想定する。秘密計算の全体では、サーバ４０７がクライアント装置４０６の演算要求に応答し、決められた処理を実行し、処理結果をクライアント装置４０６に返すことが前提である。実施の形態１の目的は、クライアント・サーバモデルにおいて、サーバ側の非セキュアな領域に、秘密計算の対象となる演算の入力データ、出力データ及びこれらの中間値を、平文で露出させないことである。図１において非セキュアな領域とは、ホスト計算部１０、ホスト記憶部１０Ｍ、ローカル記憶装置２０Ｍ及びホスト計算部１０からＲ／Ｗ可能な高速計算回路２０の領域である。セキュアな領域とは、ホスト計算部１０から直接アクセスできない、高速計算回路２０の領域である。図２のハードウェア構成においてセキュアな領域は、ＣＰＵ４０４から直接Ｒ／ＷできないＦＰＧＡ４０５の高速計算回路２０である。
【００２７】
図５の処理フローについて説明するが、図５の説明の前に、図６に示す高速計算回路２０の回路構成及び図７に示す鍵計算回路２２２を簡単に説明する。図６及び図７の詳しい説明は後述する。
図６は、ＦＰＧＡ４０５に形成される高速計算回路２０の回路構成を示す。高速計算回路２０は、固定処理回路２１と動的処理回路２２を備えている。動的処理回路２２は、入力回路２２１、鍵計算回路２２２、鍵格納回路２２３、復号演算回路２２４、高速演算回路２２５、暗号化演算回路２２６及び出力回路２２７を備えている。高速演算回路２２５はコンテンツ演算回路である。
図７は、図６における鍵計算回路２２２の回路構成を示す。鍵計算回路２２２は初期値ＩＶを用いて公開鍵Ｋｐと秘密鍵Ｋｓとのペアを生成する。また鍵計算回路２２２は、公開鍵Ｋｐによって暗号化されたユーザ秘密鍵を取得し、暗号化されたユーザ秘密鍵を秘密鍵Ｋｓで復号する。
具体的には以下のようである。鍵計算回路２２２は、入力回路２２２ａ、ＰＵＦ回路２２２ｂ、ファジーエクストラクター２２２ｃ、鍵対処理回路２２２ｄ及び出力回路２２２ｅを備えている。ここで、ＰＵＦとは、一般に物理的複製不能関数と呼ばれる関数である。以下に図５を説明する。
【００２８】
図５の破線の上側が登録フェーズを示し、破線の下側が運用フェーズを示す。処理フローは、登録フェーズと運用フェーズとの２つのフェーズで構成される。登録フェーズでは、動的処理回路２２が、クライアント装置４０６の秘密鍵ｍｋが暗号化された暗号化データＣｍｋを、秘密計算装置１に登録する。秘密鍵ｍｋはユーザ秘密鍵である。秘密鍵Ｋｓは第１の秘密鍵であり秘密鍵ｍｋは第２の秘密鍵である。運用フェーズでは、動的処理回路２２が、秘密鍵ｍｋを用いてアクセラレーションを含む秘密計算を行う。
【００２９】
＜ステップＳ１１＞
登録フェーズについて説明する。クライアント装置４０６の送信制御部５０１ａは、回路情報１２と初期値ＩＶを、秘密計算装置１であるサーバ４０７に送信する。
（１）回路情報１２とは、ＦＰＧＡ４０５のバイナリ４０３の生成に使用される情報である。回路情報１２は配置配線前の設計情報である。図２の説明で述べたように、ＦＰＧＡ４０５のバイナリ４０３によって、ＦＰＧＡ４０５の回路が動的に構成される。
（２）初期値ＩＶは、公開鍵暗号の鍵ペアの生成に使用する値である。
【００３０】
サーバアプリケーションは、回路情報１２に基づき、図６に示すように、ＦＰＧＡ４０５に動的処理回路２２の回路を構成する。サーバアプリケーションが構成した動的処理回路２２は図７に示す鍵計算回路２２２を有する。クライアント装置４０６は、ＦＰＧＡ４０５に鍵計算回路２２２を構成することで、サーバ４０７から公開鍵Ｋｐを取得することで、以下のように、秘密鍵ｍｋをセキュアにサーバ４０７に格納する。
【００３１】
公開鍵暗号の鍵ペア生成は以下のようである。クライアント装置４０６の送信制御部５０１ａは、回路情報１２と共に初期値ＩＶをサーバ４０７へ送信する。動的処理回路２２の鍵計算回路２２２は、初期値ＩＶをホスト計算部１０経由で受け取り、初期値ＩＶを用いて公開鍵暗号の鍵ペア生成を行う。
すなわち、鍵計算回路２２２は式１を計算する。
ＰＵＦ＿ＫｅｙＧｅｎ  （ＩＶ）→（ＨＤ，Ｋｐ，Ｋｓ）    （式１）
式１で、ＨＤは、Ｆｕｚｚｙ  ＥｘｔｒａｃｔｏｒのようなＰＵＦ機能を用いて識別子ＩＤを再生成するために必要な補助データを表す。Ｋｐ、Ｋｓはそれぞれ公開鍵暗号における公開鍵と秘密鍵である。
【００３２】
以下、楕円ＥｌＧａｍａｌ暗号における秘密鍵Ｋｓ及び公開鍵Ｋｐの生成を例に説明する。
鍵計算回路２２２のＰＵＦ回路２２２ｂ及びＦｕｚｚｙ  Ｅｘｔｒａｃｔｏｒ２２２ｃは、初期値ＩＶを入力して、識別子ＩＤと再生成に必要な補助データＨＤを出力する。
次に、鍵対処理回路２２２ｄは、識別子ＩＤを疑似ランダム関数ＰＲＦにより圧縮し、秘密鍵Ｋｓを生成する。
すなわち、鍵対処理回路２２２ｄは式２を計算する。
ＰＲＦ（ＩＤ）→Ｋｓ（Ｋｓ∈Ｚｎ）    （式２）
ここで、体Ｋ上の楕円曲線：Ｅ（Ｋ）、ベースポイント：Ｇ∈Ｅ（Ｋ）、Ｇの位数：ｎとする。鍵対処理回路２２２ｄは、以下の式３から公開鍵Ｋｐを生成する。
Ｋｓ×Ｇ→Ｋｐ    （式３）
尚、鍵生成の方式は上記に限らない。識別子ＩＤを用いてＫｐ、Ｋｓを一意に生成する方式であればよい。
【００３３】
＜ステップＳ１２＞
サーバ４０７のホスト計算部１０は、補助データＨＤと識別子ＩＤとのどちらかと、公開鍵Ｋｐとを、通信インタフェース４１０を介してクライアント装置４０６に送付する。図５ではサーバ４０７は、識別子ＩＤを送付している。補助データＨＤと識別子ＩＤとは対応付いている。ＦＰＧＡ４０５は、補助データＨＤから識別子ＩＤを特定できるし、識別子ＩＤから補助データＨＤを特定できる。よって、サーバ４０７は、補助データＨＤとの識別子ＩＤどちらかを送付すればよい。後述するステップＳ１３でクライアント装置４０６はサーバ４０７に識別子ＩＤを送信する。サーバ４０７はクライアント装置４０６から識別子ＩＤを受信した際に、識別子ＩＤと対応付いている補助データＨＤを用いて、後述する式５のように、秘密鍵Ｋｓの再生成を行うことが可能である。
【００３４】
＜ステップＳ１３＞
暗号制御部５０１ｂは、秘密計算装置１から公開鍵Ｋｐを取得し（ステップＳ１２）、公開鍵Ｋｐで秘密鍵ｍｋを暗号化し、暗号化された秘密鍵ｍｋを示す暗号化データＣｍｋを秘密計算装置１に送信する。つまり、クライアント装置４０６の暗号制御部５０１ｂは、公開鍵Ｋｐを用いて秘密計算に用いる秘密鍵ｍｋを暗号化した暗号化データＣｍｋをサーバ４０７に送付する。
Ｃｍｋ＝Ｅｎｃ（Ｋｐ，ｍｋ）である。
楕円ＥｌＧａｍａｌ暗号の例における暗号化データＣｍｋは以下の通りである。
秘密鍵ｍｋをｘ座標とし対応するｙ座標を求め楕円曲線上の点に変換したメッセージをＭＫとするならば、
Ｅｎｃ（Ｋｐ，ｍｋ）＝（ｒＧ，ｒ×Ｋｐ＋ＭＫ）→（Ｃ１，Ｃ２）＝Ｃｍｋ  （式４）
ここで、ｒ∈Ｚｎは乱数である。クライアント装置４０６の送信制御部５０１ａは、補助データＨＤ（または識別子ＩＤ）とＣｍｋとを、サーバ４０７に送付する。ここまでの処理が登録フェーズである。
【００３５】
次に運用フェーズについて説明する。
＜ステップＳ２１＞
クライアント装置４０６はサーバ４０７に秘匿演算を要求する。秘匿演算の要求として、クライアント装置４０６の送信制御部５０１ａは、サーバ４０７へ、ステップＳ１２で受信した識別子ＩＤを送付する。秘匿演算の要求として、クライアント装置４０６は、登録フェーズのステップＳ１３で送付した暗号化データＣｍｋの、高速計算回路２０による展開をサーバ４０７に要求する。
【００３６】
＜ステップＳ２２＞
サーバ４０７のホスト計算部１０は、高速計算回路２０の鍵計算回路２２２へ、識別子ＩＤに対応付いた初期値ＩＶ及び補助データＨＤをロードする。鍵計算回路２２２は、識別子ＩＤの再生成を行う。また、生成した識別子ＩＤから秘密鍵Ｋｓが再生成される。すなわち、鍵計算回路２２２は式５を計算する。
ＰＵＦ＿ＫｅｙＲｅｐ（ＩＶ，ＨＤ）→Ｋｓ    （式５）
鍵計算回路２２２は、秘密鍵Ｋｓを用いてＣｍｋを復号して秘密鍵ｍｋを取得し、復号演算回路２２４の記憶領域に秘密鍵ｍｋを展開する。つまり、鍵計算回路２２２は式６を計算し、秘密鍵ｍｋを復号演算回路２２４の記憶領域に展開する。
Ｄｅｃ（Ｋｓ，Ｃｍｋ）＝Ｃ２−Ｋｓ×Ｃ１→ｍｋ    （式６）
ここで、秘密鍵ｍｋを格納する復号演算回路２２４の領域はホスト計算部１０から直接アクセスできない構造を有する設計を行う。例としてはリード不可なＦＰＧＡ４０５内部のレジスタに格納する。
【００３７】
サーバ４０７のホスト計算部１０は、秘密鍵ｍｋの展開完了をクライアント装置４０６に通知する。つまり、サーバ４０７は演算準備完了をクライアント装置４０６に通知する。
【００３８】
＜ステップＳ２３＞
暗号制御部５０１ｂは、秘密鍵ｍｋでコンテンツＰを暗号化し、暗号化されたコンテンツＰを示す暗号化データＣａを秘密計算装置１に送信する。つまり、暗号制御部５０１ｂは、演算対象のコンテンツＰを共通鍵Ｋｐで暗号化した暗号化データＣａをサーバ４０７に送付する。ここではクライアント装置４０６の暗号制御部５０１ｂは式７を計算する。
Ｅ（ｍｋ，Ｐ）→Ｃａ    （式７）
鍵計算回路２２２は、秘密鍵ｍｋで暗号化されたコンテンツを取得し、暗号化されたコンテンツを、復号された秘密鍵ｍｋで復号する。具体的には以下のようである。復号演算回路２２４は、秘密鍵ｍｋを用いてＣａを復号し、コンテンツＰを得る。
つまり、復号演算回路２２４は式８を計算する。
Ｄ（ｍｋ，Ｃａ）→Ｐ（式８）
次に、コンテンツ演算回路である高速演算回路２２５は、復号されたコンテンツにアプリケーションに対応付いた処理Ｆｕｎｃを実施し、コンテンツＰの処理結果である処理コンテンツを生成する。具体的には以下のようである。
以下の処理結果Ｑは処理コンテンツである。高速演算回路２２５は、コンテンツＰに対してアクセラレーションかつ秘匿演算対象である処理Ｆｕｎｃを行い、処理結果Ｑを得る。つまり、高速演算回路２２５は式９を計算する。
Ｆｕｎｃ（Ｐ）→Ｑ    （式９）
暗号化演算回路２２６は、処理結果Ｑを秘密鍵ｍｋで暗号化し、暗号化データＣｂを得る。つまり、暗号化演算回路２２６は、式１０を計算する。
Ｅ（ｍｋ，Ｑ）→Ｃｂ    （式１０）
【００３９】
＜ステップＳ２４＞
暗号化演算回路２２６は、暗号化データＣｂを、ホスト計算部１０経由でクライアント装置４０６に送信する。
【００４０】
＜ステップＳ２５＞
復号制御部５０１ｃは、  暗号化された処理コンテンツを秘密計算装置から取得し、暗号化された処理コンテンツをユーザ秘密鍵で復号する。具体的には、クライアント装置４０６の復号制御部５０１ｃは秘密鍵ｍｋを用いて暗号化データＣｂを復号し、処理結果Ｑを得る。つまり復号制御部５０１ｃは式１１を計算する。
Ｄ（ｍｋ，Ｃｂ）→Ｑ    （式１１）
【００４１】
この運用フェーズでは、コンテンツＰはクライアント装置４０６から送信された情報として扱った。しかし、コンテンツＰの一部が秘密鍵ｍｋで暗号化された情報を、ホスト記憶部１０Ｍから復号演算回路２２４がロードする構成でもよい。
例えば、データベースの検索を想定する。秘密鍵ｍｋで暗号化された複数の情報がホスト記憶部１０Ｍにあるとする。サーバ４０７が、秘密鍵ｍｋで暗号化されたクエリをクライアント装置４０６から受信し、クエリを契機として処理を介する構成でもよい。このクエリがステップＳ２３の暗号化データＣａに対応する。鍵計算回路２２２は、秘密鍵ｍｋで暗号化されたコンテンツを格納する暗号化コンテンツ格納装置から、ｍｋ秘密鍵で暗号化されたコンテンツを取得する。
具体的には以下のようである。
図３を参照して説明する。図３の主記憶装置４０８にはデータベース情報４１３が格納されている。主記憶装置４０８は暗号化コンテンツ格納装置である。
主記憶装置４０８はホスト記憶部１０Ｍに相当する。コンテンツＰは、複数のサブコンテンツＰ１からＰｎに分割できるとする。Ｐ１からＰｎは上記の式７によってＣａ１からＣａｎに暗号化される。
Ｅ（ｍｋ，Ｐ１）→Ｃａ１、
Ｅ（ｍｋ，Ｐ２）→Ｃａ２、
・・・
Ｅ（ｍｋ，Ｐ２）→Ｃａｎ、
のＣａ１からＣａｎは、データベース情報４１３として主記憶装置４０８に格納されている。Ｃａ１からＣａｎは暗号化されたコンテンツである。
サーバ４０７の鍵計算回路２２２は、上記の式６で得られる秘密鍵ｍｋで、Ｃａ１からＣａｎを復号できる。
【００４２】
＜運用フェーズの具体例＞
以下、より具体例として、２つの文字列に対してスコアを計算し、ローカルアライメントを算出するＳｍｉｔｈ−Ｗａｔｅｒｍａｎ  アルゴリズムに対してアクセラレーションする例で運用フェーズを説明する。塩基配列ＴＧＴＴＡＣＧＧ及びＧＧＴＴＧＡＣＴＡのローカルアライメントは、それぞれＧＴＴ−ＡＣ、ＧＴＴＧＡＣとなる。図５で述べた運用フェーズにおいて、この処理は以下のように行われる。
【００４３】
クライアント装置４０６は、ＴＧＴＴＡＣＧＧ及びＧＧＴＴＧＡＣＴＡを、秘密鍵ｍｋで暗号化し、暗号化データＣａとしてサーバ４０７へ送信する。これは、ステップＳ２３に対応する。処理Ｆｕｎｃを実行する高速演算回路２２５は、処理ＦｕｎｃとしてＳｍｉｔｈ−Ｗａｔｅｒｍａｎアルゴリズムを実行する。処理は以下のようである。以下の処理は、図６の復号演算回路２２４、高速演算回路２２５の処理に対応する。復号演算回路２２４は、暗号化データＣａを復号してＴＧＴＴＡＣＧＧ及びＧＧＴＴＧＡＣＴＡを得る。
次に、高速演算回路２２５は、処理ＦｕｎｃとしてＳｍｉｔｈ−Ｗａｔｅｒｍａｎアルゴリズムにおける行列に対するスコア計算を実行し、ローカルアライメントとしてＧＴＴ−ＡＣ、ＧＴＴＧＡＣを得る。暗号化演算回路２２６は、処理結果Ｑに対応するＧＴＴ−ＡＣ及びＧＴＴＧＡＣを秘密鍵ｍｋで暗号化して暗号化データＣｂを生成し、暗号化データＣｂをクライアント装置４０６に送付する。この送付はステップＳ２４に対応する。
【００４４】
クライアント装置４０６は秘密鍵ｍｋで暗号化データＣｂを復号して、処理結果ＱであるＧＴＴ−ＡＣ及びＧＴＴＧＡＣを得る。この処理はステップＳ２５に対応する。
以上に述べた運用フェーズの例では、塩基配列ＴＧＴＴＡＣＧＧ及びＧＧＴＴＧＡＣＴＡ及びローカルアライメント結果ＧＴＴ−ＡＣ、ＧＴＴＧＡＣは、ホストコンピュータ４０１上に露出しない。
【００４５】
図６は図１の動的処理回路２２を図５の処理を実現するために詳細化した装置構成図である。
【００４６】
図５の処理と図６の対応について述べる。
（１）入力回路２２１は、ホストコンピュータ４０１のホスト計算部１０から固定処理回路２１経由で転送されたデータを受信し、動的処理回路２２の該当する回路にデータを転送する。
（２）鍵計算回路２２２は、ＰＵＦ、楕円ＥｌＧａｍａｌ暗号における鍵生成／復号処理、疑似ランダム関数ＰＲＦの処理を含み、図５における以下の処理を行う。
ＰＵＦ＿ＫｅｙＧｅｎ（ＩＶ）→（ＨＤ，Ｋｐ，Ｋｓ）
ＰＵＦ＿ＫｅｙＲｅｐ（ＩＶ，ＨＤ）→Ｋｓ
Ｄｅｃ（Ｋｓ，Ｃｍｋ）→ｍｋ
（３）鍵格納回路２２３は、鍵計算回路２２２の出力ｍｋ及びＫｓを保持する格納する。鍵格納回路２２３は、鍵計算回路２２２の一部として実装してもよい。秘密鍵ｍｋ及びＫｓは固定処理回路２１を介してＦＰＧＡ外部には出力されず、動的処理回路２２でのみ用いられる。
（４）復号演算回路２２４は、図５における以下の処理を行う。
Ｄ（ｍｋ，Ｃａ）→Ｐ
Ｄ及びＥのアルゴリズムとしてはＡＥＳ−ＧＣＭが例として挙げられる。
（５）高速演算回路２２５は、アプリケーションで負荷の高い処理をアクセラレーションするための演算部である。図５における以下の処理を行う。
Ｆｕｎｃ（Ｐ）→Ｑ
前述の例においては、Ｓｍｉｔｈ−Ｗａｔｅｒｍａｎ  アルゴリズムにおける行列に対するスコア計算を指す。
（６）暗号化演算回路２２６は、図５における以下の処理を行う。
Ｅ（ｍｋ，Ｑ）→Ｃｂ
復号演算回路２２４と同様に、暗号化ＥのアルゴリズムとしてはＡＥＳ−ＧＣＭが例として挙げられる。
（７）出力回路２２７は、鍵計算回路２２２の一部、及び暗号化演算回路２２６の出力を固定処理回路２１へ転送する。具体的には鍵計算回路２２２の補助データＨＤ，公開鍵Ｋｐと暗号化演算回路２２６の計算した暗号化データＣｂを転送する。
【００４７】
次に図７に示す鍵計算回路２２２の動作について説明する。図５の登録フェーズにおいて、入力回路２２１を介してＰＵＦ回路２２２ｂは初期値ＩＶを受け取り、製造ばらつきを利用した情報を出力し、ＦｕｚｚｙＥｘｔｒａｃｔｏｒ２２２ｃによる符号化とハッシュ関数による情報圧縮によって識別子ＩＤを生成する。符号化に伴う補助データＨＤは、出力回路２２２ｅから鍵計算回路２２２の外部に出力される。鍵対生成においては、鍵対処理回路２２２ｄは、式２の説明で述べたように、識別子ＩＤから秘密鍵Ｋｓを生成する。また、公開鍵暗号方式の鍵対生成アルゴリズムに従い、鍵対処理回路２２２ｄは、秘密鍵Ｋｓから公開鍵Ｋｐを生成する。生成された公開鍵Ｋｐ，秘密鍵Ｋｓを、出力回路２２２ｅが、鍵計算回路２２２の外部に出力する。
【００４８】
図５の運用フェーズにおいて、入力回路２２２ａを介してＰＵＦ回路２２２ｂは初期値ＩＶを受け取り、製造ばらつきを利用した情報を出力する。その出力に対して、ＦｕｚｚｙＥｘｔｒａｃｔｏｒ２２２ｃは、補助データＨＤを用いた補正処理を行い、登録フェーズと同一の識別子ＩＤを生成する。鍵対処理回路２２２ｄは、識別子ＩＤから秘密鍵Ｋｓを生成する。鍵対処理回路２２２ｄは、秘密鍵Ｋｓを出力回路２２２ｅを介して鍵格納回路２２３に格納する。
【００４９】
次に、Ｃｍｋの復号について述べる。鍵格納回路２２３から入力されるＫｓを用いて鍵対処理回路２２２ｄはＣｍｋを復号し、秘密鍵ｍｋを復元する。秘密鍵ｍｋは出力回路２２２ｅを介して鍵格納回路２２３に格納する。
【００５０】
図８は、アプリケーションが秘密鍵ｍｋを複数管理する場合の鍵格納回路２２３を示す。図８のように、秘密鍵ｍｋはアプリケーションが複数管理してもよい。例えば、前述したデータベース検索の例では、データベースを保護するためにｍｋ１を用いて、クエリ処理を行うとする。この場合、ユーザ毎にｍｋ２，ｍｋ３を使い分けてもよい。それによって検索結果をｍｋ２，ｍｋ３を持つユーザが復号できないように制御できる。
【００５１】
＜変形例１＞
以上に述べた実施の形態１で問題となるのは、公開鍵Ｋｐの確からしさである。図５において、クライアント装置４０６が送信した初期値ＩＶに対応する公開鍵Ｋｐをサーバ４０７がクライアント装置４０６に送信する。図５では、公開鍵Ｋｐがサーバ４０７のＦＰＧＡ４０５の内部で生成されたものかを確認する手段がない。
図９は、変形例１の高速計算回路２０を示す。図９に示す変形例１では、図７の鍵計算回路２２２を動的処理回路２２ではなく、固定処理回路２１に搭載する。固定処理回路２１に搭載する鍵計算回路を鍵計算回路２２２−１とする。つまり論理回路装置であるＦＰＧＡ４０５は、回路構成が変化しない論理回路が形成される固定領域を有する。この固定領域は固定処理回路２１の領域であるが、鍵計算回路２２２−１は、図９に示すように固定領域である固定処理回路２１に形成されている。鍵計算回路２２２−１は同一の初期値に対して同一の公開鍵と同一の秘密鍵とのペアを生成する。
【００５２】
図６、図７に示されるように、動的処理回路２２に鍵計算回路２２２を搭載した場合、配置配線が変われば、ＰＵＦ機能により初期値ＩＶに対応する秘密鍵Ｋｓ，公開鍵Ｋｐは異なる可能性がある。
一方、固定処理回路２１に鍵計算回路２２２を搭載した場合、ＦＰＧＡ４０５のコンフィグレーションのたびに鍵計算回路２２２の回路は同一回路がコンフィグレーションされることになる。つまり配置配線の変更はない。よって、同一のＦＰＧＡ４０５においては、同じ初期値ＩＶに対応した秘密鍵Ｋｓ，公開鍵Ｋｐは常に同一である。
【００５３】
変形例１の特徴を利用して、以下の構成が可能である。
図１０は、変形例１のホストコンピュータ４０１ａ，４０１ｂを示す。図１０に示すように、２台のホストコンピュータ４０１ａ，ホストコンピュータ４０１ｂでは、Ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ（ＶＭ）が複数動作する。ホストコンピュータは２台であるが例示であり、３台以上の複数でもよい。またホストコンピュータで動作するＶＭは２つであるが例示であり３つ以上の複数でもよい。ＶＭ管理部７０１は、複数のホストコンピュータおよびホストコンピュータで動作する複数のＶＭを管理する。
この場合、ホストコンピュータはノードと呼ばれる。図１０において、各ノードの各ＶＭに対して初期値ＩＶを定め、その初期値ＩＶを用いて図９の鍵計算回路２２２−１によって鍵対生成を行う。鍵計算回路２２２−１は、複数の異なる初期値ＩＶを用いて、初期値ＩＶごとに公開鍵Ｋｐと秘密鍵Ｋｓとのペアを生成する。
つまり鍵計算回路２２２−１によれば、同じ初期値ＩＶに対して、同じ秘密鍵Ｋｓ及び公開鍵Ｋｐが生成される。これにより、各ノードの各ＶＭに対して秘密鍵Ｋｓ、公開鍵Ｋｐのペアを割り当てることができる。この鍵をＶＭ管理部７０１が鍵リスト７０３として管理する。
後述の図１１は、ホストコンピュータ４０１ａの補助記憶装置４０９にはＶＭ情報６０２が格納されている。ＶＭ情報６０２は、複数の異なる初期値ＩＶである。具体的には図１０のホストコンピュータ４０１ａにおいて、ＶＭ１に初期値対応付けられた初期ＩＶの情報である。
【００５４】
初期値と、初期値から生成された公開鍵とは、真正であることを保証する真正情報が対応付いた状態で、鍵情報として鍵情報格納装置に格納されている。具体的には以下のようである。鍵リスト７０３は、信頼できる第三者によって電子署名を行い、鍵リスト７０３の公開鍵の確からしさを保証することができる。電子署名は真正情報である。図１２で後述するＶＭ管理装置７００の補助記憶装置７３０は鍵情報格納装置である。鍵リスト７０３は鍵情報である。図１０ではノードとＶＭに応じて鍵を割り当てたが、より細分化してアプリケーション毎に鍵を割り当ててもよい。ＶＭ管理部７０１の例としてはＯｐｅｎｓｔａｃｋに代表されるＶＭの管理ツールが挙げられる。この管理ツールは図１２のＶＭ管理プログラム７０２に相当する。
【００５５】
図１１及び図１２によって、ホストコンピュータ４０１ａ及びＶＭ管理装置７００のハードウェア構成を示す補足しておく。
図１１は、変形例１のホストコンピュータ４０１ａのハードウェア構成を示す。ホストコンピュータ４０１ａは、図３で述べたホストコンピュータ４０１に対して、さらに、ＶＭ実行部１１と、ＶＭ実行プログラム６０１を有する。ＣＰＵ４０４がＶＭ実行プログラム６０１を実行することでＶＭ実行部１１が実現される。ＶＭ実行プログラム６０１は補助記憶装置４０９に格納されている。  ホストコンピュータ４０１ｂも、ホストコンピュータ４０１ａと同じハードウェア構成である。
図１２は、ＶＭ管理装置７００のハードウェア構成を示す。ＶＭ管理装置７００はコンピュータである。ＶＭ管理装置７００は、ハードウェアとして、ＣＰＵ７１０、主記憶装置７２０、補助記憶装置７３０、通信インタフェース７４０を備えている。ＶＭ管理装置７００は機能要素としてＶＭ管理部７０１を有する。ＶＭ管理部７０１は、ＣＰＵ７１０がＶＭ管理プログラム７０２を実行することで実現される。ＶＭ管理プログラム７０２は補助記憶装置７３０に格納されている。補助記憶装置７３０には鍵リスト７０３も格納されている。ＶＭ管理部７０１は、通信インタフェース７４０を介してホストコンピュータ４０１ａ、４０１ｂと通信する。
【００５６】
＜変形例２＞
次に、図１３を参照して、実施の形態１の変形例２を説明する。
図１３は、変形例２を示す処理フローである。図１３のステップ１２ａでは、補助データＨＤではなく識別子ＩＤを送信するものとする。
変形例２の特徴は、クライアント装置４０６は図１３のステップＳ１２ａで取得する公開鍵Ｋｐを検証できることにある。図１３は図５に対して、ステップＳ１１ａ、ステップＳ１２ａ、ステップＳ１３ａ、クライアント装置４０６による破線で囲むＣｍｋの送信処理、及び秘密計算装置１による破線で囲む認証値Ｔｓの生成処理が異なる。図１３を参照して実施の形態１の変形例２を説明する。
認証値Ｔｓは第1の認証値である。またクライアント装置４０６が計算により取得する後述の認証値Ｔｃは第２の認証値である。
【００５７】
クライアント装置４０６の送信制御部５０１ａは、秘密計算装置１であるサーバ４０７に、鍵情報が入力データとして適用された場合、鍵情報の認証値を出力する認証プログラムを送信する。
後述する具体例では、認証プログラムは、埋め込み鍵Ｋｅｍｂを用いるＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）機能である。入力データとしてＭＡＣ機能に適用される鍵情報は、公開鍵Ｋｐである。ＭＡＣ機能は公開鍵Ｋｐを入力として、認証値Ｔを出力する。
この関係を、
ＭＡＣＫｅｍｂ（Ｋｐ）＝Ｔ
と表記する。
なお、図１３では、クライアント装置４０６は、認証プログラムを単独で送信している。しかし、クライアント装置４０６では送信制御部５０１ａが認証プログラムを回路情報１２に含めることにより、認証プログラムを秘密計算装置１であるサーバ４０７に送信してもよい。
【００５８】
クライアント装置４０６の暗号制御部５０１ｂは、サーバ４０７から公開鍵Ｋｐと共に第１の認証値Ｔｓを取得する。暗号制御部５０１ｂは、サーバ４０７に送信されたＭＡＣＫｅｍｂと同一のＭＡＣＫｅｍｂに、取得した公開鍵Ｋｐを適用することにより第２の認証値Ｔｃを取得する。暗号制御部５０１ｂは、第１の認証値Ｔｓと第２の認証値Ｔｃとを比較し、比較結果が正しいと判断した場合に、公開鍵Ｋｐで暗号化されたユーザ秘密鍵Ｃｍｋをサーバ４０７に送信する。比較結果が正しいとは、例えば、Ｔｓ＝Ｔｃの場合である。
【００５９】
以下では、図１３を参照して、具体的に説明する。
【００６０】
＜ステップＳ１１ａ＞
送信制御部５０１ａは、回路情報１２及び初期値ＩＶに加え、認証プログラムであるＭＡＣＫｅｍｂをサーバ４０７に送信する。サーバ４０７では図５と同様に、ＨＤ，Ｋｐ，Ｋｓが生成される。
ここで、鍵計算回路２２２は、クライアント装置４０６から受信したＭＡＣＫｅｍｂを用いて、以下のように認証値Ｔｓを計算する。
ＭＡＣＫｅｍｂ（Ｋｐ）＝Ｔｓ
【００６１】
＜ステップＳ１２ａ＞
サーバ４０７のホスト計算部１０は、識別子ＩＤと、公開鍵Ｋｐと、認証値Ｔｓとを、通信インタフェース４１０を介してクライアント装置４０６に送付する。
【００６２】
＜ステップＳ１３ａ＞
暗号制御部５０１ｂは、秘密計算装置１から、識別子ＩＤ、公開鍵Ｋｐ及び認証値Ｔｓを取得する。暗号制御部５０１ｂは、サーバ４０７に送信したＭＡＣＫｅｍｂと同一のＭＡＣＫｅｍｂに、サーバ４０７から取得した公開鍵Ｋｐを適用する。つまり、暗号制御部５０１ｂは以下の式を計算して、第２の認証値Ｔｃを取得する。
ＭＡＣＫｅｍｂ（Ｋｐ）＝Ｔｃ
暗号制御部５０１ｂは、第１の認証値Ｔｓと、第２の認証値Ｔｃとを比較する。暗号制御部５０１ｂは、比較結果が正しいと判断した場合に、以下の式のように、サーバ４０７から取得した公開鍵Ｋｐでユーザ秘密鍵ｍｋを暗号化し、Ｃｍｋを生成する。
Ｅｎｃ（Ｋｐ，ｍｋ）→Ｃｍｋ
そして、暗号制御部５０１ｂは、暗号化されたユーザ秘密鍵Ｃｍｋをサーバ４０７に送信する。
以降の動作は、図５と同じである。
【００６３】
変形例２では、クライアント装置４０６がサーバ４０７にＭＡＣＫｅｍｂを送信する。サーバ４０７は、ＭＡＣＫｅｍｂから認証値Ｔｓを生成し、クライアント装置４０６に認証値Ｔｓを送信する。クライアント装置４０６はＭＡＣＫｅｍｂから認証値Ｔｃを生成し、認証値Ｔｃと認証値Ｔｓとを比較する。よって、変形例２によれば、クライアント装置４０６は公開鍵Ｋｐが回路情報１２から構成されたＦＰＧＡから生成されたことを検証できる。
【００６４】
＜変形例３＞
次に、図１４を参照して、実施の形態１の変形例３を説明する。図１４のステップ１２では、補助データＨＤではなく識別子ＩＤを送信するものとする。
図１４は、変形例３を示す処理フローである。変形例３の特徴は、鍵計算回路２２２が、ＰＵＦ機能とは関係なく、ランダムに公開鍵Ｋｐと秘密鍵Ｋｓとのペアを生成し、ＰＵＦ機能を用いて鍵情報Ｋｐｕｆを生成し、鍵情報Ｋｐｕｆで秘密鍵Ｋｓを暗号化し、暗号化された秘密鍵Ｋｓを保持する点にある。
なお「ＰＵＦ機能を用いる」とは、物理的複製不能関数を用いることを意味する。図１４は図５に対して、ステップＳ１１ｂで初期値ＩＶをクライアント装置４０６が送信しないこと、及び秘密計算装置１による破線で囲む処理が異なる。
【００６５】
図１４を参照して実施の形態１の変形例３を説明する。鍵計算回路２２２は、物理的複製不能関数を用いて第１の鍵情報Ｋｐｕｆ１を生成する。鍵計算回路２２２は、第１の鍵情報Ｋｐｕｆ１を用いて秘密鍵Ｋｓを暗号化する。鍵計算回路２２２は、復号演算回路２２４が暗号化データＣａを復号する際に、物理的複製不能関数を用いて第１の鍵情報Ｋｐｕｆ１と同一の第２の鍵情報Ｋｐｕｆ２を生成する。鍵計算回路２２２は、第１の鍵情報Ｋｐｕｆ１を用いて暗号化された秘密鍵Ｋｓを、第２の鍵情報Ｋｐｕｆ２を用いて復号する。鍵計算回路２２２は、クライアント装置４０６によって公開鍵Ｋｐで暗号化されたユーザ鍵Ｃｍｋを、復号された秘密鍵Ｋｓで復号する。
以降、図５と同様に、サーバ４０７は、秘密鍵Ｋｓで復号されたｍｋを用いて、暗号化データＣａをコンテンツＰに復号する。
【００６６】
図１４を参照して実施の形態１の変形例３を説明する。
【００６７】
＜ステップＳ１１ｂ＞
送信制御部５０１ａは、回路情報１２をサーバ４０７に送信する。鍵計算回路２２２は、以下の式によって、公開鍵Ｋｐと秘密鍵Ｋｓとの鍵ペアをランダムに生成する。
ＫｅｙＧｅｎ（Ｒａｎｄｏｍ）→（Ｋｐ，Ｋｓ）
上記の式は、公開鍵Ｋｐと秘密鍵Ｋｓとの鍵ペアをランダムに生成することを示す。図５と同様に、公開鍵Ｋｐの識別子はＩＤである。鍵計算回路２２２は、ＰＵＦ機能を用いることによって、初期値ＩＶから、補助データＨＤと、第１の鍵情報Ｋｐｕｆ１を生成する。
ＰＵＦ＿ＫｅｙＧｅｎ  （ＩＶ）→（ＨＤ，Ｋｐｕｆ１）
鍵計算回路２２２は、第１の鍵情報Ｋｐｕｆ１を用いて秘密鍵Ｋｓを暗号化する。
Ｅｎ（Ｋｐｕｆ１，Ｋｓ）  →ｅｎｃ（Ｋｓ）
上記の式は、第１の鍵情報Ｋｐｕｆ１を用いて秘密鍵Ｋｓを暗号化し、暗号化された秘密鍵Ｋｓであるｅｎｃ（Ｋｓ）を生成することを示す。
【００６８】
ステップＳ１２及びステップＳ１３は図５と同じである。
【００６９】
＜ステップＳ２１＞
鍵計算回路２２２はクライアント装置４０６から識別子ＩＤを受信した場合、以下の処理を実施する。クライアント装置４０６による識別子ＩＤの送信は、暗号化データＣａの処理要求である。鍵計算回路２２２は、復号演算回路２２４が暗号化データＣａを復号する際に、ＰＵＦ機能を用いて、第１の鍵情報Ｋｐｕｆ１と同一の第２の鍵情報Ｋｐｕｆ２を生成する。つまり、鍵計算回路２２２は、以下の式を実行して、補助データＨＤから、第２の鍵情報Ｋｐｕｆ２を生成する。第２の鍵情報Ｋｐｕｆ２は、第１の鍵情報Ｋｐｕｆ１と同一である。
ＰＵＦ＿ＫｅｙＲｅｐ  （ＨＤ）→Ｋｐｕｆ２
鍵計算回路２２２は、以下の式のように、第２の鍵情報Ｋｐｕｆ２でｅｎｃ（Ｋｓ）を復号して秘密鍵Ｋｓを得る。
Ｄｅ（Ｋｐｕｆ２，ｅｎｃ（Ｋｓ））→Ｋｓ
上記の式は、第２の鍵情報Ｋｐｕｆ２を用いてｅｎｃ（Ｋｓ）を復号することを示す。鍵計算回路２２２は、以下の式のように、復号された秘密鍵Ｋｓで、公開鍵Ｋｐで暗号化されたユーザ秘密鍵Ｃｍｋを復号する。
Ｄｅｃ（Ｋｓ，Ｃｍｋ）→ｍｋ
以下の処理は図５と同じである。
【００７０】
変形例３では、公開鍵Ｋｐと秘密鍵ＫｓとのペアをＰＵＦ機能を使用せずに生成するので、クライアント装置４０６から初期値ＩＶの送信が不要になる。
【００７１】
＊＊＊  実施の形態１の効果  ＊＊＊
（１）実施の形態１では、図５の運用フェーズにおいて、図６に示すように、処理Ｆｕｎｃの入出力は、鍵計算回路２２２、高速演算回路２２５、暗号化演算回路２２６でのみ展開される。つまり、処理Ｆｕｎｃの入出力は、図２のＦＰＧＡ４０５のセキュア領域でのみ展開される。
このため、仮にホストコンピュータ４０１の情報が漏洩しても、処理Ｆｕｎｃの入出力及び中間値が露出しない。
（２）また、秘密鍵ｍｋはホストコンピュータ４０１上では公開鍵Ｋｐで暗号化された状態のＣｍｋで管理され、ＣｍｋはＦＰＧＡ４０５の内部でのみ展開される。
このため、たとえホストコンピュータ４０１の管理者であっても、秘密鍵ｍｋの機密性を破ることができない。
【００７２】
以上、３つの変形例を含む実施の形態について説明したが、３つの変形例を含む実施の形態のうち１つを部分的に実施しても構わない。あるいは、３つの変形例を含む実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、上記で述べた実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００７３】
Ｋｓ  秘密鍵、Ｋｐ  公開鍵、Ｐ  コンテンツ、Ｑ  処理結果、１  秘密計算装置、１０  ホスト計算部、１０Ｍ  ホスト記憶部、１１  ＶＭ実行部、２０Ｍ  ローカル記憶装置、２０  高速計算回路、２１  固定処理回路、２２  動的処理回路、２２１  入力回路、２２２  鍵計算回路、２２２ａ  入力回路、２２２ｂ  ＰＵＦ回路、２２２ｃ  ファジーエクストラクター、２２２ｄ  鍵対処理回路、２２２ｅ  出力回路、２２３  鍵格納回路、２２４  復号演算回路、２２５  高速演算回路、２２６  暗号化演算回路、２２７  出力回路、４０１，４０１ａ，４０１ｂ  ホストコンピュータ、４０２  バイナリ、４０３  バイナリ、４０４  ＣＰＵ、４０５  ＦＰＧＡ、４０６  クライアント装置、４０７  サーバ、４０８  主記憶装置、４０９  補助記憶装置、４１０  通信インタフェース、４１２  ホスト計算プログラム、５０１  ＣＰＵ、５０１ａ  送信制御部、５０１ｂ  暗号制御部、５０１ｃ  復号制御部、５０１ｄ  制御プログラム、５０２  主記憶装置、５０３  補助記憶装置、５０４  通信インタフェース、５０５  信号線、６０１  ＶＭ実行プログラム、７００  ＶＭ管理装置、７０１  ＶＭ管理部、７０２  ＶＭ管理プログラム、７０３  鍵リスト、７１０  ＣＰＵ、７２０  主記憶装置、７３０  補助記憶装置、７４０  通信インタフェース。
【図１】
2020144758.tif 000003
【図２】
2020144758.tif 000004
【図３】
2020144758.tif 000005
【図４】
2020144758.tif 000006
【図５】
2020144758.tif 000007
【図６】
2020144758.tif 000008
【図７】
2020144758.tif 000009
【図８】
2020144758.tif 000010
【図９】
2020144758.tif 000011
【図１０】
2020144758.tif 000012
【図１１】
2020144758.tif 000013
【図１２】
2020144758.tif 000014
【図１３】
2020144758.tif 000015
【図１４】
2020144758.tif 000016
【手続補正書】
【提出日】令和2年11月4日(2020.11.4)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホスト計算部と、論理回路の回路構成を回路情報によって変更できる論理回路装置とを備え、
前記ホスト計算部は、
アプリケーションに対応付いた前記回路情報を使用することにより前記論理回路装置に複数の論理回路を形成し、
前記複数の論理回路が形成された前記論理回路装置は、
公開鍵と秘密鍵とのペアを生成し、前記公開鍵によって暗号化されたユーザ秘密鍵を取得し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する鍵計算回路と、
前記ユーザ秘密鍵で暗号化されたコンテンツを取得し、暗号化された前記コンテンツを復号された前記ユーザ秘密鍵で復号する復号演算回路と、
復号された前記コンテンツに前記アプリケーションに対応付いた処理を実施し、前記コンテンツの処理結果である処理コンテンツを生成するコンテンツ演算回路と、
前記処理コンテンツを前記ユーザ秘密鍵で暗号化する暗号化演算回路と、
暗号化された前記処理コンテンツを出力する出力回路と
を備える秘密計算装置と
通信するクライアント装置であって、
前記秘密計算装置に前記回路情報を送信する送信制御部と、
前記秘密計算装置から前記公開鍵を取得し、前記公開鍵で前記ユーザ秘密鍵を暗号化し、前記ユーザ秘密鍵で前記コンテンツを暗号化し、前記公開鍵で暗号化された前記ユーザ秘密鍵と前記ユーザ秘密鍵で暗号化された前記コンテンツとを前記秘密計算装置に送信する暗号制御部と、
暗号化された前記処理コンテンツを前記秘密計算装置から取得し、暗号化された前記処理コンテンツを前記ユーザ秘密鍵で復号する復号制御部と
を備え、
前記送信制御部は、
前記秘密計算装置に、鍵情報が入力データとして適用された場合、前記鍵情報の認証値を出力する認証プログラムを送信し、
前記暗号制御部は、
前記秘密計算装置から前記公開鍵と共に第１の認証値を取得し、前記秘密計算装置に送信された前記認証プログラムと同一の前記認証プログラムに前記鍵情報として前記公開鍵を適用することにより第２の認証値を取得し、前記第１の認証値と前記第２の認証値とを比較し、比較結果が正しいと判断した場合に、暗号化された前記ユーザ秘密鍵を前記秘密計算装置に送信するクライアント装置。
【請求項２】
前記鍵計算回路は、
初期値を用いて公開鍵と秘密鍵との前記ペアを生成する請求項１に記載のクライアント装置。
【請求項３】
前記論理回路装置は、
回路構成が変化しない前記論理回路が形成される固定領域を有し、
前記鍵計算回路は、
前記固定領域に形成されており、同一の前記初期値に対して同一の公開鍵と同一の秘密鍵とのペアを生成する請求項２に記載のクライアント装置。
【請求項４】
前記鍵計算回路は、
複数の異なる前記初期値を用いて、前記初期値ごとに前記公開鍵と前記秘密鍵との前記ペアを生成する請求項３に記載のクライアント装置。
【請求項５】
前記初期値と、前記初期値から生成された前記公開鍵とは、
真正であることを保証する真正情報が対応付いた状態で、鍵情報を格納する鍵情報格納装置に格納されている請求項４に記載のクライアント装置。
【請求項６】
前記鍵計算回路は、
前記ユーザ秘密鍵で暗号化された前記コンテンツを格納する暗号化コンテンツ格納装置から、前記ユーザ秘密鍵で暗号化された前記コンテンツを取得する請求項１から請求項５のいずれか一項に記載のクライアント装置。
【請求項７】
前記鍵計算回路は、
物理的複製不能関数を用いて第１の鍵情報を生成し、前記第１の鍵情報を用いて前記秘密鍵を暗号化し、前記復号演算回路が暗号化された前記コンテンツを復号する際に、前記物理的複製不能関数を用いて前記第１の鍵情報と同一の第２の鍵情報を生成し、前記第１の鍵情報を用いて暗号化された前記秘密鍵を前記第２の鍵情報を用いて復号し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する請求項１に記載のクライアント装置。
【請求項８】
前記送信制御部は、
前記認証プログラムを前記回路情報に含めることにより、前記認証プログラムを前記秘密計算装置に送信する請求項１に記載のクライアント装置。
【国際調査報告】
2020144758.tif 000017
2020144758.tif 000018
2020144758.tif 000019
2020144758.tif 000020