San José State University

CS266: Topics in Information Security

Autumn 2019

CS266: Topics in Information Security

Autumn 2019

Blockchains have emerged as exciting means of achieving decentralized consensus, notably in the realm of
cryptocurrencies and electronic payments. The space has seen rapid methodological advances and melds cryptography,
algorithms, distributed systems, game theory, and more. In this course, we will start with a review of sufficient
cryptography to understand the workings of Bitcoin, including Proof of Work. We will then cover Byzantine
fault-tolerant consensus protocols, various algorithms to prevent Sybil attacks, Merkle trees and other
primitives, “smart contracts,” privacy-preserving techniques, homomorphic encryption, network layer technologies,
Lightning transfers and related methods, zero-knowledge proofs, and application case studies. We will also cover
reasons for global and industrial enthusiasm about the technology, potential for misuse, examples of
vulnerabilities, and governance. Lectures will be supplemented with primary sources and student presentations.

- Lecture 1: Introduction
- Byzantine Generals - I: Slides
- Byzantine Generals - II: Slides
- Cryptography Essentials and Data Structures: Slides
- PoW: Slides
- Bitcoin and Intro to Elliptic Curve Cryptography: Slides
- Intro to Elliptic Curve Cryptography (II) and Smart Contracts Slides
- Proof of Stake Slides
- Smart Contracts Slides
- Validation and Verification Slides
- Segwit, Lightning, Sidechains Slides
- Network Layer Slides
- Schnorr Signatures and MimbleWimble Slides
- Mixing / Tumbling Slides
- Ring Signatures / Monero Slides
- Zero Knowledge Proofs I / Lelantus Slides
- Zero Knowledge Proofs II / zk-SNARKs Slides
- Zero Knowledge Proofs III / Beyond zk-SNARKs and Accumulators Slides
- Wallet Security Slides
- Accumulators Slides
- Visualization and AnalysisSlides
- Forks and Governance Slides
- QA QA
- Verifiable Delay Functions Slides
- Oracles Slides
- DEXs and Shamir Slides
- Cryptoeconomics Slides

- Homework 1, Deadline Oct. 2nd, 2019 (new version, the previous code had an issue with Python 3.x)
- Homework 2, Deadline Nov 20th, 2019