CMSC 414 Computer (and Network) Security

advertisement
CMSC 414
Computer and Network Security
Lecture 7
Jonathan Katz
Malleability/chosen-ciphertext
security
 All the public-key encryption schemes we have
seen so far are malleable
– Given a ciphertext c that encrypts an (unknown)
message m, it is possible to generate a ciphertext c’ that
encrypts a related message m’
 In many scenarios, this is problematic
– E.g., auction example; password example
 Note: the problem is not integrity (there is no
integrity in public-key encryption, anyway), but
malleability
Malleability/chosen-ciphertext
security
 In the public-key setting, security against chosen-
ciphertext attacks is equivalent to non-malleability
 In general, always use a public-key encryption
scheme secure against chosen-ciphertext attacks!
– E.g., RSA PKCS #1 v2.1
 When using hybrid encryption, if both
components are secure against chosen-ciphertext
attacks then the combination it also secure against
chosen-ciphertext attacks
Signature schemes
Basic idea
 A signer publishes a public key pk
– As usual (for now), we assume everyone has a correct copy of pk
 To sign a message m, the signer uses its private key to
generate a signature 
 Anyone can verify that  is a valid signature on m with
respect to the signer’s public key pk
– Since only the signer knows the corresponding private key, we take
this to mean the signer has “certified” m
 Security (informally): no one should be able to generate a
valid signature other than the legitimate signer
Prototypical application
 Software company wants to periodically release
patches of its software
– Doesn’t want a malicious adversary to be able to
change even a single bit of the legitimate path
 Solution:
– Bundle a copy of the company’s public key along with
initial copy of the software
– Software patches signed (perhaps with a version
number)
– Do not accept patch unless it comes with a valid
signature (and increasing version number)
Signatures vs. MACs
 Could MACs work in the previous example?
– Computing one signature vs. multiple MACs
– Public verifiability
Not obtained
– Transferability
by MACs!
– Non-repudiation
Functional definition
 Key generation algorithm: randomized algorithm
that outputs (pk, sk)
 Signing algorithm:
– Takes a private key and a message, and outputs a
signature;   Signsk(m)
 Verification algorithm:
– Takes a public key, a message, and a signature and
outputs a decision bit; b = Vrfypk(m, )
 Correctness: for all (pk, sk),
Vrfypk(m, Signsk(m)) = 1
Security?
 Analogous to MACs
– Except that adversary is given the signer’s public key
 (pk, sk) generated at random; adversary given pk
 Adversary given 1 = Signsk(m1), …,
n = Signsk(mn) for m1, …, mn of its choice
 Attacker “breaks” the scheme if it outputs a
forgery; i.e., (m, ) with:
• m ≠ mi for all i
• Vrfypk(m, ) = 1
“Textbook RSA” signatures
 Public key (N, e); private key (N, d)
 To sign message m  ZN*, compute  = md mod N
 To verify signature  on message m, check
whether e = m mod N
 Correctness holds…
 …what about security?
Security of textbook RSA sigs?
 Textbook RSA signatures are not secure
– Easy to forge a signature on a random message
– Easy to forge a signature on a chosen message, given
two signatures of the adversary’s choice
Hashed RSA
 Public key (N, e); private key (N, d)
 To sign message m, compute  = H(m)d mod N
 To verify signature  on a message m, check
whether e = H(m) mod N
 Why does this prevent previous attacks?
Security of hashed RSA
 Can we prove that hashed RSA is secure?
– Take CMSC456!
 Hashed RSA signatures can be proven secure
based on the hardness of the RSA problem, if the
hash is modeled as a random function
 Variants of hashed RSA are used in practice
DSA/DSS signatures
 Another popular signature scheme, based on the
hardness of the discrete logarithm problem
– Introduced by NIST in 1992
– US government standard
 I will not cover the details, but you need to know
that it exists
Hash-and-sign
 Say we have a secure signature scheme for “short”
messages (e.g., hashed RSA, DSS, …)
– How to extend it for longer messages?
 Hash and sign
– Hash message to short “digest”; sign the digest
 Used extensively in practice
M
H
H(M)
sk
Sign

Crypto pitfalls
Cryptography is not a “magic bullet”
 Crypto can be difficult to get right
– Must be implemented correctly
– Need expertise; “a little knowledge can be a dangerous
thing…”
– Must be integrated from the beginning
– Use only standardized algorithms and protocols
– No security through obscurity!
Cryptography is not a “magic bullet”
 Crypto alone cannot solve all security problems
– Key management; social engineering; insider attacks
– Develop (appropriate) threat/trust models
– Need to analyze weak links in the chain…
– Adversary may not be able to eavesdrop, but can it:
• Access your hard drive?
• See CRT emissions?
• Go through your trash?
– “Side channel attacks” on cryptosystems
Cryptography is not a “magic bullet”
 Human factors
– Crypto needs to be easy to use both for end-users and
administrators
– Important to educate users about appropriate security
practices
 Need for review, detection, and recovery
 Security as a process, not a product
Random number generation
 Do not use “standard” RNGs; use cryptographic
RNGs instead
 E.g., srand/rand in C:
– srand(seed) sets state=seed (|state| = 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!
More on random number generation
 Netscape v1.1:
– rv = SHA1(pid, ppid, time)
– return rv
 Problem: the input to SHA1 has low entropy
Download