Cryptography
Introduction
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:
- Message Wrapper - this is identical for all protocols
- Link Facilities - these are similar for all protocols
- Negotiation messages - these differ between protocols
- Game-Specific messages - these differ between protocols
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).
Backus-Naur Form - shared definitions used by all
Resources
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:
- Concepts - A simplified introduction to the
concepts used in the protocol
- Example - the message traffic for a single game (Game part only)
- ucp.h - U-C defines
- csp.h - C-S defines
- hsp.h - H-S defines
- Summary - what each key letter is
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:
http://fairdice.sourceforge.net/cgi-bin/discuss.pl?FairdiceProtocol
Please read the 'how to use' link before editing and follow the guidelines for this particular wiki!
(TOP)(UP)