About this course
Understand and correctly apply the cryptographic primitives that underpin secure communication, authentication, and data protection.
Teams implement a secure messaging protocol from scratch using correct cryptographic primitives: AES-GCM for symmetric encryption, ECDH for key exchange, Ed25519 for signing, PBKDF2 for password-based key derivation, and X.509 certificate validation for peer authentication. In the second half of the term the same team attacks a deliberately flawed reference implementation to discover and document implementation pitfalls firsthand.
Expected outcomes
- Implement AES correctly — explaining S-box substitution, ShiftRows, MixColumns, and the key schedule — select the right mode (CBC, CTR, or GCM) for each use case, and enforce AEAD with a verify-before-decrypt discipline across all decryption paths.
- Apply asymmetric cryptography (RSA-OAEP, ECDSA, ECDH, Ed25519) and cryptographic hash functions (SHA-256 Merkle-Damgard, SHA-3 Keccak sponge) to construct authenticated encryption and digital signature pipelines using audited libraries rather than hand-rolled primitives.
- Design key derivation schemes (PBKDF2, bcrypt, Argon2id), key exchange protocols (DHE, ECDHE), and PKI hierarchies (root/intermediate CA, X.509 v3 extensions, OCSP stapling, CRL distribution) that enforce forward secrecy and correct certificate chain validation.
- Manage application secrets across their full lifecycle — dynamic credential issuance with automatic expiry, envelope encryption for IaC-co-located secrets, and zero-plaintext architecture — using secrets management tooling to eliminate long-lived credential exposure.
- Audit cryptographic implementations for nonce reuse, padding oracles, timing side-channels, and JWT/OAuth misconfiguration, and evaluate TLS endpoint configurations and cryptographic choices in system designs against known attack classes.
- Select and integrate audited cryptographic libraries (PyCA, PyCryptodome, OpenSSL) for correct protocol implementation, and use offensive tooling (jwt_tool, Hashcat, Cryptohack) to verify that the chosen constructions resist real-world attacks.
Key topics
- Symmetric & public-key crypto
- Hashing & digital signatures
- Key exchange & PKI
- Protocol design pitfalls
Theoretical foundations
The concepts and results this course rests on.
- Block cipher design: substitution-permutation networks, AES round functions (SubBytes, ShiftRows, MixColumns, AddRoundKey), and the AES-128/192/256 key schedule
- Block cipher modes of operation: IV chaining in CBC, keystream generation in CTR, and the GCM authenticated encryption construction with the GHASH polynomial MAC
- Asymmetric cryptography: RSA trapdoor permutation (Euler's theorem, OAEP padding, CRT speedup), ECC discrete-log hardness, ECDSA signing and verification equations, ECDH shared-secret derivation
- Cryptographic hash functions: Merkle-Damgard strengthening and the SHA-256 compression function; Keccak sponge construction (SHA-3); collision, preimage, and second-preimage resistance; length-extension vulnerability in MD-family hashes
- Digital signature unforgeability: RSA-PSS, ECDSA, and Ed25519 (EdDSA) signing and verification; deterministic nonce derivation; certificate binding and non-repudiation
- Key derivation functions: PBKDF2 (HMAC-based iterative stretching), bcrypt (Blowfish-based cost factor), Argon2id (memory-hard, side-channel resistant); password hashing and key stretching for password-based key derivation
- Diffie-Hellman key exchange: discrete-log hardness in cyclic groups, DHE versus ECDHE ephemeral key generation and erasure, and perfect forward secrecy guarantees
- Public Key Infrastructure: root/intermediate CA hierarchy, X.509 v3 extensions (SAN, EKU, AKI), OCSP stapling, and CRL distribution points; certificate chain validation and trust anchors
- Authenticated encryption with associated data (AEAD): AES-GCM (counter-mode encryption plus GHASH tag), ChaCha20-Poly1305 (stream cipher plus Poly1305 MAC), nonce misuse consequences, and the verify-before-decrypt security requirement
- Application secrets lifecycle: per-request dynamic credential issuance with automatic expiry, envelope encryption for secrets co-located with IaC code, and zero-plaintext architecture for eliminating static long-lived credential exposure
Prerequisites
Course-specific prerequisites:
- Discrete mathematics and number-theory basics
- Algorithms
- Probability
Weekly schedule 13 weeks · lecture + practice
Students lean on AI coding assistants to scaffold and refactor the teaching crypto library, turning math from the lectures into tested Python: prompting for big-integer routines, AES modes, or an ECDH module, then asking the assistant to explain why a draft is not constant-time. They generate Wycheproof-style test vectors and edge cases with AI, and use it to write the attack scripts that break naive variants such as the textbook-RSA padding oracle or a nonce-reuse ECDSA bug. AI is also used to read reduction proofs critically and to compare an implementation against the PyCryptodome and PyCA reference, but every AI-suggested primitive is checked against official test vectors before it enters the library, since a plausible-looking but wrong crypto construction is the central risk the course teaches students to catch.
Student project
Teams implement a secure messaging protocol from scratch using correct cryptographic primitives: AES-GCM for symmetric encryption, ECDH for key exchange, Ed25519 for signing, PBKDF2 for password-based key derivation, and X.509 certificate validation for peer authentication. In the final weeks each team also attacks a deliberately flawed reference implementation to discover and document implementation pitfalls firsthand. The capstone is a coherent, tested, and documented protocol defended with concrete security arguments at each of the three presentations.
Requirements
- Build a working system, not a set of disconnected exercises.
- Be original: a new system that solves a real problem, not a re-implementation of a tutorial or course demo.
- Show real depth: real data, real users or realistic load, and engineering trade-offs that are measured rather than assumed.
- Carry one running project from specification to a deployed, defensible result across the whole term.
- Work in a team of three or four and defend the design at each of the three presentations (weeks 5, 8, and 13).
Example projects
Assessment & grading
Grading is project-based, with no written exam. Teams of three or four present one running project three times.
| Component | What it covers | Weight |
|---|---|---|
| Project · Specification | Presentation 1 (week 5): problem, objectives, and architecture | 20% |
| Project · Interim | Presentation 2 (week 8): the working system demonstrated live | 30% |
| Project · Final | Presentation 3 (week 13): end-to-end demo with oral defense | 50% |
Tools & platforms
- OpenSSL: TLS endpoint configuration, X.509 certificate generation and chain validation, and OCSP stapling
- Python cryptography (PyCA): high-level, audited Python crypto APIs for AES, ECDH, Ed25519, and X.509
- PyCryptodome: low-level cryptographic primitives for implementing and inspecting block cipher modes
- SageMath: number-theory and elliptic-curve experimentation; hash-function internals and collision experiments
- GnuPG: Ed25519 keypair management, PGP signing and verification, and trust-chain exploration
- jwt_tool: JWT attack toolkit for algorithm confusion, none-algorithm bypass, and token manipulation
- HashiCorp Vault: dynamic credential issuance, transit envelope encryption, and secrets lifecycle management
- Hashcat: GPU-accelerated password cracking to benchmark and motivate KDF cost-factor selection
- Cryptohack: interactive cryptography challenge platform for AEAD, block cipher, and protocol attack labs
- OpenPGP.js: web crypto library for RSA and ECC key operations and encrypted messaging in JavaScript
Free online courses
Existing free, video-based courses this course can build on, for self-study or as a teaching basis.
- CourseraCryptography I
- YouTubeIntroduction to Cryptography
In Hebrew · בעברית
- אוניברסיטת בר-אילן, YouTubeקריפטוגרפיה - סדרת הרצאות של פרופ' יהודה לינדל (הרצאה 1)
- אוניברסיטת בר-אילן, YouTubeקריפטוגרפיה - הרצאה 3 - פרופ' יהודה לינדל
- אוניברסיטת תל אביב, חמישי בקמפוסקריפטוגרפיה, לא רק הצפנה
Primary literature
Seminal works for advanced study.
- PaperNew Directions in Cryptography
- PaperA Method for Obtaining Digital Signatures and Public-Key Cryptosystems
- PaperProbabilistic Encryption
- PaperRandom Oracles Are Practical: A Paradigm for Designing Efficient Protocols
- PaperFIPS 197: Advanced Encryption Standard (AES)
- PaperCurve25519: New Diffie-Hellman Speed Records
References
Books and resources link to an online or publisher page.
- TextbookIntroduction to Modern Cryptography
- TextbookA Graduate Course in Applied Cryptography
- TextbookHandbook of Applied Cryptography
- TextbookCryptography Engineering: Design Principles and Practical Applications
- TextbookThe Joy of Cryptography
- DocumentationFIPS 186-5: Digital Signature Standard (DSS)
- DocumentationSP 800-56A Rev. 3: Pair-Wise Key-Establishment Using Discrete Logarithm Cryptography
- TextbookSerious Cryptography, 2nd Edition
Role in each concentration
| Concentration | Role |
|---|---|
| Intelligent Software Systems | Elective |
| Networking & Cyber Security | Core · Semester 1 |
| AI & Robotics | Elective |
| AI and Quantum Computing for Finance | Elective |
| Immersive Systems & Game Development | Elective |
| Defense Technologies & Autonomous Systems | Core · Semester 1 |