CMSC 414 Computer and Network Security Lecture 17 Jonathan Katz Authentication with password + public key Say that only the server has a known public key (e.g., SSL) – Server sends R – Client sends Epk(R, password, session-key) Insecure in general!!! – But secure if encryption scheme is chosen appropriately Can be extended to give mutual authentication Using session keys Generally, want to provide both secrecy and integrity for subsequent conversation – – – – Use authenticated encryption (e.g., encrypt-then-MAC) Use sequence numbers to prevent replay attacks Use a directionality bit Periodically refresh the session key Mediated authentication (using a KDC) Mediated authentication Simple protocol: – Alice requests to talk to Bob – KDC generates KAB and sends it to Alice and Bob, encrypted with their respective keys No authentication here, but impostor can’t determine KAB Other drawbacks: – KDC has to initiate session with Bob – Alice’s message to Bob may arrive before KDC’s message to Bob Improvement… Have KDC send to Alice the encryption of KAB under Bob’s key – Reduces communication load on KDC – Resilient to message delays in network Bob and Alice follow with mutual authentication and key exchange Needham-Schroeder AKDC: N1, Alice, Bob KDCA: KA{N1, “Bob”, KAB, ticket}, where ticket = KB{KAB, “Alice”} AB: ticket, KAB{N2} BA: KAB{N2-1, N3} AB: KAB{N3-1} Analysis? N1 assures Alice that she is talking to KDC – Prevents key-replay; helps prevent attack when Bob’s key is compromised and then changed “Bob” authenticated in message 2, and “Alice” in ticket Uses encryption to authenticate… – Leads to flaw if, e.g., ECB mode is used in round 4 Vulnerable if Alice’s key (even an old one) compromised – A ticket is eternally valid – Fix using timestamps, or by requesting an (encrypted) nonce from Bob at the very beginning of the protocol Otway-Rees AB: N, “Alice”, KA{NA, N, “Alice”, “Bob”} BKDC: KA{NA, N, “Alice”, “Bob”}, KB{NB, N, “Alice”, “Bob”} KDCB: N, KA{NA, KAB}, KB{NB, KAB} BA: KA{NA, KAB} AB: KAB(timestamp) Analysis? Why does Alice believe she is talking to Bob? Why does Bob believe he is talking to Alice? Note: N should be unpredictable, not just a nonce – Otherwise, can falsely authenticate Bob to Alice Desiderata and summary This is not an exhaustive list! These are concerns to be aware of; in some cases you may decide that certain threats are acceptable Better to formally define a security model and prove security (but here we will be informal) Desiderata and summary Adversary initiating session as client – (Easiest attack to carry out) – No impersonation (obviously!) – No off-line password guessing – Should not learn information that will subsequently allow impersonation of server to client – Be aware of server decrypting/signing unauthenticated challenges – Splicing messages into the session Similar for adversary accepting connections from client (though this is a harder attack) Desiderata and summary Eavesdropping – Should not learn information that would allow for later impersonation (possibly to another replica of Bob) – Messages should be encrypted – No off-line dictionary attacks Server compromise – Should not learn client’s password – Forward secrecy – Impersonation of client to server(?) “Dos and Don’ts of Client Authentication on the Web” (Fu, et al.) Authentication using “cookies” “Single sign-on” for users accessing a site Full-fledged key-exchange not practical due to limited client (and server!) computation No public keys, no third parties, deployability… Idea: use “authenticators” stored as cookies – No client-side computation at all But…must do this securely! Minimal level of security? Any such scheme must be secure against “interrogative attacks” – These are trivial to mount by legitimate users – In contrast to eavesdropping, server impersonation, and man-in-the-middle attacks that are more difficult Confidentiality is an orthogonal issue… Fine-grained vs. coarse-grained authentication – Does the system care who the user is, or just that they are legitimate? Security model? Existential forgery vs. selective forgery – The former may typically be sufficient; the latter is worse (Essentially) adaptive chosen-message attack – User can sign up for different account under different names, with different levels of service Want no existential forgery even after adaptive chosen-message attack – We have seen this before! Security “hints”… Use appropriate amount of security – Do you need fine-grained knowledge of the user-id or not? – Is confidentiality, etc. required or not? Use published schemes… No security through obscurity… Use cryptographic tools appropriately Example… Using crypt( ) as a hash or MAC… – Output of crypt only depends on the first 8 characters of its input – crypt(username | key) provides no protection if the username is 8 characters long! – crypto(user | key) = crypt(user’ | key) if the first 8 chars of user match the first 8 chars of user’ – How can you determine the 8 character key using an adaptive chosen-message attack and ~211 work? More “hints” Be careful of composing security schemes – E.g., using same key for two purposes or schemes – E.g., different authentication schemes for account management and purchasing; break in one allowed recovery of password for the other Protect user passwords – Don’t send in the clear, or include in URL – Only let cookies be sent over SSL – Re-authenticate before changing password Avoid predictable session identifiers Expiration… A simple and secure approach… Use secure MAC! Compute MAC over entire cookie Cookie = (username/data, expiration, MAC)