We may earn an affiliate commission when you visit our partners.
Course image
Dan Boneh

Cryptography is an indispensable tool for protecting information in computer systems. In this course you will learn the inner workings of cryptographic systems and how to correctly use them in real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems. The second half of the course discusses public-key techniques that let two parties generate a shared secret key. Throughout the course participants will be exposed to many exciting open problems in the field and work on fun (optional) programming projects. In a second course (Crypto II) we will cover more advanced cryptographic tasks such as zero-knowledge, privacy mechanisms, and other forms of encryption.

Enroll now

What's inside

Syllabus

Course overview and stream ciphers
Week 1. This week's topic is an overview of what cryptography is about as well as our first example ciphers. You will learn about pseudo-randomness and how to use it for encryption. We will also look at a few basic definitions of secure encryption.
Read more
Block Ciphers
Week 2. We introduce a new primitive called a block cipher that will let us build more powerful forms of encryption. We will look at a few classic block-cipher constructions (AES and 3DES) and see how to use them for encryption. Block ciphers are the work horse of cryptography and have many applications. Next week we will see how to use block ciphers to provide data integrity. The optional programming assignment this week asks students to build an encryption/decryption system using AES.
Message Integrity
Week 3. This week's topic is data integrity. We will discuss a number of classic constructions for MAC systems that are used to ensure data integrity. For now we only discuss how to prevent modification of non-secret data. Next week we will come back to encryption and show how to provide both confidentiality and integrity. This week's programming project shows how to authenticate large video files. Even if you don't do the project, please read the project description --- it teaches an important concept called a hash chain.
Authenticated Encryption
Week 4. This week's topic is authenticated encryption: encryption methods that ensure both confidentiality and integrity. We will also discuss a few odds and ends such as how to search on encrypted data. This is our last week studying symmetric encryption. Next week we start with key management and public-key cryptography. As usual there is also an extra credit programming project. This week's project involves a bit of networking to experiment with a chosen ciphertext attack on a toy web site.
Basic Key Exchange
Week 5. This week's topic is basic key exchange: how to setup a secret key between two parties. For now we only consider protocols secure against eavesdropping. This question motivates the main concepts of public key cryptography, but before we build public-key systems we need to take a brief detour and cover a few basic concepts from computational number theory. We will start with algorithms dating back to antiquity (Euclid) and work our way up to Fermat, Euler, and Legendre. We will also mention in passing a few useful concepts from 20th century math. Next week we will put our hard work from this week to good use and construct several public key encryption systems.
Public-Key Encryption
Week 6. This week's topic is public key encryption: how to encrypt using a public key and decrypt using a secret key. Public key encryption is used for key management in encrypted file systems, in encrypted messaging systems, and for many other tasks. The videos cover two families of public key encryption systems: one based on trapdoor functions (RSA in particular) and the other based on the Diffie-Hellman protocol. We construct systems that are secure against tampering, also known as chosen ciphertext security (CCA security). There has been a ton of research on CCA security over the past decade and given the allotted time we can only summarize the main results from the last few years. The lectures contain suggestions for further readings for those interested in learning more about CCA secure public-key systems. The problem set this week involves a bit more math than usual, but should expand your understanding of public-key encryption. Please don't be shy about posting questions in the forum. This is the last week of this Crypto I course. I hope everyone learned a lot and enjoyed the material. Crypto is a beautiful topic with lots of open problems and room for further research. I look forward to seeing you in Crypto II where we will cover additional core topics and a few more advanced topics.
Final exam
Congratulations! We are at the end of the course. This module contains only the final exam which covers the entire course. I hope everyone learned a lot during these 6 weeks. Good luck on the final exam and I look forward to seeing you at a future course!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Uses current and industry-standard techniques and algorithms
Develops lower-level and mid-level cryptography skills
Focuses on block ciphers, which are highly relevant to data protection
Teaches both theoretical concepts and practical applications of cryptography
Provides exposure to open problems in cryptography, fostering research skills
Builds from basic principles in number theory and works up to modern techniques

Save this course

Save Cryptography I to your list so you can find it easily later:
Save

Reviews summary

Cryptography fundamentals

Learners say this course is a challenging yet worthwhile introduction to cryptography. With a focus on foundational concepts, this course leverages real-life examples, historical references, and programming assignments to provide a well-rounded understanding of modern cryptography. It covers various topics, including encryption algorithms, cryptographic proofs, and statistical techniques used to evaluate security. The course is structured to build on concepts week by week, making it suitable for learners with a basic understanding of mathematics and computer science.
The course emphasizes the mathematics underpinning cryptography, providing a solid foundation for understanding cryptographic algorithms and their security. While this can be challenging for some learners, it is considered a strength by those who value a deep understanding of the subject.
"I learned a lot from this course material. I find it to be an extremely simplified version of the book Applied Cryptography written by Boneh."
"My main goal is to understand the theory, the mathematical background, etc..."
The course is structured in a logical and progressive manner, building on concepts week by week. This allows learners to gradually develop a deeper understanding of cryptography.
"Lectures are well structured and build on each other in a logical progression."
"The course really allowed me to get a deep understanding of the underlying maths of some of the technologies I am somewhat familiar with."
The course offers optional programming assignments that give learners hands-on experience with cryptographic techniques and allow them to apply concepts learned in the lectures. Learners found these assignments to be particularly valuable for reinforcing their understanding.
"The programming assignments were great to assimilate concepts."
"I gained a deep appreciation for the science, as well as the art, of cryptography from this course."
Professor Dan Boneh is highly regarded in the field of cryptography and delivers the course content with clarity and expertise. Learners appreciate his passion for the subject and his ability to make complex concepts understandable.
"Professor Boneh is extremely illustrative and provides his expert knowledge in a very practical manner."
"I honestly think that the instructor, Dan Boneh, is a brilliant teacher. I would absolutely recommend this class to everyone that wants to know more about cryptography."
The course is widely acknowledged as challenging, with some learners finding it difficult to keep up with the pace and mathematical rigor. However, those who dedicate sufficient time and effort report significant learning gains.
"This course is tough, as in it makes you work hard for understanding the concepts and giving your all."
"I found the course far too difficult to be honest, it requires a lot of reading time to finish the quizes, and I had trouble completing it."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Cryptography I with these activities:
Review probability theory
Solidify your understanding of probability theory, which provides a foundational basis for cryptography.
Browse courses on Probability
Show steps
  • Review textbooks and lecture notes on probability theory.
  • Solve practice problems and complete practice quizzes.
  • Explain key concepts to a friend or family member.
Review and organize course materials
Strengthen your understanding of the course material by reviewing and organizing your notes, assignments, and other resources.
Show steps
  • Review your lecture notes and identify key concepts.
  • Organize your notes by topic or theme.
  • Create summaries or mind maps to reinforce your understanding.
Review Applied Cryptography
Gain a comprehensive understanding of cryptographic algorithms, protocols, and their practical applications by reviewing this authoritative text.
Show steps
  • Read each chapter thoroughly, taking notes on key concepts and techniques.
  • Solve the exercises and review the code examples provided in the book.
  • Discuss the book's content with peers or experts in the field.
Six other activities
Expand to see all activities and additional details
Show all nine activities
Build a glossary of cryptography terms
Enhance your understanding of cryptography by creating a comprehensive glossary defining key terms and concepts.
Show steps
  • Identify important terms from the course materials.
  • Write clear and concise definitions for each term.
  • Organize the terms alphabetically or by category.
Gather a collection of cryptographic resources
Enhance your learning by curating a collection of useful resources, including articles, tutorials, and tools related to cryptography.
Show steps
  • Search for high-quality resources on cryptography from reputable sources.
  • Organize the resources into categories, such as algorithms, protocols, and applications.
  • Share your collection with peers or create a publicly accessible repository.
Engage in cryptography discussions
Deepen your understanding by engaging in discussions with peers, exchanging ideas, and exploring different perspectives on cryptographic concepts.
Show steps
  • Join a study group or online forum dedicated to cryptography.
  • Actively participate in discussions, asking questions and sharing your insights.
  • Collaborate with peers on solving problems or understanding complex concepts.
Implement cryptographic algorithms
Gain practical experience by implementing cryptographic algorithms from scratch, deepening your understanding of their inner workings.
Show steps
  • Choose a programming language and development environment.
  • Select a specific algorithm to implement, such as AES or SHA-256.
  • Follow a tutorial or documentation to implement the algorithm.
  • Test your implementation using sample data and compare the results to known outputs.
Explore cryptography libraries and tools
Expand your knowledge by exploring cryptography libraries and tools, gaining insights into practical applications and industry best practices.
Browse courses on OpenSSL
Show steps
  • Select a popular cryptography library, such as OpenSSL or Crypto++.
  • Review the library's documentation and tutorials.
  • Implement basic cryptographic operations using the library.
  • Experiment with different security protocols and algorithms.
Build a simple encryption system
Apply your knowledge by building a simple encryption system, experimenting with different algorithms and exploring their strengths and weaknesses.
Browse courses on Cryptography
Show steps
  • Choose an encryption algorithm, such as AES or RSA.
  • Design the architecture of your encryption system, including key generation and management.
  • Implement the encryption and decryption functionality.
  • Test your system against common attacks, such as brute-force attacks or chosen-plaintext attacks.

Career center

Learners who complete Cryptography I will develop knowledge and skills that may be useful to these careers:
Cryptographer
A Cryptographer would use the skills learned in this course to build and maintain cryptographic systems to protect sensitive information. This course provides a comprehensive overview of cryptographic systems and their applications. The course covers topics such as data encryption, authentication, and key management. This knowledge would be essential for a Cryptographer who needs to design and implement secure cryptographic solutions.
Software Engineer
A Software Engineer would use the skills learned in this course to develop and maintain software systems that use cryptography. This course provides a deep understanding of the principles and practices of cryptography, which is essential for designing and implementing secure software systems. The course covers topics such as data encryption, authentication, and key management.
Security Analyst
A Security Analyst would use the skills learned in this course to assess and mitigate security risks in computer systems. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and mitigating security risks. The course covers topics such as data encryption, authentication, and key management.
Computer Scientist
A Computer Scientist would use the skills learned in this course to advance the field of computer science by developing new cryptographic algorithms and techniques. This course provides a deep understanding of the principles and practices of cryptography, which is essential for developing new cryptographic solutions. The course covers topics such as data encryption, authentication, and key management.
Information Security Specialist
An Information Security Specialist would use the skills learned in this course to protect information systems from unauthorized access, use, disclosure, disruption, modification, or destruction. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and implementing security measures. The course covers topics such as data encryption, authentication, and key management.
Network Engineer
A Network Engineer may use the skills learned in this course to design and implement secure network protocols. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and implementing security measures in network protocols. The course covers topics such as data encryption, authentication, and key management.
Data Scientist
A Data Scientist may use the skills learned in this course to develop and implement machine learning algorithms that use cryptography. This course provides a deep understanding of the principles and practices of cryptography, which is essential for developing secure machine learning algorithms. The course covers topics such as data encryption, authentication, and key management.
Technical Writer
A Technical Writer may use the skills learned in this course to write documentation on cryptographic systems and their applications. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and writing documentation on these systems. The course covers topics such as data encryption, authentication, and key management.
Forensic Analyst
A Forensic Analyst may use the skills learned in this course to investigate cybercrimes and other computer-related crimes. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and investigating cybercrimes. The course covers topics such as data encryption, authentication, and key management.
Privacy Lawyer
A Privacy Lawyer may use the skills learned in this course to advise clients on legal issues related to cryptography. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and advising clients on legal issues related to these systems. The course covers topics such as data encryption, authentication, and key management.
Risk Analyst
A Risk Analyst may use the skills learned in this course to assess and mitigate risks associated with cryptographic systems. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and mitigating risks associated with these systems. The course covers topics such as data encryption, authentication, and key management.
Compliance Officer
A Compliance Officer may use the skills learned in this course to ensure that their organization complies with laws and regulations related to cryptography. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and complying with laws and regulations related to these systems. The course covers topics such as data encryption, authentication, and key management.
Policy Analyst
A Policy Analyst may use the skills learned in this course to develop policies related to cryptography. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and developing policies related to these systems. The course covers topics such as data encryption, authentication, and key management.
Academic
An Academic may use the skills learned in this course to teach and research cryptography. This course provides a deep understanding of the principles and practices of cryptography, which is essential for teaching and researching this field. The course covers topics such as data encryption, authentication, and key management.
Law Enforcement Officer
A Law Enforcement Officer may use the skills learned in this course to investigate and prosecute crimes that involve cryptography. This course provides a comprehensive overview of cryptographic systems and their applications, which is essential for understanding and investigating crimes that involve these systems. The course covers topics such as data encryption, authentication, and key management.

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Cryptography I.
Provides a comprehensive introduction to modern cryptography, covering both the theoretical foundations and practical applications of the subject. It is an excellent resource for students and professionals who want to learn more about cryptography.
Classic textbook on cryptography and network security. It provides a comprehensive overview of the field, covering both the theoretical foundations and practical applications of cryptography.
Popular history of cryptography. It provides a fascinating overview of the subject, from its ancient origins to its modern applications.
Provides a mathematical introduction to information theory. It valuable resource for students and professionals who want to learn more about the theoretical foundations of cryptography.
Provides a mathematical introduction to algebraic curves and Riemann surfaces. It valuable resource for students and professionals who want to learn more about the mathematical foundations of cryptography.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Cryptography I.
Cryptography
Cryptography: Boolean functions and related problems
Cryptography Principles for IT Professionals and...
Symmetric Cryptography
Unlocking Information Security II: An Internet Perspective
Cutting-Edge Blockchain Security Mechanisms
Basic Cryptography and Programming with Crypto API
Number Theory and Cryptography
Security Architecture and Engineering: Cryptography for...
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser