プリンキピア

第14章サイバー資源の品質とサイバーコンピューティングのガバナンス

Zero-Knowledge Proofsゼロ知識証明
A zero-knowledge proof (ZKP) is a cryptographic system that functions as a useful tool to protect privacy. With ZKPs, users rely on cryptographic algorithms to verify information without accessing the supporting data. Digital signatures based on PKI (i.e., RSA-algorithm or ECC) are examples of ZKPs. In these cases, the person holding the private key can convince any public key holder that they know the private key without revealing it.
英語のヒント
ゼロ知識証明(ZKP)は、プライバシー保護に役立つ暗号システムである。利用者は暗号アルゴリズムによって、裏付けとなるデータにアクセスせず情報を検証する。PKIに基づくデジタル署名(RSAアルゴリズムやECCなど)は、その例である。秘密鍵の所持者は、秘密鍵を明かさずに、その鍵を知っていると任意の公開鍵所持者に納得させられる。
Properties of ZKPs include:
ZKPには、次の性質がある。
• Completeness: A statement is true if an honest prover can convince an honest verifier.
• 完全性:正直な証明者が正直な検証者を納得させられるなら、命題は真である。
• Soundness: If the prover is dishonest, he cannot fool the verifier.
• 健全性:証明者が不正をしても、検証者をだませない。
• Zero-knowledge: No private information is revealed to the verifier.
• ゼロ知識性:検証者には、私的な情報を明かさない。
To understand ZKPs, it is important to know about the PCP theorem, which states that every decision problem in the NP complexity class has probabilistically checkable proofs of constant query complexity and logarithmic randomness complexity.
英語のヒント
ZKPを理解するには、PCP定理を知ることが重要である。この定理は、計算量クラスNPのすべての決定問題には、問い合わせ計算量が定数で、乱数計算量が対数となる、確率的に検査できる証明が存在すると述べる。
For an error probability of 2-k, 3k bit positions must be verified. (For example, the Soundness error probability of 2-40 ≈ 10-12 with 120-bit verification.)
誤り確率が2-kなら、3k個のビット位置を検証しなければならない。たとえば120ビットの検証では、健全性の誤り確率は2-40 ≈ 10-12となる。
Computational integrity proofs are probabilistic proof systems based on the PCP theorem, allowing a prover to convince a verifier of the correctness of an arbitrary computation with an exponentially faster efficiency than naive checking of the computation. Computational integrity proofs exhibit the following properties:
英語のヒント
計算の完全性証明は、PCP定理に基づく確率的証明システムである。証明者は、計算を素朴に検査するよりも指数関数的に高い効率で、任意の計算の正しさを検証者に納得させられる。計算の完全性証明は、次の性質を示す。
• Completeness: A statement is true if an honest prover can convince an honest verifier.
• 完全性:正直な証明者が正直な検証者を納得させられるなら、命題は真である。
• Soundness: If the prover is dishonest, they can’t fool the verifier.
• 健全性:証明者が不正をしても、検証者をだませない。
• Succinctness: There is exponentially faster verification than naive checking of the computation.
英語のヒント
• 簡潔性:計算を素朴に検査するよりも、指数関数的に速く検証できる。
• Zero-knowledge (bonus): No information is revealed to the verifier.
• ゼロ知識性(追加の利点):検証者には情報を明かさない。
ZKPs rely on a transcript of the original computation expanded into a proof using an error-correcting code (e.g., a Reed-Solomon code, polynomial commitment), which spreads any errors within the proof. A low number of (e.g., three) of stochastic queries by the verifier is sufficient to prove the correctness of the computation with high probability (Figure 14.15).
英語のヒント
ZKPは、元の計算記録を誤り訂正符号(Reed–Solomon符号、多項式コミットメントなど)で証明へ展開したものに依存する。符号によって、誤りは証明の中に分散する。検証者が少数回、たとえば3回、確率的に問い合わせるだけで、高い確率で計算の正しさを証明できる(図14.15)。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.15 ZKPs can be used to prove the correctness of computations. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.15 ZKPは計算の正しさを証明するために使える。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
The zk-SNARK acronym stands for zero-knowledge succinct non-interactive argument of knowledge. A zk-SNARK is cryptographic proof that allows one party to prove it possesses certain information without revealing it. The proof is made possible using a secret key created before the transaction occurs. zk-SNARK is used as part of the cryptocurrency Zcash protocol. In a noninteractive proof, the interactive dialog between the prover and verified is replaced by randomness. Query locations are predefined by randomness, which the prover cannot influence.
英語のヒント
zk-SNARKは、zero-knowledge succinct non-interactive argument of knowledge(ゼロ知識・簡潔・非対話型の知識の議論)の略である。一方の当事者が、ある情報を明かさずに、その情報を持っていると証明できる暗号学的証明である。取引の前に作った秘密鍵によって証明が可能になる。zk-SNARKは、暗号通貨Zcashのプロトコルの一部として使われる。非対話型の証明では、証明者と検証者の対話をランダム性で置き換える。問い合わせる位置はランダム性によってあらかじめ定められ、証明者はそれに影響を与えられない。
zk-SNARKs cannot be applied directly to computational problems. Problems need to be first converted into the right “form.” The form is called a quadratic arithmetic program (QAP), and transforming the code of a function into a QAP is highly nontrivial. It requires turning the computation into an algebraic circuit and transforming it into a rank-1constraint system (R1CS) that can then be converted into a QAP. In addition to the process for converting the code of a function into a QAP, another process may run alongside in such a way that if you have an input to the code, you can create a corresponding solution (sometimes called “witness” to the QAP). Once this is done, another fairly intricate process must be followed to create the actual “zero-knowledge proof” for the witness and a separate process for verifying proof that someone else passes along to you. The full machinery between zk-SNARKs is illustrated in Figure 14.16.
英語のヒント
zk-SNARKは、計算問題に直接適用できない。最初に問題を適切な「形」へ変換する必要がある。その形を二次算術プログラム(QAP)という。関数のコードをQAPへ変換することは、非常に難しい。計算を代数回路にし、それをランク1制約システム(R1CS)へ変え、さらにQAPへ変換する必要がある。関数のコードをQAPへ変換する処理に加え、別の処理を並行して実行できる。コードへの入力があれば、QAPに対応する解(「証人」と呼ぶこともある)を作れるようにするためである。その後、証人の実際の「ゼロ知識証明」を作るには、さらにかなり複雑な処理を行う必要がある。また、他の人から渡された証明を検証するには、別の処理を使う。zk-SNARKを成り立たせる仕組み全体を図14.16に示す。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.16 zk-SNARK’s full machinery includes computation, algebraic circuit, R1CS, QAP, linear PCP, and linear interactive proof. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.16 zk-SNARKの仕組み全体には、計算、代数回路、R1CS、QAP、線形PCP、線形対話型証明が含まれる。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
zk-SNARKS are not transparent and require a so-called trusted setup to secure the randomness of the parameters determining the selection of queries in the verification procedure. The random parameters are, for example, generated using a hash function. However, the knowledge of the original values fed into the hash function (“toxic waste”) must be kept secret. Otherwise, retrieving the random parameters and manipulating the selection of verification queries would be possible. A trusted setup is a multi-party computation (MPC; “ceremony”), which recursively generates random parameters. If at least one party is honest and forgets its input values, the randomness of the trusted setup is safe. Universal trusted setups can be generated once and can be reused for other applications as well; nonuniversal ones are tied to the specific circuit. The difficult part is to generate a zk-SNARK with reasonable resources for real-world applications.
英語のヒント
zk-SNARKは透明ではなく、検証手続きで問い合わせを選ぶパラメーターのランダム性を保護するため、いわゆる信頼されたセットアップを必要とする。ランダムなパラメーターは、たとえばハッシュ関数で生成する。しかし、ハッシュ関数へ与えた元の値(「有害廃棄物」)の知識は、秘密にしなければならない。そうでなければ、ランダムなパラメーターを取り出し、検証の問い合わせの選択を操作できる。信頼されたセットアップは、ランダムなパラメーターを再帰的に生成するマルチパーティー計算(MPC、「セレモニー」)である。少なくとも一人が正直で、自分の入力値を忘れれば、セットアップのランダム性は安全である。汎用的なセットアップは、一度生成すれば他の用途にも再利用できる。汎用でないものは、特定の回路に結び付く。難しいのは、現実の用途に向け、妥当な資源でzk-SNARKを生成することである。
Zero-knowledge scalable transparent argument of knowledge (zk-STARKs) is a type of ZKP where one party can prove to another that a given statement is true without revealing any other information other than the fact that the statement is true. Attributes of the zk-STARK concept are as follows:
ゼロ知識・スケーラブル・透明な知識の議論(zk-STARK)は、ある命題が真だという事実以外の情報を明かさずに、一方が他方へその命題の真実性を証明できるZKPの一種である。zk-STARKの概念には、次の特徴がある。
• zero-knowledge (refers to privacy preservation)
• ゼロ知識:プライバシーの保持を意味する。
• scalability (indicates that verification time is substantially less than the time taken for naive computations)
• スケーラビリティー:検証時間が、素朴な計算にかかる時間よりも大幅に短いことを示す。
• transparency (reflects the lack of a trusted setup requirement)
• 透明性:信頼されたセットアップを必要としないことを表す。
• argument and knowledge (related to the security and robustness of the cryptographic scheme).
• 議論と知識:暗号方式の安全性と堅牢性に関係する。
Zero-knowledge STARKs work by leveraging leaner cryptography, specifically collision-resistant hash functions, to validate the truth of a statement without sharing the details behind it. Unlike zk-SNARKs (Zero-knowledge succinct non-interactive argument of knowledge), which rely on an initial trusted setup and are theoretically vulnerable to quantum computer attacks, zk-STARKs eliminate these issues. That said, it is important to note that this leaner approach results in a significant disadvantage. Specifically, zk-STARKs generate proofs that are typically 10 to 100 times larger than those created by zk-SNARKs, thus making them more expensive and potentially less practical for certain applications.
英語のヒント
ゼロ知識STARKは、より簡素な暗号技術、具体的には衝突耐性のあるハッシュ関数を使い、命題の背後にある詳細を共有せず、その真実性を検証する。初期の信頼されたセットアップに依存し、理論上は量子コンピューターの攻撃に弱いzk-SNARKとは異なり、zk-STARKはこうした問題を解消する。しかし、この簡素な方法には大きな欠点がある。zk-STARKが生成する証明は、通常、zk-SNARKのものより10~100倍大きい。そのため費用がかかり、用途によっては実用性が下がる可能性がある。
The trade-offs between different properties of different noninteractive and transparent proof systems amount to a difference in verification time (between 2 ms to 250 ms), prover time (1 s to 100 s), and proof size (between 200 B to 250 kB).
非対話型・透明な各証明システムが持つ性質のトレードオフは、検証時間(2~250 ms)、証明者の計算時間(1~100 s)、証明サイズ(200 B~250 kB)の違いとして現れる。
The cryptographic primitives used by ZKPs include the following cryptographic primitives:
ZKPでは、次の暗号プリミティブを使う。
• Collision-resistant hash function (quantum secure): STARK, Fractal, Aurora
• 衝突耐性ハッシュ関数(量子計算に対して安全):STARK、Fractal、Aurora。
• Elliptic curve cryptography: Bulletproofs, Halo
• 楕円曲線暗号:Bulletproofs、Halo。
• Knowledge of exponent/pairing groups: Groth16, Sonic, Marlin, PLONK
• 指数の知識/ペアリング群:Groth16、Sonic、Marlin、PLONK。
• Groups of unknown order: Supersonic
• 位数が不明な群:Supersonic。
• Lattice-based cryptography (quantum secure): under development
• 格子暗号(量子計算に対して安全):開発中。
There are myriads of recent applications of ZKPs to blockchain technology for privacy and scalability improvements. A related topic is verifiable delay functions (VDFs), which emerged in June 2018. A verifiable delay function (VDF) is a function f : X → Y that takes a prescribed minimum time to compute (even on a parallel computer). However, once computed, anyone can quickly verify the output. They can prevent fraud or frontrunning on exchanges, online auctions, games, or prediction markets. Another related topic is multi-party computations (MPCs), which are methods for parties to jointly compute a function over their inputs while keeping those inputs private. MPCs are different from traditional cryptographic tasks that use cryptography to ensure the security and integrity of communication or storage and assume that the adversary is outside the system of participants. In MPC, cryptography protects participants’ privacy from each other. An example of an application is that of a trusted setup ceremony, which is a secure MPC.
英語のヒント
近年、プライバシーとスケーラビリティーの改善を目指し、ZKPをブロックチェーンへ応用する例が無数にある。関連する話題に、2018年6月に登場した検証可能遅延関数(VDF)がある。VDFは、並列コンピューターであっても、計算に所定の最短時間を要する関数f : X → Yである。一度計算すれば、誰でも出力を素早く検証できる。取引所、オンラインオークション、ゲーム、予測市場における不正やフロントランニングを防げる。もう一つの関連する話題は、マルチパーティー計算(MPC)である。各当事者が入力を秘密に保ちながら、それらの入力に対する関数を共同で計算する方法である。従来の暗号の仕事は、通信や保存の安全性と完全性を守り、敵対者は参加者のシステムの外にいると仮定する。MPCはそれとは異なり、暗号によって参加者同士のプライバシーを守る。応用例の一つが、安全なMPCである、信頼されたセットアップのセレモニーである。
An important related topic is fully homomorphic encryption (FHE), the “holy grail of cryptography.” FHE allows arbitrary mathematical operations on encrypted data (i.e., for every f: y = f(x) -> Encrypted y′ = f(x′)).
英語のヒント
重要な関連事項に、「暗号技術の聖杯」とされる完全準同型暗号(FHE)がある。FHEは暗号化されたデータへの任意の数学的演算を可能にする。すなわち、すべてのfについて、y = f(x) → 暗号化されたy′ = f(x′)となる。