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
|