WO2020144758A1 - 秘密計算装置及びクライアント装置 - Google Patents

秘密計算装置及びクライアント装置 Download PDF

Info

Publication number
WO2020144758A1
WO2020144758A1 PCT/JP2019/000294 JP2019000294W WO2020144758A1 WO 2020144758 A1 WO2020144758 A1 WO 2020144758A1 JP 2019000294 W JP2019000294 W JP 2019000294W WO 2020144758 A1 WO2020144758 A1 WO 2020144758A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
circuit
secret
encrypted
content
Prior art date
Application number
PCT/JP2019/000294
Other languages
English (en)
French (fr)
Inventor
鈴木 大輔
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to DE112019006051.1T priority Critical patent/DE112019006051T5/de
Priority to PCT/JP2019/000294 priority patent/WO2020144758A1/ja
Priority to CN201980087623.8A priority patent/CN113261038A/zh
Priority to JP2020561943A priority patent/JPWO2020144758A1/ja
Publication of WO2020144758A1 publication Critical patent/WO2020144758A1/ja
Priority to US17/318,820 priority patent/US20210273790A1/en

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

秘密計算装置(1)はホスト計算部(10)及びFPGA(405)を備える。ホスト計算部(10)はFPGA(405)に論理回路を形成する。FPGA(405)は、初期値(IV)から公開鍵Kpと秘密鍵(Ks)を生成し、公開鍵(Ks)で暗号化された秘密鍵(Cmk)を取得し、秘密鍵(Cmk)を秘密鍵Ksで復号する鍵計算回路(222)、秘密鍵(mk)でコンテンツ(Q)が暗号化された暗号化データ(Ca)を取得し、暗号化データ(Ca)を復号された秘密鍵mkで復号する復号演算回路(224)、コンテンツ(Q)に処理(Func)を実施し、処理コンテンツQを生成する高速演算回路(225)、処理コンテンツ(Q)を秘密鍵(mk)で暗号化する暗号化演算回路(226)及び処理コンテンツQの暗号化データを出力する出力回路(227)を備える。

Description

秘密計算装置及びクライアント装置
 この発明は、秘密計算を行う秘密計算装置及び秘密計算を要求するクライアント装置に関する。
<秘密計算>
 秘密計算とは、データを秘匿したま、指定された関数による演算を行う技術である。例えば特許文献1は、特定の演算に限定されない、準同型暗号を用いた秘密計算制御装置を開示する。
<クラウドFPGA>
 クラウドサービスとして、FPGA(Field Programmable Gate Array)を搭載したコンピューティングインスタンスの提供が普及している。例えば、Amazon EC2 F1が挙げられる。このクラウドサービスは、アプリケーションからFPGAを動的に再構成し、アプリケーションにおいてボトルネックとなる演算をFPGAにオフロードして、処理を高速化することができる。
<PUF>
 PUF(Physical Unclonable Function)は、LSI(Large Scale Integration)の製造ばらつきを用いてデバイス固有のIDを生成する技術である。例えば特許文献2では、同一の論理回路であっても出力の過渡遷移が製造ばらつきによって異なることを利用したIDの生成技術が開示される。一般にこのような製造ばらつきを利用したIDはIDを生成するたびに誤りを含む。この誤りを訂正し補正することで、毎回同じIDを生成する技術として非特許文献1のFuzzy Extractorがある。
特開2016-136190号公報 国際公開第2011/086688号パンフレット
Fuzzy Extractors: How to Generate Strong Keys from Biometrics and Other Noisy Data, Eurocrypt 2004 pp.523-540
 従来の秘密計算では、準同型暗号のような計算コストの高い演算が伴う。よって、加算、減算及び比較のように軽い処理に対して秘密計算を適用するケースであれば実現性がある。しかし、従来技術は、画像に対する認識処理、柔軟なデータベース検索または圧縮などのような計算コストの高い処理に対する秘密計算には向いていない。
 本発明は、計算コストの高い処理をハードウェア処理でアクセラレーションすると同時に、秘密計算を実現する装置の提供を目的とする。
 この発明の秘密計算装置は、
 ホスト計算部と、論理回路の回路構成を回路情報によって変更できる論理回路装置とを備え、
 前記ホスト計算部は、
 アプリケーションに対応付いた前記回路情報を使用することにより前記論理回路装置に複数の論理回路を形成し、
 前記複数の論理回路が形成された前記論理回路装置は、
 初期値を用いて公開鍵と秘密鍵とのペアを生成し、前記公開鍵によって暗号化されたユーザ秘密鍵を取得し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する鍵計算回路と、
 前記ユーザ秘密鍵で暗号化されたコンテンツを取得し、暗号化された前記コンテンツを復号された前記ユーザ秘密鍵で復号する復号演算回路と、
 復号された前記コンテンツに前記アプリケーションに対応付いた処理を実施し、前記コンテンツの処理結果である処理コンテンツを生成するコンテンツ演算回路と、
 前記処理コンテンツを前記ユーザ秘密鍵で暗号化する暗号化演算回路と、
 暗号化された前記処理コンテンツを出力する出力回路と
を備える。
 本発明の秘密計算装置は、ホスト計算部と論理回路装置とを備えたので、計算コストの高い処理をハードウェア処理でアクセラレーションし、かつ、秘密計算を実現する装置を提供できる。
実施の形態1の図で、秘密計算装置1の全体構成を示す図。 実施の形態1の図で、秘密計算装置1のハードウェア構成を示す図。 実施の形態1の図で、ホストコンピュータ401の具体的なハードウェア構成を示す図。 実施の形態1の図で、クライアント装置406のハードウェア構成を示す図。 実施の形態1の図で、クライアント・サーバモデルにおける秘密計算の全体の処理フローを示す図。 実施の形態1の図で、FPGA405に形成される高速計算回路20の回路構成を示す図。 実施の形態1の図で、鍵計算回路222の回路構成を示す図。 実施の形態1の図で、アプリケーションが秘密鍵mkを複数管理する場合の鍵格納回路223の図。 実施の形態1の図で、変形例1の高速計算回路20を示す図。 実施の形態1の図で、変形例1のホストコンピュータ401a,401bを示す図。 実施の形態1の図で、変形例1のホストコンピュータ401aのハードウェア構成を示す図。 実施の形態1の図で、変形例1のVM管理装置700のハードウェア構成を示す図。 実施の形態1の図で、変形例2の処理フローを示す図。 実施の形態1の図で、変形例3の処理フローを示す図。
<表記>
 以下の実施の形態1で使用する表記を説明する。
PUF_KeyGen(IV)→(HD,Kp,Ks)   (式101)
式101は、PUF、Fuzzy Extractors及び公開鍵暗号の鍵アルゴリズムを用いた処理である。式101は、初期値IVを用いて、補助データHD、公開鍵Kp、秘密鍵Ksを生成する処理を示す。
PRF:疑似ランダム関数を示す。例えば、SHA-256がある。
Zn:剰余群
×:楕円スカラー倍算
+:楕円曲線上の点加算
Enc(Kp,mk)   (式102)
 式102は、公開鍵暗号kpによる秘密鍵mkの暗号化を示す。
PUF_KeyRep (IV,HD) → Ks    (式103)
式103は、PUF、Fuzzy Extractors及び公開鍵暗号の鍵アルゴリズムを用いた、秘密鍵Ksの生成処理を示す。式103は、初期値IVと補助データHDを用いて、PUF及びFuzzy Extractorsによる再生成処理を行い、Ksを生成することを意味する。
Dec(Ks, Cmk)    (式104)
式104は、秘密鍵KsによるCmkに対する復号処理を示す。
E(mk,P)    (式105)
式105は、共通鍵暗号における秘密鍵mkによるPの暗号化処理を示す。
D(mk,Ca)    (式106)
式106は、共通鍵暗号における秘密鍵mkによるCaの復号処理を示す。
実施の形態1.
***構成の説明***
 図1から図12を参照して秘密計算装置1を説明する。
 図1は、秘密計算装置1の全体構成を示す図である。秘密計算装置1は、ホスト計算部10、ホスト記憶部10M、高速計算回路20、ローカル記憶装置20Mを備えている。高速計算回路20は、固定処理回路21と動的処理回路22とを備えている。ローカル記憶装置20Mには固定処理回路21がアクセスする。
 図2は、図1の秘密計算装置1のハードウェア構成を示す。ホスト計算部10と、論理回路の回路構成を回路情報12によって変更できる論理回路装置とを備える。FPGA405は論理回路装置である。ホスト計算部10は、アプリケーションのバイナリ402をCPU404が実行することで実現される。ホスト計算部10は、アプリケーションに対応付いた回路情報12を使用することにより論理回路装置であるFPGA405に複数の論理回路を形成する。回路情報12は後述する図5のステップS11でクライアント装置406から送信される。アプリケーションのバイナリ402は、ホストコンピュータ401のCPU(Central Processing Unit)404で処理される。アプリケーションのバイナリ402の処理は、図1におけるホスト計算部10が行う。
 高速計算回路20は、ホストコンピュータ401のFPGA405で実現される。アプリケーションのバイナリ402を処理するCPU404は、アプリケーション毎に異なるFPGA405のバイナリ403をFPGA405にロードし、FPGA上に構成する回路を変更する。FPGA405に構成される回路によって、アプリケーション毎の演算の高速化が図れる。
 図1の高速計算回路20の備える固定処理回路21と動的処理回路22とを説明する。固定処理回路21は、メモリアクセスのような処理を高速化する演算に依存しない機能を処理する。高速計算回路20はFPGA405で実現されるが、高速計算回路20のうち固定処理回路21は動的再構成されず、固定された回路で構成される。
 一方、動的処理回路22は高速化させる演算のための回路であり、アプリケーション毎に回路構成が切り替わる。すなわち、動的処理回路22は、ホスト計算部10で実行されるアプリケーションによってアクセラレーション対象となる演算が異なる。処理Fとしては、圧縮処理、検索のクエリ処理及びニューラルネットワークによる認識処理が挙げられる。
 図3は、ホストコンピュータ401の具体的なハードウェア構成を示す。後述の図5ではクライアント・サーバモデルを説明する。秘密計算装置1は、ホストコンピュータ401でありサーバ407でもある。ホストコンピュータ401は、ハードウェアとして、CPU404、主記憶装置408、補助記憶装置409、ローカル記憶装置20M、通信インタフェース410及びFPGA405を備えている。CPU404はサーキットリーである。FPGA405はローカル記憶装置20Mと接続している。主記憶装置408はホスト記憶部10Mである。あるいは補助記憶装置409はホスト記憶部10Mである。以下の説明では主記憶装置408がホスト記憶部10Mとして説明する。ホストコンピュータ401は機能要素としてホスト計算部10を有する。ホスト計算部10は、CPU404がホスト計算プログラム412を実行することで実現される。ホスト計算プログラム412は補助記憶装置409に格納されている。ホスト計算部10は通信インタフェース410を介してクライアント装置406と通信する。
 図4は、図5の説明で登場するクライアント装置406のハードウェア構成を示す。クライアント装置406は、ハードウェアとして、CPU501、主記憶装置502、補助記憶装置503、通信インタフェース504を備えている。ホストコンピュータ401は機能要素として送信制御部501a、暗号制御部501b及び復号制御部501cを有する。送信制御部501a、暗号制御部501b及び復号制御部501cの機能は、CPU501が制御プログラム501dを実行することで実現される。制御プログラム501d及び回路情報12が、補助記憶装置503に格納されている。CPU501は通信インタフェース504を介して、サーバ407と通信する。
*** 動作の説明 ***
 図1の秘密計算装置1の動作を説明する。ホスト計算部10は、ホスト記憶部10Mに対してリードアクセス及びライトアクセスを伴った処理を行う。以下、リードアクセス及びライトアクセスをR/Wと表記する。ここで、処理負荷の高い処理については、高速計算回路20がホスト計算部10の代わりに処理を行う。この処理は後述の式9に示す処理Funcである。以下、これをアクセラレーションと呼ぶ。アクセラレーションの詳細な動作は次の通りである。ホスト計算部10は、高速計算回路20が処理するデータを、固定処理回路21経由でローカル記憶装置20Mに転送する。
 一般に、この転送はDMA(Direct Memory Access)で行われる。ローカル記憶装置20Mに転送されたデータは、決められた単位ごとに、固定処理回路21経由で、動的処理回路22に転送される。動的処理回路22は、指定されている処理Funcを高速に実行し、処理結果を、固定処理回路21経由でローカル記憶装置20Mに転送する。最後にローカル記憶装置20Mからホスト記憶部10Mに演算結果をDMAで転送する。
 実施の形態1ではアクセラレーションにおける秘密計算を実現する手段を提供する。
 図5は、クライアント・サーバモデルにおける秘密計算の全体の処理フローを示す。秘密計算の全体は、クライアント・サーバモデルによる処理を想定する。秘密計算の全体では、サーバ407がクライアント装置406の演算要求に応答し、決められた処理を実行し、処理結果をクライアント装置406に返すことが前提である。実施の形態1の目的は、クライアント・サーバモデルにおいて、サーバ側の非セキュアな領域に、秘密計算の対象となる演算の入力データ、出力データ及びこれらの中間値を、平文で露出させないことである。図1において非セキュアな領域とは、ホスト計算部10、ホスト記憶部10M、ローカル記憶装置20M及びホスト計算部10からR/W可能な高速計算回路20の領域である。セキュアな領域とは、ホスト計算部10から直接アクセスできない、高速計算回路20の領域である。図2のハードウェア構成においてセキュアな領域は、CPU404から直接R/WできないFPGA405の高速計算回路20である。
 図5の処理フローについて説明するが、図5の説明の前に、図6に示す高速計算回路20の回路構成及び図7に示す鍵計算回路222を簡単に説明する。図6及び図7の詳しい説明は後述する。
 図6は、FPGA405に形成される高速計算回路20の回路構成を示す。高速計算回路20は、固定処理回路21と動的処理回路22を備えている。動的処理回路22は、入力回路221、鍵計算回路222、鍵格納回路223、復号演算回路224、高速演算回路225、暗号化演算回路226及び出力回路227を備えている。高速演算回路225はコンテンツ演算回路である。
 図7は、図6における鍵計算回路222の回路構成を示す。鍵計算回路222は初期値IVを用いて公開鍵Kpと秘密鍵Ksとのペアを生成する。また鍵計算回路222は、公開鍵Kpによって暗号化されたユーザ秘密鍵を取得し、暗号化されたユーザ秘密鍵を秘密鍵Ksで復号する。
 具体的には以下のようである。鍵計算回路222は、入力回路222a、PUF回路222b、ファジーエクストラクター222c、鍵対処理回路222d及び出力回路222eを備えている。ここで、PUFとは、一般に物理的複製不能関数と呼ばれる関数である。以下に図5を説明する。
 図5の破線の上側が登録フェーズを示し、破線の下側が運用フェーズを示す。処理フローは、登録フェーズと運用フェーズとの2つのフェーズで構成される。登録フェーズでは、動的処理回路22が、クライアント装置406の秘密鍵mkが暗号化された暗号化データCmkを、秘密計算装置1に登録する。秘密鍵mkはユーザ秘密鍵である。秘密鍵Ksは第1の秘密鍵であり秘密鍵mkは第2の秘密鍵である。運用フェーズでは、動的処理回路22が、秘密鍵mkを用いてアクセラレーションを含む秘密計算を行う。
<ステップS11>
 登録フェーズについて説明する。クライアント装置406の送信制御部501aは、回路情報12と初期値IVを、秘密計算装置1であるサーバ407に送信する。
(1)回路情報12とは、FPGA405のバイナリ403の生成に使用される情報である。回路情報12は配置配線前の設計情報である。図2の説明で述べたように、FPGA405のバイナリ403によって、FPGA405の回路が動的に構成される。
(2)初期値IVは、公開鍵暗号の鍵ペアの生成に使用する値である。
 サーバアプリケーションは、回路情報12に基づき、図6に示すように、FPGA405に動的処理回路22の回路を構成する。サーバアプリケーションが構成した動的処理回路22は図7に示す鍵計算回路222を有する。クライアント装置406は、FPGA405に鍵計算回路222を構成することで、サーバ407から公開鍵Kpを取得することで、以下のように、秘密鍵mkをセキュアにサーバ407に格納する。
 公開鍵暗号の鍵ペア生成は以下のようである。クライアント装置406の送信制御部501aは、回路情報12と共に初期値IVをサーバ407へ送信する。動的処理回路22の鍵計算回路222は、初期値IVをホスト計算部10経由で受け取り、初期値IVを用いて公開鍵暗号の鍵ペア生成を行う。
すなわち、鍵計算回路222は式1を計算する。
 PUF_KeyGen (IV)→(HD,Kp,Ks)  (式1)
式1で、HDは、Fuzzy ExtractorのようなPUF機能を用いて識別子IDを再生成するために必要な補助データを表す。Kp、Ksはそれぞれ公開鍵暗号における公開鍵と秘密鍵である。
 以下、楕円ElGamal暗号における秘密鍵Ks及び公開鍵Kpの生成を例に説明する。
 鍵計算回路222のPUF回路222b及びFuzzy Extractor222cは、初期値IVを入力して、識別子IDと再生成に必要な補助データHDを出力する。
 次に、鍵対処理回路222dは、識別子IDを疑似ランダム関数PRFにより圧縮し、秘密鍵Ksを生成する。
すなわち、鍵対処理回路222dは式2を計算する。
PRF(ID)→Ks(Ks∈Zn)  (式2)
ここで、体K上の楕円曲線:E(K)、ベースポイント:G∈E(K)、Gの位数:nとする。鍵対処理回路222dは、以下の式3から公開鍵Kpを生成する。
Ks×G→Kp  (式3)
 尚、鍵生成の方式は上記に限らない。識別子IDを用いてKp、Ksを一意に生成する方式であればよい。
<ステップS12>
 サーバ407のホスト計算部10は、補助データHDと識別子IDとのどちらかと、公開鍵Kpとを、通信インタフェース410を介してクライアント装置406に送付する。図5ではサーバ407は、識別子IDを送付している。補助データHDと識別子IDとは対応付いている。FPGA405は、補助データHDから識別子IDを特定できるし、識別子IDから補助データHDを特定できる。よって、サーバ407は、補助データHDとの識別子IDどちらかを送付すればよい。後述するステップS13でクライアント装置406はサーバ407に識別子IDを送信する。サーバ407はクライアント装置406から識別子IDを受信した際に、識別子IDと対応付いている補助データHDを用いて、後述する式5のように、秘密鍵Ksの再生成を行うことが可能である。
<ステップS13>
 暗号制御部501bは、秘密計算装置1から公開鍵Kpを取得し(ステップS12)、公開鍵Kpで秘密鍵mkを暗号化し、暗号化された秘密鍵mkを示す暗号化データCmkを秘密計算装置1に送信する。つまり、クライアント装置406の暗号制御部501bは、公開鍵Kpを用いて秘密計算に用いる秘密鍵mkを暗号化した暗号化データCmkをサーバ407に送付する。
Cmk=Enc(Kp,mk)である。
 楕円ElGamal暗号の例における暗号化データCmkは以下の通りである。
秘密鍵mkをx座標とし対応するy座標を求め楕円曲線上の点に変換したメッセージをMKとするならば、
Enc(Kp,mk)=(rG,r×Kp+MK)→(C1,C2)=Cmk (式4)
ここで、r∈Znは乱数である。クライアント装置406の送信制御部501aは、補助データHD(または識別子ID)とCmkとを、サーバ407に送付する。ここまでの処理が登録フェーズである。
 次に運用フェーズについて説明する。
<ステップS21>
クライアント装置406はサーバ407に秘匿演算を要求する。秘匿演算の要求として、クライアント装置406の送信制御部501aは、サーバ407へ、ステップS12で受信した識別子IDを送付する。秘匿演算の要求として、クライアント装置406は、登録フェーズのステップS13で送付した暗号化データCmkの、高速計算回路20による展開をサーバ407に要求する。
<ステップS22>
 サーバ407のホスト計算部10は、高速計算回路20の鍵計算回路222へ、識別子IDに対応付いた初期値IV及び補助データHDをロードする。鍵計算回路222は、識別子IDの再生成を行う。また、生成した識別子IDから秘密鍵Ksが再生成される。すなわち、鍵計算回路222は式5を計算する。
PUF_KeyRep(IV,HD)→Ks  (式5)
鍵計算回路222は、秘密鍵Ksを用いてCmkを復号して秘密鍵mkを取得し、復号演算回路224の記憶領域に秘密鍵mkを展開する。つまり、鍵計算回路222は式6を計算し、秘密鍵mkを復号演算回路224の記憶領域に展開する。
Dec(Ks,Cmk)=C2-Ks×C1→mk  (式6)
ここで、秘密鍵mkを格納する復号演算回路224の領域はホスト計算部10から直接アクセスできない構造を有する設計を行う。例としてはリード不可なFPGA405内部のレジスタに格納する。
 サーバ407のホスト計算部10は、秘密鍵mkの展開完了をクライアント装置406に通知する。つまり、サーバ407は演算準備完了をクライアント装置406に通知する。
<ステップS23>
 暗号制御部501bは、秘密鍵mkでコンテンツPを暗号化し、暗号化されたコンテンツPを示す暗号化データCaを秘密計算装置1に送信する。つまり、暗号制御部501bは、演算対象のコンテンツPを共通鍵Kpで暗号化した暗号化データCaをサーバ407に送付する。ここではクライアント装置406の暗号制御部501bは式7を計算する。
E(mk,P)→Ca  (式7)
 鍵計算回路222は、秘密鍵mkで暗号化されたコンテンツを取得し、暗号化されたコンテンツを、復号された秘密鍵mkで復号する。具体的には以下のようである。復号演算回路224は、秘密鍵mkを用いてCaを復号し、コンテンツPを得る。
つまり、復号演算回路224は式8を計算する。
D(mk,Ca)→P(式8)
 次に、コンテンツ演算回路である高速演算回路225は、復号されたコンテンツにアプリケーションに対応付いた処理Funcを実施し、コンテンツPの処理結果である処理コンテンツを生成する。具体的には以下のようである。
 以下の処理結果Qは処理コンテンツである。高速演算回路225は、コンテンツPに対してアクセラレーションかつ秘匿演算対象である処理Funcを行い、処理結果Qを得る。つまり、高速演算回路225は式9を計算する。
Func(P)→Q  (式9)
暗号化演算回路226は、処理結果Qを秘密鍵mkで暗号化し、暗号化データCbを得る。つまり、暗号化演算回路226は、式10を計算する。
E(mk,Q)→Cb  (式10)
<ステップS24>
 暗号化演算回路226は、暗号化データCbを、ホスト計算部10経由でクライアント装置406に送信する。
<ステップS25>
 復号制御部501cは、 暗号化された処理コンテンツを秘密計算装置から取得し、暗号化された処理コンテンツをユーザ秘密鍵で復号する。具体的には、クライアント装置406の復号制御部501cは秘密鍵mkを用いて暗号化データCbを復号し、処理結果Qを得る。つまり復号制御部501cは式11を計算する。
D(mk,Cb)→Q  (式11)
 この運用フェーズでは、コンテンツPはクライアント装置406から送信された情報として扱った。しかし、コンテンツPの一部が秘密鍵mkで暗号化された情報を、ホスト記憶部10Mから復号演算回路224がロードする構成でもよい。
 例えば、データベースの検索を想定する。秘密鍵mkで暗号化された複数の情報がホスト記憶部10Mにあるとする。サーバ407が、秘密鍵mkで暗号化されたクエリをクライアント装置406から受信し、クエリを契機として処理を介する構成でもよい。このクエリがステップS23の暗号化データCaに対応する。鍵計算回路222は、秘密鍵mkで暗号化されたコンテンツを格納する暗号化コンテンツ格納装置から、mk秘密鍵で暗号化されたコンテンツを取得する。
具体的には以下のようである。
図3を参照して説明する。図3の主記憶装置408にはデータベース情報413が格納されている。主記憶装置408は暗号化コンテンツ格納装置である。
主記憶装置408はホスト記憶部10Mに相当する。コンテンツPは、複数のサブコンテンツP1からPnに分割できるとする。P1からPnは上記の式7によってCa1からCanに暗号化される。
E(mk,P1)→Ca1、
E(mk,P2)→Ca2、
・・・
E(mk,P2)→Can、
のCa1からCanは、データベース情報413として主記憶装置408に格納されている。Ca1からCanは暗号化されたコンテンツである。
サーバ407の鍵計算回路222は、上記の式6で得られる秘密鍵mkで、Ca1からCanを復号できる。
<運用フェーズの具体例>
 以下、より具体例として、2つの文字列に対してスコアを計算し、ローカルアライメントを算出するSmith-Waterman アルゴリズムに対してアクセラレーションする例で運用フェーズを説明する。塩基配列TGTTACGG及びGGTTGACTAのローカルアライメントは、それぞれGTT-AC、GTTGACとなる。図5で述べた運用フェーズにおいて、この処理は以下のように行われる。
 クライアント装置406は、TGTTACGG及びGGTTGACTAを、秘密鍵mkで暗号化し、暗号化データCaとしてサーバ407へ送信する。これは、ステップS23に対応する。処理Funcを実行する高速演算回路225は、処理FuncとしてSmith-Watermanアルゴリズムを実行する。処理は以下のようである。以下の処理は、図6の復号演算回路224、高速演算回路225の処理に対応する。復号演算回路224は、暗号化データCaを復号してTGTTACGG及びGGTTGACTAを得る。
 次に、高速演算回路225は、処理FuncとしてSmith-Watermanアルゴリズムにおける行列に対するスコア計算を実行し、ローカルアライメントとしてGTT-AC、GTTGACを得る。暗号化演算回路226は、処理結果Qに対応するGTT-AC及びGTTGACを秘密鍵mkで暗号化して暗号化データCbを生成し、暗号化データCbをクライアント装置406に送付する。この送付はステップS24に対応する。
 クライアント装置406は秘密鍵mkで暗号化データCbを復号して、処理結果QであるGTT-AC及びGTTGACを得る。この処理はステップS25に対応する。
以上に述べた運用フェーズの例では、塩基配列TGTTACGG及びGGTTGACTA及びローカルアライメント結果GTT-AC、GTTGACは、ホストコンピュータ401上に露出しない。
 図6は図1の動的処理回路22を図5の処理を実現するために詳細化した装置構成図である。
 図5の処理と図6の対応について述べる。
(1)入力回路221は、ホストコンピュータ401のホスト計算部10から固定処理回路21経由で転送されたデータを受信し、動的処理回路22の該当する回路にデータを転送する。
(2)鍵計算回路222は、PUF、楕円ElGamal暗号における鍵生成/復号処理、疑似ランダム関数PRFの処理を含み、図5における以下の処理を行う。
PUF_KeyGen(IV)→(HD,Kp,Ks)
PUF_KeyRep(IV,HD)→Ks
Dec(Ks,Cmk)→mk
(3)鍵格納回路223は、鍵計算回路222の出力mk及びKsを保持する格納する。鍵格納回路223は、鍵計算回路222の一部として実装してもよい。秘密鍵mk及びKsは固定処理回路21を介してFPGA外部には出力されず、動的処理回路22でのみ用いられる。
(4)復号演算回路224は、図5における以下の処理を行う。
D(mk,Ca)→P
D及びEのアルゴリズムとしてはAES-GCMが例として挙げられる。
(5)高速演算回路225は、アプリケーションで負荷の高い処理をアクセラレーションするための演算部である。図5における以下の処理を行う。
Func(P)→Q
前述の例においては、Smith-Waterman アルゴリズムにおける行列に対するスコア計算を指す。
(6)暗号化演算回路226は、図5における以下の処理を行う。
E(mk,Q)→Cb
復号演算回路224と同様に、暗号化EのアルゴリズムとしてはAES-GCMが例として挙げられる。
(7)出力回路227は、鍵計算回路222の一部、及び暗号化演算回路226の出力を固定処理回路21へ転送する。具体的には鍵計算回路222の補助データHD,公開鍵Kpと暗号化演算回路226の計算した暗号化データCbを転送する。
 次に図7に示す鍵計算回路222の動作について説明する。図5の登録フェーズにおいて、入力回路221を介してPUF回路222bは初期値IVを受け取り、製造ばらつきを利用した情報を出力し、FuzzyExtractor222cによる符号化とハッシュ関数による情報圧縮によって識別子IDを生成する。符号化に伴う補助データHDは、出力回路222eから鍵計算回路222の外部に出力される。鍵対生成においては、鍵対処理回路222dは、式2の説明で述べたように、識別子IDから秘密鍵Ksを生成する。また、公開鍵暗号方式の鍵対生成アルゴリズムに従い、鍵対処理回路222dは、秘密鍵Ksから公開鍵Kpを生成する。生成された公開鍵Kp,秘密鍵Ksを、出力回路222eが、鍵計算回路222の外部に出力する。
 図5の運用フェーズにおいて、入力回路222aを介してPUF回路222bは初期値IVを受け取り、製造ばらつきを利用した情報を出力する。その出力に対して、FuzzyExtractor222cは、補助データHDを用いた補正処理を行い、登録フェーズと同一の識別子IDを生成する。鍵対処理回路222dは、識別子IDから秘密鍵Ksを生成する。鍵対処理回路222dは、秘密鍵Ksを出力回路222eを介して鍵格納回路223に格納する。
 次に、Cmkの復号について述べる。鍵格納回路223から入力されるKsを用いて鍵対処理回路222dはCmkを復号し、秘密鍵mkを復元する。秘密鍵mkは出力回路222eを介して鍵格納回路223に格納する。
 図8は、アプリケーションが秘密鍵mkを複数管理する場合の鍵格納回路223を示す。図8のように、秘密鍵mkはアプリケーションが複数管理してもよい。例えば、前述したデータベース検索の例では、データベースを保護するためにmk1を用いて、クエリ処理を行うとする。この場合、ユーザ毎にmk2,mk3を使い分けてもよい。それによって検索結果をmk2,mk3を持つユーザが復号できないように制御できる。
<変形例1>
 以上に述べた実施の形態1で問題となるのは、公開鍵Kpの確からしさである。図5において、クライアント装置406が送信した初期値IVに対応する公開鍵Kpをサーバ407がクライアント装置406に送信する。図5では、公開鍵Kpがサーバ407のFPGA405の内部で生成されたものかを確認する手段がない。
 図9は、変形例1の高速計算回路20を示す。図9に示す変形例1では、図7の鍵計算回路222を動的処理回路22ではなく、固定処理回路21に搭載する。固定処理回路21に搭載する鍵計算回路を鍵計算回路222-1とする。つまり論理回路装置であるFPGA405は、回路構成が変化しない論理回路が形成される固定領域を有する。この固定領域は固定処理回路21の領域であるが、鍵計算回路222-1は、図9に示すように固定領域である固定処理回路21に形成されている。鍵計算回路222-1は同一の初期値に対して同一の公開鍵と同一の秘密鍵とのペアを生成する。
 図6、図7に示されるように、動的処理回路22に鍵計算回路222を搭載した場合、配置配線が変われば、PUF機能により初期値IVに対応する秘密鍵Ks,公開鍵Kpは異なる可能性がある。
 一方、固定処理回路21に鍵計算回路222を搭載した場合、FPGA405のコンフィグレーションのたびに鍵計算回路222の回路は同一回路がコンフィグレーションされることになる。つまり配置配線の変更はない。よって、同一のFPGA405においては、同じ初期値IVに対応した秘密鍵Ks,公開鍵Kpは常に同一である。
 変形例1の特徴を利用して、以下の構成が可能である。
図10は、変形例1のホストコンピュータ401a,401bを示す。図10に示すように、2台のホストコンピュータ401a,ホストコンピュータ401bでは、Virtual machine(VM)が複数動作する。ホストコンピュータは2台であるが例示であり、3台以上の複数でもよい。またホストコンピュータで動作するVMは2つであるが例示であり3つ以上の複数でもよい。VM管理部701は、複数のホストコンピュータおよびホストコンピュータで動作する複数のVMを管理する。
 この場合、ホストコンピュータはノードと呼ばれる。図10において、各ノードの各VMに対して初期値IVを定め、その初期値IVを用いて図9の鍵計算回路222-1によって鍵対生成を行う。鍵計算回路222-1は、複数の異なる初期値IVを用いて、初期値IVごとに公開鍵Kpと秘密鍵Ksとのペアを生成する。
 つまり鍵計算回路222-1によれば、同じ初期値IVに対して、同じ秘密鍵Ks及び公開鍵Kpが生成される。これにより、各ノードの各VMに対して秘密鍵Ks、公開鍵Kpのペアを割り当てることができる。この鍵をVM管理部701が鍵リスト703として管理する。
 後述の図11は、ホストコンピュータ401aの補助記憶装置409にはVM情報602が格納されている。VM情報602は、複数の異なる初期値IVである。具体的には図10のホストコンピュータ401aにおいて、VM1に初期値対応付けられた初期IVの情報である。
 初期値と、初期値から生成された公開鍵とは、真正であることを保証する真正情報が対応付いた状態で、鍵情報として鍵情報格納装置に格納されている。具体的には以下のようである。鍵リスト703は、信頼できる第三者によって電子署名を行い、鍵リスト703の公開鍵の確からしさを保証することができる。電子署名は真正情報である。図12で後述するVM管理装置700の補助記憶装置730は鍵情報格納装置である。鍵リスト703は鍵情報である。図10ではノードとVMに応じて鍵を割り当てたが、より細分化してアプリケーション毎に鍵を割り当ててもよい。VM管理部701の例としてはOpenstackに代表されるVMの管理ツールが挙げられる。この管理ツールは図12のVM管理プログラム702に相当する。
 図11及び図12によって、ホストコンピュータ401a及びVM管理装置700のハードウェア構成を示す補足しておく。
 図11は、変形例1のホストコンピュータ401aのハードウェア構成を示す。ホストコンピュータ401aは、図3で述べたホストコンピュータ401に対して、さらに、VM実行部11と、VM実行プログラム601を有する。CPU404がVM実行プログラム601を実行することでVM実行部11が実現される。VM実行プログラム601は補助記憶装置409に格納されている。 ホストコンピュータ401bも、ホストコンピュータ401aと同じハードウェア構成である。
 図12は、VM管理装置700のハードウェア構成を示す。VM管理装置700はコンピュータである。VM管理装置700は、ハードウェアとして、CPU710、主記憶装置720、補助記憶装置730、通信インタフェース740を備えている。VM管理装置700は機能要素としてVM管理部701を有する。VM管理部701は、CPU710がVM管理プログラム702を実行することで実現される。VM管理プログラム702は補助記憶装置730に格納されている。補助記憶装置730には鍵リスト703も格納されている。VM管理部701は、通信インタフェース740を介してホストコンピュータ401a、401bと通信する。
<変形例2>
 次に、図13を参照して、実施の形態1の変形例2を説明する。
 図13は、変形例2を示す処理フローである。図13のステップ12aでは、補助データHDではなく識別子IDを送信するものとする。
 変形例2の特徴は、クライアント装置406は図13のステップS12aで取得する公開鍵Kpを検証できることにある。図13は図5に対して、ステップS11a、ステップS12a、ステップS13a、クライアント装置406による破線で囲むCmkの送信処理、及び秘密計算装置1による破線で囲む認証値Tsの生成処理が異なる。図13を参照して実施の形態1の変形例2を説明する。
 認証値Tsは第1の認証値である。またクライアント装置406が計算により取得する後述の認証値Tcは第2の認証値である。
 クライアント装置406の送信制御部501aは、秘密計算装置1であるサーバ407に、鍵情報が入力データとして適用された場合、鍵情報の認証値を出力する認証プログラムを送信する。
 後述する具体例では、認証プログラムは、埋め込み鍵Kembを用いるMAC(Message Authentication Code)機能である。入力データとしてMAC機能に適用される鍵情報は、公開鍵Kpである。MAC機能は公開鍵Kpを入力として、認証値Tを出力する。
この関係を、
MACKemb(Kp)=T
と表記する。
 なお、図13では、クライアント装置406は、認証プログラムを単独で送信している。しかし、クライアント装置406では送信制御部501aが認証プログラムを回路情報12に含めることにより、認証プログラムを秘密計算装置1であるサーバ407に送信してもよい。
 クライアント装置406の暗号制御部501bは、サーバ407から公開鍵Kpと共に第1の認証値Tsを取得する。暗号制御部501bは、サーバ407に送信されたMACKembと同一のMACKemb取得した公開鍵Kpを適用することにより第2の認証値Tcを取得する。暗号制御部501bは、第1の認証値Tsと第2の認証値Tcとを比較し、比較結果が正しいと判断した場合に、公開鍵Kpで暗号化されたユーザ秘密鍵Cmkをサーバ407に送信する。比較結果が正しいとは、例えば、Ts=Tcの場合である。
 以下では、図13を参照して、具体的に説明する。
<ステップS11a>
 送信制御部501aは、回路情報12及び初期値IVに加え、認証プログラムであるMACKembをサーバ407に送信する。サーバ407では図5と同様に、HD,Kp,Ksが生成される。
ここで、鍵計算回路222は、クライアント装置406から受信したMACKembを用いて、以下のように認証値Tsを計算する。
MACKemb(Kp)=Ts
<ステップS12a>
 サーバ407のホスト計算部10は、識別子IDと、公開鍵Kpと、認証値Tsとを、通信インタフェース410を介してクライアント装置406に送付する。
<ステップS13a>
 暗号制御部501bは、秘密計算装置1から、識別子ID、公開鍵Kp及び認証値Tsを取得する。暗号制御部501bは、サーバ407に送信したMACKembと同一のMACKembに、サーバ407から取得した公開鍵Kpを適用する。つまり、暗号制御部501bは以下の式を計算して、第2の認証値Tcを取得する。
MACKemb(Kp)=Tc
 暗号制御部501bは、第1の認証値Tsと、第2の認証値Tcとを比較する。暗号制御部501bは、比較結果が正しいと判断した場合に、以下の式のように、サーバ407から取得した公開鍵Kpでユーザ秘密鍵mkを暗号化し、Cmkを生成する。
Enc(Kp,mk)→Cmk
そして、暗号制御部501bは、暗号化されたユーザ秘密鍵Cmkをサーバ407に送信する。
以降の動作は、図5と同じである。
 変形例2では、クライアント装置406がサーバ407にMACKembを送信する。サーバ407は、MACKembから認証値Tsを生成し、クライアント装置406に認証値Tsを送信する。クライアント装置406はMACKembから認証値Tcを生成し、認証値Tcと認証値Tsとを比較する。よって、変形例2によれば、クライアント装置406は公開鍵Kpが回路情報12から構成されたFPGAから生成されたことを検証できる。
<変形例3>
 次に、図14を参照して、実施の形態1の変形例3を説明する。図14のステップ12では、補助データHDではなく識別子IDを送信するものとする。
 図14は、変形例3を示す処理フローである。変形例3の特徴は、鍵計算回路222が、PUF機能とは関係なく、ランダムに公開鍵Kpと秘密鍵Ksとのペアを生成し、PUF機能を用いて鍵情報Kpufを生成し、鍵情報Kpufで秘密鍵Ksを暗号化し、暗号化された秘密鍵Ksを保持する点にある。
 なお「PUF機能を用いる」とは、物理的複製不能関数を用いることを意味する。図14は図5に対して、ステップS11bで初期値IVをクライアント装置406が送信しないこと、及び秘密計算装置1による破線で囲む処理が異なる。
 図14を参照して実施の形態1の変形例3を説明する。鍵計算回路222は、物理的複製不能関数を用いて第1の鍵情報Kpuf1を生成する。鍵計算回路222は、第1の鍵情報Kpuf1を用いて秘密鍵Ksを暗号化する。鍵計算回路222は、復号演算回路224が暗号化データCaを復号する際に、物理的複製不能関数を用いて第1の鍵情報Kpuf1と同一の第2の鍵情報Kpuf2を生成する。鍵計算回路222は、第1の鍵情報Kpuf1を用いて暗号化された秘密鍵Ksを、第2の鍵情報Kpuf2を用いて復号する。鍵計算回路222は、クライアント装置406によって公開鍵Kpで暗号化されたユーザ鍵Cmkを、復号された秘密鍵Ksで復号する。
以降、図5と同様に、サーバ407は、秘密鍵Ksで復号されたmkを用いて、暗号化データCaをコンテンツPに復号する。
 図14を参照して実施の形態1の変形例3を説明する。
<ステップS11b>
送信制御部501aは、回路情報12をサーバ407に送信する。鍵計算回路222は、以下の式によって、公開鍵Kpと秘密鍵Ksとの鍵ペアをランダムに生成する。
KeyGen(Random)→(Kp,Ks)
上記の式は、公開鍵Kpと秘密鍵Ksとの鍵ペアをランダムに生成することを示す。図5と同様に、公開鍵Kpの識別子はIDである。鍵計算回路222は、PUF機能を用いることによって、初期値IVから、補助データHDと、第1の鍵情報Kpuf1を生成する。
PUF_KeyGen (IV)→(HD,Kpuf1)
鍵計算回路222は、第1の鍵情報Kpuf1を用いて秘密鍵Ksを暗号化する。
En(Kpuf1,Ks) →enc(Ks)
上記の式は、第1の鍵情報Kpuf1を用いて秘密鍵Ksを暗号化し、暗号化された秘密鍵Ksであるenc(Ks)を生成することを示す。
 ステップS12及びステップS13は図5と同じである。
<ステップS21>
 鍵計算回路222はクライアント装置406から識別子IDを受信した場合、以下の処理を実施する。クライアント装置406による識別子IDの送信は、暗号化データCaの処理要求である。鍵計算回路222は、復号演算回路224が暗号化データCaを復号する際に、PUF機能を用いて、第1の鍵情報Kpuf1と同一の第2の鍵情報Kpuf2を生成する。つまり、鍵計算回路222は、以下の式を実行して、補助データHDから、第2の鍵情報Kpuf2を生成する。第2の鍵情報Kpuf2は、第1の鍵情報Kpuf1と同一である。
PUF_KeyRep (HD)→Kpuf2
鍵計算回路222は、以下の式のように、第2の鍵情報Kpuf2でenc(Ks)を復号して秘密鍵Ksを得る。
De(Kpuf2,enc(Ks))→Ks
上記の式は、第2の鍵情報Kpuf2を用いてenc(Ks)を復号することを示す。鍵計算回路222は、以下の式のように、復号された秘密鍵Ksで、公開鍵Kpで暗号化されたユーザ秘密鍵Cmkを復号する。
Dec(Ks,Cmk)→mk
以下の処理は図5と同じである。
 変形例3では、公開鍵Kpと秘密鍵KsとのペアをPUF機能を使用せずに生成するので、クライアント装置406から初期値IVの送信が不要になる。
*** 実施の形態1の効果 ***
(1)実施の形態1では、図5の運用フェーズにおいて、図6に示すように、処理Funcの入出力は、鍵計算回路222、高速演算回路225、暗号化演算回路226でのみ展開される。つまり、処理Funcの入出力は、図2のFPGA405のセキュア領域でのみ展開される。
 このため、仮にホストコンピュータ401の情報が漏洩しても、処理Funcの入出力及び中間値が露出しない。
(2)また、秘密鍵mkはホストコンピュータ401上では公開鍵Kpで暗号化された状態のCmkで管理され、CmkはFPGA405の内部でのみ展開される。
このため、たとえホストコンピュータ401の管理者であっても、秘密鍵mkの機密性を破ることができない。
 以上、3つの変形例を含む実施の形態について説明したが、3つの変形例を含む実施の形態のうち1つを部分的に実施しても構わない。あるいは、3つの変形例を含む実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
 なお、本発明は、上記で述べた実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
 Ks 秘密鍵、Kp 公開鍵、P コンテンツ、Q 処理結果、1 秘密計算装置、10 ホスト計算部、10M ホスト記憶部、11 VM実行部、20M ローカル記憶装置、20 高速計算回路、21 固定処理回路、22 動的処理回路、221 入力回路、222 鍵計算回路、222a 入力回路、222b PUF回路、222c ファジーエクストラクター、222d 鍵対処理回路、222e 出力回路、223 鍵格納回路、224 復号演算回路、225 高速演算回路、226 暗号化演算回路、227 出力回路、401,401a,401b ホストコンピュータ、402 バイナリ、403 バイナリ、404 CPU、405 FPGA、406 クライアント装置、407 サーバ、408 主記憶装置、409 補助記憶装置、410 通信インタフェース、412 ホスト計算プログラム、501 CPU、501a 送信制御部、501b 暗号制御部、501c 復号制御部、501d 制御プログラム、502 主記憶装置、503 補助記憶装置、504 通信インタフェース、505 信号線、601 VM実行プログラム、700 VM管理装置、701 VM管理部、702 VM管理プログラム、703 鍵リスト、710 CPU、720 主記憶装置、730 補助記憶装置、740 通信インタフェース。

Claims (10)

  1.  ホスト計算部と、論理回路の回路構成を回路情報によって変更できる論理回路装置とを備え、
     前記ホスト計算部は、
     アプリケーションに対応付いた前記回路情報を使用することにより前記論理回路装置に複数の論理回路を形成し、
     前記複数の論理回路が形成された前記論理回路装置は、
     公開鍵と秘密鍵とのペアを生成し、前記公開鍵によって暗号化されたユーザ秘密鍵を取得し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する鍵計算回路と、
     前記ユーザ秘密鍵で暗号化されたコンテンツを取得し、暗号化された前記コンテンツを復号された前記ユーザ秘密鍵で復号する復号演算回路と、
     復号された前記コンテンツに前記アプリケーションに対応付いた処理を実施し、前記コンテンツの処理結果である処理コンテンツを生成するコンテンツ演算回路と、
     前記処理コンテンツを前記ユーザ秘密鍵で暗号化する暗号化演算回路と、
     暗号化された前記処理コンテンツを出力する出力回路と
    を備える秘密計算装置。
  2.  前記鍵計算回路は、
     初期値を用いて公開鍵と秘密鍵との前記ペアを生成する請求項1に記載の秘密計算装置。
  3.  前記論理回路装置は、
     回路構成が変化しない前記論理回路が形成される固定領域を有し、
     前記鍵計算回路は、
     前記固定領域に形成されており、同一の前記初期値に対して同一の公開鍵と同一の秘密鍵とのペアを生成する請求項2に記載の秘密計算装置。
  4.  前記鍵計算回路は、
     複数の異なる前記初期値を用いて、前記初期値ごとに前記公開鍵と前記秘密鍵との前記ペアを生成する請求項3に記載の秘密計算装置。
  5.  前記初期値と、前記初期値から生成された前記公開鍵とは、
     真正であることを保証する真正情報が対応付いた状態で、鍵情報を格納する鍵情報格納装置に格納されている請求項4に記載の秘密計算装置。
  6.  前記鍵計算回路は、
     前記ユーザ秘密鍵で暗号化された前記コンテンツを格納する暗号化コンテンツ格納装置から、前記ユーザ秘密鍵で暗号化された前記コンテンツを取得する請求項1から請求項5のいずれか一項に記載の秘密計算装置。
  7.  前記鍵計算回路は、
     物理的複製不能関数を用いて第1の鍵情報を生成し、前記第1の鍵情報を用いて前記秘密鍵を暗号化し、前記復号演算回路が暗号化された前記コンテンツを復号する際に、前記物理的複製不能関数を用いて前記第1の鍵情報と同一の第2の鍵情報を生成し、前記第1の鍵情報を用いて暗号化された前記秘密鍵を前記第2の鍵情報を用いて復号し、暗号化された前記ユーザ秘密鍵を前記秘密鍵で復号する請求項1に記載の秘密計算装置。
  8.  請求項1に記載の秘密計算装置と通信するクライアント装置であって、
     前記秘密計算装置に前記回路情報を送信する送信制御部と、
     前記秘密計算装置から前記公開鍵を取得し、前記公開鍵で前記ユーザ秘密鍵を暗号化し、前記ユーザ秘密鍵で前記コンテンツを暗号化し、前記公開鍵で暗号化された前記ユーザ秘密鍵と前記ユーザ秘密鍵で暗号化された前記コンテンツとを前記秘密計算装置に送信する暗号制御部と、
     暗号化された前記処理コンテンツを前記秘密計算装置から取得し、暗号化された前記処理コンテンツを前記ユーザ秘密鍵で復号する復号制御部と
    を備えるクライアント装置。
  9.  前記送信制御部は、
     前記秘密計算装置に、鍵情報が入力データとして適用された場合、前記鍵情報の認証値を出力する認証プログラムを送信し、
     前記暗号制御部は、
     前記秘密計算装置から前記公開鍵と共に第1の認証値を取得し、前記秘密計算装置に送信された前記認証プログラムと同一の前記認証プログラムに前記鍵情報として前記公開鍵を適用することにより第2の認証値を取得し、前記第1の認証値と前記第2の認証値とを比較し、比較結果が正しいと判断した場合に、暗号化された前記ユーザ秘密鍵を前記秘密計算装置に送信する請求項8に記載のクライアント装置。
  10.  前記送信制御部は、
     前記認証プログラムを前記回路情報に含めることにより、前記認証プログラムを前記秘密計算装置に送信する請求項9に記載のクライアント装置。
PCT/JP2019/000294 2019-01-09 2019-01-09 秘密計算装置及びクライアント装置 WO2020144758A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE112019006051.1T DE112019006051T5 (de) 2019-01-09 2019-01-09 Sicheres-rechnen-einrichtung und client-einrichtung
PCT/JP2019/000294 WO2020144758A1 (ja) 2019-01-09 2019-01-09 秘密計算装置及びクライアント装置
CN201980087623.8A CN113261038A (zh) 2019-01-09 2019-01-09 保密计算装置以及客户端装置
JP2020561943A JPWO2020144758A1 (ja) 2019-01-09 2019-01-09 クライアント装置
US17/318,820 US20210273790A1 (en) 2019-01-09 2021-05-12 Client device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/000294 WO2020144758A1 (ja) 2019-01-09 2019-01-09 秘密計算装置及びクライアント装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/318,820 Continuation US20210273790A1 (en) 2019-01-09 2021-05-12 Client device

Publications (1)

Publication Number Publication Date
WO2020144758A1 true WO2020144758A1 (ja) 2020-07-16

Family

ID=71521476

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/000294 WO2020144758A1 (ja) 2019-01-09 2019-01-09 秘密計算装置及びクライアント装置

Country Status (5)

Country Link
US (1) US20210273790A1 (ja)
JP (1) JPWO2020144758A1 (ja)
CN (1) CN113261038A (ja)
DE (1) DE112019006051T5 (ja)
WO (1) WO2020144758A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220294644A1 (en) * 2021-03-09 2022-09-15 Micron Technology, Inc. In-memory signing of messages with a personal identifier

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000509948A (ja) * 1997-02-28 2000-08-02 アクテル・コーポレイション 集積回路装置
JP2002140126A (ja) * 2000-10-31 2002-05-17 Toshiba Corp プログラム配布システム、暗号化プログラム配布装置、プログラム不具合情報収集システム、及びプログラム配布方法
JP2005532742A (ja) * 2002-07-10 2005-10-27 ジェネラル・インスツルメント・コーポレーション 鍵シードにより電子鍵の不正配信および使用を防止するための方法
US20060209584A1 (en) * 2004-11-12 2006-09-21 Srinivas Devadas Securely field configurable device
WO2012164721A1 (ja) * 2011-06-02 2012-12-06 三菱電機株式会社 鍵情報生成装置及び鍵情報生成方法
JP2017151794A (ja) * 2016-02-25 2017-08-31 富士通株式会社 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法
JP2017530586A (ja) * 2014-07-31 2017-10-12 ノック ノック ラブズ, インコーポレイテッド クライアントをデバイスに対して認証するシステム及び方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101370231B1 (ko) 2010-01-15 2014-03-06 미쓰비시덴키 가부시키가이샤 비트열 생성 장치 및 비트열 생성 방법
JP5662391B2 (ja) * 2012-08-17 2015-01-28 株式会社東芝 情報操作装置、情報出力装置および情報処理方法
JP6370230B2 (ja) 2015-01-23 2018-08-08 Kddi株式会社 秘密計算制御装置、秘密計算制御方法及び秘密計算制御プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000509948A (ja) * 1997-02-28 2000-08-02 アクテル・コーポレイション 集積回路装置
JP2002140126A (ja) * 2000-10-31 2002-05-17 Toshiba Corp プログラム配布システム、暗号化プログラム配布装置、プログラム不具合情報収集システム、及びプログラム配布方法
JP2005532742A (ja) * 2002-07-10 2005-10-27 ジェネラル・インスツルメント・コーポレーション 鍵シードにより電子鍵の不正配信および使用を防止するための方法
US20060209584A1 (en) * 2004-11-12 2006-09-21 Srinivas Devadas Securely field configurable device
WO2012164721A1 (ja) * 2011-06-02 2012-12-06 三菱電機株式会社 鍵情報生成装置及び鍵情報生成方法
JP2017530586A (ja) * 2014-07-31 2017-10-12 ノック ノック ラブズ, インコーポレイテッド クライアントをデバイスに対して認証するシステム及び方法
JP2017151794A (ja) * 2016-02-25 2017-08-31 富士通株式会社 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HONG, BOEUI ET AL.: "FASTEN: An FPGA-Based Secure System for Big Data Processing", IEEE DESIGN & TEST, vol. 35, 18 August 2017 (2017-08-18), pages 30 - 38, XP011676667, DOI: 10.1109/MDAT.2017.2741464 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220294644A1 (en) * 2021-03-09 2022-09-15 Micron Technology, Inc. In-memory signing of messages with a personal identifier
US11784827B2 (en) * 2021-03-09 2023-10-10 Micron Technology, Inc. In-memory signing of messages with a personal identifier

Also Published As

Publication number Publication date
DE112019006051T5 (de) 2021-09-30
US20210273790A1 (en) 2021-09-02
CN113261038A (zh) 2021-08-13
JPWO2020144758A1 (ja) 2021-03-11

Similar Documents

Publication Publication Date Title
JP7416775B2 (ja) 周辺デバイス
US11818262B2 (en) Method and system for one-to-many symmetric cryptography and a network employing the same
US11784801B2 (en) Key management method and related device
CN108345806B (zh) 一种硬件加密卡和加密方法
CN111541725B (zh) 区块链一体机及其密码加速卡、密钥管理方法和装置
US10484170B2 (en) Custom encryption function for communications between a client device and a server device
CN112926051B (zh) 多方安全计算方法和装置
US20160261592A1 (en) Method and device for the secure authentication and execution of programs
US20090327818A1 (en) Multi-core engine for detecting bit errors
US11824999B2 (en) Chosen-plaintext secure cryptosystem and authentication
JP3794457B2 (ja) データの暗号化復号化方法
US20190044922A1 (en) Symmetric key identity systems and methods
JP2022533950A (ja) 準群演算を含む暗号化データに対して等価演算および未満演算を実行するシステムおよび方法
WO2020078804A1 (en) Puf based securing of device update
CN113326518B (zh) 一种数据处理方法及装置
JP6294882B2 (ja) 鍵保管装置、鍵保管方法、及びそのプログラム
US20210273790A1 (en) Client device
CN113206815A (zh) 用于加解密的方法、可编程交换机和计算机程序产品
EP4012689B1 (en) Key management system providing secure management of cryptographic keys, and methods of operating the same
US11496287B2 (en) Privacy preserving fully homomorphic encryption with circuit verification
CN113645235A (zh) 分布式数据加解密系统及加解密方法
CN115516454B (zh) 硬件安全模块和系统
JP2018098757A (ja) 通信装置及び暗号処理システム
CN116208322A (zh) 秘钥软硬切换实现的方法、装置、设备和存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19909597

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020561943

Country of ref document: JP

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 19909597

Country of ref document: EP

Kind code of ref document: A1