From 0fed48b79d4ba05fe6cd04a4cf48b6942f924c00 Mon Sep 17 00:00:00 2001 From: jude Date: Sat, 29 Apr 2023 16:35:17 +0100 Subject: [PATCH] idk --- static/js/modules/crypto/random_primes.js | 2 +- static/js/modules/interface/proofs.js | 8 +--- templates/index.html | 55 ++++++++++++++++++++++ whitepaper/Dissertation.pdf | Bin 506021 -> 506171 bytes whitepaper/Dissertation.tex | 15 +++--- 5 files changed, 65 insertions(+), 15 deletions(-) diff --git a/static/js/modules/crypto/random_primes.js b/static/js/modules/crypto/random_primes.js index 7a205b4..8180833 100644 --- a/static/js/modules/crypto/random_primes.js +++ b/static/js/modules/crypto/random_primes.js @@ -1,6 +1,6 @@ import { mod_exp } from "./math.js"; -export const KEY_SIZE = 512; +export const KEY_SIZE = 1024; export function cryptoRandom(bits) { if (bits === undefined) { diff --git a/static/js/modules/interface/proofs.js b/static/js/modules/interface/proofs.js index 8d88b0e..cbf4ace 100644 --- a/static/js/modules/interface/proofs.js +++ b/static/js/modules/interface/proofs.js @@ -1,7 +1,7 @@ import { cryptoRandom } from "../crypto/random_primes.js"; import { Region } from "./map.js"; -const ROUNDS = 12; +const ROUNDS = 24; function cryptoRange(upper) { // This is ridiculous: why implement a BigInt primitive, have it behave like a number, and then _not_ offer @@ -603,16 +603,10 @@ export function proveFortify(fortify) { } } - let rangeProofs = {}; - for (let r of regionNames) { - rangeProofs[r] = proveBitLength(Region.getRegion(r).strength.cipherText); - } - return { fortify: fortify, proofs: proofs, verifications: verifications, - rangeProofs: rangeProofs, }; } diff --git a/templates/index.html b/templates/index.html index e9067c2..c0a2719 100644 --- a/templates/index.html +++ b/templates/index.html @@ -368,6 +368,61 @@ console.log(`Bench done. Time per verification: ${performance.measure("rv-duration", "rv-start", "rv-end").duration / ROUNDS}`) } + function FortifyProofBench() { + console.log("Warming up") + + const ct = { + A: paillier.pubKey.encrypt(0n), + B: paillier.pubKey.encrypt(3n), + C: paillier.pubKey.encrypt(-3n), + D: paillier.pubKey.encrypt(0n), + E: paillier.pubKey.encrypt(0n) + } + const ROUNDS = 20; + + for (let i = 0; i < 5; i++) { + proveFortify(ct) + } + + console.log("Benching") + + performance.mark("fp-start") + for (let i = 0; i < ROUNDS; i++) { + proveFortify(ct) + } + performance.mark("fp-end") + + console.log(`Bench done. Time per proof: ${performance.measure("fp-duration", "fp-start", "fp-end").duration / ROUNDS}`) + } + + function FortifyVerifierBench() { + console.log("Warming up") + + const ROUNDS = 20; + const ct = { + A: paillier.pubKey.encrypt(0n), + B: paillier.pubKey.encrypt(3n), + C: paillier.pubKey.encrypt(-3n), + D: paillier.pubKey.encrypt(0n), + E: paillier.pubKey.encrypt(0n) + } + let proof = proveFortify(ct) + + for (let i = 0; i < 5; i++) { + verifyFortify(proof, paillier.pubKey) + } + + console.log("Benching") + + performance.mark("rv-start") + for (let i = 0; i < ROUNDS; i++) { + verifyFortify(proof, paillier.pubKey) + } + performance.mark("rv-end") + + console.log(`Bench done. Time per verification: ${performance.measure("rv-duration", "rv-start", "rv-end").duration / ROUNDS}`) + } + // https://gist.github.com/kawanet/352a2ed1d1656816b2bc function string_to_buffer(src) { return (new Uint16Array([].map.call(src, function(c) { diff --git a/whitepaper/Dissertation.pdf b/whitepaper/Dissertation.pdf index 851def75ce365f000496f38c448c390b492f6f3b..7ada8a5bb051e1249b2915a62f77013cc0646673 100644 GIT binary patch delta 15423 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 delta 15234 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 diff --git a/whitepaper/Dissertation.tex b/whitepaper/Dissertation.tex index a26a70b..1465248 100644 --- a/whitepaper/Dissertation.tex +++ b/whitepaper/Dissertation.tex @@ -1148,20 +1148,21 @@ All measurements were taken on Brave 1.50.114 (Chromium 112.0.5615.49) 64-bit, u \begin{table} \fontsize{10pt}{10pt}\selectfont \caption{Time\parnote{$|n| = 4096$ uses a less-optimised encryption method, as the browser frequently timed out attempting to pre-compute for the more-optimised version.} to process non-interactive proofs} - \begin{tabularx}{\hsize}{c *8{>{\Centering}X}} + \begin{tabularx}{\hsize}{c *8{>{\Centering}X} *2{>{\Centering}X}} \toprule \multirow{2}{*}{Modulus} & \multicolumn{2}{c}{\hyperref[protocol0]{Protocol~\ref*{protocol0}}} & \multicolumn{2}{c}{\hyperref[protocol1]{Protocol~\ref*{protocol1}} with $t = 24$} & \multicolumn{2}{c}{BCDG Range with $t = 24$} & - \multicolumn{2}{c}{\hyperref[protocol4]{Protocol~\ref*{protocol4}} with $t = 24$} + \multicolumn{2}{c}{\hyperref[protocol4]{Protocol~\ref*{protocol4}} with $t = 24$} & + \multicolumn{2}{c}{\hyperref[protocol3]{Protocol~\ref*{protocol3}} with $t = 24$} \tabularnewline - \cmidrule(l){2-3}\cmidrule(l){4-5}\cmidrule(l){6-7}\cmidrule(l){8-9} - & Prover & Verifier & Prover & Verifier & Prover & Verifier & Prover & Verifier \\ + \cmidrule(l){2-3}\cmidrule(l){4-5}\cmidrule(l){6-7}\cmidrule(l){8-9}\cmidrule(l){10-11} + & Prover & Verifier & Prover & Verifier & Prover & Verifier & Prover & Verifier & Prover & Verifier \\ \midrule - $|n| = 1024$ & 10ms & 18ms & 1,420ms & 2,140ms & 443ms & 655ms & 3,530ms & 5,310ms \\ - $|n| = 2048$ & 44ms & 68ms & 6,390ms & 8,140ms & 1,980ms & 2,400ms & 15,800ms & 19,000ms \\ - $|n| = 4096$ & 225ms & 292ms & 41,500ms & 34,400ms & 14,300ms & 11,400ms & 112,000ms & 79,300ms \\ + $|n| = 1024$ & 10ms & 18ms & 1,420ms & 2,140ms & 443ms & 655ms & 3,530ms & 5,310ms & 1,350ms & 2,070ms \\ + $|n| = 2048$ & 44ms & 68ms & 6,390ms & 8,140ms & 1,980ms & 2,400ms & 15,800ms & 19,000ms & 5,800ms & 7,790ms \\ + $|n| = 4096$ & 225ms & 292ms & 41,500ms & 34,400ms & 14,300ms & 11,400ms & 112,000ms & 79,300ms & & \\ \bottomrule \end{tabularx} \parnotes