Creating Educational Cryptography Software: A Student's Project - Prof. Krzysztof Gaj, Papers of Cryptography and System Security

A student's project to create educational cryptography software, detailing the challenges encountered during the development process. The student aimed to create a program that allows users to search for and download various classical cryptosystems, generate keys, and use different modes of operation. However, despite the availability of public-domain implementations, the student faced difficulties in compiling the code and creating a windows interface.

Typology: Papers

Pre 2010

Uploaded on 02/10/2009

koofers-user-wivply7qbz
koofers-user-wivply7qbz 🇺🇸

10 documents

1 / 13

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Final Project Documentation
Daniel Orr
ECE 543
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Partial preview of the text

Download Creating Educational Cryptography Software: A Student's Project - Prof. Krzysztof Gaj and more Papers Cryptography and System Security in PDF only on Docsity!

Final Project Documentation

Daniel Orr

ECE 543

Introduction

Although there are times when the popping sounds coming from my joints make me think that I am getting old, it was not long ago that I was in diapers, though I would rather not dwell on that. I can remember when I was still a young child, my older brother came home with a crafty code that he had created at school. He had replaced ordinary alphabetic letters with strange and odd symbols. All messages were rendered completely unreadable. It was amazing. I spent a little time after that creating my own codes with my own symbols. I worked on this for about as long as my child attention span could, and then I put it down for about ten years. But that experience remained in the recesses of my mind. Now, these many years later, it surfaced again as a great curiosity about cryptology. This curiosity has been rewarded with a wealth of available information such as classes and books. However, a good educational software program was not as easy to find. Only recently has the need for educational cryptography software become necessary. As with most technology this last century, cryptography has come a long way. Early in the twentieth century, simple substitution ciphers were the best that were available. These are no longer considered secure, and are in fact considered laughable as secure ciphers. They offer little more than an amusing game for a cryptanalyst to play. Of course, there was little need for cryptography until this century. Before the twentieth century, cryptography was mostly used to secure state secrets by governments and militaries. With the coming of the Information Age, it has become much more critical to have secure cryptosystems. It has even become important for people well outside of the government realm. The widespread availability of ATMs and internet credit card transactions make secure cryptosystems important to almost everyone in this technology era. As a result, there is now a much higher demand for people knowledgeable in security and cryptography. While data security may have been the pursuit of a select few just a hundred years ago, a generous supply of these experts is needed now.

Sample screen shot of current educational software. (available for download from http://teal.gmu.edu/courses/ECE543/lab.htm/)

This project was undertaken to create an update for the labs in the ECE 543 course. This project was undertaken with three major goals in mind.

  1. Cryptosystem Search Find and download any public-domain implementations of the following classic cryptosystems:
  • DES
  • Triple DES
  • DESX
  • Rijndael
  • Serpent
  • Mars
  • RC
  • Twofish
  • IDEA
  • RC
  • Blowfish
  • CAST Each implementation would be tested for speed. The fastest implementation of each cryptosystem would be chosen to represent that cipher. Each of the above ciphers would be included in the program.
  1. Key Generation and Modes Of Operation

Once the source code for these cryptosystems was chosen, a simple program would be written designed to incorporate all of them into functions of one program. From this program, one would be able to choose from and of the ciphers to encrypt and decrypt their files. Key generation would create visible keys that could be analyzed or even changed by the student. Each cipher would also run in four different modes of operation. These modes are set forth by the National Institute of Standards and Technology (NIST, www.nist.gov). While a discussion of the operation of these modes is beyond the scope of this paper, they are available in NIST’s FIPS 81 (http://www.itl.nist.gov/fipspubs/fip81.htm). The encryption algorithm shown in the figures is DES, but the same basic operations would apply to all of the cryptosystems.

(Source: http://www.columbia.edu/~ariel/ssleay/fip81/fips81.html)

(Source: http://www.columbia.edu/~ariel/ssleay/fip81/fips81.html)

  1. Windows Interface A simple Windows Interface would be created. This was to be created for the convenience of the user.

Results Cryptosystem Search The search for the cryptosystems yielded the results found in Table 1:

Table 1 (continued)

DES (cont.) http://www.funet.fi/pub/crypt/cryptography/symmetric/des/des-dist.tar.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/des-karn-jan-1991.tar.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/des.el.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/des.hp48sx.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/des.pl.26-11-91.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/mitchell-des.zip http://www.funet.fi/pub/crypt/cryptography/symmetric/des/muffett-fcrypt.tar.gz http://cryptography.org/crypto/6zVY6Fdt/DES/des386.zip http://cryptography.org/crypto/6zVY6Fdt/DES/des-ka9q-1.0-i386-gnu.tar.gz http://cryptography.org/crypto/6zVY6Fdt/DES/des-ka9q-1.0-portable.tar.gz http://cryptography.org/crypto/6zVY6Fdt/DES/

DESX http://www.funet.fi/pub/crypt/cryptography/symmetric/desx/ekr-desx.tar.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/desx/outer-desx.tar.Z http://www.funet.fi/pub/crypt/cryptography/symmetric/desx/outer-desx.zip

Triple DES http://www.funet.fi/pub/crypt/cryptography/symmetric/des/d3des.tar.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/triple-des.tar.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/d3des.tar.gz http://www.funet.fi/pub/crypt/cryptography/symmetric/des/d3des.zip

Key Generation and Modes of Operation

This part of the project never materialized. All of the cryptosystems were compiled early on in the process. The rest of this paper will discuss the problems encountered in creating this simple program and how the desired results never materialized. The rest of this paper will discuss the difficulties encountered and the reasons they were not resolved. As soon has I had the source code for a few cryptosystems, I began a trial test to compile the results to get some start on the program ahead. Unfortunately, my limits as a programmer were soon apparent as I struggled to compile even a single program. As a UNIX programmer, I first attempted to compile the results on George Mason University’s OSF1 using either g++ or

gcc compilers. I was never able to successfully compile one on this operating system. Looking back on those early attempts, I realize that I should have kept an error log that I could include at this time. I never thought that those results would be my final results. I then moved to the next compiler on the George Mason University computers, Microsoft’s Visual C++. I encountered the same problems, but as I moved away from UNIX and towards Windows, I was transitioning into a world of the unknown. I switched to a new compiler, Borland Builder 4.0. This would be been the ultimate compiler used in this project to create the Windows Interface. Once I had located this compiler, I began to compile my programs on it. For the first time, I was able to compile a program. I was excited by this prospect, but unfortunately, the object code would never link. Each time I attempted to run the linker, I would receive an error “Cannot open file SYSTEM.OBJ”. I was very unfamiliar with this error, and I checked all Borland documentation about it. I was able to find the type of error that it was, but could not alleviate the problem.

Windows Interface

Since I was not able to get the actual programs running, I attempted to learn how to create an interface for the program so I would at least have some start. I followed all the instructions I found in the Borland book and on the Borland help, but I could never get anything going. Below is a picture of the Borland Builder Compiler as I found it installed in the George Mason University Computer Engineering lab:

project for me to do. It was not a good idea to try to teach myself cryptography and a new programming environment all at the same time. However, this project has not been a complete waste. This project has helped to realize what limitations I have as a programmer and that I should not undertake such programs in the future. I have also been able to eliminate programming as a career option.