See Theory over on my site for the explanation of how the mixnet works.
To use it, you will need:
- A computer which is on and connected to the internet 24/7.
- Linux. If you're not running Linux you can probably modify the python code without too much work. Only the random-number source is Linux-specific.
- A good source of random numbers, such as a hardware random number generator. This is an alpha proof of concept that uses /dev/urandom by default, which is not a good source. To change the source of random numbers, modify the source code from '/dev/urandom' to whatever source device you wish.
- Your computer needs to have a publicly available IP address (you may need to set up port forwarding for TCP port 17928). OK-Mixnet is IPv4 only, sorry.
- To be on the list! Email me (my email is here) to join the network.
- A friend you want to talk to who is also on the mixnet.
To send a message to a friend, put a file with the message in the directory messages-to-send/<friend_name>
(the directory is automatically created for you after setting up a connection). Messages to you will appear in messages-received
.
To set up a connection with a friend, so you can send each other messages:
- Both of you should generate 40GB of fresh random numbers. Put them in a file called
<your-ID>.half-pad
.
dd if=/dev/urandom of=YOUR_ID.half-pad bs=1M count=40000
- Both of you should write the current UTC date in a second file.
date -u "+%Y-%m-%d" >THEIR_ID.start-date.txt
The file is short and looks like this:
2021-05-13
- Exchange
.half-pad
files, so you each have both half-pad. For security, you shouldn't use the internet for this step. In increasing order of paranoia, use LAN, USB, or CD/DVD. - Xor the bin files together, and delete the originals. The final file should be called
<their-ID>.pad
.
xor --same-size YOUR_ID.half-pad THEIR_ID.half-pad >THEIR_ID.pad && shred -zu YOUR_ID.half-pad THEIR_ID.half-pad
- Put the
.pad
and.txt
files in the 'pads' directory of ok-mixnet. The directorymessages-to-send/<friend_name>
will be automatically created in about 10 seconds.