JP7276423B2 - 暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置 - Google Patents

暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置 Download PDF

Info

Publication number
JP7276423B2
JP7276423B2 JP2021501378A JP2021501378A JP7276423B2 JP 7276423 B2 JP7276423 B2 JP 7276423B2 JP 2021501378 A JP2021501378 A JP 2021501378A JP 2021501378 A JP2021501378 A JP 2021501378A JP 7276423 B2 JP7276423 B2 JP 7276423B2
Authority
JP
Japan
Prior art keywords
key
homomorphic
encryption
ciphertext
decryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021501378A
Other languages
English (en)
Other versions
JPWO2020174515A1 (ja
Inventor
春菜 福田
寛人 田宮
寿幸 一色
成泰 奈良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2020174515A1 publication Critical patent/JPWO2020174515A1/ja
Application granted granted Critical
Publication of JP7276423B2 publication Critical patent/JP7276423B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3231Biological data, e.g. fingerprint, voice or retina

Description

本発明は暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置に関する。
個人認証の一例として、生体認証がある。「生体認証」は、被登録者の生体情報と、被認証者の生体情報とを照合することにより、被登録者と被認証者とが一致するか否かを確認する個人認証の手法である。ここで、「生体情報」とは、身体や行動に関する個人の一部の特徴から抽出されたデータである。
ところで、日本の「個人情報の保護に関する法律」では、個人を識別可能な情報である生体情報は個人情報であると定められており、電子的なデータベースで管理される個人情報が保護の対象であることが定められている。この観点から、クライアントサーバシステムで個人認証を行う場合、生体情報をクライアントからサーバへ送信せずに認証を行うことが好ましい。また、個人情報の漏洩を防ぐ観点からは生体情報を暗号化した状態でクライアント保存する必要がある。
そして、生体情報を用いた個人認証に限らず、認証システムでは生体情報を扱うのと同等の安全管理をすることが好ましい。
このような要請を満たす暗号方式として準同型公開鍵暗号がある。「準同型公開鍵暗号」とは、準同型性を有する公開鍵暗号のことであり、平文同士の演算結果の暗号文を暗号文から計算可能なものである。簡単に言うと、準同型公開鍵暗号では暗号文のまま行った演算(準同型演算)が復号化後においても維持されることになる。
乗法準同型性を有する公開鍵暗号では、演算を繰り返し実行することにより、定数乗などのより複雑な演算も実行可能である。加法準同型性を有する公開鍵暗号の場合、演算を繰り返し実行することにより、定数倍や内積などのより複雑な演算も実行可能である。さらに、Somewhat準同型性を有する公開鍵暗号や完全準同型性を有する公開鍵暗号の場合、加法と乗法をより複雑に組み合わせた演算も実行可能である。例えば、準同型公開鍵暗号として以下の暗号方式が知られている。
特許文献1には、「Paillier暗号」として知られている加法準同型性を有する公開鍵暗号が記載されている。また、特許文献2には、「Okamoto-Uchiyama」として知られている加法準同型性を有する公開鍵暗号が記載されている。
非特許文献1には、「Elgamal暗号」として知られている乗法準同型性を有する公開鍵暗号が記載されている。また,「Elgamal暗号」を変形して得られる加法準同型性を有する公開鍵暗号として、「Lifted-Elgamal暗号」と「楕円Elgamal暗号」とが知られている。
非特許文献2には、「BGN暗号」として知られているSomewhat準同型性を有する公開鍵暗号が記載されている。また、非特許文献3には、「Brakerski-Vaikuntanathan暗号」として知られているSomewhat準同型性を有する公開鍵暗号が記載されている。
準同型公開鍵暗号を用いた個人認証は、例えば次のように実行される。まず登録時には、ユーザが入力したパスワードや生体情報などの認証情報を、認証サーバが生成した暗号化鍵で暗号化して、ユーザが用いる認証端末に保存しておく。そして、認証を実行する際に認証端末では、ユーザが入力した認証情報と、端末に保存されている暗号化された認証情報とを照合して認証結果の暗号文が生成される。この処理は暗号化鍵を用いた準同型演算であり、認証情報が暗号化されたまま行われる。認証サーバには、この認証結果の暗号文のみが送信され、認証サーバは、自身の保持している復号鍵を用いて認証結果を得ることができる。この方法では、認証サーバがユーザの認証情報を知ることはない。
また、準同型公開鍵暗号は秘匿計算にも応用可能である。準同型公開鍵暗号を用いた秘匿計算は、例えば次のように実行される。まずデータ利用者は、暗号鍵をデータ提供者達およびデータ分析者に配布する。データ提供者達はこの暗号鍵を用いてデータを暗号化し、暗号化されたデータをデータ分析者に渡す。データ分析者は、受け取った複数の暗号文に対して、暗号化鍵を用いて準同型演算を行うことによって暗号化されたままのデータの分析し、その結果の暗号文を生成する。データ利用者は、受け取った分析結果の暗号文を自身の持つ復号鍵を用いて復号し、分析結果を得る。この方法では、データ利用者は、データの分析結果を得ることができるが、個々のデータの内容を知ることはない。
特許文献3には、準同型公開鍵暗号を暗号文の照合に用いる技術の例が記載されている。また、特許文献4には、公開鍵(検証鍵)よりも権限が強い準同型演算鍵を用いた「準同型署名」と呼ばれる方式の技術の例が記載されている。
特許第4137385号公報 特許第3402441号公報 国際公開第2017/170780号公報 国際公開第2017/061017号公報
Taher ElGamal. "A public key cryptosystem and a signature scheme based on discrete logarithms." IEEE transactions on information theory 31.4 (1985): 469-472. Dan Boneh, Eu-Jin Goh, and Kobbi Nissim. "Evaluating 2-DNF formulas on ciphertexts." Theory of Cryptography Conference. Springer, Berlin, Heidelberg, 2005. Zvika Brakerski, Craig Gentry, and Vinod Vaikuntanathan. "(Leveled) fully homomorphic encryption without bootstrapping." ACM Transactions on Computation Theory 6.3 (2014): 13.
なお、上記先行技術文献の各開示を、本書に引用をもって織り込むものとする。以下の分析は、本発明者らによってなされたものである。
上記準同型公開鍵暗号方式では、暗号化鍵を持っていれば誰でも暗号化アルゴリズムおよび準同型演算アルゴリズムを実行可能である。つまり、暗号化の実行権限と準同型演算の実行権限が等しい。これにより、例えば以下のような問題が生じる虞がある。
準同型公開鍵暗号を用いた個人認証の端末は、認証時には暗号化処理を行わないが、準同型演算処理のために暗号化鍵を保持している。したがって、悪意を持つ人が端末を手に入れた場合、端末に保存されている暗号化鍵を用いて自身の認証情報を暗号化することができ、しかも暗号化された自身の認証情報に対しも準同型演算を行うことができる。その結果、悪意を持つ人が認証に成功しまう可能性がある。
また、準同型公開鍵暗号を用いた秘匿計算におけるデータ分析者は、暗号化処理を行わないが、準同型演算処理のために暗号化鍵を取得する。したがって、悪意を持つデータ分析者は、正当な暗号化データの代わりに任意のデータを暗号化し、改ざん後のデータ準同型演算を行うことができる。その結果、データ利用者が取得する分析結果は、データ提供者からの正当なデータに対する分析結果ではなく、悪意を持つデータ分析者によって改ざんされた分析結果となってしまう可能性がある。
本発明は、暗号化の実行権限と準同型演算の実行権限とを分離し、準同型演算の実行権限では暗号化を実行できない準同型公開鍵暗号を実現することに寄与する暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置を提供することを目的とする。
本発明の第1の視点によれば、平文から暗号文を生成する権限に係る暗号化鍵と、暗号化されたまま暗号文の準同型演算を実行する権限に係る、前記暗号化鍵よりも権限が弱い準同型演算鍵と、暗号文を復号する権限に係る復号鍵とを生成する鍵生成装置と、前記暗号化鍵を用いて平文から暗号文を生成する暗号化装置と、前記準同型演算鍵を用いて前記暗号文に対する準同型演算を実行する準同型演算装置と、前記復号鍵を用いて暗号文を復号する復号装置と、を備えることを特徴とする暗号システムが提供される。
本発明の第2の視点によれば、公開鍵暗号方式を用いて暗号化鍵と復号鍵のペアを生成し、前記暗号化鍵を用いて生成された暗号文を暗号化されたまま準同型演算を実行するための準同型演算鍵を、前記暗号化鍵の要素のうち、前記準同型演算に用いない要素を取り除くことで生成する、ことを特徴とする鍵生成装置が提供される。
本発明の第3の視点によれば、公開鍵暗号方式を用いて暗号化鍵と復号鍵のペアを生成し、前記暗号化鍵を用いて生成された暗号文を暗号化されたまま準同型演算を実行するための準同型演算鍵を、前記暗号化鍵の要素のうち、前記準同型演算に用いない要素を取り除くことで生成する、ことを特徴とする鍵生成方法が提供される。
本発明の第4の視点によれば、平文から暗号文を生成する権限に係る暗号化鍵と、暗号化されたまま暗号文の準同型演算を実行する権限に係る準同型演算鍵と、暗号文を復号する権限に係る復号鍵とを生成する鍵生成装置において実行される鍵生成プログラムであって、公開鍵暗号方式を用いて前記暗号化鍵と前記復号鍵のペアを生成するステップと、前記暗号化鍵の要素のうち、前記準同型演算に用いない要素を取り除くことで準同型演算鍵を生成するステップと、を含むことを特徴とする鍵生成プログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記憶することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記憶媒体、光記憶媒体等の非トランジェントなものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
本発明の第5の視点によれば、公開鍵暗号方式を用いて生成された暗号化鍵と復号鍵のペアのうち、前記暗号化鍵を用いて生成された暗号文の入力を受け付ける暗号文入力部と、前記暗号文を暗号化されたまま準同型演算を実行する権限に係る、前記暗号化鍵よりも権限が弱い準同型演算鍵を取得する準同型演算鍵取得部と、前記準同型演算鍵を用いて前記暗号文を暗号化されたまま前記準同型演算を実行する準同型演算部と、を備えることを特徴とする準同型演算装置が提供される。
発明の各視点によれば、暗号化の実行権限と準同型演算の実行権限とを分離し、準同型演算の実行権限では暗号化を実行できない準同型公開鍵暗号を実現することに寄与する暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置が、提供される。
図1は、第1の実施形態に係る準同型暗号システムの構成を示すブロック図である。 図2は、第1の実施形態に係る準同型暗号システムの鍵生成処理を説明するフロー図である。 図3は、第1の実施形態に係る準同型暗号システムの暗号化処理を説明するフロー図である。 図4は、第1の実施形態に係る準同型暗号システムの復号処理を説明するフロー図である。 図5は、第1の実施形態に係る準同型暗号システムの準同型演算処理を説明するフロー図である。 図6は、第2の実施形態に係る準同型暗号システムの構成を示すブロック図である。 図7は、第2の実施形態に係る準同型暗号システムの鍵検証処理を説明するフロー図である。 図8は、第3の実施形態に係る準同型暗号システムの構成を示すブロック図である。 図9は、第3の実施形態に係る準同型暗号システムの鍵検証処理を説明するフロー図である。 図10は、第4の実施形態に係る準同型暗号システムの構成を示すブロック図である。 図11は、第5の実施形態に係る準同型暗号システムの構成を示すブロック図である。
本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図面及び明細書記載の各実施形態において、同様の構成要素には同一の符号を付与し、説明を適宜省略する。また、以下には、個人認証および秘匿計算を例にした実施形態の説明が含まれるが、本発明の実施の形態はこれに限定されるものではない。
[第1の実施形態]
図1は、第1の実施形態に係る準同型暗号システム100の構成を示すブロック図である。図1に示されるように、準同型暗号システム100は、鍵生成装置110と、準同型演算鍵記憶装置120と、暗号化鍵記憶装置130と、復号鍵記憶装置140と、暗号化装置150と、復号装置160と、準同型演算装置170と、を備えている。ただし、準同型暗号システム100が備える上記各装置は、別個の装置として構成することも、適宜用途に応じて同一の装置内に実装されることもある。準同型暗号システム100は、上記各装置をサーバとクライアントとに分けて実装することによって、サーバクライアントシステムとして実現することも可能である。
鍵生成装置110は、公開パラメータの入力を受け付ける公開パラメータ入力部111と、公開パラメータ入力部111に入力された公開パラメータから準同型演算鍵と暗号化鍵と復号鍵とを生成する鍵生成部112と、鍵生成部112で生成された準同型演算鍵を出力する準同型演算鍵出力部113と、鍵生成部112で生成された暗号化鍵を出力する暗号化鍵出力部114と、鍵生成部112で生成された復号鍵を出力する復号鍵出力部115とを有する。
準同型演算鍵記憶装置120は、鍵生成装置110の準同型演算鍵出力部113が出力した準同型演算鍵を記憶する準同型演算鍵記憶部121を有し、暗号化鍵記憶装置130は、鍵生成装置110の暗号化鍵出力部114が出力した暗号化鍵を記憶する暗号化鍵記憶部131を有し、復号鍵記憶装置140は鍵生成装置110の復号鍵出力部115が出力した復号鍵を記憶する復号鍵記憶部141を有する。
暗号化装置150は、メッセージの入力を受け付けるメッセージ入力部151と、記憶されている暗号化鍵を取得する暗号化鍵取得部152と、暗号化鍵取得部152が取得した暗号化鍵を用いて入力されたメッセージの暗号文を生成する暗号化部153と、生成された暗号文を出力する暗号文出力部154とを有する。ここで、メッセージとは、いわゆる「平文」であり、文字情報に限らず画像や音声などの情報であってもよい。
復号装置160は、暗号文の入力を受け付ける暗号文入力部161と、記憶されている復号鍵を取得する復号鍵取得部162と、復号鍵取得部162が取得した復号鍵を用いて前記暗号文の復号処理を行い、復号結果を生成する復号部163と、復号結果を出力する復号結果出力部164とを有する。ここで、暗号文入力部161に入力される暗号文は典型的には暗号化装置150または準同型演算装置170の出力である。
準同型演算装置170は、暗号文の入力を受け付ける暗号文入力部171と、記憶されている準同型演算鍵を取得する準同型演算鍵取得部172と、準同型演算鍵取得部172が取得した準同型演算鍵を用いて入力された暗号文の準同型演算を行い、準同型演算結果を生成する準同型演算部173と、準同型演算結果を出力する準同型演算結果出力部174とを有する。なお、準同型演算結果出力部174が出力する準同型演算結果はそれ自体も暗号文である。
次に、図2から図3を参照しながら、準同型暗号システム100において行われる処理について説明する。準同型暗号システム100において行われる処理は、鍵生成処理、暗号化処理、復号処理、準同型演算処理の4つに分割できる。以下では各処理の動作例についてそれぞれ説明する。
図2は、鍵生成処理を説明するフロー図である。鍵生成処理は鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140とにより、次のように実行される。
まず、鍵生成装置110の公開パラメータ入力部111に公開パラメータが入力される(ステップA1)。
次に、鍵生成装置110の鍵生成部112は、公開パラメータに基づいて準同型演算鍵と暗号化鍵と復号鍵とを生成する(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113は、ステップA2で生成した準同型演算鍵を出力する(ステップA3)。出力された準同型演算鍵は、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114は、ステップA2で生成した暗号化鍵を出力する(ステップA5)。出力された暗号化鍵は、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115は、ステップA2で生成した復号鍵を出力する(ステップA7)。出力された復号鍵は、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
なお、上記処理の手順は一例である。例えば、各鍵の出力であるステップA3、ステップA5、およびステップA7の順番は交換することが可能である。
図3は暗号化処理を説明するフロー図である。暗号化処理は暗号化装置150により次のように実行される。
まず、メッセージ入力部151に暗号化対象のメッセージが入力される(ステップB1)。先述のように、ここでメッセージとは文字情報に限定されない。
次に、暗号化鍵取得部152は、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵を取得する(ステップB2)。
次に、暗号化部153は、ステップB2で取得した暗号化鍵を用い、ステップB1で受け取ったメッセージを暗号化し、暗号文を生成する(ステップB3)。
最後に、暗号文出力部154は、ステップB3で生成した暗号文を出力する(ステップB4)。
なお、以上は処理の例である。例えば、ステップB2がステップB1より先に実行されても構わない。
図4は復号処理を説明するフロー図である。復号処理は復号装置160により次のように実行される。
まず、暗号文入力部161に復号対象の暗号文が入力される(ステップC1)。
次に、復号鍵取得部162は、復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵を取得する(ステップC2)。
次に、復号部163は、ステップC2で取得した復号鍵を用い、ステップC1で受け取った暗号文を復号し、復号結果を生成する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果を出力する(ステップC4)。
ただし、以上は処理の例である。例えば、ステップC2がステップC1より先に実行されても構わない。
図5は準同型演算処理を説明するフロー図である。準同型演算処理は準同型演算装置170により次のように実行される。
まず、暗号文入力部171に準同型演算対象の複数の暗号文が入力される(ステップD1)。
次に、準同型演算鍵取得部172は、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵を取得する(ステップD2)。
次に、準同型演算部173は、ステップD2で取得した準同型演算鍵を用い、ステップD1で受け取った複数の暗号文に対し準同型演算を施し、準同型演算結果を生成する(ステップD3)。
最後に、準同型演算結果出力部174は、ステップD3で生成した準同型演算結果を出力する(ステップD4)。
ただし、以上は処理の例である。例えば、ステップD2がステップD1より先に実行されても構わない。
[第1の実施形態に係る実施例1]
次に、Lifted-Elgamal暗号を基礎とした、本実施形態に係る準同型暗号システム100の処理の一例を説明する。Lifted-Elgamal暗号は、加法準同型性を有する公開鍵暗号の一例である。以下では、準同型公開鍵暗号の説明とLifted-Elgamal暗号の説明とをした後に、本実施形態に係る準同型暗号システム100の処理の説明を行う。
(準同型公開鍵暗号)
公開鍵暗号方式は、鍵生成アルゴリズム(KeyGen)、暗号化アルゴリズム(Enc)、復号アルゴリズム(Dec)の3つのアルゴリズムで構成される。
鍵生成アルゴリズムは、セキュリティパラメータと呼ばれる鍵の強度を表すパラメータを用いて、暗号化鍵ekおよび復号鍵dkを生成する。この動作は、セキュリティパラメータをκとすると、次式のように表すことができる。
KeyGen(κ)→(ek,dk)
暗号化アルゴリズムは、暗号化鍵ekにより平文のメッセージmを暗号化した結果である暗号文cを生成する。これは次式のように表すことができる。
Enc(ek,m)→c
復号アルゴリズムは、復号鍵dkにより暗号文cを復号した結果であるm′を生成する。これは次式のように表すことができる。
Dec(dk,c)→m′
公開鍵暗号方式は正しく暗号文を復号できる必要がある。すなわち、鍵生成アルゴリズムで生成された任意の暗号化鍵ekおよび復号鍵dkのペアに対し、任意のメッセージmを暗号化鍵ekで暗号化した結果である暗号文cを復号鍵dkによって復号した結果m′はmと等しくなる必要がある。すなわち、KeyGen(κ)→(ek,dk)に対し、任意のメッセージmについて
Dec(dk,Enc(ek,m))→m
が成り立つ必要がある。
公開鍵暗号方式では、暗号化鍵を持っていれば誰でも暗号化アルゴリズムを実行可能であるが、復号鍵なしでは復号アルゴリズムは実行できない。
準同型性を有する公開鍵暗号方式は、公開鍵暗号の各アルゴリズムに加え、準同型演算アルゴリズム(Hom)を有する。
準同型演算アルゴリズムは、暗号化鍵により、入力された複数の暗号文に対応するメッセージの演算結果の暗号文を生成する。入力できるメッセージが2つである場合、次式のように表すことができる。
Hom(ek,c,c)→c
なお、準同型演算アルゴリズムに3つ以上の暗号文を入力可能な方式や、暗号文と平文を入力可能な方式も存在する。また、複数種類の演算に対応する準同型演算を実行可能な方式などでは、準同型演算アルゴリズムの実行時に、実行する演算を指定する方式も存在する。
例えば、加法準同型性を有する公開鍵暗号の場合、メッセージmの暗号化鍵ekによる暗号文cと、メッセージmの暗号化鍵ekによる暗号文cと、から生成される暗号文cは2つのメッセージの和m+mの暗号文である。すなわち、KeyGen(κ)→(ek,dk)に対し、任意のメッセージmとメッセージmについて、
Enc(ek,m)→c,Enc(ek,m)→c
とすると、
Dec(dk,Hom(ek,c,c))→m+m
が成り立つ必要がある。
また、例えば、乗法準同型性を有する公開鍵暗号の場合、メッセージmの暗号化鍵ekによる暗号文cと、メッセージmの暗号化鍵ekによる暗号文cと、から生成される暗号文cは、2つのメッセージの積m・mの暗号文である必要がある。すなわち、KeyGen(κ)→(ek,dk)に対し、任意のメッセージmとメッセージmについて、
Enc(ek,m)→c,Enc(ek,m)→c
とすると、
Dec(dk,Hom(ek,c,c))→m・m
が成り立つ必要がある。
(Lifted-Elgamal暗号)
Lifted-Elgamal暗号は、加法準同型性を有する公開鍵暗号の一例である。Lifted-Elgamal暗号の各アルゴリズムは次のように動作する。
鍵生成アルゴリズムは、まず、セキュリティパラメータκを入力として受け取る。次に、κビットの素数qをランダムに選び、位数がqである乗法群Gおよびその生成元gを選ぶ。次に、1以上q未満の整数xを一様ランダムに選択し、h:=gと定める。最後に、暗号化鍵ek=(κ,q,G,g,h)および復号鍵dk=(ek,x)を出力する。
暗号化アルゴリズムは、まず、暗号化鍵ek=(κ,q,G,g,h)およびメッセージmを入力として受け取る。次に、1以上q未満の整数rを一様ランダムに選択し、c=g、c=g・hと定める。最後に、暗号文c=(c,c)を出力する。
復号アルゴリズムは、まず、復号鍵dk=(ek,x)および暗号文c=(c,c)を入力として受け取る。次に、M′=c/((c)を計算する。最後に、復号結果m′=Dlog(M′)を出力する。ただし、Dlogは、Dlog(g)=xとなる関数である。
メッセージmの暗号文c=(c,c)=(g,g・h)に対し、Lifted-Elgamal暗号の復号アルゴリズムにより、暗号文cをmに正しく復号できることを、次式によって確認できる。
M′=c/(c=(g・h)/(g=(g・gx・r)/(g=g
m′=Dlog(g)=m
準同型演算アルゴリズムは、まず、暗号化鍵ek=(κ,q,G,g,h)および第一の暗号文c=(c1,a,c1,b)および第二の暗号文c=(c2,a,c2,b)を入力として受け取る。次に、c=c1,a・c2,a,c=c1,b・c2,bを計算する。最後に、準同型演算結果c=(c,c)を出力する。
メッセージmの暗号文(c1,a=g,c1,b=gm1・h)(ただし、gm1はgをm乗したものを表す)およびメッセージmの暗号文(c2,a=g,c2,b=gm2・h(ただし、gm2はgをm乗したものを表す))に対し、次の2式が成り立つ。
=g(r+s)
=g(m1+m2)・h(r+s)(ただし、g(m1+m2)はgをm+m乗したものを表す)
したがって、cはm+mの暗号文であり、Lifted-Elgamal暗号は加法準同型性を有する。
(本実施例)
第1の実施形態に係る実施例1は、Lifted-Elgamal暗号を基礎とし、以下に説明するような修正を加える。以下では、図1から図5に記載の符号を参照しながら、準同型暗号システム100が実行する実施例の説明を行う。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成装置110の鍵生成部112はκビットの素数qをランダムに選び、位数がqである乗法群Gおよびその生成元gを選ぶ。そして、1以上q未満の整数xを一様ランダムに選択し、h:=gとする。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、準同型演算鍵をhk=(κ,q,G)、暗号化鍵をek=(κ,q,G,g,h)、復号鍵をdk=(ek,x)とする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
そして、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,q,G,g,h)を取得する(ステップB2)。
次に、暗号化部153は1以上q未満の整数rを一様ランダムに選択し、c=g、c=g・hを計算する(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した(c,c)を暗号文として出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文c=(c,c)が入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,q,G,g,h,x)を取得する(ステップC2)。
次に、復号部163はM′=c/((c)を計算する。さらに、復号部163はm′=Dlog(M′)を計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文c=(c1,a,c1,b)および第二の暗号文c=(c2,a,c2,b)が入力される(ステップD1)。
そして、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,q,G)を取得する(ステップD2)。
次に、準同型演算部173はc=c1,a・c2,aおよびc=c1,b・c2,bを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果c=(c,c)を出力する(ステップD4)。
上記のように、暗号化鍵ek=(κ,q,G,g,h)と準同型演算鍵hk=(κ,q,G)が異なる。さらに、暗号化におけるc=g、c=g・hの計算にはgおよびhが必要であるところ、準同型演算鍵hk=(κ,q,G)にはgおよびhが含まれないので、準同型演算鍵hk=(κ,q,G)を入手しても、暗号化を実行することはできない。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。つまり、準同型演算の実行権限では暗号化を実行できない。
また、暗号化鍵ek=(κ,q,G,g,h)と準同型演算鍵hk=(κ,q,G)の生成方法から解るように、準同型演算鍵hk=(κ,q,G)は、暗号化鍵ek=(κ,q,G,g,h)の要素のうち、準同型演算に用いない要素gおよびhを取り除くことで得られる。
[第1の実施形態に係る実施例2]
次に、Paillier暗号を基礎とした、本実施形態に係る準同型暗号システム100の処理の一例を説明する。Paillier暗号は、加法準同型性を有する公開鍵暗号の一例である。以下では、Paillier暗号の説明をした後に、本実施形態に係る準同型暗号システム100の処理の説明を行う。なお、準同型公開鍵暗号に関する事項は実施例1の場合と同様なので説明を省略する。
(Paillier暗号)
Paillier暗号は、加法準同型性を有する公開鍵暗号の一例である。Paillier暗号の各アルゴリズムは次のように動作する。
鍵生成アルゴリズムは、まず、セキュリティパラメータκを入力として受け取る。次にκビットの2つの素数p、qをランダムに選び、n=pqとする。次に、1以上n以下の整数kをランダムに選び、g=1+kn mod nとする。最後に、暗号化鍵ek=(κ,n,g)および復号鍵dk=(ek,p,q)を出力する。
暗号化アルゴリズムは、まず、暗号化鍵ek=(κ,n,g)およびメッセージmを入力として受け取る。次に、n未満の整数rを一様ランダムに選択し、c=g・r mod nとする。最後に、暗号文cを出力する。
復号アルゴリズムは、まず、復号鍵dk=(ek,p,q)および暗号文cを入力として受け取る。次に、λをp-1とq-1の最小公倍数とする。次に、cλ=cλ mod nとし、さらに、c=(cλ-1)/nとする。次に、gλ=gλ mod nとし、さらに、g=(gλ-1)/nとする。最後に、復号結果m′=c/g mod nを出力する。
任意の整数hに対し、hnλ mod n=1が成り立つことを利用すると、メッセージmの暗号文c=g・r mod nに対し、Paillier暗号の復号アルゴリズムにより、暗号文cをmに正しく復号できることを、次式によって確認できる。
λ=cλ mod n=(g・rλ mod n=gmλ・rnλ mod n=gmλ mod n=(1+kn)mλ mod n=1+n(kmλ mod n)
=(cλ-1)/n=kmλ mod n
λ=gλ mod n==gλ mod n=(1+kn)λ mod n=1+n(kλ mod n)
=(gλ-1)/n=kλ mod n
m′=cλ/gλ mod n=kmλ/kλ mod n=m
準同型演算アルゴリズムは、まず、暗号化鍵ek=(κ,n,g)および第一の暗号文cおよび第二の暗号文cを入力として受け取る。次に、c=c・c mod nを計算する。最後に、準同型演算結果cを出力する。
メッセージmの暗号文c=gm1・r mod n(ただし、gm1はgをm乗したものを表す)およびメッセージmの暗号文c=gm2・s mod n(ただし、gm2はgをm乗したものを表す)に対し、次式が成り立つ。
c=g(m1+m2)・(r・s) mod n(ただし、g(m1+m2)はgをm+m乗したものを表す)
したがって、cはm+mの暗号文であり、Paillier暗号は加法準同型性を有する。
(本実施例)
第1の実施形態に係る実施例2は、Paillier暗号を基礎とし、以下に説明するような修正を加える。以下では、図1から図5に記載の符号を参照しながら、準同型暗号システム100が実行する実施例の説明を行う。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成装置110の鍵生成部112はκビットの2つの素数p、qをランダムに選び、n=pqとする。次に、1以上n以下の整数kをランダムに選び、g=1+kn mod nとする。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、準同型演算鍵をhk=(κ,n)、暗号化鍵をek=(κ,n,g)、復号鍵をdk=(ek,p,q)とする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
次に、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,n,g)を取得する(ステップB2)。
次に、1以上n以下の整数rをランダムに選び、c=g・r mod nを計算する(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した暗号文cを出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文cが入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,n,g,p,q)を取得する(ステップC2)。
次に、復号部163はλをp-1とq-1の最小公倍数とする。そして、復号部163はステップC1で受け取った暗号文cからcλ=cλ mod nを計算し、さらに、c=(cλ-1)/nを計算する。次に、復号部163はステップC2で取得した復号鍵dkからgλ=gλ mod nを計算し、さらに、g=(gλ-1)/nを計算する。次に、m′=cL/gL mod nを計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文cおよび第二の暗号文c入力される(ステップD1)。
次に、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,n)を取得する(ステップD2)。
次に、準同型演算部173はc=c・c mod nを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果cを出力する(ステップD4)。
上記のように、暗号化鍵ek=(κ,n,g)と準同型演算鍵hk=(κ,n)が異なる。さらに、暗号化におけるc=g・r mod nの計算にはgが必要であるところ、準同型演算鍵hk=(κ,n)にはgが含まれないので、準同型演算鍵hk=(κ,n)を入手しても、暗号化を実行することはできない。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。つまり、準同型演算の実行権限では暗号化を実行できない。
また、暗号化鍵ek=(κ,n,g)と準同型演算鍵hk=(κ,n)の生成方法から解るように、準同型演算鍵hk=(κ,n)は、暗号化鍵ek=(κ,n,g)の要素のうち、準同型演算に用いない要素gを取り除くことで得られる。
[第1の実施形態に係る実施例3]
次に、Okamoto-Uchiyama暗号を基礎とした、本実施形態に係る準同型暗号システム100の処理の一例を説明する。Okamoto-Uchiyama暗号は、加法準同型性を有する公開鍵暗号の一例である。以下では、Okamoto-Uchiyama暗号の説明をした後に、本実施形態に係る準同型暗号システム100の処理の説明を行う。なお、準同型公開鍵暗号に関する事項は実施例1の場合と同様なので説明を省略する。
(Okamoto-Uchiyama暗号)
Okamoto-Uchiyama暗号は、加法準同型性を有する公開鍵暗号の一例である。Okamoto-Uchiyama暗号の各アルゴリズムは次のように動作する。
(Okamoto-Uchiyama暗号)
鍵生成アルゴリズムは、まず、セキュリティパラメータκを入力として受け取る。次にκビットの2つの素数p、qをランダムに選び、n=pqとする。次に、1以上n以下で、nと互いに素である(すなわちnとの最大公約数が1である)整数gをランダムに選ぶ。gp-1 mod p=1であったらgを選びなおす。次に、h=g mod nを計算する。最後に、暗号化鍵ek=(κ,n,g,h)および復号鍵dk=(ek,p,q)を出力する。
暗号化アルゴリズムは、まず、暗号化鍵ek=(κ,n,g,h)およびメッセージmを入力として受け取る。次に、n未満の整数rを一様ランダムに選択し、c=g・h mod nとする。最後に、暗号文cを出力する。
復号アルゴリズムは、まず、復号鍵dk=(ek,p,q)および暗号文cを入力として受け取る。次に、c=cp-1 mod pとし、さらに、c=(c-1)/pとする。次に、g=gp-1 mod pとし、さらに、g=(g-1)/pとする。
最後に、復号結果m′=c/g mod pを出力する。
任意の整数hに対し,hpq(p-1) mod n=1が成り立つことと、ある整数kを用いてhp-1=1+kpと表せることを利用すると,メッセージmの暗号文c=g・h mod nに対し、Paillier暗号の復号アルゴリズムにより、暗号文cをmに正しく復号できることを、次式によって確認できる。
=cp-1 mod p=(g・hp-1 mod p=gm(p-1)・grn(p-1) mod p=gm(p-1) mod p=(1+kp) mod p=1+p(km mod p)
=(c-1)/p=km mod p
=gp-1 mod p=(1+kp) mod p=1+p(k mod p)
=(g-1)/p=k mod p
m′=c/g mod p=km/k mod p=m
準同型演算アルゴリズムは、まず、暗号化鍵ek=(κ,n,g,h)および第一の暗号文cおよび第二の暗号文cを入力として受け取る。次に、c=c・c mod nを計算する。最後に、準同型演算結果cを出力する。
メッセージmの暗号文c=gm1・h mod n(ただし、gm1はgをm乗したものを表す)およびメッセージmの暗号文c=gm2・h mod n(ただし、gm2はgをm乗したものを表す)に対し、次式が成り立つ。
c=g(m1+m2)・h(r+s) mod n(ただし、g(m1+m2)はgをm+m乗したものを表す)
したがって、cはm+mの暗号文であり、Okamoto-Uchiyama暗号は加法準同型性を有する。
(本実施例)
第1の実施形態に係る実施例3は、Okamoto-Uchiyama暗号を基礎とし、以下に説明するような修正を加える。以下では、図1から図5に記載の符号を参照しながら、準同型暗号システム100が実行する実施例の説明を行う。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、鍵生成装置110の鍵生成部112はκビットの2つの素数p、qをランダムに選び、n=pqとする。次に、1以上n以下で、nと互いに素である(すなわちnとの最大公約数が1である)整数gをランダムに選ぶ。gp-1 mod p=1であったらgを選びなおす。次に、h=g mod nを計算する。そして、準同型演算鍵をhk=(κ,n)、暗号化鍵をek=(κ,n,g,h)、復号鍵dk=(ek,p,q)をとする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
次に、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,n,g,h)を取得する(ステップB2)。
次に、暗号化部153はn未満の整数rを一様ランダムに選択し、c=g・h mod nを計算する(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した暗号文cを出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文cが入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,n,g,h,p,q)を取得する(ステップC2)。
次に、復号部163はc=cp-1 mod pを計算し、さらに、c=(c-1)/pを計算する。次に、g=gp-1 mod pを計算し、さらに、g=(g-1)/pを計算する。最後に、m′=c/g mod pを計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文cおよび第二の暗号文cが入力される(ステップD1)。
次に、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,n)を取得する(ステップD2)。
次に、準同型演算部173はc=c・c mod nを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果cを出力する(ステップD4)。
上記のように、暗号化鍵ek=(κ,n,g,h)と準同型演算鍵hk=(κ,n)が異なる。さらに、暗号化におけるc=g・h mod nの計算にはgおよびhが必要であるところ、準同型演算鍵hk=(κ,n)にはgおよびhが含まれないので、準同型演算鍵hk=(κ,n)を入手しても、暗号化を実行することはできない。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。つまり、準同型演算の実行権限では暗号化を実行できない。
また、暗号化鍵ek=(κ,n,g,h)と準同型演算鍵hk=(κ,n)の生成方法から解るように、準同型演算鍵hk=(κ,n)は、暗号化鍵ek=(κ,n,g,h)の要素のうち、準同型演算に用いない要素gおよびhを取り除くことで得られる。
[第2の実施形態]
図6は、第2の実施形態に係る準同型暗号システム200の構成を示すブロック図である。図6に示されるように、準同型暗号システム200は、第1の実施形態に係る準同型暗号システム100の構成に加え、鍵検証装置280を備えている。したがって、以下の説明では、鍵生成装置110、準同型演算鍵記憶装置120、暗号化鍵記憶装置130、復号鍵記憶装置140、暗号化装置150、復号装置160、および準同型演算装置170の構成の説明は省略する。
鍵検証装置280は、暗号文の入力を受け付ける暗号文入力部281と、入力された暗号文が鍵生成装置110で生成された暗号化鍵で生成された暗号文であるかの検証結果を生成する検証部284と、その検証結果を出力する検証結果出力部285とを有する。
鍵検証装置280は、次のように鍵検証処理を実行する。図7は鍵検証処理を説明するフロー図である。
まず、暗号文入力部281に検証対象の暗号文が入力される(ステップE1)。
次に、検証部284は、ステップE1で受け取った暗号文が、ステップA2で生成された暗号化鍵で生成された暗号文であるかを検証し、検証結果を生成する(ステップE2)。
最後に、検証結果出力部285は、ステップE2で生成した検証結果を出力する(ステップE3)。
ただし、以上は処理の例である。例えば、ステップE2がステップE1より先に実行されても構わない。
[第2の実施形態に係る実施例1]
次に、Elgamal暗号を基礎とした、本実施形態に係る準同型暗号システム200の処理の一例を説明する。Elgamal暗号は、乗法準同型性を有する公開鍵暗号の一例である。以下では、Elgamal暗号の説明をした後に、本実施形態に係る準同型暗号システム200の処理の説明を行う。
(Elgamal暗号)
Elgamal暗号は、乗法準同型性を有する公開鍵暗号の一例である。Elgamal暗号の各アルゴリズムは次のように動作する。
鍵生成アルゴリズムは、まず、セキュリティパラメータκを入力として受け取る。次に、κビットの素数qをランダムに選び、位数がqである乗法群Gおよびその生成元gを選ぶ。次に、1以上q未満の整数xを一様ランダムに選択し,h=gとする。最後に、暗号化鍵ek=(κ,q,G,g,h)と、復号鍵dk=(ek,x)とを出力する。
暗号化アルゴリズムは、まず、暗号化鍵ek=(κ,q,G,g,h)およびメッセージmを入力として受け取る。次に、1以上q未満の整数rを一様ランダムに選択し、c=g、c=m・hとする。最後に、暗号文c=(c,c)を出力する。
復号アルゴリズムは、まず、復号鍵dk=(ek,x)および暗号文c=(c,c)を入力として受け取る。次に、m′=c/((c)を計算する。最後に、復号結果m′を出力する。
メッセージmの暗号文c=(c,c)=(g,m・h)に対し、Elgamal暗号の復号アルゴリズムにより、暗号文cをmに正しく復号できることを、次式によって確認できる。
m′=c/(c=(m・h)/(g=(m・gx・r)/(g=m
準同型演算アルゴリズムは、まず、暗号化鍵ek=(κ,q,G,g,h)および第一の暗号文c=(c1,a,c1,b)および第二の暗号文c=(c2,a,c2,b)を入力として受け取る。次に、c=c1,a・c2,a,c:=c1,b・c2,bを計算する。最後に、準同型演算結果c=(c,c)を出力する。
メッセージmの暗号文(c1,a=g,c1,b=m・h)およびメッセージmの暗号文(c2,a=g,c2,b=m・h)に対し、次の2式が成り立つ。
=g(r+s)
=(m・m)・h(r+s)
したがって、cはm・mの暗号文であり、Elgamal暗号は乗法準同型性を有する。
(本実施例)
第2の実施形態に係る実施例1は、Elgamal暗号を基礎とし、以下に説明するような修正を加える。以下では、図2から図7に記載の符号を参照しながら、準同型暗号システム200が実行する実施例の説明を行う。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、鍵生成装置110の鍵生成部112はκビットの素数qをランダムに選び、位数がqである乗法群Gおよびその生成元gを選ぶ。次に、1以上q未満の整数xを一様ランダムに選択し,h=gとする。次に、準同型演算鍵をhk=(κ,q,G)暗号化鍵ek=(κ,q,G,g,h)と、復号鍵dk=(ek,x)とする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
次に、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,q,G,g,h)を取得する(ステップB2)。
次に、暗号化部153は1以上q未満の整数rを一様ランダムに選択し、c=g、c=m・hとする(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した暗号文c=(c,c)を出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文cが入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,q,G,g,h,x)を取得する(ステップC2)。
次に、復号部163はm′=c/((c)を計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文c=(c1,a,c1,b)および第二の暗号文c=(c2,a,c2,b)暗号文が入力される(ステップD1)。
次に、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,q,G)を取得する(ステップD2)。
次に、準同型演算部173はc=c1,a・c2,a,c:=c1,b・c2,bを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果c=(c,c)を出力する(ステップD4)。
鍵検証装置280は、以下のような処理を行う。
まず、暗号文入力部281に検証対象の暗号文c=(c,c)が入力される(ステップE1)。
次に、検証部284は、c=1であったらresult=NG、そうでなければresult=OKとする(ステップE2)。
最後に、検証結果出力部285は、ステップE2で生成した検証結果resultを出力する(ステップE3)。
第2の実施形態に係る実施例1では、準同型演算鍵にはgおよびhが含まれないため、準同型演算鍵のみを用いると、メッセージmに対する暗号文c=g、c=m・hとして計算することができるのはr=0の場合の暗号文であるc=1、c=mのみである。そこで、鍵検証処理ではc=1を満たす暗号文であるかどうかを確認し、検証対象の暗号文c=(c,c)が、暗号化鍵に含まれるgおよびhを知らない攻撃者によって作られたものでないことを確認する。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。したがって、準同型演算の実行権限ではr=0の場合の暗号文以外の暗号文を生成できない。
また、第2の実施形態に係る実施例1は、第1の実施形態の場合と同様に、準同型演算鍵は、暗号化鍵の要素のうち、準同型演算に用いない要素を取り除くことで得られる。
[第2の実施形態に係る実施例2]
次に、Lifted-Elgamal暗号を基礎とした、本実施形態に係る準同型暗号システム200の処理の一例を説明する。Lifted-Elgamal暗号は、加法準同型性を有する公開鍵暗号の一例である。なお、準同型公開鍵暗号およびLifted-Elgamal暗号に関する事項は実施例1の場合と同様なので説明を省略する。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成装置110の鍵生成部112はκビットの素数qをランダムに選び、位数がqである乗法群Gおよびその生成元gを選ぶ。次に、1以上q未満の整数xを一様ランダムに選択し、h:=gとする。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、準同型演算鍵をhk=(κ,q,G,g)、暗号化鍵をek=(κ,q,G,g,h)、復号鍵をdk=(ek,x)とする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
次に、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,q,G,g,h)を取得する(ステップB2)。
次に、暗号化部153は1以上q未満の整数rを一様ランダムに選択し、c=g、c=g・hを計算する(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した(c,c)を暗号文として出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文c=(c,c)が入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,q,G,g,h,x)を取得する(ステップC2)。
次に、復号部163はM′=c/((c)を計算する。さらに、m′=Dlog(M′)を計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文c=(c1,a,c1,b)および第二の暗号文c=(c2,a,c2,b)が入力される(ステップD1)。
次に、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,q,G,g)を取得する(ステップD2)。
次に、準同型演算部173はc=c1,a・c2,aおよびc=c1,b・c2,bを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果c=(c,c)を出力する(ステップD4)。
鍵検証装置280は、以下のような処理を行う。
まず、暗号文入力部281に検証対象の暗号文c=(c,c)が入力される(ステップE1)。
次に、検証部284は、c=1であったらresult=NG、そうでなければresult=OKとする(ステップE2)。
最後に、検証結果出力部285は、ステップE2で生成した検証結果resultを出力する(ステップE3)。
第2の実施形態に係る実施例2では、準同型演算鍵にはhが含まれないため、準同型演算鍵のみを用いると、メッセージmに対する暗号文c=g、c=m・hとして計算することができるのはr=0の場合の暗号文であるc=1、c=mのみである。そこで、鍵検証処理ではc=1を満たす暗号文であるかどうかを確認し、検証対象の暗号文c=(c,c)が、暗号化鍵に含まれるhを知らない攻撃者によって作られたものでないことを確認する。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。したがって、準同型演算の実行権限ではr=0の場合の暗号文以外の暗号文を生成できない。
また、第2の実施形態に係る実施例2は、第1の実施形態の場合と同様に、準同型演算鍵は、暗号化鍵の要素のうち、準同型演算に用いない要素を取り除くことで得られる。
[第2の実施形態に係る実施例3]
次に、楕円Elgamal暗号を基礎とした、本実施形態に係る準同型暗号システム200の処理の一例を説明する。楕円Elgamal暗号は、加法準同型性を有する公開鍵暗号の一例である。以下では、楕円Elgamal暗号の説明をした後に、本実施形態に係る準同型暗号システム200の処理の説明を行う。
(楕円Elgamal暗号)
楕円Elgamal暗号は、加法準同型性を有する公開鍵暗号の一例である。楕円Elgamal暗号の各アルゴリズムは次のように動作する。
鍵生成アルゴリズムは、まず、セキュリティパラメータκを入力として受け取る。次に、κビットの素数qをランダムに選び、楕円曲線E上の位数がqである群の生成元Gを選ぶ。次に、1以上q未満の整数xを一様ランダムに選択し、P=x・Gとする。最後に、暗号化鍵ek=(κ,q,E,G,P)および復号鍵dk=(ek,x)を出力する。
暗号化アルゴリズムは、まず、暗号化鍵ek=(κ,q,G,g,h)およびメッセージmを入力として受け取る。次に、1以上q未満の整数rを一様ランダムに選択し、C:=r・G、C:=m+r・Pとする。最後に、暗号文c=(C,C)を出力する。
復号アルゴリズムは、まず、復号鍵dk=(ek,x)および暗号文c=(C,C)を入力として受け取る。次に、m′=C-x・Cを計算する。最後に、復号結果m′を出力する。
メッセージmの暗号文c=(C,C)=(r・G,m+r・P)に対し、楕円Elgamal暗号の復号アルゴリズムにより、暗号文cをmに正しく復号できることを、次式によって確認できる。
m′=C-x・C=(m+r・P)-x・(r・G)=m+r・(x・G)-x・(r・G)=m
準同型演算アルゴリズムは、まず、暗号化鍵ek=(κ,q,G,g,h)および第一の暗号文c=(C1,a,C1,b)および第二の暗号文c=(C2,a,C2,b)を入力として受け取る。次に、C=C1,a+C2,a,C=C1,b+C2,bを計算する。最後に、準同型演算結果c=(C,C)を出力する。
メッセージmの暗号文(C1,a=r・G,C1,b=m+r・P)およびメッセージmの暗号文(C2,a=s・G,C2,b=m+s・P)に対し、次の2式が成り立つ。
=(r+s)・G
=(m+m)+(r+s)・P
したがって、cはm+mの暗号文であり、楕円Elgamal暗号は加法準同型性を有する。
(本実施例)
第2の実施形態に係る実施例3は、楕円Elgamal暗号を基礎とし、以下に説明するような修正を加える。以下では、図2から図7に記載の符号を参照しながら、準同型暗号システム200が実行する実施例の説明を行う。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成装置110の鍵生成部112はκビットの素数qをランダムに選び、楕円曲線E上の位数がqである群の生成元Gを選ぶ。次に、1以上q未満の整数xを一様ランダムに選択し、P=x・Gとする。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、準同型演算鍵をhk=(κ,q,E)、暗号化鍵をek=(κ,q,E,G,P)、復号鍵をdk=(κ,q,E,G,P,x)とする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
次に、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,q,E,G,P)を取得する(ステップB2)。
次に、暗号化部153は1以上q未満の整数rを一様ランダムに選択し、C:=r・G、C:=m+r・Pとする(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した暗号文c=(C,C)を出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文cが入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,q,E,G,P,x)を取得する(ステップC2)。
次に、復号部163はm′=C-x・Cを計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文c=(C1,a,C1,b)および第二の暗号文c=(C2,a,C2,b)が入力される(ステップD1)。
次に、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,q,E)を取得する(ステップD2)。
次に、準同型演算部173はC=C1,a+C2,a,C=C1,b+C2,bを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果c=(C,C)を出力する(ステップD4)。
鍵検証装置280は、以下のような処理を行う。
まず、暗号文入力部281に検証対象の暗号文c=(C,C)が入力される(ステップE1)。
次に、検証部284は、C=0であったらresult=NG、そうでなければresult=OKとする(ステップE2)。
最後に、検証結果出力部285は、ステップE2で生成した検証結果resultを出力する(ステップE3)。
第2の実施形態に係る実施例3では、準同型演算鍵にはPが含まれないため、準同型演算鍵のみを用いると、メッセージmに対する暗号文C:=r・G、C:=m+r・Pとして計算することができるのはr=0の場合の暗号文であるc=0、c=mのみである。そこで、鍵検証処理ではc=0を満たす暗号文であるかどうかを確認し、検証対象の暗号文c=(c,c)が、暗号化鍵に含まれるPを知らない攻撃者によって作られたものでないことを確認する。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。したがって、準同型演算の実行権限ではr=0の場合の暗号文以外の暗号文を生成できない。
また、第2の実施形態に係る実施例3は、第1の実施形態の場合と同様に、準同型演算鍵は、暗号化鍵の要素のうち、準同型演算に用いない要素を取り除くことで得られる。
[第3の実施形態]
図8は、第3の実施形態に係る準同型暗号システム300の構成を示すブロック図である。図8に示されるように、準同型暗号システム300は、第1の実施形態に係る準同型暗号システム100の構成に加え、鍵検証装置380を備えている。したがって、以下の説明では、鍵生成装置110、準同型演算鍵記憶装置120、暗号化鍵記憶装置130、復号鍵記憶装置140、暗号化装置150、復号装置160、および準同型演算装置170の構成の説明は省略する。
鍵検証装置380は、暗号文の入力を受け付ける暗号文入力部381と、暗号文入力部381に入力された暗号文に対応するメッセージの入力を受け付けるメッセージ入力部382と、記憶されている復号鍵を取得する復号鍵取得部383と、暗号文がメッセージに対し、復号鍵取得部383が取得した暗号化鍵で生成された暗号文であるかどうかの検証結果を生成する検証部384と、検証結果を出力する検証結果出力部385とを有する。
鍵検証装置380は、次のように鍵検証処理を実行する。図9は鍵検証処理を説明するフロー図である。
まず、暗号文入力部381に検証対象の暗号文が入力され、メッセージ入力部382に検証対象の暗号文の復号結果であるメッセージが入力される(ステップF1)。
次に、復号鍵取得部383は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵を取得する(ステップF2)。
次に、検証部384は、ステップF1で受け取った暗号文が、ステップF2で取得した復号鍵に対応する暗号化鍵で暗号化されたものであるかを検証し、検証結果を生成する(ステップF3)。
最後に、検証結果出力部385は、ステップF3で生成した検証結果を出力する(ステップF4)。
ただし、以上は処理の例である。例えば、ステップF2がステップF1より先に実行されても構わない。
[第3の実施形態に係る実施例1]
次に、Okamoto-Uchiyama暗号を基礎とした、本実施形態に係る準同型暗号システム300の処理の一例を説明する。Okamoto-Uchiyama暗号は、加法準同型性を有する公開鍵暗号の一例である。なお、準同型公開鍵暗号およびOkamoto-Uchiyama暗号に関する事項は第1の実施形態の場合と同様なので説明を省略する。
鍵生成装置110と準同型演算鍵記憶装置120と暗号化鍵記憶装置130と復号鍵記憶装置140は、以下のような処理を行う。
まず、鍵生成装置110の公開パラメータ入力部111にセキュリティパラメータκが入力される(ステップA1)。
次に、鍵生成装置110の鍵生成部112はκビットの2つの素数p、qをランダムに選び、n=pqとする。次に、1以上n以下で、nと互いに素である(すなわちnとの最大公約数が1である)整数gをランダムに選ぶ。gp-1 mod p=1であったらgを選びなおす。次に、h=gp(p-1) mod nを計算する。
次に、鍵生成部112が、暗号鍵と復号鍵だけではなく、準同型演算鍵も生成する。具体的には、準同型演算鍵をhk=(κ,n,g)、暗号化鍵をek=(κ,n,g,h)、復号鍵をdk=(κ,n,g,h,p,q)とする(ステップA2)。
次に、鍵生成装置110の準同型演算鍵出力部113はステップA2で生成した準同型演算鍵hkを出力する(ステップA3)。出力された準同型演算鍵hkは、準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶される(ステップA4)。
次に、鍵生成装置110の暗号化鍵出力部114はステップA2で生成した暗号化鍵ekを出力する(ステップA5)。出力された暗号化鍵ekは、暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶される(ステップA6)。
最後に、鍵生成装置110の復号鍵出力部115はステップA2で生成した復号鍵dkを出力する(ステップA7)。出力された復号鍵dkは、復号鍵記憶装置140の復号鍵記憶部141に記憶される(ステップA8)。
暗号化装置150は、以下のような処理を行う。
まず、メッセージ入力部151に暗号化対象のメッセージmが入力される(ステップB1)。
次に、暗号化鍵取得部152は暗号化鍵記憶装置130の暗号化鍵記憶部131に記憶されている暗号化鍵ek=(κ,n,g,h)を取得する(ステップB2)。
次に、暗号化部153はn未満の整数rを一様ランダムに選択し、c=g・h mod nとする(ステップB3)。
最後に、暗号文出力部154はステップB3で生成した暗号文cを出力する(ステップB4)。
復号装置160は、以下のような処理を行う。
まず、暗号文入力部161に復号対象の暗号文cが入力される(ステップC1)。
次に、復号鍵取得部162は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,n,g,h,p,q)を取得する(ステップC2)。
次に、復号部163はc=cp-1 mod pとし、さらに、c=(c-1)/pとする。
次に、g=gp-1 mod pとし、さらに、g=(g-1)/pとする。
次に、m′=c/g mod pを計算する(ステップC3)。
最後に、復号結果出力部164は、ステップC3で生成した復号結果m′を出力する(ステップC4)。
準同型演算装置170は、以下のような処理を行う。
まず、暗号文入力部171に準同型演算対象の第一の暗号文cおよび第二の暗号文cが入力される(ステップD1)。
次に、準同型演算鍵取得部172は準同型演算鍵記憶装置120の準同型演算鍵記憶部121に記憶されている準同型演算鍵hk=(κ,n,g)を取得する(ステップD2)。
次に、準同型演算部173はc=c・c mod nを計算する(ステップD3)。
最後に、準同型演算結果出力部174はステップD3で生成した準同型演算結果cを出力する(ステップD4)。
鍵検証装置380は、以下のような処理を行う。
まず、暗号文入力部381に検証対象の暗号文cが入力され、メッセージ入力部382に検証対象の暗号文の復号結果であるメッセージmが入力される(ステップF1)。
次に、復号鍵取得部383は復号鍵記憶装置140の復号鍵記憶部141に記憶されている復号鍵dk=(κ,n,g,h,p,q)を取得する(ステップF2)。
次に、検証部384は、c′=c/gおよびc′′=c′(q-1)/2 mod nを計算する。
次に、c′′=1であったらresult=OK、そうでなければresult=NGとする(ステップF3)。
最後に、検証結果出力部385は、ステップF3で生成した検証結果resultを出力する(ステップF4)。
なお、鍵生成処理のステップA2におけるhの計算方法および鍵検証処理のステップF3におけるc′′の計算方法は異なっても構わない。xy mod λ(n)=1(ただし、λはカーマイケル関数を表す)を満たすxおよびyに対し、h=g mod n、c′′=c′ mod nとなっていればよい。例えば、h=gp(p-1)/2 mod n、h=gp(q-1) mod n,h=gp(q-1)/2 mod nとした場合、それぞれc′′=c′(q-1) mod n、c′′=c′(p-1)/2 mod n、c′′=c′(p-1) mod nとすることができる。
第3の実施形態に係る実施例1では、準同型演算鍵にはhが含まれないため、準同型演算鍵のみを用いると、メッセージmに対する暗号文c=g・h mod nとして計算することができるのはh=gp(p-1) mod nの代わりにh′=g mod nを用いて計算した暗号文c=g・h′ mod nである。
ここで、
c′=c/g=h mod n=gp(p-1)r mod n
c′′=c′(q-1)/2 mod n=gp(p-1)(q-1)r/2 mod n=1
となるが、h′を用いて計算された暗号文は
c′=c/g=h′ mod n=gppqr mod n
c′′=c′(q-1)/2 mod n=gppq(q-1)r/2 mod n≠1
となる。
そこで、第3の実施形態に係る実施例1の鍵検証処理では、c′′=1となるかどうかを確認している。これにより、暗号化鍵に含まれるが準同型演算鍵に含まれない要素を知らない攻撃者によって作られたものでないことを確認する。本実施例は暗号化の実行権限と準同型演算の実行権限とが異なり、準同型演算鍵の権限が暗号化鍵よりも弱い。したがって、準同型演算の実行権限ではh=gp(p-1) mod nの代わりにh′=g mod nを用いて計算した場合の暗号文以外の暗号文を生成できない。
また、第3の実施形態に係る実施例1は、第1の実施形態の場合と同様に、準同型演算鍵は、暗号化鍵の要素のうち、準同型演算に用いない要素を取り除くことで得られる。
[第4の実施形態]
図10は、第4の実施形態に係る準同型暗号システム400の構成を示すブロック図である。第4の実施形態に係る準同型暗号システム400は、先述の第1の実施形態に係る準同型暗号システム100の構成を個人認証に応用したものである。したがって、第1の実施形態に記載の各構成は、同一の符号を付すことによって説明を省略する。
図10に示すように、準同型暗号システム400は、認証サーバ410と認証端末420を備えるサーバクライアントシステムである。
認証サーバ410は、鍵生成装置110と暗号化鍵記憶装置130と復号鍵記憶装置140と復号装置160とを備えている。一方、認証端末420は、準同型演算鍵記憶装置120と暗号化装置150と準同型演算装置170と登録認証情報記憶装置190とを備えている。なお、登録認証情報記憶装置190は、暗号化装置150で暗号化されたと登録認証情報を記憶しておくための記憶装置である。
上記構成の準同型暗号システム400は、以下のように個人認証を行う。
既述したように、鍵生成装置110は、平文から暗号文を生成する権限に係る暗号化鍵と、暗号化されたまま暗号文の準同型演算を実行する権限に係る準同型演算鍵と、暗号文を復号する権限に係る復号鍵とを生成する。生成された暗号化鍵と復号鍵は、それぞれ認証サーバ410における暗号化鍵記憶装置130と復号鍵記憶装置140とに記憶される。一方、生成された準同型演算鍵は、認証端末における準同型演算鍵記憶装置120に記憶される。
認証情報の登録時には、ユーザが登録認証情報を認証端末420の暗号化装置150に入力する。ここで、認証情報は生体情報やパスワード等の情報である。すると、認証端末420の暗号化装置150は、認証サーバ410の暗号化鍵記憶装置130から暗号化鍵を取得し、この暗号化鍵を用いて登録認証情報を暗号化する。暗号化された登録認証情報は、登録認証情報記憶装置190に記憶される。
認証処理の実行時には、ユーザが入力認証情報を認証端末420の準同型演算装置170に入力する。すると、認証端末420の準同型演算装置170は、入力された入力認証情報と記憶している登録認証情報との間で認証処理を行う。この時、準同型演算装置170は、登録認証情報に対して準同型演算を行うことによって、暗号化されたままで認証処理を行う。準同型演算装置170が行う準同型演算には、準同型演算鍵記憶装置120に記憶されている準同型演算鍵が用いられる。
準同型演算装置170が行う認証処理は、暗号化されたままで行われるので、認証結果も暗号文である。認証結果の暗号文は、認証サーバ410の復号装置160に送信され、復号装置160が復号鍵を用いて認証結果の暗号文を復号する。これにより、認証サーバは、認証端末420に入力された入力認証情報が正当なものであるか否かを判定する。
上記構成の個人認証では、暗号化鍵が認証端末420に保持されないので、悪意を持つ人が認証端末420を手に入れた場合でも自身の認証情報を暗号化することができない。したがって、上記構成の個人認証は、なりすましに対する脆弱性が低下する。
なお、上記構成は本発明の応用の一例であり、第1の実施形態だけではなく、第2の実施形態や第3の実施形態のように、鍵検証装置280,380を備える構成とすることもできる。また、暗号化装置150を認証端末420から分離して別個に備える構成とすることもできる。暗号化鍵と準同型演算鍵を別個に管理し、認証処理の実行時には準同型演算鍵のみを用いるような構成であれば、本発明を適切に応用することが可能である。
[第5の実施形態]
図11は、第5の実施形態に係る準同型暗号システム500の構成を示すブロック図である。第5の実施形態に係る準同型暗号システム500は、先述の第1の実施形態に係る準同型暗号システム100の構成を秘匿計算に応用したものである。したがって、第1の実施形態に記載の各構成は、同一の符号を付すことによって説明を省略する。
図11に示すように、準同型暗号システム500は、鍵生成装置110とデータ提供者装置510とデータ分析者装置520とデータ利用者装置530とを備えている。
データ提供者装置510は、暗号化鍵記憶装置130と暗号化装置150を備えている。データ分析者装置520は、準同型演算鍵記憶装置120と準同型演算装置170を備えている。データ利用者装置530は、復号鍵記憶装置140と復号装置160とを備えている。
上記構成の準同型暗号システム400は、以下のように秘匿計算を行う。
既述したように、鍵生成装置110は、平文から暗号文を生成する権限に係る暗号化鍵と、暗号化されたまま暗号文の準同型演算を実行する権限に係る準同型演算鍵と、暗号文を復号する権限に係る復号鍵とを生成する。生成された暗号化鍵と準同型演算鍵と復号鍵は、それぞれ、データ提供者装置510の暗号化鍵記憶装置130とデータ分析者装置520の準同型演算鍵記憶装置120とデータ利用者装置530の復号鍵記憶装置140とに記憶される。
秘匿計算では最初に、各ユーザが提供するデータ1からデータnをデータ提供者装置510に入力する。ここで、各ユーザが提供するデータとは、例えば投票得点やプライバシー情報など、他人には知られたくない情報とすることができる。また、データ提供者装置510を複数備え、各ユーザが個別のデータ提供者装置510にデータを入力するとしてもよい。
そして、データ提供者装置510の暗号化装置150が暗号化鍵記憶装置130に記憶されている暗号化鍵を用いて、データ1からデータnを暗号化する。暗号化されたデータ1からデータnは、データ分析者装置520に送信される。
データ分析者装置520では、準同型演算装置170が暗号化されたデータ1からデータnを暗号化されたまま分析する。この分析は、例えば投票得点の合計やプライバシー情報の平均など各種の分析を行うことが可能である。この分析のための準同型演算には、データ分析者装置520の準同型演算鍵記憶装置120に記憶されている準同型演算鍵が用いられる。
準同型演算装置170が行う分析は、暗号化されたままで行われるので、分析結果も暗号文である。分析結果の暗号文は、データ利用者装置530の復号装置160に送信され、復号装置160が復号鍵を用いて分析結果の暗号文を復号する。これにより、データ利用者装置530は、各ユーザが提供するデータ1からデータnに対する分析結果を知得する。
上記構成の秘匿計算では、各ユーザが提供するデータ1からデータnを暗号化したまま分析するので、ユーザが提供する情報の秘密が保持される。その上、データ分析者装置520には暗号化鍵が保持されていないので、データ分析者装置520を悪意の第3者が使用して、虚偽のデータを暗号化して分析結果に追加するような改竄をすることができない。したがって、データ利用者装置530で知得される分析結果の信頼性が高まる。
なお、上記構成は本発明の応用の一例であり、第1の実施形態だけではなく、第2の実施形態や第3の実施形態のように、鍵検証装置280,380を備える構成とすることもできる。また、本例では鍵生成装置110を分離して別個に備える構成としているが、データ利用者装置530に鍵生成装置110を備える構成とすることもできる。
なお、引用した上記の特許文献及び非特許文献等の各開示は、本書に引用をもって織り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。例えば、上記開示と同様の手法が、上述した準同型公開鍵暗号方式以外の準同型公開鍵暗号方式(加法準同型公開鍵暗号方式、乗法準同型公開鍵暗号方式、Somewhat準同型公開鍵暗号、および完全準同型公開鍵暗号を含む)にも適用可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(少なくとも部分的な非選択を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、修正を含むことはもちろんである。特に、本書に記載した数値範囲について、当該範囲内に含まれる任意の数値ないし小範囲が別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
本発明は、個人認証や秘匿計算を行うシステムに好適に適用される。
100 準同型暗号システム
110 鍵生成装置
111 公開パラメータ入力部
112 鍵生成部
113 準同型演算鍵出力部
114 暗号化鍵出力部
115 復号鍵出力部
120 準同型演算鍵記憶装置
121 準同型演算鍵記憶部
130 暗号化鍵記憶装置
131 暗号化鍵記憶部
140 復号鍵記憶装置
141 復号鍵記憶部
150 暗号化装置
151 メッセージ入力部
152 暗号化鍵取得部
153 暗号化部
154 暗号文出力部
160 復号装置
161 暗号文入力部
162 復号鍵取得部
163 復号部
164 復号結果出力部
170 準同型演算装置
171 暗号文入力部
172 準同型演算鍵取得部
173 準同型演算部
174 準同型演算結果出力部
200 準同型暗号システム
280 鍵検証装置
281 暗号文入力部
284 検証部
285 検証結果出力部
300 準同型暗号システム
380 鍵検証装置
381 暗号文入力部
382 メッセージ入力部
383 復号鍵取得部
384 検証部
385 検証結果出力部
400 準同型暗号システム
410 認証サーバ
420 認証端末
500 準同型暗号システム
510 データ提供者装置
520 データ分析者装置
530 データ利用者装置

Claims (9)

  1. 平文から暗号文を生成する権限に係る暗号化鍵と、暗号文を復号する権限に係る復号鍵とを公開鍵暗号方式を用いて生成し、前記暗号化鍵の要素のうち、準同型演算に用いない要素を取り除くことで、暗号化されたまま暗号文の準同型演算を実行する権限に係準同型演算鍵生成する鍵生成装置と、
    前記暗号化鍵を用いて平文から暗号文を生成する暗号化装置と、
    前記準同型演算鍵を用いて前記暗号文に対する準同型演算を実行する準同型演算装置と、
    前記復号鍵を用いて暗号文を復号する復号装置と、
    を備えることを特徴とする暗号システム。
  2. 入力された暗号文が前記暗号化鍵を用いて生成されたか否かを検証する鍵検証装置をさらに備える請求項に記載の暗号システム。
  3. 前記鍵検証装置は、前記復号鍵を用いて前記検証をすることを特徴とする請求項に記載の暗号システム。
  4. 前記平文は被登録認証情報であり、
    前記準同型演算装置は、入力された認証情報と前記暗号化された被登録認証情報とに対する準同型演算によって、前記認証情報と前記被登録認証情報との間の認証結果の暗号文を生成し、
    前記復号装置は、前記認証結果の暗号文を復号することで、前記入力された認証情報の認証結果を取得する、
    ことを特徴とする請求項1から請求項のいずれか1項に記載の暗号システム。
  5. 前記暗号化装置は、複数の平文から複数の暗号文を生成し、
    前記準同型演算装置は、入力された前記複数の暗号文に対する準同型演算によって、前記複数の平文に対する分析結果の暗号文を生成し、
    前記復号装置は、前記分析結果の暗号文を復号することで、前記複数の平文に対する分析結果を取得する、
    ことを特徴とする請求項1から請求項のいずれか1項に記載の暗号システム。
  6. 公開鍵暗号方式を用いて暗号化鍵と復号鍵のペアを生成し、
    前記暗号化鍵を用いて生成された暗号文を暗号化されたまま準同型演算を実行するための準同型演算鍵を、前記暗号化鍵の要素のうち、前記準同型演算に用いない要素を取り除くことで生成する、
    ことを特徴とする鍵生成装置。
  7. 平文から暗号文を生成する権限に係る暗号化鍵と、暗号化されたまま暗号文の準同型演算を実行する権限に係る、前記暗号化鍵よりも権限が弱い準同型演算鍵と、暗号文を復号する権限に係る復号鍵とを鍵生成装置が生成する鍵生成方法であって、
    前記鍵生成装置が公開鍵暗号方式を用いて前記暗号化鍵と前記復号鍵のペアを生成し、
    前記鍵生成装置が前記暗号化鍵を用いて生成された暗号文を暗号化されたまま準同型演算を実行するための準同型演算鍵を、前記暗号化鍵の要素のうち、前記準同型演算に用いない要素を取り除くことで生成する、
    ことを特徴とする鍵生成方法。
  8. 平文から暗号文を生成する権限に係る暗号化鍵と、暗号化されたまま暗号文の準同型演算を実行する権限に係る準同型演算鍵と、暗号文を復号する権限に係る復号鍵とを生成する鍵生成装置において実行される鍵生成プログラムであって、
    前記鍵生成装置が公開鍵暗号方式を用いて前記暗号化鍵と前記復号鍵のペアを生成するステップと、
    前記鍵生成装置が前記暗号化鍵の要素のうち、前記準同型演算に用いない要素を取り除くことで前記準同型演算鍵を生成するステップと、
    を含むことを特徴とする鍵生成プログラム。
  9. 公開鍵暗号方式を用いて生成された暗号化鍵と復号鍵のペアのうち、前記暗号化鍵を用いて生成された暗号文の入力を受け付ける暗号文入力部と、
    前記暗号化鍵の要素のうち、準同型演算に用いない要素を取り除くことで生成した前記暗号文を暗号化されたまま準同型演算を実行する権限に係準同型演算鍵を取得する準同型演算鍵取得部と、
    前記準同型演算鍵を用いて前記暗号文を暗号化されたまま前記準同型演算を実行する準同型演算部と、
    を備えることを特徴とする準同型演算装置。
JP2021501378A 2019-02-25 2019-02-25 暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置 Active JP7276423B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/006969 WO2020174515A1 (ja) 2019-02-25 2019-02-25 暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置

Publications (2)

Publication Number Publication Date
JPWO2020174515A1 JPWO2020174515A1 (ja) 2021-12-16
JP7276423B2 true JP7276423B2 (ja) 2023-05-18

Family

ID=72239449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021501378A Active JP7276423B2 (ja) 2019-02-25 2019-02-25 暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置

Country Status (3)

Country Link
US (1) US11849019B2 (ja)
JP (1) JP7276423B2 (ja)
WO (1) WO2020174515A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11374742B2 (en) * 2017-12-28 2022-06-28 Mitsubishi Electric Corporation Conversion key generation device, ciphertext conversion device, privacy-preserving information processing system, conversion key generation method, ciphertext conversion method, and computer

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011107407A (ja) 2009-11-17 2011-06-02 Nec Corp 準同型暗号システム、準同型暗号方法、プログラム
JP2016114692A (ja) 2014-12-12 2016-06-23 富士通株式会社 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2017126001A1 (ja) 2016-01-18 2017-07-27 三菱電機株式会社 暗号化装置、暗号文変換装置、暗号化プログラム、暗号文変換プログラム、暗号化方法及び暗号文変換方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3402441B2 (ja) 1997-12-17 2003-05-06 日本電信電話株式会社 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体
FR2788650B1 (fr) 1999-01-14 2001-02-16 Gemplus Card Int Procede cryptographique a cles publique et privee
US9077539B2 (en) * 2011-03-09 2015-07-07 Microsoft Technology Licensing, Llc Server-aided multi-party protocols
EP3114602B1 (en) 2014-03-07 2022-01-12 Nokia Technologies Oy Method and apparatus for verifying processed data
JP2016131335A (ja) * 2015-01-14 2016-07-21 富士通株式会社 情報処理方法、情報処理プログラムおよび情報処理装置
JP6266186B2 (ja) 2015-10-08 2018-01-24 三菱電機株式会社 暗号システム、準同型署名方法及び準同型署名プログラム
US10075289B2 (en) * 2015-11-05 2018-09-11 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized parameter selection
WO2017170780A1 (ja) 2016-03-31 2017-10-05 日本電気株式会社 暗号文照合システム、ノード装置、暗号文照合方法、およびプログラム
JP6522263B2 (ja) * 2017-01-18 2019-05-29 三菱電機株式会社 準同型演算装置、暗号システム及び準同型演算プログラム
US11374742B2 (en) * 2017-12-28 2022-06-28 Mitsubishi Electric Corporation Conversion key generation device, ciphertext conversion device, privacy-preserving information processing system, conversion key generation method, ciphertext conversion method, and computer
KR102040120B1 (ko) * 2018-07-27 2019-11-05 주식회사 크립토랩 근사 암호화된 암호문에 대한 연산을 수행하는 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011107407A (ja) 2009-11-17 2011-06-02 Nec Corp 準同型暗号システム、準同型暗号方法、プログラム
JP2016114692A (ja) 2014-12-12 2016-06-23 富士通株式会社 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2017126001A1 (ja) 2016-01-18 2017-07-27 三菱電機株式会社 暗号化装置、暗号文変換装置、暗号化プログラム、暗号文変換プログラム、暗号化方法及び暗号文変換方法

Also Published As

Publication number Publication date
US11849019B2 (en) 2023-12-19
WO2020174515A1 (ja) 2020-09-03
JPWO2020174515A1 (ja) 2021-12-16
US20220166599A1 (en) 2022-05-26

Similar Documents

Publication Publication Date Title
CN107634836B (zh) 一种sm2数字签名生成方法及系统
US10027654B2 (en) Method for authenticating a client device to a server using a secret element
Amin et al. Design and analysis of bilinear pairing based mutual authentication and key agreement protocol usable in multi-server environment
JP5201136B2 (ja) 匿名認証システムおよび匿名認証方法
EP1964305B1 (en) Secure threshold decryption protocol computation
US9509492B2 (en) Authentication device, output device, verification device and input device
EP2278750A1 (en) Method for secure evaluation of a function applied to encrypted signals
US8868911B2 (en) Method for key generation, member authentication, and communication security in dynamic group
EP2792098B1 (en) Group encryption methods and devices
WO2014185450A1 (ja) 照合システム、ノード、照合方法およびプログラム
WO2014185447A1 (ja) 照合システム、ノード、照合方法およびプログラム
Odelu et al. A secure and efficient ECC‐based user anonymity preserving single sign‐on scheme for distributed computer networks
JP7294431B2 (ja) 情報照合システム、クライアント端末、サーバ、情報照合方法、及び情報照合プログラム
Shakiba Security analysis for chaotic maps-based mutual authentication and key agreement using smart cards for wireless networks
CN113132104A (zh) 一种主动安全的ecdsa数字签名两方生成方法
Shankar et al. Improved Multisignature Scheme for Authenticity of Digital Document in Digital Forensics Using Edward-Curve Digital Signature Algorithm
JP7276423B2 (ja) 暗号システム、鍵生成装置、鍵生成方法、鍵生成プログラム、および準同型演算装置
Mehta et al. Group authentication using paillier threshold cryptography
Byun PDAKE: a provably secure PUF-based device authenticated key exchange in cloud setting
Wu et al. A publicly verifiable PCAE scheme for confidential applications with proxy delegation
Surya et al. Single sign on mechanism using attribute based encryption in distributed computer networks
Doegar et al. On-demand digital signature schemes using Multivariate Polynomial systems
WO2023032031A1 (ja) 認証システム、被認証者装置、認証者装置、認証方法、および認証プログラム
Xu An efficient HPRA-based multiclient verifiable computation: transform and instantiation
CN115442102B (zh) 一种基于sm9算法的等式测试方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230417

R151 Written notification of patent or utility model registration

Ref document number: 7276423

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151