cmsc 414 computer and network security lecture 10 jonathan katz

20
CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Upload: sarah-manning

Post on 18-Dec-2015

218 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

CMSC 414Computer and Network Security

Lecture 10

Jonathan Katz

Page 2: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Crypto pitfalls?

1. Bad cryptography, bad implementations, bad design

2. Even good cryptography can be ‘circumvented’ by adversaries operating ‘outside the model’

1. Systems are complex, and your model may not exactly match reality

2. Side channel attacks

3. Even the best cryptography only shifts the weakest point of failure elsewhere

Page 3: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Recommendationsand warnings

Page 4: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Crypto libraries

Use existing, high-level crypto libraries– cryptlib

– GPGME

– Keyczar

– These provide an appropriate interface to crypto algorithms

Avoid low-level libraries (like JCE) – too much possibility of mis-use

Avoid writing your own low-level crypto

Page 5: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Random number generation

Do not use “standard” PRNGs; use cryptographic PRNGs instead

E.g., srand/rand in C:– srand(seed) sets state=seed (where |seed| = 32 bits)

– rand():• state = f(state), where f is some linear function

• return state

– Generating a 128-bit key using 4 calls to rand() results in a key with only 32 bits of entropy!

Related issues led to exploit in Netscape v1.1

Page 6: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

More on PRNGs

Crypto PRNGs have different requirements– Indistinguishable from random by any efficient

algorithm

– Constantly re-seeded with new entropy to ensure forward security

– Should be impossible to guess or perturb internal state• E.g., if entropy comes from file timestamps

“Cold boot” issues– Server just rebooted and needs randomness….is there

enough entropy after being up just a few seconds?

Page 7: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Integrity protection

Encryption does not provide integrity!

Use authenticated encryption (e.g., encrypt-then-MAC) in the symmetric-key setting when confidentiality and integrity are required– …and even if you only want confidentiality…

Use public-key encryption secure against chosen-ciphertext attacks

Page 8: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Avoid weak algorithms Be careful allowing too much flexibility in

negotiation of crypto algorithms– Leads to a ‘parameter selection’ attack

Difficult to adjust if fatal flaw found in weak algorithm– E.g., Upgrading encryption to add integrity protection:

• Old: CBC-encrypted• New: Add integrity protection using a MAC• Bright idea: get old credential; decrypt; re-encrypt with new

key + MAC• Do you see the flaw?

Page 9: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Implementation flaws

(These are crypto-specific; and do not include general issues such as preventing buffer overflows, etc. that we will cover later)

Must implement crypto exactly as specified!

if (0 == strncmp(userHash, myHash, 20)) allow;– strncmp compares up to the first null character

– What if my hash starts with a 0 byte??

Page 10: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Implementation flaws

Must implement crypto exactly as specified!

PKCS#1 pads data as follows: 00 01 FF … FF 00 H(m)

Bad implementation of signature verification?– Exponentiate, strip off padding, and compare to H(m)

Makes forgery easier!

Every bit of padding must be checked

Page 11: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Delimiting tokens

E.g., Amazon Web Services v1– Split query at & and = ; concatenate and apply MAC

– The following are then equivalent:…?GoodKey1=GoodValue1BadKey2BadValue2…?GoodKey1=GoodValue1&BadKey2=BadValue2

Wordpress cookie flaw– token: HMAC(username.expirytime)

– Create account for username=‘admin0’ and go…

Using timestamps to prevent replay– Is MAC(withdraw $101.1/23/09) = MAC(withdraw

$10.11/23/09)?

Page 12: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Case studies

Page 13: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

“Why Cryptosystems Fail”

Limited disclosure of crypto failures…

Insider attacks– By bank clerks, maintenance engineers, …

– Poor prevention/detection/auditing mechanisms

– Poor key management

– Insecure delivery of ATM cards/PINs

Reduced entropy of PINs

Use of “home-brewed” encryption schemes

Page 14: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

System goals and assumptions

A user should need both their ATM card and their PIN in order to withdraw money– “Two-factor authentication”

Assumptions:– PIN must be short

– ATM card cannot perform cryptographic operations

Page 15: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Threat model

Attacker can– Read discarded receipts…

– Eavesdrop on channel from ATM to bank

– Inject messages on channel from ATM to bank

– Impersonate the ATM to a user

Page 16: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Desired security

If an attacker does not have a user’s ATM card, should be infeasible to withdraw money from that user’s account (even if the PIN is guessed)

If an attacker does not have a user’s PIN, the best an adversary can do is guess it repeatedly– 1/10000 chance each time

– Prevent unlimited guessing

Page 17: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

One system

ATMAccount #

PINBank

#, PIN

If FK(#) = PIN:return “ok”

ok

This is similar, but not identical, to how ATMs work today

Page 18: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Attacks

Eavesdrop on PIN and account # ; manufacture rogue ATM card

Replay “ok” message!– Solution: use authentication with replay protection

Impersonate an ATM to a customer– Can this be prevented without implementing crypto on

the ATM card? (Hint: how could the bank authenticate directly to the user?)

Page 19: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Another system

ATM

Account #c=EncK(PIN)

PINBank

#, c, PIN

If DK(c) = PIN:debit account #,

return “ok”

ok

No binding between account # and PIN!

Page 20: CMSC 414 Computer and Network Security Lecture 10 Jonathan Katz

Another system

ATM

Account #PIN

Bank#

If FK(#) = PIN:“authenticated”

balancewithdraw amt

If amt ≤ balance,dispense cash

Do you see an attack?

encrypted