Skip to content

ECE407

ECE407 (Cryptography) is a 3 credit hour course from both the CS and ECE departments. It counts as a technical elective for EE and CE majors. It is offered in both the fall and spring semesters.

Content Covered

Symmetric Key Cryptography

  • Provable Security
  • One-Time Pad
  • Pseudorandom Functions and Pseudorandom Generators
  • Block Ciphers
  • Message Authentication Codes
  • CPA and CCA Security
  • Cryptographic Hash Functions

Public Key Cryptography

  • Hardness Assumptions
  • Basic Group Theory
  • Key Exchange
  • Digital Signatures
  • RSA Cryptosystem
  • Random Oracle Model

MPC and ZKP

  • Zero Knowledge Proofs
  • Multi Party Computation
  • Garbled Circuits
  • Secret Shares

ECE407 is meant to be an undergraduate introduction to modern cryptography. It first covers symmetric key cryptography, which answers the question "How do two parties communicate securely?". This includes topics like one-time pads, perfect secrecy, and PRFs and PRGs. Next it covers public-key crytography, which expands on symmetric-key cryptography but allows for multiple parties to communicate with one. This covers topics like the RSA cryptosystem and key exchange protocls. The course covers some math topics like group theory and finite fields as a basis for public-key schemes. Finally, the course covers multi-party computation and zero-knowledge proofs, which answer the questions "How do I prove that I know the answer to a problem without showing the answer?" and "How do two parties jointly compute a function over private inputs?".

Prerequisites

CS225 and ECE374 are the only official prequisites for this course. CS225 is useful because most homeworks have a small coding portion that requires students to know how to write C++. ECE374 is required because it is important to be able to analyze the runtimes of algorithms, as well as understand reductions and NP-(hardness/completeness). ECE313 may also be helpful although not necessary, as security definitions are often written in terms of probabilities. It is doable to take 407 at the same time as 374, as 374 only helps understand the formal definitions a bit more, however it is not necessary to do well in the course.

When to Take It

ECE or CS students should take ECE407 whenever they feel like it! This is a relatively easy tech elective, that can be taken alongside harder classes. Students who enjoyed 374 will probbaly enjoy 407.

Course Structure

Note that these grading schemes and course structure are subject to change depending on the semester and professor.

As of Fall 2023, ECE407 has mandatory attendance 3 days a week worth 10% of ones grade. 10% is also based on scribe notes that students must write for one lecture. Outside of class, 407 has a fairly light workload, consisting of only 4-6 homeworks throughout the semester worth 50% of the total grade. The homeworks aren't that difficult, and lots of help is given in office hours for anyone who needs it. The last 30% is from the final.

Instructors

Most recently this class has been taught by David Heath.

Course Tips

ECE407 can be a conceptually difficult course, as there are lots of different definitions introduced, and it is necessary to keep track of how they all relate to each other. Go to office hours to solidify your understanding of basic topics like security definitions before you get overwhelmed with content.

Life After

Students who enjoyed multi-party computation should look into taking the Secure Computation section of CS598.

Infamous Topics

  • Group Theory. Some basic group theory is used to construct schemes for public key cryptography. This can be difficult for students without a strong math background.
  • Simulators. Simulators are used in different proofs and security definitions throughout the last third of the course. They can be very difficult to understand, especially in malicious multi-party computation.

Resources