CS 178 Introduction to Cryptography

CS 178 Introduction to Cryptography

Winter Term 2020
Department of Computer Science
University of California Santa Barbara


  • Instructor: Professor Koç         → Koç is pronounced as "Coach"  

  • Class Schedule: Monday, Wednesday 2:00-3:15pm
  • Classroom: Girvetz 2128

  • Instructor's Office hours: Tue 4:00-5:30pm
  • Instructor's Office: Phelps 1408 (Koç Lab - map)

  • The TAs are
    Kalyan Garapaty - kalyan@ucsb.edu
    Suriya Dakshina Murthy - suriya@ucsb.edu

  • TA Office Hours are
    Tuesday 2:00-4:00pm Suriya
    Thursday 12:00-2:00pm Kalyan

  • TA Office: Trailer 936

  • Discussion Schedule and Room:
    Thursday 2:00-2:50pm; Trailer 387 1015 (Kalyan)
    Thursday 3:00-3:50pm; Trailer 387 1011 (Suriya)

  • Please join the cs178 Piazza page for class discussions.  
  • Check the class website, the Piazza page, and/or your email once a day.
  • Course material is in the folder docx  

  • The grades:   cs178.htm   Code = 2047*StudentPerm mod 9973  

Homework Assignments

There will be 5 homework assignments during the term, and they are to be uploaded via Dropbox. The links will be provided. Submit your homework assignment as a single PDF file. You may also handwrite and submit a scanned image (as a single PDF). Do not submit unreadable, poor phone camera images; if you do, we will not grade them and your grade will be 0.
No late homework is accepted.  
  • Homework Assignment 1: (due 5pm on Monday Jan 20)
    From the Rubinstein book, answer the following questions:
    (Page 7: 2.4 Problems) 2, 4, 6
    (Page 52: 5.6 Problems) 1, 5
    (Page 62: 6.4 Problems) 1, 2

  • Homework Assignment 2: hw2.pdf - due 5pm on Monday Feb 3

  • Homework Assignment 3: hw3.pdf - due 11pm on Saturday Feb 15  

  • Homework Assignment 4: hw4.pdf - due 11pm on Saturday Feb 29  

  • Homework Assignment 5: hw5.pdf - due 11pm on Saturday Mar 14  

Midterm and Final Exams

The Midterm exam date: Wednesday Feb 26  

The Take-Home Final exam is here: final.pdf
The deadline for submission is 10pm on Monday March 16.
Link for submission: is closed now  

Weekly Course Plan

  • Week 01: Cryptography, cryptanalysis, cryptology
  • Week 02: Classical ciphers, Shift, Affine, Hill, Vigenere, Affine Block Ciphers
  • Week 03: Number theory, stream ciphers, one-time pad, Vernam, RNGs
  • Week 04: LCGs, LFSRs, and CAs
  • Week 05: DES, perfect secrecy, basic modes of operation, 3DES, time-memory tradeoff
  • Week 06: Groups, finite fields, AES, advanced modes;
  • Week 07: RSA Algorithm
  • Week 08: Factoring, primality testing, discrete logs, Diffie-Hellman
  • Week 09: Hash functions and digital signatures
  • Week 10: Cryptographic protocols

Rijndael Animator & Inspector

Crypto Journals and Archives

Useful Crypto Links

Crypto Documents



This is an introductory course on methods, algorithms, techniques, and tools of cryptography. We study in detail algorithmic and mathematical aspects of cryptographic methods and protocols, such as secret-key cryptography, public-key cryptography, hash functions, and digital signatures. We show how these techniques are used to solve particular data and communication security problems. This course material is useful for computer science, electrical engineering, and mathematics students who are interested in learning how cryptographic algorithms and methods are embedded in information systems, providing confidentiality, integrity, non-repudiation, and authenticity of stored and transmitted digital data.


  • Secret-Key Cryptography: Symmetric and asymmetric systems; cryptanalysis; alphabets and words; permutations; block ciphers; stream ciphers; matrices and linear maps; Vigenere, Hill and permutation ciphers; perfect secrecy; birthday paradox; Vernam cipher and one-time pad; deterministic and true random numbers; DES and AES.
  • Mathematical Background: Integers; cost of arithmetic operations; gcd and extended gcd computation; Euclidean algorithm; factoring into primes; modular arithmetic; groups, rings, and fields; orders of elements, groups and subgroups; exponentiaton; Chinese remainder theorem; polynomials and finite fields.
  • Public-Key Cryptography: RSA algorithm, Rabin's algorithm, Diffie-Hellman key exchange, ElGamal; Factoring and generating prime numbers, Fermat test, Miller-Rabin test; Discrete logarithms, Pollar rho algorithm, index calculus.
  • Hash Functions: Fundamentals, one-way functions, preimage and second preimage computations, compression functions, MD5, SHA-1, an SHA-2 and SHA-3 family; Message authentication functions.
  • Digital Signatures: RSA, ElGamal, DSA, ECDSA, special signatures.
  • Advanced Topics: Elliptic curve cryptography, secret sharing, one-time passwords, challenge-response protocols, certificates.


  • Simon Rubinstein-Salzedo. Cryptography, Springer, 2018.
  • Available without cost to UCSB students: URL

Grading Rules

  • Homework Assignments: 30 %
  • Midterm Exam: 30 %
  • Final Exam: 40 %

Catalog Description

An introduction to the basic concepts and techniques of cryptography and cryptanalysis. Topics include: The Shannon theory, classical systems, the enigma machine, the data encryption standard, public key systems, digital signatures, file security.


CS 10 or CS 24; CS 40; PSTAT 120A or PSTAT 121A or ECE 139 or permission of instructor.

This class is open to all undergraduate CS, ECE, and MATH students, with appropriate discrete mathematics background.

Academic Integrity  

Çetin Kaya Koç