Obviouscation

Here is how to break the 14-bit challenge point-14.circ.obf.60.zip using eight machines named saber1, saber2, saber3, saber4, saber5, saber6, saber7, saber8.

Make sure you can transparently ssh into each machine.

Install an MPI library, if you don't have one installed already. For example, as root, under Ubuntu:

     aptitude install libopenmpi-dev openmpi-bin

Unpack the challenge:

     unzip point-14.circ.obf.60.zip
     cp x0 q # deal with old format

Switch into the challenge directory, and download the Obviouscation team's attack software:

     cd point-14.circ.obf.60
     wget http://obviouscation.cr.yp.to/attack.cpp

Compile the attack software:

     mpic++ -Wall -fopenmp -O3 -march=native -mtune=native \
     -o attack attack.cpp -lgmpxx -lgmp -lgomp

Make sure that the challenge files and attack software are replicated or shared across machines.

Create a hosts file listing the machine names:

     for i in 1 2 3 4 5 6 7 8
     do
       echo saber$i
     done > hosts

Run the attack:

     time mpirun -hostfile hosts ./attack > attack.out

Eventually a line such as

     1 time 1549.764 vv 9.013 checksum 11000101100100 6451581447747525956 solution

will appear in attack.out. This line indicates that x=11000101100100 is the solution to this challenge, that this solution appeared after 1549.764 seconds on node 1 (MPI labels the machines as node 0, node 1, node 2, etc.), that 9.013 seconds (in one thread) were used to compute y(x) from L and R (dot product, multiplication by pzt, reduction mod q), and that y(x) has checksum 6451581447747525956. This software defines the checksum of an integer as the integer mod 7121606815140220673.


Version: This is version 2014.12.12 of the Software web page.