From 848c56ff84a090c09c9b15a4a61fc0c5f630e39c Mon Sep 17 00:00:00 2001 From: jude Date: Sun, 9 Apr 2023 18:36:58 +0100 Subject: [PATCH] Ensure ciphertexts are cloned to avoid mutating actual object. --- static/js/modules/crypto/paillier.js | 29 +++--- static/js/modules/interface/main.js | 2 +- static/js/modules/interface/map.js | 88 ++++++++--------- static/js/modules/interface/player.js | 5 +- whitepaper/Dissertation.pdf | Bin 380227 -> 380264 bytes whitepaper/Dissertation.tex | 135 +++++++++++++------------- 6 files changed, 133 insertions(+), 126 deletions(-) diff --git a/static/js/modules/crypto/paillier.js b/static/js/modules/crypto/paillier.js index 6b63763..52aafc4 100644 --- a/static/js/modules/crypto/paillier.js +++ b/static/js/modules/crypto/paillier.js @@ -23,7 +23,6 @@ class Cyphertext { this.cyphertext += key.n2; } - console.log(performance.now()); this.r = r; this.pubKey = key; this.plainText = plainText; @@ -32,16 +31,13 @@ class Cyphertext { } update(c) { - this.cyphertext = (this.cyphertext * c.cyphertext) % this.pubKey.n ** 2n; - this.r = (this.r * c.r) % this.pubKey.n ** 2n; + this.cyphertext = (this.cyphertext * c.cyphertext) % this.pubKey.n2; + this.r = (this.r * c.r) % this.pubKey.n2; this.plainText += c.plainText; // Force into range while (this.cyphertext < 0n) { - this.cyphertext += this.pubKey.n ** 2n; - } - while (this.r < 0n) { - this.r += this.pubKey.n ** 2n; + this.cyphertext += this.pubKey.n2; } } @@ -69,11 +65,11 @@ class ProofSessionProver { } get a() { - return mod_exp(this.rp, this.cipherText.pubKey.n, this.cipherText.pubKey.n ** 2n); + return mod_exp(this.rp, this.cipherText.pubKey.n, this.cipherText.pubKey.n2); } noise() { - return mod_exp(this.rp, this.cipherText.pubKey.n, this.cipherText.pubKey.n ** 2n); + return mod_exp(this.rp, this.cipherText.pubKey.n, this.cipherText.pubKey.n2); } prove(challenge) { @@ -102,26 +98,33 @@ export class ReadOnlyCyphertext { } update(c) { - this.cyphertext = (this.cyphertext * c.cyphertext) % this.pubKey.n ** 2n; + this.cyphertext = (this.cyphertext * c.cyphertext) % this.pubKey.n2; // Force into range while (this.cyphertext < 0n) { - this.cyphertext += this.pubKey.n ** 2n; + this.cyphertext += this.pubKey.n2; } } prove(plainText, a) { return new ProofSessionVerifier(this, plainText, a); } + + clone() { + return new ReadOnlyCyphertext(this.pubKey, this.cyphertext); + } } class ProofSessionVerifier { constructor(cipherText, plainText, a) { - this.cipherText = cipherText; + // Clone, otherwise the update below will mutate the original value + this.cipherText = cipherText.clone(); this.cipherText.update(this.cipherText.pubKey.encrypt(-1n * plainText, 1n)); // Shift the challenge down by 1 to ensure it is smaller than either prime factor. this.challenge = cryptoRandom(2048) << 1n; this.a = a; + + this.plainText = plainText; } verify(proof) { @@ -204,3 +207,5 @@ export function generate_keypair() { return { pubKey, privKey }; } + +// p = a.prove(); v = p.asVerifier(); v.verify(p.prove(v.challenge)); diff --git a/static/js/modules/interface/main.js b/static/js/modules/interface/main.js index 1c83032..96aa15c 100644 --- a/static/js/modules/interface/main.js +++ b/static/js/modules/interface/main.js @@ -34,7 +34,7 @@ document.addEventListener("DOMContentLoaded", () => { }); socket.on("message", async (packet) => { - window.console.log(`Received size: ${JSON.stringify(packet).length}`); + // window.console.log(`Received size: ${JSON.stringify(packet).length}`); let data = packet.payload; if (data.type !== "KEEPALIVE") window.console.log(data); diff --git a/static/js/modules/interface/map.js b/static/js/modules/interface/map.js index 66895cb..a94a2cf 100644 --- a/static/js/modules/interface/map.js +++ b/static/js/modules/interface/map.js @@ -11,9 +11,46 @@ class Continent { } class Strength { - constructor(cipherText) { + constructor(cipherText, regionName) { this.cipherText = cipherText; this.assumedStrength = null; + + this.prover = null; + document.addEventListener("PROOF", (ev) => { + const data = ev.detail; + + if ( + data.region === regionName && + data.stage === "CHALLENGE" && + this.prover !== null + ) { + let z = this.prover.prove(BigInt(data.challenge)); + + socket.emit( + "message", + Packet.createProof(regionName, "0x" + z.toString(16)) + ); + } + }); + + this.verifier = null; + document.addEventListener("PROOF", (ev) => { + const data = ev.detail; + + if ( + data.region === regionName && + data.stage === "PROOF" && + this.verifier !== null + ) { + let result = this.verifier.verify(BigInt(data.z)); + if (result > 0) { + this.assumedStrength = this.verifier.plainText; + document.dispatchEvent(new CustomEvent("updateStrengths")); + } else { + console.warn(`Failed to verify ciphertext! ${result}`); + } + } + }); } update(cipherText) { @@ -31,33 +68,14 @@ class Strength { return; } - const controller = new AbortController(); - let proofSessionProver = this.cipherText.prove(); - - document.addEventListener( - "PROOF", - (ev) => { - const data = ev.detail; - - if (data.region === region && data.stage === "CHALLENGE") { - let z = proofSessionProver.prove(BigInt(data.challenge)); - - socket.emit( - "message", - Packet.createProof(region, "0x" + z.toString(16)) - ); - controller.abort(); - } - }, - { signal: controller.signal } - ); + this.prover = this.cipherText.prove(); socket.emit( "message", Packet.createProofConjecture( region, "0x" + this.cipherText.plainText.toString(), - "0x" + proofSessionProver.a.toString(16) + "0x" + this.prover.a.toString(16) ) ); } @@ -67,33 +85,13 @@ class Strength { return; } - const controller = new AbortController(); - let proofSessionVerifier = this.cipherText.prove(plainText, a); - - document.addEventListener( - "PROOF", - (ev) => { - const data = ev.detail; - - if (data.region === region && data.stage === "PROOF") { - let result = proofSessionVerifier.verify(BigInt(data.z)); - if (result > 0) { - this.assumedStrength = plainText; - document.dispatchEvent(new CustomEvent("updateStrengths")); - controller.abort(); - } else { - console.warn(`Failed to verify ciphertext! ${result}`); - } - } - }, - { signal: controller.signal } - ); + this.verifier = this.cipherText.prove(plainText, a); socket.emit( "message", Packet.createProofChallenge( region, - "0x" + proofSessionVerifier.challenge.toString(16) + "0x" + this.verifier.challenge.toString(16) ) ); } @@ -103,7 +101,7 @@ export class Region { constructor(name, continent) { this.name = name; this.owner = null; - this.strength = new Strength(null); + this.strength = new Strength(null, name); this.neighbours = new Set(); this.continent = continent; diff --git a/static/js/modules/interface/player.js b/static/js/modules/interface/player.js index 623adfa..e86ed22 100644 --- a/static/js/modules/interface/player.js +++ b/static/js/modules/interface/player.js @@ -156,7 +156,10 @@ export class Player { // send proofs for (let region of this.getRegions()) { - region.prove(); + // eh + if ([...region.neighbours.values()].find((r) => r.owner !== this)) { + region.prove(); + } } this.endTurn(); diff --git a/whitepaper/Dissertation.pdf b/whitepaper/Dissertation.pdf index b6c97a8c72b776b17b5424315d6972ed1a8cb074..4b70538c6ea5b5de367ab6691407e8f73daf934c 100644 GIT binary patch delta 45208 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%0D|YL0Q>@rLgc><9O`B%e01y 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
K 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 JNo6Ud{{m+1L1h2{ diff --git a/whitepaper/Dissertation.tex b/whitepaper/Dissertation.tex index e4958d7..f1e0a64 100644 --- a/whitepaper/Dissertation.tex +++ b/whitepaper/Dissertation.tex @@ -307,9 +307,74 @@ Let $c$ be the ciphertext. The corresponding plaintext is computed as $m = L(c^\ Paillier is implemented by four classes: \texttt{PubKey}, \texttt{PrivKey}, \texttt{Ciphertext}, and \texttt{ReadOnlyCiphertext}. \texttt{PubKey.encrypt} converts a \texttt{BigInt} into either a \texttt{Ciphertext} or a \texttt{ReadOnlyCiphertext} by the encryption function above. The distinction between these is that a \texttt{ReadOnlyCiphertext} does not know the random $r$ that was used to form it, and so is created by decrypting a ciphertext that originated with another peer. A regular \texttt{Ciphertext} maintains knowledge of $r$ and the plaintext it enciphers. This makes it capable of proving by the scheme presented below. +\subsection{Shared random values} + +A large part of Risk involves random behaviour dictated by rolling some number of dice. To achieve this, some fair protocol must be used to generate random values consistently across each peer without any peer being able to manipulate the outcomes. + +This is achieved through bit-commitment and properties of $\mathbb{Z}_n$. The protocol for two peers is as follows, and generalises to $n$ peers trivially. + +\begin{center} + \begin{tikzpicture}[ + every node/.append style={very thick,rounded corners=0.1mm} + ] + + \node[draw,rectangle] (A) at (0,0) {Peer A}; + + \node[draw,rectangle] (B) at (6,0) {Peer B}; + + \node[draw=blue!50,rectangle,thick,text width=4cm] (NoiseA) at (0,-1.5) {Generate random noise $N_A$, random key $k_A$}; + \node[draw=blue!50,rectangle,thick,text width=4cm] (NoiseB) at (6,-1.5) {Generate random noise $N_B$, random key $k_B$}; + + \draw [->,very thick] (0,-3)--node [auto] {$E_{k_A}(N_A)$}++(6,0); + \draw [<-,very thick] (0,-4)--node [auto] {$E_{k_B}(N_B)$}++(6,0); + + \draw [->,very thick] (0,-5)--node [auto] {$k_A$}++(6,0); + \draw [<-,very thick] (0,-6)--node [auto] {$k_B$}++(6,0); + + \node[draw=blue!50,rectangle,thick] (CA) at (0,-7) {Compute $N_A + N_B$}; + \node[draw=blue!50,rectangle,thick] (CB) at (6,-7) {Compute $N_A + N_B$}; + + \draw [very thick] (A)-- (NoiseA)-- (CA)-- (0,-7); + \draw [very thick] (B)-- (NoiseB)-- (CB)-- (6,-7); + \end{tikzpicture} +\end{center} + +Depending on how $N_A + N_B$ is then turned into a random value within a range, this system may be manipulated by an attacker who has some knowledge of how participants are generating their noise. As a basic example, suppose a random value within range is generated by taking $N_A + N_B \mod 3$, and participants are producing 2-bit noises. An attacker could submit a 3-bit noise with the most-significant bit set, in which case the probability of the final result being a 1 are significantly higher than the probability of a 0 or a 2. This is a typical example of modular bias. To avoid this problem, peers should agree beforehand on the number of bits to transmit. Addition of noise will then operate modulo $2^\ell$, where $\ell$ is the agreed-upon number of bits. + +The encryption function used must also guarantee the integrity of decrypted ciphertexts to prevent a malicious party creating a ciphertext which decrypts to multiple valid values through using different keys. + +\begin{proposition} + With the above considerations, the scheme shown is not manipulable by a single cheater. +\end{proposition} + +\begin{proof} + Suppose $P_1, \dots, P_{n-1}$ are honest participants, and $P_n$ is a cheater with a desired outcome. + + In step 1, each participant $P_i$ commits $E_{k_i}(N_i)$. The cheater $P_n$ commits a constructed noise $E_{k_n}(N_n)$. + + The encryption function $E_k$ holds the confidentiality property: that is, without $k$, $P_i$ cannot retrieve $m$ given $E_k(m)$. So $P_n$'s choice of $N_n$ cannot be directed by other commitments. + + The final value is dictated by the sum of all decrypted values. $P_n$ is therefore left in a position of choosing $N_n$ to control the outcome of $a + N_n$, where $a$ is selected uniformly at random from the abelian group $\mathbb{Z}_{2^\ell}$ for $\ell$ the agreed upon bit length. + + As every element of this group is of order $2^\ell$, the distribution of $a + N_n$ is identical no matter the choice of $N_n$. So $P_n$ maintains no control over the outcome of $a + N_n$. +\end{proof} + +This extends inductively to support $n-1$ cheating participants, even if colluding. Finally, we must consider how to reduce random noise to useful values. + +\subsection{Avoiding modular bias} + +The typical way to avoid modular bias is by resampling. To avoid excessive communication, resampling can be performed within the bit sequence by partitioning into blocks of $n$ bits and taking blocks until one falls within range. This is appropriate in the presented use case as random values need only be up to 6, so the probability of consuming over 63 bits of noise when resampling for a value in the range 0 to 5 is $\left(\frac{1}{4}\right)^{21} \approx 2.3 \times 10^{-13}$. + +\subsection{Application to domain} + +Random values are used in two places. \begin{itemize} + \item Selecting the first player. + \item Rolling dice. +\end{itemize} + \subsection{Proof system} -The proof system is that of \cite{damgard2003}. The authors give a method to prove knowledge of an encrypted value. The importance of using a zero-knowledge method for this is that it verifies knowledge to a single party. This party should be an honest verifier: this is an assumption we have made of the context, but in general this is not true, and so this provides an attack surface for colluding parties. +The first proof to discuss is that of \cite{damgard2003}. The authors give a method to prove knowledge of an encrypted value. The importance of using a zero-knowledge method for this is that it verifies knowledge to a single party. This party should be an honest verifier: this is an assumption we have made of the context, but in general this is not true, and so this provides an attack surface for colluding parties. The proof system presented is an interactive proof for a given ciphertext $c$ being an encryption of zero. @@ -376,9 +441,6 @@ Players should prove a number of properties of their game state to each other to \cite{Boudot2000EfficientPT}'s proof is a multi-round proof more similar in structure to the graph isomorphism proof presented in \cite{10.1145/116825.116852}. We select public parameter $\ell$ to be some sufficiently high value that a player's unit count should not exceed during play: an appropriate choice may be 1000. Select $n$ as the number of units that the player is defending with, or in the case of attacking, let $n$ be the number of units that the player is attacking with plus 1 (as is required by the rules of Risk). -To reduce the number of times the proof must be conducted, we use the Fiat-Shamir heuristic, with the shared random values scheme %todo move this -acting as the random oracle. - \subsection{Cheating with negative values} By using negative values, a player can cheat stage (1) of the above. This is a severe issue, as potentially the cheat could be completely unnoticed even in the conclusion of the game. To overcome this, we apply proofs on each committed value that are verified by all players. @@ -432,70 +494,9 @@ Additionally, we can consider this protocol perfect zero-knowledge. This gives $T^*$ such that $T^*(S) = T(P, V, S)$, and the output distributions are identical. Hence, this proof is perfect zero-knowledge under random oracle model. \end{proof} -\subsection{Shared random values} +\subsection{Optimising} -A large part of Risk involves random behaviour dictated by rolling some number of dice. To achieve this, some fair protocol must be used to generate random values consistently across each peer without any peer being able to manipulate the outcomes. - -This is achieved through bit-commitment and properties of $\mathbb{Z}_n$. The protocol for two peers is as follows, and generalises to $n$ peers trivially. - -\begin{center} - \begin{tikzpicture}[ - every node/.append style={very thick,rounded corners=0.1mm} - ] - - \node[draw,rectangle] (A) at (0,0) {Peer A}; - - \node[draw,rectangle] (B) at (6,0) {Peer B}; - - \node[draw=blue!50,rectangle,thick,text width=4cm] (NoiseA) at (0,-1.5) {Generate random noise $N_A$, random key $k_A$}; - \node[draw=blue!50,rectangle,thick,text width=4cm] (NoiseB) at (6,-1.5) {Generate random noise $N_B$, random key $k_B$}; - - \draw [->,very thick] (0,-3)--node [auto] {$E_{k_A}(N_A)$}++(6,0); - \draw [<-,very thick] (0,-4)--node [auto] {$E_{k_B}(N_B)$}++(6,0); - - \draw [->,very thick] (0,-5)--node [auto] {$k_A$}++(6,0); - \draw [<-,very thick] (0,-6)--node [auto] {$k_B$}++(6,0); - - \node[draw=blue!50,rectangle,thick] (CA) at (0,-7) {Compute $N_A + N_B$}; - \node[draw=blue!50,rectangle,thick] (CB) at (6,-7) {Compute $N_A + N_B$}; - - \draw [very thick] (A)-- (NoiseA)-- (CA)-- (0,-7); - \draw [very thick] (B)-- (NoiseB)-- (CB)-- (6,-7); - \end{tikzpicture} -\end{center} - -Depending on how $N_A + N_B$ is then turned into a random value within a range, this system may be manipulated by an attacker who has some knowledge of how participants are generating their noise. As a basic example, suppose a random value within range is generated by taking $N_A + N_B \mod 3$, and participants are producing 2-bit noises. An attacker could submit a 3-bit noise with the most-significant bit set, in which case the probability of the final result being a 1 are significantly higher than the probability of a 0 or a 2. This is a typical example of modular bias. To avoid this problem, peers should agree beforehand on the number of bits to transmit. Addition of noise will then operate modulo $2^\ell$, where $\ell$ is the agreed-upon number of bits. - -The encryption function used must also guarantee the integrity of decrypted ciphertexts to prevent a malicious party creating a ciphertext which decrypts to multiple valid values through using different keys. - -\begin{proposition} - With the above considerations, the scheme shown is not manipulable by a single cheater. -\end{proposition} - -\begin{proof} - Suppose $P_1, \dots, P_{n-1}$ are honest participants, and $P_n$ is a cheater with a desired outcome. - - In step 1, each participant $P_i$ commits $E_{k_i}(N_i)$. The cheater $P_n$ commits a constructed noise $E_{k_n}(N_n)$. - - The encryption function $E_k$ holds the confidentiality property: that is, without $k$, $P_i$ cannot retrieve $m$ given $E_k(m)$. So $P_n$'s choice of $N_n$ cannot be directed by other commitments. - - The final value is dictated by the sum of all decrypted values. $P_n$ is therefore left in a position of choosing $N_n$ to control the outcome of $a + N_n$, where $a$ is selected uniformly at random from the abelian group $\mathbb{Z}_{2^\ell}$ for $\ell$ the agreed upon bit length. - - As every element of this group is of order $2^\ell$, the distribution of $a + N_n$ is identical no matter the choice of $N_n$. So $P_n$ maintains no control over the outcome of $a + N_n$. -\end{proof} - -This extends inductively to support $n-1$ cheating participants, even if colluding. Finally, we must consider how to reduce random noise to useful values. - -\subsection{Avoiding modular bias} - -The typical way to avoid modular bias is by resampling. To avoid excessive communication, resampling can be performed within the bit sequence by partitioning into blocks of $n$ bits and taking blocks until one falls within range. This is appropriate in the presented use case as random values need only be up to 6, so the probability of consuming over 63 bits of noise when resampling for a value in the range 0 to 5 is $\left(\frac{1}{4}\right)^{21} \approx 2.3 \times 10^{-13}$. - -\subsection{Application to domain} - -Random values are used in two places. \begin{itemize} - \item Selecting the first player. - \item Rolling dice. -\end{itemize} +To reduce the number of times the proof must be conducted, we use the Fiat-Shamir heuristic. For this, we need a random oracle: in our situation, this will be substituted by using a cryptographic hash function. \section{Review}