Coordinates the components of this mix. Each component (offering methods)
has its own (architecture) interface (see package architectureInterfaces
) and a controller class (named "ComponentName"Controller
),
implementing the according interface.
Therefore, the implementation of each component can change, without changes to
any other component (interface and implementing (controller) class remain the
same).
General information: A mix is some kind of proxy that attempts to hide the
correspondence between its incoming and outgoing messages, as proposed by David
Chaum in 1981.
This mix implements the following functions (and others):
- collecting messages (batch strategy with timeout)
- recoding messages (hybrid cryptography)
- sorting messages (recursive divide and conquer)
- detecting replays (based on timestamps and hash tables, constant time)
- validating integrity (using MACs)
- padding messages
- channels
- duplex communication
- clock synchronization (SNTP)
- dynamic reply length (depending on traffic situation)
- generating log files
- exchange of certain types of information with communication partners
- parallel message processing (e. g. recoding)
- non-blocking I/O between clients and mix
- multiplexing between mixes
A test environment is found in the package testEnvironment
.