Free course

Cryptography for Developers Course

Use hashes, password hashing, authenticated encryption, signatures, TLS, secure randomness, and key management without inventing cryptographic protocols.

5 modules · 25 lessons · No signup

Prerequisites: Security Fundamentals

~~~

Your progress

of lessons completed.

Course completed.

What you'll learn

Choose and review practical cryptographic operations, formats, libraries, keys, failure behavior, and migration for an application.

Take this course offline

Subscribe to my newsletter to get every free book and course in PDF and EPUB format.

Get the downloads

Course contents

  1. Cryptographic goals

    Choose confidentiality, integrity, authenticity, and established high-level constructions.

    1. Choose the security property
    2. Separate encoding, hashing, and encryption
    3. Threat-model encrypted data
    4. Never invent cryptography
    5. Check your understanding: cryptographic goals
  2. Hashes, passwords, and MACs

    Use fingerprints, password hashing, salts, work factors, and keyed message authentication.

    1. Use hashes for fingerprints
    2. Hash passwords slowly
    3. Understand salts and work factors
    4. Authenticate messages with a MAC
    5. Check your understanding: hashes, passwords, and macs
  3. Symmetric encryption

    Use shared keys, authenticated encryption, nonces, associated data, and envelope encryption.

    1. Understand shared-key encryption
    2. Use authenticated encryption
    3. Handle nonces and associated data
    4. Use envelope encryption
    5. Check your understanding: symmetric encryption
  4. Public-key cryptography

    Understand key pairs, agreement, signatures, certificates, and authenticated TLS.

    1. Understand public and private keys
    2. Agree on shared keys
    3. Sign and verify data
    4. Understand certificates and TLS
    5. Check your understanding: public-key cryptography
  5. Keys and operations

    Generate, store, rotate, revoke, version, migrate, and review cryptographic systems.

    1. Generate keys securely
    2. Store and limit keys
    3. Rotate, version, and revoke keys
    4. Complete a cryptography review
    5. Check your understanding: keys and operations