# Riskless ### Undergraduate dissertation ## Running the demo 1. `pip install -r requirements.txt` 2. `python3 app.py` 3. Navigate browser to `http://localhost:5000` ### Running the benchmarks 1. Press F12 2. Type the name of the benchmark to run: - `RSABench` - `PaillierBench` - `ZeroProofBench` - `ZeroProofVerifierBench` - `ZeroProofSizeBench` - `Protocol4Bench` - `Protocol4VerifierBench` - `Protocol4SizeBench` 3. Wait for results to output in milliseconds ### Changing the key size The key size is determined by the variable `KEY_SIZE` in `random_primes.js`. This variable dictates the size of _each_ prime used in the modulus, so the total key size is twice this value. Recommend selecting one of 512, 1024, or 2048. In fact, I recommend selecting 512 if you want the program to run in less than 3-5 business days. Key generation will still take some time. The browser may tell you the tab is not responding, but just wait and it'll be fine eventually. If not, short-circuit the `generate_safe_prime` function in `random_primes.js` to just return a normal prime (there is a comment on the conditional that needs to be removed). ## Playing the game 1. Open the game in two separate tabs 2. Press "Ready" on both tabs once they are fully loaded ## Implementation bugs * When attacking, the units are not subtracted from the attacking region correctly. * Some proofs are not verified. * Proof of the ciphertext used when claiming. * Proof of the ciphertext used when capturing. * The win condition is not checked. * Not thoroughly tested on over 2 players.