JP6719339B2 - 暗号システム、暗号方法及び暗号プログラム - Google Patents

暗号システム、暗号方法及び暗号プログラム Download PDF

Info

Publication number
JP6719339B2
JP6719339B2 JP2016168468A JP2016168468A JP6719339B2 JP 6719339 B2 JP6719339 B2 JP 6719339B2 JP 2016168468 A JP2016168468 A JP 2016168468A JP 2016168468 A JP2016168468 A JP 2016168468A JP 6719339 B2 JP6719339 B2 JP 6719339B2
Authority
JP
Japan
Prior art keywords
user
master
key
data
public key
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
JP2016168468A
Other languages
English (en)
Other versions
JP2018036418A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2016168468A priority Critical patent/JP6719339B2/ja
Priority to CN201780051797.XA priority patent/CN109643504B/zh
Priority to US16/327,107 priority patent/US20190190713A1/en
Priority to PCT/JP2017/028614 priority patent/WO2018043049A1/ja
Publication of JP2018036418A publication Critical patent/JP2018036418A/ja
Application granted granted Critical
Publication of JP6719339B2 publication Critical patent/JP6719339B2/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/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/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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
    • 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/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves

Description

本発明は、暗号システム、暗号方法及び暗号プログラムに関する。特に、準同型技術を用いて暗号化データを復号することなく情報処理する暗号システム、暗号方法及び暗号プログラムに関する。
準同型暗号とは、データを暗号化したまま情報処理できる暗号技術である。具体的には、暗号文同士を特殊な演算を施すことによって、各暗号文の中身の平文の和の暗号文や積の暗号文、またそれらの演算を組み合わせた演算結果の暗号文を、平文を知ることなく公開情報のみを用いて生成できる暗号技術である。例えば、このような準同型暗号技術として、特許文献1〜2、また非特許文献1〜7などがある。
近年、クラウドサービス等の普及により、インターネット上でデータの管理や処理が可能となった。しかし、インターネット上でのデータ管理や処理には、データ管理の委託先であるクラウドなどのサーバがコンピュータウィルス等のマルウェアに感染することや、サーバの管理者が不正を働くことによって、預けたデータが外部に漏洩する危険性がある。もしサーバに預けたデータが個人情報や企業機密データであった場合には、この漏洩は非常に問題である。
このようなセキュリティの脅威を回避する方法として暗号技術があるが、単純にデータを暗号化してサーバに保管すると、データの処理が困難となるといった問題が発生する。このような問題を回避するため、よくある方法として、サーバ上に保管された暗号化データを一旦復号してからデータ処理を行うといった方法がある。しかし、この方法はデータがサーバ内で一定期間平文に戻ってしまい、その瞬間を攻撃されて情報漏洩する可能性があるため、対策として十分とはいえない。このような問題を解決できる暗号技術として、データを暗号化したまま演算できる「準同型暗号技術」が知られており、具体的な手法が近年多く開示されている。
なお、準同型暗号技術は大まかに分けて、良く知られたRSA暗号方式や非特許文献1、2のように、加算や乗算のみ実行可能な「群準同型暗号」、非特許文献3、4のように、加算と乗算はどちらも実行できるものの演算の実行回数に制限がある「Somewhat準同型暗号」、非特許文献5,6のように、加算や乗算どちらも実行回数に制限なく演算できる「完全準同型暗号」の3種類がある。
国際公開第2012/169153号 特開2015−184490号公報
P.Paillier,"Public−Key Cryptosystems Based on Composite Degree Residuosity Classes",Eurocrypt 1999,Lecture Notes in Computer Science 1592,Springer. E.Bresson,D.Catalano,and D.Pointcheval,"A Simple Public−Key Cryptosystems with a Double Trapdoor Decryption Mechanism and its Applications",Asiacrypt 2003,Lecture Notes in Computer Science 2894,Springer. D.Boneh,E−J.Goh,and K.Nissim,"Evaluating 2−DNF Formulas on Ciphertexts",TCC 2005, Lecture Notes in Computer Science 3378,Springer. D.Catalano and D.Fiore,"Boosting Linearly−Homomorphic Encryption to Evaluate Degree−2 Functions on Encrypted Data",IACR Cryptology ePrint Archive:Report 2014/813. C.Gentry,"Fully Homomorphic Encryption Using Ideal Lattices",STOC 2009,ACM. C.Gentry,A.Sahai,and B.Waters,"Homomorphic Encryption from Learning with Errors:Conceptually−Simpler,Asymptotically−Faster,Attribute−Based",Crypto 2013, Lecture Notes in Computer Science 8042,Springer. D.M.Freeman,"Converting Pairing−Based Cryptosystems from Composite−Order Groups to Prime−Order Groups",Eurocrypto 2010, Lecture Notes in Computer Science 6110,Springer.
公開鍵暗号をベースとした既存の準同型暗号技術の多くは、公開鍵と秘密鍵が1対1に対応しているため、1つの暗号文に対して1人のユーザしか復号できないような構造となっている。つまり、同じデータをn人の異なるユーザと共有する場合は、各ユーザの公開鍵を使ってn個の暗号文を生成しなくてはならず、保管コストの課題がある。
一方、このような課題を考慮して設計された準同型暗号技術が、特許文献1、2や、非特許文献2、6などで開示されている。しかし、これらの技術には未だ以下のような課題ある。
非特許文献2では、2種類の秘密鍵を作れる技術が開示されている。具体的には、通常の公開鍵・秘密鍵のペアに加えて、どのような暗号文も復号できる秘密鍵(以降、マスタ秘密鍵と呼ぶ)を生成できる。言い換えると、一つの暗号文に対して、二種類の秘密鍵を使って復号することが可能である。しかし、非特許文献2で開示された技術は、加法のみ実行できる群準同型暗号技術であり、加法だけの演算では達成できる処理が限られてしまうため、アプリケーションの観点から好ましくない。すなわち、非特許文献2で開示された技術は準同型性の課題がある。
特許文献1では、再暗号化技術を用いて保管コストを削減する技術が開示されている。しかし、本文献で開示された技術も、加法のみ実行できる群準同型暗号技術であり、加法だけの演算では達成できる処理が限られてしまうため、やはりアプリケーションの観点から好ましくない。すなわち、特許文献1で開示された技術は非特許文献2と同様に準同型性の課題がある。
非特許文献6では、多種類の秘密鍵を生成できる方式が開示されているのみならず、加法も乗算も実行できる完全準同型暗号技術が開示されている。また、非特許文献2とは異なり、1つの暗号文に対して復号できる権限を柔軟に設定できることや、暗号化したまま様々なデータ処理が実行できる。しかし、本文献で開示された技術は格子暗号と呼ばれる技術をベースとしており、この技術は暗号化の処理コスト、暗号文のサイズ、鍵サイズがRSA暗号などの良く知られた公開鍵暗号技術と比べて非常に大きく、効率面で好ましくない。すなわち、非特許文献6で開示された技術は、実用的なコストの観点で課題がある。
特許文献2では、暗号化された補助情報と再暗号化技術を用いて保管コストを削減する技術が開示されている。しかし、本文献で開示された技術も、格子暗号を用いた技術をベースとしており、効率面で好ましくない。すなわち、特許文献2で開示された技術は非特許文献6と同様に実用的なコストの観点で課題がある。
また、非特許文献2を除く従来の技術では、マスタ公開鍵とマスタ秘密鍵との両方を用いて、ユーザ公開鍵とユーザ秘密鍵を生成しているので、より運用コストが高くなるという課題もあった。
本発明は、運用コスト及び保管コストを抑えつつ、Somewhat準同型暗号や完全準同型暗号のように高い準同型性を持ち、かつ効率的に処理できる準同型暗号技術を提供することを目的とする。
本発明に係る暗号システムは、
第1のユーザの公開鍵及び秘密鍵をマスタ公開鍵及びマスタ秘密鍵として生成するマスタ鍵生成装置と、
前記マスタ公開鍵を用いて、第2のユーザの公開鍵及び秘密鍵をユーザ公開鍵及びユーザ秘密鍵として生成するユーザ鍵生成装置と、
前記ユーザ公開鍵により暗号化された暗号化データを保管するデータ保管部と、データを用いた演算の手順を演算手順として取得し、前記演算手順に用いられるデータが暗号化された暗号化データを前記データ保管部から選択し、前記演算手順に基づいて前記暗号化データに対して準同型演算を行い、準同型演算の演算結果を暗号化演算結果として出力する演算部とを備えた管理装置と、
前記暗号化演算結果を取得し、取得した前記暗号化演算結果を前記マスタ秘密鍵で復号するマスタ復号装置とを備えた。
本発明に係る暗号装置では、ユーザ鍵生成装置は、マスタ秘密鍵を用いずに、マスタ公開鍵のみを用いて、ユーザ公開鍵及びユーザ秘密鍵を生成する。また、管理装置の演算部は、データを用いた演算の手順を演算手順として取得し、演算手順に用いられるデータが暗号化された暗号化データをデータ保管部から選択し、演算手順に基づいて暗号化データに対して準同型演算を行い、暗号化演算結果を出力する。そして、マスタ復号装置は、暗号化演算結果を取得し、暗号化演算結果をマスタ秘密鍵で復号する。よって、運用コスト及び保管コストを抑えつつ、効率的に処理できる暗号システムを提供することができる。
実施の形態1に係る暗号システム100の構成図。 実施の形態1に係るマスタ鍵生成装置200の構成図。 実施の形態1に係るユーザ鍵生成装置300の構成図。 実施の形態1に係る暗号化装置400の構成図。 実施の形態1に係るマスタ復号装置500の構成図。 実施の形態1に係るユーザ復号装置600の構成図。 実施の形態1に係る管理装置700の構成図。 実施の形態1に係る暗号システム100のマスタ鍵ペア生成および保管処理を示すフローチャート。 実施の形態1に係る暗号システム100のユーザ鍵ペア生成および保管処理を示すフローチャート。 実施の形態1に係る暗号システム100のデータ暗号化および保管処理を示すフローチャート。 実施の形態1に係る暗号システム100のマスタ復号処理S30を示すフローチャート。 実施の形態1に係る暗号システム100のユーザ向けのデータ復号処理を示すフローチャート。 実施の形態1に係る暗号システム100の演算処理S50および演算結果復号処理を示すフローチャート。 実施の形態1に係る暗号システム100の演算処理S50および演算結果復号処理を示すフローチャート。 実施の形態1の変形例に係るマスタ鍵生成装置200の構成図。 実施の形態1の変形例に係るユーザ鍵生成装置300の構成図。 実施の形態1の変形例に係る暗号化装置400の構成図。 実施の形態1の変形例に係るマスタ復号装置500の構成図。 実施の形態1の変形例に係るユーザ復号装置600の構成図。 実施の形態1の変形例に係る管理装置700の構成図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係る暗号システム100の構成について説明する。
本実施の形態では、加算が任意回、乗算が1回実行可能なSomewhat準同型暗号技術を開示する。
図1に示すように、暗号システム100は、マスタ鍵生成装置200と、ユーザ鍵生成装置300と、暗号化装置400と、マスタ復号装置500と、ユーザ復号装置600と、管理装置700とを備える。暗号システム100は、複数のマスタ鍵生成装置200を備えていてもよい。暗号システム100は、複数のユーザ鍵生成装置300を備えていてもよい。暗号システム100は、複数の暗号化装置400を備えていてもよい。暗号システム100は、複数のマスタ復号装置500を備えていてもよい。暗号システム100は、複数のユーザ復号装置600を備えていてもよい。暗号システム100は、複数の管理装置700を備えていてもよい。
図1では、暗号システム100は、マスタ鍵生成装置200と、ユーザ鍵生成装置300、暗号化装置400と、マスタ復号装置500と、ユーザ復号装置600と、管理装置700とそれぞれインターネット101を経由して接続される。しかし、暗号システム100は、各装置がインターネット101を経由して接続されず、同じ企業内に敷設されたLAN(Local・Area・Network)内に設置されていてもよい。
インターネット101は、マスタ鍵生成装置200と、ユーザ鍵生成装置300と、暗号化装置400と、マスタ復号装置500と、ユーザ復号装置600と、管理装置700とを接続する通信路である。インターネット101は、ネットワークの例である。インターネット101の代わりに、他の種類のネットワークが用いられてもよい。
マスタ鍵生成装置200は、本システムの管理者の公開鍵及び秘密鍵をマスタ公開鍵及びマスタ秘密鍵として生成する。マスタ鍵生成装置200は、本システムの管理者用の暗号化や復号に利用するマスタ公開鍵とマスタ秘密鍵のペア(以降、マスタ鍵ペアと呼ぶ)を生成し、インターネット101を介して、マスタ公開鍵をユーザ鍵生成装置300、暗号化装置400と、管理装置700とへ送信する装置である。また、マスタ鍵生成装置200は、インターネット101を介して、マスタ鍵ペアをマスタ復号装置500へ送信する装置である。なお、このマスタ公開鍵やマスタ鍵ペアは、インターネット101を介さず、記録媒体や郵送などで直接的に送信してもよい。
ユーザ鍵生成装置300は、マスタ公開鍵を用いて、本システムのユーザの公開鍵及び秘密鍵をユーザ公開鍵及びユーザ秘密鍵として生成する。ユーザ鍵生成装置300は、本システムのユーザ用の暗号化や復号に利用するユーザ公開鍵とユーザ秘密鍵のペア(以降、ユーザ鍵ペアと呼ぶ)を生成し、インターネット101を介して、ユーザ公開鍵を暗号化装置400と、管理装置700とへ送信する装置である。また、ユーザ鍵生成装置300は、インターネット101を介して、ユーザ鍵ペアをユーザ復号装置600へ送信する装置である。なお、このユーザ公開鍵やユーザ鍵ペアは、インターネット101を介さず、記録媒体や郵送などで直接的に送信してもよい。
ここで、暗号システム100の管理者とは、すべてのユーザの暗号文を復号できる能力を持つ特別なユーザのことである。本システムの管理者は、第1のユーザの例である。
一方で、暗号システム100のユーザは、管理者とは異なり、他のユーザの暗号文を復号することができず、自身に対応した公開鍵で暗号化された暗号文のみ復号できる。本システムのユーザは、第2のユーザの例である。
なお、準同型演算は、マスタ公開鍵や各ユーザの公開鍵があればどのような装置でも実行できる。ただし、準同型演算を行った後の暗号文を復号するためには、マスタ秘密鍵もしくは各ユーザのユーザ秘密鍵が必要である。
暗号化装置400は、暗号化するデータを取得し、取得したデータをユーザ公開鍵により暗号化し、暗号化したデータを暗号化データとして管理装置700に送信する。暗号化装置400は、マスタ公開鍵またはユーザ公開鍵を用いて、データを暗号化して暗号文(以降、暗号化データと呼ぶ)を生成し、管理装置700に保管する装置である。
マスタ復号装置500は、マスタ鍵ペアを用いて、管理装置700などに登録されている暗号文を復号して平文を抽出する装置である。
また、マスタ復号装置500は、管理装置700に登録されている暗号文に対して準同型演算を実行させる要求を出し、マスタ鍵ペアを用いて、準同型演算結果の暗号文(以降、暗号化演算結果と呼ぶ)を復号して平文の演算結果を抽出する装置である。
ユーザ復号装置600は、ユーザ鍵ペアを用いて、管理装置700などに登録されている暗号文を復号して平文を抽出する装置である。
また、ユーザ復号装置600は、管理装置700に登録されている暗号文に対して準同型演算を実行させる要求を出し、ユーザ鍵ペアを用いて、準同型演算結果の暗号文(すわなち、暗号化演算結果)を復号して平文の演算結果を抽出する装置である。
管理装置700は、暗号化装置400によって生成された暗号化データを保管する大容量の記録媒体を持つ装置である。
管理装置700は、保管装置として機能する。即ち、管理装置700は、暗号化装置400から暗号化データの保管の要求があれば、暗号化データを保管する。
また、管理装置700は、演算装置として機能する。即ち、管理装置700は、マスタ復号装置500またはユーザ復号装置600から、管理装置700に保管されている暗号化データに対して準同型演算の要求があれば、指定された暗号化データに関して準同型演算を実行し、暗号化演算結果をマスタ復号装置500またはユーザ復号装置600に送信する。
次に、暗号システム100が備えるマスタ鍵生成装置200と、ユーザ鍵生成装置300と、暗号化装置400と、マスタ復号装置500と、ユーザ復号装置600と、管理装置700との各々の構成について説明する。以下の説明において、暗号システム100が備えるマスタ鍵生成装置200と、ユーザ鍵生成装置300と、暗号化装置400と、マスタ復号装置500と、ユーザ復号装置600と、管理装置700との全ての装置を暗号システム100が備える装置と称し、暗号システム100が備える装置の各々を各装置と称する場合がある。
以下において、暗号システム100が備える装置において共通の機能を有するハードウェアについては同一の符号を付すものとする。
<マスタ鍵生成装置200>
図2を用いて、本実施の形態に係るマスタ鍵生成装置200の構成について説明する。
マスタ鍵生成装置200は、コンピュータである。マスタ鍵生成装置200は、プロセッサ910を備えると共に、記憶装置920、入力インタフェース930、出力インタフェース940、通信装置950といった他のハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
図2に示すように、マスタ鍵生成装置200は、機能構成として、入力部201と、マスタ鍵生成部202と、出力部203と、記憶部209とを備える。
以下の説明では、マスタ鍵生成装置200における入力部201と、マスタ鍵生成部202と、出力部203との機能を、マスタ鍵生成装置200の「部」の機能という。
マスタ鍵生成装置200の「部」の機能は、ソフトウェアで実現される。
記憶部209は、記憶装置920で実現される。
入力部201は、入力インタフェース930を介して管理者から暗号強度を表すセキュリティパラメーターλを受け取る。
マスタ鍵生成部202は、入力部201から受け取ったセキュリティパラメーターλに基づき、マスタ公開鍵MPKとマスタ秘密鍵MSKからなるマスタ鍵ペア(MPK、MSK)を生成する。マスタ鍵生成部202は、ペアリング写像が計算できる楕円曲線上の巡回群を構成する生成元gを用いて、マスタ公開鍵MPK及びマスタ秘密鍵MSKを生成する。
具体的には、マスタ鍵生成部202は、λ/2ビットの素数pと素数qをランダムに生成し、例えば非特許文献3に記載されている方法を用いて、双線型写像e(ペアリング写像とも呼ばれる)が効率良く計算できる楕円曲線上の位数Nの巡回群G_Nを構成する生成元gを求める。なお、eはG_N×G_N→G_N’と定義される写像で、G_N’は位数Nの巡回群である。以降、G_N上の演算を*で表わし、G_N’上の演算を・で表わす。またべき乗演算を^で表わす。巡回群G_Nの部分巡回群G_pを構成するh=g^(αq)を求める。ただし、αは整数の集合{1,・・・,p}からランダムに選んだ整数とする。このとき、MPK=(N,e,g,h)、MSK=(p,q)とおく。
出力部203は、マスタ鍵生成部202で生成されたマスタ公開鍵MPKを、通信装置950を介して、ユーザ鍵生成装置300と、暗号化装置400と、管理装置700とへ送信する。また、出力部203は、マスタ鍵生成部202で生成されたマスタ鍵ペア(MSK、MSK)を、通信装置950を介して、マスタ復号装置500へ送信する。すなわち、マスタ鍵生成装置200は、マスタ公開鍵MPK及びマスタ秘密鍵MSKをマスタ復号装置500に送信すると共に、マスタ公開鍵MPKのみを、ユーザ鍵生成装置300と暗号化装置400と管理装置700とに送信する。
<ユーザ鍵生成装置300>
図3を用いて、本実施の形態に係るユーザ鍵生成装置300の構成について説明する。
ユーザ鍵生成装置300は、コンピュータである。マスタ鍵生成装置200は、プロセッサ910を備えると共に、記憶装置920、入力インタフェース930、出力インタフェース940、通信装置950といった他のハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
図3に示すように、ユーザ鍵生成装置300は、機能構成として、入力部301と、ユーザ鍵生成部303と、出力部304と、記憶部309とを備える。記憶部309は、マスタ公開鍵保管部302を有する。
以下の説明では、ユーザ鍵生成装置300における入力部301と、ユーザ鍵生成部303と、出力部304との機能を、ユーザ鍵生成装置300の「部」の機能という。
ユーザ鍵生成装置300の「部」の機能は、ソフトウェアで実現される。
記憶部309は、記憶装置920で実現される。
入力部301は、通信装置950を介して、マスタ鍵生成装置200で生成されたマスタ公開鍵MPKを受け取る。
また、入力部301は、入力インタフェース930を介して、ユーザから、そのユーザを識別するユーザ識別子UIDを受け取る。例えば、ユーザ識別子は、ユーザの名前や、所属している組織の名前や、システムで逐次一意的に振られる識別番号がその一例である。これは、どのユーザと関連するユーザ公開鍵であるか、どのユーザと関連する暗号文であるかを示すために用いられる。
マスタ公開鍵保管部302は、入力部301から受け取ったマスタ公開鍵MPKを保管する。
ユーザ鍵生成部303は、マスタ公開鍵MPKとランダムに選択された自然数とを用いて、ユーザ公開鍵PK及びユーザ秘密鍵SKを生成する。ユーザ鍵生成部303は、入力部301から受け取ったユーザ識別子UIDと、マスタ公開鍵保管部302から読み出したマスタ公開鍵MPKとを用いて、ユーザ公開鍵PKとユーザ秘密鍵SKからなるユーザ鍵ペア(PK,SK)を生成する
具体的には、ユーザ鍵生成部303は、マスタ公開鍵MPKを用いて、y=h^xを求める。ただし、xは整数の集合{1,・・・,N}からランダムに選んだ自然数である。このとき、PK=(N,e,g,h,y)、SK=xとおく。
出力部304は、ユーザ鍵生成部303で生成されたユーザ公開鍵とユーザ識別子のペア(PK,UID)を出力し、通信装置950を介して、暗号化装置400と、管理装置700とへ送信する。また、出力部304は、ユーザ鍵生成部303で生成されたユーザ鍵ペア(PK、SK)とユーザ識別子UIDの組(PK,SK,UID)を出力し、通信装置950を介して、ユーザ復号装置600へ送信する。すなわち、ユーザ鍵生成装置300は、ユーザ公開鍵PK及びユーザ秘密鍵SKをユーザ復号装置600に送信すると共に、ユーザ公開鍵PKのみを、暗号化装置400と管理装置700とに送信する。
<暗号化装置400>
図4を用いて、本実施の形態に係る暗号化装置400の構成について説明する。
暗号化装置400は、コンピュータである。暗号化装置400は、プロセッサ910を備えると共に、記憶装置920、入力インタフェース930、出力インタフェース940、通信装置950といった他のハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
図4に示すように、暗号化装置400は、機能構成として、入力部401と、暗号化部404と、送信部405と、記憶部409とを備える。記憶部409は、マスタ公開鍵保管部402と、ユーザ公開鍵保管部403とを有する。
以下の説明では、暗号化装置400における入力部401と、暗号化部404と、送信部405との機能を、暗号化装置400の「部」の機能という。
暗号化装置400の「部」の機能は、ソフトウェアで実現される。
記憶部409は、記憶装置920で実現される。
入力部401は、通信装置950を介して、マスタ鍵生成装置200で生成されたマスタ公開鍵MPKや、ユーザ鍵生成装置300で生成されたユーザ公開鍵とユーザ識別子のペア(PK,UID)を受け取る。
入力部401は、入力インタフェース930を介して、ユーザから、暗号化したいデータmと、そのデータを識別するデータ識別子DIDと、暗号化データを渡したいユーザのユーザ識別子UIDとを受け取る。例えば、データ識別子は、データの名前や、システムで逐次一意的に振られる識別番号がその一例である。このデータ識別子は、復号する対象の暗号文や準同型演算に用いる対象の暗号文を識別するために用いられる。また、データmは、離散対数問題が解ける程度のビット長を持つデータとする。例えば、log_2(λ)程度のビット長としてもよい。
マスタ公開鍵保管部402は、入力部401から受け取ったマスタ公開鍵MPKを保管する。
ユーザ公開鍵保管部403は、入力部401から受け取ったユーザ公開鍵とユーザ識別子のペア(PK,UID)を保管する。
暗号化部404は、マスタ公開鍵保管部402からマスタ公開鍵MPKを読み出し、入力部401から受け取ったデータmを暗号化して、暗号化データc0を生成する。
具体的には、暗号化部404は、マスタ公開鍵MPKを用いて、整数の集合{1,・・・,N}の中からランダムにrを選び、次の(式1)でc0を計算する。
c0=y^r*g^m (式1)
暗号化部404は、入力部401から受け取ったユーザ識別子UIDと対応するようなユーザ公開鍵とユーザ識別子のペア(PK,UID)をユーザ公開鍵保管部403から読み出し、入力部401から受け取ったデータmを暗号化して、暗号化データ(c1,c2)を生成する。
具体的には、暗号化部404は、ユーザ公開鍵PKを用いて、整数の集合{1,・・・,N}の中からランダムにrを選び、次の(式2)及び(式3)でc1とc2を計算する。
c1=h^r (式2),c2=y^r*g^m (式3)
送信部405は、管理者を表すユーザ識別子UID(以降、ADMINと表現する)と、データ識別子DIDと、暗号化部404から受け取ったデータ暗号化データc0の組(ADMIN,DID,c0)を出力し、管理装置700へ送信する。
送信部405は、ユーザ識別子UIDと、データ識別子DIDと、暗号化部404から受け取った暗号化データ(c1,c2)との組(UID,DID,c1,c2)を出力し、管理装置700へ送信する。
すなわち、暗号化装置400は、暗号化するデータmとユーザを識別するユーザ識別子とを取得し、データmを暗号化した暗号化データとユーザ識別子とを管理装置700に送信する。
<マスタ復号装置500>
図5を用いて、本実施の形態に係るマスタ復号装置500の構成について説明する。
マスタ復号装置500は、コンピュータである。マスタ復号装置500は、プロセッサ910を備えると共に、記憶装置920、入力インタフェース930、出力インタフェース940、通信装置950といった他のハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
図5に示すように、マスタ復号装置500は、機能構成として、入力部501と、演算手順設定部503と、復号部504と、出力部505と、記憶部509とを備える。記憶部509は、マスタ鍵ペア保管部502を有する。
以下の説明では、マスタ復号装置500における入力部501と、演算手順設定部503と、復号部504と、出力部505との機能を、マスタ復号装置500の「部」の機能という。
マスタ復号装置500の「部」の機能は、ソフトウェアで実現される。
記憶部509は、記憶装置920で実現される。
入力部501は、通信装置950を介して、マスタ鍵生成装置200で生成されたマスタ鍵ペア(MPK,MSK)を受け取る。
入力部501は、入力インタフェース930を介して、管理者から、管理装置700に保管されている暗号化データの中で準同型演算したい対象のデータを識別するためのデータ識別子集合{DID1,・・・,DIDn}と、その対象のデータに対してどのように処理したいかを示した処理内容Kとを受け取る。ただし、nは1以上の整数である。これ以降、データ識別子集合{DID1,・・・,DIDn}を{DID}と略して表記する。例えば、この処理内容は、2つのデータの「総和」や「ユークリッド二乗距離」などがその一例である。もしくは、どのデータとどのデータを準同型加算するなど具体的な演算手順そのものでも構わない。
入力部501は、管理装置700などに保管されている暗号化データや、管理装置700で処理された暗号化演算結果(準同型演算結果)を受け取る。
マスタ鍵ペア保管部502は、入力部501から受け取ったマスタ鍵ペア(MPK,MSK)を保管する。なお、このマスタ鍵ペアを厳重に管理するため、(MPK,MSK)を暗号化して保管することや、パスワードやトークン、もしくは生体情報などを用いて管理者であることを認証した後に(MPK,MSK)を読み出せるように保護してもよい。
演算手順設定部503は、入力部501から受け取ったデータ識別子集合{DID}と処理内容Kとから、どの暗号化データに対して準同型演算をするかといった、データを用いた演算の手順である演算手順Pを生成する。演算手順Pには、具体的な準同型演算手順が記述されている。上述したように、演算手順Pには、「ユークリッド二乗距離」など乗算が含まれている演算手順でもよい。例えば、処理内容Kが「総和」であれば、データ識別子集合に対応した暗号化データを全て準同型加算する、と演算手順を設定する。もし、処理内容Kがすでに具体的な準同型演算手順であれば、その処理内容Kを演算手順Pとして設定してもよい。また、このような手順は事前にシステムで決めて、管理者は決められた手順を選択するようにしてもよい。
復号部504は、マスタ鍵ペア保管部502からマスタ鍵ペア(MPK,MSK)を読み出し、入力部501から受け取った暗号化データや暗号化演算結果を復号し、平文の演算結果であるデータMを求める。
具体的には、復号部504は、マスタ鍵ペアを用いて、管理者の公開鍵で暗号化された暗号化データc0に対して、M_p=c0^p及びb_p=g^pを計算し、b_pを底としたM_pの離散対数Mを計算する。このMを計算するために、例えば、非特許文献3に記載されたλ法などを使うことができる。以降、離散対数を求めることを表すために、DLogを用いて、M=DLog_(b_p)(M_p)のように表記する。もし、ユーザ公開鍵で暗号化された暗号文データ(c1,c2)を復号する場合は、c2をc0とみて上記と同様な処理を実行すればよい。
また、復号部504は、暗号化演算結果がG_N上の一つの元sで表わされていた場合は、マスタ鍵ペアを用いて、s=c0とみて上記と同様な復号処理を行うことでデータMを求める。もし、暗号化演算結果がG’_N上の一つの元Sで表わされていた場合には、復号部504は、次の(式4)のように計算を行ってデータMを求める。
M=DLog_(e(g,g)^p)(S^p) (式4)
なお、暗号化演算結果のsやSの具体的な構造については後に述べる。
出力部505は、管理者を表すユーザ識別子ADMINと、演算手順設定部503から受け取ったデータ識別子集合{DID}と演算手順Pとの組(ADMIN,{DID},P)を出力する。出力部505は、その組(ADMIN,{DID},P)を管理装置700へ通信装置950を介して送信する。
出力部505は、出力インタフェース940を介して、復号部504から受け取ったデータMを出力する。
<ユーザ復号装置600>
図6を用いて、本実施の形態に係るユーザ復号装置600の構成について説明する。
ユーザ復号装置600は、コンピュータである。ユーザ復号装置600は、プロセッサ910を備えると共に、記憶装置920、入力インタフェース930、出力インタフェース940、通信装置950といった他のハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
図6に示すように、ユーザ復号装置600は、機能構成として、入力部601と、演算手順設定部603と、復号部604と、出力部605と、記憶部609とを備える。記憶部609は、ユーザ鍵ペア保管部602を有する。
以下の説明では、ユーザ復号装置600における入力部601と、演算手順設定部603と、復号部604と、出力部605との機能を、ユーザ復号装置600の「部」の機能という。
ユーザ復号装置600の「部」の機能は、ソフトウェアで実現される。
記憶部609は、記憶装置920で実現される。
入力部601は、通信装置950を介して、ユーザ鍵生成装置300で生成されたユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を受け取る。
入力部601は、入力インタフェース930を介して、ユーザから、ユーザ識別子UIDと、管理装置700に保管されている暗号化データの中で準同型演算したい対象のデータを識別するためのデータ識別子集合{DID1,・・・,DIDn}と、その対象のデータに対してどのように処理したいかを示した処理内容Kとを受け取る。ただし、nは1以上の整数である。これ以降、データ識別子集合{DID1,・・・,DIDn}を{DID}と略して表記する。
入力部601は、管理装置700などに保管されている暗号化データや、管理装置700で処理された暗号化演算結果(準同型演算結果)を受け取る。
ユーザ鍵ペア保管部602は、入力部601から受け取ったユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を保管する。なお、このユーザ鍵ペアを厳重に管理するため、(PK,SK)を暗号化して保管することや、パスワードやトークン、もしくは生体情報などを用いて正しいユーザであることを認証した後に(PK,SK)を読み出せるように保護してもよい。
演算手順設定部603は、入力部601から受け取った処理内容Kとデータ識別子集合{DID}とユーザ識別子UIDとから、どの暗号化データに対して準同型演算をするかなどの、具体的な準同型演算手順が記述された演算手順Pを生成する。もし、処理内容Kがすでに具体的な準同型演算手順であれば、その処理内容Kを演算手順Pとして設定してもよい。また、前述のように、このような手順は事前にシステムで決めて、ユーザは決められた手順を選択するようにしてもよい。
復号部604は、ユーザ鍵ペア保管部602からユーザ鍵ペア(PK,SK,UID)を読み出し、入力部601から受け取った暗号化データ(c1,c2)や暗号化演算結果を復号し、データMを生成する。
具体的には、復号部604は、ユーザ鍵ペアを用いて、暗号化データ(c1,c2)に対して次の(式5)のようにしてデータMを求める。
M=DLog_(g)(c1^(−x)*c2) (式5)
また、復号部604は、暗号化演算結果がG_N上の元のペア(t1,t2)(単にtと表記する場合もある)で表わされていた場合は、ユーザ鍵ペアを用いて、(t1,t2)=(c1,c2)とみて上記と同様な復号処理を行うことでデータMを求める。もし、暗号化演算結果がG_N’上の元の組(T1,T2,T3)(単にTと表記する場合もある)で表わされていた場合には、復号部504は、ユーザ鍵ペアを用いて、次の(式6)のように計算を行ってデータMを求める。
M=DLog_(e(g,g))(T1^(−x^2)・T2^(x)・T3) (式6)
出力部605は、ユーザ識別子UIDと、演算手順設定部503から受け取ったデータ識別子集合{DID}と演算手順Pとの組(UID,{DID},P)を出力し、管理装置700へ送信する。出力部605は、演算手順設定部603から受け取ったユーザ識別子UIDと、データ識別子集合{DID}と、演算手順Pとを出力し、その組(UID,{DID},P)を、通信装置950を介して管理装置700へ送信する。
出力部605は、出力インタフェース940を介して、復号部604から受け取ったデータMを出力する。
<管理装置700>
図7を用いて、本実施の形態に係る管理装置700の構成について説明する。
管理装置700は、コンピュータである。管理装置700は、プロセッサ910を備えると共に、記憶装置920、入力インタフェース930、出力インタフェース940、通信装置950といった他のハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
図7に示すように、管理装置700は、機能構成として、入力部701と、演算部704と、出力部705と、記憶部709とを備える。記憶部709は、公開鍵保管部702と、データ保管部703とを有する。
以下の説明では、管理装置700における入力部701と、演算部704と、出力部705との機能を、管理装置700の「部」の機能という。
管理装置700の「部」の機能は、ソフトウェアで実現される。
記憶部709は、記憶装置920で実現される。
入力部701は、通信装置950を介して、マスタ鍵生成装置200で生成されたマスタ公開鍵MPKや、ユーザ鍵生成装置300で生成されたユーザ公開鍵とユーザ識別子のペア(PK,UID)を受け取る。
入力部701は、通信装置950を介して、暗号化装置400で生成されたユーザ識別子とデータ識別子と暗号化データとの組(ADMIN,DID,c0)や(UID,DID,c1,c2)を受け取る。
入力部701は、通信装置950を介して、マスタ復号装置500で生成されたユーザ識別子とデータ識別子集合と演算手順との組(ADMIN,{DID},P)や、ユーザ復号装置600で生成されたユーザ識別子とデータ識別子集合と演算手順の組(UID,{DID},P)を受け取る。
公開鍵保管部702は、入力部701から受け取ったマスタ公開鍵MPKや、ユーザ公開鍵とユーザ識別子のペア(PK,UID)を保管する。
データ保管部703は、マスタ公開鍵PKあるいはユーザ公開鍵PKにより暗号化されたデータを暗号化データ(c0あるいは(c1,c2))として保管する。データ保管部703は、暗号化データとユーザ識別子(ADMINあるいはUID)とを対応付けて記憶する。具体的には、データ保管部703は、入力部701から受け取ったユーザ識別子とデータ識別子と暗号化データの組(ADMIN,DID,c0)や(UID,DID,c1,c2)を保管する。
演算部704は、演算手順Pに用いられるデータが暗号化された暗号化データ(c0あるいは(c1,c2))をデータ保管部703から選択する。演算部704は、演算手順Pと、管理者のユーザ識別子である第1のユーザ識別子(ADMIN)とを取得し、演算手順Pに用いられるデータが暗号化された暗号化データであって第1のユーザ識別子(ADMIN)に対応付けられた暗号化データをデータ保管部703から選択する。また、演算部704は、演算手順Pと、ユーザのユーザ識別子である第2のユーザ識別子(UID)とを取得し、演算手順Pに用いられるデータが暗号化された暗号化データであって第2のユーザ識別子(UID)に対応付けられた暗号化データをデータ保管部703から選択する。演算部704は、演算手順Pに基づいて、選択した暗号化データに対して準同型演算を行い、準同型演算の演算結果を暗号化演算結果として出力する。
具体的には、演算部704は、入力部701から受け取った(ADMIN,{DID},P)や(UID,{DID},P)を用いて、公開鍵保管部702からマスタ公開鍵MPKを、またデータ保管部703から{DID}に含まれるデータ識別子DIDを持つ組(ADMIN,DID,c0)や(UID,DID,c1,c2)を読み出す。そして、演算部704は、暗号化データc0や(c1,c2)の集合を演算手順Pに従って準同型処理をし、暗号化演算結果を生成する。
具体的に、2つの暗号化データ(c1,c2)=(g^r,y^r*g^m)と(c1’,c2’)=(g^(r’),y^(r’)*g^(m’))の準同型加算を行う場合は、次の(式7),(式8)のように計算して新しいm+m’の暗号化データ(c1’’,c2’’)を求める。ただし、r’’は整数の集合{1,・・・,N}の中からランダムに選ばれた整数とする。
c1’’=c1*c1’*h^(r’’)=h^(r+r’+r’’) (式7)
c2’’=c2*c2’*y^(r’’)=y^(r+r’+r’’)*g^(m+m’) (式8)
なお、この準同型加算結果の暗号化データ(c1’’,c2’’)は、更に準同型加算を実行することや下記で述べる準同型乗算を実行することができる。
(c1,c2)と(c1’,c2’)の準同型乗算を行う場合は、次の(式9)〜(式11)のように計算して新しいm×m’の暗号化データ(C1,C2,C3)を求める。ただし、r1とr2は整数の集合{1,・・・,N}の中からランダムに選ばれた整数とし、R1=rr’+r1及びR2=−rm’+r’m+r2とする。
C1=e(c1,c1’)・e(h,h)^r1=e(h,h)^R1 (式9)
C2=e(c1,c2’^(−1))・e(c1’,c2)・e(h,g)^r2=e(h,g)^R2 (式10)
C3=e(c2,c2’)・e(h,h)^r1・e(y,g)^r2=e(y,y)^R1・e(y,g)^(−R2)・e(g,g)^(m×m’) (式11)
なお、この準同型乗算結果の暗号化データ(C1,C2,C3)は、更に下記のようにして準同型加算を実行できるが、準同型乗算を実行することは困難である。
準同型乗算後の暗号化データ(C1,C2,C3)=(e(h,h)^R1,e(h,g)^R2,e(y,y)^R1・e(y,g)^(−R2)・e(c2,c2’)^m)と(C1’,C2’,C3’)=(e(h,h)^R1’,e(h,g)^R2’,e(y,y)^R1’・e(y,g)^(−R2’)・e(g,g)^m’)に対して準同型加算を行う場合は、次の(式12)〜(式14)のようにして新しいm+m’の暗号化データ(C1’’,C2’’,C3’’)を求める。ただし、RとR’は整数の集合{1,・・・,N}の中からランダムに選ばれた整数とし、R1’’=R1+R1’+R及びR2’’=R2+R2’+R’とする。
C1’’=C1・C1’・e(h,h)^R=e(h,h)^R1’’ (式12)
C2’’=C2・C2’・e(h,g)^R’=e(h,g)^R2’’ (式13)
C3’’=C3・C3’’・e(y,y)^R・e(y,g)^(−R’)=e(y,y)^R1’’・e(y,g)^R2’’・e(g,g)^(m+m’) (式14)
なお、この準同型乗算結果の暗号化データ(C1’’,C2’’,C3’’)は、更に準同型加算を実行できるが、準同型乗算を実行することは困難である。
演算部704は、演算手順Pに従って、複数の暗号化データを上記のような準同型演算を組み合わせて計算することで、暗号化演算結果を生成する。なお、準同型乗算を1度も実行されていない場合の暗号化演算結果を(t1,t2)と表わし、また準同型演算が1度でも実行された場合の暗号化演算結果を(T1,T2,T3)と表わすことにする。
なお、前述した準同型演算はユーザ公開鍵で暗号化された暗号化データを対象に処理方法を述べたが、管理者の場合は、マスタ公開鍵を用いて暗号化された暗号化データc0についても準同型演算が可能である。この時、c0をc2と同一視して、準同型加算ではc2’’のみ生成するように変更することや、準同型乗算ではC3のみ生成するように変更することや、また準同型演算後の準同型加算もC3’’のみ生成するように変更すればよい。
また、マスタ公開鍵で暗号化された暗号化データc0と、ユーザ公開鍵で暗号化された暗号化データ(c1,c2)とに対しても準同型演算することができる。この時も、上記のように処理方法を変更すればよい。すなわち、c0をc2と同一視し、準同型演算の結果の暗号化データはc2’’、C3、C3’’の形で表現されるように変更する。ただし、暗号化データc0の集合から生成された暗号化演算結果、もしくはc0と(c1,c2)が混在する形で生成された暗号化演算結果は、マスタ復号装置500を利用できる管理者のみ復号できる。
なお、このような管理者のみ復号できる暗号化演算結果について、準同型乗算を1度も実行されていない場合の暗号化演算結果をsと表わし、また準同型演算が1度でも実行された場合の暗号化演算結果をSと表わすことにする。
出力部705は、演算部704から受け取った暗号化演算結果を出力し、マスタ復号装置500またはユーザ復号装置600へ通信装置950を介して送信する。
また、出力部705は、データ保管部703から受け取った暗号化データを出力し、マスタ復号装置500またはユーザ復号装置600へ通信装置950を介して送信する。
次に、暗号システム100が備えるマスタ鍵生成装置200と、ユーザ鍵生成装置300と、暗号化装置400と、マスタ復号装置500と、ユーザ復号装置600と、管理装置700との各装置のハードウェアについて説明する。
プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。プロセッサ910は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ910は、CPU(Central Processing Unit)、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、またはDSP(Digital Signal Processor)ともいう。
記憶装置920は、補助記憶装置922及びメモリ921を含む。補助記憶装置922は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。メモリ921は、具体的には、RAM(Random Access Memory)である。各装置の記憶部は、補助記憶装置922により実現されてもよいし、メモリ921により実現されてもよいし、メモリ921と補助記憶装置922とにより実現されていてもよい。記憶部の実現方法は任意である。
入力インタフェース930は、マウス、キーボード、又はタッチパネルといった入力装置に接続されたポートである。入力インタフェース930は、具体的には、USB(Universal Serial Bus)端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。
出力インタフェース940は、ディスプレイといった表示機器のケーブルが接続されるポートである。出力インタフェース940は、例えば、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
通信装置950は、データを受信するレシーバ及びデータを送信するトランスミッタを含む。通信装置950は、具体的には、通信チップ又はNIC(Network Interface Card)である。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
補助記憶装置922には、暗号システム100の各装置の「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリにロードされ、プロセッサ910に読み込まれ、プロセッサ910によって実行される。補助記憶装置922には、OS(Operating System)も記憶されている。OSの少なくとも一部がメモリにロードされ、プロセッサ910はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
暗号システム100の各装置は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置、メモリ、又は、プロセッサ910内のレジスタ又はキャッシュメモリに記憶される。
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)等の可搬記録媒体に記憶されてもよい。
なお、暗号プログラム520は、暗号システム100の各装置の「部」として説明している機能を実現するプログラムである。また、暗号プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
***動作の説明***
次に、本実施の形態に係る暗号システム100における暗号方法510及び暗号プログラム520による暗号処理S100について説明する。
<マスタ鍵ペア生成および保管処理>
図8は、本実施の形態に係る暗号システム100のマスタ鍵ペア生成および保管処理を示すフローチャートである。
図8のステップS101〜ステップS112は、マスタ鍵生成装置200と、ユーザ鍵生成装置300と、暗号化装置400と、マスタ復号装置500と、管理装置700とが実行する処理である。ステップS101〜ステップS104はマスタ鍵生成装置200により実行されるマスタ鍵生成処理S10である。ステップS105〜ステップS106はユーザ鍵生成装置300により実行される。ステップS107〜ステップS108は暗号化装置400により実行される。ステップS109〜ステップS110はマスタ復号装置500により実行される。ステップS111〜ステップS112は管理装置700によって実行される。
ステップS101において、入力部201は、管理者から暗号強度を表すセキュリティパラメーターλを受け取る。
ステップS102において、マスタ鍵生成部202は、入力部201から受け取ったセキュリティパラメーターλに基づき、マスタ公開鍵MPKとマスタ秘密鍵MSKからなるマスタ鍵ペア(MPK、MSK)を生成する。
ステップS103において、出力部203は、マスタ鍵生成部202で生成されたマスタ鍵ペア(MSK、MSK)を、マスタ復号装置500へ送信する。
ステップS104において、出力部203は、マスタ鍵生成部202で生成されたマスタ公開鍵MPKを、ユーザ鍵生成装置300と、暗号化装置400と、管理装置700とへ送信する。このとき、マスタ公開鍵MPKのみを送信し、マスタ秘密鍵MSKは送信しない。
ステップS105において、入力部301は、マスタ鍵生成装置200で生成されたマスタ公開鍵MPKを受け取る。
ステップS106において、マスタ公開鍵保管部302は、入力部301から受け取ったマスタ公開鍵MPKを保管する。
ステップS107において、入力部401は、マスタ鍵生成装置200で生成されたマスタ公開鍵MPKを受け取る。
ステップS108において、マスタ公開鍵保管部402は、入力部401から受け取ったマスタ公開鍵MPKを保管する。
ステップS109において、入力部501は、マスタ鍵生成装置200で生成されたマスタ鍵ペア(MPK,MSK)を受け取る。
ステップS110において、マスタ鍵ペア保管部502は、入力部501から受け取ったマスタ鍵ペア(MPK,MSK)を保管する。必要があれば、マスタ秘密鍵MSKが外部に漏れないように、暗号化して保管することや、管理者しか扱えないように認証情報なども合わせて保管する。
ステップS111において、入力部701は、マスタ鍵生成装置200で生成されたマスタ公開鍵MPKを受け取る。
ステップS112において、公開鍵保管部702は、入力部701から受け取ったマスタ公開鍵MPKを保管する。
ステップS112により、暗号システム100のマスタ鍵ペア生成および保管処理は終了する。
<ユーザ鍵ペア生成および保管処理>
図9は、本実施の形態に係る暗号システム100のユーザ鍵ペア生成および保管処理を示すフローチャートである。
図9のステップS201〜ステップS210は、ユーザ鍵生成装置300と、暗号化装置400と、ユーザ復号装置600と、管理装置700とが実行する処理である。ステップS201〜ステップS204はユーザ鍵生成装置300により実行されるユーザ鍵生成処理S20である。ステップS205〜ステップS206は暗号化装置400により実行される。ステップS207〜ステップS208はユーザ復号装置600により実行される。ステップS209〜ステップS210は管理装置700により実行される。
ステップS201において、入力部301は、ユーザから、そのユーザを識別するユーザ識別子UIDを受け取る。
ステップS202において、ユーザ鍵生成部303は、入力部301から受け取ったユーザ識別子UIDと、マスタ公開鍵保管部302から読み出したマスタ公開鍵MPKとを用いて、ユーザ公開鍵PKとユーザ秘密鍵SKからなるユーザ鍵ペア(PK,SK)を生成する。
ステップS203において、出力部304は、ユーザ鍵生成部303で生成されたユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を出力し、ユーザ復号装置600へ送信する。
ステップS204において、出力部304は、ユーザ鍵生成部303で生成されたユーザ公開鍵とユーザ識別子のペア(PK,UID)を出力し、暗号化装置400と、管理装置700とへ送信する。このとき、ユーザ秘密鍵SKは送信しない。
ステップS205において、入力部401は、ユーザ鍵生成装置300で生成されたユーザ公開鍵とユーザ識別子のペア(PK,UID)を受け取る。
ステップS206において、ユーザ公開鍵保管部403は、入力部401から受け取ったユーザ公開鍵とユーザ識別子のペア(PK,UID)を保管する。
ステップS207において、入力部601は、ユーザ鍵生成装置300で生成されたユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を受け取る。
ステップS208において、ユーザ鍵ペア保管部602は、入力部601から受け取ったユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を保管する。必要があれば、SKが外部に漏れないように、暗号化して保管することや、扱えるユーザを制限するための認証情報なども合わせて保管する。
ステップS209において、入力部701は、ユーザ鍵生成装置300で生成されたユーザ公開鍵とユーザ識別子のペア(PK,UID)を受け取る。
ステップS210において、公開鍵保管部702は、ユーザ公開鍵とユーザ識別子のペア(PK,UID)を保管する。
ステップS210により、暗号システム100のユーザ鍵ペア生成および保管処理は終了する。
<データ暗号化および保管処理>
図10は、本実施の形態に係る暗号システム100のデータ暗号化および保管処理を示すフローチャートである。
図10のステップS301〜ステップS306は、暗号化装置400と管理装置700とが実行する処理である。ステップS301〜ステップS304は暗号化装置400により実行される。ステップS305〜ステップS306は管理装置700により実行される処理である。
ステップS301において、入力部401は、ユーザから、暗号化したいデータmと、そのデータを識別するデータ識別子DIDと、暗号化データを渡したい対象のユーザを識別するユーザ識別子UIDとを受け取る。
ステップS302において、暗号化部404は、入力部401から受け取ったユーザ識別子UIDと対応するようなユーザ公開鍵とユーザ識別子のペア(PK,UID)をユーザ公開鍵保管部403から読み出す。もしUID=ADMINであった場合には、暗号化部404は、マスタ公開鍵保管部402からマスタ公開鍵MPKを読み出す。
ステップS303において、暗号化部404は、ステップS302で読み出したユーザ公開鍵PKを用いて、入力部401から受け取ったデータmを前述のように暗号化して、暗号化データ(c1,c2)を生成する。もしステップS302でマスタ公開鍵MPKを読み出していた場合には、暗号化部404は、入力部401から受け取ったデータmを前述のように暗号化して、暗号化データc0を生成する。
ステップS304において、送信部405は、ユーザ識別子UIDと、データ識別子DIDと、ステップS303で生成した暗号化データ(c1,c2)との組(UID,DID,c1,c2)を出力し、管理装置700へ送信する。もしステップS303で暗号化データc0を生成した場合には、送信部405は、ユーザ識別子UID=ADMINと、データ識別子DIDと、ステップS303で生成した暗号化データc0との組(ADMIN,DID,c0)を出力し、管理装置700へ送信する。
ステップS305において、入力部701は、ステップS304で暗号化装置400から送信されてきたユーザ識別子とデータ識別子と暗号化データの組(UID,DID,c1,c2)、もしくは(ADMIN,DID,c0)を受け取る。
ステップS306において、データ保管部703は、入力部701がステップS305で受け取ったユーザ識別子とデータ識別子と暗号化データの組(UID,DID,c1,c2)もしくは(ADMIN,DID,c0)を保管する。
ステップS306により、暗号システム100のデータの暗号化および保管処理は終了する。
<マスタ復号処理S30>
図11は、本実施の形態に係る暗号システム100のマスタ復号処理S30を示すフローチャートである。マスタ復号処理S30は、暗号化演算結果を取得し、取得した暗号化演算結果をマスタ秘密鍵MSKで復号する管理者向けのデータ復号処理である。
図11のステップS401〜ステップS404は、マスタ復号装置500が実行する処理である。
ステップS401において、入力部501は、管理装置700などに保管されている暗号化データc0もしくは(c1,c2)を受け取る。
ステップS402において、復号部504は、マスタ鍵ペア保管部502からマスタ鍵ペア(MPK,MSK)を読み出す。もし必要であれば、パスワードやトークン、生体情報などを入力して、管理者の認証も行う。
ステップS403において、復号部504は、入力部501がステップS401で受け取った暗号化データc0もしくは(c1,c2)に対して、前述のように復号処理を行い、データMを求める。データMは平文ともいう。
ステップS404において、出力部505は、復号部504がステップS403で生成したデータMを出力する。
ステップS404により、暗号システム100のマスタ復号処理S30は終了する。
<ユーザ復号処理S40>
図12は、本実施の形態に係る暗号システム100のユーザ復号処理S40を示すフローチャートである。ユーザ復号処理S40は、管理装置700から暗号化演算結果を取得し、取得した暗号化演算結果をユーザ秘密鍵SKで復号するユーザ向けのデータ復号処理である。
図12のステップS501〜ステップS504は、ユーザ復号装置600が実行する処理である。
ステップS501において、入力部601は、復号に利用したいユーザ鍵ペアを示すユーザ識別子UIDと、管理装置700などに保管されている暗号化データ(c1,c2)を受け取る。
ステップS502において、復号部604は、入力部601がステップS501で受け取ったユーザ識別子UIDに基づき、ユーザ鍵ペア保管部602からユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を読み出す。もし必要であれば、パスワードやトークン、生体情報などを入力して、ユーザの認証も行う。
ステップS503において、復号部604は、入力部601がステップS501で受け取った暗号化データ(c1,c2)に対して、前述のように復号処理を行い、データMを求める。データMは平文ともいう。
ステップS504において、出力部605は、復号部604がステップS503で生成したデータMを出力する。
ステップS504により、暗号システム100のユーザ復号処理S40は終了する。
<管理者向けの準同型演算処理S50および演算結果復号処理S60>
図13は、本実施の形態に係る暗号システム100の準同型演算処理S50および演算結果復号処理S60を示すフローチャートである。図13では、管理者向けの準同型演算処理S50および演算結果復号処理S60について説明する。
図13のステップS601〜ステップS612は、マスタ復号装置500と管理装置700とが実行する処理である。ステップS601〜ステップS603とステップS609〜ステップS612はマスタ復号装置500により実行される処理である。ステップS604〜ステップS608は管理装置700によって実行される処理である。
ステップS601において、入力部501は、管理者から、管理装置700に保管されている暗号化データの中で準同型演算したい対象のデータを識別するためのデータ識別子集合{DID}と、その対象のデータに対してどのように処理したいかを示した処理内容Kとを受け取る。
ステップS602において、演算手順設定部503は、入力部501がステップS601で受け取ったデータ識別子集合{DID}と処理内容とから、前述のように演算手順Pを生成する。
ステップS603において、出力部505は、管理者のユーザ識別子ADMINと、データ識別子集合{DID}と、演算手順設定部503がステップS602で生成した演算手順Pとの組(ADMIN,{DID},P)を出力し、管理装置700へ送信する。
ステップS604において、入力部701は、マスタ復号装置500がステップS603で送信したユーザ識別子とデータ識別子集合と演算手順の組(ADMIN,{DID},P)を受け取る。
ステップS605において、演算部704は、入力部701がステップS604で受け取った(ADMIN,{DID},P)を用いて、データ保管部703から{DID}に含まれるデータ識別子DIDを持つ組(ADMIN,DID,c0)や(UID,DID,c1,c2)を読み出す。
ステップS606において、演算部704は、公開鍵保管部702からマスタ公開鍵MPK読み出す。
ステップS607において、演算部704は、ステップS606で読み出したマスタ公開鍵MPKを用いて、ステップS605で読み出した暗号化データc0や(c1,c2)の集合を演算手順Pに従って前述のように準同型演算処理を行い、暗号化演算結果sもしくはSを生成する。
ステップS608において、出力部705は、演算部704がステップS607で生成した暗号化演算結果sもしくはSを出力し、マスタ復号装置500へ送信する。
ステップS609において、入力部501は、管理装置700がステップS608で送信した暗号化演算結果sもしくはSを受け取る。
ステップS610において、復号部504は、マスタ鍵ペア保管部502からマスタ鍵ペア(MPK,MSK)を読み出す。もし必要であれば、パスワードやトークン、生体情報などを入力して、管理者の認証も行う。
ステップS611において、復号部504は、ステップS610で読み出したマスタ鍵ペア(MPK,MSK)を用いて、入力部501がステップS609で受け取った暗号化演算結果sもしくはSを、前述の復号処理に従って平文の演算結果であるデータMを求める。
ステップS612において、出力部505は、復号部504がステップS611で求めたデータMを出力する。
ステップS612により、暗号システム100の管理者向けの準同型演算処理およびその復号処理は終了する。
<ユーザ向けの準同型演算処理S50および演算結果復号処理S60>
図14は、本実施の形態に係る暗号システム100の準同型演算処理S50および演算結果復号処理S60を示すフローチャートである。図14では、ユーザ向けの準同型演算処理S50および演算結果復号処理S60について説明する。
図14のステップS701〜ステップS712は、ユーザ復号装置600と管理装置700とが実行する処理である。ステップS701〜ステップS703とステップS709〜ステップS712はユーザ復号装置600により実行される処理である。ステップS704〜ステップS708は管理装置700によって実行される処理である。
ステップS701において、入力部601は、ユーザから、ユーザ識別子UIDと、管理装置700に保管されている暗号化データの中で準同型演算したい対象のデータを識別するためのデータ識別子集合{DID}と、その対象のデータに対してどのように処理したいかを示した処理内容Kとを受け取る。
ステップS702において、演算手順設定部603は、入力部601がステップS701で受け取ったデータ識別子集合{DID}と処理内容とから、前述のように演算手順Pを生成する。
ステップS703において、出力部605は、ユーザ識別子UIDと、データ識別子集合{DID}と、演算手順設定部603がステップS702で生成した演算手順Pとの組(UID,{DID},P)を出力し、管理装置700へ送信する。
ステップS704において、入力部701は、ユーザ復号装置600がステップS703で送信したユーザ識別子とデータ識別子集合と演算手順の組(UID,{DID},P)を受け取る。
ステップS705において、演算部704は、入力部701がステップS704で受け取った(UID,{DID},P)を用いて、データ保管部703から(UID,DID1),・・・,(UID,DIDn)のペアに対応する組(UID,DID,c1,c2)を読み出す。
もしここで、マスタ公開鍵で暗号化された暗号化データc0や、指定したユーザのUIDとは異なるユーザ公開鍵で暗号化した暗号化データ(c1,c2)を読み出そうとした場合、すなわち、UID≠UID’で(UID’,DIDi,c1,c2)となるような組(ただし、DIDi∈{DID}かつ1≦i≦n}を読み出そうとした場合は、暗号化演算結果を復号できない、もしくは復号した結果がランダムなデータとなるため、演算部704は、この場合は暗号化演算結果として「エラー」といった特別の文字列を生成する。
ステップS706において、演算部704は、入力部701がステップS704で受け取った(UID,{DID},P)を用いて、公開鍵保管部702からユーザ公開鍵とユーザ識別子のペア(PK,UID)を読み出す。
ステップS707において、演算部704は、ステップS706で読み出した公開鍵PKを用いて、ステップS705で読み出した暗号化データ(c1,c2)の集合を演算手順Pに従って前述のように準同型演算処理を行い、暗号化演算結果(t1,t2)もしくは(T1,T2,T3)を生成する。もし、演算部704がステップS705において特別の文字列「エラー」を生成していれば、演算部704は、ここでは何も処理しない。
ステップS708において、出力部705は、演算部704がステップS707で生成した暗号化演算結果(t1,t2)、もしくは(T1,T2,T3)、もしくは特別な文字列「エラー」を出力し、ユーザ復号装置600へ送信する。
ステップS709において、入力部601は、管理装置700がステップS708で送信した暗号化演算結果(t1,t2)、もしくは(T1,T2,T3)、もしくは特別な文字列「エラー」を受け取る。
ステップS710において、復号部604は、ユーザ鍵ペア保管部602からユーザ鍵ペアとユーザ識別子の組(PK,SK,UID)を読み出す。もし必要であれば、パスワードやトークン、生体情報などを入力して、ユーザの認証も行う。もし入力部601がステップS709において特別の文字列「エラー」を受信していれば、復号部604は、ここでは何も処理しない。
ステップS711において、復号部604は、ステップS710で読み出したユーザ鍵ペア(PK,SK)を用いて、入力部601がステップS709で受け取った暗号化演算結果(t1,t2)、もしくは(T1,T2,T3)を、前述の復号処理に従って平文の演算結果であるデータMを求める。もし入力部601がステップS709において特別の文字列「エラー」を受信していれば、復号部604は、ここでは何も処理しない。
ステップS712において、出力部605は、復号部604がステップS711で求めたデータMを出力する。もし入力部601がステップS709において特別の文字列「エラー」を受信していれば、出力部605は、特別の文字列「エラー」を出力する。
ステップS712により、暗号システム100のユーザ向けの準同型演算処理とその復号処理は終了する。
***他の構成***
本実施の形態では、暗号システム100の各装置の機能がソフトウェアで実現されるが、変形例として、暗号システム100の各装置の機能がハードウェアで実現されてもよい。
この本実施の形態の変形例について、図15から図20を用いて説明する。
図15は、本実施の形態の変形例に係るマスタ鍵生成装置200の構成を示す図である。
図16は、本実施の形態の変形例に係るユーザ鍵生成装置300の構成を示す図である。
図17は、本実施の形態の変形例に係る暗号化装置400の構成を示す図である。
図18は、本実施の形態の変形例に係るマスタ復号装置500の構成を示す図である。
図19は、本実施の形態の変形例に係るユーザ復号装置600の構成を示す図である。
図20は、本実施の形態の変形例に係る管理装置700の構成を示す図である。
図15から図20に示すように、暗号システム100の各装置は、プロセッサ910及び記憶装置920に替えて処理回路909を備える。
処理回路909は、前述した各装置の「部」の機能及び各装置の記憶部を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、又は、FPGA(Field−Programmable Gate Array)である。
暗号システム100の各装置は、処理回路909を代替する複数の処理回路を備えていてもよい。これら複数の処理回路により、全体として「部」の機能が実現される。それぞれの処理回路は、処理回路909と同じように、専用の電子回路である。
別の変形例として、暗号システム100の各装置の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。すなわち、暗号システム100の各装置において一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ910、記憶装置920、及び、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、暗号システム100の各装置の構成が図2〜図7及び図15〜図20のいずれに示した構成であっても、「部」の機能及び記憶部は、プロセッシングサーキットリにより実現される。
「部」を「工程」または「手順」または「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。すなわち、暗号システム100の各装置の「部」の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る暗号システムによれば、厳重な管理が必要なマスタ秘密鍵MSKを一切使うことなく、公開情報のマスタ公開鍵MPKからユーザ公開鍵PKを生成できるため、運用コストを下げることができる。
また、本実施の形態に係る暗号システムによれば、1つの暗号文に対して管理者(第1のユーザ)とユーザ(第2のユーザ)のどちらでも復号できるため、保管コストを小さくすることができる。
また、本実施の形態に係る暗号システムによれば、格子暗号をベースとせず、ペアリング暗号技術をベースとしているため、鍵サイズや暗号文サイズを小さくすることができ、
効率よく処理できる。また、準同型加算のみならず準同型乗算も実行できるため、高い準同型性を持つ。
また、本実施の形態に係る暗号システムによれば、たとえ同じデータを保管しようとしても毎回異なる暗号化データが生成されるため、頻度分析攻撃などが受けにくくなる。
また、本実施の形態に係る暗号システムによれば、暗号化してデータを保管しているため、たとえ管理装置から暗号化データが漏洩しても、保管データの中身を知られることはない。また、暗号化したままデータ処理ができるため、暗号化データからデータの中身を知られることはない。
また、本実施の形態に係る暗号システムによれば、非特許文献7の合成数位数の群を素数位数の群に変換する効率化手法が直接的に適用できるため、より効率的な準同型暗号技術を実現できる。
また、本実施の形態では、暗号システムは、マスタ鍵生成装置200、ユーザ鍵生成装置300、暗号化装置400、マスタ復号装置500、ユーザ復号装置600、管理装置700の各装置が1つの装置でコンピュータである場合について説明した。しかし、同じコンピュータ(例えば、PC(Personal Computer))内に、マスタ鍵生成装置200、ユーザ鍵生成装置300、暗号化装置400、マスタ復号装置500、ユーザ復号装置600、管理装置700のいずれかが同時に含まれていてもよい。例えば、マスタ復号装置500とユーザ復号装置600と暗号化装置400とが1つのPC内に含まれていてもよい。なお、管理装置700は、独立した装置であることが好ましい。また、マスタ鍵生成装置200とユーザ鍵生成装置300とは、別個の装置でることが好ましい。すかし、上記の実施の形態で説明した機能を実現することができれば、暗号システムの各装置をどのように組み合わせて暗号システムを構成しても構わない。
また、暗号システムの各装置において、「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、暗号システムの各装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せで各装置を構成しても構わない。また、これらの機能ブロックを、任意のブロック構成で各装置を構成しても構わない。
また、本実施の形態のうち、複数を部分的に組合せて実施しても構わない。あるいは、本実施の形態のうち、1つの発明を部分的に実施しても構わない。その他、本実施の形態を、全体としてあるいは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
100 暗号システム、101 インターネット、200 マスタ鍵生成装置、201,301,401,501,601,701 入力部、202 マスタ鍵生成部、203,304,505,605,705 出力部、209,309,409,509,609,709 記憶部、300 ユーザ鍵生成装置、302 マスタ公開鍵保管部、303 ユーザ鍵生成部、400 暗号化装置、402 マスタ公開鍵保管部、403 ユーザ公開鍵保管部、404 暗号化部、405 送信部、500 マスタ復号装置、502 マスタ鍵ペア保管部、503 演算手順設定部、504 復号部、600 ユーザ復号装置、602 ユーザ鍵ペア保管部、603 演算手順設定部、604 復号部、700 管理装置、702 公開鍵保管部、703 データ保管部、704 演算部、510 暗号方法、520 暗号プログラム、909 処理回路、910 プロセッサ、920 記憶装置、930 入力インタフェース、940 出力インタフェース、950 通信装置、921 メモリ、922 補助記憶装置、S100 暗号処理、S10 マスタ鍵生成処理、S20 ユーザ鍵生成処理、S30 マスタ復号処理、S40 ユーザ復号処理、S50 準同型演算処理、S60 演算結果復号処理、P 演算手順。

Claims (9)

  1. 第1のユーザの公開鍵及び秘密鍵をマスタ公開鍵及びマスタ秘密鍵として生成するマスタ鍵生成装置と、
    前記マスタ公開鍵を用いて、第2のユーザの公開鍵及び秘密鍵をユーザ公開鍵及びユーザ秘密鍵として生成するユーザ鍵生成装置と、
    前記ユーザ公開鍵により暗号化された暗号化データを保管するデータ保管部と、データを用いた演算の手順を演算手順として取得し、前記演算手順に用いられるデータが暗号化された暗号化データを前記データ保管部から選択し、前記演算手順に基づいて前記暗号化データに対して準同型演算を行い、準同型演算の演算結果を暗号化演算結果として出力する演算部とを備えた管理装置と、
    前記暗号化演算結果を取得し、取得した前記暗号化演算結果を前記マスタ秘密鍵で復号するマスタ復号装置と
    を備えた暗号システム。
  2. 前記マスタ鍵生成装置は、
    前記マスタ公開鍵及び前記マスタ秘密鍵を前記マスタ復号装置に送信すると共に、前記マスタ公開鍵のみを前記ユーザ鍵生成装置と前記管理装置とに送信する請求項1に記載の暗号システム。
  3. 前記マスタ鍵生成装置は、
    ペアリング写像が計算できる楕円曲線上の巡回群を構成する生成元を用いて、前記マスタ公開鍵及び前記マスタ秘密鍵を生成し、
    前記ユーザ鍵生成装置は、
    前記マスタ公開鍵とランダムに選択された自然数とを用いて、前記ユーザ公開鍵及び前記ユーザ秘密鍵を生成する請求項1または2に記載の暗号システム。
  4. 前記演算部は、
    乗算を含む前記演算手順を取得する請求項1から3のいずれか1項に記載の暗号システム。
  5. 前記暗号システムは、さらに、
    暗号化するデータを取得し、取得したデータを前記ユーザ公開鍵により暗号化し、暗号化したデータを前記暗号化データとして前記管理装置に送信する暗号化装置と、
    前記管理装置から前記暗号化演算結果を取得し、取得した前記暗号化演算結果を前記ユーザ秘密鍵で復号するユーザ復号装置と
    を備える請求項1から4のいずれか1項に記載の暗号システム。
  6. 前記マスタ鍵生成装置は、
    前記マスタ公開鍵及び前記マスタ秘密鍵を前記マスタ復号装置に送信すると共に、前記マスタ公開鍵のみを、前記ユーザ鍵生成装置と前記暗号化装置と前記管理装置とに送信し、
    前記ユーザ鍵生成装置は、
    前記ユーザ公開鍵及び前記ユーザ秘密鍵を前記ユーザ復号装置に送信すると共に、前記ユーザ公開鍵のみを、前記暗号化装置と前記管理装置とに送信する請求項5に記載の暗号システム。
  7. 前記暗号化装置は、
    前記暗号化するデータとユーザを識別するユーザ識別子とを取得し、前記暗号化データと前記ユーザ識別子とを前記管理装置に送信し、
    前記データ保管部は、
    前記暗号化データと前記ユーザ識別子とを対応付けて記憶し、
    前記演算部は、
    前記演算手順と前記第2のユーザのユーザ識別子である第2のユーザ識別子とを取得し、前記演算手順に用いられるデータが暗号化された暗号化データであって前記第2のユーザ識別子に対応付けられた暗号化データを前記データ保管部から選択し、選択した暗号化データに対して前記演算手順に基づいて準同型演算を行う請求項5または6に記載の暗号システム。
  8. マスタ鍵生成装置が、第1のユーザの公開鍵及び秘密鍵をマスタ公開鍵及びマスタ秘密鍵として生成し、
    ユーザ鍵生成装置が、前記マスタ公開鍵を用いて、第2のユーザの公開鍵及び秘密鍵をユーザ公開鍵及びユーザ秘密鍵として生成し、
    管理装置が、データを用いた演算の手順を演算手順として取得し、前記演算手順に用いられるデータを暗号化した暗号化データを、前記ユーザ公開鍵により暗号化された暗号化データが保管されたデータ保管部から選択し、前記演算手順に基づいて前記暗号化データに対して準同型演算を行い、準同型演算の演算結果を暗号化演算結果として出力し、
    マスタ復号装置が、前記暗号化演算結果を取得し、取得した前記暗号化演算結果を前記マスタ秘密鍵で復号する暗号方法。
  9. 第1のユーザの公開鍵及び秘密鍵をマスタ公開鍵及びマスタ秘密鍵として生成するマスタ鍵生成処理と、
    前記マスタ公開鍵を用いて、第2のユーザの公開鍵及び秘密鍵をユーザ公開鍵及びユーザ秘密鍵として生成するユーザ鍵生成処理と、
    データを用いた演算の手順を演算手順として取得し、前記演算手順に用いられるデータを暗号化した暗号化データを、前記ユーザ公開鍵により暗号化された暗号化データを保管するデータ保管部から選択し、前記演算手順に基づいて前記暗号化データに対して準同型演算を行い、準同型演算の演算結果を暗号化演算結果として出力する準同型演算処理と、
    前記暗号化演算結果を取得し、取得した前記暗号化演算結果を前記マスタ秘密鍵で復号する演算結果復号処理と
    をコンピュータに実行させる暗号プログラム。
JP2016168468A 2016-08-30 2016-08-30 暗号システム、暗号方法及び暗号プログラム Active JP6719339B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016168468A JP6719339B2 (ja) 2016-08-30 2016-08-30 暗号システム、暗号方法及び暗号プログラム
CN201780051797.XA CN109643504B (zh) 2016-08-30 2017-08-07 加密系统、加密方法以及计算机可读的存储介质
US16/327,107 US20190190713A1 (en) 2016-08-30 2017-08-07 Encryption system, encryption method, and computer readable medium
PCT/JP2017/028614 WO2018043049A1 (ja) 2016-08-30 2017-08-07 暗号システム、暗号方法及び暗号プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016168468A JP6719339B2 (ja) 2016-08-30 2016-08-30 暗号システム、暗号方法及び暗号プログラム

Publications (2)

Publication Number Publication Date
JP2018036418A JP2018036418A (ja) 2018-03-08
JP6719339B2 true JP6719339B2 (ja) 2020-07-08

Family

ID=61300467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016168468A Active JP6719339B2 (ja) 2016-08-30 2016-08-30 暗号システム、暗号方法及び暗号プログラム

Country Status (4)

Country Link
US (1) US20190190713A1 (ja)
JP (1) JP6719339B2 (ja)
CN (1) CN109643504B (ja)
WO (1) WO2018043049A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113055152B (zh) * 2019-12-26 2022-10-18 郑珂威 基于完全同态加密技术的中间代码加密方法及密文虚拟机系统
CN112769553B (zh) * 2020-12-30 2022-08-19 北京宏思电子技术有限责任公司 嵌入式系统中加快sm9双线性对运算的实现方法及装置
CN115102688B (zh) * 2022-08-24 2022-11-22 北京信安世纪科技股份有限公司 数据处理方法、多项式计算方法及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000174746A (ja) * 1998-09-30 2000-06-23 Hitachi Software Eng Co Ltd デ―タ復号方法および装置
JP2005500740A (ja) * 2001-08-13 2005-01-06 ザ ボード オブ トラスティーズ オブ ザ リーランド スタンフォード ジュニア ユニバーシティ Idベース暗号化および関連する暗号手法のシステムおよび方法
US8630422B2 (en) * 2009-11-10 2014-01-14 International Business Machines Corporation Fully homomorphic encryption method based on a bootstrappable encryption scheme, computer program and apparatus
US8862895B2 (en) * 2010-04-27 2014-10-14 Fuji Xerox Co., Ltd. Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data
JP5790471B2 (ja) * 2011-12-13 2015-10-07 富士通株式会社 暗号処理方法、復号処理方法、装置及びプログラム
JP5921410B2 (ja) * 2012-10-19 2016-05-24 三菱電機株式会社 暗号システム
EP3010173B1 (en) * 2013-07-18 2019-01-16 Nippon Telegraph And Telephone Corporation Key storage device, key storage method, and program therefor
JP6273951B2 (ja) * 2014-03-24 2018-02-07 富士通株式会社 暗号化装置、暗号化方法、情報処理装置および暗号化システム

Also Published As

Publication number Publication date
WO2018043049A1 (ja) 2018-03-08
CN109643504A (zh) 2019-04-16
US20190190713A1 (en) 2019-06-20
JP2018036418A (ja) 2018-03-08
CN109643504B (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
Wang et al. Privacy-preserving public auditing for data storage security in cloud computing
US11233659B2 (en) Method of RSA signature or decryption protected using a homomorphic encryption
US8429408B2 (en) Masking the output of random number generators in key generation protocols
JP3659178B2 (ja) 分散ディジタル署名作成方法及び装置及び分散ディジタル署名付ディジタル文書作成方法及び装置及び分散ディジタル署名作成プログラム及び分散ディジタル署名作成プログラムを格納した記憶媒体
JP4874629B2 (ja) カースルズ−テイトペアリングに基づくデータの暗号処理
JP6058237B1 (ja) 暗号文変換装置、暗号文変換プログラム及び暗号文変換方法
JP5291795B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
JP5618881B2 (ja) 暗号処理システム、鍵生成装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
Lu et al. Efficient searchable public key encryption against keyword guessing attacks for cloud-based EMR systems
Chen Cryptography standards in quantum time: new wine in old wineskin?
US20180278417A1 (en) Apparatus and method for generating key, and apparatus and method for encryption
JP6719339B2 (ja) 暗号システム、暗号方法及び暗号プログラム
Gupta et al. Session key based novel lightweight image encryption algorithm using a hybrid of Chebyshev chaotic map and crossover
Lee et al. Security analysis and modification of ID-based encryption with equality test from ACISP 2017
WO2020240654A1 (ja) 匿名署名システム、署名生成装置、匿名署名生成装置、検証装置、匿名署名方法及びプログラム
Al-Kaabi et al. Methods toward enhancing RSA algorithm: a survey
Barker Cryptographic Standards in the Federal Government: Cryptographic Mechanisms
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
JP6320943B2 (ja) 鍵共有装置、鍵共有システム、鍵共有方法、プログラム
WO2021095103A1 (ja) 電子透かしシステム、電子透かし方法及びプログラム
WO2017203743A1 (ja) 暗号化装置、復号装置及び暗号システム
Joye et al. Traitor tracing schemes for protected software implementations
Imam et al. An empirical study of secure and complex variants of RSA scheme
JP2019029751A (ja) 暗号処理装置、暗号化通信システム、暗号処理方法、および暗号処理プログラム
JP6949276B2 (ja) 再暗号化装置、再暗号化方法、再暗号化プログラム及び暗号システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170613

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20190423

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190423

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: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200616

R150 Certificate of patent or registration of utility model

Ref document number: 6719339

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250