Tabula Prava Password Generator

© Francisco Ruiz, 2017

This page illustrates how a "Tabula Prava" (Latin for "crooked table") can be used to generate a secure password from a "challenge" text, such as the name a website, using only human-computed operations. It is a combination of the "alphabet" algorithm to generate a mixed alphabet from common text and a variation of the keystream-making process of the FibonaRNG cipher. The name derives from "Tabula Recta" (straight table), a square filled with letters, invented centuries ago, which is used in all phases of the process with small but important modifications.

The algorithm has these main steps:

  1. For maximum security do the first two steps, otherwise start at step 3. Write the key phrase, minus spaces, diacritic marks, and punctuation, in three rows. For best results, there must be at least 150 letters so that each row contains 50 letters. If the text is too short, repeat it until you get 150 letters in three rows of 50. If longer than 150, it will be truncated.
  2. Combine the letters in each column of the table just formed, using a straight Tabula Recta like the one below, this way: look up the first letter at the top, then go down until the second letter is found, then left or right until the third letter is found, and then finally read the result at the top, and write it down. Examples: H + K = D; H + K + T = Q. Divide the result into two groups of 25 letters.
  3. For medium security, use the key phrase directly, divided into two parts, instead of the result of step 2. Now convert the first part into Mixed Alphabet 1 this way: 1, write down new letters in the order they appear; if a letter in the has already been written, write instead the first letter before it in the straight alphabet that is still available (wrap around to the end if needed); 2, then write the alphabet letters still available in reverse alphabetical order. Then do the the same with the second part in order to produce Mixed Alphabet 2. Write Mixed Alphabet 1 at the left and right sides of the Tabula Prava, and Mixed Alphabet 2 at the top and bottom. If you are going to be using this key phrase for a while, keep the Tabula Prava (or just the mixed alphabets) in a safe place so you don't have to repeat these steps again and can start with step 4.
  4. Now write the challenge text (perhaps the name of the website where you want to log in) without spaces or diacritics, and then write the last letter below the first, to start a working table made of two rows.
  5. Do the following operation for each pair of letters (top and bottom) on the working table: look up the top letter at the top of the Tabula Prava (with mixed alphabet 2 at its heading), then go down that column until you find the bottom letter, then left or right to read off the result (at mixed alphabet 1), and write that letter in the next available spot on the bottom row of the working table. When you have done this for each pair the bottom row should be one letter longer than the top row. The result is the bottom row, leaving out the first letter.

Tabula Recta

  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  
---------------------------------------------------
A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | A
B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A | B
C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B | C
D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C | D
E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D | E
F | F G H I J K L M N O P Q R S T U V W X Y Z A B C D E | F
G | G H I J K L M N O P Q R S T U V W X Y Z A B C D E F | G
H | H I J K L M N O P Q R S T U V W X Y Z A B C D E F G | H
I | I J K L M N O P Q R S T U V W X Y Z A B C D E F G H | I
J | J K L M N O P Q R S T U V W X Y Z A B C D E F G H I | J
K | K L M N O P Q R S T U V W X Y Z A B C D E F G H I J | K
L | L M N O P Q R S T U V W X Y Z A B C D E F G H I J K | L
M | M N O P Q R S T U V W X Y Z A B C D E F G H I J K L | M
N | N O P Q R S T U V W X Y Z A B C D E F G H I J K L M | N
O | O P Q R S T U V W X Y Z A B C D E F G H I J K L M N | O
P | P Q R S T U V W X Y Z A B C D E F G H I J K L M N O | P
Q | Q R S T U V W X Y Z A B C D E F G H I J K L M N O P | Q
R | R S T U V W X Y Z A B C D E F G H I J K L M N O P Q | R
S | S T U V W X Y Z A B C D E F G H I J K L M N O P Q R | S
T | T U V W X Y Z A B C D E F G H I J K L M N O P Q R S | T
U | U V W X Y Z A B C D E F G H I J K L M N O P Q R S T | U
V | V W X Y Z A B C D E F G H I J K L M N O P Q R S T U | V
W | W X Y Z A B C D E F G H I J K L M N O P Q R S T U V | W
X | X Y Z A B C D E F G H I J K L M N O P Q R S T U V W | X
Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X | Y
Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y | Z
---------------------------------------------------
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  

Step 1. Enter key phrase

Key Phrase

 

Step 2. Write as three rows

Spaces, punctuation and diacritics are removed, and the text is written into three rows. Then each column is combined to yield a single letter through "serpentine" operations on the Tabula Recta.

Processed Key Phrase


--------------------------

 

Step 3. Derive Mixed Alphabets

Extract new letters first, or the immediately prior available letter if repeated. Complete the alphabet with the remaining letters in reverse order. Alphabet 1 is made with the first 25 letters, Alphabet 2 with the next 25. If you already have the alphabets or wish to use the key phrase directly to make the alphabets, you can write them in the boxes below (alphabets will be made when you type in the challenge text):

Mixed Alphabet 1

Mixed Alphabet 2

Place Alphabet 1 on the left and right sides of the Tabula Recta, Alphabet 2 on the top and bottom, resulting in the Tabula Prava. If you feel reasonably safe, print it and keep it in your wallet so you can skip the preceding steps from now on:

Tabula Prava

  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  
---------------------------------------------------
A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | A
B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A | B
C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B | C
D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C | D
E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D | E
F | F G H I J K L M N O P Q R S T U V W X Y Z A B C D E | F
G | G H I J K L M N O P Q R S T U V W X Y Z A B C D E F | G
H | H I J K L M N O P Q R S T U V W X Y Z A B C D E F G | H
I | I J K L M N O P Q R S T U V W X Y Z A B C D E F G H | I
J | J K L M N O P Q R S T U V W X Y Z A B C D E F G H I | J
K | K L M N O P Q R S T U V W X Y Z A B C D E F G H I J | K
L | L M N O P Q R S T U V W X Y Z A B C D E F G H I J K | L
M | M N O P Q R S T U V W X Y Z A B C D E F G H I J K L | M
N | N O P Q R S T U V W X Y Z A B C D E F G H I J K L M | N
O | O P Q R S T U V W X Y Z A B C D E F G H I J K L M N | O
P | P Q R S T U V W X Y Z A B C D E F G H I J K L M N O | P
Q | Q R S T U V W X Y Z A B C D E F G H I J K L M N O P | Q
R | R S T U V W X Y Z A B C D E F G H I J K L M N O P Q | R
S | S T U V W X Y Z A B C D E F G H I J K L M N O P Q R | S
T | T U V W X Y Z A B C D E F G H I J K L M N O P Q R S | T
U | U V W X Y Z A B C D E F G H I J K L M N O P Q R S T | U
V | V W X Y Z A B C D E F G H I J K L M N O P Q R S T U | V
W | W X Y Z A B C D E F G H I J K L M N O P Q R S T U V | W
X | X Y Z A B C D E F G H I J K L M N O P Q R S T U V W | X
Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X | Y
Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y | Z
---------------------------------------------------
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  

Step 4. Challenge preparation

Challenge text

Here is where we input the challenge text, which is converted to the following after spaces, punctuation and diacritics are removed, and everything is turned into lowercase:

Processed Challenge

 

Step 5. Encryption

Now we generate the table below. The top row and the first letter of the bottom row are from the challenge, the second to last characters of the bottom row are the output Password. The process to make it is described above.

Work table

Information about output randomness will appear here

Finally, we remove the first letter from the bottom row to obtain the Password, displayed in the box below.

Password