Project Fairdice
[Home] [Docs] [Users] [Gaming] [Crypto] [Devel] [Download] [Help]



There are three types of connection between applications:
U-C User --> Client
C-S Client --> Server
H-S Host --> Server
The Fairdice Protocol covers only the C-S connection, and is the only one of interest, cryptographically. However we will cover all three protocols here as they make a consistent whole and it aids understanding.

In accordance with our precepts we have made the cryptography used as boring and basic as possible, sticking to well known and understood concepts like one way hashes (such as MD5 or Tiger) for the initial version, even when the end use of the produced event selection could have used a CPRNG (such as AES-192 in CTR mode) to leverage the initial event into further usable event selections.

Each protocol can be looked at in four parts:

From a cryptographic perspective, the part you will be interested in is the Game-Specific part of the Client-Server protocol. But bear in mind that the Negotiation messages will cover link level authentication (preventing repudiation) and encryption (preventing interception).

Formal Specification

Backus-Naur Form - shared definitions used by all
Protocol Wrap Link Negot Game
U-C Wrap_0.3 Link_0.3 Neg_UC_0.3 Game_UC_0.3
C-S Neg_CS_0.3 Game_CS_0.3
H-S Neg_HS_0.3 Game_HS_0.3


In addition to the formal specification above, there are several other sources of information you may find of help in understanding what is going on and why:

Reviews and Discussion

If you would like to provide a review of the protocol, please
get in contact.

If you would like to join the discussion, there is:

Update: I have now created a wiki specifically for Project Fairdice. The URL is:

Please read the 'how to use' link before editing and follow the guidelines for this particular wiki!