textfiles/uploads/vernamtut.txt

157 lines
9.8 KiB
Plaintext

?++++++++++++++++++++++++++++++++++++++++++++++++++++++?
]|[ [-=- SOLDIERX.COM Presents -=-] ]|[
+++++++++++++++?+++___________________________________________________+++?+++++++++++++++
\\////////////////A Guide to Vernam OTP Encryption Without A Computer\\\\\\\\\\\\\\\\//
\\\\\\\\\\\\\\\\\___________________________________________________/////////////////
\\::::::::::::::::::::::::::::::::::::: by :::::::::::::::::::::::::::::::::::::://
\\xxxxxxxxxxxxxxXXxxxxxxxxx?-=-][- Durandal -][-=-?xxxxxxxxxxxxxxXxxxxxxxxxxx//
\\::::::::::::::::::::::::::::::::::: of :::::::::::::::::::::::::::::::::::://
\\ SOLDIERX.COM //
\\ SEP 2008 //
\\ NOBODY CAN STOP INFORMATION INSEMINATION //
?=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=?
**********************************************************************
| The author hereby grants permission to reproduce, redistribute, |
| or include this file in your file section, electronic or print |
| newletter, or any other form of transmission that you choose, as |
| long as it is kept intact and whole, with no ommissions, delet- |
| ions, or changes. (?)2008 SOLDIERX.COM - http://www.soldierx.com |
**********************************************************************
While there is a wealth of knowledge pertaining to the application of encryption and
steganographic techniques in the realm of computers, very little has been said about secure
encryption techniques that can be implemented on paper. The two main arguments that come to
mind are "why would you ever want to encrypt something on pencil and paper?" and "how can
this possibly be secure if you're performing the calculations in your head?" While the
latter's explanation can be found with a simple google search, the former question requires
a bit more imagination. One situation where such encryption would be warranted is in the
passing of messages to and from individuals who have a high probability of having their mail
monitored and have no computer access (aka prison and certain humanitarian missions).
Another reason to use these pads is that while an almost infinite number of forensics tools
exist to recover data off hard drives, the industry has yet to come up with a way to recover
a burnt/swallowed page of paper.
Secure communication using this cipher requires a little forethought. Obviously
both parties need to have knowledge of the key used in its creation, and the key should be
destroyed promptly after use to prevent reuse or capture. In the case of preissued keys
(the preferred method), strict chain of custody must be maintained to guarantee a key's
sanctity. In the event key pads are not accessible, a key can be made using a mutually known
secret (like a bible verse or poem). It should be stressed that using a passage as a key
should only be used if absolutely necessary, as it could conceivably create recognizable
patterns (besides being an obvious candidate for a cryptanalyst to try). A simple way to
create sufficiently random preshared keys is to use the pieces from a Scrabble game.
Before you can begin to encode a message using this algorithm, you must first
perform Russian Conjugation on the message (and the key if it's a passage). This is simply
the process of capitalizing letters and removing all headers, punctuation, spacing, and any
other unnecessary information that could create a recognizable patterns. The rule of thumb
is to not transmit any more information than absolutely necessary, and keep the message as
short as possible.
If our message is:
Party at Bob's House Tonight!!!!!
and our key is:
ASOIE NTSLE ITHGS GKLSA TLKGH SGIST
Then its corresponding conjugated form would be:
PARTYATBOBSHOUSETONIGHT
Now we perform a few formatting operations to both minimize errors in encoding and
conceal the size of the message. We start by adding a space every five characters
(like the preshared key above) and pad the difference in size between the message and the
key with predetermined garbage characters. Make sure that the key is at the very least the
same number of characters as the message. If the message is ever larger than the key, break
it up into smaller parts and use a different key for each part.
In the end our message will look like:
PARTY ATBOB SHOUS ETONI GHTSX SXSXS
And our key will look like:
ASOIE NTSLE ITHGS GKLSA TLKGH SGIST
Now for the fun part: the actual algorithm is a mod 26. The "correct" way to do
this is to give each letter of the alphabet a value with A being 1 and Z being 26, adding
the value of the each letter of the message to its corresponding character in the key, then
subtracting 26 in the event that the sum is 26 or higher (basically dividy by 26 and keep
the remainder). While this is the textbook way to perform the cipher, in practice I've
found a couple easier ways to obtain the same ciphertext. The easiest of these is called
a Vigenere Square. To make this, we make a grid that is 26 by 26 squares. We put each
letter of the alphabet both above the grid and to the left of it, then start filling the
grid in by putting a "B" in the topleft grid square. We then proceed to write in each
successive letter of the alphabet in every direction until we get a table that looks like
this:
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 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 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 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 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 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 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 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 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 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 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 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 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 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
Now we just find the message character along one side, its corresponding key character
along the other, and find where they meet on the grid. Doing this obtains the following
ciphertext:
QTGCD ONUAG BBWBL LEAGJ ATEZF LEBQM
To decrypt the message, we simply perform the operation in reverse. Find the key character
along the side of the table, then find the cipher character in the table, and look straight
up to see what letter creates that cipher value. Even with the Russian Conjugation in
place, it is possible to read and understand the message.
Vernam OTP isn't the only One-Time Pad around, but it's by far the simplest to
implement when needed. It does have its limitations (no numbers), but this can be remedied
by spelling numbers out or having a system of CEOI codes in place to represent them. Use
your imagination and make sure everyone using the pads is in agreement with whatever codes
you decide to implement. The most important considerations are that keys should be as
random as possible, they must be guarded by responsible parties at all times, and they must
be destroyed immediately after use. If you haven't picked up on it by now, each pad should
have an identifying mark on it so the recipient of the encoded message knows which pad to
use. This shouldn't need to be said, but we live in a world where coffee cups have to say
"CAUTION HOT" on them.
Hopefully, nobody reading this tutorial will ever be in a situation where they are
forced to use it, but that doesn't mean you shouldn't prepare for the worst while hoping for
the best. If used properly, these One-Time Pads are limited only by the randomness of your
key creation method. If you should require a higher level of security, you can use the
table above to create a false key after the message has been encoded. This false key should
allow the ciphertext to be decrypted into a less incriminating message containing false
information. To do this, figure out the message for the false key, then use the steps for
decryption using the ciphertext and the false message. The resulting characters will make
up the key necessary to obtain that message. Doing this provides the highest level of
security, while at the same time proving the absolute deniability afforded by the algorithm.
_____________________________________________________________________
?=------------------------------]-?-[------------------------------=?
\\ THIS FILE WAS A SOLDIERX RELEASE //
\\ http://www.soldierx.com //
\\ NOBODY CAN STOP INFORMATION INSEMINATION //
?=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=?