ECE 404: Introduction to Computer Security

Class Notes

The notes for this class are available to the public at https://engineering.purdue.edu/ece404. They are very detailed, so I will give an overview of what we did. This does not include everything because there was a lot of content we covered.

Key Points

  • Cryptography
  • Brief History of Ciphers
  • Feistel Structure
  • Finite Fields
  • Modular Arithmetic
  • Polynomial Arithmetic
  • Symmetric Cryptography
  • Public Key Cryptography
  • DES
  • AES
  • RSA
  • Encryption Modes
  • Needham-Schroeder
  • Kerberos
  • Diffie-Hellman
  • SHA-2
  • SHA-246
  • Signing Messages
  • Systems
  • IP/TCP
  • DOS/DDOS/SYN-Flood
  • Port and Vulnerability Scanning
  • DNS
  • DNS Cache Poisoning
  • Packet Filtering (iptables)
  • PGP
  • IPSec
  • SSL/TLS
  • Tor
  • Peer-to-Peer Networks
  • Password Hashing
  • Dictionary Attacks
  • Rainbow-Table Attacks
  • Buffer Overflows
  • PHP and SQL injection
  • Cross-Site Scripting
  • Worms, Viruses, and Trojans
  • Social Engineering
  • Spam
  • Phishing

Course Work

The professor for this course does not want us to post our solutions online, so I will describe the coursework here.
  1. Implement DES and encrypt an image in code-book mode
  2. Implement AES
  3. Encrypt an image with AES in counter mode and creating a cryptographically secure pseudo-random number generator using AES
  4. Implement RSA and crack a weak version of RSA
  5. Implement SHA-256
  6. Implement a port scanner and a SYN-flood attack
  7. Create a firewall on Linux using iptables
  8. Exploit and secure a buffer overflow condition
  9. Write a Email filter for procmail

1 and 3: Encryption of Images in Different Modes

I encrypted the same image in both code-book and counter modes in order to show why code-book was insufficient. Bellow are the two encrypted images. The one in code-book mode can still be somewhat made out, while the second is completely random. Although these are encrypted with 2 different algorithms (AES and DES) it does effectively show the need for encryption modes beyond code-book.
Code-Book Mode Encrypted Image Counter Mode Encrypted Image

4: Cracking a Weak Version of RSA

For this I worked on finding the message from an RSA keys with a public exponent of three. If the same message was encrypted with three different keys with public exponents of three the message can be recovered by the Chinese-Remainder-Theory.

6: Port Scanner and SYN-Flood

Both the port scanner and SYN-Flood attack were implemented in Python using scapy. My implementation of the port scanner also included sending "RST" packets to close the half open connections.