From dee1da6fb102b0aa438740d7e091d8ca9dbfab12 Mon Sep 17 00:00:00 2001 From: jude Date: Thu, 27 Apr 2023 12:52:02 +0100 Subject: [PATCH] fortify working and verifying --- static/js/modules/interface/map.js | 2 + static/js/modules/interface/packet.js | 4 +- static/js/modules/interface/player.js | 66 ++++++++++++++++++-------- static/js/modules/interface/proofs.js | 18 +++---- whitepaper/Dissertation.pdf | Bin 497216 -> 497494 bytes whitepaper/Dissertation.tex | 2 + 6 files changed, 63 insertions(+), 29 deletions(-) diff --git a/static/js/modules/interface/map.js b/static/js/modules/interface/map.js index 72b93fa..d4e220d 100644 --- a/static/js/modules/interface/map.js +++ b/static/js/modules/interface/map.js @@ -174,6 +174,8 @@ export class Region { } } +window.Region = Region; + const EAST = new Continent("East"); const WEST = new Continent("West"); diff --git a/static/js/modules/interface/packet.js b/static/js/modules/interface/packet.js index 66a9f6a..fd61ec6 100644 --- a/static/js/modules/interface/packet.js +++ b/static/js/modules/interface/packet.js @@ -103,11 +103,11 @@ export class Packet { }); } - static createFortify(fortify, verification) { + static createFortify(fortify) { return this._sign({ ...this._createBase("ACT"), + action: "FORTIFY", fortify: fortify, - verification: verification, }); } diff --git a/static/js/modules/interface/player.js b/static/js/modules/interface/player.js index 0edb4df..46fe980 100644 --- a/static/js/modules/interface/player.js +++ b/static/js/modules/interface/player.js @@ -4,7 +4,13 @@ import { RsaPubKey } from "../crypto/rsa.js"; import { PaillierPubKey, ReadOnlyCiphertext } from "../crypto/paillier.js"; import { Region } from "./map.js"; import { showDefenseDom } from "./dom.js"; -import { proveFortify, proveRange, proveRegions, verifyRegions } from "./proofs.js"; +import { + proveFortify, + proveRange, + proveRegions, + verifyFortify, + verifyRegions, +} from "./proofs.js"; // Timeout to consider a player disconnected const TIMEOUT = 30_000; @@ -184,22 +190,40 @@ export class Player { * @param data Data received via socket */ fortify(data) { - let sender = Region.getRegion(data.startRegion); - let receiver = Region.getRegion(data.endRegion); - let strength = parseInt(data.strength); - - if ( - sender.owner === this && - receiver.owner === this && - sender.strength > strength && - strength > 0 - ) { - receiver.reinforce(strength); - sender.strength -= strength; - return true; - } else { + if (!verifyFortify(data.fortify, this.paillierPubKey)) { + console.log("Failed to verify fortify!"); return false; } + + if ( + !Object.keys(data.fortify.fortify).reduce( + (c, r) => c && Region.getRegion(r).owner === this, + true + ) + ) { + console.log("Invalid fortify"); + return false; + } + + for (let regionName of Object.keys(data.fortify.fortify)) { + let region = Region.getRegion(regionName); + + region.reinforce( + new ReadOnlyCiphertext( + this.paillierPubKey, + BigInt(data.fortify.fortify[regionName]) + ) + ); + } + + // request proofs + for (let region of this.getRegions()) { + if ([...region.neighbours.values()].find((r) => r.owner === game.us)) { + region.requestProof(); + } + } + + return true; } sendFortify(startRegion, endRegion, amount) { @@ -209,12 +233,16 @@ export class Player { }; for (let r of this.getRegions()) { - if (!fortify.hasOwnProperty(r)) { - fortify[r] = new Ciphertext(this.paillierPubKey, 0n); + if (!fortify.hasOwnProperty(r.name)) { + fortify[r.name] = new Ciphertext(this.paillierPubKey, 0n); } } - socket.emit("message", Packet.createFortify(fortify, proveFortify(fortify))); + for (let r of Object.keys(fortify)) { + Region.getRegion(r).reinforce(fortify[r]); + } + + socket.emit("message", Packet.createFortify(proveFortify(fortify))); } /** @@ -253,7 +281,7 @@ export class Player { if (data.action === "FORTIFY") { if (this === game.us) { - return; + return true; } else { return this.fortify(data); } diff --git a/static/js/modules/interface/proofs.js b/static/js/modules/interface/proofs.js index 123bc15..2e59d2a 100644 --- a/static/js/modules/interface/proofs.js +++ b/static/js/modules/interface/proofs.js @@ -549,16 +549,18 @@ export function proveFortify(fortify) { // Show pair is joined by edge let pairName = pair.sort(); - verification.pairEdgeSalt = input.edges.find( - (e) => e.edge[0] === pairName[0] && e.edge[1] === pairName[1] - ).salt; + verification.pairEdgeSalt = + "0x" + + input.edges + .find((e) => e.edge[0] === pairName[0] && e.edge[1] === pairName[1]) + .salt.toString(16); verifications.push(verification); } else { // Show isomorphism let edges = {}; for (let e of input.edges) { - edges[e.edge[0] + e.edge[1]] = e.salt; + edges[e.edge[0] + e.edge[1]] = "0x" + e.salt.toString(16); } let zeroProofs = {}; @@ -618,7 +620,7 @@ export function verifyFortify(obj, key) { // Check remaining pair sums to zero let pair = [...regions.values()].sort(); let c = new ReadOnlyCiphertext(key, BigInt(proof.regions[pair[0]])); - c.update(proof.regions[pair[1]]); + c.update(new ReadOnlyCiphertext(key, BigInt(proof.regions[pair[1]]))); let p = c.verifyNI(verification.pairCipherText); if (p !== 0n) { return false; @@ -628,7 +630,7 @@ export function verifyFortify(obj, key) { let hasher = new jsSHA("SHA3-256", "TEXT"); hasher.update(pair[0]); hasher.update(pair[1]); - hasher.update(verification.pairEdgeSalt.toString(16)); + hasher.update(BigInt(verification.pairEdgeSalt).toString(16)); let hash = hasher.getHash("HEX"); if (!proof.edges.includes(hash)) { @@ -652,7 +654,7 @@ export function verifyFortify(obj, key) { // Ciphertexts match? for (let r of regionNames) { let c = new ReadOnlyCiphertext(key, BigInt(proof.regions[r])); - c.update(fortify[psiMap[r]]); + c.update(new ReadOnlyCiphertext(key, BigInt(fortify[psiMap[r]]))); let p = c.verifyNI(verification.zeroProofs[r]); if (p !== 0n) { @@ -674,7 +676,7 @@ export function verifyFortify(obj, key) { let hasher = new jsSHA("SHA3-256", "TEXT"); hasher.update(psiRegion); hasher.update(psiNeighbour); - hasher.update(edgeSalt.toString(16)); + hasher.update(BigInt(edgeSalt).toString(16)); let hash = hasher.getHash("HEX"); if (proverEdges.has(hash)) { diff --git a/whitepaper/Dissertation.pdf b/whitepaper/Dissertation.pdf index 078f79b6e4b08563e59242a98ae0f54563012a7d..d1b2c8c56ebe495a5482a26a72cda3fa05553017 100644 GIT binary patch delta 23263 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