I want to generate a truly random one-time pad as fast as possible, but without the use of any electrical or any other complicated device. What is the fastest way to do that?

  • 3
    $\begingroup$ Take 128 coins and put them in a container , shake vigorously for 30 seconds. Reach into the container without looking ( ;-) ) and withdraw the coins one by one , marking down on a piece of paper heads or tails . You will now have a perfectly random 128 bit key. $\endgroup$ – William Hird Jul 19 '18 at 13:04
  • $\begingroup$ How large a OTP are you after? Clearly without electricity, kBytes of material is going to be tricky & boring. $\endgroup$ – Paul Uszak Jul 19 '18 at 21:14
  • $\begingroup$ @PaulUszak I disagree. A dozen 120-sided dice in a box can be used to quickly get a lot of numbers. $\endgroup$ – forest Jul 20 '18 at 4:13
  • $\begingroup$ @PaulUszak OTP should be used to send small text messages. Nearly 100 messages. $\endgroup$ – vasili111 Jul 20 '18 at 8:21
  • 2
    $\begingroup$ @PaulUszak Wait, what? An OTP doesn't have a "security level". A 112,000 bit OTP doesn't have a "security level" of $2^{112000}$, because it's already information-theoretic secure... $\endgroup$ – forest Jul 20 '18 at 22:15

We are going to generate a large number of truly random letters for use as a one-time pad (sometimes also referred to as Vernam Cipher).

Get your hands on about fifty six-sided dice--they are easy to order from a gaming company--and a shakeable box with a lid, and the box is about 30 centimeters square.

Build a random table: on a piece of paper, draw or print a table with six columns and six rows. Number the columns and rows, 1 to 6. Doing that sequentially should be fine. Put the dice in the box and shake, rattle, twist, and roll--use your own judgment. This step should not be short. Let the dice fall to one side of the bottom of the box and put them in rows of two. Now start filling in your table according to the pairs of dice aligned in the box. Row/Column. 1/4 A, 4/3 B, 5/1 C, etc. Keep going until all letters of your alphabet have been entered. If you are using a Russian alphabet, you will have three empty spaces. If you are using an English alphabet, you will have ten empty spaces.

Generate your key: Shake, rattle, twist, and roll--consult the table to get your results: 5/1... C | 6/2... X | 1/1... P | etc. Repeat. Don't take any shortcuts. Don't look at your results and say they are not random because there are too many of one number next to each other in the box. This is what it can sometimes look like. Don't introduce bias.

Secure your key: physical security is an important issue now. You have to protect that key against compromise. If you can also share that key securely, then the traffic you create will at least have been enciphered with a real one-time pad.

Furthermore: you also have two additional problems--how will you authenticate your message, and will it have integrity?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.