Cryptography

advertisement
Juan Ortega
7/1/11
MSE506
Cryptography Project and Report
Secret Key (Symmetric) Encryption - DES
One of the most well-known symmetric encryption algorithms has to be the Data
Encryption Standard (DES). Before DES, there was no accepted standard encryption method;
this left individual companies to develop their own proprietary algorithms each claiming to be
more secure than the other. Everyone needed an algorithm that was tested by someone they
can trust, and who better to trust than a government agency with a reputation of keeping
secrets – the NSA. To help in the development, in 1972 the National Institute of Standard and
Technology (NIST) settled on a cryptographic algorithm submitted by IBM named DES. NIST
requested the assistance of the National Security Agency (NSA) to be tested and full proofed.
The original key algorithm was 128 bits, but NSA shortens it to 56 bits. Some claim this was
necessary for NSA to install a back-door function in the algorithm, others say because NSA’s
supercomputers we’re not up to the task of cracking 128 bit keys. DES was adopted as the
federal standard for unclassified documents in 1977 and lasted up until 2000 where NIST
selected the Rijndael algorithm to be renamed to Advance Encryption Standard (AES). With
computer power doubling every 18 months, a 56-key key could be brute-forced by today’s
computers in a short amount of time. The DES algorithm was fine, no practical holes have been
found only the small key was the problem. To combat this, the new Triple DES was developed
using 2 separate keys generating a 168-bit key effectively prevent most brute force attempts.
CryptTool is a very powerful tool used for cryptography and cryptanalysis. As you can
see from the small screenshot above, the tool was used to encrypt a line of plaintext under the
window Unnamed1. The lab procedure is very similar to this. Decryption of the ciphertext can
be accomplished by navigating Encrypt/Decrypt -> Symmetric (modern) -> DES (ECB) and by
entering the correct key; otherwise the tool can also brute-force the key by conducting a
cryptanalysis, but this would require a fair amount of time.
Onward to the actual procedure, the Java applet was successfully able to encrypt and
decrypt text in the notepad by generating a random 64-bit key. This is a simple way to
demonstrate the ability to hide text using keys like a lock. By following the procedure, I opened
up the Windows command prompt, navigated to the unzipped DES folder and typed in “java
des” to bring up the applet. Then I have first generated the random key, then opened up
notepad and typed some text inside the file. After saving the file with an .open extension, I used
the Java applet to look for the file, and hit the encryption button. One quick note, the applet
only works if the .open file with text is in the same directory as the applet itself; do not know
why this is necessary. A new file with the extension .close appeared. I opened the new file, and
inside it were random characters not viewable by the notepad. Decrypting the .close file took
the same steps as encrypting it, by entering the right key again and hit decrypt button.
To answer the question as to which ZIP file would be bigger, I have created a 2.5Mb
large.open file and encrypted it to get a 2.5Mb large.close file. Both files are the exact same
size, but differ greatly when compressed. Upon a successful ZIP compression, the plaintext
deflated 99% down to a mere 28K file, the ciphertext on the other hand deflated only 11%
down to 2.2M. Compressors [like ZIP] work by finding observable patterns in the text, it would
be like replacing all words and characters with the number of times each gets repeated. ZIP had
difficulty compressing a ciphertext because all the characters where indistinguishably random,
thus very little patterns were present. Of course other algorithms handle lossless compression
better for ciphertext.
The Standard A.12.3.1, ISO/IEC 27001 Information Security Management Systems
Requirements does not implicitly say what type of symmetric encryption should be used since
upon writing the document, a new type of encryption algorithm [considered to be more secure]
would become available. It does include however, “Key management procedures depend on
the algorithm used, the intended use of the key and the security policy.” As stated previously
DES is really old [1977] and should be considered obsolete. Organizations implementing
encryption for the confidentiality, integrity, and availability of resources should look at DES’s
successor Triple DES, and the many other modern symmetric encryption algorithms.
Public Key (Asymmetric) Encryption
Unlike symmetric key algorithms were only one private key is used for both encryption
and decryption; asymmetric keys use two keys, a private and public key. The public key is freely
available to everyone and anyone; this is because the public key is used for encryption. The
private key however must remain private, as the private key is used for decryption. The first
asymmetric algorithm was developed by Rivest, Shamir, and Adleman who respectfully called it
RSA. Published in the late 1970s, RSA withstood the bombardment of time by factoring larger
and large prime numbers to produce larger keys, and today it is one of the most popular
authentication methods used for electronic commerce protocols throughout the Internet.
The lab procedure is relevant to the first DES lab with some minor differences. Unlike
the first lab, the RSA applet did not have a simple to use point and click GUI; rather it presents
the user with a readline functionality. By starting the command prompt and navigating to the
RSA extracted directly, I was able to start RSA with ‘java RSA 512’. This generated two prime
numbers, and with those a public and private key was formed. The java applet then requested a
message to be typed (plaintext) to be encrypted with the public key (ciphertext). The next part
of the lab was a bit tricky as I am not aware of a tool or site where it displays the amount of
time it took to encrypt/decrypt a message.
In theory, the decryption process should take longer to compute than the encryption
process; but this all depends on the size of the modulus. Because of the lack of tools that
display the time elapse of computation, I had to use two programs together to achieve the
desirable functionality. I have used the time program on Linux, and GPG to encrypt/decrypt
files. The time program that ships default on all UNIX systems displays the amount of time the
specified program took to execute and finish; by combining this with the GNU Privacy Guard
(GPG), I am able to see the amount of time it took to encrypt/decrypt. Commands used:
$ gpg –gen-key
This command creates the public and private keys to be used with RSA.
$ gpg –output <file>.gpg –recipient ‘<email address>’ --encrypt <file>
This command uses RSA to encrypt a file using the public key generated.
$ gpg –output <file> --decrypt <file>.gpg
This command decrypts the RSA encrypted file.
$ gpg –cipher-algo 3DES –c <file>
Uses the symmetric 3DES algorithm to encrypt the file; the user would have to enter a
passphrase.
$ gpg –output <file> –d <file>.gpg
This command decrypts the cipher file. The user again enters the passphrase.
$ time <above gpg command>
The time program shows how long the program [GPG] took to finish.
Table of results:
RSA – 1024 bit key
Encryption
-Size of File- -Time Elapsed-
3DES
Decryption
Encryption
Decryption
-Time Elapsed-
-Time Elapsed-
-Time Elapsed-
72Mb
10.454s
11.942s
18.546s
11.942s
166Mb
38.713s
22.012s
44.654s
22.552s
332Mb
1m15.018s
31.597s
1m13.203s
1m19.657s
617Mb
2m11.306s
1m4.283s
2m35.659s
2m28.897s
The results were not what I expected. Other programs and resources running on my
system might have affected the results. I have used 3DES instead of the regular DES because
GPG no longer supports it. The results for RSA were not consistent; encryption took much
longer to compute than decryption as seen from the third file with 332Mb having the biggest
difference overall. The difference in 3DES were somewhat more consistent; being a symmetric
key, the time elapsed should be the same. Overall the results showed it takes longer to encrypt
a file for an asymmetric like RSA, and somewhat longer for a symmetric like 3DES.
Download