JP6980154B2 - データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム - Google Patents

データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム Download PDF

Info

Publication number
JP6980154B2
JP6980154B2 JP2021521579A JP2021521579A JP6980154B2 JP 6980154 B2 JP6980154 B2 JP 6980154B2 JP 2021521579 A JP2021521579 A JP 2021521579A JP 2021521579 A JP2021521579 A JP 2021521579A JP 6980154 B2 JP6980154 B2 JP 6980154B2
Authority
JP
Japan
Prior art keywords
key
polynomial
vector
unit
common parameter
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
JP2021521579A
Other languages
English (en)
Other versions
JPWO2020240646A1 (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
Publication of JPWO2020240646A1 publication Critical patent/JPWO2020240646A1/ja
Application granted granted Critical
Publication of JP6980154B2 publication Critical patent/JP6980154B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Description

本発明は、データの暗号化に関する。
データの暗号化方式として準同型暗号方式(以下、単に「準同型暗号」という)がある。
準同型暗号は、データを暗号化したまま演算ができる暗号化技術である。データを暗号文のまま演算する処理は準同型演算と呼ばれ、準同型演算することが可能な演算の種類及び演算の回数は個々の方式によって異なる。準同型暗号を用いることにより、クラウドサーバなどに、秘匿された状態のデータについての分析を委託することが可能となる。
非特許文献1では、検証可能準同型暗号が説明されている。非特許文献1では、例えば、加法について準同型演算が可能な準同型暗号が利用され、データ供給者からの暗号文データの収集と、収集した暗号文データに対する準同型演算を用いた計算をクラウドサーバなどを用いたアグリゲータに委託する。データ利用者は、最終的な計算結果のみを入手することができ、また、委託した準同型演算が正しく実行されたことを検証することができる。
K.Ohara,Y.Sakai,F.Yoshida,M.Iwamoto,and K.Ohata. "Privacy−Preserving Smart Metering with Verifiability for both Billing and Energy Management",AsiaPKC@AsiaCCS,pp23−32,ACM,2014
非特許文献1に記載の方法では、暗号化装置への入力として、署名鍵と公開鍵の他にコミットメント鍵と呼ばれる鍵が必要である。
本発明は、暗号化装置へのコミットメント鍵の入力が不要な構成を実現することを主な目的とする。
本発明に係るデータ利用者鍵生成装置は、
共通パラメータppを受信する受信部と、
前記共通パラメータppを用いて鍵を生成する鍵生成部とを有し、
前記共通パラメータppには、少なくとも、
多項式環R=Z[X]/<X+1>と、
前記多項式環R上の分布χと、
パラメータλに依存して決定される2以上の整数である整数qと、
任意の2の冪数であるNとが含まれ、
前記鍵生成部は、
前記分布χから多項式s’を選択し、選択した多項式s’をベクトル化してベクトルsを取得し、
前記多項式環Rの要素である多項式の複数の係数の各々を前記整数qで除算して得られる余りが複数の係数の各々である多項式を要素にもつ多項式環RからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルaを取得し、
前記分布χからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルeを取得し、
任意の整数pを用いて、b=s’a+peを計算して、ベクトルbを取得し、
前記ベクトルbとベクトル(−a)とを連結して、N×2の行列A1を生成する。
以上のようにして生成された行列A1は暗号化鍵として用いることができるとともに、コミットメント鍵の生成が可能である。このため、本発明によれば、暗号化装置へのコミットメント鍵の入力が不要となる。
実施の形態1に係る秘匿情報処理システムの構成例を示す図。 実施の形態1に係る共通パラメータ生成装置の機能構成例を示す図。 実施の形態1に係るデータ供給者鍵生成装置の機能構成例を示す図。 実施の形態1に係るデータ利用者鍵生成装置の機能構成例を示す図。 実施の形態1に係る暗号化装置の機能構成例を示す図。 実施の形態1に係る準同型演算装置の機能構成例を示す図。 実施の形態1に係る復号装置の機能構成例を示す図。 実施の形態1に係る共通パラメータ生成装置の動作例を示すフローチャート。 実施の形態1に係るデータ供給者鍵生成装置の動作例を示すフローチャート。 実施の形態1に係るデータ利用者鍵生成装置の動作例を示すフローチャート。 実施の形態1に係る暗号化装置の動作例を示すフローチャート。 実施の形態1に係る準同型演算装置の動作例を示すフローチャート。 実施の形態1に係る復号装置の動作例を示すフローチャート。 実施の形態1に係る共通パラメータ生成装置のハードウェア構成例を示す図。 実施の形態1に係るデータ供給者鍵生成装置のハードウェア構成例を示す図。 実施の形態1に係るデータ利用者鍵生成装置のハードウェア構成例を示す図。 実施の形態1に係る暗号化装置のハードウェア構成例を示す図。 実施の形態1に係る準同型演算装置のハードウェア構成例を示す図。 実施の形態1に係る復号装置のハードウェア構成例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
実施の形態1.
***構成の説明***
図1は、本実施の形態に係る秘匿情報処理システム100の構成例を示す。
図1に示すように、秘匿情報処理システム100は、共通パラメータ生成装置200と、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700とを有する。
インターネット101は、共通パラメータ生成装置200と、データ供給者鍵生成装置300と、データ利用者鍵生成装置400と、暗号化装置500と、準同型演算装置600と、復号装置700とを接続する通信路である。インターネット101はネットワークの例である。インターネット101の代わりに、他の種類のネットワークが用いられてもよい。
共通パラメータ生成装置200は、例えば、PC(Personal Computer)である。
共通パラメータ生成装置200は、秘匿情報処理システム100で共通に用いられるパラメータである共通パラメータを生成する。更に、共通パラメータ生成装置200は、生成した共通パラメータを、インターネット101を介して、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700へ送信する。
データ供給者鍵生成装置300は、例えば、PCである。
データ供給者鍵生成装置300は、署名鍵と検証鍵を生成する。そして、データ供給者鍵生成装置300は、署名鍵を暗号化装置500へ送信する。また、データ供給者鍵生成装置300は、検証鍵を、復号装置700へ送信する。
データ利用者鍵生成装置400は、例えば、PCである。
データ利用者鍵生成装置400は、公開鍵と秘密鍵を生成する。そして、データ利用者鍵生成装置400は、公開鍵を暗号化装置500へ送信する。また、データ利用者鍵生成装置400は、秘密鍵を復号装置700へ送信する。
暗号化装置500は、例えば、PCである。
暗号化装置500は、データ供給者鍵生成装置300から署名鍵を受信する。また、暗号化装置500は、データ利用者鍵生成装置400から公開鍵を受信する。そして、暗号化装置500は、外部から入力された平文データ(以下、単に「平文」という)を公開鍵及び署名鍵を用いて暗号化し、暗号化により得られた暗号文データ(以下、単に「暗号文」という)を出力する。
準同型演算装置600は、例えば、大容量の記憶媒体を持つ計算機である。
準同型演算装置600は、データ保管装置としても機能する。
すなわち、準同型演算装置600は、暗号化装置500から暗号文の保管要求があれば、暗号文を保管する。
準同型演算装置600は、保管している暗号文に対して準同型演算を行う。準同型演算装置600は、保管している暗号文と、入力された演算から、演算後暗号文を生成する。また、準同型演算装置600は、演算後暗号文を復号装置700へ送信する。
復号装置700は、例えば、PCである。
復号装置700は、データ供給者鍵生成装置300から検証鍵を受信する。また、復号装置700は、データ利用者鍵生成装置400から秘密鍵を受信する。また、復号装置700は、準同型演算装置600から演算後暗号文を受信する。そして、復号装置700は、外部から入力された演算と、秘密鍵と、検証鍵とを用いて、演算後暗号文の復号結果を出力する。
なお、図1では、データ供給者鍵生成装置300と暗号化装置500が異なる計算機で実現されている。データ供給者鍵生成装置300と暗号化装置500とが同じ計算機で実現されていてもよい。つまり、単一のPCにデータ供給者鍵生成装置300の機能と暗号化装置500の機能とが含まれていてもよい。
00000
また、図1では、共通パラメータ生成装置200と、データ利用者鍵生成装置400と、復号装置700とが異なる計算機で実現されている。共通パラメータ生成装置200と、データ利用者鍵生成装置400と、復号装置700のうちの少なくとも2つが同じ計算機で実現されていてもよい。つまり、単一のPCに共通パラメータ生成装置200の機能とデータ利用者鍵生成装置400の機能と復号装置700の機能のうちの少なくとも2つが含まれていてもよい。
図2は、共通パラメータ生成装置200の機能構成例を示す。
図2に示すように、共通パラメータ生成装置200は、入力部201と、共通パラメータ生成部202と、送信部203を有する。
図示していないが、共通パラメータ生成装置200は、共通パラメータ生成装置200の各要素で使用されるデータを記憶する記憶装置を有する。
入力部201は、パラメータλを受信する。そして、入力部201は、受信したパラメータλを共通パラメータ生成部202へ送信する。
共通パラメータ生成部202は、入力部201からパラメータλを受信する。そして、共通パラメータ生成部202は、パラメータλを用いて、秘匿情報処理システム100で共通に用いられる共通パラメータppを生成する。共通パラメータ生成部202は、生成した共通パラメータppを送信部203へ送信する。
図示していないが、共通パラメータ生成部202は、共通パラメータppを生成するために、乱数生成機能を有してもよい。
送信部203は、共通パラメータ生成部202で生成された共通パラメータppを、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700へ送信する。
図3は、データ供給者鍵生成装置300の機能構成例を示す。
図3に示すように、データ供給者鍵生成装置300は、受信部301と、鍵生成部302と、送信部303を有する。
図示していないが、データ供給者鍵生成装置300は、データ供給者鍵生成装置300の各要素で使用されるデータを記憶する記憶装置を有する。
受信部301は、共通パラメータ生成装置200から共通パラメータppを受信する。そして、受信部301は、共通パラメータppを鍵生成部302へ送信する。
鍵生成部302は、受信部301から共通パラメータppを受信する。そして、鍵生成部302は、共通パラメータppを用いて、署名鍵sskと検証鍵spkを生成する。そして、鍵生成部302は、生成した署名鍵sskと検証鍵spkを送信部303へ送信する。
図示していないが、鍵生成部302は、署名鍵sskと検証鍵spkを生成するために、乱数生成機能を有してもよい。
送信部303は、鍵生成部302で生成された署名鍵sskを、暗号化装置500へ送信する。
また、送信部303は、鍵生成部302で生成された検証鍵spkを復号装置700へ送信する。
図4は、データ利用者鍵生成装置400の機能構成例を示す。
データ利用者鍵生成装置400の動作手順は、鍵生成方法に相当する。また、データ利用者鍵生成装置400の動作を実現するプログラムは、鍵生成プログラムに相当する。
図4に示すように、データ利用者鍵生成装置400は、受信部401と、鍵生成部402と、送信部403を有する。
図示していないが、データ利用者鍵生成装置400は、データ利用者鍵生成装置400の各要素で使用されるデータを記憶する記憶装置を有する。
受信部401は、共通パラメータ生成装置200から共通パラメータppを受信する。そして、受信部401は、受信した共通パラメータppを鍵生成部402へ送信する。
受信部401により行われる処理は受信処理に相当する。
鍵生成部402は、受信部401から共通パラメータppを受信する。そして、鍵生成部402は、共通パラメータppを用いて、公開鍵vpkと秘密鍵vskを生成する。そして、鍵生成部402は、生成した公開鍵vpkと秘密鍵vskを送信部403へ送信する。
図示していないが、鍵生成部402は、公開鍵vpkと秘密鍵vskを生成するために、乱数生成機能を有してもよい。
鍵生成部402により行われる処理は鍵生成処理に相当する。
送信部403は、鍵生成部402で生成された公開鍵vpkを、暗号化装置500へ送信する。また、送信部403は、鍵生成部402で生成された秘密鍵vskを復号装置700へ送信する。
図5は、暗号化装置500の機能構成例を示す。
図5に示すように、暗号化装置500は、受信部501と、鍵保管部502と、入力部503と、暗号化部504と、送信部505を有する。
図示していないが、暗号化装置500は、暗号化装置500の各要素で使用されるデータを記憶する記憶装置を有する。
受信部501は、データ供給者鍵生成装置300から署名鍵sskを受信する。また、受信部501は、データ利用者鍵生成装置400から公開鍵vpkを受信する。そして、受信部501は、受信した署名鍵sskと公開鍵vpkを鍵保管部502へ送信する。
鍵保管部502は、受信部501から、署名鍵sskと公開鍵vpkを受信し、受信した署名鍵sskと公開鍵vpkを保管する。
入力部503は、外部から平文mを受信する。そして、入力部503は、受信した平文mを暗号化部504へ送信する。
暗号化部504は、鍵保管部502から署名鍵sskと公開鍵vpkを受信する。また、暗号化部504は、入力部503から平文mを受信する。そして、暗号化部504は、受信した平文mに、署名鍵sskと公開鍵vpkと適用して、暗号文cを生成する。そして、暗号化部504は、生成した暗号文cを送信部505へ送信する。
図示していないが、暗号化部504は、暗号文cを生成するために、乱数生成機能を有してもよい。
送信部505は、暗号化部504で生成された暗号文cを、準同型演算装置600へ送信する。
図6は、準同型演算装置600の機能構成例を示す。
図6に示すように、準同型演算装置600は、受信部601と、暗号文保管部602と、入力部603と、準同型演算部604と、送信部605を有する。
図示していないが、準同型演算装置600は、準同型演算装置600の各要素で使用されるデータを記憶する記憶装置を有する。
受信部601は、暗号化装置500から暗号文cを受信する。そして、受信部601は、受信した暗号文cを暗号文保管部602へ送信する。
暗号文保管部602は、受信部601から暗号文cを受信し、受信した暗号文cを保管する。
入力部603は、外部から演算fを受信し、受信した演算fを準同型演算部604へ送信する。
準同型演算部604は、暗号文保管部602から複数の暗号文cと、入力部603から演算fを受信する。そして、準同型演算部604は、複数の暗号文cに演算fを行って、演算後暗号文c*を生成し、生成した演算後暗号文c*を送信部605へ送信する。
送信部605は、準同型演算部604で生成された演算後暗号文c*を、復号装置700へ送信する。
図7は、復号装置700の機能構成例を示す。
図7に示すように、復号装置700は、受信部701と、鍵保管部702と、入力部703と、復号処理部704と、送信部705を有する。
図示していないが、復号装置700は、復号装置700の各要素で使用されるデータを記憶する記憶装置を有する。
受信部701は、データ供給者鍵生成装置300から検証鍵spkを受信する。また、受信部701は、データ利用者鍵生成装置400から秘密鍵vskを受信する。そして、受信部701は、受信した検証鍵spkと秘密鍵vskとを鍵保管部702へ送信する。
また、受信部701は、準同型演算装置600から演算後暗号文c*を受信し、受信した演算後暗号文c*を復号処理部704へ送信する。
鍵保管部702は、受信部701から検証鍵spkと秘密鍵vskを受信し、受信した検証鍵spkと秘密鍵vskを保管する。
入力部703は、外部から演算fを受信し、受信した演算fを復号処理部704へ送信する。
復号処理部704は、鍵保管部702から検証鍵spkと秘密鍵vskと、演算後暗号文c*とを受信する。また、復号処理部704は、入力部703から演算fを受信する。そして、復号処理部704は、受信した演算後暗号文c*に検証鍵spkと秘密鍵vskと演算fを適用して、復号結果m*を生成し、生成した復号結果m*を送信部705へ送信する。
送信部805は、復号処理部804で生成された復号結果m*を出力する。
***動作の説明***
次に、本実施の形態に係る秘匿情報処理システム100に含まれる各装置の動作例を説明する。
なお、各装置の動作例を説明する前に、以下で説明における記法と定義を説明する。
非特許文献1に記載の方法は、離散対数に基づく暗号方式を用いて構成されている。しかし、このような暗号方式は、量子コンピュータが実用化された場合、安全性が失われてしまうことが知られている。本実施の形態では、量子コンピュータに対しても耐性があるとされている格子暗号が用いられる。このように、本実施の形態においては、耐量子性を持つ任意の電子署名方式を利用できるため、利用する電子署名アルゴリズムを一般化して(Gen,Sig,Ver)として表す。
[a||b]は、ベクトルまたは行列aとベクトルまたは行列bとの連結を表す。
行列Aに対してAを、行列Aに対する転置行列とする。
自然数nに対してIを(n×n)の単位行列とする。
任意の自然数nと多項式環Rに対して、Rを多項式環Rの要素である多項式の複数の係数の各々をnで除算して得られた余りが複数の係数の各々である多項式を要素に持つ多項式環とする。
図8は、共通パラメータ生成装置200の動作例を示すフローチャートである。
ステップS201において、入力部201は、パラメータλを受信し、受信したパラメータλを共通パラメータ生成部202へ送信する。
ステップS202において、共通パラメータ生成部202は、パラメータλをもとにセットアップアルゴリズムSetupを実行し、共通パラメータppを生成する。そして、共通パラメータ生成部202は、生成した共通パラメータppを送信部203へ送信する。
セットアップアルゴリズムSetupは、例えば、以下のような、共通パラメータppを生成するアルゴリズムである。
Setup(1λ):
qをパラメータλに依存して決定される2以上の整数とする。
Nを任意の2の冪数とし、kを(N+2)以下の整数とする。
χを、多項式環R=Z[X]/<X+1>上の分布とする。なお、多項式環Rに含まれる「Z」はベクトルである。
βを任意の整数p以下の小さな整数とする。
共通パラメータpp=(λ,q,N,k,β,R,χ)とする。
ステップS203において、送信部203は、共通パラメータppを、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700へ送信する。
図9は、データ供給者鍵生成装置300の動作例を示すフローチャートである。
ステップS301において、受信部301は、共通パラメータ生成装置200から共通パラメータppを受信し、受信した共通パラメータppを鍵生成部302へ送信する。
ステップS302において、鍵生成部302は、共通パラメータppをもとにデータ供給者鍵生成アルゴリズムSKGenを実行し、署名鍵sskと検証鍵spkを生成する。
そして、鍵生成部302は、生成した署名鍵sskと検証鍵spkを送信部303へ送信する。
データ供給者鍵生成アルゴリズムSKGenは、例えば、以下のような、署名鍵sskと検証鍵spkを生成するアルゴリズムである。
SKGen(pp):
署名鍵生成アルゴリズムSig(1λ)を実行し、生成された署名鍵skと検証鍵pkを、SKGenアルゴリズムの出力(ssk,spk)=(sk,pk)として出力する。
ステップS303において、送信部303は、鍵生成部302で生成された署名鍵sskを暗号化装置500へ送信し、検証鍵spkを復号装置700へ送信する。
図10は、データ利用者鍵生成装置400の動作例を示すフローチャートである。
ステップS401において、受信部401は、共通パラメータ生成装置200から共通パラメータppを受信し、受信した共通パラメータppを鍵生成部402へ送信する。
ステップS402において、鍵生成部402は、共通パラメータppをもとにデータ利用者鍵生成アルゴリズムVKGenを実行し、公開鍵vpkと秘密鍵vskを生成する。
そして、鍵生成部402は、生成した公開鍵vpkと秘密鍵vskを送信部403へ送信する。
データ利用者鍵生成アルゴリズムVKGenは、例えば、以下のような、公開鍵vpkと秘密鍵vskを生成するアルゴリズムである。
VKGen(pp):
分布χから多項式s’を選択し、s=[1||s’]により、選択した多項式s’をベクトル化してベクトルsを取得する。
多項式環RからN個の多項式をランダムに選択し、選択したN個の多項式をベクトル化してベクトルaを取得する。
分布χからN個の多項式を選択し、選択したN個の多項式をベクトル化してベクトルeを取得する。
整数pを用いて、b=s’a+peを計算して、ベクトルbを取得する。
A1=[b||−a]により、ベクトルbとベクトル(−a)とを連結して、(N×2)の行列A1を生成する。
(vpk,vsk)=(A1,(s,A1))を出力する。つまり、行列A1はそのまま公開鍵vpkとして用いられる。
ステップS403において、送信部403は、鍵生成部402で生成された公開鍵vpkを暗号化装置500へ送信し、秘密鍵vskを復号装置700へ送信する。
なお、後述するように、暗号化装置500は、公開鍵vpk、つまり行列A1を、データ暗号化のための暗号化鍵として用いることができ、更に、行列A1から準同型演算のコミットメント鍵を生成することができる。
図11は、暗号化装置500の動作例を示すフローチャートである。
ステップS501において、受信部501は、データ供給者鍵生成装置300から署名鍵sskを受信し、データ利用者鍵生成装置400から公開鍵vpkを受信する。そして、受信部501は、受信した署名鍵sskと公開鍵vpkを鍵保管部502へ送信する。
ステップS502において、鍵保管部502は、署名鍵sskと公開鍵vpkを受信し、受信した署名鍵sskと公開鍵vpkを保管する。
ステップS503において、入力部503は、平文mを受信し、受信した平文mを暗号化部504へ送信する。
ステップS504において、暗号化部504は、署名鍵sskと公開鍵vpkと平文mをもとに暗号化アルゴリズムEncを実行し、暗号文cを生成する。そして、暗号化部504は、生成した暗号文cを送信部505へ送信する。
暗号化アルゴリズムEncは、例えば、以下のような、暗号文cを生成するアルゴリズムである。
Enc(ssk,vpk,m∈R):
任意の文字列からなるタグtを生成する。タグtは暗号文cごとに一意に生成される必要がある。タグtは、例えば、署名鍵sskに対応するindexと暗号文cの生成時刻から生成される。
暗号文cは次の要素(c1,{c2.1,…,c2.k},C,σ)と署名鍵sskに対応するindexから構成される。
1.多項式環RからN個の多項式をランダムに選択し、選択した多項式をベクトル化してベクトルr1を取得する。
c1=[m||0]+(A1)・r1により、ベクトルc1を取得する。
2.多項式環Rから係数の最大値がβ以下となる多項式をk個ランダムに選択し、選択結果をr2=(r2.1,…,r2.k)と定義する。
(N×2)の行列である行列A1(公開鍵vpk)から、任意の位置の(k−2)×2の行列を抽出し、抽出した行列を転置して、行列A2’を取得する。
A2=[I||A2’]により行列A2を取得する。
C=A2・r2+[0||m]により、コミットメント鍵Cを取得する。
3.{1,…,k}の全ての要素iに対して、以下を行う。
多項式環RからN個の多項式をランダムに選択し、選択した多項式をベクトル化しベクトルr3.iを取得する。
c2.i=[r2.i||0]+(A1)・r3.iを計算する。
4.署名アルゴリズムSig(ssk,C||t)を実行し、実行結果を署名σとして取得する。
最後に、署名鍵sskに対応するindexと暗号文c(c1,(c2.1,…,c2.k),C,σ)を出力する。
ステップS505において、送信部505は、暗号化部504で生成された暗号文cを、準同型演算装置600へ送信する。
図12は、準同型演算装置600の動作例を示すフローチャートである。
ステップS601において、受信部601は、暗号化装置500から暗号文cを受信し、受信した暗号文cを暗号文保管部602へ送信する。
ステップS602において、暗号文保管部602は、暗号文cを受信し、受信した暗号文cを保管する。
ステップS603において、入力部603は、演算fを受信し、受信した演算fを準同型演算部604へ送信する。
ステップS604において、準同型演算部604は、保管された複数の暗号文cと演算fをもとに準同型演算アルゴリズムEvalを実行し、演算後暗号文c*を生成する。そして、準同型演算部604は、生成した演算後暗号文c*を送信部605へ送信する。
ここでは、例として、暗号文c(1)=(index(1),(c1(1),(c2.1(1),…,c2.k(1)),C(1),σ(1))),…,c(h)=(index(h),(c1(h),(c2.1(h),…,c2.k(h)),C(h),σ(h)))と演算f(m1,…,mh)=w1・m1+…+wh・mhを用いて説明する。このとき、c(1)からc(h)は、すべて同じindexに対応する暗号文でもよい。また、c(1)からc(h)は、すべて異なるindexに対応する暗号文でもよい。また、c(1)からc(h)は、一部が同じindexに対応する暗号文でもよい。
Figure 0006980154
ステップS605において、送信部605は、準同型演算部604で生成された演算後暗号文c*を、復号装置700へ送信する。
図13は、復号装置700の動作例を示すフローチャートである。
ステップS701において、受信部701は、データ供給者鍵生成装置300から検証鍵spkを受信し、データ利用者鍵生成装置400から秘密鍵vskを受信し、受信した検証鍵spkと秘密鍵vskを鍵保管部702へ送信する。
ステップS702において、鍵保管部702は、検証鍵spkと秘密鍵vskを受信し、受信した検証鍵spkと秘密鍵vskを保管する。
ステップS703において、受信部701は、準同型演算装置600から演算後暗号文c*を受信し、受信した演算後暗号文c*を復号処理部704へ送信する。
ステップS704において、入力部703は、演算fを受信し、受信した演算fを復号処理部704へ送信する。
ステップS705において、復号処理部704は、複数の検証鍵spkと秘密鍵vskと演算後暗号文c*と演算fをもとに復号アルゴリズムDecを実行し、復号結果m*を生成し、送信部705へ送信する。ここでは、例として、以下に示す演算後暗号文c*と演算f(m1,…,mh)=w1・m1+…+wh・mhを用いて説明する。
Figure 0006980154
Dec(spk(1),…,spk(h),vsk,c*,f):
Encアルゴリズムで使用した、暗号文cに一意に対応するタグtを復元する。例えば、indexと暗号文cの生成時刻からタグtを復元する。
次に、以下のステップ(1)からステップ(5)を順に実行する。
(1){1,…,h}の全ての要素iについて、検証アルゴリズムVer(spk(i),C(i)||t,σ(i))を実行し、すべてのiについて検証を通過した場合、次のステップに進む。すべてのiについて検証を通過しない場合は、エラーを表す記号⊥を出力して動作を停止する。
Figure 0006980154
ステップS706において、送信部705は、復号処理部704で生成された復号結果m*を出力する。
***実施の形態の効果の説明***
非特許文献1に記載の方法では、暗号化装置への入力として、署名鍵と公開鍵の他にコミットメント鍵と呼ばれる鍵が必要である。本実施の形態によれば、暗号化装置500において行列A1からコミットメント鍵の生成が可能である。このため、暗号化装置500には、署名鍵と公開鍵(行列A1)のみ入力すればよく、管理すべき鍵の個数を減らすことができる。
非特許文献1に記載の方法は、離散対数に基づく暗号方式を用いて構成されている。しかし、このような暗号方式は、量子コンピュータが実用化された場合、その安全性が失われてしまうことが知られている。本実施の形態では、量子コンピュータに対しても耐性があるとされている格子暗号を用いているため、量子コンピュータが実用化された場合でも、安全性が失われない。
また、本実施の形態では、準同型演算装置600を用いることにより、クラウドサーバなどを用いたアグリゲータに安全にデータの収集と計算を委託することができる。ここで、「安全に」の意味は、データ供給者のデータがアグリゲータとデータ利用者に漏れないこと、計算結果がデータ供給者とアグリゲータに漏れないこと、計算結果が正しい演算によるものであることを確認可能であることを指す。
また、本実施の形態では、準同型演算装置600が実行した演算fと、復号装置700に入力する演算f’が一致する場合のみ、復号装置700が復号結果m*を出力する。そのため、準同型演算装置600が正しく演算fを実行しなかった場合、演算fと演算f’とが一致せず、復号装置700による復号結果を得られない。このため、復号装置700が実行した演算が正しくなかったことを検出することができる。
***ハードウェア構成の説明***
最後に、共通パラメータ生成装置200と、データ供給者鍵生成装置300と、データ利用者鍵生成装置400と、暗号化装置500と、準同型演算装置600と、復号装置700のハードウェア構成例を説明する。
図14は、共通パラメータ生成装置200のハードウェア構成例を示す。
図14に示すように、共通パラメータ生成装置200は、プロセッサ251を備えている。プロセッサ251は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ251は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
プロセッサ251はバス252を介してROM(Read Only Memory)253、RAM(Random Access Memory)254、通信ボード255、ディスプレイ256、キーボード257、マウス258、ドライブ259、磁気ディスク装置260などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。
ドライブ259は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする機器である。ROM253、RAM254、磁気ディスク装置260及びドライブ259は記憶装置の一例である。キーボード257、マウス258および通信ボード255は入力装置の一例である。ディスプレイ256および通信ボード255は出力装置の一例である。通信ボード255は有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。磁気ディスク装置260には、OS261(Operating System)、プログラム262及びファイル263が記憶されている。
プログラム262は、入力部201、共通パラメータ生成部202及び送信部203の機能を実行するプログラムである。プログラム262は、プロセッサ251により読み出され実行される。すなわち、プログラム262は、入力部201、共通パラメータ生成部202及び送信部203としてコンピュータを機能させる。また、プログラム262は、入力部201、共通パラメータ生成部202及び送信部203の手順や方法をコンピュータに実行させる。
プログラム262は、磁気ディスク、FD、光ディスク、CD、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、プログラム262が格納された可搬記録媒体を商業的に流通させてもよい。
また、プロセッサ251は、OS261の少なくとも一部を実行する。
プロセッサ251はOS261の少なくとも一部を実行しながら、プログラム262を実行する。
プロセッサ901がOS261を実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
なお、図14は、プログラム262が実行されている状態を示す。つまり、図14は、プログラム262がプロセッサ251にロードされ、プロセッサ251が入力部201、共通パラメータ生成部202及び送信部203として動作している状態を示す。
ファイル263には、入力部201、共通パラメータ生成部202及び送信部203で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
入力部201、共通パラメータ生成部202及び送信部203の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、共通パラメータ生成装置200は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
図15は、データ供給者鍵生成装置300のハードウェア構成例を示す。
図16は、データ利用者鍵生成装置400のハードウェア構成例を示す。
図17は、暗号化装置500のハードウェア構成例を示す。
図18は、準同型演算装置600のハードウェア構成例を示す。
図19は、復号装置700のハードウェア構成例を示す。
データ供給者鍵生成装置300、データ利用者鍵生成装置400、暗号化装置500、準同型演算装置600及び復号装置700のハードウェア構成は、共通パラメータ生成装置200のハードウェア構成と同じである。
つまり、データ供給者鍵生成装置300は、プロセッサ351、バス352、ROM353、RAM354、通信ボード355、ディスプレイ356、キーボード357、マウス358、ドライブ359及び磁気ディスク装置360で構成される。そして、磁気ディスク装置360には、OS361、プログラム362及びファイル363が含まれる。
データ利用者鍵生成装置400は、プロセッサ451、バス452、ROM453、RAM454、通信ボード455、ディスプレイ456、キーボード457、マウス458、ドライブ459及び磁気ディスク装置460で構成される。そして、磁気ディスク装置460には、OS461、プログラム462及びファイル463が含まれる。
暗号化装置500は、プロセッサ551、バス552、ROM553、RAM554、通信ボード555、ディスプレイ556、キーボード557、マウス558、ドライブ559及び磁気ディスク装置560で構成される。そして、磁気ディスク装置560には、OS561、プログラム562及びファイル563が含まれる。
準同型演算装置600は、プロセッサ651、バス652、ROM653、RAM654、通信ボード655、ディスプレイ656、キーボード657、マウス658、ドライブ659及び磁気ディスク装置660で構成される。そして、磁気ディスク装置660には、OS661、プログラム662及びファイル663が含まれる。
復号装置700は、プロセッサ751、バス752、ROM753、RAM754、通信ボード755、ディスプレイ756、キーボード757、マウス758、ドライブ759及び磁気ディスク装置760で構成される。そして、磁気ディスク装置760には、OS761、プログラム762及びファイル763が含まれる。
以下に示す点を除き、共通パラメータ生成装置200のハードウェア構成についての説明は、データ供給者鍵生成装置300、データ利用者鍵生成装置400、暗号化装置500、準同型演算装置600及び復号装置700のハードウェアについても適用される。
各装置では、それぞれの機能構成に対応するプログラムが磁気ディスク装置に格納されている。
つまり、プログラム362は、受信部301、鍵生成部302及び送信部303を実現するプログラムである。
プログラム462は、受信部401、鍵生成部402及び送信部403を実現するプログラムである。
プログラム562は、受信部501、鍵保管部502、入力部503、暗号化部504及び送信部505を実現するプログラムである。
プログラム662は、受信部601、暗号文保管部602、入力部603、準同型演算部604及び送信部605を実現するプログラムである。
プログラム762は、受信部701、鍵保管部702、入力部703、復号処理部704及び送信部705を実現するプログラムである。
また、データ供給者鍵生成装置300、データ利用者鍵生成装置400、暗号化装置500、準同型演算装置600及び復号装置700は、それぞれ、ロジックIC、GA、ASIC、FPGA等の処理回路により実現されてもよい。
100 秘匿情報処理システム、101 インターネット、200 共通パラメータ生成装置、201 入力部、202 共通パラメータ生成部、203 送信部、251 プロセッサ、252 バス、253 ROM、254 RAM、255 通信ボード、256 ディスプレイ、257 キーボード、258 マウス、259 ドライブ、260 磁気ディスク装置、261 OS、262 プログラム、263 ファイル、300 データ供給者鍵生成装置、301 受信部、302 鍵生成部、303 送信部、351 プロセッサ、352 バス、353 ROM、354 RAM、355 通信ボード、356 ディスプレイ、357 キーボード、358 マウス、359 ドライブ、360 磁気ディスク装置、361 OS、362 プログラム、363 ファイル、400 データ利用者鍵生成装置、401 受信部、402 鍵生成部、403 送信部、451 プロセッサ、452 バス、453 ROM、454 RAM、455 通信ボード、456 ディスプレイ、457 キーボード、458 マウス、459 ドライブ、460 磁気ディスク装置、461 OS、462 プログラム、463 ファイル、500 暗号化装置、501 受信部、502 鍵保管部、503 入力部、504 暗号化部、505 送信部、551 プロセッサ、552 バス、553 ROM、554 RAM、555 通信ボード、556 ディスプレイ、557 キーボード、558 マウス、559 ドライブ、560 磁気ディスク装置、561 OS、562 プログラム、563 ファイル、600 準同型演算装置、601 受信部、602 暗号文保管部、603 入力部、604 準同型演算部、605 送信部、651 プロセッサ、652 バス、653 ROM、654 RAM、655 通信ボード、656 ディスプレイ、657 キーボード、658 マウス、659 ドライブ、660 磁気ディスク装置、661 OS、662 プログラム、663 ファイル、700 復号装置、701 受信部、702 鍵保管部、703 入力部、704 復号処理部、705 送信部、751 プロセッサ、752 バス、753 ROM、754 RAM、755 通信ボード、756 ディスプレイ、757 キーボード、758 マウス、759 ドライブ、760 磁気ディスク装置、761 OS、762 プログラム、763 ファイル。

Claims (5)

  1. 共通パラメータppを受信する受信部と、
    前記共通パラメータppを用いて公開と秘密鍵を生成する鍵生成部とを有し、
    前記共通パラメータppには、少なくとも、
    多項式環R=Z[X]/<XN+1>と、
    前記多項式環R上の分布χと、
    パラメータλに依存して決定される2以上の整数である整数qと、
    任意の2の冪数であるNとが含まれ、
    前記鍵生成部は、
    前記分布χから多項式s’を選択し、選択した多項式s’をベクトル化してベクトルsを取得し、
    前記多項式環Rの要素である多項式の複数の係数の各々を前記整数qで除算して得られる余りが複数の係数の各々である多項式を要素にもつ多項式環RqからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルaを取得し、
    前記分布χからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルeを取得し、
    任意の整数pを用いて、b=s’a+peを計算して、ベクトルbを取得し、
    前記ベクトルbとベクトル(−a)とを連結して、N×2の行列A1を前記公開鍵として生成し、前記ベクトルsと前記行列A1とを用いて前記秘密鍵を生成するデータ利用者鍵生成装置。
  2. 前記鍵生成は、
    データ暗号化のための暗号化鍵として用いることができ、更に、準同型演算のコミットメント鍵を生成することができる行列を、前記行列A1として生成する請求項1に記載のデータ利用者鍵生成装置。
  3. 前記行列A1から抽出された一部の行列の転置行列A2’を用いて前記コミットメント鍵が生成できる請求項2に記載のデータ利用者鍵生成装置。
  4. プロセッサが、共通パラメータppを受信し、受信した前記共通パラメータppを用いて公開と秘密鍵を生成する鍵生成方法であって、
    前記共通パラメータppには、少なくとも、
    多項式環R=Z[X]/<XN+1>と、
    前記多項式環R上の分布χと、
    パラメータλに依存して決定される2以上の整数である整数qと、
    任意の2の冪数であるNとが含まれ、
    前記プロセッサは、
    前記分布χから多項式s’を選択し、選択した多項式s’をベクトル化してベクトルsを取得し、
    前記多項式環Rの要素である多項式の複数の係数の各々を前記整数qで除算して得られる余りが複数の係数の各々である多項式を要素にもつ多項式環RqからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルaを取得し、
    前記分布χからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルeを取得し、
    任意の整数pを用いて、b=s’a+peを計算して、ベクトルbを取得し
    記ベクトルbとベクトル(−a)とを連結して、N×2の行列A1を前記公開鍵として生成し、前記ベクトルsと前記行列A1とを用いて前記秘密鍵を生成する鍵生成方法。
  5. 共通パラメータppを受信する受信処理と、前記共通パラメータppを用いて公開と秘密鍵を生成する鍵生成処理とをプロセッサに実行させる鍵生成プログラムであって、
    前記共通パラメータppには、少なくとも、
    多項式環R=Z[X]/<XN+1>と、
    前記多項式環R上の分布χと、
    パラメータλに依存して決定される2以上の整数である整数qと、
    任意の2の冪数であるNとが含まれ、
    前記鍵生成処理には、
    前記分布χから多項式s’を選択し、選択した多項式s’をベクトル化してベクトルsを取得する処理と、
    前記多項式環Rの要素である多項式の複数の係数の各々を前記整数qで除算して得られる余りが複数の係数の各々である多項式を要素にもつ多項式環RqからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルaを取得する処理と、
    前記分布χからN個の多項式を選択し、選択した前記N個の多項式をベクトル化してベクトルeを取得する処理と、
    任意の整数pを用いて、b=s’a+peを計算して、ベクトルbを取得する処理と
    記ベクトルbとベクトル(−a)とを連結して、N×2の行列A1を前記公開鍵として生成し、前記ベクトルsと前記行列A1とを用いて前記秘密鍵を生成する処理とが含まれる鍵生成プログラム。
JP2021521579A 2019-05-27 2019-05-27 データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム Active JP6980154B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/020839 WO2020240646A1 (ja) 2019-05-27 2019-05-27 データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム

Publications (2)

Publication Number Publication Date
JPWO2020240646A1 JPWO2020240646A1 (ja) 2021-10-21
JP6980154B2 true JP6980154B2 (ja) 2021-12-15

Family

ID=73552056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021521579A Active JP6980154B2 (ja) 2019-05-27 2019-05-27 データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム

Country Status (2)

Country Link
JP (1) JP6980154B2 (ja)
WO (1) WO2020240646A1 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6083234B2 (ja) * 2012-12-27 2017-02-22 富士通株式会社 暗号処理装置

Also Published As

Publication number Publication date
JPWO2020240646A1 (ja) 2021-10-21
WO2020240646A1 (ja) 2020-12-03

Similar Documents

Publication Publication Date Title
CN100583755C (zh) 使用同源来设计密码系统
Delvaux Security analysis of PUF-based key generation and entity authentication
US10333710B2 (en) Method and system for determining desired size of private randomness using Tsallis entropy
JP5300983B2 (ja) データ処理装置
EP3096245A1 (en) Retrievable cryptograph processing system and retrievable cryptograph processing method
US11227037B2 (en) Computer system, verification method of confidential information, and computer
US20190058580A1 (en) System and method for publication of private data using a blockchain network
EP2991264B1 (en) Encrypted text matching system, method and program
CN111512590B (zh) 用于密码认证的同态加密
CN113424492B (zh) 用以验证数字签名的系统和方法
US20180048463A1 (en) Method and system for generating private randomness for the creation of public randomness
EP2991265B1 (en) Encrypted text matching system, method and program
JP5972181B2 (ja) 改ざん検知装置、改ざん検知方法、およびプログラム
KR102443255B1 (ko) 래티스를 기반으로 하는 암호키 생성 방법 및 전자서명 방법
Liu et al. A novel security key generation method for SRAM PUF based on Fourier analysis
WO2013153628A1 (ja) 演算処理システムおよび演算結果認証方法
JP7233265B2 (ja) 署名装置、検証装置、署名方法、検証方法、署名プログラム及び検証プログラム
EP2991266B1 (en) Encrypted text matching system, method, and computer readable medium
JP6980154B2 (ja) データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム
Eldridge et al. One-time programs from commodity hardware
TWI701931B (zh) 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置
CN116601691A (zh) 隐匿信息处理系统以及隐匿信息处理方法
JPWO2017065122A1 (ja) 秘密認証符号付加装置、秘密認証符号付加方法、およびプログラム
US20160170937A1 (en) Calculation device, calculation method, and program
JP4891844B2 (ja) 署名フォーマット変換装置と事前処理装置と署名検証装置、及び署名フォーマット変換方法とプログラムとその記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210604

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210913

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211116

R150 Certificate of patent or registration of utility model

Ref document number: 6980154

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150