Skip to content

Enigma encryption device

Advertising
?
Creation quality: 5.0/5 (1 vote)
Evaluation of members on the printability, utility, level of detail, etc.

  • 3k views
  • 5 likes
  • 40 downloads
  • 1 collection

License
3D design format
OBJ and STL Folder details Close
  • axis-30.obj
  • axis-small-30.obj
  • bague-1-30.stl
  • bague-2-30.stl
  • bague-3-30.stl
  • bague-4-30.stl
  • bague-5-30.stl
  • bague-finale-30.stl
  • bouchon-30.obj
  • eclate-2rotors.stl
  • internaldisk-2-30.stl
  • reflector-B-30.stl
  • reflector-C-30.stl
  • rotor-1-30.stl
  • rotor-2-30.stl
  • rotor-3-30.stl
  • rotor-4-30.stl
  • rotor-5-30.stl
  • spare-letters-30.stl

Learn more about the formats

Publication date 2021-08-22 at 23:05
?
Published to Thingiverse on: 2020-08-19 at 17:48
Design number 501318

3D printer file info

3D model description

This thing is based on the Pringles Enigma by Franklin Heath Ltd that I discover via EscapeTechno's Machine Enigma (https://www.thingiverse.com/thing:3936519).

Engima was probably the most advanced cryptographic device of its time. The challenge of decipher it had eventually lead to the realisation of the first computer.

Now, this work being done, I find it very useful to illustrate some concepts like reversibility (ciphering and deciphering are done the very same way) and information in computer science or to show how, in cryptography, a simple tiny device can encode so hard that break it require the resources of a nation !

Files:

Why all files are suffixed with "-30"? Because the radius is a parameter in the code and my first choice was 50mm that implies quite large prints. So I reduce this parameter to 30 (which seem to be near the limits of what I can print for the bigger pieces and for the smaller details). So all the files presented here are done with this value. I keep it because I do not exclude publishing smaller or bigger versions.

Note that "Bague" is the French for "ring": sorry there are many French words into the code and the file names.

Source:

  • enigma.scad
  • axis.FCStd

This is my first big project with OpenSCAD, so please, be indulgent with my code. It does not even include the trick I find to make easily an hollowed cylinder sector (https://www.thingiverse.com/thing:4568739)!

Also note that the threads for the axis and its cover where done with FreeCAD.

The interface and the plug board:

  • bague-finale-30.stl
  • spare-letters-30.stl

The "bague-finale-30" object represent the machine's text interface. Detached letters are here to emulate the plug board, by default each letter is inserted in front of the same letter on this ring. To emulate a wire on the plug board, you just have to inverse 2 of this letters (like the "L-P" and "M-O" couples on the illustration below)! Caution don't include a letter in more than one inversion!

When you want to treat (to encrypt or to decrypt) a letter you'll have to search it on this ring before verifying on its right that it isn't substituted. If so, you'll have to search the new letter on the static ring: you'll find the original letter on the right (as illustrated with the red path; the green one illustrate a case without substitution on the letter "N").

The final ring and its movable letter in the standard position

The rotors:

  • bague-[n]-30.stl
  • rotor-[n]-30.stl

The second rotor and its ring in the standard position

Each rotor has been separated in two parts: the connection pattern in the file beginning by "rotor" and the letter's ring in the file beginning by "bague". This separation permit to change the ring position relatively to the rotor. On each ring a different letter is carved (all the others are in relief).

To find back which rotor is associated with which ring, how to mount its ring and which one is it, there is 3 indications on each rotor:
- on the ring side (left) a mark show the tooth on which the 'A' may normally be placed,
- on the large side (right)
- the letter that should be carved on the corresponding ring
- the number identifying the rotor

Note that the teeth's margins are more important here than for the detached letters representing the plug board because they are many teeth to hold the ring and it still must be easy to remove and put back in an another position.

The dividers:

  • internaldisk-30.stl

You should print 3 of it. This objects are fix relatively to the axis, the reflector and the final ring. They have 2 roles: avoid that rotating a rotor made its neighbour rotate too and display the rotor's states (and the machine's one). In the case below, the rotor's state is "Q" and, as it's the engraved letter, next time you'll rotate it you'll need also to rotate its left neighbour.

Divider on the engraved letter: time to rotate its left neighbour

The reflectors:

  • reflector-B-30.stl
  • reflector-C-30.stl

That's the parts that ultimately link each letter with its cryptographic partner since the rotors only make substitutions: you can make a very minimalistic version with just a reflector and the final ring (without rotor or substitution). By the way it was an historical weakness of this machine that never a letter was represent by itself! Curiously, it seem that there is no version A: just B and C!

Rotor

The axis:

  • axis-30.obj
  • axis-small-30.obj
  • bouchon-30.obj

"axis-30" object is coupling the "active" parts, letting rotors turn freely around it but not permitting the reflector, the dividers and the final ring to do so. It has 3 straight grooves parallel to its axis forming 3 different angles so that reflectors, the final ring and the dividers can only be inserted into the good position.

"axis-small-30" is a smaller version of "axis-30" to store the spare parts when the enigma machine is build: a reflector and 2 rotors.

"Bouchon" is the French for cover or plug. So, as you guess, the "bouchon-30" objective is closing the axis to maintain the machine's integrity after it's assembling.

Axis with a cut stopper

Axis are hollowed to manage a discrete storage that is a must have for an enigma !

Usage:

Setup:

Simplified enigma exploded-view

First things first, you should choose your reflector and put it on the empty axis. Next you have to choose your rotors and also put them on the axis with theirs dividers and rings as shown above on the exploded view of a simplified enigma (having only 2 rotors). Put the final ring and move the detached letters to mark the substitutions (as for "B-Z" and "C-Y" couples or the lake of it as for the "A" on the illustration above). Screw the stopper and finally place the rotors on the initial states you choose.

Fully assembled enigma

Ciphering and deciphering:

Ciphering and deciphering are done the very same way.

  1. First, rotate the rightmost rotor of 1 position; if, doing so, the carved letter leave the status position: rotate 1 position the rotor at the left. the same rule apply to the central rotor.
  2. Search the letter you have to treat (to encrypt or to decrypt) on right most ring (the one with the detached letters). To do so, search this letter on the neighbour ring with fixed ones: if the movable letter at its right is the same you just find it! If not search the letter you find on the movable ring on the fix one and you'll find the letter you search on the movable and rightmost ring.
  3. Follow the line on the rightmost rotor that begin if front of the letter, continue on the central one and the left one, next on the reflector and finaly go back through left, central and right rotor.
  4. Read the result on the rightmost ring!
  5. Restart from point 1 with the next letter.

Doubts:

Rotation generated by the middle rotor:

I think that when the marked letter pass away, the rule is to rotate it's left neighbour (if it exists). Other sources explain that's the rule only for the right one: for the central one, all the rotor should be rotate. With this second rule, as it's rotation is activated by the rotation of the right one, it make the right rotor always skip the position following the marked letter. This second rule reduce the machine's behaviour complexity while, ironically, increasing its mechanical one (such accidents append with the kriegsmarine's version which extra rotors made the next rotor rotate twice when they made a full turn: resulting in the use of only half of the possible machine's states).

I think the misunderstanding come from the fact that with the first rule, as a rotation of the central rotor is triggered by one of the right one and, if the central rotor was on the marked letter, that made the left one rotate so when the central one leave the marked position all the rotors rotate the same but the rotation of the right one is a cause and the rotation of the left one a consequence.

Rotation of the ring relatively to the rotor:

Here also, it is a complexity problem. Make the ring movable relatively to its rotor, ultimately, only change when the ring will trigger the rotation of its left neighbour. That seem me a important price in term of mechanical complexity and risk of confusion compared to the added cryptographic complexity.

Could the Germans win against Turning's team?

Turning and his team partly won the information battle due to the Germans's strictness lead to had constant behaviours on which Turing's team base its deciphering. One of them is that, as far as I know, all German submarines send meteorology data every mornings with the same enigma settings for every submarines. Messages almost always begin with the same first words.

If they, at first, send 3 random letters with the parameters of the day and them use it as the new machine setting for the rest of the message, I hardly see how Tring's team can decipher it!

Turn first read after:

This is curious at first but probably due to electromechanical constraints.

Direction of rotation:

It seem me logic to follow the alphabetical order but I do not remember having read something explicit about it !

More informations:

The best source I find on Internet :
Crypto Museum

3D printing settings

-

Advertising


Page translated by automatic translation. See the original version.
Issue with this design? Report a problem.

Would you like to support Cults?

You like Cults and you want to help us continue the adventure independently? Please note that we are a small team of 3 people, therefore it is very simple to support us to maintain the activity and create future developments. Here are 4 solutions accessible to all:

  • ADVERTISING: Disable your banner blocker (AdBlock, …) and click on our banner ads.

  • AFFILIATION: Make your purchases online by clicking on our affiliate links here Amazon.

  • DONATE: If you want, you can make a donation via Ko-Fi πŸ’œ.

  • WORD OF MOUTH: Invite your friends to come, discover the platform and the magnificent 3D files shared by the community!


Sharing and downloading on Cults3D guarantees that designs remain in makers community hands! And not in the hands of the 3D printing or software giants who own the competing platforms and exploit the designs for their own commercial interests.

Cults3D is an independent, self-financed site that is not accountable to any investor or brand. Almost all of the site's revenues are paid back to the platform's makers. The content published on the site serves only the interests of its authors and not those of 3D printer brands who also wish to control the 3D modeling market.

100% secure payment by credit card, PayPal, Apple Pay, Google Pay, etc.
View all payment options.