281 lines
12 KiB
Plaintext
281 lines
12 KiB
Plaintext
|
||
How to use one-time pads for secret communications
|
||
--------------------------------------------------
|
||
|
||
|
||
|
||
There is only one cipher system that cannot be cracked by the FBI or NSA - or by
|
||
anyone else for that matter. That system is the one-time pad.
|
||
|
||
A message encrypted using a one-time pad cannot be broken because the encryption
|
||
key is a random number and because the key is used only once.
|
||
|
||
A proven system. Intelligence agencies routinely use many different kinds of
|
||
encryption systems - ranging from mechanical devices to invisible inks to
|
||
computer software - but for mission critical messages that must be 100% secure
|
||
they always use a one-time pad.
|
||
|
||
At the height of the cold war during the fifties and sixties, Soviet spies in
|
||
the USA used one-time pads to communicate with their controllers, usually
|
||
located inside Russian embassies and consulates. Not a single message was
|
||
cracked by the FBI or NSA. And none of those messages ever will be cracked.
|
||
|
||
Used by the best. The one-time pad system is still being used today by
|
||
intelligence agencies like Britain's MI.6, Germany's BND, France's DGSE,
|
||
Russia's MBRF, and China's Cheng Pao K'o.
|
||
|
||
One-time pads are also being used by resistance groups like Northern Ireland's
|
||
IRA, France's Action Direct, Uruguay's Tupamaros, Algeria's GIA, Lebanon's
|
||
Hezbollah, Peru's Shining Path, and Argentina's Monteneros.
|
||
|
||
Inside this article. This article provides practical information that you can
|
||
use to set up your own one-time pad encryption system. The article describes
|
||
subtle refinements that you won't find in other books or articles. Our
|
||
information comes direct from people with hands-on experience. Our two sources
|
||
are an ex-MI.6 intelligence officer and a former member of Peru's Shining Path
|
||
guerrillas. (Return to our home page and click on About Us for more on this.)
|
||
|
||
After studying this article you will have all the knowledge you need to set up a
|
||
100% secure system of communication that cannot be cracked by the FBI, BATF,
|
||
DEA, NSA, or any other organization.
|
||
|
||
If you're playing by Big Boys' Rules, the one-time pad will keep you out of the
|
||
internment camps.
|
||
|
||
BACKGROUND - Cryptography as a science was originally developed by the Arabs.
|
||
The year 1412 saw the publication of Subh al-a 'sha, a 14-volume encyclopedia
|
||
written by Shihab al-Din al-Qalqashandi. The text described transposition and
|
||
substitution ciphers. The Arabs were light-years ahead of the Europeans because
|
||
their mathematics were more advanced - and cryptography relies heavily on math.
|
||
While the Europeans were still struggling with Roman Numerals, the Arabs had
|
||
already discovered the principle of zero.
|
||
|
||
The word cipher is derived from the Arab word al cifr, literally meaning nothing
|
||
or zero. The one-time pad system itself was perfected in 1917 during the first
|
||
world war. Random keys were written on sheets of paper that were glued together
|
||
to form a pad. Each key was used only once - hence the name, one-time pad.
|
||
|
||
|
||
|
||
Step 1: Create the key...
|
||
|
||
The core of the one-time pad system is the random key. A key is a block of
|
||
numbers that is used to transform your original message (the plaintext) into a
|
||
coded message (the ciphertext). Before you can begin to work with a one-time pad
|
||
system, you need to create a random key. Before you can create a random key, you
|
||
need a method for converting alphabet characters into numbers.
|
||
|
||
The chart below illustrates a workable system that is simple and easily
|
||
remembered.
|
||
|
||
BACKGROUND - Government agencies use code-books containing often-used words and
|
||
phrases that are represented by numbers. For example, rather than encrypting a
|
||
phrase like safe house 4 to 0916 2698 1402 2004 1301, the coding clerk might
|
||
simply use 0219.
|
||
|
||
Spies and agents, on the other hand, cannot afford to carry incriminating
|
||
evidence like bulky code-books, so they use instead the simplified conversion
|
||
method shown below and spell out every word in full.
|
||
|
||
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
|
||
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
||
|
||
Now you're ready to create a key. First, write down a series of random alphabet
|
||
characters, such as HLMSEZRBHPSJOTDW.
|
||
|
||
To make the key easier to work with, break it into blocks of two characters
|
||
each, thus HL MS EZ RB HP SJ OT DW
|
||
|
||
Now use the conversion table shown above to convert the alphabet characters into
|
||
numbers. For example H=08 and L=12, so the first block HL becomes 0812.
|
||
|
||
The result is 0812 1319 0526 1802 0816 1910 1520 0423.
|
||
|
||
You've just created your first one-time pad. This is also called the key.
|
||
(Normally you would create a much longer key than this, enabling you to send a
|
||
number of messages before the key is used up.) As you use the blocks of numbers
|
||
to encrypt messages, you would cross out each block you've used. This will
|
||
ensure that you use a block only once. (We'll simulate crossing out a block by
|
||
marking squares under it.)
|
||
|
||
0812 1319 0526 1802 0816 1910 1520 0423
|
||
####
|
||
|
||
You would normally create two copies of the key and provide one copy to your
|
||
intended recipient.
|
||
|
||
Use the character X to represent a period in your plaintext.
|
||
|
||
|
||
|
||
Step 2: Format your message...
|
||
|
||
Suppose that the message you want to send is MY SECRET.
|
||
|
||
You would next format your message into blocks of two characters each, yielding
|
||
MY SE CR ET.
|
||
|
||
Next, use the conversion chart above to convert the alphabet characters into
|
||
numbers. In the example we're using M=13 and Y=25, so the first block would be
|
||
1325.
|
||
|
||
The entire string becomes 1325 1905 0318 0520. You can now see how using blocks
|
||
makes the text increasingly difficult for anyone to crack, even at this stage.
|
||
|
||
|
||
Guidelines...
|
||
|
||
Rule 1 - Numbers. Spell out all numbers in full in your plaintext. For example,
|
||
365 becomes THREE SIX FIVE.
|
||
|
||
Rule 2 - Negatives. Always add emphasis to the word NOT in your plaintext. For
|
||
example, you would write AGENT ALPHA NOT RPT NOT AVAILABLE FOR MEETING TUESDAY,
|
||
where RPT stands for REPEAT.
|
||
|
||
Rule 3 - Punctuation. Use an X for each period in your plaintext. For example,
|
||
MESSAGE RECEIVEDX SEND MORE INFOX. All other punctuation must be written out in
|
||
full. For example, COMMA.
|
||
|
||
Rule 4 - Termination. End your plaintext with XX. If necessary, add dummy
|
||
characters after XX in order to pad out the message to frustrate cryptanalysis
|
||
and to conclude on a doublet (ensuring the numeric string ends with four
|
||
digits).
|
||
|
||
Use a pointer at the beginning of your message to specify the key so your
|
||
recipient can decrypt the text.
|
||
|
||
|
||
|
||
Step 3: Encrypt your message...
|
||
|
||
We need some way to indicate to our recipient where the key begins, otherwise
|
||
he/she won't be able to decrypt.
|
||
|
||
Remember in our earlier example, we created a key and stroked off (squares) the
|
||
blocks we'd already used. Here's what our key looked like.
|
||
|
||
0812 1319 0526 1802 0816 1910 1520 0423
|
||
####
|
||
|
||
The starting position in the key is at block 1319. So we'll place the string
|
||
1319 at the beginning of our message so the recipient will know how to decrypt.
|
||
The plaintext message of 1325 1905 0318 0520 becomes 1319 1325 1905 0318 0529
|
||
because we place the pointer 1319 at the beginning of the string.
|
||
|
||
We're now ready to encrypt. First we write out the plaintext. Then directly
|
||
below it we write out the key. Then we add the key to the plaintext using
|
||
Fibonicci addition. This means we do no carrying. For example, 9 + 2 would yield
|
||
1 not 11. And 7 plus 6 would yield 3 not 13. Here's how the spy's working sheet
|
||
would look.
|
||
|
||
Plaintext 1319 1325 1905 0318 0520
|
||
Key -- 0526 1802 0816 1910
|
||
Ciphertext 1319 1841 2707 0124 1430
|
||
|
||
The encrypted message 1319 1841 2707 0124 1430 is ready to be sent to our
|
||
recipient. And we can sleep peacefully knowing that it cannot be cracked by
|
||
anyone except the recipient.
|
||
|
||
To decrypt the message, the recipient simply reverses the calculations.
|
||
|
||
|
||
Decrypting the message...
|
||
|
||
To decrypt a message, we simply reverse the calculations. We subtract the key
|
||
from the ciphertext using Fibonicci subtraction. This means we allow no negative
|
||
numbers. We add 10 if required. For example, 2 - 9 would yield 3 (because we add
|
||
10 so that we're able to subtract 9 from 12).
|
||
|
||
The first block in the ciphertext tells our recipient where to start in the key.
|
||
|
||
Here's what the recipient's working sheet looks like.
|
||
|
||
Ciphertext 1319 1841 2707 0124 1430
|
||
Key 1319 0526 1802 0816 1910
|
||
Plaintext -- 1325 1905 0318 0520
|
||
|
||
Here's how we subtract 0526 from 1841.
|
||
|
||
The first column is 1 - 0 = 1.
|
||
The second column is 8 - 5 = 3.
|
||
The third column is 4 - 2 = 2.
|
||
The fourth column is 1 - 6 = 5 (because 11 - 6 = 5).
|
||
|
||
Using the conversion chart described earlier, the recipient converts the string
|
||
of numbers back into alphabet characters. In this example, 13=M and 25=Y, so the
|
||
first block 1325 converts to MY. The string 1325 1905 0318 0520 becomes MY SE CR
|
||
ET.
|
||
|
||
The recipient reformats it to become MY SECRET.
|
||
|
||
|
||
About security...
|
||
|
||
Provided that an eavesdropper cannot get access to either the sender's or
|
||
receiver's key, the one-time pad method is 100% secure. No FBI cryptanalyst will
|
||
ever crack it. No Cray supercomputer running the NSA's cracker software will
|
||
ever break it. Period.
|
||
|
||
|
||
But you need to be prudent about security.
|
||
|
||
Key security. Good security means you must conceal your key in a location where
|
||
you'll know if it's been tampered with. Usually this means carrying it on your
|
||
person at all times.
|
||
|
||
Location security. Good security means choosing private locations to encrypt
|
||
and decrypt your messages. Remember, it's easy for FBI agents or local police to
|
||
install a pinhole video camera above your desk. When choosing a location, be
|
||
creative, be unpredictable, and be quick.
|
||
|
||
SURVIVAL TIP - At the first sign of surveillance you must stop working at your
|
||
desk unless you're absolutely sure there's no way they can gain access to
|
||
install the video surveillance equipment. In a pinch you can work under your
|
||
desk until you implement off-site locations.
|
||
|
||
Disposal security. Good security means destroying your working materials after
|
||
each encryption or decryption. Don't leave anything around for the authorities
|
||
to work with. This usually means shredding and burning - or ingestion. (Yes, eat
|
||
the evidence. It saved Kim Philby's bacon early in his career.)
|
||
|
||
Random means just that. The security of your one-time pad system depends on the
|
||
randomness of the key. Don't use a computer to generate your keys. Do it by hand
|
||
- and be sure to introduce a second element of randomness into your method by
|
||
throwing dice or flipping a coin every now and then while you're creating your
|
||
keys.
|
||
|
||
One-time means just that. Don't use a key more than once. Ever. Even if just a
|
||
few blocks overlap in two different messages, the NSA cracker software will
|
||
shift and compare the ciphertext messages until the statistical frequency of
|
||
characters matches the expected statistics for English language text. Giving the
|
||
NSA an opening like this is tantamount to setting the fox loose in the
|
||
hen-house.
|
||
|
||
The perfect system. When used correctly, the one-time pad system provides
|
||
perfect security for your secret messages. The weakest link is the human
|
||
element.
|
||
|
||
The first four-digit group is a pointer to the starting place in the one-time
|
||
pad.
|
||
|
||
|
||
How to test your skills...
|
||
|
||
Here is a piece of ciphertext and a one-time pad you can use to verify your new
|
||
skills.
|
||
|
||
The one-time pad is 0916 0305 2521 2113 0119 0605 1413 2024 0806 0518 1306 0602
|
||
1710 2022 0410 0804 2301 2116 1512.
|
||
|
||
The ciphertext is 0119 2110 3521 2739 2026 0113 1414 1527 2231.
|
||
|
||
Remember that the first four-digit group in the ciphertext is a pointer
|
||
indicating where to begin in the one-time pad.
|
||
|
||
2110 3521 2739 2026 0113 1414 1527 2231.
|
||
0605 1413 2024 0806 0518 1306 0602 1710 2022 0410 0804 2301 2116 1512.
|
||
|
||
---------------------------------------
|
||
|
||
Copyright <20>1998 Lee Adams. All rights reserved.
|
||
Ascii conversion by: MRF |