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

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

▶ 華為技術有限公司の特許一覧

特許7684506ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム
<>
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図1
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図2
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図3
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図4
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図5
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図6
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図7
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図8
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図9a
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図9b
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図9c
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図9d
  • 特許-ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-19
(45)【発行日】2025-05-27
(54)【発明の名称】ポリリシック構文ゼロ知識合同証明方法、装置、およびシステム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20250520BHJP
【FI】
H04L9/32 200C
【請求項の数】 27
(21)【出願番号】P 2024500211
(86)(22)【出願日】2022-07-06
(65)【公表番号】
(43)【公表日】2024-07-05
(86)【国際出願番号】 CN2022104212
(87)【国際公開番号】W WO2023280234
(87)【国際公開日】2023-01-12
【審査請求日】2024-02-14
(31)【優先権主張番号】63/218,758
(32)【優先日】2021-07-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100132481
【弁理士】
【氏名又は名称】赤澤 克豪
(74)【代理人】
【識別番号】100115635
【弁理士】
【氏名又は名称】窪田 郁大
(72)【発明者】
【氏名】シェン サン
(72)【発明者】
【氏名】ウェン トン
【審査官】平井 誠
(56)【参考文献】
【文献】欧州特許出願公開第03754898(EP,A1)
【文献】米国特許出願公開第2015/0341326(US,A1)
【文献】David Heath et al.,Stacked Garbling for Disjunctive Zero-Knowledge Proofs,Cryptology ePrint Archive Paper 2020/136,2020年02月10日,pages 1-30,https://eprint.iacr.org/2020/136
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00-40
G09C 1/00ー 5/00
(57)【特許請求の範囲】
【請求項1】
ゼロ知識証明を実行するための方法であって、
プローバにより、
証明されるべきステートメントに対してポリリシック構文分解を実行するステップと、
ポリリシック構文分解後の前記ステートメントを示す秘匿回路を生成するステップと、
前記秘匿回路を、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に分割するステップと、
共有リポジトリを介して、前記分割された秘匿回路を複数のベリファイアに送信するステップと、
前記複数のベリファイアにより、
前記秘匿回路のダイジェストを合同で計算するステップであって、前記複数のベリファイアの各々が、前記複数の秘匿回路部分のうちの対応するものの出力を計算する、ステップと、
前記複数のベリファイアに属するアグリゲータによって、前記複数の秘匿回路部分の前記出力の全てに集合的に適用される、統一ブール演算の値を計算するステップと、
前記アグリゲータにより、前記統一ブール演算の前記値が期待値と等しいか否かを判定し、前記統一ブール演算の前記値が前記期待値と等しい場合に限り、前記証明が検証されることを示すステップと
を備える、方法。
【請求項2】
前記ステートメントは、複数の相または変数を有し、前記ポリリシック構文分解は、複数のワイヤおよび複数のゲートを使用して、前記ステートメントのブール回路表現を生成するステップを含み、前記秘匿回路は、前記ブール回路表現から生成される、請求項1に記載の方法。
【請求項3】
前記ステートメントを一つまたは複数の正規表現に変換するステップと、前記正規表現からブール回路表現を生成するステップとをさらに備え、前記秘匿回路は、前記ブール回路表現から直接的または間接的に生成される、請求項1に記載の方法。
【請求項4】
前記ブール回路表現に対するカルノー図演算を実装して、前記ブール回路表現の簡略版を生成するステップをさらに備え、前記秘匿回路は、前記ブール回路表現の前記簡略版から直接的または間接的に生成される、請求項3に記載の方法。
【請求項5】
前記分割された秘匿回路を複数のベリファイアに向けて送信するステップは、非対話型紛失転送を使用して実行される、請求項1に記載の方法。
【請求項6】
マルチパーティ紛失転送スキームを実行して、前記プローバおよび前記ベリファイアの間の相互作用、ベリファイア間の相互作用、またはその両方を促進するステップをさらに備える、請求項1に記載の方法。
【請求項7】
コンピュータプロセッサによって実行されると、請求項1に記載の方法をコンピュータに実行させる命令が格納されている、非一時的コンピュータ可読媒体。
【請求項8】
システムであって、
プローバのコンピューティング機器であって、
証明されるべきステートメントに対してポリリシック構文分解を実行することと、
ポリリシック構文分解後の前記ステートメントを示す秘匿回路を生成することと、
前記秘匿回路を、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に分割することと、
共有リポジトリを介して、前記分割された秘匿回路を複数のベリファイアの機器に向けて送信することと
を行うように構成される、プローバのコンピューティング機器と、
前記複数のベリファイアのコンピューティング機器であって、
前記秘匿回路のダイジェストを合同で計算することであって、前記複数のベリファイアの機器の各々は、前記複数の秘匿回路部分のうちの対応するものの出力を計算することと、
前記複数のベリファイアの機器に属するアグリゲータの機器によって、前記複数の秘匿回路部分の前記出力の全てに集合的に適用される、統一ブール演算の値を計算することと、
前記アグリゲータの機器によって、前記統一ブール演算の前記値が期待値と等しいか否かを判定し、前記統一ブール演算の前記値が前記期待値と等しい場合に限り、前記証明が検証されることを示すことと
を行うように構成される、複数のベリファイアのコンピューティング機器と
を備える、システム。
【請求項9】
前記ステートメントは、複数の相または変数を有し、前記ポリリシック構文分解は、複数のワイヤおよび複数のゲートを使用して、前記ステートメントのブール回路表現を生成するステップを含み、前記秘匿回路は、前記ブール回路表現から生成される、請求項8に記載のシステム。
【請求項10】
前記プローバは、前記ステートメントを一つまたは複数の正規表現に変換することと、前記正規表現からブール回路表現を生成することとを行うようにさらに構成され、前記秘匿回路は、前記ブール回路表現から直接的または間接的に生成される、請求項8または9に記載のシステム。
【請求項11】
前記ブール回路表現に対するカルノー図演算を実装して、前記ブール回路表現の簡略版を生成するようにさらに構成され、前記秘匿回路は、前記ブール回路表現の簡略版から直接的または間接的に生成される、請求項10に記載のシステム。
【請求項12】
前記プローバは、非対話型紛失転送を使用して、前記分割された秘匿回路を前記複数のベリファイアの機器に向けて送信するように構成される、請求項8に記載のシステム。
【請求項13】
前記プローバの機器および前記ベリファイアの機器、複数のベリファイアの機器、またはその両方は、マルチパーティ紛失転送スキームを実行して、その間の相互作用を促進するように構成される、請求項8に記載のシステム。
【請求項14】
ゼロ知識証明を実行するための方法であって、
プローバにより、
証明されるべきステートメントに対してポリリシック構文分解を実行するステップと、
ポリリシック構文分解後の前記ステートメントを示す秘匿回路を生成するステップと、
前記秘匿回路を、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に分割するステップと、
共有リポジトリを介して、前記分割された秘匿回路を複数のベリファイアに送信するステップと
を備える、方法。
【請求項15】
前記ステートメントは、複数の相または変数を有し、ポリリシック構文分解は、複数のワイヤおよび複数のゲートを使用して、前記ステートメントのブール回路表現を生成するステップを含み、前記秘匿回路は、前記ブール回路表現から生成される、請求項14に記載の方法。
【請求項16】
前記ステートメントを一つまたは複数の正規表現に変換するステップと、前記正規表現からブール回路表現を生成するステップとをさらに備え、前記秘匿回路は、前記ブール回路表現から直接的または間接的に生成される、請求項14に記載の方法。
【請求項17】
前記ブール回路表現に対するカルノー図演算を実装して、前記ブール回路表現の簡略版を生成するステップをさらに備え、前記秘匿回路は、前記ブール回路表現の簡略版から直接的または間接的に生成される、請求項16に記載の方法。
【請求項18】
前記分割された秘匿回路を複数のベリファイアに向けて送信するステップは、非対話型紛失転送を使用して実行される、請求項14に記載の方法。
【請求項19】
マルチパーティ紛失転送スキームを実行して、前記プローバおよび前記ベリファイアの間の相互作用を促進するステップをさらに備える、請求項14に記載の方法。
【請求項20】
ゼロ知識証明を実行するための方法であって、
ベリファイアにより、
共有リポジトリを介して、分割された秘匿回路をプローバから受信するステップと、
一つもしくは複数の他のベリファイアと連携して、前記秘匿回路のダイジェストを合同で計算するステップであって、前記ベリファイアおよび前記一つもしくは複数の他のベリファイアは、複数の秘匿回路部分のうちの対応するもののそれぞれの出力をそれぞれ計算する、ステップと
を備え、
前記ベリファイア、または前記一つもしくは複数の他のベリファイアに属するアグリゲータは、
前記複数の秘匿回路部分の前記出力の全てに集合的に適用される、統一ブール演算の値を計算することと、
前記統一ブール演算の前記値が期待値と等しいか否かを判定し、前記統一ブール演算の前記値が前記期待値と等しい場合に限り、前記証明が検証されることを示すことと
を行う、方法。
【請求項21】
マルチパーティ紛失転送スキームを実行して、
前記プローバおよび前記ベリファイアの間、もしくは複数の前記ベリファイアの間、またはその両方の相互作用を促進するステップをさらに備える、請求項20に記載の方法。
【請求項22】
命令を備えるコンピュータプログラムであって、前記命令がコンピュータプロセッサによって実行されると、請求項1ないし7の何れか一つに記載の方法をコンピュータに実行させる、コンピュータプログラム。
【請求項23】
命令を備えるコンピュータプログラムであって、前記命令がコンピュータプロセッサによって実行されると、請求項14ないし19の何れか一つに記載の方法をコンピュータに実行させる、コンピュータプログラム。
【請求項24】
命令を備えるコンピュータプログラムであって、前記命令がコンピュータプロセッサによって実行されると、請求項20または21に記載の方法をコンピュータに実行させる、コンピュータプログラム。
【請求項25】
プロセッサを備える装置であって、前記プロセッサは、メモリに格納される命令を実行するように構成され、請求項1ないし7の何れか一つに記載の方法が実装されることを引き起こす、装置
【請求項26】
プロセッサを備える装置であって、前記プロセッサは、メモリに格納される命令を実行するように構成され、請求項14ないし19の何れか一つに記載の方法が実装されることを引き起こす、装置。
【請求項27】
プロセッサを備える装置であって、前記プロセッサは、メモリに格納される命令を実行するように構成され、請求項20または21に記載の方法が実装されることを引き起こす、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、セキュアな情報交換および暗号化計算の分野に関し、特に、コンピュータ化された通信システムにおけるゼロ知識証明に関する。
【背景技術】
【0002】
ゼロ知識証明は、ゼロ知識プロトコルとも呼ばれ、一方のパーティ(プローバ)が、他方のパーティ(ベリファイア)に対して、あるステートメントが真であることを、そのステートメント自体の妥当性を超える何れの情報も明かすことなく、証明(または実証)することができるプロトコルである。例えば、乱数のハッシュが与えられた際、プローバは、ゼロ知識証明を使用して、プローバが実際に乱数を所有している(または知っている)ことをベリファイアに確信させ得る。特に、その数が何であるかを明らかにすることなく、プローバは、実装されると、プローバがその数を所有している、または知っていると結論付けることに、説得力を持ってベリファイアを導く、証明体系を構築することができる。理想的には、ゼロ知識証明は、ベリファイアにあるステートメントを確信させながら、ステートメント自体の妥当性以外は何も明らかにしない。
【0003】
ゴールドワッサー、ミカリ、およびラコフによって導入されて以来、ゼロ知識(ZK)証明は、ユーザー認証もしくはデバイス認証、ならびに署名スキーム、秘密計算、およびブロックチェーン技術における新たなシールド取引など、多様な領域において用途が見出されている。ゼロ知識証明には、例えば、電子機器間などの暗号通信およびセキュア通信において様々な用途がある。
【0004】
ゼロ知識技術の二つの例は、zk-SNARKおよびzkBooである。このような技術は、既存の通信およびコンピューティングネットワークのインフラストラクチャに新しい多用途の機能をもたらすために使用することができる。このような技術を使用し、何れかのNP完全問題に対する対話型証明が与えられると、機器は、任意のNPステートメントに対するゼロ知識証明または引数を構築することができる。NPステートメントとは、NP完全問題に関連付けられるステートメントであり、プローバは、知識ゼロ証明スキームを介して、これが真(または偽)であることを証明しようとする。しかしながら、既存のゼロ知識技術は、モノリシックな状態に限定されている。すなわち、対象のNPステートメントは、一度に一つの引数のみを含むように制限されている。既存のゼロ知識技術のもう一つの制限は、計算オーバーヘッドが著しく大きく、改善の余地があることである。これは、例えば、このような技術では、許容できるほど小さい(例えば、無視できる)健全性エラーを達成するために、多くの反復の実行(例えば、多項式の算術根を求める多くの反復など)が必要となることが多いためである。健全性エラーとは、NPステートメントが偽である場合、許容できるほど小さな確率を除いて、プローバは、NPステートメントが真であるとベリファイアに誤認させることができないという特性を指している。
【0005】
そのため、従来技術における一つもしくは複数の制限を回避または緩和する、ゼロ知識証明を含む、セキュア情報交換のための方法および装置、ならびにシステムが必要性とされている。
【0006】
この背景情報は、本開示に関連する可能性があり得る情報を提供することを目的としている。前述の情報の何れかが本開示に対する先行技術を構成することを必ずしも認めることを意図するのではなく、また、そのように解釈されるべきではない。
【発明の概要】
【0007】
本開示の実施形態は、ゼロ知識証明方法、装置、およびシステムを提供する。特に、実施形態は、ポリリシック構文機能および合同検証の特性を提示する。本開示の実施形態は、セキュア情報交換、暗号、ユーザー認証もしくはデバイス認証、秘密計算、ブロックチェーン、または他のコンピューティング技術もしくは通信技術に適用することができる。
【0008】
本開示の一実施形態によれば、知識ゼロ証明を実行するための方法が提供される。本方法は、プローバによって、証明対象のステートメントに対してポリリシック構文分解を実行するステップを含む。本方法は、プローバによって、ポリリシック構文分解後のステートメントを示す秘匿回路(Garbled Circuit)を生成するステップをさらに含む。本方法は、プローバによって、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に、秘匿回路を分割するステップをさらに含む。本方法は、プローバによって、共有リポジトリを介して、分割された秘匿回路を複数のベリファイアに向けて送信するステップをさらに含む。本方法は、複数のベリファイアによって、秘匿回路のダイジェストを合同で計算するステップであって、複数のベリファイアの各々が、複数の秘匿回路部分のうちの対応するものの出力を計算する、ステップをさらに含む。本方法は、複数のベリファイアに属するアグリゲータによって、複数の秘匿回路部分における前述の出力の全てに集合的に適用される、統一ブール演算の値を計算するステップをさらに含む。本方法は、アグリゲータによって、統一ブール演算の値が期待値と等しいか否かを判定し、統一ブール演算の値が期待値と等しい場合に限り、証明が検証されることを示すステップをさらに含む。
【0009】
幾つかの実施形態では、ステートメントは、複数の相または変数を有し、ポリリシック構文分解は、複数のワイヤおよび複数のゲートを使用して、ステートメントのブール回路表現を生成するステップを含む。このような実施形態における秘匿回路は、ブール回路表現から生成される。
【0010】
幾つかの実施形態では、本方法は、ステートメントを一つまたは複数の正規表現に変換するステップと、正規表現からブール回路表現を生成するステップとをさらに含む。秘匿回路は、ブール回路表現から直接的または間接的に生成される。幾つかのさらなる実施形態では、本方法は、ブール回路表現に対してカルノー図(Karnaugh Map)演算を実施して、ブール回路表現の簡略版を生成するステップをさらに含む。このようなさらなる実施形態では、秘匿回路は、ブール回路表現の簡略版から直接的または間接的に生成される。
【0011】
幾つかの実施形態では、分割された秘匿回路を複数のベリファイアに向けて送信するステップは、非対話型紛失転送(oblivious transfer)を使用して実行される。
【0012】
幾つかの実施形態では、本方法は、マルチパーティ紛失転送スキームを実行して、プローバおよびベリファイアの間の相互作用、ベリファイア間の相互作用、またはその両方を促進するステップをさらに含む。
【0013】
本開示の一実施形態によれば、メモリに動作可能に結合されたプロセッサを備え、プロセッサによる、メモリに格納されたプログラム命令の実行によって、上述されるような本方法を実行するように構成される装置が提供される。
【0014】
本開示の一実施形態によれば、複数のコンピューティング機器を備えるシステムが提供され、本コンピューティング機器は、上述されるような本方法を実行するように協働的に構成される。
【0015】
本開示の一実施形態によれば、コンピュータプロセッサによって実行されると、コンピュータに上述されるような本方法を実行させる命令がその上に格納されている、非一時的コンピュータ可読媒体を備えるコンピュータプログラム製品が提供される。
【0016】
本開示の一実施形態によれば、上述される本方法を実行するように構成される装置が提供される。本装置は、メモリに動作可能に結合されたプロセッサを有するコンピューティング機器とすることができ、このメモリは、本方法に従った動作を実行するために、プロセッサによって実行されるプログラム命令を格納する。本装置は、複数のコンピューティング機器とすることができる。
【0017】
本開示の一実施形態によれば、上述される本方法を実行するように構成されるシステムが提供される。本システムは、それぞれのメモリに動作可能に結合されたそれぞれのプロセッサをそれぞれ有する、複数のコンピューティング機器を含むことができる。それぞれのメモリは、本方法に従った動作を実行するために、それぞれのプロセッサによって実行されるプログラム命令を格納する。本システムは、プローバによって操作されるコンピューティング機器と、一つまたは複数のベリファイアのうちのそれぞれのベリファイアによって操作される他のコンピューティング機器とを含むことができる。本システムは、必ずしもプローバ、またはベリファイアのうちの一つではない、調整役のパーティによって操作される中間コンピューティング機器を含むことができる。
【0018】
実施形態によれば、本システムは、プローバのコンピューティング機器と、複数のベリファイアのコンピューティング機器とを含む。このプローバのコンピューティング機器は、証明対象のステートメントに対してポリリシック構文分解を実行することと、ポリリシック構文分解後のステートメントを示す秘匿回路を生成することと、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に、秘匿回路を分割することと、共有リポジトリを介して、分割された秘匿回路を複数のベリファイアの機器に向けて送信することとを行うように構成される。複数のベリファイアのコンピューティング機器は、秘匿回路のダイジェストを合同で計算することであって、複数のベリファイアの機器の各々は、複数の秘匿回路部分のうちの対応するものの出力を計算する、ことを行うように構成される。複数のベリファイアの機器に属するアグリゲータの機器は、複数の秘匿回路部分における前述の出力の全てに集合的に適用される、統一ブール演算の値を計算することと、統一ブール演算の値が期待値と等しいか否かを判定し、前記統一ブール演算の値が期待値と等しい場合に限り、証明が検証されたことを示すこととを行うように構成される。
【0019】
実施形態によれば、コンピューティング機器などのプローバによる複数の操作を含む方法が提供される。本方法は、証明対象のステートメントに対してポリリシック構文分解を実行するステップを含む。本方法は、ポリリシック構文分解後のステートメントを示す秘匿回路を生成するステップを含む。本方法は、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に、秘匿回路を分割することを含む。本方法は、共有リポジトリを介して、分割された秘匿回路を複数のベリファイアに向けて送信するステップを含む。
【0020】
実施形態によれば、コンピューティング機器のようなベリファイアによる複数の操作を含む方法が提供される。本方法は、共有リポジトリを介して、プローバから分割された秘匿回路を受信するステップを含む。本方法は、一つまたは複数の他のベリファイアと連携して、秘匿回路のダイジェストを合同で計算するステップであって、ベリファイア、および一つまたは複数の他のベリファイアは、複数の秘匿回路部分のうちの対応するもののそれぞれの出力をそれぞれ計算する、ステップを含む。ベリファイア、または複数のベリファイアに属するアグリゲータは、例えば、本方法の一部として、さらなる操作を実行する。これらのさらなる操作は、複数の秘匿回路部分における前述の出力の全てに集合的に適用される、統一ブール演算の値を計算するステップと、統一ブール演算の値が期待値と等しいか否かを判定し、統一ブール演算の値が期待値と等しい場合に限り、証明が検証されることを示すステップとを含む。
【0021】
実施形態によれば、プロセッサ、メモリ、およびネットワーク・インターフェースを備えるコンピューティング機器が提供される。本コンピューティング機器は、証明対象のステートメントに対してポリリシック構文分解を実行するように構成される。本コンピューティング機器は、ポリリシック構文分解後のステートメントを示す秘匿回路を生成するように構成される。本コンピューティング機器は、分割された秘匿回路を集合的に形成する複数の秘匿回路部分に、秘匿回路を分割するように構成される。本コンピューティング機器は、共有リポジトリを介して、分割された秘匿回路を複数のベリファイアの機器に向けて送信するように構成される。
【0022】
実施形態によれば、プロセッサ、メモリ、およびネットワーク・インターフェースを備えるコンピューティング機器が提供される。本コンピューティング機器は、共有リポジトリを介して、プローバの機器から分割された秘匿回路を受信するように構成される。本コンピューティング機器は、一つまたは複数の他のベリファイアの機器と連携して、秘匿回路のダイジェストを合同で計算することであって、本コンピューティング機器、および一つまたは複数の他のベリファイアの機器は、複数の秘匿回路部分のうちの対応するもののそれぞれの出力をそれぞれ計算する、ことを行うように構成される。コンピューティング機器、または複数のベリファイアの機器に属するアグリゲータの機器は、複数の秘匿回路部分における前述の出力の全てに集合的に適用される、統一ブール演算の値を計算することと、統一ブール演算の値が期待値と等しいか否かを判定し、統一ブール演算の値が期待値と等しい場合に限り、証明が検証されることを示すこととを含む、さらなる操作を実行する。
【図面の簡単な説明】
【0023】
図1】本開示の実施形態に従って提供される、装置またはシステムを例証する図である。
図2】本開示の実施形態に従って実行される操作を例証する図である。
図3】本開示の一実施形態による、ポリリシック構文分解の操作を例証する図である。
図4】本開示の一実施形態による、秘匿回路の生成操作を例証する図である。
図5】本開示の一実施形態による、秘匿回路のゲート分割の一例を例証する図である。
図6】本開示の一実施形態による、オフラインの非対話型マルチパーティ紛失転送(OT)スキームを例証する図である。
図7】本開示の別の実施形態に従って実行される、OTおよびOT集約を例証する図である。
図8】本開示の一実施形態による、暗号機能間の相互作用を例証する図である。
図9a】本開示の実施形態に従って実行される、様々な演算を例証する図である。
図9b】本開示の実施形態に従って実行される、様々な演算を例証する図である。
図9c】本開示の実施形態に従って実行される、様々な演算を例証する図である。
図9d】本開示の実施形態に従って実行される、様々な演算を例証する図である。
図10】本開示の異なる実施形態による、本明細書に明示的または黙示的に説明される、本方法および機能における操作の一部または全部を実行し得る、コンピューティング機器を示す模式図である。
【0024】
添付の図面全体を通じて、同様の特徴は、同様の参照番号によって識別されることに留意されたい。
【発明を実施するための形態】
【0025】
本開示の実施形態によれば、ゼロ知識証明方法、装置、およびシステムが提供される。このような方法、装置、およびシステムは、本質的に暗号技術と見做すことができる。
【0026】
本開示の実施形態は、完全な構文検証機能を備える、著しく強力なプライバシー保証を提供することができる。したがって、ステートメント(例えば、NPステートメントなど)内における複数の変数(相とも呼ばれる)を、変数の真の値を実質的に明らかにすることなく、実質的に検証することができる。これは、実施形態のポリリシック特性に関連する。したがって、このような実施形態は、契約検証、監査等のような用途に利用することができる。例えば、契約における複数の項目、または業務リストにおける複数の業務を示すステートメントを作成し、検証することができる。幾つかの実施形態は、ブロックチェーンに実装することができる。例えば、実施形態は、ゼロ知識証明サービスを提供するプラグインモジュールとして、ブロックチェーンシステム内に展開することができる。このような実施形態では、複数のベリファイア(例えば、匿名のベリファイアなど)がゼロ知識証明を合同で提供することができる。
【0027】
本開示の実施形態は、分割された秘匿回路を使用して、共同ゼロ知識証明システムを実現する方法に関する。このような実施形態は、幾つかの従来システム、完全な構文検証、またはその両方よりも少ないオーバーヘッドを潜在的に有する。分割された秘匿回路に基づく本開示の実施形態は、潜在的に多用途性があり、単一使用であり得て、これらは、より包括的なステートメントを有する任意の回路に適用することができ、全てのパーティ間において非対話性を実現することができることを意味する。非対話性とは、パーティが、(例えば、ハンドシェイクプロトコルを介して)直接通信するのではなく、公的情報リポジトリ(例えば、コンピュータのウェブサーバなど)のような仲介装置を介して、パーティが情報を交換する状況を指すことがある。少なくとも一つの実施形態は、包括的なブール論理式を複数の変数と照合するように、分割された秘匿回路を作成するために使用され得る。「ポリリシック構文」という用語は、包括的なステートメントにおけるコンテキストベースの複数の変数を指すために使用される。また、分割された秘匿回路を使用する、共同ゼロ知識証明プロトコルも開示される。このプロトコルにおける様々なバリエーションが分析され、最先端のプロトコルと比較される。
【0028】
本開示の実施形態は、秘匿回路Cの簡潔なダイジェストを合同で計算するベリファイア群を含む。ベリファイア群は、インターネットのようなネットワークを介して通信するベリファイアのクラスタとすることができる。ベリファイア群は、匿名とすることができる。秘匿回路Cは、ベリファイアによって準備される。また、プローバは、秘匿回路Cを分割し得る。また、プローバは、秘匿回路を共有リポジトリに対して(例えば、ランダムに)送信し得る。この共有リポジトリは、公的にアクセス可能であり得る。幾つかの実施形態では、共有リポジトリは、ブロックチェーンとして実装されてもよい。幾つかの実施形態では、共有リポジトリは、ウェブポータルとして実装されてもよい。本明細書で使用されるように、ランダム性は、擬似ランダム性、または真の(技術的に可能な限りの)ランダム性を指すことがある。プローバ(アリス)は、ランダム性を使用して、回路をスクランブル化し得て、秘匿回路のランダムな送信は、ランダムにスクランブル化された回路を共有リポジトリに投稿することを指し得る。
【0029】
プローバおよびベリファイアは、通信ネットワークを介して通信可能に結合される、異なるコンピューティング機器とすることができ、またはこれらに関連付けることができる。これに関して、プローバは、プローバのコンピューティング機器、またはプローバのネットワーク化されたコンピューティング機器とすることができ、ベリファイアは、ベリファイアのコンピューティング機器、またはベリファイアのネットワーク化されたコンピューティング機器とすることができる。コンピューティング機器は、例えば、磁気メモリ、電子メモリ、または光学メモリとし得る、メモリに動作可能に結合される、一つまたは複数のコンピュータプロセッサを含むことができる。コンピューティング機器は、通信ネットワークを介して、(例えば、電気信号、無線信号、または光信号として)情報を送信、受信、または送信および受信の両方を行うための通信インターフェースをさらに含むことができる。このメモリは、プロセッサによる実行のためのプログラム命令を格納し、ゼロ知識証明操作に関連付けられる情報も格納し得る。あるいは、ゼロ知識証明操作に関連付けられるプログラム命令および情報は、コンピューティング機器における別々のメモリに格納することもできる。
【0030】
本開示の実施形態は、現在利用可能な公的検証システムよりも包括的であり得る、公的検証システムを提供し得る。本検証システムは、この分野における先行技術がモノリシックな検証の実施に限定されていることを考慮すると、現在可能なものよりも複雑なステートメントを検証することが可能であり得る。例えば、モノリシック検証では、算術回路における単一のハッシュ値のみを一度に検証することができる。さらに、本開示の実施形態は、紛失転送(OT)および秘匿回路のアプローチに基づいて、実質的に完全なプライバシー保護計算(暗号化された計算)を実現し得る。
【0031】
したがって、本開示の実施形態は、秘匿回路レジームに基づくマルチパーティによるゼロ知識証明を効率的に生成し得る。また、実施形態は、オンラインゼロ知識証明システムの重要な特徴と見做されること、例えば、本質的に非対話的で簡潔であること、および公的に検索可能な情報を提供するためにブロックチェーンに公開することを維持し得る。これは、例えば、ブロックチェーン技術で使用されるような、シールド監査サービスを提供する場合に、特に適用可能であることがある。
【0032】
本明細書において使用されるような種々の用語は、例えば、ゼロ知識証明に関して考慮する当業者であれば、容易に理解することになる。例えば、秘匿回路は、暗号プロトコルを指しており、典型的には、「秘密の生成方法および交換方法」、ヤオ、アンドリュー・チー・チー、第27回コンピュータサイエンス基礎論に関する年次シンポジウム(SFCS 1986)、コンピュータサイエンス基礎論、1986年、第27回年次シンポジウム、頁162-167に記載されている。カルノー図は、回路の最適化においてよく知られた手法である。秘匿回路とそれに関連する「回路(circuits)」は、物理的な電気回路ではなく、論理的なデータ構造を指している。紛失転送は、当該技術分野で知られる別の暗号プロトコルである。機能は、コンピュータの機能的態様であると理解され得る。すなわち、機能とは、例えば、コンピュータプログラム命令を通じて、所与の入力から規定の方式で出力を生成するように構成されるコンピュータ機器の態様に相当する。
【0033】
容易に理解されることになるように、秘匿回路は「計算を暗号化する」ために使用されるツールであり、計算の出力のみを明らかにし、入力または中間値については何も明らかにしない。「回路」とは、入力に対する論理演算の組み合わせを指しており、その構文は、回路における(AND、OR、NOT)ゲートなどのブールゲートを用いて、ブール回路として表現される。論理回路の例は、以下の通りである。古典的なヤオの「秘匿化スキーム(garbling scheme)」には、秘匿化装置、符号化装置、およびベリファイアが含まれる。秘匿化装置は、(平文の)回路Cを秘匿回路
【0034】
【数1-1】
【0035】
に変換する。符号化装置は、回路用の(平文の)入力xを秘匿入力
【0036】
【数1-2】
【0037】
に変換する。回路を秘匿化するために使用された秘密のランダム性は、xを
【0038】
【数1-3】
【0039】
に符号化するために使用される。ベリファイアは、秘匿回路
【0040】
【数1-4】
【0041】
および秘匿入力
【0042】
【数1-5】
【0043】
を操作し、回路出力C(x)を計算する。C(x)を評価して決定するために、x、または
【0044】
【数1-6】
【0045】
内部にある秘密のランダム性を知る必要はない。セキュリティの主な考え方は、
【0046】
【数1-7】
【0047】
および
【0048】
【数1-8】
【0049】
を併せても、C(x)以上の情報を漏らさないことである。特に、
【0050】
【数1-9】
【0051】
および
【0052】
【数1-10】
【0053】
は、理想的にはxについて何も明らかにしないが、C(x)の計算を完了させることを可能にする。このアプローチは、「暗号化された計算」と呼ばれることがよくある。
【0054】
図1は、本開示の実施形態に従って提供される装置もしくはシステム100を例証している。装置もしくはシステム100は、ネットワーク化されたコンピューティング機器、または複数のネットワーク化されたコンピューティング機器を使用して実装することができる。装置もしくはシステム100は、コンピューティングハードウェアもしくはファームウェアのみ、またはコンピューティングハードウェアに指示された方式で実行させる、コンピューティングハードウェアおよびソフトウェアの組み合わせを使用して実装することができる。装置もしくはシステム100は、モジュールと呼ばれる複数のコンポーネントを含む。各モジュールは、別個の構造的機器、機能的機器、または構造的機器および機能的機器の両方とすることができる。モジュールは、指定された通信プロトコルを介して、相互に通信し得る。第一のモジュールは、ポリリシック構文分解モジュール110と呼ばれる。第二のモジュールは、秘匿回路生成モジュール120と呼ばれ、これは、分割された秘匿回路を構築するために実装される。第三のモジュールは、マルチパーティ非対話型紛失転送モジュール130と呼ばれ、これは、非対話型OTベースのマルチパーティ合同検証スキームを実行するために実装される。ウェブサーバまたはブロックチェーンなどの、公的にアクセス可能な場所または媒体に情報を投稿する投稿モジュール125も含まれ得る。投稿モジュール125は、幾つかの実施形態では省略されてもよい。
【0055】
図1によると、便宜上「アリス」と呼ばれるプローバ140は、第一のモジュール110および第二のモジュール120を呼び出すことによって、装置もしくはシステム100を自己開始型で起動する。このようなステップでは、第一のモジュールおよび第二のモジュールは、複数のベリファイア145に提供するための分割された秘匿回路を準備するために使用され、複数のベリファイアの例は、便宜上、「ボブ」および「チャーリー」と呼ばれる。プローバおよびベリファイアは、コンピューティング機器であってもよいし、またはコンピューティング機器を含んでもよいことに留意されたい。生成された秘匿回路は、例えば、第三のモジュール130を使用して、プローバ140によってベリファイアに配布される。この配布は、拡張OTスキームを必要とする。この配布には、投稿モジュール125が、公的にアクセス可能であり得るブロックチェーンまたはウェブポータルなどの、オンラインシステムに投稿することが含まれる。オンラインシステムを使用すると、ベリファイア145は、パーティション状の秘匿回路のうちの一つにそれぞれ対応する、中間回路出力を計算する。次に、別のベリファイア(例えば、「デビッド」と呼ばれる)であり得る、秘匿回路のOTアグリゲータ150が、i番目の秘匿回路(すなわち、中間回路出力)について、評価出力Yに適用される、統一ブール演算の値Yを計算する。統一演算は、最後の回路(集約回路)の前の全ての回路出力Yを結合する。また、秘匿回路のOTアグリゲータは、YがYの期待値を表す値yに等しいか否かを判定する。秘匿回路のOTアグリゲータ150(デビッド)は、その後、プローバが検証されるか(Y=yである場合)、または検証されないか(それ以外の場合)を示す結果135を提供することができる。
【0056】
また、図1は、プローバ140によって第一のモジュール110に提供され得る補助入力102も例証している。補助入力102は、情報の冗長性を提供する入力を含み得て、これは、秘匿回路の復号化を支援するために使用され得る。
【0057】
本開示の実施形態は、例えば、図1に例証されるように、この問題が当業者には容易に理解されることになるように、ゼロ知識証明の半分正直者(semi-honest)モデルに従って、偽の証明の問題を抑制する保護機構を提供することに留意されたい。例えば、証明における特定のパラメータを生成するために使用される(例えば、擬似乱数生成器のシードおよびアルゴリズムに対応する)秘密のランダム性に、パーティがアクセスする場合、これらの実施形態は、ベリファイアによって真の証明として解釈される偽の証明を作成することが可能になる。本開示の実施形態は、分割された秘匿回路を使用して、公開パラメータをマルチパーティ設定によって生成しており、これは、このような偽の証明に関する発生または実行可能性を抑制する効果を有している。
【0058】
本開示の実施形態は、ベリファイアのクラスタが、オンライン上の匿名かつ合同で、プローバによって準備される秘匿回路Cの簡潔なダイジェストを計算することを可能にする。この簡潔なダイジェストは、1ビットのバイナリ出力(例えば、「0」または「1」など)のような短い指標を含む。また、プローバは、秘匿回路の分割を実行し、分割された秘匿回路を、公的にアクセス可能なリポジトリ(例えば、ブロックチェーン、またはウェブポータルなど)に対してランダムに送信し得る。これは、モノリシックな検証のみを実施することができる他の技術と比較して、より複雑なステートメントを検証することができる、より包括的な公的検証システムを提供し得る。モノリシック検証は、一度に算術回路における単一のハッシュ値のみを計算することができる。また、実施形態は、OT回路および秘匿回路に基づいて、実質的に完全なプライバシー保護計算(暗号化された計算)を実現し得る。
【0059】
セキュリティ評価に関して、実施形態は、半分正直な脅威モデルに対するプライバシーを得ることができる。これは、一般化されたフィアット・シャミールの秘密共有スキーム(フィアット A.、シャミール A.、(1987年)自分自身を証明する方法:識別および署名の問題に対する実践的な解決策、出典:オドリズコ A.M.、(編)暗号学の進歩-CRYPTO’86、CRYPTO 1986、コンピュータサイエンスのレクチャーノート、巻263、シュプリンガー、ベルリン、ハイデルベルク、https://doi.org/10.1007/3-540-47721-7_12)を使用して形式化することができ、このスキームは、tセキュアnパーティプロトコルを定義し、
【0060】
【数1-11】
【0061】
個の秘密を単一の多項式に詰め込む。プローバに一定数のフィールド要素を送信すことにより、全ての入力に対して合同計算を実行することができる。
【0062】
【数1-12】
【0063】
個の秘密を単一の多項式に詰め込む結果として、本開示の実施形態におけるセキュリティ境界tは、複数のベリファイアを用いて、
【0064】
【数1-13】
【0065】
から
【0066】
【数1-14】
【0067】
に低減することができる。
【0068】
種々の実施形態では、OTは、潜在的に半分正直な(および、そのために半分不正直な)パーティに対する保護を容易にするために使用される。種々の実施形態は、以下の二つの改良のうちの一方または両方を用いて、計算効率を達成することができる。第一に、簡略化された表現を用いて、論理ゲート数を削減するためにカルノー図技術が使用される。第二に、検証手順をマルチパーティOTスキームと(例えば、緊密に)統合させることにより、秘匿回路は、分割によって生成される。これは、他のアプローチと比較して、ベリファイア側における計算コストを削減し得る。セキュリティ定義および効率要件は、簡潔なダイジェストの計算に使用されるハッシュアルゴリズムが、衝突耐性があることを意味することがある。そのため、ハッシュ関数には、通常、鍵が設定されており、共通の参照文字列によって鍵が設定されることもある。
【0069】
図2は、分割された秘匿回路の構築を伴う三つのオフラインベリファイアによって「ブラインド」検証が行われる、二つのポリリシック入力の例に関連して、本開示の一実施形態を例証している。プローバ(アリス)140は、第一のモジュール110および第二のモジュール120を呼び出すことによって、プロセスを自己開始型で起動して、ステップ204では、複数のベリファイアのために分割された秘匿回路を準備する。プローバ(アリス)140は、公的にアクセス可能であるブロックチェーン、またはウェブポータルなどの、オンラインシステムを介して、ベリファイア145と共に、拡張された(例えば、1-2)OTスキーム220を使用して、第三のモジュール130を通じて秘匿回路を配布する。公的オンラインシステムを通じて、ステップ204では、ベリファイア145であるボブおよびチャーリーは、分割された各秘匿回路Cに対応する中間回路出力Yを計算する。アリス140は、(OTスキーム220を介して)ボブおよびチャーリー145からそれぞれYおよびYを収集する。次いで、アリス140は、OTスキーム226を介して、YおよびYをデビッド150に提供する。後続するステップでは、秘匿回路のOTアグリゲータ(デビッド)150は、ステップ228でYを計算し、ステップ232でY=yであるか否かを検証する。
【0070】
回路Cは、秘匿回路評価問題と見做すことができる。この問題では、プローバ(アリス)は、二要素のガロア体である有限体GF(2)上のブールゲート演算からなる、回路Cを構成する。一般に、回路Cは、入力ベクトルXを用いて、次数mによって分割することができる。そのため、回路Cは、ベクトルC:(C,C,...)を用いて表すことができる。本明細書において使用されるように、括弧に続く上付き添え字は、通常、ベクトルまたは対応する回路の長さを表す。評価の目標は、入力Xに対してCを評価することである。この問題に対する非対話型証明では、プローバは、入力Xに対するCの出力ベクトルY:(Y,Y,...)を送信し、ベリファイアは、Y=C(X)であるか否かを判定する。
【0071】
図1に戻って参照すると、ポリリシック構文分解モジュール110は、機能的には、演算
【0072】
【数1-15】
【0073】
を実行すると見做すことができる。モジュール110は、入力ベクトルm:(m,m,...)を受信し、セキュリティパラメータ1λの入力として、入力ベクトルをハッシュ化されたベクトル
【0074】
【数1-16】
【0075】
にマッピングする。モジュール110は、ブールゲートに基づく式Cを出力する。
【0076】
秘匿回路生成モジュール120は、機能的には、演算
【0077】
【数1-17】
【0078】
を実行すると見做すことができる。モジュール120は、ブールゲートに基づく式Cを入力として受け取り、本来の秘匿回路生成演算を使用して、列挙型長mの秘匿回路(C,C,...)を出力する。
【0079】
マルチパーティ非対話型紛失転送モジュール130は、機能的には、演算
【0080】
【数1-18】
【0081】
を実行すると見做すことができる。モジュール130は、分割された秘匿回路の出力(Y,Y,...)m-1から入力を受け取り、集約された出力Yを生成する。すなわち、モジュール130は、分割された秘匿回路の出力に対して動作する。検証動作は、Yが、xgcと表記される、拡張秘匿回路動作に対する期待出力に等しいか否かを検証するために、(例えば、モジュール130によって)実行することができる。すなわち、
【0082】
【数1-19】
【0083】
である。
【0084】
本開示の実施形態は、
【0085】
【数1-20】
【0086】
と表記されるユニバーサルハッシュ演算を使用する。ユニバーサルハッシュ演算は、共通参照文字列(crs)Sを入力として受け取り、ユニバーサルハッシュ関数hを使用して、一様分布ダイジェストを出力する。
【0087】
本開示の実施形態は、
【0088】
【数1-21】
【0089】
と表記される拡張秘匿回路演算gcを使用する。Gbは、fをトリプレット(C,e,d)に変換するランダム化的秘匿化演算であり、ここで、Cは、i番目の分割された秘匿回路であり、eは、回路Cに対応する符号化情報であり、dは、対応する復号化情報である。Enは、
【0090】
【数1-22】
【0091】
を介して、入力Xを秘匿入力にマッピングする符号化演算である。Deは、
【0092】
【数1-23】
【0093】
を介して、秘匿出力Yを平文出力にマッピングする復号化演算である。Evは、秘匿出力
【0094】
【数1-24】
【0095】
を生成する入力X、Fを有する演算である。
【0096】
本開示の特定の実施形態は、正確性およびプライバシーのセキュリティ特性を可視化すことができる。幾つかの実施形態では、正確性は、以下のように形式的に記述することができる。入力サイズ
【0097】
【数1-25】
【0098】
を有する全ての共通参照ストリング、およびCにおける全ての秘匿回路Cに対して
【0099】
【数1-26】
【0100】
である。
【0101】
幾つかの実施形態では、プライバシーは、送信装置Sと複数の受信装置Rとの間の任意の非対話型マルチパーティ紛失転送プロトコル(S,R)に対して、受信装置Rは、無視できる確率、例えば、
【0102】
【数1-27】
【0103】
が参照文字列の入力サイズである、オーダー
【0104】
【数1-28】
【0105】
の確率を除いて、対応する回路Cにマッピングされた入力ビットに関する何れの情報も学習しないという特性として、形式的に記述することができる。
【0106】
[ポリリシック構文分解モジュール]
ここで、ポリリシック構文分解モジュール110に関する特定の詳細について説明することになる。このモジュールは、プローバからの完全な意味ステートメントを、ブール演算を伴うポリリシック構文論理式に変換するように動作することができる。モジュール110は、完全な意味ステートメントをブール演算に還元する。この変換は、出力からブールゲートに基づく演算を効率的に構築するのに適した方式において、複雑な入力ステートメントを出力に変換することができる。プローバ140は、複合ステートメントにおける実際の値を明らかにすることなく、検証対象の複合ステートメントを所有する。複合ステートメントは、例えば、ポリリシック構文分解モジュール110によって、対応する文字列の集合を表す一つまたは複数の正規表現に変換される。例えば、www.snort.orgにおいて、利用可能な侵入検知システムのようなツールが使用され得る。これらの正規表現を生成しているポリリシック構文分解モジュール110は、正規表現マッチング演算を実装するように構成される。この演算は、入力文字列から(正規表現によって記述される)パターンを検出するために実行される。
【0107】
複合ステートメントの例としては、単純なステートメントがある。すなわち、”The car only starts [if] the ”start” button is pressed [and] the brake pedal is pressed.”(「自動車は、「発進」ボタンが押され、かつ、ブレーキペダルが踏まれた場合にのみ発進する。」)である。文中の角括弧で囲まれた項[・]間におけるステートメントの下線部は、演算子ベクトルOにおいて検証対象となる変数Sを表し、角括弧で囲まれた項[・]は、これらの変数S間における論理関係を表している。一度に一つの変数のみを処理することができるモノリシックな本来のゼロ知識証明システムと比較して、本開示の実施形態は、正規表現をパターンと照合し、対応する回路を構築するように動作し得る。複合ステートメントは、複数の変数および複数のブール演算を有するブール構文に変換することができ、複合ステートメントまたはブール構文は、ブール回路として扱うことができる。次いで、ブール回路は、マルチパーティ計算とその後のマルチパーティ検証とを容易にするために分割することができる。
【0108】
ポリリシック構文分解モジュール110は、論理式の複雑さを緩和するために、カルノー図演算を実装するように構成され得る。本開示の実施形態の効率は、一般に、生成および処理される対象回路の複雑さに依存するため、これは、全体的な効率を改善することができる。幾つかの実施形態では、入力ベクトルSには6個以下の入力がある。
【0109】
図3は、擬似コードを使用して、ポリリシック構文分解モジュール110によって実行される一連の演算を例証している。この擬似コードは、フローチャートのような別の手段によって容易に視覚化することができ、対応するコード化された命令を実行するコンピュータによって容易に実装することができる。図3によれば、ポリリシック構文分解モジュール110は、入力として、複合文字列「string」を受け取り、出力として、論理構成体である(例えば、ブール)回路Cを提供する。回路Cは、例えば、変数の指示と、変数に適用される論理演算またはブール演算などの演算とを含むことができる。回路Cは、有限体上のブールゲート演算から構成することができる。
【0110】
図3における演算は、複合文字列の長さに亘って実行され、複合文字列に対してExtractor(抽出器)演算を実行するステップと、Extractor演算の出力に対して(ユニバーサルハッシュ関数を使用して)ハッシュ生成を実行するステップとを含む。二つの抽出器演算が、次のように定義されている。すなわち、Extractor()は、複合文字列における変数を認識および/または照合し、Extractor()は、複合文字列における演算子を認識および/または照合する。これらの抽出器演算は、キー変数と、ブール演算子[AND,OR,XOR等]において表現される論理関係とを有する文字列における複合式を照合することができる、一般化された抽出関数に相当する。
【0111】
一旦、複合文字列がこの方式において処理されると、関数Regexp()が、図示された抽出器演算およびハッシュ演算の出力に適用される。Regexp()は、文字列における正規表現を特定のパターンと照合し、パラメータおよびパターンを正規表現に変換するように構成される、一般化された正規表現関数である。
【0112】
正規表現関数の出力は、一般化された変換関数CircuitGen()に対する入力として提供される。この一般化された変換関数は、入力された正規表現文字列を論理回路(例えば、複合文字列のブール回路表現など)に変換するように構成される。
【0113】
一般化された変換関数CircuitGen()の出力は、カルノーマッピング関数K-map()に提供される。カルノーマッピング関数は、カルノーマッピングの原理に従って、それに提供される論理回路における論理ゲートの複雑さを(可能な限り)緩和するように構成される。カルノーマッピング関数は、ポリリシック構文分解モジュール110の出力回路Cを提供する。
【0114】
[秘匿回路生成モジュール]
論理ゲート演算の深度に沿った真理値表のリストを表す回路Cが与えられた場合、本開示の実施形態は、例えば、「非対話型コミットメントの奇妙なケース」、M.マフムーディおよびR.パス、2012年9月10日、cs.cornell.eduに記載されているように、非対話型コミットメントを有する秘匿回路スキームを実装する。これは、ベリファイアが、検証の望ましい正確性およびプライバシー特性を実現する際にベリファイアを促進することができる。M.べラーレ、V.T.ホアン、およびP.ロガウェイ、秘匿回路の基礎、出典:T.ユー、G.ダネジス、およびV.D.グリゴール、編集者、ACM CCS 12、頁784-796、ACMプレス、2012年10月に記載されるような秘匿化スキームを使用することができる。幾つかの実施形態では、kがセキュリティパラメータを表記する場合、秘匿化スキームの正確性特性は、以下のように定義される。すなわち、
【0115】
【数3-1】
【0116】
である。
【0117】
ブール回路は、有向非巡回グラフ(DAG)と見做すことができ、すなわち、ループの無いグラフであり、その各エッジは、送信元ノードから宛先ノードに向けられ、各ノードは、特定の演算op(例えば、ANDまたはXORなど)を実行する計算単位を表している。さらに、全てのゲートは、左ワイヤおよび右ワイヤの二つの入力ワイヤを有するように固定され、これらは、それぞれ
【0118】
【数3-2】
【0119】
およびrによって表記される。ゲートは、ワイヤが与えられると、ビット値0または1を返すように機能する。回路の深度は、dによって表記され、その幅は、nによって表記される。ブール回路を表現する方法は多数あるが、その一つの表現は、d行n列の行列Mとして表現される。この表現では、回路の各層
【0120】
【数3-3】
【0121】
は、一定の幅nを有しており、各エントリは、ゲートになる。
【0122】
秘匿回路生成モジュールは、分割された秘匿回路構築演算を実行するように実装される。分割された秘匿回路は、以前に生成されたポリリシック構文表現に基づいて作成され得て、公的暗号プリミティブを有する秘匿回路が準備され得る。特に、マルチパーティOT検証プロトコルを使用して相互作用する、複数のベリファイアを用いる使用に適した分割スキームが実装される。それに応じて、xGC(分割された秘匿回路)は、ベクトルC(C、C、...)によって表現される、またはベクトルベクトルC(C、C、...)に記録されるように、秘匿回路Cを複数の独立した秘匿回路に適切に分割することができる。これは、情報(例えば、真理値表または対応する行列など)を複数の表現にセキュアに分割することを容易にすることができる。真理値表内の入力[x]および出力[o]の行列を有するヤオの秘匿回路Cが与えられた場合、実施形態は、真理値表行列Tにおける複数の表現に、表をセキュアに分割する。これにより、暗号証明は、マルチパーティ検証により適したことになる。したがって、複合ステートメントを表すブール回路が分割され、結果として得られる回路に、例えば、入力の真値を不明瞭にするための秘匿化演算を施し得る。
【0123】
図4は、本開示の実施形態による、秘匿回路生成モジュール120の動作400を例証している。図5は、図4における別の操作の態様を例証している。図6は、図4における別の操作の態様を例証している。
【0124】
図4を参照すると、操作400は、準備ステップ410を含む。準備ステップ410によれば、ヤオのマルチパーティ秘匿回路は、並べ替えられた入力x,x,...,xを用いて表記される。並べ替えられた入力は、一度に二つずつ、対応するブールゲートとペアになる。nが奇数である場合、補助入力として、例えば、図示される
【0125】
【数3-4】
【0126】
によって与えられる一つの付加的な(例えば、ランダム、バイナリなど)値が追加されることになり、ここで、aおよびaは、基礎となるランダムなバイナリ値である。トラストセットアップでは、補助入力は、使用された後に、「toxic waste」として破棄されることが求められることがある。toxic wasteには、初期化を支援し、使用後に(例えば、セキュアに)削除されるパラメータが含まれる。新しい回路C’は、準備ステップ410の出力として、以下に従って定義される。すなわち、
【0127】
【数3-5】
【0128】
である。
【0129】
第一の秘匿回路構成ステップ420によれば、各入力ペア(x,x)に対して、xは、プローバからの入力を表記し、xは、ベリファイアからの入力を表記し、回路のワイヤおよび内部ワイヤwに対して、鍵のペア
【0130】
【数3-6】
【0131】
が割り当てられる。
【0132】
第二の秘匿回路構築ステップ430によれば、回路の各ゲートについて、テーブルTの真理値表に従って、出力ワイヤに関連付けられた対応する鍵を暗号化する四つの暗号文が生成される。図5は、ワイヤの割当および出力を例証している。
【0133】
第三の秘匿回路構築ステップ440によれば、回路の出力ワイヤに接続された各ゲートについて、ヤオの秘匿回路スキームに使用されたのと同じ真理値表に従って、0または1が暗号化される。(ヤオの秘匿回路における暗号化は、先進的暗号化標準(AES)アルゴリズムのような暗号化アルゴリズムを適用することによって、出力結果を難読化することであり得る)。
【0134】
第一の秘匿回路分割ステップ450によれば、真理値表Tに基づいて、回路行列Mが、最後尾のゲート(すなわち、最後の集約ゲート(または回路)の前のm-1番目のゲート(または回路))に対して水平方向にスライス(分割)される。秘匿回路の分割は、入力/出力の完全性を維持するように実行される。種々の実施形態では、分割は、n対1のファン・イン対ファン・アウト比を用いて実装され得る。具体的には、このようなスキームでは、左端の入力ゲートが、秘匿化された論理ゲート毎にスライスされ、入力の第1層の後、中間層および最終層のゲートが、一つの秘匿回路に集約されることが要求され得る。
【0135】
ゲート分割の例を、図5に例証する。i番目の秘匿回路Ciにおける秘匿化は、ブールゲートの真理値表を難読化する手段である。プローバは、0または1のランダム入力に対応する
【0136】
【数3-7】
【0137】
または
【0138】
【数3-8】
【0139】
の入力を選択する。次いで、プローバは、ワイヤ入力に対応する入力(00,01,10,11)の全てのペアを使用して、出力を暗号化し、真理値表を作成する。ヤオの秘匿回路のプロセスは、ヤオ、アンドリュー・チー・チー(1986年)に見出すことができる。すなわち、「秘密生成および秘密交換」、第27回コンピュータサイエンスの基礎に関する年次シンポジウム(SFCS 1986)、コンピュータサイエンスの基礎、1986年、第27回年次シンポジウム、頁162-167、doi:10.1109/SFCS.1986.25、ISBN 978-0-8186- 0740-0である。
【0140】
図5によれば、
【0141】
【数3-9】
【0142】
は、0を有するi番目の秘匿回路の入力を表記し、
【0143】
【数3-10】
【0144】
は、1を有するi番目の秘匿回路の入力を表記し、
【0145】
【数3-11】
【0146】
は、i番目の秘匿回路の出力真理値表を表記する。初期回路C510、分割回路520、および検証回路540は図示されている。
【0147】
第二の秘匿回路分割ステップ460によれば、分割された(スライスされた)秘匿回路(C,C,...,C)が追加される。その後、回路毎に、秘匿回路プロトコルの反復が実行される。分割ステップ460の一部として、さらにサブステップが反復的に実行され得る。アリス(プローバ)は、複数のベリファイアを用いて、分割された各回路について、非対話型マルチパーティOTスキームを実行する。このOTスキームは、オフラインで実行されてもよい。OTスキームは、最後の回路Cを除いて、分割された秘匿回路検証Y=C(x,x)を取得するために実行され得る。
【0148】
最後の回路Cmについては、マルチパーティ非対話型紛失転送モジュール130が使用されてもよい。このような使用は、以下の式で表現される複合紛失転送(OT)検証を取得するために使用され得る。すなわち、
【0149】
【数3-12】
【0150】
である。
【0151】
幾つかの実施形態では、オフラインで実行される上述した非対話型マルチパーティOT転送スキームは、図6に関して、以下のように説明することができる。第一のステップ650では、アリス605は、関数
【0152】
【数3-13】
【0153】
を回路として表し、回路Cを秘匿化する。
【0154】
【数3-14】
【0155】
は、(x,x)に対応する合計2個の入力ワイヤを有する。次のステップ654では、アリス605は、秘匿回路Cに対して生成される全ての暗号文を、ブロックチェーンにおけるDLT、または公的にアクセス可能なウェブポータルなどの、公的リポジトリ610に送信する。次のステップ658では、検証割当システムを介して、ベリファイア{ボブ615、チャーリー620,...}は、OT確約メッセージOTにおいてランダム生成された数
【0156】
【数3-15】
【0157】
をアリスと交換することによって、秘匿回路検証の各々に取り組む。次のステップでは、アリスは、自身の入力ワイヤ
【0158】
【数3-16】
【0159】
に対応する鍵を送信する。次のステップでは、アリス605およびベリファイア{ボブ615,チャーリー620,...}は、紛失転送プロトコルに従事させられる。続いて、ベリファイア{ボブ615,チャーリー620,...}は、分割された各ゲートについて、鍵
【0160】
【数3-17】
【0161】
を学習する。ベリファイアは、個々に、以前に取得された鍵を使用して、回路の評価を開始する。続いて、ベリファイア{ボブ615,チャーリー620,...}は、C(x,x)の出力も学習する。アリス605は、ベリファイアがY,Y,...の出力を用いて結果を評価していることも学習する。Y≠yiである場合、アリスは、証明の中止を選択し得る。そうでない場合、アリスは、OT集約のために、マルチパーティ非対話型紛失転送モジュール130の呼び出しに進み得る。
【0162】
[マルチパーティ非対話型紛失転送]
構文分解および秘匿回路生成に続いて、例えば、図1におけるOT集約のためのマルチパーティ非対話型紛失転送モジュール130を使用して、OT集約OTプロトコルが実装される。このプロトコルは、証明の検証を完了するために、(以前に実行された)分割された全ての秘匿回路検証を全体的な検証結論に結合させる。種々の実施形態では、これは、計算コストを軽減するために、XORゲートを用いて構築される秘匿回路Cを必要とする。回路Cの式は、
【0163】
【数4-1】
【0164】
として与えられ得る。計算されたY=yに対して、プローバ(アリス)およびアグリゲータ(デビッド)の両方が合意することが望まれ、ここで、y=f(x)である。OT集約は、セキュリティの完全性を促進する。図7は、本開示の一実施形態による、OTアグリゲータOTプロトコルの動作を例証している。紛失転送は、パーティの匿名性を実質的に保持し得る。アグリゲータ(デビッド)は、他のベリファイアの検証を集約し、証明が検証されたか否かを示す合否結果を提供するベリファイアと見做し得る。
【0165】
図7によれば、最初のステップ750では、秘匿回路生成モジュール120を使用して、ベリファイアは、アリス705およびデビッド715がポータルから取り出すことができる、公的リポジトリ710を使用して、計算結果Yを投稿する。次のステップ754では、アリスは、ランダムビット
【0166】
【数4-2】
【0167】
を作成し、例えば、
【0168】
【数4-3】
【0169】
とする。次のステップ758では、アリスは、本明細書における他の箇所に記載されているような秘匿化演算を使用して、回路を秘匿化する。秘匿化演算は、
【0170】
【数4-4】
【0171】
を出力する。ここで、gc(・)は、ヤオの秘匿回路生成アルゴリズムを表記し、
【0172】
【数4-5】
【0173】
である。出力には、秘匿回路
【0174】
【数4-6】
【0175】
、符号化関数e、および復号化関数dが含まれる。次のステップ762では、アリスは、決定論的符号化演算Enc()を実行し、これは、eおよび
【0176】
【数4-7】
【0177】
を秘匿入力
【0178】
【数4-8】
【0179】
に変換する。
【0180】
次のステップ766では、アリス705は、タプル
【0181】
【数4-9】
【0182】
を公的リポジトリ710、例えば、ブロックチェーンにおけるDLT、またはウェブポータルに送信する。デビッド715は、公的リポジトリ710から非対話的に情報770を取得する。次いで、デビッドは、ランダムビット
【0183】
【数4-10】
【0184】
を作成する。別の演算774では、デビッドは、決定論的評価演算Ev(・)を実行し、
これは、
【0185】
【数4-11】
【0186】
を出力する。次のステップ778では、デビッドは、公的リポジトリ710を介して、出力Yをアリスに送り返す。次のステップ782では、アリスは、決定論的復号化演算De(・)を実行して、出力
【0187】
【数4-12】
【0188】
を計算し、ここで、dは、復号化鍵を表記する。同時にステップ786では、デビッドも、決定論的復号化演算De(・)を実行して、出力
【0189】
【数4-13】
【0190】
を計算する。次にステップ790では、アリスおよびデビッドは、
【0191】
【数4-14】
【0192】
であるか否かを確認し、ここで、f(・)は、秘匿回路関数C(・)になる前の論理ブール関数である。
【0193】
【数4-15】
【0194】
である場合、OT集約プロトコルは、検証結果を受け入れることになる。そうでない場合、検証結果は受け入れられず、アリスは、検証を中止し得る。
【0195】
秘匿回路を含む本開示の実施形態による全体的な方法、装置、およびシステムは、ヤオの秘匿回路アルゴリズムの適応を伴う複数の機能を必要とする。図8は、一実施形態による暗号機能の相互作用を例証している。このような実施形態内のコンポーネントは、以下のように形式化することができる。秘匿化演算gc(・)810は、図9aに一連の演算として例証されるように、関数
【0196】
【数4-16】
【0197】
をタプル
【0198】
【数4-17】
【0199】
に変換するランダム的演算である。図9bに例証されるように、符号化演算Enc(・)820は、共通参照文字列入力
【0200】
【数4-18】
【0201】
を秘匿回路入力X=enc(x)に変える。符号化演算は、
【0202】
【数4-19】
【0203】
上で動作する関数Hを使用して、出力Xを生成する。図9cに例証されるように、評価演算Eval(・)830は、秘匿出力Y=C(X)を与える、秘匿入力xに対する特定の秘匿関数Cの評価関数を表記する。評価演算では、入力CおよびXに対して動作する関数Decryptionを使用して、出力Yを生成する。図9dに例証されるように、復号化関数de(・)840は、秘匿出力Yを、元の(秘匿化される前の)関数f(m)に従うように行われる、最終出力y=de(Y)に変える。復号化関数は、入力dおよびYに対してXOR演算を実行して、出力yを生成する。決定論的評価演算Ev(・)850も、例えば、上述されるようにアグリゲータ(デビッド)によって実行されるように示されている。
【0204】
様々な実施形態によれば、OTスキームは、ベラーレ・ミカリ(Bellare-Micali)スキーム(M.ベラーレおよびS.ミカリ、非対話型紛失転送およびアプリケーション、会報、暗号学の進歩-CRYPTO’89、シュプリンガー・フェアラーク LNCS、435(1990年)、547-557)の適応に基づいて実行することができる。分割された秘匿回路およびOTアグリゲータは、紛失転送スキームに基づき得る。
【0205】
より詳細には、一実施形態において例証するために、Gを、生成器gを有する素数次数pの群とし、Hを、ランダムオラクルとしてモデル化され得るハッシュ関数
【0206】
【数4-20】
【0207】
とする。mおよびmを送信装置のメッセージとし、
【0208】
【数4-21】
【0209】
を受信装置の入力とする。OTプロトコルは、以下のようにし得る。まず、送信装置Sは、
【0210】
【数4-22】
【0211】
を選択し、cを受信装置Rに送信する。次に、受信装置Rは、ランダムな鍵
【0212】
【数4-23】
【0213】
を選択し、二つの公開鍵
【0214】
【数4-24】
【0215】
および
【0216】
【数4-25】
【0217】
を計算し、yおよびyを送信装置に送信する。
【0218】
次に、
【0219】
【数4-26】
【0220】
である場合、送信装置Sは、(例えば、直ちに)中断する。そうでない場合、Sは、
【0221】
【数4-27】
【0222】
を選択し、暗号文
【0223】
【数4-28】
【0224】
および
【0225】
【数4-29】
【0226】
を計算する。送信装置は、cおよびcを受信装置Rに送信する。次に、受信装置Rは、暗号文
【0227】
【数4-30】
【0228】
を解析し、次いで、kの知識、すなわち
【0229】
【数4-31】
【0230】
を復号化し、mを出力する。
【0231】
上述されるように、本開示の実施形態は、複数の文における複雑な意味論を扱うことができる、ゼロ知識証明方法、装置、およびシステムを提供する。このような実施形態は、例えば、ブロックチェーン環境のような分散コンピューティング環境において適用することができる。本開示の実施形態は、ブロックチェーン上でプライバシーを保持するオンライン検証方法、装置、およびシステムを提供する。実施形態は、通信オーバーヘッドおよび計算オーバーヘッドの両方の観点から、幾つかの従来実装よりもオーバーヘッドが少なく、実装が実用的であることが期待される。
【0232】
本開示の実施形態は、ポリリシック検証を可能にする実質的に完全な構文検証を提供する。実施形態は、改善された秘匿回路を提示し得る。実施形態は、事前のトラストセットアップをほとんど必要とすることなく実装され得る。実施形態は、潜在的に、入力サイズO(n)に対して線形である、証明生成時間およびサイズを提示し得る。実施形態は、より包括的なタスクを達成するために、完全な構文検証を提供し得る。実施形態は、証明可能なセキュリティを備えるセキュリティの健全性を提供し得る。実施形態は、本質的に非対話的とし得る。実施形態は、完全準同型暗号化(FHE)機能を用いて、実質的にプライバシーの全体保護を促進し得る。
【0233】
本開示の実施形態は、異なるエンティティによって制御される機器間で情報を伝達するためのセキュアで信頼可能な方法を提供することによって、ネットワーク化されたコンピューティング環境の運用を潜在的に改善することができる。さらに、実施形態における上述した潜在的な特徴は、ネットワーク運用も改善し得る。そのような実施形態は、全体的なネットワーキング運用およびコンピューティング運用を改善する、ネットワーキングおよび通信の完全性を促進する。本開示の実施形態は、セキュアで信頼可能なネットワーク通信のような目標を達成する、ネットワーク化されたコンピューティング環境においてパーティによって実行される、特定の一連のステップを必要とする。複数の異なるコンピューティング機器が、データを受信し、そのデータを処理し、そのような目標を推進するために、データを出力として(例えば、コンピューティング機器の別の一つに)提供する。
【0234】
図10は、本開示の異なる実施形態に従って、本明細書に明示的または暗黙的に説明される方法および特徴の操作の何れか、または全てを実行し得るコンピューティング機器1100を示す模式図である。例えば、ネットワーク機能を装備するコンピュータが、コンピューティング機器1100として構成され得る。そのような複数のコンピューティング機器を共にネットワーク接続して、異なるコンピューティング機器が異なるパーティによって潜在的に操作される、本明細書に記載されるようなシステムを提供することができる。
【0235】
図示されるように、機器1100は、中央処理ユニット(CPU)、またはグラフィック処理ユニット(GPU)もしくは他のそのような処理ユニットなどの特殊プロセッサなどの、プロセッサ1110と、メモリ1120と、非一時的大容量記憶装置1130と、入出力インターフェース1140と、ネットワーク・インターフェース1150と、送受信機1160とを含み得て、これら全ては、双方向バス1170を介して通信可能に結合される。特定の実施形態によれば、描写される要素の何れか、または全てを利用してもよいし、または要素のサブセットのみを利用してもよい。さらに、機器1100は、複数のプロセッサ、メモリ、または送受信機などの、特定要素における複数のインスタンスを含んでもよい。また、ハードウェア機器の要素は、双方向バスを介さずに、他の要素に直接結合されてもよい。プロセッサおよびメモリに加えて、またはその代わりに、集積回路のような他の電子機器は、必要とされる論理演算を実行するために使用されてもよい。
【0236】
メモリ1120、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、読出し専用メモリ(ROM)、またはそれらの任意の組み合わせなどの、任意種類の非一時的メモリを含み得る。大容量記憶素子1130は、ソリッドステートドライブ、ハードディスクドライブ、磁気ディスクドライブ、光ディスクドライブ、USBドライブ、またはデータおよびマシン実行可能プログラムコードを格納するように構成される、任意のコンピュータプログラム製品などの、任意種類の非一時的記憶機器を含み得る。特定の実施形態によれば、メモリ1120または大容量記憶装置1130は、上述される方法操作の何れかを実行するために、プロセッサ1110によって実行可能なステートメントおよび命令をそこに格納していることがある。
【0237】
本開示の実施形態は、電子機器のハードウェア、ソフトウェア、またはそれらの組合せを使用して実装することができる。幾つかの実施形態では、本開示は、メモリに格納されたプログラム命令を実行する、一つまたは複数のコンピュータプロセッサによって実装される。幾つかの実施形態では、本開示は、例えば、一つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)を使用して、処理動作を迅速に実行するように、部分的または完全にハードウェアに実装される。
【0238】
本開示の特定の実施形態は、例示の目的で本明細書に記載されているが、本開示の範囲から逸脱することなく、種々の変更が行われ得ることは、理解されることになる。それに応じて、本明細書および図面は、添付の請求項によって定義される、本開示の単なる例示と見做されるべきであり、本開示の範囲内に入るあらゆる変更、変形、組み合わせ、または均等物を網羅することが企図される。特に、本開示の方法に従ってコンピュータの動作を制御するため、および/または本開示のシステムに従ってその構成要素の一部もしくは全部を構成するために、マシンによって読み取り可能な信号を格納するための、コンピュータプログラム製品もしくはプログラム要素、または磁気ワイヤもしくは光ワイヤ、テープもしくはディスクなどの、プログラム記憶装置もしくはメモリ機器を提供することは、本開示の範囲内である。
【0239】
本明細書に記載される方法に関連付けられる行為は、コンピュータプログラム製品におけるコード化された命令として実装することができる。換言すると、コンピュータプログラム製品は、コンピュータプログラム製品がメモリにロードされ、無線通信機器のマイクロプロセッサ上で実行されると、本方法を実行するためのソフトウェアコードが記録されるコンピュータ可読可能媒体である。
【0240】
さらに、本方法の各操作は、パーソナルコンピュータ、サーバ、またはPDAなどの任意のコンピューティング機器上で、C++、またはJava(登録商標)などの任意のプログラミング言語から生成される一つもしくは複数のプログラム要素、モジュールもしくはオブジェクトのうちの一つもしくは複数、または一部に従って実行し得る。加えて、各操作、または前述の各操作を実装するファイルもしくはオブジェクトなどは、特別な目的のハードウェア、またはその目的のために設計された回路モジュールによって実行され得る。
【0241】
前述する実施形態の説明を通じて、本開示は、ハードウェアのみを使用することによって、またはソフトウェアおよび必要なユニバーサルハードウェアプラットフォームを使用することによって実施され得る。このような理解に基づいて、本開示の技術的解決策は、ソフトウェア製品の形態で具現化されてもよい。ソフトウェア製品は、不揮発性または非一時的記憶媒体に格納され得て、これらは、コンパクトディスク読出し専用メモリ(CD-ROM)、USBフラッシュディスク、または取外し可能ハードディスクとすることができる。ソフトウェア製品は、コンピュータ機器(パーソナルコンピュータ、サーバ、またはネットワーク機器)が本開示の実施形態にて提供される方法を実行することを可能にする多数の命令を含む。例えば、そのような実行は、本明細書に記載されるような論理動作のシミュレーションに対応し得る。ソフトウェア製品は、追加的または代替的に、コンピュータ機器が本開示の実施形態に従って、デジタル論理装置を構成またはプログラミングするための動作を実行することを可能にする多数の命令を含み得る。
【0242】
本開示およびそれに関連付けられる発明は、特定の特徴および実施形態を参照して説明されてきたが、そのような発明から逸脱することなく、種々の変更および組み合わせをそこに行うことができることは明らかである。したがって、本明細書および図面は、例えば、添付の請求項によって定義されるような、本開示の実施形態の単なる例示と見做されるべきであり、本開示およびその発明の範囲内に入るあらゆる変更、変形、組み合わせ、または均等物を網羅することが企図される。
図1
図2
図3
図4
図5
図6
図7
図8
図9a
図9b
図9c
図9d
図10