JP7272439B2 - 暗号システム、関数値計算方法及びプログラム - Google Patents

暗号システム、関数値計算方法及びプログラム Download PDF

Info

Publication number
JP7272439B2
JP7272439B2 JP2021532612A JP2021532612A JP7272439B2 JP 7272439 B2 JP7272439 B2 JP 7272439B2 JP 2021532612 A JP2021532612 A JP 2021532612A JP 2021532612 A JP2021532612 A JP 2021532612A JP 7272439 B2 JP7272439 B2 JP 7272439B2
Authority
JP
Japan
Prior art keywords
random number
data
signature
pseudo
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
JP2021532612A
Other languages
English (en)
Other versions
JPWO2021009860A1 (ja
JPWO2021009860A5 (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 JPWO2021009860A1 publication Critical patent/JPWO2021009860A1/ja
Publication of JPWO2021009860A5 publication Critical patent/JPWO2021009860A5/ja
Application granted granted Critical
Publication of JP7272439B2 publication Critical patent/JP7272439B2/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
    • 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
    • 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/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
    • H04L9/3073Public 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 involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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/3247Cryptographic 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 involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Description

本発明は、暗号システム、関数値計算方法及びプログラムに関する。
スマートデバイスやIoT(Internet of Things)デバイスの普及により、ライフログやヘルスデータなどを利活用したサービスが注目を浴びている。これらのデータにはプライバシーに係る情報が多く含まれていることから、プライバシー保護の観点から暗号化したままデータを解析する技術が求められる。
暗号化したままデータを解析する技術の一つとして関数型暗号がある。関数型暗号は暗号文からデータの関数値だけを復号することが可能な暗号方式である。具体的には、鍵発行機関が関数fに応じた秘密鍵s_fを作成する。復号者は鍵発行機関が作成した秘密鍵s_fとユーザが作成したデータx_1、x_2、...、x_nの暗号文CT_1、CT_2、...、CT_nからf(x_1、x_2、...、x_n)を計算できる。その際、x_1、x_2、...、x_nに関する情報が外部に漏洩することは一切ない。
関数型暗号は上述のような魅力的な機能を持つ暗号方式であるが、シミュレーションベースの安全性において、一般的な関数に対する関数型暗号の実現不可能性が報告されている。この実現不可能性を回避するために、安全な実行環境を利用した関数型暗号方式が提案されている。
ここで、安全な実行環境とは実行されたプログラムの途中結果に関する情報は一切漏洩しないような環境を想定している。上記安全な実行環境を利用した関数型暗号方式では、復号者に安全な実行環境内で暗号文を復号し関数を計算させる。その結果、復号者には関数値以外のデータに関する情報は一切漏洩せず、且つ、復号者は関数値を計算することが可能である。
例えば、非特許文献1は、ハードウェアトークンと呼ばれる実行環境の保護されたステートレスなデバイスを用いた関数型暗号方式を提案している。
非特許文献2では、メモリ内に存在する特定アプリケーションのコードとデータを隔離する、ハードウェア支援型のメモリ暗号化機能(以下、メモリ暗号化機能と表記する)を利用した関数型暗号方式が提案されている。
非特許文献3は、メモリ暗号化機能を利用したユーザ単位の制御が可能な複数入力関数型暗号方式を提案している。非特許文献3の方式では、鍵発行機関が各ユーザに乱数を配付する。ユーザは配付された乱数とともにデータを暗号化する。鍵発行機関はユーザに配付した乱数を基にした制御情報を復号者に送信する。復号者は非特許文献2と同様に安全な実行環境内を利用して関数値の計算を試みる。その際、安全な実行環境内で鍵発行機関が発行した制御情報と暗号文内の乱数を利用したユーザ単位の関数への入力の制御が行われ、鍵発行機関が許可したユーザが作成したデータを入力とした関数の関数値しか得ることができない。
Kai-Min Chung ,Jonathan Katz, Hong-Sheng Zhou, "Functional Encryption from(Small) Hardware Tokens.", Cryptology ePrint Archive, Report 2015/153. Ben A. Fisch, Dhinakaran Vinayagamurthy, Dan Boneh, Sergey Gorbunov, "Iron: Functional Encryption using Intel SGX.", Cryptology ePrint Archive, Report 2016/1071. 吉野慎司, 手塚真徹, 品川和雅, 田中圭介, "Intel SGXを用いた入力を制御できる複数入力関数型暗号" in 2019年 暗号と情報セキュリティシンポジウム(SCIS2019), 2019.
安全性をより向上させるために、ユーザ単位よりも細かい粒度の制御を導入することが考えられる。例えば、月ごと、日ごと、分ごとといったデータ単位の制御が考えられる。そのような場合、非特許文献3で提案されている方式を単純に拡張すると以下のような対応が必要になる。
暗号化時には鍵発行機関からユーザへ、ユーザが暗号化するデータの数の乱数を配付する。ユーザは暗号化するデータごとに異なる乱数をと共にデータを暗号化する。鍵発行機関はユーザが各データに埋め込んだ乱数を基にした制御情報を復号者に送信する。復号者は、非特許文献3と同様の方法で安全な実行環境内を利用してデータ単位の関数への入力制御と関数値の計算を行う。
ここで、上記方式により安全性は向上するが、ユーザが暗号化するデータの数の乱数を鍵発行機関からユーザへ送信する必要があり、分ごとや秒ごとなど細かなデータ単位での制御を行う場合、通信コストが多くなる問題が生じる。
本発明は、鍵発行機関からユーザへの通信コストを抑制しつつ、関数への入力をデータ単位で制御することに寄与する暗号システム、関数値計算方法及びプログラムを提供することを主たる目的とする。
本発明の第1の視点によれば、データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化する暗号化装置と、前記暗号化装置が各データの暗号化に利用した疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成する署名装置と、前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算する安全実行装置と、を含む暗号システムが提供される。
本発明の第2の視点によれば、データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化するステップと、前記データの暗号化に利用された疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成するステップと、前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算するステップと、を含む関数値計算方法が提供される。
本発明の第3の視点によれば、コンピュータに、データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化する処理と、前記データの暗号化に利用された疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成する処理と、前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算する処理と、を実行させるプログラムが提供される。
本発明の各視点によれば、鍵発行機関からユーザへの通信コストを抑制しつつ、関数への入力をデータ単位で制御することに寄与する暗号システム、関数値計算方法及びプログラムが提供される。なお、本発明により、当該効果の代わりに、又は当該効果と共に、他の効果が奏されてもよい。
一実施形態の概要を説明するための図である。 第1の実施形態に係る関数型暗号システムの構成の一例を示すブロック図である。 第1の実施形態に係る関数型暗号システムの構成の一例を示すブロック図である。 第1の実施形態に係る関数型暗号システムが実行する鍵生成処理の一例を示すシーケンス図である。 第1の実施形態に係る関数型暗号システムが実行する暗号化準備処理の一例を示すシーケンス図である。 第1の実施形態に係る関数型暗号システムが実行する暗号化処理の一例を示すシーケンス図である。 第1の実施形態に係る関数型暗号システムが実行する復号準備処理の一例を示すシーケンス図である。 第1の実施形態に係る関数型暗号システムが実行する復号処理の一例を示すシーケンス図である。 暗号化装置のハードウェア構成の一例を示す図である。
はじめに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。なお、本明細書及び図面において、同様に説明されることが可能な要素については、同一の符号を付することにより重複説明が省略され得る。
一実施形態に係る暗号システムは、暗号化装置10と、署名装置20と、安全実行装置30と、を含む(図1参照)。暗号化装置10は、データごとに異なる疑似乱数を生成し、生成された疑似乱数をデータと共に暗号化する。署名装置20は、暗号化装置10が各データの暗号化に利用した疑似乱数を再現し、再現された疑似乱数からデータの正当性を証明する制御情報を生成する。安全実行装置30は、データの暗号文を復号して得られた疑似乱数に基づき制御情報を検証し、制御情報の検証に成功した場合に、暗号文を復号して得られたデータの関数値を計算する。
図1に示す暗号システムでは、ユーザ(暗号化装置10)に対し乱数シードが配付される。ユーザは配付された乱数シードを利用して疑似乱数を作成し、データと共に暗号化する。署名装置20は、ユーザに配付された乱数シードを利用してユーザがデータと共に暗号化した疑似乱数を再現し、再現した疑似乱数を利用して制御情報を作成する。安全実行装置30は、安全な実行環境内で暗号文を復号してデータと疑似乱数を得て、疑似乱数を利用して制御情報を検証する。安全実行装置30は、当該検証に成功すれば復号して得たデータを入力とする関数値を計算する。
上記暗号システムでは、ユーザ自身が乱数シードに基づき暗号化時に利用するデータごとに異なる乱数を生成するため、鍵発行機関(乱数シード管理装置)はユーザに対して1つの乱数シードだけを送信すればよい。その結果、ユーザがデータベースに登録するデータ数に依存せず、鍵発行機関から各ユーザへの通信コストは1つの乱数シードに制限され、鍵発行機関から各ユーザへの通信コストを低く抑えることが可能になる。また、上記暗号システムでは、データはデータ単位で暗号化されているため、関数への入力をデータ単位で制御することも可能となる。即ち、本願開示により、関数への入力をデータ単位で制御可能な複数入力関数型暗号システムが提供される。
以下に具体的な実施形態について、図面を参照してさらに詳しく説明する。
本願開示のシステムで言及する公開鍵暗号方式、署名方式、ハッシュ関数、疑似乱数生成方法の詳細な説明は省略する。但し、安全性の観点から、適応的選択暗号文攻撃に対して識別不可能性を持つ公開鍵暗号方式、選択平文攻撃に対して存在的偽造不可能性を持つ署名方式、衝突耐性を持つハッシュ関数、暗号論的疑似乱数生成器等の利用が望ましい。
例えば、公開鍵暗号方式としてRSA-OAEP(Rivest Shamir Adleman Optimal Asymmetric Encryption Padding)等の利用が考えられる。署名方式としてECDSA(Elliptic Curve Digital Signature Algorithm)署名等の利用が考えられる。ハッシュ関数としてSHA-2(Secure Hash Algorithm-2)等の利用が考えられる。疑似乱数生成方法としてAES(Advanced Encryption Standard)のカウンターモード(CTRモード)やハッシュ関数等の利用が考えられる。
本願開示のシステムで扱う安全実行装置は、実行途中の装置内の情報が安全実行装置外に漏洩しないと想定される環境であればよい。例えば、安全実行装置として、上述のメモリ暗号化機能、TEE(Trusted Execution Environment)、ハードウェアトークン、信頼できる第三者が管理する装置が考えられる。
本願開示のシステムでは、ユーザに対し公知で一意なユーザ索引(ユーザ識別子)が割り振られているとする。ユーザ索引は数字でもよいし、文字列でもよい。
本願開示のシステムには、非特許文献2や非特許文献3と同様に復号鍵を安全実行装置に配付する復号鍵配付装置を追加してよい。復号鍵配付装置から安全実行装置に復号鍵を配付する場合、非特許文献2や非特許文献3と同様の手法で復号鍵配付装置と安全実行装置の検証を行うことが望ましい。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
[構成の説明]
図2は、第1の実施形態に係る関数型暗号システム100の構成の一例を示すブロック図である。図2に示すように、関数型暗号システム100は、鍵管理装置110と、暗号化装置120と、乱数シード管理装置130と、暗号文記憶装置140と、復号装置150と、署名装置160と、安全実行装置170を含む。
図2及び図3を参照すると、鍵管理装置110、乱数シード管理装置130及び署名装置160が鍵発行機関に相当する。また、暗号化装置120がユーザに相当する。復号装置150及び安全実行装置170が復号者に相当する。暗号文記憶装置140はユーザが作成した暗号文を記憶するデータベースである。
図2に示すように、鍵管理装置110は、暗号化装置120、乱数シード管理装置130、署名装置160及び安全実行装置170とそれぞれ所定の通信路(例えば、インターネット)を介して接続されている。暗号化装置120は、乱数シード管理装置130及び暗号文記憶装置140と所定の通信路を介して接続されている。乱数シード管理装置130は、署名装置160と所定の通信路を介して接続されている。暗号文記憶装置140は、復号装置150と所定の通信路を介して接続されている。復号装置150は、署名装置160及び安全実行装置170と所定の通信経路を介して接続されている。
なお、各装置はそれぞれ異なる装置に実装される必要はなく、例えば、鍵管理装置110、乱数シード管理装置130及び署名装置160は同じ装置に実装されてもよい。さらに、非特許文献2と同様に署名装置160や鍵管理装置の一部は、安全な実行環境内に実装されてもよい。また、復号装置150と安全実行装置170は、上述のメモリ暗号化機能のように復号装置150内に安全な実行環境が構築できる場合、同じ装置に実装してもよい。
鍵管理装置110は、検証鍵と署名鍵からなる署名鍵ペアと、暗号化鍵と復号鍵からなる暗号鍵ペアと、を生成する装置である。鍵管理装置110は、暗号鍵ペア生成部111と、署名鍵ペア生成部112と、暗号化鍵記憶部113と、復号鍵記憶部114と、検証鍵記憶部115を備える。
暗号化装置120は、データごとに異なる疑似乱数を生成し、当該生成された疑似乱数をデータと共に暗号化する装置である。暗号化装置120は、乱数シード記憶部121と、暗号化鍵記憶部122と、データ入力部123と、ユーザ索引入力部124と、データ索引生成部125、疑似乱数生成部126と、暗号化部127を備える。
乱数シード管理装置130は、暗号化装置120が疑似乱数を生成するための乱数シードを生成すると共に、当該生成された乱数シードを暗号化装置120に配布する装置である。乱数シード管理装置130は、ユーザ索引取得部131と、乱数シード生成部132と、乱数シード記憶部133を備える。
暗号文記憶装置140は、暗号文記憶部141と、索引取得部142を備える。
復号装置150は、署名装置160と安全実行装置170におけるデータの送受信を仲介する装置である。復号装置150は、外部から関数プログラムと、当該関数プログラムに入力するデータの索引と関数プログラムに入力するデータに対応するユーザの索引を対応付けた索引ペアと、取得する。復号装置150は、取得した関数プログラムと索引ペアを署名装置160に送信する。復号装置150は、署名装置160から署名(制御情報)を取得し、当該取得した署名を安全実行装置170に送信する。復号装置150は、関数プログラム入力部151と、暗号文取得部152と、索引入力部153と、署名取得部154と、関数値取得部155を備える。
署名装置160は、暗号化装置120が各データの暗号化に利用した疑似乱数を再現し、当該再現された疑似乱数からデータの正当性(関数プログラムに入力されるデータの送信元であるユーザの正当性)を証明する制御情報を生成する装置である。署名装置160は、署名鍵記憶部161と、関数プログラム取得部162と、暗号文取得部163と、索引取得部164と、乱数シード取得部165と、ハッシュ値計算部166と、疑似乱数生成部167と、署名生成部168を備える。
安全実行装置170は、データの暗号文を復号して得られた疑似乱数に基づき制御情報を検証し、制御情報の検証に成功した場合に、暗号文を復号して得られたデータの関数値を計算する装置である。安全実行装置170は、復号鍵記憶部171と、検証鍵記憶部172と、関数プログラム取得部173と、暗号文取得部174と、署名取得部175と、復号部176と、ハッシュ値計算部177と、署名検証部178と、関数値計算部179を備える。
[動作の説明]
次に、図面を参照して、第1の実施形態に係る関数型暗号システムの全体の動作について詳細に説明する。
第1の実施形態に係る関数型暗号システム100は、鍵生成に係る動作と、暗号化準備に係る動作と、暗号化に係る動作と、復号準備に係る動作と、復号に係る動作を実行する。
鍵生成に係る動作では、鍵管理装置110は、公開鍵暗号のための鍵(暗号化鍵、復号鍵)ペアと署名のための鍵(署名鍵、検証鍵)ペアを生成する。暗号化鍵は暗号化装置120に送信される。署名鍵は署名装置160に送信される。復号鍵及び検証鍵は安全実行装置170に送信される。
暗号化準備に係る動作では、暗号化装置120は、ユーザ索引(ユーザ識別子)をシステム外から受け取る。また、暗号化装置120は、鍵管理装置110から暗号化鍵を受け取る。さらに、暗号化装置120は、乱数シード管理装置130からユーザ索引に紐づいた乱数シードを受け取る。
暗号化に係る動作では、暗号化装置120は、データをシステム外から受け取る。また、暗号化装置120は、ユーザ索引に紐づいた乱数シードと生成したデータ索引から疑似乱数を生成し、データと共に暗号化する。このように、暗号化装置120は、乱数シード管理装置130から配布された乱数シードを用いてデータごとに異なる疑似乱数を生成する。なお、暗号化装置120は、データ索引を外部から受け取ってもよい。暗号化装置120は、得られた暗号文と索引ペア(ユーザ索引とデータ索引からなるペア)を暗号文記憶装置140に送付する。暗号文記憶装置140は、索引ペアと暗号文を紐づけて記憶する。
復号準備に係る動作では、安全実行装置170は、復号鍵と検証鍵を鍵管理装置110から受け取る。
復号に係る動作では、復号装置150は、システム外から関数プログラムと索引ペアのリストを受け取る。また、復号装置150は、索引ペアのリストに対応した暗号文(暗号文のリスト;複数の暗号文からなるリスト)を暗号文記憶装置140から受け取る。
復号装置150は、署名装置160に関数プログラムと索引ペアのリストを送信する。署名装置160は、索引ペアのリストに含まれるユーザ索引のリストに対応する乱数シードのリストを乱数シード管理装置130から受け取る。また、署名装置160は、乱数シードとデータ索引のリストを利用して疑似乱数のリストを生成する。
署名装置160は、作成した疑似乱数のリストの各要素を結合しハッシュ関数(ハッシュ値)を計算する。署名装置160は関数プログラムのハッシュ値と疑似乱数のリストの各要素を結合しハッシュ関数を結合した列に対する署名を生成する。その際、署名装置160は、鍵管理装置110から取得した署名鍵を用いて上記署名を生成する。署名装置160は、生成された署名を復号装置150に送付する。
復号装置150は、暗号文記憶装置140から受け取った暗号文のリストと、署名装置160から受け取った署名と、関数プログラムと、を安全実行装置170に送付する。
安全実行装置170は、復号鍵を用いてデータの暗号文を復号し、検証鍵を用いて制御情報(署名装置160が生成した署名)の検証を行う。具体的には、安全実行装置170は、復号装置150から受け取った暗号文のリストの各暗号文を記憶している復号鍵で復号し、データのリストと疑似乱数のリストを得る。また、安全実行装置170は、関数プログラムのハッシュ値を計算する。その後、安全実行装置170は、復号装置150から受け取った署名を、関数プログラムのハッシュ値と疑似乱数のリストの各要素を結合しハッシュ関数を結合した列と、記憶している検証鍵と、を用いて検証する。
検証に成功すれば、安全実行装置170は、データのリストを入力とする関数プログラムを実行することで関数値を計算し、当該計算された関数値を復号装置150に送信する。
[鍵生成に係る動作]
図4は、鍵生成に際して、第1の実施形態に係る関数型暗号システム100が実行する処理の一例を示すシーケンス図である。図4を参照しながら、第1の実施形態に係る関数型暗号システム100が鍵生成に際して実行する処理について説明する。
鍵管理装置110の署名鍵ペア生成部112は、署名のための署名鍵ペア(sk、vk)を生成する(ステップA1)。署名鍵ペアの生成にあたり、署名鍵ペア生成部112はセキュリティパラメータを受け取り、それに応じた署名鍵ペアをしてもよいし、事前に決められたセキュリティパラメータを利用して署名鍵ペアを生成してもよい。
鍵管理装置110の検証鍵記憶部115は、署名鍵ペア生成部112が生成した署名鍵ペアのうち検証鍵vkを記憶する(ステップA2)。
署名鍵ペア生成部112は、生成した署名鍵ペアのうち署名鍵skを署名装置160に送付する(ステップA3)。
署名装置160の署名鍵記憶部161は、署名鍵skを受け取り記憶する(ステップA4)。
鍵管理装置110の暗号鍵ペア生成部111は、公開鍵暗号のための暗号鍵ペア(ek、dk)を生成する(ステップA5)。暗号鍵ペアの生成にあたり、暗号鍵ペア生成部111は、セキュリティパラメータを受け取り、それに応じた暗号鍵ペアをしてもよいし、事前に決められたセキュリティパラメータを利用して暗号鍵ペアを生成してもよい。
鍵管理装置110の暗号化鍵記憶部113は、暗号鍵ペア生成部111が生成した暗号鍵ペアのうち暗号化鍵ekを記憶する(ステップA6)。
鍵管理装置110の復号鍵記憶部114は、暗号鍵ペア生成部111が生成した暗号鍵ペアのうち復号鍵dkを記憶する(ステップA7)。
[暗号化準備に係る動作]
図5は、暗号化準備に際して、第1の実施形態に係る関数型暗号システム100が実行する処理の一例を示すシーケンス図である。図5を参照しながら、第1の実施形態に係る関数型暗号システム100が暗号化準備に際して実行する処理について説明する。
鍵管理装置110の暗号化鍵記憶部113は、記憶している暗号化鍵ekを暗号化装置120へ送付する(ステップB1)。
暗号化装置120の暗号化鍵記憶部122は、暗号化鍵ekを受け取り、記憶する(ステップB2)。なお、暗号化鍵ekの記憶は鍵生成に係る動作の中で実行されてもよい。
暗号化装置120のユーザ索引入力部124は、システム外からユーザ索引iを受け取る(ステップB3)。
ユーザ索引入力部124は、ユーザ索引iを乱数シード管理装置130に送付する(ステップB4)。
乱数シード管理装置130のユーザ索引取得部131は、ユーザ索引iを受け取る(ステップB5)。
ユーザ索引取得部131は、乱数シード管理装置130の乱数シード生成部132に乱数シードの生成を依頼する。乱数シード生成部132は、当該依頼に応じて、ユーザiの乱数シードs_iを生成する(ステップB6)。乱数シード生成部132は、依頼を受ける前に乱数シードs_iを予め生成しておいてもよい。なお、乱数シードは、当該乱数シードを生成する際の時刻等に基づき生成される。
乱数シード生成部132は、乱数シード記憶部133に乱数シードs_iを送付する。乱数シード記憶部133は、ユーザ索引iと乱数シードs_iを紐づけて記憶する(ステップB7)。
乱数シード記憶部133は、暗号化装置120に乱数シードs_iを送付する(ステップB8)。乱数シード記憶部133の代わりに、乱数シード生成部132が、乱数シードs_iを暗号化装置120に送付してもよい。
暗号化装置120の乱数シード記憶部121は、乱数シードs_iを記憶する(ステップB9)。
[暗号化に係る動作]
図6は、暗号化に際して、第1の実施形態に係る関数型暗号システム100が実行する処理の一例を示すシーケンス図である。図6を参照しながら、第1の実施形態に係る関数型暗号システム100が暗号化に際して実行する処理について説明する。
暗号化装置120は、システム外からデータx_(i、j)を受け取る(ステップC1)。jは、データを識別するための正の整数である(以下同じ)。データx_(i、j)は、ユーザiのj番目のデータを示す。
暗号化装置120のデータ索引生成部125は、一意の自然数であるデータ索引jを生成する(ステップC2)。例えば、データ索引生成部125は、1から順にインクリメントすることによりデータ索引jを生成する。
暗号化装置120の疑似乱数生成部126は、乱数シード記憶部121が記憶している乱数シードs_iとデータ索引jから疑似乱数r_(i、j)を計算する(ステップC3)。具体的には、疑似乱数生成部126は、疑似乱数関数PRNGに乱数シードs_iとデータ索引jを入力することで疑似乱数r_(i、j)を計算する(r_(i、j)=PRNG(s_i、j))。
暗号化装置120の暗号化部127は、データ入力部123が受け取ったデータx_(i、j)と疑似乱数生成部126が生成した疑似乱数r_(i、j)を結合し、結合列x_(i、j)||r_(i、j)を生成する。なお、||は結合を示す演算子である。暗号化部127は、上記結合により得られた結合列を暗号化鍵ekで暗号化することで、暗号文ct_(i、j)=Enc(ek、x_(i、j)||r_(i、j))を生成する(ステップC4)。なお、「Enc」は暗号文生成処理を示す。
暗号化部127は、暗号文記憶装置140に暗号文ct_(i、j)と、暗号文生成に利用した索引ペア(i、j)を送付する(ステップC5)。
暗号文記憶装置140の暗号文記憶部141は、受け取った暗号文ct_(i、j)と索引ペア(i、j)を紐づけて記憶する(ステップC6)。
[復号準備に係る動作]
図7は、復号準備に際して、第1の実施形態に係る関数型暗号システム100が実行する処理の一例を示すシーケンス図である。図7を参照しながら、第1の実施形態に係る関数型暗号システム100が復号準備に際して実行する処理について説明する。
鍵管理装置110の復号鍵記憶部114は、安全実行装置170へ復号鍵dkを送付する(ステップD1)。
安全実行装置170の復号鍵記憶部171は、復号鍵dkを記憶する(ステップD2)。
鍵管理装置110の検証鍵記憶部115は、安全実行装置170へ復号鍵vkを送付する(ステップD3)。
安全実行装置170の検証鍵記憶部172は、復号鍵vkを記憶する(ステップD4)。
[復号に係る動作]
図8は、復号に際して、第1の実施形態に係る関数型暗号システム100が実行する処理の一例を示すシーケンス図である。図8を参照しながら、第1の実施形態に係る関数型暗号システム100が復号に際して実行する処理について説明する。
復号装置150の索引入力部153は、索引ペアのリストl_p=((i、j)、(i、j)、...、(i、j))をシステム外から受け取る(ステップE1)。i、i、...、iはユーザ索引空間に含まれる。また、j、j、...、jはデータ索引空間に含まれる。kは、ユーザi、データjを区別するためのサフィックスである。
索引入力部153は、索引のリストl_pを暗号文記憶装置140に送付する(ステップE2)。
暗号文記憶装置140の索引取得部142は、索引ペアl_pを受け取る(ステップE3)。
索引取得部142は、索引ペアl_pに対応する暗号文のリストl_ct=(c_(i、j)、c_(i、j)、...、c_(i、j))を暗号文記憶部141から取り出し、復号装置150に送付する(ステップE4)。
復号装置150の暗号文取得部152は、暗号文のリストl_ctを受け取る(ステップE5)。
復号装置150の関数プログラム入力部151は、システム外から関数プログラムPを受け取る(ステップE6)。
関数プログラム入力部151は関数プログラムPを、索引入力部153は索引ペアのリストl_pをそれぞれ署名装置160に送付する(ステップE7)。
署名装置160の関数プログラム取得部162は、関数fが実装された関数プログラムPを受け取り、署名装置160の索引取得部164は索引ペアのリストl_pを受け取る(ステップE8)。
関数プログラム取得部162は、ハッシュ値計算部166に関数プログラムPを送信する。ハッシュ値計算部166は、関数プログラムPのハッシュ値h=H(P)を計算する(ステップE9)。
索引取得部164は、ユーザ索引のリストl_u=(i、i、...、i)を乱数シード管理装置130に送付する(ステップE10)。
乱数シード管理装置130のユーザ索引取得部131は、ユーザ索引のリストl_uを受け取る(ステップE11)。
乱数シード記憶部133は、ユーザ索引のリストl_uに対応する乱数シードのリストl_s=(s_(i)、s_(i)、...、s_(i))を署名装置160に送付する(ステップE12)。
署名装置160の乱数シード取得部165は、乱数シードのリストl_sを受け取る(ステップE13)。
署名装置160の疑似乱数生成部167は、乱数シードのリストl_sと、データ索引のリストl_d=(j、j、...、j)から疑似乱数のリストl_rを計算する(ステップE14)。当該リストは以下のように計算される。
l_r=(r_(i、j)、r_(i、j)、...、r_(i、j))
=(PRNG(s_(i)、j)、PRNG(s_(i)、j)、...、PRNG(s_(ik)、jk))
ハッシュ値計算部166は、疑似乱数のリストl_rの各要素を結合する。上記リストl_rの各要素の結合は、
r_(i、j)||r_(i、j)||...||r_(i、j
となる。
ハッシュ値計算部166は、上記リストl_rの各要素の結合のハッシュ値gを計算する(ステップE15)。ハッシュ値gは、
ハッシュ値g=G(r_(i、j)||r_(i、j)||...||r_(i、j))
となる。ここで、ハッシュ関数Gとハッシュ関数Hと同じであってもよいし異なっていてもよい。
署名生成部168は、署名鍵skを用いて関数プログラムPのハッシュ値hとハッシュ値gの結合列h||gに対する署名σ=Sign(sk、h||g)を生成する(ステップE16)。
署名生成部168は、復号装置150に署名σを送付する(ステップE17)。
復号装置150の署名取得部154は、署名σを受け取る(ステップE18)。
復号装置150の関数プログラム入力部151、暗号文取得部152及び署名取得部154は、それぞれ関数プログラムP、暗号文リストl_ct、署名σを安全実行装置170に送付する(ステップE19)。
安全実行装置170の関数プログラム取得部173、暗号文取得部174及び署名取得部175は、それぞれ関数プログラムP、暗号文リストl_ct及び署名σを受け取る(ステップE20)。
安全実行装置170のハッシュ値計算部177は、関数プログラムPのハッシュ値h=H(P)を計算する(ステップE21)。
安全実行装置170の復号部176は、暗号のリストl_ctの各要素を復号して、(x_(i、j)|| r_(i、j)、x_(i、j)|| r_(i、j)、...、x_(i、j)|| r_(i、j))を得る(ステップE22)。
安全実行装置170のハッシュ値計算部177は、復号して得た(x_(i、j)|| r_(i、j)、x_(i、j)|| r_(i、j)、...、x_(i、j)|| r_(i、j))の各要素をデータと疑似乱数に分ける。ハッシュ値計算部177は、当該分けて得られた疑似乱数のリストl_rの各要素を結合したr_(i、j)||r_(i、j)||...||r_(i、j)のハッシュ値gを計算する(ステップE23)。ハッシュ値gは、
ハッシュ値g=G(r_(i、j)||r_(i、j)||...||r_(i、j))
と表記できる。
安全実行装置170の署名検証部178は、検証鍵vkと、関数プログラムのハッシュ値hと、疑似乱数のリストの各要素を結合した値のハッシュ値gを用いて、署名σを検証する(ステップE24)。
ステップE25の検証に成功すれば、安全実行装置170の関数値計算部179は、復号して得たデータのリストl_xを入力とする関数プログラムPを実行させリストl_xを入力とする関数fの関数値を計算する(ステップE25)。当該関数値は、
関数値=f(x_(i、j)、x_(i、j)、...、x_(i、j))
となる。
関数値計算部179は、復号装置150に関数値f(x_(i、j)、x_(i、j)、...、x_(i、j))を送付する(ステップE26)。
復号装置150の関数値取得部155は、関数値f(x_(i、j)、x_(i、j)、...、x_(i、j))を受け取る(ステップE27)。
[効果の説明]
上記実施形態における効果は、鍵発行機関からユーザへの通信コストを低く抑えつつ、データ単位の関数への入力制御が可能なことである。その理由は、以下のような構成を含むからである。即ち、乱数シード管理装置130は、暗号化装置120と署名装置160に乱数シードを送付する。暗号化装置120は、乱数シードとデータ索引からデータごとに異なる疑似乱数を生成し、データとともに暗号化する。署名装置160は、乱数シード管理装置130が管理する乱数シードを利用して暗号化装置120がデータと共に暗号化したデータごとに異なる疑似乱数を再現し、再現した疑似乱数と関数プログラムに基づく署名を生成する。安全実行装置170は、取得した暗号文を復号し、データとデータごとに異なる疑似乱数を得ると共に、署名を疑似乱数と関数プログラムに基づき検証する。署名の検証に成功しなければ、安全実行装置170は、署名装置160が署名生成に利用した疑似乱数を含まない暗号文のデータを関数に入力できない。
以上のように、第1の実施形態に係る暗号システムでは、ユーザ自身が乱数シードを基に暗号化時に利用するデータごとに異なる乱数を生成する。そのため、鍵発行機関からユーザには1つの乱数シードが送信されれば十分である。その結果、ユーザがデータベースに登録するデータ数に依存せず、鍵発行機関から各ユーザへの通信コストは1つの乱数シードに限られ、鍵発行機関から各ユーザへの通信コストを低く抑えることが可能になる。
続いて、関数型暗号システムを構成する各装置のハードウェアについて説明する。図9は、暗号化装置120のハードウェア構成の一例を示す図である。
暗号化装置120は、情報処理装置(所謂、コンピュータ)により構成可能であり、図9に例示する構成を備える。例えば、暗号化装置120は、プロセッサ311、メモリ312、入出力インターフェイス313及び通信インターフェイス314等を備える。上記プロセッサ311等の構成要素は内部バス等により接続され、相互に通信可能に構成されている。
但し、図9に示す構成は、暗号化装置120のハードウェア構成を限定する趣旨ではない。暗号化装置120は、図示しないハードウェアを含んでもよいし、必要に応じて入出力インターフェイス313を備えていなくともよい。また、暗号化装置120に含まれるプロセッサ311等の数も図9の例示に限定する趣旨ではなく、例えば、複数のプロセッサ311が暗号化装置120に含まれていてもよい。
プロセッサ311は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)等のプログラマブルなデバイスである。あるいは、プロセッサ311は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等のデバイスであってもよい。プロセッサ311は、オペレーティングシステム(OS;Operating System)を含む各種プログラムを実行する。
メモリ312は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)等である。メモリ312は、OSプログラム、アプリケーションプログラム、各種データを格納する。
入出力インターフェイス313は、図示しない表示装置や入力装置のインターフェイスである。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
通信インターフェイス314は、他の装置と通信を行う回路、モジュール等である。例えば、通信インターフェイス314は、NIC(Network Interface Card)等を備える。
暗号化装置120の機能は、各種処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ312に格納されたプログラムをプロセッサ311が実行することで実現される。また、当該プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transitory)なものとすることができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、上記プログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。
なお、乱数シード管理装置130等も暗号化装置120と同様に情報処理装置により構成可能であり、その基本的なハードウェア構成は暗号化装置120と相違する点はないので説明を省略する。
[変形例]
なお、上記実施形態にて説明した関数型暗号システム100の構成、動作等は例示であって、システムの構成等を限定する趣旨ではない。例えば、暗号文記憶装置140が存在せず、暗号化装置120と復号装置150が暗号化されたデータを、直接、送受信してもよい。
また、上述の説明で用いた複数のシーケンス図では、複数の工程(処理)が順番に記載されているが、実施形態で実行される工程の実行順序は、その記載の順番に制限されない。実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化する暗号化装置(10、120)と、
前記暗号化装置(10、120)が各データの暗号化に利用した疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成する署名装置(20、160)と、
前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算する安全実行装置(30、170)と、
を含む暗号システム。
[付記2]
前記署名装置(20、160)は、前記データの関数値を得るための関数プログラムと前記再現された疑似乱数に基づき署名を計算し、前記計算された署名を前記制御情報として扱い、
前記安全実行装置(30、170)は、前記計算された署名を検証する、付記1に記載の暗号システム。
[付記3]
前記暗号化装置(10、120)が前記疑似乱数を生成するための乱数シードを生成すると共に、前記生成された乱数シードを前記暗号化装置(10、120)に配布する、乱数シード管理装置(130)をさらに含み、
前記暗号化装置(10、120)は、前記配布された乱数シードを用いて前記データごとに異なる疑似乱数を生成する、付記2に記載の暗号システム。
[付記4]
検証鍵と署名鍵からなる署名鍵ペアと、暗号化鍵と復号鍵からなる暗号鍵ペアと、を生成する、鍵管理装置(110)をさらに含み、
前記鍵管理装置(110)は、前記署名鍵を前記署名装置(20、160)に送信し、前記復号鍵及び前記検証鍵を前記安全実行装置(30、170)に送信する、付記3に記載の暗号システム。
[付記5]
前記署名装置(20、160)は、前記署名鍵を使って前記制御情報を生成する、付記4に記載の暗号システム。
[付記6]
前記安全実行装置(30、170)は、前記復号鍵を用いて前記データの暗号文を復号し、前記検証鍵を用いて前記制御情報の検証を行う、付記4又は5に記載の暗号システム。
[付記7]
外部から前記関数プログラムと、前記関数プログラムに入力するデータの索引と前記関数プログラムに入力するデータに対応するユーザの索引を対応付けた索引ペアと、取得すると共に、前記取得した関数プログラムと索引ペアを前記署名装置(20、160)に送信する、復号装置(150)をさらに含み、
前記署名装置(20、160)は、前記索引ペアに基づき前記疑似乱数を再現するための乱数シードを前記乱数シード管理装置(130)から取得すると共に、前記取得した関数プグラムと乱数シードに基づき前記署名を計算し、前記計算された署名を前記復号装置(150)に送信し、
前記復号装置(150)は、前記受信した署名を前記安全実行装置(30、170)に送信する、付記6に記載の暗号システム。
[付記8]
前記安全実行装置(30、170)は、ハードウェア支援型のメモリ暗号化機能を利用して前記関数値を計算する、付記1乃至7のいずれか一つに記載の暗号システム。
[付記9]
前記安全実行装置(30、170)は、関数型暗号を実行する、付記1乃至8のいずれか一つに記載の暗号システム。
[付記10]
前記署名装置(20、160)は、ECDSA(Elliptic Curve Digital Signature Algorithm)署名を生成する、付記1乃至9のいずれか一つに記載の暗号システム。
[付記11]
データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化するステップと、
前記データの暗号化に利用された疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成するステップと、
前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算するステップと、
を含む関数値計算方法。
[付記12]
コンピュータ(311)に、
データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化する処理と、
前記データの暗号化に利用された疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成する処理と、
前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算する処理と、
を実行させるプログラム。
なお、付記11の形態及び付記12の形態は、付記1の形態と同様に、付記2の形態~付記10の形態に展開することが可能である。
なお、引用した上記の先行技術文献の各開示は、本書に引用をもって繰り込むものとする。以上、本発明の実施形態を説明したが、本発明はこれらの実施形態に限定されるものではない。これらの実施形態は例示にすぎないということ、及び、本発明のスコープ及び精神から逸脱することなく様々な変形が可能であるということは、当業者に理解されるであろう。
10、120 暗号化装置
20、160 署名装置
30、170 安全実行装置
100 関数型暗号システム
110 鍵管理装置
111 暗号鍵ペア生成部
112 署名鍵ペア生成部
113 暗号化鍵記憶部
114 復号鍵記憶部
115 検証鍵記憶部
121 乱数シード記憶部
122 暗号化鍵記憶部
123 データ入力部
124 ユーザ索引入力部
125 データ索引生成部
126 疑似乱数生成部
127 暗号化部
130 乱数シード管理装置
131 ユーザ索引取得部
132 乱数シード生成部
133 乱数シード記憶部
140 暗号文記憶装置
141 暗号文記憶部
142 索引取得部
150 復号装置
151 関数プログラム入力部
152 暗号文取得部
153 索引入力部
154 署名取得部
155 関数値取得部
161 署名鍵記憶部
162 関数プログラム取得部
163 暗号文取得部
164 索引取得部
165 乱数シード取得部
166 ハッシュ値計算部
167 疑似乱数生成部
168 署名生成部
171 復号鍵記憶部
172 検証鍵記憶部
173 関数プログラム取得部
174 暗号文取得部
175 署名取得部
176 復号部
177 ハッシュ値計算部
178 署名検証部
179 関数値計算部
311 プロセッサ
312 メモリ
313 入出力インターフェイス
314 通信インターフェイス

Claims (9)

  1. データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化する暗号化手段と、
    前記暗号化手段が前記疑似乱数を生成するための乱数シードを生成すると共に、前記生成された乱数シードを前記暗号化手段に配布する、乱数シード管理手段と、
    前記暗号化手段が各データの暗号化に利用した疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成する署名手段と、
    前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算する安全実行手段と、
    外部から前記データの関数値を得るための関数プログラムと、前記関数プログラムに入力するデータの索引と前記関数プログラムに入力するデータに対応するユーザの索引を対応付けた索引ペアと、を取得すると共に、前記取得した関数プログラムと索引ペアを前記署名手段に送信する、復号手段とを含み、
    前記暗号化手段は、前記配布された乱数シードを用いて前記データごとに異なる疑似乱数を生成し、
    前記署名手段は、前記索引ペアに基づき前記疑似乱数を再現するための乱数シードを前記乱数シード管理手段から取得すると共に、前記取得した関数プログラムと乱数シードに基づき署名を計算し、前記計算された署名を前記制御情報として前記復号手段に送信し、
    前記復号手段は、前記署名を前記安全実行手段に送信し、
    前記安全実行手段は、前記計算された署名を検証する、暗号システム。
  2. 検証鍵と署名鍵からなる署名鍵ペアと、暗号化鍵と復号鍵からなる暗号鍵ペアと、を生成する、鍵管理手段をさらに含み、
    前記鍵管理手段は、前記署名鍵を前記署名手段に送信し、前記復号鍵及び前記検証鍵を前記安全実行手段に送信する、請求項に記載の暗号システム。
  3. 前記署名手段は、前記署名鍵を使って前記制御情報を生成する、請求項に記載の暗号システム。
  4. 前記安全実行手段は、前記復号鍵を用いて前記データの暗号文を復号し、前記検証鍵を用いて前記制御情報の検証を行う、請求項2又は3に記載の暗号システム。
  5. 前記安全実行手段は、ハードウェア支援型のメモリ暗号化機能を利用して前記関数値を計算する、請求項1乃至のいずれか一項に記載の暗号システム。
  6. 前記安全実行手段は、関数型暗号を実行する、請求項1乃至のいずれか一つに記載の暗号システム。
  7. 前記署名手段は、ECDSA(Elliptic Curve Digital Signature Algorithm)署名を生成する、請求項1乃至のいずれか一つに記載の暗号システム。
  8. データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化するステップと、
    前記疑似乱数を生成するための乱数シードの生成と共に、前記生成された乱数シードを配布するステップと、
    前記データの暗号化に利用された疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成するステップと、
    前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算するステップと、
    外部から前記データの関数値を得るための関数プログラムと、前記関数プログラムに入力するデータの索引と前記関数プログラムに入力するデータに対応するユーザの索引を対応付けた索引ペアと、を取得すると共に、前記取得した関数プログラムと索引ペアを送信するステップとを含み、
    前記暗号化するステップでは、前記配布された乱数シードを用いて前記データごとに異なる疑似乱数を生成し、
    前記制御情報を生成するステップでは、前記索引ペアに基づき前記疑似乱数を再現するための乱数シードを前記配布された乱数シードから取得すると共に、前記取得した関数プログラムと乱数シードに基づき署名を計算し、前記計算された署名を前記制御情報として送信し、
    前記取得した関数プログラムと索引ペアを送信するステップでは、前記署名をさらに送信し、
    前記暗号文を復号して得られたデータの関数値を計算するステップでは、前記計算された署名を検証する、関数値計算方法。
  9. コンピュータに、
    データごとに異なる疑似乱数を生成し、前記生成された疑似乱数をデータと共に暗号化する処理と、
    前記疑似乱数を生成するための乱数シードの生成と共に、前記生成された乱数シードを配布する処理と、
    前記データの暗号化に利用された疑似乱数を再現し、前記再現された疑似乱数から前記データの正当性を証明する制御情報を生成する処理と、
    前記データの暗号文を復号して得られた疑似乱数に基づき前記制御情報を検証し、前記制御情報の検証に成功した場合に、前記暗号文を復号して得られたデータの関数値を計算する処理と、
    外部から前記データの関数値を得るための関数プログラムと、前記関数プログラムに入力するデータの索引と前記関数プログラムに入力するデータに対応するユーザの索引を対応付けた索引ペアと、を取得すると共に、前記取得した関数プログラムと索引ペアを送信する処理とを実行させ、
    前記暗号化する処理では、前記配布された乱数シードを用いて前記データごとに異なる疑似乱数を生成し、
    前記制御情報を生成する処理では、前記索引ペアに基づき前記疑似乱数を再現するための乱数シードを前記配布された乱数シードから取得すると共に、前記取得した関数プログラムと乱数シードに基づき署名を計算し、前記計算された署名を前記制御情報として送信し、
    前記取得した関数プログラムと索引ペアを送信する処理では、前記署名をさらに送信し、
    前記暗号文を復号して得られたデータの関数値を計算する処理では、前記計算された署名を検証する、プログラム。
JP2021532612A 2019-07-17 2019-07-17 暗号システム、関数値計算方法及びプログラム Active JP7272439B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/027996 WO2021009860A1 (ja) 2019-07-17 2019-07-17 暗号システム、関数値計算方法及びプログラム

Publications (3)

Publication Number Publication Date
JPWO2021009860A1 JPWO2021009860A1 (ja) 2021-01-21
JPWO2021009860A5 JPWO2021009860A5 (ja) 2022-03-30
JP7272439B2 true JP7272439B2 (ja) 2023-05-12

Family

ID=74210355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021532612A Active JP7272439B2 (ja) 2019-07-17 2019-07-17 暗号システム、関数値計算方法及びプログラム

Country Status (3)

Country Link
US (1) US20220286280A1 (ja)
JP (1) JP7272439B2 (ja)
WO (1) WO2021009860A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11641347B2 (en) * 2021-03-10 2023-05-02 Quantropi Inc. Quantum-safe cryptographic methods and systems

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11831409B2 (en) * 2018-01-12 2023-11-28 Nok Nok Labs, Inc. System and method for binding verifiable claims

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吉野 慎司, ほか3名,Intel SGXを用いた入力を制御できる複数入力関数型暗号,2019年 暗号と情報セキュリティシンポジウム予稿集,電機情報通信学会,2019年01月15日,p.1-8
宇田 隆哉, ほか1名,IP電話向け音声ストリーム認証手法,情報処理学会論文誌,日本,IP電話向け音声ストリーム認証手法,2006年08月15日,第47巻, 第8号,p.2535-2547

Also Published As

Publication number Publication date
WO2021009860A1 (ja) 2021-01-21
US20220286280A1 (en) 2022-09-08
JPWO2021009860A1 (ja) 2021-01-21

Similar Documents

Publication Publication Date Title
US10785019B2 (en) Data transmission method and apparatus
US9246683B2 (en) Re-encryption key generator, re-encryption apparatus, and program
US7634085B1 (en) Identity-based-encryption system with partial attribute matching
CN103490901B (zh) 基于组合密钥体系的密钥生成和发放方法
EP3068066B1 (en) Private computation on encrypted biometric data using homomorphic encryption
Jarecki et al. Updatable oblivious key management for storage systems
CN109800584A (zh) 一种基于Intel SGX机制的身份或属性加密计算方法和系统
US11870891B2 (en) Certificateless public key encryption using pairings
US11212082B2 (en) Ciphertext based quorum cryptosystem
JP6194886B2 (ja) 暗号化統計処理システム、復号システム、鍵生成装置、プロキシ装置、暗号化統計データ生成装置、暗号化統計処理方法、および、暗号化統計処理プログラム
KR101516114B1 (ko) 인증서 기반 프록시 재암호화 방법 및 이를 위한 시스템
CN111355702B (zh) 安全传输数据集的方法和系统、医学设施和程序产品
KR20160131798A (ko) 연산 에러 검출이 가능한 준동형 암호 방법 및 그 시스템
JP6041864B2 (ja) データの暗号化のための方法、コンピュータ・プログラム、および装置
CN116346318A (zh) 数据共享方法、共享装置、处理器及其系统
EP3010173B1 (en) Key storage device, key storage method, and program therefor
Peng et al. Efficient distributed decryption scheme for IoT gateway-based applications
JP7272439B2 (ja) 暗号システム、関数値計算方法及びプログラム
CN110247761B (zh) 一种格上支持属性撤销的密文策略属性加密方法
Singh et al. Dsse: distributed security shielded execution for communicable cyber threats analysis
Chen et al. The comparisons between public key and symmetric key cryptography in protecting storage systems
KR20170087120A (ko) 무인증서 공개키 암호 시스템 및 수신 단말기
JPWO2021009860A5 (ja)
WO2023181134A1 (ja) 鍵配送システム、鍵配送方法及びプログラム
TWI789115B (zh) 雲端服務的加密系統及加密方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230306

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230410

R151 Written notification of patent or utility model registration

Ref document number: 7272439

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151