In GNU.FREE there are two servers, the electoral roll server, and the regional server. All communications are encrypted using Blowfish encryption with a key exchanged by RSA encryption. The voter submits authentication information to the ERServer, who validates it. The voter then fills out a ballot, and sends a key along with a timestamp to the RTServer. The RT-Server then stores this, and challenges the voter for the timestamp again. If the voter provides the valid timestamp, then the key is decrypted and sent to the ERServer. The ERServer records that the voter has submitted a key and cannot vote again. The RTServer then decrypts the vote, stores it and deletes the key.