I have a 'for fun' project, which is a pure software based redesign of the Enigma I. I'd like to compute the key length of my design, but I need some help with that.
I have a write-up here (see section 1), but in summary:
- Conceptually it's a rotor based system, that can take any number of rotors (i.e. as set by the operator).
- Rotor components: stator (input/output), N number of rotors, stator (input/output). Unlike Enigma I, it has no reflector and data can be enciphered in either direction.
- Rotor supports 94 unique characters (A-Z, a-z, 0-9 and some special characters).
I've attempted to map out all the variables that I think contribute to the key size:
In summary for those unable to see the image clearly:
- Rotors of 94 characters
- T - Total possible rotors (permutations of 94): 1.08736615665674E+146
- A - rotors available for selection by the operator. Theoretically T, but practically I have an initial implementation that uses 1147 unique rotors.
- N - the number of rotors selected by the operator. Unlike Enigma I there's no strict limit, and there's the further complication that you can use multiple instances of the same rotor (whether or not that enhances its cryptographic strength, I'm not sure).
- O - the order in which the selected rotors can be arranged (including instances of repeated rotors). I believe the calculation for Enigma I would be 26! × (26! - 1) × (26! - 2) - which takes into account the non-reuse of rotors, which doesn't apply in this case.
- R - starting position for rotor Rotation.
- D - direction of rotation (forwards or reverse).
- F - flow direction through the rotors (left-to-right or right-to-left).
Do you agree those variables all contribute to the key size (they seem to me to all be variables the operator can set, and therefore part of the key)?
Can you give me a hand to compute the key size, or point me in the right direction? I'm afraid math isn't really a strong point of mine.
Update (Re comments to Huberts answer)
Enigma I has a specific number of rotors, which reflects translates both into the key size and the size of the cryptographic problem attackers face. Calculus doesn't place a limit on the number of rotors used, which I think means that from an attacker's point of view you'd need to consider how many rotors might be being used (i.e.e a range). Where as, key size is a specific measurement of how big a specific key is.
Update (April 2018)
Project complete. Info available in the link below, including access to download (win10 only) and user guide.