04
Tips for doing well Read relevant sections of book before class
Lecture will move quickly; I expect questions and discussion
If you fall behind on the reading it will be hard to catch up!
Can also watch my videos on Coursera
Attend class
Come to office hours<br>
05
Necessary administrative stuff Course webpage:
http://www.cs.umd.edu/~jkatz/crypto/s22
General information posted there
Syllabus/schedule/readings posted there
Midterm already scheduled
Updated as semester progresses
Slides posted there after lecture, but I will use the whiteboard in class<br>
06
Necessary administrative stuff ELMS/Canvas
HWs will be posted on ELMS
Professor/TA Zoom links posted there
Lectures will not be recorded
Piazza
Announcements will be sent there
Useful for discussions/questions
Please use also for questions about the content, not just about the homeworks!<br>
07
Lectures In-person lectures (unless campus policy changes)
Lectures will not be recorded
I advise you to attend in person unless you are sick<br>
08
Homeworks HWs submitted using Gradescope
Make sure you are registered, and can submit, well in advance of the first deadline
When applicable:
Type solutions using LaTeX (preferred)
Clear scan of neat handwritten solutions
Word doc converted to pdf
.txt files
Cheating will not be tolerated
Must write your own code/solutions
No consulting external websites<br>
09
HWs/exams Expect HWs every 1.5-2 weeks
Ungraded/optional HWs focusing on the theory
Solutions given
Graded HWs involving programming
Meant to reinforce the abstract concepts
Meant to highlight practical applications
Fun!
Midterm and final
Questions more similar to ungraded HWs
Anything covered in class or listed in readings on syllabus is fair game<br>
10
Textbook Required textbook: “Introduction to Modern Cryptography, 3rd edition,” Katz and Lindell
Exams will be open book
Physical copies only; no electronic devices<br>
11
Grading Grading based on 7-8 HWs (25%), midterm (35%), and final (40%)
Exams count a lot
Class is not curved
Each student’s grade determined by how well they demonstrate their understanding of the material
Every student is capable of getting an A
You are not competing with each other A: 86-100
B: 70-85
C: 55-69
D/F: below 55<br>
12
TAs Doruk Gur
Guanhong Wang
Office hours listed on webpage
May change as semester progresses<br>
13
How to reach me Best way to contact me is by email:jkatz@cs.umd.edu
Please put “CMSC 456” in subject line
Please email me in advance if you plan to come to office hours<br>
14
Questions?
Please ask questions throughout!<br>
15
Course goals Understand the theoretical foundations for real-world cryptography
When you encounter crypto in your career:
Understand the key terms
Understand the security guarantees needed/provided
Know how to use crypto
Understand what goes on “under the hood”
“Crypto mindset”<br>
16
Course non-goals Designing your own crypto schemes
This is hard!
Implementing crypto for real-world use
This is hard!
Course goal: realize when to consult an expert!<br>
17
Cryptography (historically) “…the art of writing or solving codes…”
Historically, cryptography focused exclusively on ensuring private communication between two parties sharing secret information in advance using “codes” (akaprivate-key encryption)<br>
18
Modern cryptography Much broader scope!
Data integrity, authentication, protocols, …
The public-key setting
Group communication
More-complicated trust models
Foundations (e.g., number theory, quantum-resistance) to systems (e.g., electronic voting, privacy-preserving ML, blockchain, DeFi)<br>
19
Modern cryptography Design, analysis, and implementation of mathematical techniques for securing information, systems, and distributed computations against adversarial attack<br>
20
Cryptography (historically) “…the art of writing or solving codes…”
Historically, cryptography was an art
Heuristic, unprincipled design and analysis
Schemes proposed, broken, repeat…<br>
21
Modern cryptography Cryptography is now much more of a science
Rigorous analysis, firm foundations, deeper understanding, rich theory
The “crypto mindset” has permeated other areas of computer security
Threat modeling
Proofs of security<br>
22
Cryptography (historically) Used primarily for military/government applications, plus a few niche applications in industry (e.g., banking)<br>
23
Modern cryptography Cryptography is ubiquitous!
Password-based authentication, password hashing
Secure credit-card transactions over the internet
Encrypted WiFi
Disk encryption
Digitally signed software updates
Bitcoin
…<br>
24
Rough course outline Building blocks
Pseudorandom (number) generators
Pseudorandom functions/block ciphers
Hash functions
Number theory<br>
25
Classical Cryptography<br>
26
Motivation Allows us to “ease into things…,” introduce notation
Illustrates why things are more difficult than they may appear
Motivates a more rigorous approach<br>
27
Classical cryptography Until the 1970s, exclusively concerned with ensuring secrecy of communication
I.e., encryption<br>
28
Classical cryptography Until the 1970s, relied exclusively on secret information (a key) shared in advance between the communicating parties
Private-key cryptography
aka secret-key / shared-key / symmetric-key cryptography<br>
29
Private-key encryption k k c key m
c Enck(m) message/plaintext encryption ciphertext m := Deck(c) decryption key<br>
30
Private-key encryption k c m
c Enck(m) m := Deck(c) k c c<br>
31
Private-key encryption A private-key encryption scheme is defined by a message space M and algorithms (Gen, Enc, Dec):
Gen (key-generation algorithm): outputs kK
Enc (encryption algorithm): takes key k and message mM as input; outputs ciphertext c c Enck(m)
Dec (decryption algorithm): takes key k and ciphertext c as input; outputs m or “error” m := Deck(c) For all mM and k output by Gen,Deck(Enck(m)) = m<br>
32
Kerckhoffs’s principle The encryption scheme is not secret
The attacker knows the encryption scheme
The only secret is the key
The key must be chosen at random; kept secret
Arguments in favor of this principle
Easier to keep key secret than algorithm
Easier to change key than to change algorithm
Standardization
Ease of deployment
Public scrutiny<br>
33
The shift cipher Consider encrypting English text
Associate ‘a’ with 0; ‘b’ with 1; …; ‘z’ with 25
k K = {0, …, 25}
To encrypt using key k, shift every letter of the plaintext by k positions (with wraparound)
Decryption just does the reverse helloworldz
ccccccccccc jgnnqyqtnfb<br>
34
Modular arithmetic x = y mod N if and only if N divides x-y
[x mod N] = the remainder when x is divided by N
I.e., the unique value y{0, …, N-1} such that x = y mod N
25 = 35 mod 10
25 ≠ [35 mod 10]
5 = [35 mod 10]<br>
35
The shift cipher, formally M = {strings over lowercase English alphabet}
Gen: choose uniform k{0, …, 25}
Enck(m1…mt): output c1…ct, where ci := [mi + k mod 26]
Deck(c1…ct): output m1…mt, where mi := [ci - k mod 26]
Can verify that correctness holds…<br>
36
Is the shift cipher secure? No -- only 26 possible keys!
Given a ciphertext, try decrypting with every possible key
Only one possibility will “make sense”
(What assumptions are we making here?)
Example of a “brute-force” or “exhaustive-search” attack<br>
37
Example Ciphertext uryybjbeyq
Try every possible key…
tqxxaiadxp
spwwzhzcwo
…
helloworld<br>
38
Byte-wise shift cipher Work with an alphabet of bytes rather than (English, lowercase) letters
Works natively for arbitrary data!
Use XOR instead of modular addition
Essential properties still hold<br>
39
Hexadecimal (base 16)<br>
40
Hexadecimal (base 16) 0x10
0x10 = 16*1 + 0 = 16
0x10 = 0001 0000
0xAF
0xAF = 16*A + F = 16*10 + 15 = 175
0xAF = 1010 1111<br>
41
ASCII Characters often represented in ASCII
1 byte/char = 2 hex digits/char<br>
42
Source: http://benborowiec.com/2011/07/23/better-ascii-table/<br>
43
Useful observations Only 128 valid ASCII chars (128 bytes invalid)
Only 0x20-0x7E printable
0x41-0x7a includes all upper/lowercase letters
Uppercase letters begin with 0x4 or 0x5
Lowercase letters begin with 0x6 or 0x7<br>