Adding Cheating Proof Examples

This commit is contained in:
Sarah Jamie Lewis 2019-10-25 21:07:16 -07:00
parent 1cc9696fec
commit a8fd818dd7
25 changed files with 1551 additions and 0 deletions

View File

@ -0,0 +1,74 @@
// This file is produced to demonstrate a problem in the Sctyl/SwissPost decryption proof.
// It implements a cheating decryption proof method described in a report by
// Sarah Jamie Lewis, Olivier Pereira and Vanessa Teague.
// This function should be copied in to
// /scytl-cryptolib/cryptolib-proofs/src/test/java/com/scytl/cryptolib/proofs/service/DecryptionProofTest.java
// and run.
@Test
public final void deserializeProofFromJSONAndCheckOk()
throws GeneralCryptoLibException {
ProofsService proofsServiceForDefaultPolicy = new ProofsService();
ElGamalPublicKey publicKey = ElGamalPublicKey.fromJson("{\"publicKey\":{\"zpSubgroup\":{\"g\":\"Ag==\",\"p\":\"AK+RIPEJgBcfry8YICwtmoutvw==\",\"q\":\"V8iQeITAC4/Xl4wQFhbNRdbf\"},\"elements\":[\"QaWCaQ9VT+HC/M3NIIdgtbzi\"]}}");
ElGamalPrivateKey privateKey = ElGamalPrivateKey.fromJson("{\"privateKey\":{\"zpSubgroup\":{\"g\":\"Ag==\",\"p\":\"AK+RIPEJgBcfry8YICwtmoutvw==\",\"q\":\"V8iQeITAC4/Xl4wQFhbNRdbf\"},\"exponents\":[\"KBZ/CN6wjWmK2/UqfG9xMY4U\"]}}");
BigInteger p = publicKey.getGroup().getP();
BigInteger q = publicKey.getGroup().getQ();
// Prove that the private key and public key correspond.
System.out.println("Checking that private and public keys correspond.\n");
ZpGroupElement testPubKey = publicKey.getGroup().getGenerator().exponentiate(privateKey.getKeys().get(0));
if (!testPubKey.equals(publicKey.getKeys().get(0)) || !publicKey.getGroup().equals(privateKey.getGroup())) {
System.out.println("ERROR: The public key does not match the private key.");
}
// Load the proof that a nonsense ciphertext actually decrypts to 7.
List<ZpGroupElement> plainText7 = new ArrayList<ZpGroupElement>();
plainText7.add(new ZpGroupElement(new BigInteger("7"),p,q));
Proof deserializedProof7 = Proof.fromJson("{\"zkProof\":{\"hash\":\"AiJOnK6Ogb3rIOMEHeS8TrFp\",\"values\":[\"Vm/69W8YWjmzXYyeMQUtMgtO\"],\"q\":\"V8iQeITAC4/Xl4wQFhbNRdbf\"}}");
Ciphertext cheatingCiphertext = new CiphertextImpl(new ZpGroupElement(new BigInteger("14006614111069520674417588732162224161732678"),p,q),
new ZpGroupElement(new BigInteger("12443487329224121281177020933874319855098423"),p,q));
System.out.println("Verifying Proof 1");
System.out.println("Claimed plaintext = "+plainText7.get(0));
// Verify Proof.
Assert.assertTrue(proofsServiceForDefaultPolicy
.createProofVerifierAPI(publicKey.getGroup()).verifyDecryptionProof(
publicKey, cheatingCiphertext, plainText7, deserializedProof7));
// Print decryption
ElGamalServiceAPI elGamalService = new ElGamalService();
CryptoAPIElGamalDecrypter decrypter = elGamalService.createDecrypter(privateKey);
System.out.println("True decryption = "+decrypter.decrypt(new ElGamalComputationsValues(cheatingCiphertext.getGamma(), cheatingCiphertext.getPhis()), true));
System.out.println("Proof verified.\n");
// Load the proof that an encryption of 3 actually decrypts to nonsense.
List<ZpGroupElement> plaintextNonsense = new ArrayList<ZpGroupElement>();
plaintextNonsense.add(new ZpGroupElement(new BigInteger("2750132861347711778626352267580572009032361"),p,q));
Proof deserializedProof3Nonsense = Proof.fromJson("{\"zkProof\":{\"hash\":\"Ta51IEr4v7yGHV1NFqQM9AUM\",\"values\":[\"R6g+q1MFEQfKaVnqxDq9Z5YK\"],\"q\":\"V8iQeITAC4/Xl4wQFhbNRdbf\"}}");
Ciphertext cheatingCiphertext3 = new CiphertextImpl(new ZpGroupElement(new BigInteger("10457373340113899312563075688819286008051707"),p,q),
new ZpGroupElement(new BigInteger("3688530922996676253768130087998100046112146"),p,q));
System.out.println("Verifying Proof 2");
System.out.println("Claimed plaintext = "+plaintextNonsense.get(0));
// Verify Proof
Assert.assertTrue(proofsServiceForDefaultPolicy
.createProofVerifierAPI(publicKey.getGroup()).verifyDecryptionProof(
publicKey, cheatingCiphertext3, plaintextNonsense, deserializedProof3Nonsense));
// Print decryption
System.out.println("True decryption = "+decrypter.decrypt(new ElGamalComputationsValues(cheatingCiphertext3.getGamma(), cheatingCiphertext3.getPhis()), true));
System.out.println("Proof verified.");
}

View File

@ -0,0 +1,32 @@
This folder contains proof transcripts that demonstrate a
flaw in the decryption proof method implemented in the
SwissVote-Scytl mixnet. It was generated by Sarah Jamie Lewis, Olivier
Pereira and Vanessa Teague, using techniques described in our report.
It is completely distinct from our earlier paper, which described
trapdoors in the shuffle mechanism. Even if that issue were corrected,
this problem would remain.
In order to verify the proof transcripts, you will need to have a running
copy of the Swisspost-Scytl voting system.
Copy the function deserializeProofFromJSONAndCheckOk() from
DecryptionProofTest_Insert.java into
/scytl-cryptolib/cryptolib-proofs/src/test/java/com/scytl/cryptolib/proofs/service/DecryptionProofTest.java
and run it.
You can see two different cheating decryption proofs hardcoded into the
function. The first one contains a nonsense value, which it proves to decrypt to 7.
The second one contains a 3, but proves that it decrypts to a nonsense value.
When you run the function, you should get the following output:
Verifying Proof 1
Claimed plaintext = ZpGroupElement [_value=7, _p=15294034768093677312256663166625633354362303, _q=7647017384046838656128331583312816677181151]
True decryption = [ZpGroupElement [_value=12209177965119662820522312937377420599612363, _p=15294034768093677312256663166625633354362303, _q=7647017384046838656128331583312816677181151]]
Proof verified.
Verifying Proof 2
Claimed plaintext = ZpGroupElement [_value=2750132861347711778626352267580572009032361, _p=15294034768093677312256663166625633354362303, _q=7647017384046838656128331583312816677181151]
True decryption = [ZpGroupElement [_value=3, _p=15294034768093677312256663166625633354362303, _q=7647017384046838656128331583312816677181151]]
Proof verified.

View File

@ -0,0 +1,160 @@
/*
* This file is produced by Sarah Jamie Lewis, Olivier Pereira and Vanessa Teague to demonstrate a trapdoor in
* the SwissVote-Scytl implementation of Bayer-Groth proofs.
*
* It is intended to be applied to our four demonstration proof transcripts, made available along with
* this file. The transcripts pass verification but change the outcome of the election.
*
* March 1st, 2019.
*
*/
package com.scytl.products.ov.mixnet;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import com.scytl.products.ov.mixnet.commons.io.*;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.scytl.cryptolib.api.exceptions.GeneralCryptoLibException;
import com.scytl.cryptolib.elgamal.bean.ElGamalPublicKey;
import com.scytl.cryptolib.elgamal.cryptoapi.Ciphertext;
import com.scytl.cryptolib.mathematical.groups.impl.ZpSubgroup;
import com.scytl.products.ov.mixnet.commons.ballots.ElGamalEncryptedBallots;
import com.scytl.products.ov.mixnet.commons.beans.proofs.ShuffleProof;
import com.scytl.products.ov.mixnet.commons.homomorphic.impl.GjosteenElGamal;
import com.scytl.products.ov.mixnet.commons.proofs.bg.commitments.CommitmentParams;
import com.scytl.products.ov.mixnet.commons.tools.CiphertextTools;
import com.scytl.products.ov.mixnet.commons.tools.MatrixArranger;
import com.scytl.products.ov.mixnet.commons.tools.MultiExponentiation;
import com.scytl.products.ov.mixnet.commons.tools.MultiExponentiationImpl;
import com.scytl.products.ov.mixnet.commons.validation.EncryptedBallotsDuplicationValidator;
import com.scytl.products.ov.mixnet.commons.validation.EncryptedBallotsValidator;
import com.scytl.products.ov.mixnet.commons.validation.EncryptedBallotsValidatorManager;
import com.scytl.products.ov.mixnet.proofs.bg.shuffle.ShuffleProofVerifier;
import static com.scytl.products.ov.mixnet.commons.io.CommitmentParamsReader.readCommitmentParamsFromStream;
public class BaseBGMixnetIOVerifierITest {
private static ZpSubgroup zp;
private static int m;
private static int n;
private static int numiterations;
private static CommitmentParams commitmentParams;
private static GjosteenElGamal elgamal;
private static JSONProofsReader proofsReader;
private static ElGamalEncryptedBallotsLoader elgamalEncryptedBallotsLoader;
private static MultiExponentiation limMultiExpo;
private static CiphertextTools ciphertextTools;
// Comment out as appropriate depending on whether you're running the full test or the zero test
private static boolean CHEATING2 = true;
private static String zeroFlag = "";
//private static String zeroFlag = "-zero";
static String twoFlag = CHEATING2 ? "-2" : "";
private static String proofsPath="/tmp/SwissVoteTest/proofs"+twoFlag+zeroFlag+"/";
@BeforeClass
public static void setUp() throws IOException, GeneralCryptoLibException {
BigInteger p = new BigInteger("15294034768093677312256663166625633354362303");
BigInteger q = p.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2));
BigInteger g = new BigInteger("2");
zp = new ZpSubgroup(g, p, q);
ElGamalPublicKey pubKey = ElgamalPublicKeyReader.readPublicKeyFromStream(new FileInputStream(proofsPath+"publicKey"+twoFlag+zeroFlag+".out"));
elgamal = new GjosteenElGamal(zp,pubKey);
m = 2;
n = 2;
proofsReader = new JSONProofsReader();
final List<EncryptedBallotsValidator> listValidators = new ArrayList<>();
listValidators.add(new EncryptedBallotsDuplicationValidator());
EncryptedBallotsValidatorManager validator = new EncryptedBallotsValidatorManager(listValidators);
elgamalEncryptedBallotsLoader = new ElGamalEncryptedBallotsLoader(validator);
limMultiExpo = MultiExponentiationImpl.getInstance();
ciphertextTools = new CiphertextTools(limMultiExpo);
}
private static CommitmentParams readCommitmentParamsFromFile() throws IOException {
final Path pathCommitmentParamsFile =
Paths.get(proofsPath+"commitmentParams"+twoFlag+zeroFlag+".out");
FileInputStream fis = new FileInputStream(pathCommitmentParamsFile.toFile());
return readCommitmentParamsFromStream(zp, fis);
}
@Test
public void givenSmallConfigWhenShuffleThenOK()
throws IOException, GeneralCryptoLibException {
// /////////////////////////////////////////////////
//
// Verify the proofs
//
// /////////////////////////////////////////////////
final ElGamalEncryptedBallots encryptedBallots_VerifierCopy =
elgamalEncryptedBallotsLoader.loadCSV(zp, new FileInputStream(proofsPath+"input"+twoFlag+zeroFlag+".csv"));
final Ciphertext[][] originalCiphertexts_VerifierCopy =
MatrixArranger.arrangeInCiphertextMatrix(encryptedBallots_VerifierCopy, m, n);
final ElGamalEncryptedBallots reencryptedBallots;
reencryptedBallots = elgamalEncryptedBallotsLoader.loadCSV(zp, new FileInputStream(
Paths.get(proofsPath+"output"+twoFlag+zeroFlag+".csv").toFile()));
final Ciphertext[][] reencryptedCiphertexts_VerifierCopy =
MatrixArranger.arrangeInCiphertextMatrix(reencryptedBallots, m, n);
commitmentParams = readCommitmentParamsFromFile();
System.out.println(commitmentParams.getG()[0]);
final ShuffleProofVerifier verifier = new ShuffleProofVerifier(zp, elgamal, commitmentParams,
originalCiphertexts_VerifierCopy, reencryptedCiphertexts_VerifierCopy, m, n, 0, numiterations,
ciphertextTools, limMultiExpo);
final ShuffleProof shuffleProof_VerifierCopy = proofsReader.read(
new FileInputStream(Paths.get(proofsPath+"complete-proof"+twoFlag+zeroFlag+".json").toFile()));
System.out.println("Shuffle Proof: "+ shuffleProof_VerifierCopy.getSecondAnswer().toString());
final boolean testResult = verifier.verifyProof(shuffleProof_VerifierCopy.getInitialMessage(),
shuffleProof_VerifierCopy.getFirstAnswer(), shuffleProof_VerifierCopy.getSecondAnswer());
final String errorMsg = "proofs failed to validate";
Assert.assertTrue(errorMsg, testResult);
}
}

View File

@ -0,0 +1,212 @@
This folder contains proof transcripts that demonstrate a trapdoor in the
SwissVote-Scytl mixnet. It was generated by Sarah Jamie Lewis, Olivier
Pereira and Vanessa Teague, using techniques described in our report,
"Ceci n'est pas une preuve."
In order to verify the proof transcripts, you will need to have a running
copy of the Swisspost-Scytl voting system, which was made available to
researchers through the Swiss public intrusion test at
https://onlinevote-pit.ch/details/
Folders proof/ and proof-zero/ each contain a manipulated proof transcript, each for
the sequence of votes (2,2,3,7). In each case, the mixnet manipulates the outcome
and produces ciphertexts (2,3,3,7) as output, along with a correctness proof
that passes verification.
The transcript in proof/ is a typical run of a real election system, in which the votes
are properly encrypted with random values. The transcript in proof-zero is an atypical
run for demonstration purposes, in which zero randomness is used - thus the
manipulation is immediately obvious to a human reader.
Folders proof-2/ and proof-2-zero/ each contain a manipulated proof transcript
that implements the second kind of cheating described in our paper, in section 2.2.2.
In this cheat, every ciphertext is multiplied by 2. Again proof-2/ contains
a typical run with real randomness, while proof-2-zero/ contains a run in which
zero randomness is used. Hence the cheating is immediately obvious.
Instructions:
1. Unzip the files and store the proof transcripts.
2. In your copy of the Swisspost-Scytl code, replace the contents of online-voting-mixing/mixnet-engine/src/test/java/com/scytl/products/ov/mixnet/BaseBGMixnetIOVerifierITest.java with BgIntegrationTestUpdate.java
3. Update the proofsPath in BgIntegrationTestUpdate.java to wherever you stored the proofs.
4. Run givenSmallConfigWhenShuffleThenOK()
5. You should see that the proof passes verification.
*************
The test in proof/ is run with the following inputs:
private static boolean CHEATING = true;
private static boolean CHEATING2 = false;
BigInteger p = new BigInteger("15294034768093677312256663166625633354362303");
q = p.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2));
BigInteger g = new BigInteger("2");
zp = new ZpSubgroup(g, p, q);
//Note
//pow(2, 2972987297297297296356982562, p)
//5943523178887533241241798626972220822590095
ZpGroupElement[] publicKeyArray = new ZpGroupElement[1];
publicKeyArray[0] = new ZpGroupElement(new BigInteger("5943523178887533241241798626972220822590095"), zp.getP(), zp.getQ());
ElGamalPublicKey publicKey = new ElGamalPublicKey(Arrays.asList(publicKeyArray), zp);
final GjosteenElGamal elgamal = new GjosteenElGamal(zp, publicKey);
ZpGroupElement[] elements3 = getAsGroupElementArray(3, zp);
ZpGroupElement[] elements2 = getAsGroupElementArray(2, zp);
ZpGroupElement[] elements9 = getAsGroupElementArray(7, zp);
final GjosteenElGamalRandomness rhoPrime11 = new GjosteenElGamalRandomness(234522456, q);
final GjosteenElGamalRandomness rhoPrime12 = new GjosteenElGamalRandomness(788749345, q);
final GjosteenElGamalRandomness rhoPrime21 = new GjosteenElGamalRandomness(543783459, q);
final GjosteenElGamalRandomness rhoPrime22 = new GjosteenElGamalRandomness(741325490, q);
final GjosteenElGamalRandomness[] rhoPrime = {rhoPrime11, rhoPrime12, rhoPrime21, rhoPrime22};
final Ciphertext C11 = elgamal.encrypt(elements2, rhoPrime11);
final Ciphertext C12 = elgamal.encrypt(elements2, rhoPrime12);
final Ciphertext C21 = elgamal.encrypt(elements3, rhoPrime21);
final Ciphertext C22 = elgamal.encrypt(elements9, rhoPrime22);
final GjosteenElGamalRandomness rho11 = new GjosteenElGamalRandomness(345167524, q);
final GjosteenElGamalRandomness rho12 = new GjosteenElGamalRandomness(435732453, q);
final GjosteenElGamalRandomness rho21 = new GjosteenElGamalRandomness(892468901, q);
final GjosteenElGamalRandomness rho22 = new GjosteenElGamalRandomness(252437823, q);
and then the third element (C21) is copied over the second (C12).
****************
The test in proof-zero/ is run with the following inputs:
private static boolean CHEATING = true;
private static boolean CHEATING2 = false;
BigInteger p = new BigInteger("15294034768093677312256663166625633354362303");
q = p.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2));
BigInteger g = new BigInteger("2");
zp = new ZpSubgroup(g, p, q);
//Note
//pow(2, 2972987297297297296356982562, p)
//5943523178887533241241798626972220822590095
ZpGroupElement[] publicKeyArray = new ZpGroupElement[1];
publicKeyArray[0] = new ZpGroupElement(new BigInteger("5943523178887533241241798626972220822590095"), zp.getP(), zp.getQ());
ElGamalPublicKey publicKey = new ElGamalPublicKey(Arrays.asList(publicKeyArray), zp);
final GjosteenElGamal elgamal = new GjosteenElGamal(zp, publicKey);
ZpGroupElement[] elements3 = getAsGroupElementArray(3, zp);
ZpGroupElement[] elements2 = getAsGroupElementArray(2, zp);
ZpGroupElement[] elements9 = getAsGroupElementArray(7, zp);
final GjosteenElGamalRandomness rhoPrime11 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rhoPrime12 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rhoPrime21 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rhoPrime22 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness[] rhoPrime = {rhoPrime11, rhoPrime12, rhoPrime21, rhoPrime22};
final Ciphertext C11 = elgamal.encrypt(elements2, rhoPrime11);
final Ciphertext C12 = elgamal.encrypt(elements2, rhoPrime12);
final Ciphertext C21 = elgamal.encrypt(elements3, rhoPrime21);
final Ciphertext C22 = elgamal.encrypt(elements9, rhoPrime22);
final GjosteenElGamalRandomness rho11 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rho12 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rho21 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rho22 = new GjosteenElGamalRandomness(0, q);
and then the third element (C21) is copied over the second (C12).
***********
The test in proof-2-zero/ is run with the following inputs:
private static boolean CHEATING = false;
private static boolean CHEATING2 = true;
BigInteger p = new BigInteger("15294034768093677312256663166625633354362303");
q = p.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2));
BigInteger g = new BigInteger("2");
ZpGroupElement[] publicKeyArray = new ZpGroupElement[1];
publicKeyArray[0] = new ZpGroupElement(new BigInteger("5943523178887533241241798626972220822590095"), zp.getP(), zp.getQ());
ElGamalPublicKey publicKey = new ElGamalPublicKey(Arrays.asList(publicKeyArray), zp);
final GjosteenElGamal elgamal = new GjosteenElGamal(zp, publicKey);
ZpGroupElement[] elements3 = getAsGroupElementArray(3, zp);
ZpGroupElement[] elements2 = getAsGroupElementArray(2, zp);
ZpGroupElement[] elements7 = getAsGroupElementArray(7, zp);
final GjosteenElGamalRandomness rhoPrime11 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rhoPrime12 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rhoPrime21 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rhoPrime22 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness[] rhoPrime = {rhoPrime11, rhoPrime12, rhoPrime21, rhoPrime22};
final Ciphertext C11 = elgamal.encrypt(elements3, rhoPrime11);
final Ciphertext C12 = elgamal.encrypt(elements3, rhoPrime12);
final Ciphertext C21 = elgamal.encrypt(elements7, rhoPrime21);
final Ciphertext C22 = elgamal.encrypt(elements7, rhoPrime22);
final GjosteenElGamalRandomness rho11 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rho12 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rho21 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness rho22 = new GjosteenElGamalRandomness(0, q);
final GjosteenElGamalRandomness[] rho = {rho11, rho12, rho21, rho22};
final Ciphertext[][] vecC = {{C11, C12 }, {C21, C22 }};
Ciphertext[][] ciphertexts = {
{C11.multiply(elgamal.encrypt(elements2, rho11)),
C12.multiply(elgamal.encrypt(elements2, rho12))},
{C21.multiply(elgamal.encrypt(elements2, rho21)),
C22.multiply(elgamal.encrypt(elements2, rho22))}
};
***********
The test in proof-2/ is run with the following inputs:
private static boolean CHEATING = false;
private static boolean CHEATING2 = true;
ZpGroupElement[] publicKeyArray = new ZpGroupElement[1];
publicKeyArray[0] = new ZpGroupElement(new BigInteger("5943523178887533241241798626972220822590095"), zp.getP(), zp.getQ());
ElGamalPublicKey publicKey = new ElGamalPublicKey(Arrays.asList(publicKeyArray), zp);
final GjosteenElGamal elgamal = new GjosteenElGamal(zp, publicKey);
ZpGroupElement[] elements3 = getAsGroupElementArray(3, zp);
ZpGroupElement[] elements2 = getAsGroupElementArray(2, zp);
ZpGroupElement[] elements7 = getAsGroupElementArray(7, zp);
final GjosteenElGamalRandomness rhoPrime11 = new GjosteenElGamalRandomness(234522456, q);
final GjosteenElGamalRandomness rhoPrime12 = new GjosteenElGamalRandomness(788749345, q);
final GjosteenElGamalRandomness rhoPrime21 = new GjosteenElGamalRandomness(543783459, q);
final GjosteenElGamalRandomness rhoPrime22 = new GjosteenElGamalRandomness(741325490, q);
final GjosteenElGamalRandomness[] rhoPrime = {rhoPrime11, rhoPrime12, rhoPrime21, rhoPrime22};
final Ciphertext C11 = elgamal.encrypt(elements3, rhoPrime11);
final Ciphertext C12 = elgamal.encrypt(elements3, rhoPrime12);
final Ciphertext C21 = elgamal.encrypt(elements7, rhoPrime21);
final Ciphertext C22 = elgamal.encrypt(elements7, rhoPrime22);
final GjosteenElGamalRandomness rho11 = new GjosteenElGamalRandomness(345167524, q);
final GjosteenElGamalRandomness rho12 = new GjosteenElGamalRandomness(435732453, q);
final GjosteenElGamalRandomness rho21 = new GjosteenElGamalRandomness(892468901, q);
final GjosteenElGamalRandomness rho22 = new GjosteenElGamalRandomness(252437823, q);
final GjosteenElGamalRandomness[] rho = {rho11, rho12, rho21, rho22};
final Ciphertext[][] vecC = {{C11, C12 }, {C21, C22 }};
Ciphertext[][] ciphertexts = {
{C11.multiply(elgamal.encrypt(elements2, rho11)),
C12.multiply(elgamal.encrypt(elements2, rho12))},
{C21.multiply(elgamal.encrypt(elements2, rho21)),
C22.multiply(elgamal.encrypt(elements2, rho22))}

View File

@ -0,0 +1,6 @@
15294034768093677312256663166625633354362303
7647017384046838656128331583312816677181151
2
14300310186259999603861089512845514672508694
4501625223818925040714597010563229610570084
8396288750628458020391470159535161063338119

View File

@ -0,0 +1,253 @@
{
"initialMessage" : [ {
"element" : {
"value" : 13659771989630969101559130274356943184691900,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 7947923015819703146643495375895498777389904,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"firstAnswer" : [ {
"element" : {
"value" : 9767444602436655882593068831914187193966478,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 13858966410728751984253619700561325267729225,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"secondAnswer" : {
"msgPA" : {
"commitmentPublicB" : {
"element" : {
"value" : 1857645376534809588145067319443900759135195,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"iniSVA" : {
"commitmentPublicD" : {
"element" : {
"value" : 13564639239755886964863168741248722394983103,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicLowDelta" : {
"element" : {
"value" : 6914123205973139875124392447290002261712985,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicHighDelta" : {
"element" : {
"value" : 6415410617159308335146409165591342947034212,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}
},
"ansSVA" : {
"exponentsTildeA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1834981019355055407388899249814772360565616
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3651834091099384660268665862790578113601831
} ],
"exponentsTildeB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1834981019355055407388899249814772360565616
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4493354646051673506140091219856862041892984
} ],
"exponentTildeR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1354997269384819654194794096005017659127767
},
"exponentTildeS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3738170608614679703188403059589587940256255
}
},
"iniHPA" : {
"commitmentPublicB" : [ {
"element" : {
"value" : 9256844904751239190280292233480410468122098,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1857645376534809588145067319443900759135195,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"ansHPA" : {
"initial" : {
"commitmentPublicA0" : {
"element" : {
"value" : 14017284052659234492019014501488604656837305,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicBM" : {
"element" : {
"value" : 7515575228409149581763443361429934467906365,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicD" : [ {
"element" : {
"value" : 9489162227995962789320451382329786219618431,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 4889076328983737768979434063385815536042118,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 3782631989506493571395234723418892431650080,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 13182418003662729821425300670960328554641063,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"answer" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5427765002411665207103028812689136507073120
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5866561943384277043911724799626357219119837
} ],
"exponentsB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1328831542182132794140315983555570105582113
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2094306994419475451213355387777570099523040
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 6715256392542814143044662920419601900069194
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5050277813597792509543307599267377027840882
},
"exponentT" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2323699355351835670351487345539626172476706
}
}
}
},
"iniMEBasic" : {
"commitmentPublicA0" : {
"element" : {
"value" : 8140883804511527211848601638409036575763452,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicB" : [ {
"element" : {
"value" : 12677174590714927975992292060308673928909601,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 13750921665499811167795719843206888994827771,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1597259658597319316366709673585474938628997,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"ciphertextsE" : [ {
"gamma" : "3336146937099309094595479612213974657715748;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "2449130554676320405772754856973422354410979;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "1357467814375269533380371965023367780992308;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "4944474899212713389335823385237965120796748;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "1;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "12498420619291728485042406324608708219447593;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "10096179232613308934358026239482718306175109;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "11494468609495425694566074444047854680936252;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
} ]
},
"ansMEBasic" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2388501870119749412138369019440304981955053
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1826967192013227313819391285749940433268381
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7269667973018668440967069518540106684241356
},
"exponentsB" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7382194830550256170522008811234690229688497
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3192786585807565827666175254703441632166101
},
"randomnessTau" : {
"class" : "com.scytl.products.ov.mixnet.commons.homomorphic.impl.GjosteenElGamalRandomness",
"randomnessValue" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7312966931808455907809427232419069695171255
}
}
}
}
}

View File

@ -0,0 +1,4 @@
1;3
1;3
1;7
1;7
1 1 3
2 1 3
3 1 7
4 1 7

View File

@ -0,0 +1,4 @@
1;6
1;6
1;14
1;14
1 1 6
2 1 6
3 1 14
4 1 14

View File

@ -0,0 +1 @@
{"publicKey":{"zpSubgroup":{"g":"Ag==","p":"AK+RIPEJgBcfry8YICwtmoutvw==","q":"V8iQeITAC4/Xl4wQFhbNRdbf"},"elements":["RDpx3om0j/3TQlNyKH9xgxKP"]}}

View File

@ -0,0 +1,6 @@
15294034768093677312256663166625633354362303
7647017384046838656128331583312816677181151
2
9203968993630645712771081704627051427447759
14332802404593506442946333707859196359964454
8831868083238621953171992654757873908933881

View File

@ -0,0 +1,253 @@
{
"initialMessage" : [ {
"element" : {
"value" : 5686901005743611126667229787203460245018803,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 11185574507156442704730883614240682198226663,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"firstAnswer" : [ {
"element" : {
"value" : 9098388144584288459111452508192080464282792,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 8067650293804250902892883407337649732105425,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"secondAnswer" : {
"msgPA" : {
"commitmentPublicB" : {
"element" : {
"value" : 13308914475547924926922469174589760441015317,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"iniSVA" : {
"commitmentPublicD" : {
"element" : {
"value" : 1605184055414561288064504123923179544724733,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicLowDelta" : {
"element" : {
"value" : 5861662573058819572209530162153359585358998,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicHighDelta" : {
"element" : {
"value" : 8280387761712157071829379804196779950685450,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}
},
"ansSVA" : {
"exponentsTildeA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2048705207138211641444093679110956410151907
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3087434215097852071603895895112341672385918
} ],
"exponentsTildeB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2048705207138211641444093679110956410151907
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 6696084153571906533755106588893595019170714
} ],
"exponentTildeR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5543399901869633977353553638943488923447741
},
"exponentTildeS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 643741702192512097722606432027765685296208
}
},
"iniHPA" : {
"commitmentPublicB" : [ {
"element" : {
"value" : 6327690226133533100561029359395144915465773,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 13308914475547924926922469174589760441015317,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"ansHPA" : {
"initial" : {
"commitmentPublicA0" : {
"element" : {
"value" : 13015266211256164999863864672210543361022124,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicBM" : {
"element" : {
"value" : 6026181322654755480742080767992639908709587,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicD" : [ {
"element" : {
"value" : 7331607488672995258765080486405978872976881,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1894090974930911098072270000480100394368502,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 13096939031718806200750224233395756671045191,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 7822333799298211488612759098983200061277096,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"answer" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1175750054930794375731096682745303852998107
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5808711348011305531153670523152495168390857
} ],
"exponentsB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 350703386898770409698230879933876216831011
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4217172366455270910099303525888730392831401
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1683895571035260991593959169075194685599885
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7621083655812860561453115769846396491123422
},
"exponentT" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 424053448677071126771993249764579481631896
}
}
}
},
"iniMEBasic" : {
"commitmentPublicA0" : {
"element" : {
"value" : 2759157306851535163019657152225126278887521,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicB" : [ {
"element" : {
"value" : 661682593921274908605486464479066260880262,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 10982393225664943757638751590603257242846633,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 12838434784315019570106430399687649584223253,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"ciphertextsE" : [ {
"gamma" : "4525428873869209818071924361199255083942365;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "214343506093432265690756905171763315494555;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "1076964826531991618141161689415153389527152;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "11202815785598218054021408068895855606276593;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "12752102622711108900002141241608746992169017;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "13653225323107511233668018260456535265011138;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "14343024304369973282148345604664282118668037;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "14827632853608820330748444120741876723146065;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
} ]
},
"ansMEBasic" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 92781825866804719318430135823566967093295
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3023943052674527679192109380427169610783723
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 847700230455438529446923586302583399819097
},
"exponentsB" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3764552723782555749176323315987975666809758
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 40297487583321671700788688452234126512215
},
"randomnessTau" : {
"class" : "com.scytl.products.ov.mixnet.commons.homomorphic.impl.GjosteenElGamalRandomness",
"randomnessValue" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4877163275761485000897865151562905858291537
}
}
}
}
}

View File

@ -0,0 +1,4 @@
1026042511419262820832249882115460685224240;3015764923853760044298653977223102794527076
2938977807617366470350745970123934596326979;14491291112887512153128392244066542584810285
9211524437286051898709289466753741743844498;14848135518571806581401721082169753478831714
5558301597838992791301691121646397483249337;13347394279435188885524743642377482062707466
1 1026042511419262820832249882115460685224240 3015764923853760044298653977223102794527076
2 2938977807617366470350745970123934596326979 14491291112887512153128392244066542584810285
3 9211524437286051898709289466753741743844498 14848135518571806581401721082169753478831714
4 5558301597838992791301691121646397483249337 13347394279435188885524743642377482062707466

View File

@ -0,0 +1,4 @@
4922094083415250286671215611572541236275096;7175880475750666060651643017937492538939731
9576065297999906701346209654966964223388101;9727876224694605471305038720285277846537990
1596375784145042451296706798393553519630250;8391886501929666544461499551138587096024257
4928611825032374492667637516002535373258350;13743241727424329899169425196420614390745368
1 4922094083415250286671215611572541236275096 7175880475750666060651643017937492538939731
2 9576065297999906701346209654966964223388101 9727876224694605471305038720285277846537990
3 1596375784145042451296706798393553519630250 8391886501929666544461499551138587096024257
4 4928611825032374492667637516002535373258350 13743241727424329899169425196420614390745368

View File

@ -0,0 +1 @@
{"publicKey":{"zpSubgroup":{"g":"Ag==","p":"AK+RIPEJgBcfry8YICwtmoutvw==","q":"V8iQeITAC4/Xl4wQFhbNRdbf"},"elements":["RDpx3om0j/3TQlNyKH9xgxKP"]}}

View File

@ -0,0 +1,6 @@
15294034768093677312256663166625633354362303
7647017384046838656128331583312816677181151
2
1029878453743409859479915403327532913980462
10224117588548335241978037913616493447721042
563169352382602431283384400208190729682631

View File

@ -0,0 +1,253 @@
{
"initialMessage" : [ {
"element" : {
"value" : 303842726782477875242759263157127528264350,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 11659242704527572945798719114646766962176622,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"firstAnswer" : [ {
"element" : {
"value" : 778961555538900025634918598762301228204022,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 8936582124021882446323731905103436060642142,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"secondAnswer" : {
"msgPA" : {
"commitmentPublicB" : {
"element" : {
"value" : 4277501158944991354761939399357623029141257,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"iniSVA" : {
"commitmentPublicD" : {
"element" : {
"value" : 2138458177652348805644835079194881703514017,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicLowDelta" : {
"element" : {
"value" : 13884611855667141299605993999031015873529688,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicHighDelta" : {
"element" : {
"value" : 7202104855370552979810745056616797993870116,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}
},
"ansSVA" : {
"exponentsTildeA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3703384104782392650613377056512885793407503
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2399287754769777852221094247967866612320174
} ],
"exponentsTildeB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3703384104782392650613377056512885793407503
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 6269365802055719774898026303592213700697291
} ],
"exponentTildeR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5346308280451636561330553670557867752311546
},
"exponentTildeS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4012725041075402778366930820877355971591811
}
},
"iniHPA" : {
"commitmentPublicB" : [ {
"element" : {
"value" : 9599143890526168083063704729474790092348929,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 4277501158944991354761939399357623029141257,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"ansHPA" : {
"initial" : {
"commitmentPublicA0" : {
"element" : {
"value" : 12147589225588383406100649293491156257989028,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicBM" : {
"element" : {
"value" : 4541081311967626700912317379744058012285849,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicD" : [ {
"element" : {
"value" : 7490528551125606784494389986510145538268637,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1599718014085248405970518874222340958059358,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 8892805497557649066250950041502426698438860,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 6290563905837385560518345347981195718382829,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"answer" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2982805403811355730317953011407519848501502
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2743646096854534320019228357072529053912860
} ],
"exponentsB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 6033376414483381153878609494728121148884799
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7261616265973933270090553666518279281401481
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2417887844273323996656593010121579177045572
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4526770588053081955431713167815624293043828
},
"exponentT" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7389411533966235535583008565028369337919151
}
}
}
},
"iniMEBasic" : {
"commitmentPublicA0" : {
"element" : {
"value" : 9401760153583208145090252577459254228204572,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicB" : [ {
"element" : {
"value" : 9442414842470928916443848227913841398757662,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 13523254227677285129350374429065071552602255,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 4479682068484803756669880693876353644298151,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"ciphertextsE" : [ {
"gamma" : "11383958119490154289541529033575238477657341;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "2608564042755721256500581491076438445384361;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "4974763137379829713304970641113761428021376;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "5471163802520413883492505228729547592206655;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "1;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "3972685637770820047841394786586338645489663;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "14145824223134878123136114002782643799870958;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "4583434245826005074553772595242688597841858;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
} ]
},
"ansMEBasic" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2475973434398375069185036593294590458252147
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1296539682510040666048584621908776790249012
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 6572773589978554762751536479057631664836327
},
"exponentsB" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4720400950150954226706208739689978053554245
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3260108408879721068564784190975797589645255
},
"randomnessTau" : {
"class" : "com.scytl.products.ov.mixnet.commons.homomorphic.impl.GjosteenElGamalRandomness",
"randomnessValue" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3104614603568483463254697266094464648321125
}
}
}
}
}

View File

@ -0,0 +1,4 @@
1;2
1;2
1;3
1;7
1 1 2
2 1 2
3 1 3
4 1 7

View File

@ -0,0 +1,4 @@
1;2
1;3
1;3
1;7
1 1 2
2 1 3
3 1 3
4 1 7

View File

@ -0,0 +1 @@
{"publicKey":{"zpSubgroup":{"g":"Ag==","p":"AK+RIPEJgBcfry8YICwtmoutvw==","q":"V8iQeITAC4/Xl4wQFhbNRdbf"},"elements":["RDpx3om0j/3TQlNyKH9xgxKP"]}}

View File

@ -0,0 +1 @@
,vanessa,detritus.greatcactus.org,01.03.2019 11:22,file:///home/vanessa/.config/libreoffice/4;

View File

@ -0,0 +1,6 @@
15294034768093677312256663166625633354362303
7647017384046838656128331583312816677181151
2
13124687552318082285772210889381735736502357
98496287585364772716717658168335680302640
979760984274784307525713813936727293587996

View File

@ -0,0 +1,253 @@
{
"initialMessage" : [ {
"element" : {
"value" : 10111748873113388478753399241444653642503357,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 4328225576940976374290419659592551010479283,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"firstAnswer" : [ {
"element" : {
"value" : 13652753204723397584717761614065622445677293,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 8558784199372668339559346360480524120999844,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"secondAnswer" : {
"msgPA" : {
"commitmentPublicB" : {
"element" : {
"value" : 1289161665596610043841415396209547740738352,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"iniSVA" : {
"commitmentPublicD" : {
"element" : {
"value" : 7594570065194556390124121241010079121762209,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicLowDelta" : {
"element" : {
"value" : 2620996818320143599171474107132085319660174,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicHighDelta" : {
"element" : {
"value" : 988021993110106465539854225588824836813484,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}
},
"ansSVA" : {
"exponentsTildeA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1901524969758326009785342198326654866377194
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4206972039693111928234839483584896822216661
} ],
"exponentsTildeB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1901524969758326009785342198326654866377194
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2334529994278230900850789660228905631719366
} ],
"exponentTildeR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 93621144339999084754416503974545674818642
},
"exponentTildeS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1697403840486520024561740887218656515343202
}
},
"iniHPA" : {
"commitmentPublicB" : [ {
"element" : {
"value" : 3289945505050429080578099673242312147133884,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1289161665596610043841415396209547740738352,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"ansHPA" : {
"initial" : {
"commitmentPublicA0" : {
"element" : {
"value" : 9780611175931126287373680567488044443592220,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicBM" : {
"element" : {
"value" : 10136345154018214956240586573981034733226564,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicD" : [ {
"element" : {
"value" : 4113142183889731593060162178604717040917259,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 11871854645621103893665806463192145293946700,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 10678793172357006173761034051161877450693959,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 7190246145227798328769851875239243057791586,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ]
},
"answer" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1002187969183751835488098462826256439224302
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1648293102727119479230749401506970975631192
} ],
"exponentsB" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1077114143477354758527328951931010872648928
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 973788045687454928782099792070583059085544
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4583343814642703558705203898263885395984684
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3018331769911991520779602549727327390960884
},
"exponentT" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 3822040574161212608837247431068845214257133
}
}
}
},
"iniMEBasic" : {
"commitmentPublicA0" : {
"element" : {
"value" : 2733599500631744447924655384055464344925424,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
},
"commitmentPublicB" : [ {
"element" : {
"value" : 10145346364837649655801377819595271382118850,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 7001657834264767248349809620875098487420803,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 1,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
}, {
"element" : {
"value" : 3686268759135595314030264951080976711538502,
"p" : 15294034768093677312256663166625633354362303,
"q" : 7647017384046838656128331583312816677181151
}
} ],
"ciphertextsE" : [ {
"gamma" : "8765839074965327864239007636367668687050966;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "10383041402233745318646620977812923651694356;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "3958855092651399541899803757186782473381898;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "3481612633050527655310492408358153245058726;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "14105443562863962656078009316581696481380679;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "2257127027995072960420937796643704636756187;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
}, {
"gamma" : "10848618481471065709671091330683134836487800;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151",
"phis" : "5969861756426068995522928925053221029392570;15294034768093677312256663166625633354362303;7647017384046838656128331583312816677181151"
} ]
},
"ansMEBasic" : {
"exponentsA" : [ {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1779489080146645218164867367641829392560449
}, {
"q" : 7647017384046838656128331583312816677181151,
"value" : 5425685570506741986848986716754113996877054
} ],
"exponentR" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 1140913206488447394657733864182641370287374
},
"exponentsB" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 4396292364043134669156992011068318494319052
},
"exponentS" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 2843984736605655733352005915475535976030536
},
"randomnessTau" : {
"class" : "com.scytl.products.ov.mixnet.commons.homomorphic.impl.GjosteenElGamalRandomness",
"randomnessValue" : {
"q" : 7647017384046838656128331583312816677181151,
"value" : 7645255848832246297147477111691160338198058
}
}
}
}
}

View File

@ -0,0 +1,4 @@
1026042511419262820832249882115460685224240;12206533127964958237703544762565824099259586
2938977807617366470350745970123934596326979;9660860741925008102085594829377695056540190
9211524437286051898709289466753741743844498;8548348760544156722351689487590699112979635
5558301597838992791301691121646397483249337;13347394279435188885524743642377482062707466
1 1026042511419262820832249882115460685224240 12206533127964958237703544762565824099259586
2 2938977807617366470350745970123934596326979 9660860741925008102085594829377695056540190
3 9211524437286051898709289466753741743844498 8548348760544156722351689487590699112979635
4 5558301597838992791301691121646397483249337 13347394279435188885524743642377482062707466

View File

@ -0,0 +1,4 @@
4922094083415250286671215611572541236275096;12587983337312673561721656450396253082554779
13863694355863029516915070319609169202749868;11209154892812673438053869054834196110193895
1596375784145042451296706798393553519630250;5075554557862145112153892010949475810797120
4928611825032374492667637516002535373258350;6871620863712164949584712598210307195372684
1 4922094083415250286671215611572541236275096 12587983337312673561721656450396253082554779
2 13863694355863029516915070319609169202749868 11209154892812673438053869054834196110193895
3 1596375784145042451296706798393553519630250 5075554557862145112153892010949475810797120
4 4928611825032374492667637516002535373258350 6871620863712164949584712598210307195372684

View File

@ -0,0 +1 @@
{"publicKey":{"zpSubgroup":{"g":"Ag==","p":"AK+RIPEJgBcfry8YICwtmoutvw==","q":"V8iQeITAC4/Xl4wQFhbNRdbf"},"elements":["RDpx3om0j/3TQlNyKH9xgxKP"]}}