Cryptography COSC 4301-01/COSC 5340-01 Summer 2006 Instructor: Dr. Lawrence J. Osborne Office: Maes 201 Phone: (409) 880-8775 E-mail: ljosborne@my.lamar.edu Office Hrs: MWF 2:30 -- 4:00 p.m. Department Website http://cs.lamar.edu/osborne Class Schedule MTWRF 9:35 AM --10:55 A.M. Maes 111 Course Description In this course we will survey some contemporary cryptographic methods and the theory behind those methods. We start with an introduction to the basic structure and definition of a cryptosystem and some intuitive ways of encryption. These intuitive encryption method are either vulnerable to cryptanalysis attacks or simply too expensive for parties to communicate. Then, we will move into several protocols that are widely used in contemporary cryptosystems such as DES, AES, RSA, ElGamal, Elliptic Curve. Since the greatest fun here is to understand the theory behind those modern cryptosystems and number theory is the key foundation that builds up the entire enterprize, we will spend a great deal of time on the subject before we move into any subtle cryptosystem. Besides number theory, the subject in fact intimately relates to many other disciplines such as algorithm analysis, theoretical complexity theory, and machine learning. We will also scratch these touches in the class. Nevertheless, this is not a pure theoretical course, students will be asked to implement several cryptographic algorithms, analyze them, point out the weakness, attack peer student's cryptosystem or some ciphertexts given by the instructor as programming assignment. Programming Language C++ Prerequisites Data Structures, Algorithm Analysis, Discrete Math, Mature C++ programming skill. Textbooks -- Required ! Introduction to Cryptography with Coding Theory,} by Wade Trappe and Lawrence C. Washington, Prentice Hall, 2nd Edition , 2006 Reference Books: Cryptography: Theory and Practice, Douglas Stinson, Chapman and Hall; 2 edition, 2002 Chapter 6, Problems on Discrete Mathematics, Chung-Chih Li Introduction to Cryptography, by Hans Delfs and Helmut Knebl, Springer-Verlag, 2002 Introduction to Algorithms, Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest, The MIT Press, 1989 No makeup-test will be given unless documented evidence of a medical or family emergency is presented to the instructor. And, no test will be given before the scheduled dates and times under any circumstances. Grading: 3 HW Assignments: 45 % Midterm: 25 % Project: 30 % Programming Assignments: About 7 or 8 programming assignments will be given. The weight of each program depends on its difficulty. Students are encouraged to discuss assignments and help each other. However, this does not mean that you can either entirely or partially copy or modify someone else's work. Any form and any degree of plagiarism in an assignment will result in a grade of 0 points on that assignment. Late work assignments will not be accepted unless there is a documented family or medical emergency. Attendance: Attendance is mandatory. Students are responsible for all lecture material and assignments made during class. Also, students should check the Department website and the email regularly for information and announcements. Grading Policy: Percentage 85-100 70-84 60-70 Grade A Excellent B Good C Satisfactory 40-59 Below 40 D F Passing Failure Academic Honesty Cheating, plagiarism, collusion, abuse of resource materials, and their consequences of doing so are defined and described under the section of Academic Affairs in the Student Handbook. Students giving away academic work for an assignment offered for credit to other students working on the same assignment will be considered as guilty as those who turn in another’s work and will receive the same penalty. Students are expected to follow the Computer Science Department Policy on Academic Honesty. Tentative Topics Introduction and Classical Cryptosystems: Secure communication. Attacks to cryptosystems. Classical cryptographic techniques and algorithms. Monoalphabetic and polyalphabetic systems. Mathematical Foundations: Number theory. Finite fields. Primitive roots. Squareroots. Exponentiation and discrete logarithm. Secret-Key Cryptography: Block ciphers and stream ciphers. DES, AES, RC4. Modes of operation. Public-Key Cryptography: One-way functions. Trapdoor one-way functions. Public-key cryptosystems. RSA, Diffie-Hellman, ElGamal, and elliptic curve cryptosystems. Authentication and Digital Signatures: Cryptographic checksums. Hash functions and message-digest functions. Digital signatures. Authentication protocols. Protocols: Digital cash. Sharing and partial disclosure of secrets. Games. Zeroknowledge proof systems. Identification protocols. Key management architectures. Project: The project work involves the implementation of a cryptographic algorithm, method, or a protocol, and its demonstration. A project team consists of one or two individuals. Please follow the guidelines below. Search the Internet and other resources, e.g., books, technical reports, and papers, to select your cryptographic method. Select a computer platform and a language to implement the method. The computer platform examples are PC, Mac, Sun, Palm, etc. The programming language examples are C, C++, Java, Java Script, Matlab, Maple, Mathematica, Assembly Language, etc. You need to devise an acceptable method of verification for the results produced by your implementation. A typical way is to check if the software produces the same set of output strings for a set of given input strings, as provided by a standard document (for example, ANSI, X9, IEEE standards). An important aspect of the project that it needs to have a method of demonstration built into it. I am planning to place your demonstration on the class webpage. 1. Select your method an write a 2-3 line description of the project. 2. Send me your name, project title, and project description by e-mail. 3. After finishing your implementation, submit an electronic copy of the implementation and the demonstration system. Proposal Due Date: Wednesday, June 14, 2006 Project Due Date: Wednesday, July 5, 2006 Example Project Title and Abstract: Title: Hardware Implementation of IDEA (International Data Encryption Algorithm) Members: Gerald Lai <laige@ece.orst.edu> Abstract: In 1973, the National Bureau of Standards (NBS, now known as the National Institute of Standards and Technology, or NIST) selected the Data Encryption Algorithm (DEA, later known as DES) to serve as a common standard. DES was designed at the IBM TJ Watson Research Center at the request of the NBS for protecting sensitive data. It is a block cipher operating on a 64-bit plaintext to produce a 64-bit ciphertext. The symmetric key used is a 56-bit encryption key that was strong at the time. In other words, there are 72,057,594,037,927,936 (or 2 to the 56th power) possible combinations of keys. It was claimed that a message encrypted with DES would take an immensely long time to crack. Yet, despite its sophistication, many future attempts at cracking DES showed significant signs of success. For example, the distributive computing approach of spreading cracking computation power over the Internet earned Rocke Verser and Michael Sanders the prize of the 1997 DES Challenge. DES Challenge II was also cracked the following year. With the invention of the Electronic Frontier Foundation DES Cracker, it was shown that a 56-bit key protection is insufficient against exhaustive search employed with today's technology. Therefore, there was an urgent call for a stronger secret-key encryption algorithm. IDEA was one of the algorithms to answer that call. The International Data Encryption Algorithm (IDEA) was developed in Zurich, Switzerland by James Massey and Xuejia Lai and published in 1990. It operates on 64-bit plaintext and ciphertext blocks with a 128-bit key. IDEA is used by the popular program Pretty Good Privacy (PGP) to encrypt files and electronic mail. Unfortunately, wider use of IDEA has been hampered by a series of software patents on the algorithm, which is currently held until 2011 by Ascom-Tech AG in Solothurn, Switzerland. MediaCrypt offers a royalty-free license for non-commercial use. IDEA is somewhat different from the rest of the symmetric key encryption algorithms in that it uses algebraic operations completely and does without table lookup methods. It employs a modified 4-word Feistel style round function system. The strength of IDEA lies in its modulo multiplication operations and therefore, it relies heavily on modular inversion. In this project, I will design a hardware implementation of IDEA using VHDL. The implementation will be simulated using Mentor Graphics tools. The demonstration system will be available on the web. Some Project Ideas: Polynomial-Time Algorithm for Primality Testing Analysis of the Statistical Cipher Feedback Mode of Block Ciphers Physical One-Way Functions Properties of NTRU Cryptosystem Recent Results on OAEP Security Attacks on RC4 and WEP Modes of Operation Secure Hashing Random Number Generation Message Authentication Password Usage and Generation