CMSC 414 Computer and Network Security: Jonathan Katz
CMSC 414 Computer and Network Security: Jonathan Katz
Jonathan Katz
JCE tutorial
In class next Wednesday HW1 will use it
Professional
We are All Security Customers Information Security and Externalities Comments?
Caveats
Everything I present will be (relatively) informal I may simplify, but I will not say anything that is an outright lie Cryptography offers formal definitions and
somewhere else (CMSC456, CISSP, your job, the news), you are probably mistaken
Goals of cryptography
Crypto deals primarily with three goals: Confidentiality Integrity (of data) Authentication (of resources, people, systems) Other goals also considered E.g., non-repudiation E-cash (e.g., double spending) General secure multi-party computation Anonymity
Private-key cryptography
The communicating parties share some
To emphasize
Alice and Bob share a key K Must be shared securely Must be completely random Must be kept completely secret from attacker We dont discuss (for now) how they do this You can imagine they meet on a dark street corner and Alice hands a USB device (with a key on it) to Bob
Private-key cryptography
For confidentiality: Private-key (symmetric-key) encryption For data integrity: Message authentication codes
Canonical applications
Two (or more) distinct parties communicating
over time
E.g., secure storage
Bob K
Alice K
Bob K
Bob K
Security?
We will specify the exact threat model being
addressed
We will also specify the security guarantees that
Security through obscurity is a bad idea True in general; even more true in the case of cryptography Home-brewed solutions are BAD! Standardized, widely-accepted solutions are GOOD!
algorithm
Reverse engineering Social engineering Insider attacks
Private-key encryption
Functional definition
Encryption algorithm: Takes a key and a message (plaintext), and outputs a ciphertext c EK(m) possibly randomized! Decryption algorithm: Takes a key and a ciphertext, and outputs a message (or perhaps an error) m = DK(c)
Bob K
Alice c K cEK(m)
Bob K m=DK(c)
for security
Dont use schemes that you design yourself Use schemes that other people have already designed and analyzed
A fundamental problem
A fundamental problem with classical
an option
So how can you know when something is secure? (Or is at least based on well-studied, widely-believed assumptions)
Defining security?
What is a good definition? Why is a good definition important?
Security goals?
Adversary unable to recover the key Necessary, but meaningless on its own Adversary unable to recover entire plaintext Good, but is it enough?
Note
Even given our definition, we need to consider the
threat model
Multiple messages or a single message? Passive/active adversary? Chosen-plaintext attacks?
The threat model matters! The classical ciphers we have seen are immediately broken by a known-plaintext attack
amount of time learns nothing about the message from the ciphertext
Perfect secrecy
Next time: the one-time pad; its limitations; overcoming these limitations