IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人東北大学の特許一覧

特許7578992秘匿計算装置、秘匿計算方法及びプログラム
<>
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図1
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図2
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図3
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図4
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図5
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図6
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図7
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図8
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図9
  • 特許-秘匿計算装置、秘匿計算方法及びプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-29
(45)【発行日】2024-11-07
(54)【発明の名称】秘匿計算装置、秘匿計算方法及びプログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20241030BHJP
   G06F 21/71 20130101ALI20241030BHJP
【FI】
G09C1/00 650Z
G06F21/71
【請求項の数】 11
(21)【出願番号】P 2021567179
(86)(22)【出願日】2020-12-08
(86)【国際出願番号】 JP2020045643
(87)【国際公開番号】W WO2021131667
(87)【国際公開日】2021-07-01
【審査請求日】2023-09-19
(31)【優先権主張番号】P 2019232752
(32)【優先日】2019-12-24
(33)【優先権主張国・地域又は機関】JP
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和元年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業「耐量子計算機性秘匿計算に基づくセキュア情報処理基盤」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100141139
【弁理士】
【氏名又は名称】及川 周
(72)【発明者】
【氏名】上野 嶺
(72)【発明者】
【氏名】本間 尚文
【審査官】中里 裕正
(56)【参考文献】
【文献】米国特許出願公開第2017/0134157(US,A1)
【文献】MARTINS, P. and SOUSA, L.,A Stochastic Number Representation for Fully Homomorphic Cryptography,2017 IEEE International Workshop on Signal Processing Systems (SiPS),2017年10月,pp.1-6
【文献】LIU, D.,Practical Fully Homomorphic Encryption without Noise Reduction,Cryptology ePrint Archive,Paper 2015/468,[online],2015年05月18日,pp.1-18,<URL:https://eprint.iacr.org/2015/468>
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G09C 1/00
G06F 21/71
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
確率計算のための所定の表現形式で表された平文が準同型暗号の方式で暗号化された暗号化データに対し秘匿計算を実行する秘匿計算部、
を備え、
前記秘匿計算は、和を取得する処理と積を取得する処理とを含み、
前記秘匿計算部は、第1の前記暗号化データである第1暗号化データと第2の前記暗号化データである第2暗号化データとの和である和の取得において、前記和を表すビット列の各桁の値を、第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と、第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とのいずれか一方の値に決定する、
秘匿計算装置。
【請求項2】
各桁の値が所定の確率分布に基づいて決定された2値のいずれか一方の値であるビット列をランダムビット列として、前記ランダムビット列を生成するランダムビット列生成部、
を備え、
前記秘匿計算部は、和の取得に際して前記ランダムビット列を用い、前記第1暗号化データと前記第2暗号化データとの和である和の取得においては、前記和を表すビット列の各桁の値を、前記ランダムビット列の対応する桁の値に基づき、第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と、第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とのいずれか一方の値に決定する、
請求項1に記載の秘匿計算装置。
【請求項3】
前記所定の表現形式で表されるビット列は、ユニポーラ符号で表されるベルヌーイ列である、請求項2に記載の秘匿計算装置。
【請求項4】
前記所定の表現形式で表されるビット列は、バイポーラ符号で表されるベルヌーイ列である、請求項2に記載の秘匿計算装置。
【請求項5】
前記所定の表現形式で表されるビット列は、インバーティッドバイポーラ符号で表されるベルヌーイ列である、請求項2に記載の秘匿計算装置。
【請求項6】
前記秘匿計算部は、第1の前記暗号化データである第1暗号化データと第2の前記暗号化データである第2暗号化データとの積である積の取得において、前記積を表すビット列の各桁の値を、前記第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と前記第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とを入力とする2入力の論理演算であって前記表現形式に応じた論理演算によって取得する、
請求項2から5のいずれか一項に記載の秘匿計算装置。
【請求項7】
前記表現形式が、ユニポーラ符号である場合、前記表現形式に応じた論理演算は、論理積である、
請求項6に記載の秘匿計算装置。
【請求項8】
前記表現形式が、バイポーラ符号である場合、前記表現形式に応じた論理演算は、排他的論理和の否定である、
請求項6に記載の秘匿計算装置。
【請求項9】
前記秘匿計算部は、前記第1暗号化データと前記第2暗号化データとの和である和の取得においては、前記第1暗号化データを表すビット列と前記第2暗号化データを表すビット列とを連結し、連結の結果を和として取得し、
前記第1暗号化データと前記第2暗号化データとは、前記平文の複数ビットが1つの暗号に暗号化された結果である、
請求項1に記載の秘匿計算装置。
【請求項10】
コンピュータにおいて確率計算のための所定の表現形式で表された平文が準同型暗号の方式で暗号化された暗号化データに対し秘匿計算を実行する秘匿計算ステップ、
を有し、
前記秘匿計算は、和を取得する処理と積を取得する処理とを含み、
前記秘匿計算ステップは、第1の前記暗号化データである第1暗号化データと第2の前記暗号化データである第2暗号化データとの和である和の取得において、前記和を表すビット列の各桁の値を、第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と、第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とのいずれか一方の値に決定する、
秘匿計算方法。
【請求項11】
請求項1から9のいずれか一項に記載の秘匿計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘匿計算装置、秘匿計算方法及びプログラムに関する。
本願は、2019年12月24日に、日本に出願された特願2019-232752号に基づき優先権を主張し、その内容をここに援用する。
【背景技術】
【0002】
近年、クラウドコンピューティングが盛んである。クラウドコンピューティングでは、データがインターネット上に保存されるため、ユーザはインターネットに接続できる環境にあれば場所が固定されることなく計算を実行できるという利点がある。一方、クラウドコンピューティングでは、データがインターネット上に保存されるため、データの漏洩等のセキュリティ上のリスクがある。
【0003】
そこで、セキュリティ上のリスクの軽減のため、秘匿計算が用いられる場合がある。秘匿計算は、暗号化されたデータを復号化することなく計算させる技術である。秘匿計算の暗号方式の一つとして準同型暗号と呼称される暗号を用いた方式がある。準同型暗号には、大別して単演算準同型暗号と、制限付き準同型暗号と、完全準同型暗号との3つの暗号方式がある(特許文献1)。単演算準同型暗号は、データが暗号化されたままで和を取得する加算の処理と積を取得する乗算の処理とのいずれか一方のみを行うことができる暗号方式である。制限付き演算準同型暗号は、データが暗号化されたままで加算の処理と乗算の処理とを行うことができるものの演算回数に制限がある暗号方式である。完全準同型暗号は、データが暗号化されたままで加算の処理と乗算の処理とを行うことができ、演算回数に制限がない暗号方式である。加算の処理と乗算の処理とを演算回数に制限なく実行できればあらゆる計算を行うことができるので、単演算準同型暗号及び制限付き演算準同型暗号よりは完全準同型暗号によって秘匿計算が実行されることが望ましい。
【0004】
そこで、完全準同型暗号による秘密演算を行うための技術として、従来、ブートストラップが用いられる。ブートストラップは、制限付き演算準同型暗号における演算回数の制限をなくすための技術である。より具体的には、制限付き演算準同型暗号で暗号化された情報に対して加算を実行するたびに大きくなるノイズをあるレベルまで削減する技術である。ノイズとは、暗号化の際に挿入されるランダムな要素である。ランダムな要素も加算の処理によって増大する。制限付き演算準同型暗号では、ノイズが所定の閾値を超えると復号化ができなくなるため演算回数に制限がある。この閾値直前まで増大したノイズをある一定のレベルまで削減する技術がブートストラップである。
【先行技術文献】
【非特許文献】
【0005】
【文献】Craig Gentry “A FULLY HOMOMORPHIC ENCRYPTION SCHEME”, A DISSERTATION SUBMITTED TO THE DEPARTMENT OF COMPUTER SCIENCE AND THE COMMITTEE ON GRADUATE STUDIES OF STANFORD UNIVERSITY IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY, 2009
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、ブートストラップは演算量が極めて大きく、完全準同型暗号による秘匿計算で要する演算時間はブートストラップによって律速される場合があった。例えば、2009年頃では、暗号化、乗算、復号化の処理に要する時間がミリ秒程度である中、ブートストラップに要する時間が30分程度である場合があった。近年は、ブートストラップに要する時間が2009年時点の時間よりは短縮されているもののブートストラップは依然として演算時間を律速する要因である。このように、従来、和を取得する処理と積を取得する処理とを含む秘匿計算は、復号化されたデータに対して実行される計算に比べて大幅に演算量が増大するという問題があった。
【0007】
上記事情に鑑み、本発明は、和を取得する処理と積を取得する処理とを含む秘匿計算において発生する演算量の増大を抑制する技術を提供することを目的としている。
【課題を解決するための手段】
【0008】
本発明の一態様は、確率計算のための所定の表現形式で表された平文が準同型暗号の方式で暗号化された暗号化データに対し秘匿計算を実行する秘匿計算部、を備え、前記秘匿計算は、和を取得する処理と積を取得する処理とを含み、前記秘匿計算部は、第1の前記暗号化データである第1暗号化データと第2の前記暗号化データである第2暗号化データとの和である和の取得において、前記和を表すビット列の各桁の値を、第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と、第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とのいずれか一方の値に決定する、秘匿計算装置である。
【0009】
本発明の一態様は、上記の秘匿計算装置であって、桁の値が所定の確率分布に基づいて決定された2値のいずれか一方の値であるビット列をランダムビット列として、前記ランダムビット列を生成するランダムビット列生成部、を備え、前記秘匿計算部は、和の取得に際して前記ランダムビット列を用い、前記第1暗号化データと前記第2暗号化データとの和である和の取得においては、前記和を表すビット列の各桁の値を、前記ランダムビット列の対応する桁の値に基づき、第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と、第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とのいずれか一方の値に決定する。
【0010】
本発明の一態様は、上記の秘匿計算装置であって、前記所定の表現形式で表されるビット列は、ユニポーラ符号で表されるベルヌーイ列である。
【0011】
本発明の一態様は、上記の秘匿計算装置であって、前記所定の表現形式で表されるビット列は、バイポーラ符号で表されるベルヌーイ列である。
【0012】
本発明の一態様は、上記の秘匿計算装置であって、前記所定の表現形式で表されるビット列は、インバーティッドバイポーラ符号で表されるベルヌーイ列である。
【0013】
本発明の一態様は、上記の秘匿計算装置であって、前記秘匿計算部は、第1の前記暗号化データである第1暗号化データと第2の前記暗号化データである第2暗号化データとの積である積の取得において、前記積を表すビット列の各桁の値を、前記第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と前記第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とを入力とする2入力の論理演算であって前記表現形式に応じた論理演算によって取得する。
【0014】
本発明の一態様は、上記の秘匿計算装置であって、前記表現形式が、ユニポーラ符号である場合、前記表現形式に応じた論理演算は、論理積である。
【0015】
本発明の一態様は、上記の秘匿計算装置であって、前記表現形式が、バイポーラ符号である場合、前記表現形式に応じた論理演算は、排他的論理和の否定である。
【0016】
本発明の一態様は、上記の秘匿計算装置であって、前記秘匿計算部は、前記第1暗号化データと前記第2暗号化データとの和である和の取得においては、前記第1暗号化データを表すビット列と前記第2暗号化データを表すビット列とを連結し、連結の結果を和として取得し、前記第1暗号化データと前記第2暗号化データとは、前記平文の複数ビットが1つの暗号に暗号化された結果である。
【0017】
本発明の一態様は、確率計算のための所定の表現形式で表された平文が準同型暗号の方式で暗号化された暗号化データに対し秘匿計算を実行する秘匿計算ステップ、を有し、前記秘匿計算は、和を取得する処理と積を取得する処理とを含み、前記秘匿計算ステップは、第1の前記暗号化データである第1暗号化データと第2の前記暗号化データである第2暗号化データとの和である和の取得において、前記和を表すビット列の各桁の値を、第1暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値と、第2暗号化データを表すビット列であり前記表現形式で表されるビット列の対応する桁の値とのいずれか一方の値に決定する、秘匿計算方法である。
【0018】
本発明の一態様は、上記の秘匿計算装置としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0019】
本発明により、和を取得する処理と積を取得する処理とを含む秘匿計算において発生する演算量の増大を抑制することが可能となる。
【図面の簡単な説明】
【0020】
図1】実施形態の秘匿計算システム100の機能構成の一例を示す図。
図2】実施形態における端末装置1のハードウェア構成の一例を示す図。
図3】実施形態における端末装置1が備える制御部11の機能構成の一例を示す図。
図4】実施形態における秘匿計算装置2のハードウェア構成の一例を示す図。
図5】実施形態における秘匿計算装置2が備える制御部21の機能構成の一例を示す図。
図6】実施形態における確率秘匿積取得処理を、表現形式がユニポーラである場合を例に説明する説明図。
図7】実施形態における確率秘匿積取得処理を、表現形式がバイポーラである場合を例に説明する説明図。
図8】実施形態における秘匿和取得処理を説明する説明図。
図9】実施形態の秘匿計算システム100で実行される処理の流れの一例を示すフローチャート。
図10】実施形態の秘匿計算システム100の性能評価の実験結果の一例を示す図。
【発明を実施するための形態】
【0021】
(実施形態)
図1は、実施形態の秘匿計算システム100の機能構成の一例を示す図である。
【0022】
秘匿計算システム100は、確率計算のための所定の表現形式で表された平文(以下「確率表現平文」という。)を準同型暗号の方式で暗号化する。秘匿計算システム100は、準同型暗号の方式で暗号化された確率表現平文(以下「暗号化データ」という。)に対して秘匿計算を実行する。
【0023】
確率計算のための表現形式とは、確率計算表現条件を満たす所定の桁数のビット列(以下「確率表現ビット列」という。)によって対象のデータを表すデータの形式である。確率計算表現条件は、ビット列が絶対値が1以下の値を示すビット列であるという条件を含む。確率計算表現条件は、各ビットが0又は1のいずれか一方の値を有するビット列であるという条件を含む。確率計算表現条件は、ビット列が示す値はビット列中の0又は1の予め定められた一方の値の出現頻度を表すビット列であるという条件を含む。
【0024】
確率表現ビット列は、例えばユニポーラ符号で表されるベルヌーイ列や、バイポーラ符号で表されるベルヌーイ列や、インバーティッドバイポーラ符号で表されるベルヌーイ列である。
【0025】
ユニポーラ符号で表されるベルヌーイ列は、各ビットが0又は1のいずれか一方の値を有するビット列であり、ビット列中の0又は1の予め定められた一方の値の出現頻度を0以上1以下の実数で示すビット列である。ユニポーラ符号で表されるベルヌーイ列は、ビット列中の0又は1の予め定められた一方の値の出現頻度が高いほど、大きい値を示す。
【0026】
バイポーラ符号で表されるベルヌーイ列は、各ビットが0又は1のいずれか一方の値を有するビット列であり、ビット列中の0又は1の予め定められた一方の値の出現頻度を(-1)以上1以下の実数で示すビット列である。バイポーラ符号で表されるベルヌーイ列は、ビット列中の0又は1の予め定められた一方の値の出現頻度が高いほど、大きい値を示す。
【0027】
インバーティッドバイポーラ符号で表されるベルヌーイ列は、各ビットが0又は1のいずれか一方の値を有するビット列であり、ビット列中の0又は1の予め定められた一方の値の出現頻度を(-1)以上1以下の実数で示すビット列である。インバーティッドバイポーラ符号で表されるベルヌーイ列は、バイポーラ符号で表されるベルヌーイ列と異なり、ビット列中の0又は1の予め定められた一方の値の出現頻度が高いほど小さい値を示す。
【0028】
準同型暗号の方式は、加算だけが定義された準同型暗号の方式であってもよいし、乗算だけが定義された準同型暗号の方式であってもよいし、加算と乗算とが定義された準同型暗号の方式であってもよい。準同型暗号の方式は、例えばideal格子ベースであってもよいし、整数上完全準同型暗号であってもよいし、Ring-LWEベースであってもよいし、RSA暗号方式であってもよいし、Pailler暗号方式であってもよいし、岡本-内山暗号であってもよい。準同型暗号の方式は、例えばGoldwasser-Micali暗号であってもよいし、ElGama暗号であってもよい。準同型暗号の方式は、楕円ElGama暗号(EC ElGama暗号)であってもよいし、Lifted ElGama暗号であってもよいし、Lifted EC ElGama暗号であってもよい。
【0029】
秘匿計算システム100は、端末装置1及び秘匿計算装置2を備える。
端末装置1は、平文に対して表現変換処理を実行する。表現変換処理は、平文のデータの形式を確率計算のための所定の表現形式に変換する処理である。表現変換処理によって、平文は確率表現平文に変換される。表現変換処理が実行される前の平文は、N進法(Nは整数)で表される。表現変換処理が実行される前の平文は、例えば2進法で表される。
【0030】
説明の簡単のため、以下、表現変換処理によって平文がユニポーラ符号で表されるベルヌーイ列に変換される場合、表現形式がユニポーラである、という。また、以下、表現変換処理によって平文がバイポーラ符号で表されるベルヌーイ列に変換される場合、表現形式がバイポーラである、という。また、以下、表現変換処理によって平文がインバーティッドバイポーラ符号で表されるベルヌーイ列に変換される場合、表現形式がインバーティッドバイポーラである、という。
【0031】
端末装置1は、暗号化処理を実行する。暗号化処理は、準同型暗号の方式でデータを暗号化するための所定の鍵(以下「暗号鍵」という。)を用いて確率表現平文を暗号化する処理である。確率表現平文の暗号化によって確率表現平文は暗号化データに変換される。端末装置1は、暗号化データを、ネットワーク9を介して秘匿計算装置2に送信する。
【0032】
端末装置1は、ネットワーク9を介し、秘匿計算装置2の計算結果であって準同型暗号の方式で暗号化されたデータを取得する。端末装置1は、復号化処理を実行する。復号化処理は、暗号鍵の対となる符号化のための鍵(以下「復号鍵」という。)を用いて秘匿計算の結果を示す暗号化データを復号する処理である。
【0033】
秘匿計算装置2は、ネットワーク9を介して端末装置1が送信した暗号化データを受信する。秘匿計算装置2は、暗号化データに対して和を取得する処理と積を取得する処理とを含む所定の秘匿計算(以下「対象秘匿計算」という。)を行う。対象秘匿計算は、確率表現平文が暗号化されたままで実行される計算であって、和を取得する処理と積を取得する処理とを含む計算であればどのような計算であってもよい。対象秘匿計算は、例えば暗号化データを入力データとする機械学習であって、確率表現平文を暗号化したまま所定の機械学習モデルを学習させる機械学習や機械学習における推論である。秘匿計算装置2は、対象秘匿計算の実行結果を端末装置1に送信する。
【0034】
図2は、実施形態における端末装置1のハードウェア構成の一例を示す図である。
端末装置1は、バスで接続されたCPU(Central Processing Unit)等のプロセッサ91とメモリ92とを備える制御部11を備え、プログラムを実行する。端末装置1は、プログラムの実行によって制御部11、通信部12、記憶部13、入力部14及び出力部15を備える装置として機能する。
【0035】
制御部11は、自装置(端末装置1)が備える各機能部の動作を制御する。制御部11は、例えば表現変換処理を実行する。制御部11は、例えば暗号化処理を実行する。制御部11は、例えば復号化処理を実行する。
【0036】
通信部12は、自装置をネットワーク9に接続するための通信インタフェースを含んで構成される。通信部12は、ネットワーク9を介して、秘匿計算装置2と通信する。通信部12は、例えば秘匿計算装置2との通信によって、秘匿計算装置2との間で暗号化データの送受信を行う。通信部12は、例えば秘匿計算装置2との通信によって秘匿計算装置2に対して、暗号化データを送信する。通信部12は、例えば秘匿計算装置2との通信によって対象秘匿計算が行われた後の暗号化データを受信する。通信部12は、ネットワーク9を介して平文を送信する外部装置と通信をすることで、平文を送信する外部装置が送信した平文を取得してもよい。
【0037】
記憶部13は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。記憶部13は、例えば表現変換処理を実行するプログラムを記憶する。記憶部13は、例えば暗号化処理を実行するプログラムを記憶する。記憶部13は、例えば復号化処理を実行するプログラムを記憶する。記憶部13は、例えば暗号鍵を記憶する。記憶部13は、例えば復号鍵を記憶する。記憶部23は、例えば暗号化データを記憶する。
【0038】
入力部14は、マウスやキーボード、タッチパネル等の入力装置を含んで構成される。入力部14は、これらの入力装置を自装置に接続するインタフェースとして構成されてもよい。入力部14は、例えば平文の入力を受け付ける。
【0039】
出力部15は、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイ、有機EL(Electro-Luminescence)ディスプレイ等の表示装置を含んで構成される。出力部15は、これらの表示装置を自装置に接続するインタフェースとして構成されてもよい。出力部15は、例えば平文等の入力部14に入力された情報を表示する。
【0040】
図3は、実施形態における端末装置1が備える制御部11の機能構成の一例を示す図である。
制御部11は、平文取得部110、表現変換部120、暗号化部130、復号化部140、通信制御部150、出力制御部160及び表現逆変換部170を備える。
【0041】
平文取得部110は、入力部14又は通信部12を介して平文を取得する。以下、説明の簡単のため平文が入力部14に入力される場合を例に秘匿計算システム100を説明する。
表現変換部120は、平文に対して表現変換処理を実行する。表現変換処理の実行によって、平文は確率表現平文に変換される。
【0042】
暗号化部130は、確率表現平文に対して暗号化処理を実行する。暗号化処理の実行によって、確率表現平文は、暗号化データに変換される。
復号化部140は、暗号化データを復号する。復号化されたデータは、確率計算のための所定の表現形式で表された平文である。
【0043】
通信制御部150は、通信部12の動作を制御する。通信制御部150は、通信部12の動作を制御することで、通信部12を介して通信先と暗号化データの送受信を行う。
【0044】
出力制御部160は、出力部15の動作を制御する。出力制御部160は、出力部15の動作を制御することで、例えば入力部14に入力された内容を表示する。
【0045】
表現逆変換部170は、復号化部140によって復号化されたデータをN進法の表現で表される平文に変換する。
【0046】
図4は、実施形態における秘匿計算装置2のハードウェア構成の一例を示す図である。 秘匿計算装置2は、バスで接続されたCPU(Central Processing Unit)等のプロセッサ93とメモリ94とを備える制御部21を備え、プログラムを実行する。秘匿計算装置2は、プログラムの実行によって制御部21、通信部22、記憶部23、入力部24及び出力部25を備える装置として機能する。
【0047】
制御部21は、自装置(秘匿計算装置2)が備える各機能部の動作を制御する。制御部21は、例えば対象秘匿計算を実行する。
【0048】
通信部22は、自装置をネットワーク9に接続するための通信インタフェースを含んで構成される。通信部22は、ネットワーク9を介して、端末装置1と通信する。通信部22は、例えば端末装置1との通信によって端末装置1が送信した暗号化データを受信する。また、通信部22は、例えば端末装置1との通信によって端末装置1に対して、対象秘匿計算が行われた後の暗号化データを送信する。
【0049】
記憶部23は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。記憶部23は、例えば対象秘匿計算のプログラムを記憶する。対象秘匿計算のプログラムは、予め準同型暗号の方式によって暗号化されたプログラムである。そのため、対象秘匿計算における数式の係数等を表す対象秘匿計算における値は、暗号化データである。記憶部23は、例えば受信した暗号化データを記憶する。記憶部23は、例えば対象秘匿計算の演算途中の暗号化データを記憶する。記憶部23は、例えば対象秘匿計算が行われた後の暗号化データを記憶する。
【0050】
入力部24は、マウスやキーボード、タッチパネル等の入力装置を含んで構成される。入力部24は、これらの入力装置を自装置に接続するインタフェースとして構成されてもよい。入力部24は、例えば対象秘匿計算のプログラムの入力を受け付ける。
【0051】
出力部25は、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイ、有機EL(Electro-Luminescence)ディスプレイ等の表示装置を含んで構成される。出力部25は、これらの表示装置を自装置に接続するインタフェースとして構成されてもよい。出力部25は、例えば入力部24に入力された情報を表示する。
【0052】
図5は、実施形態における秘匿計算装置2が備える制御部21の機能構成の一例を示す図である。
制御部21は、暗号化データ取得部210、ランダムビット列生成部220、秘匿計算部230、通信制御部240及び出力制御部250を備える。
暗号化データ取得部210は、通信部22を介して端末装置1が送信した暗号化データを取得する。
【0053】
ランダムビット列生成部220は、ランダムビット列Rを生成する。ランダムビット列Rは、各桁の値が0又は1等の2値のいずれか一方の値であるビット列であり、各桁が有する値は所定の確率分布に基づいて決定された値であるビット列である。例えばランダムビット列Rに含まれるビットの値は、50%の確率で1であり、50%の確率で0である。このような場合、所定の確率分布は、1が出現する確率が50%であり0が出現する確率が50%である確率分布である。
【0054】
0と1とが出現する確率は必ずしも、同一でなくてもよい。例えば40%の確率で1であり、60%の確率で0であってもよい。このような場合、所定の確率分布は、1が出現する確率が40%であり0が出現する確率が60%である確率分布である。以下、説明の簡単のため、ランダムビット列Rの各ビットが示す値が0又は1の2値のいずれか一方である場合であって、ビットの値が50%の確率で1である50%の確率で0である場合を例に制御部21を説明する。ランダムビット列生成部220が生成したランダムビット列Rは秘匿計算部230に入力される。
【0055】
秘匿計算部230は、暗号化データに対しランダムビット列Rを用いて対象秘匿計算を実行する。秘匿計算部230は、対象秘匿計算における乗算の処理として、秘匿積取得処理を実行する。秘匿積取得処理は、暗号化データを暗号化したまま2つの暗号化データが示す値の積を示す値(以下「積M」という。)を取得する処理である。秘匿積取得処理は、例えば確率的数値表現上で、2つの暗号化データが示す値の積を示す値を取得する処理である。暗号化データを生成する際の準同型暗号の方式が予め乗算もしくは加算,もしくはその両方が定義された準同型暗号の方式である場合には、秘匿積取得処理は、予め準同型暗号に対して定義された乗算もしくは加算の方法で積を取得してもよい。以下、2つの暗号化データを第1入力値Aと第2入力値Bとして確率的数値表現上で積Mを取得する秘匿積取得処理(以下「確率秘匿積取得処理」という。)をより詳細に説明する。なお、第1入力値Aを表すビット列の桁数と、第2入力ビット列Bを表すビット列の桁数と、積Mを表すビット列の桁数とは、同一である。
【0056】
確率秘匿積取得処理は、積Mを表すビット列の各桁の値が、第1入力値Aを表すビット列の対応する桁の値と第2入力値Bを表すビット列の対応する桁の値とに基づいて決定される処理である。具体的には、確率秘匿積取得処理において出力される値であって積Mを表すビット列の各桁の値は、第1入力値Aを表すビット列の対応する桁の値と第2入力値Bを表すビット列の対応する桁の値とを入力とする2入力の所定の論理演算の結果である。確率秘匿積取得処理は、確率計算のための所定の表現形式に応じた処理である。例えば表現形式がユニポーラ符号である場合、2入力の論理演算は、論理積である。例えば表現形式がバイポーラ符号である場合、2入力の論理演算は、排他的論理和の否定である。
【0057】
図6は、実施形態における確率秘匿積取得処理を、表現形式がユニポーラである場合を例に説明する説明図である。
図6は、2つの暗号化データとして第1入力値Aと第2入力値Bとが入力された場合に、ANDゲートによって表される処理を用いて積Mが取得されることを示す。具体的には、確率秘匿積取得処理では、表現形式がユニポーラである場合、積ビット列Mの各桁の値は、第1入力ビット列Aの対応する桁の値と第2入力ビット列Bの対応する桁の値との論理積である。図6の積ビット列Mは、積Mを表す表現形式がユニポーラのビット列である。図6の第1入力ビット列Aは、第1入力値Aを表す表現形式がユニポーラのビット列である。図6の第2入力ビット列Bは、第2入力値Bを表す表現形式がユニポーラのビット列である。第1入力ビット列A、第2入力ビット列B及び積ビット列Mの桁数は、同一である。
【0058】
図6において、第1入力値Aは、具体的には(1/2)である。図6において、第1入力値Aを表すユニポーラ表現形式のビット列である第1入力ビット列Aは、具体的には、1桁目が0、2桁目が0、3桁目が1、4桁目が1の4桁のビット列である。
【0059】
図6において、第2入力値Bは、具体的には(1/2)である。図6において、第2入力値Bを表すユニポーラ表現形式のビット列である第2入力ビット列Bは、具体的には、1桁目が0、2桁目が1、3桁目が1、4桁目が0の4桁のビット列である。
【0060】
図6において、積Mは、具体的には(1/4)である。図6において、積Mを表すユニポーラ表現形式のビット列である積ビット列Mは、具体的には、1桁目が0、2桁目が0、3桁目が1、4桁目が0の4桁のビット列である。
【0061】
図6における確率秘匿積取得処理を具体的に説明する。図6では、例えば積ビット列Mの1桁目の値VM1は、第1入力ビット列Aの1桁目の値VA1と第1入力ビット列Bの1桁目の値VB1との論理積である。図6では、例えば積ビット列Mの3桁目の値VM3は、第1入力ビット列Aの3桁目の値VA3と第1入力ビット列Bの3桁目の値VB3との論理積である。
【0062】
図7は、実施形態における確率秘匿積取得処理を、表現形式がバイポーラである場合を例に説明する説明図である。
図7は、2つの暗号化データとして第1入力値Aと第2入力値Bとが入力された場合に、XNORゲートによって表される処理を用いて積Mが取得されることを示す。具体的には、確率秘匿積取得処理では、表現形式がバイポーラである場合、積ビット列Mの各桁の値は、第1入力ビット列Aの対応する桁の値と第2入力ビット列Bの対応する桁の値との排他的論理和の否定である。図7の積ビット列Mは、積Mを表す表現形式がバイポーラのビット列である。図7の第1入力ビット列Aは、第1入力値Aを表す表現形式がバイポーラのビット列である。図7の第2入力ビット列Bは、第2入力値Bを表す表現形式がバイポーラのビット列である。第1入力ビット列A、第2入力ビット列B及び積ビット列Mの桁数は、同一である。
【0063】
図7において、第1入力値Aは、具体的には1である。図7において、第1入力値Aを表すバイポーラ表現形式のビット列である第1入力ビット列Aは、具体的には、1桁目が1、2桁目が1、3桁目が1、4桁目が1の4桁のビット列である。
【0064】
図7において、第2入力値Bは、具体的には(-1/2)である。図7において、第2入力値Bを表すバイポーラ表現形式のビット列である第2入力ビット列Bは、具体的には、1桁目が0、2桁目が0、3桁目が1、4桁目が0の4桁のビット列である。
【0065】
図7において、積Mは、具体的には(-1/2)である。図7において、積Mを表すバイポーラ表現形式のビット列である積ビット列Mは、具体的には、1桁目が0、2桁目が0、3桁目が1、4桁目が0の4桁のビット列である。
【0066】
図7における確率秘匿積取得処理を具体的に説明する。図7では、例えば積ビット列Mの1桁目の値VM1は、第1入力ビット列Aの1桁目の値VA1と第1入力ビット列Bの1桁目の値VB1との排他的論理和の否定である。図7では、例えば積ビット列Mの3桁目の値VM3は、第1入力ビット列Aの3桁目の値VA3と第1入力ビット列Bの3桁目の値VB3との排他的論理和の否定である。
ここまでで秘匿計算部230が実行する秘匿計算で積が取得される処理の説明を終了する。
【0067】
秘匿計算部230は、対象秘匿計算における加算の処理として、N進法における加算の処理に代えて以下に示す秘匿和取得処理を実行する。秘匿和取得処理は、被使用暗号化方式に依存しない。
【0068】
秘匿和取得処理は、確率的数値表現上で、2つの暗号化データの和を示す値(以下「和S」という。)を取得する処理である。秘匿和取得処理において2つの暗号化データと和Sとは、2値のビットのビット列で表現される。秘匿和取得処理においては、ランダムビット列Rが用いられる。以下、説明の簡単のため秘匿和取得処理において入力される2つの暗号化データが第1入力値Aと第2入力値Bとである場合を例に、秘匿和取得処理を説明する。
【0069】
秘匿和取得処理において、第1入力値Aを表すビット列の桁数と、第2入力値Bを表すビット列の桁数と、和Sを表すビット列の桁数とは、同一である。秘匿和取得処理において、ランダムビット列Rの桁数は、第1入力値Aを表すビット列の桁数と、第2入力値Bを表すビット列の桁数と、和Sを表すビット列の桁数以上である。
【0070】
秘匿和取得処理においてランダムビット列Rのビットの値は、第1入力値Aを表すビット列と第2入力値Bを表すビット列とのいずれか一方のビット列を示す。秘匿和取得処理におけるランダムビット列Rの各桁の値は、より詳細には以下のことを示す。すなわち、第1入力値Aを表すビット列の対応する桁の値を和Sの対応する桁の値の取得のために用いることと、第2入力値Bを表すビット列の対応する桁の値を和Sの対応する桁の値の取得のために用いることとのいずれか一方を示す。
【0071】
例えばランダムビット列のビットの値は、1が、第1入力値Aを表すビット列の対応する値が和Sの対応する桁の値の取得のために用いられることを示す。例えばランダムビット列のビットの値は、0が、第2入力値Bを表すビット列の対応する値が和Sの対応する桁の値の取得のために用いられることを示す。
【0072】
以下、説明の簡単のため、ランダムビット列Rのビットの値は、1が第1入力値A指示数であり、0が第2入力値B指示数である場合を例に秘匿和取得処理を説明する。1が第1入力値A指示数であるとは、第1入力値Aを表すビット列の対応する値が和Sの対応する桁の値の取得のために用いられることを示す値が1であることを意味する。0が第2入力値B指示数であるとは、第2入力値Bを表すビット列の対応する値が和Sの対応する桁の値の取得のために用いられることを示す値が0であることを意味する。
【0073】
秘匿和取得処理においては、和Sを表すビット列の各桁の値が、第1入力値Aを表すビット列の対応する桁の値と、第2入力値Bを表すビット列の対応する桁の値と、ランダムビット列Rの対応する桁の値とに基づいて決定される。具体的には、秘匿和取得処理においては、和Sを表すビット列の各桁の値は、第1入力値Aを表すビット列の対応する桁の値と第2入力値Bを表すビット列の対応する桁の値とのうち、ランダムビット列Rの対応する桁の値が示すビット列に桁の値に決定される。
【0074】
そのため、秘匿和取得処理の結果として取得される和ビット列Sの各桁の値は、第1入力値Aを表すビット列の対応する桁の値と第2入力値Bの対応する桁の値とのうち、ランダムビット列Rの対応する桁の値に基づき決定されたいずれか一方の値である。和ビット列Sは、和Sを表すビット列である。
【0075】
図8は、実施形態における秘匿和取得処理を説明する説明図である。
図8の第1入力ビット列Aは、第1入力値Aを表す表現形式がバイポーラのビット列である。図6の第2入力ビット列Bは、第2入力値Bを表す表現形式がバイポーラのビット列である。第1入力ビット列A、第2入力ビット列B、和ビット列S及びランダムビット列Rの桁数は、同一である。
【0076】
図8において、第1入力値Aは、具体的には(1/2)である。図8において、第1入力値Aを表すバイポーラ表現形式のビット列である第1入力ビット列Aは、具体的には、1桁目が1、2桁目が0、3桁目が1、4桁目が1の4桁のビット列である。
【0077】
図8において、第2入力値Bは、具体的には(-1/2)である。図8において、第2入力値Bを表すバイポーラ表現形式のビット列である第2入力ビット列Bは、具体的には、1桁目が0、2桁目が0、3桁目が1、4桁目が0の4桁のビット列である。
【0078】
図8において、和Sは、具体的には0である。図8において、和Sを表すバイポーラ表現形式のビット列である和ビット列Sは、具体的には、1桁目が0、2桁目が1、3桁目が0、4桁目が0の4桁のビット列である。
【0079】
図8においてランダムビット列Rは、1桁目が1、2桁目が0、3桁目が1、4桁目が0の4桁のビット列である。なお、この場合、ランダムビット列Rの表す値は(1/2)である。
【0080】
図8における秘匿和取得処理を具体的に説明する。図8では、例えば和ビット列Sの1桁目の値VS1は、ランダムビット列の1桁目の値VR1が表す値が1であるので、第1入力ビット列Aの1桁目の値VA1の値である。図8では、例えば和ビット列Sの4桁目の値VS4は、ランダムビット列の4桁目の値VR4が表す値が0であるので、第2入力ビット列Bの4桁目の値VB4の値である。
【0081】
図5の説明に戻る。通信制御部240は、通信部22の動作を制御する。通信制御部240は、通信部22の動作を制御することで、通信部22を介して通信先と暗号化データの送受信を行う。通信制御部240は、例えば秘匿計算部230における秘匿計算の結果の暗号化されたデータを、通信部22を介して、端末装置1に送信する。
【0082】
出力制御部250は、出力部25の動作を制御して、秘匿計算部230における秘匿計算の結果の暗号化されたデータを出力してもよい。
【0083】
図9は、実施形態の秘匿計算システム100で実行される処理の流れの一例を示すフローチャートである。
【0084】
入力部14を介して端末装置1に平文が入力される(ステップS101)。次に、平文取得部110が、ステップS101で入力された平文を取得する(ステップS102)。次に、表現変換部120が、平文取得部110が取得した平文に対して表現変換処理を実行する(ステップS103)。表現変換処理の実行によって、平文は確率表現平文に変換される。ステップS103の次に、暗号化部130が確率表現平文を暗号化して暗号化データに変換する(ステップS104)。次に、通信制御部150が、通信部12を介して暗号化データを秘匿計算装置2に送信する(ステップS105)。
【0085】
次に、暗号化データ取得部210が、通信部22を介して、端末装置1が送信した暗号化データを取得する(ステップS106)。次に、秘匿計算部230が、秘匿計算を実行する(ステップS107)。ステップS107では、対象秘匿計算に応じて、秘匿積取得処理又は秘匿和取得処理が実行される。秘匿計算における秘匿和取得処理の実行時には、まずランダムビット列生成部220がランダムビット列Rを生成する。
【0086】
次に、生成されたランダムビット列Rを用いて、秘匿和取得処理が実行される。ステップS107の次に、通信制御部240が、秘匿計算の計算結果を示す暗号化データを、通信部22を介して端末装置1に送信する(ステップS108)。次に、復号化部140が通信部12を介して、秘匿計算の計算結果を示す暗号化データを取得し、復号化する(ステップS109)。次に、表現逆変換部170が復号化されたデータを平文に変換する(ステップS110)。
【0087】
このように構成された秘匿計算システム100は、準同型暗号の方式によって暗号化されたデータに対する秘匿計算において、ランダムビット列Rを用いて正又は負の2つの値の和を取得する。より具体的には、和Sの取得に際して、和Sを表すビット列の各桁の値を以下の処理を実行することで取得する。秘匿計算システム100は、第1入力値Aを表すビット列であり確率計算における所定の表現形式で表されるビット列の対応する桁の値と、第2入力値Bを表すビット列であり確率計算における所定の表現形式で表されるビット列の対応する桁の値とのいずれか一方の値をランダムビット列Rに基づいて決定する。決定した値が和Sを表すビット列の対応する桁の値である。このように、秘匿計算システム100は、加算を実行するのではなく、和を表す値を選択することで和Sを取得する。
【0088】
ところで、制限付き準同型暗号および完全準同型暗号では、暗号化に際してデータにランダムな要素が追加される。準同型暗号における正又は負の2つの値の和を取得する処理と積を取得する処理が、N進法の加算で行われる場合には、追加されたランダムな値(以下「ノイズ」という。)が和を取得する処理の実行と積を取得する処理の実行のたびに増大してしまう。一方、秘匿計算システム100では、正又は負の2つの値の和もしくは積を取得する処理においてN進法の加算もしくは乗算を実行するのではなく、値を表すビット列のビットの選択によって和の値もしくは積の値を取得する。このため、秘匿計算システム100では、和を取得する処理が実行された場合であっても、ノイズが増大することはない。より正確には、秘匿計算システム100ではノイズがそもそも発生しない。このように秘匿計算システム100ではノイズが増大しないため、秘匿計算システム100ではブートストラップの処理が不要である。
【0089】
また、秘匿計算システム100では、積を取得する処理と和を取得する処理とを実行することができる。積を取得する処理は乗算に相当する。和を取得する処理は加算に相当する。そのため、秘匿計算システム100は、和を取得する処理と積を取得する処理とを含む秘匿計算の実行が可能であり、なおかつ、秘匿計算において発生する演算量の増大を抑制することができる。
【0090】
なお、秘匿計算システム100によって演算量の増大が抑制されるのは、上述したようにブートストラップの処理が不要なためである。そのため、秘匿計算システム100において実行される秘匿計算の方法は、HEAAN(Homomoriphic Encryption for Arithmetic of Approximate Numbbers)とは異なる方法である。HEAANは、値を近似する手法である。
【0091】
(実験結果)
秘匿計算システム100では、上述したようにブートストラップの処理が不要である。そのため、秘匿計算システム100は、秘匿計算における演算量を表す指標である鍵長を、ブートストラップを用いる完全準同型暗号における鍵長の10^(-5)から10^(-6)倍まで小さくすることができる。このことが以下に説明する実験結果で示されている。
【0092】
<実験結果>
秘匿計算システム100の秘匿計算に関する性能と、他の秘匿計算の方法の秘匿計算に関する性能とを実験結果を用いて説明する。秘匿計算に関する性能は、例えば鍵長である。 実験において秘匿計算システム100は、EC ElGamal暗号の暗号方式の元でIBP(Inverted Bipolar)符号を用いて秘匿計算を行った。
【0093】
他の秘匿計算の方法による秘匿計算の1つは、EC ElGamalの暗号方式による加算型準同型暗号(Additive HE)の方式で暗号化されたデータに対する秘匿計算である。他の秘匿計算の方法による秘匿計算の1つは、Ring-LWEベース暗号の暗号方式による制限付き準同型暗号(SHE)の方式で暗号化されたデータに対する秘匿計算である。他の秘匿計算の方法による秘匿計算の1つは、完全準同型暗号(TFHE:Torus-based Fully Homomorphic Encryption)の方式で暗号化されたデータに対する秘匿計算である。秘匿計算に関する性能は、例えば鍵長である。
【0094】
SHEは、パラメータに応じて乗算可能な回数の上限が予め定められた暗号方式である。SHEのパラメータとは、例えば平文空間のサイズである。SHEのパラメータとは、暗号文空間のサイズであってもよいし、多項式の次数であってもよい。
【0095】
図10は、実施形態の秘匿計算システム100の秘匿計算に関する性能評価の実験結果の一例を示す図である。図10は、秘匿計算に関する性能としてNumber of Mult.と鍵長とを示す。Number of Mult.は、被使用SHEパラメータが用いられたSHEで実行可能な乗算回数の上限を表す。被使用SHEパラメータは以下、実験に用いたSHEのパラメータである。N/Aは、乗算が実行できないことを意味する。
【0096】
図10は、EC ElGamalの暗号方式による加算型準同型暗号(Additive HE)の方式で暗号化されたデータに対する秘匿計算(以下「AHE計算」という。)の性能を示す。図10に示すAHE計算の結果は、参考文献1に記載の結果である。参考文献1によれば、図10に示すように、AHE計算におけるNumber of Mult.がN/Aであり、AHE計算における鍵長が256ビットである。
【0097】
参考文献1:Ilaria Chillotti, Nicolas Gama, Maria Georgieva, and Malika Izabachene, “TFHE: Fast Fully Homomorphic Encryption Over the Torus”, Journal of Cryptology, 25、April、2019
【0098】
図10は、Ring-LWEベース暗号の暗号方式による制限付き準同型暗号(SHE)の方式で暗号化されたデータに対する秘匿計算(以下「SHE計算」という。)の性能を示す。図10に示すSHE計算の結果は、参考文献1に記載の結果である。参考文献1によれば、図10に示すように、SHE計算におけるNumber of Mult.は1以上15未満である。参考文献1によれば、図10に示すように、SHE計算における最短の鍵長は20キロビットであり最長の鍵長は13メガビットである。参考文献1によれば、図10に示す結果は、Tab.1のt=2の場合に相当するSHE計算の結果である。Tab.1のt=2の場合に相当するとは、平文0又は1のいずれか一方で与えられる場合に相当するという意味である。
【0099】
図10は、完全準同型暗号(TFHE)の方式で暗号化されたデータに対する秘匿計算(以下「TFHE計算」という。)の性能を示す。図10に示すTFHE計算の結果は、参考文献1に記載の結果である。参考文献1によれば、図10に示すように、TFHE計算におけるNumber of Mult.は無限であり、鍵長は16メガビットである。参考文献1によれば、図10に示すように、TFHE計算では、各ビットに対するブートストラップの処理に13ミリ秒の時間を要した。
【0100】
図10は、秘匿計算システム100によって秘匿計算を実行する実験(以下「秘匿計算性能評価実験」という。)の結果得られた秘匿計算システム100が実行する秘匿計算に関する性能(以下「秘匿計算性能」という。)を示す。図10において、秘匿計算性能評価実験の結果得られた秘匿計算性能は囲いD101に示されている。図10は、秘匿計算性能評価実験の結果得られた秘匿計算性能についてNumber of Mult.が無限であり、鍵長が256ビットであったことを示す。図10は、秘匿計算性能評価実験では、平文の復号化に際して確率計算によって発生するノイズが含まれていたことを示す。
【0101】
(変形例)
端末装置1及び秘匿計算装置2は、ネットワークを介して通信可能に接続された複数台の情報処理装置を用いて実装されてもよい。この場合、端末装置1及び秘匿計算装置2が備える各機能部は、複数の情報処理装置に分散して実装されてもよい。例えばランダムビット列生成部220と、暗号化データ取得部210、秘匿計算部230及び出力制御部250とはそれぞれ異なる情報処理装置に実装されてもよい。
【0102】
端末装置1と秘匿計算装置2とは、必ずしも異なる装置として実装される必要は無い。例えば端末装置1と秘匿計算装置2とは両者の機能を併せ持つ1つの装置として実装されてもよい。
【0103】
なお、端末装置1及び秘匿計算装置2の各機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。プログラムは、電気通信回線を介して送信されてもよい。
【0104】
なお、図8における第1入力値Aは、第1暗号化データの一例である。図8における第2入力値Bは、第2暗号化データの一例である。なお、確率的数値表現上で積を示す値を取得するとは、確率的数値表現における積を取得することを意味する。なお、確率的数値表現上で和を示す値を取得するとは、確率的数値表現における和を取得することを意味する。
【0105】
なお、暗号化部130は、表現変換部120によって得られた確率表現平文に対する暗号化に際して、必ずしも確率表現平文の各ビットを個別に1つの暗号に暗号化する必要は無い。暗号化部130は、複数ビットをまとめて1つの暗号に暗号化してもよい。
【0106】
確率表現平文の複数ビットをまとめて1つの暗号に暗号化するとは、例えば確率表現平文のUビット(Uは2以上の整数)をU次元ベクトルと見なし、U次元ベクトルを1つの暗号に暗号化することである。なお、UビットをU次元ベクトルと見なすとは、Uビットを1つの情報として情報処理の対象に用いることを意味する。なお、確率表現平文の複数ビットをまとめて1つの暗号に暗号化するとは、例えば確率表現平文のUビットをU次の多項式と見なし、U次元の多項式を1つの暗号に暗号化してもよい。なお、UビットをU次元の多項式と見なすとは、Uビットを1つの情報として情報処理の対象に用いることを意味する。
【0107】
このようにUビットをまとめて1つの暗号に暗号化する場合、暗号化部130が暗号化に要する演算量は、確率表現平文の各ビットを個別に1つの暗号に暗号化する場合の演算量の1/Nである。そのため、確率表現平文の複数ビットをまとめて1つの暗号に暗号化することで、暗号化に要する演算量が削減される。
【0108】
またこのようにUビットがまとめて1つの暗号に暗号化される場合、秘匿計算部230における計算量も1/Nである。そのため、確率表現平文の複数ビットをまとめて1つの暗号に暗号化することで、秘匿計算に要する演算量が削減される。
【0109】
以下、確率表現平文の複数ビットをまとめて1つの暗号に暗号化する処理を、パッキング処理という。パッキング処理によって生成された暗号化データに対する和を取得する処理は、図8に示す処理に代えて以下に説明する連結型ストカスティック加算が実行される。
【0110】
<連結型ストカスティック加算>
秘匿計算部230においては、連結型ストカスティック加算が実行されてもよい。連結ストカスティック加算は、確率的数値表現上で2つの暗号化データの和を示す値である和Sを取得する処理であるものの、図8に示す処理と異なりランダムビット列Rを用いない処理である。
【0111】
連結ストカスティック加算では、Vビットの暗号化データとWビットの暗号化データとの和を示す値を取得する際に、Vビットの暗号化データとWビットの暗号化データとを連結する処理(以下「連結処理」という。)が実行される。連結処理は、具体的にはVビットの暗号化データとWビットの暗号化データとを連結し、(V+W)ビットのデータを生成する処理である。
【0112】
連結処理は、例えば“1011”という暗号化データと“0101”という暗号化データとを連結する場合、“1011”という暗号化データと“0101”という暗号化データとを用いて“10110101”という8ビットのデータを生成する処理である。
【0113】
連結処理は、例えば“0100”という暗号化データと“1111”という暗号化データとを連結する場合、“0100”という暗号化データと“1111”という暗号化データとを用いて“01001111”という8ビットのデータを生成する処理である。
【0114】
このように連結処理は、和の対象となる2つの暗号化データについて、一方の暗号化データを表すビット列の末尾に、他方の暗号化データを表すビット列を繋げる処理である。
【0115】
連結型ストカスティック加算では、連結処理によって生成されたデータが和Sである。そのため、秘匿計算部230は、連結の結果を和として取得する。
【0116】
確率的数値表現が表す各データは、0又は1の出現確率を表す情報ともみなせる。そのため、例えば4ビットの情報Qと4ビットの情報Pとを連結する連結処理が実行される場合、実行結果のデータにおける0と1との各出現確率は、情報Qにおける出現確率と情報Pにおける出現確率との平均である。平均は分子が和の取得の処理に相当するため、連結処理は、2つのデータの和を取得する処理に相当する。
【0117】
なお、秘匿計算部230において連結型ストカスティック加算が実行される場合、積を取得する処理は積を取得可能であればどのような処理であってもよく、例えば確率秘匿積取得処理である。
【0118】
なお連結型ストカスティック加算で用いられる暗号化データはパッキング処理によって生成されたデータであるので、平文の複数ビットが1つの暗号に暗号化された結果である。
【0119】
なお、第1パッキングデータと第2パッキングデータとの和を取得する連結型ストカスティック加算の処理は、和を表すビット列の各桁の値を第1パッキングビット列の対応する桁の値と第2パッキングビット列の対応する桁の値とのいずれか一方の値に決定する処理の一例である。第1パッキングデータは、パッキング処理によって生成された暗号化データである。したがって第1暗号化データの一例である。第2パッキングデータは、パッキング処理によって生成された暗号化データである。したがって第2暗号化データの一例である。第1パッキングビット列は、第1パッキングデータを表すビット列であり確率的数値表現の表現形式で表されるビット列である。第2パッキングビット列は、第2パッキングデータを表すビット列であり確率的数値表現の表現形式で表されるビット列である。
【0120】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0121】
1…端末装置、 2…秘匿計算装置、 9…ネットワーク、 100…秘匿計算システム、 11…制御部、 12…通信部、 13…記憶部、 14…入力部、 15…出力部、 91…プロセッサ、 92…メモリ、 110…平文取得部、 120…表現変換部、 130…暗号化部、 140…復号化部、 150…通信制御部、 160…出力制御部、 170…表現逆変換部、 21…制御部、 22…通信部、 23…記憶部、 24…入力部、 25…出力部、 93…プロセッサ、 94…メモリ、 210…暗号化データ取得部、 220…ランダムビット列生成部、 230…秘匿計算部、 240…通信制御部、 250…出力制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10