1 / 25

CS 312: Algorithm Analysis

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License . CS 312: Algorithm Analysis. Lecture #5: Public-Key Cryptography with RSA. Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warnick. Announcements.

sage
Télécharger la présentation

CS 312: Algorithm Analysis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. CS 312: Algorithm Analysis Lecture #5: Public-Key Cryptography with RSA Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warnick

  2. Announcements • HW #2, #3 Due Now • Project #1 Due Today • Weekly help sessions Tuesday at 10am • In 1066 TMCB • Homework feedback • , 2-col proofs, justify answers • Google group!

  3. Practice Find : function modexp(x, y, N) Input: Two n-bit integers x and N, a non-negative integer exponent y (arbitrarily large) Output: xy mod N if y = 0: return 1 i = y; r = 1; z = x mod N while i > 0 z = z2 mod N if i is odd: r = r z mod N i = floor(i/2) return r • Key points: • Represent exponent in binary • Break up the problem into factors (one per binary digit) • Use the substitution rule

  4. Objectives • Understand the big picture for cryptography • Introduce Public Key Cryptography • Apply all of our favorite algorithms to define RSA • Understand why RSA is secure

  5. Punch-Line • RSA • Named after Rivest, Shamir, Adleman • Gives strong guarantees of security • Exploits: • Polynomial time computability of: • Modular Exponentiation: modexp() • Greatest Common Divisor: extended-Euclid() • Fermat PrimalityTesting: primality2() • Intractability of: • Factoring • Modular root finding

  6. Cryptography • Alice and Bob want to communicate in private • Eve is an eavesdropper • Alice wants to send message x to Bob • She encrypts clear-text with • She sends the cypher-text to Bob • Bob decrypts with • Goal: If Eve intercepts , without she can do nothing.

  7. Cryptography • Past: private key protocols • Exchange codebook • E.g., One-time Pad • E.g., AES (Advanced Encryption Standard) • Present: public key protocols • Never need to meet • eBob() is publicly available • Only Bob possesses dBob() • Alice can quickly run eBob() • Bob can quickly run dBob() • Without dBob(), Eve must perform operations like factoring large numbers. Have fun! • E.g., RSA

  8. Public Key Cryptography Bob Alice Publishes his public key Thanks to Diffie, Hellman, and Merkle

  9. Public Key Cryptography Bob Alice Get’s Bob’spublic key Thanks to Diffie, Hellman, and Merkle

  10. Public Key Cryptography Bob Alice Uses the key to encrypt her message

  11. Public Key Cryptography Bob Alice Sends the encrypted message over an open channel

  12. Public Key Cryptography Bob Alice Uses private knowledge to decrypt the message sends the encrypted message over an open channel

  13. Public Key Cryptography • RSA: • Messages from Alice and Bob are numbers modulo N • Messages larger than N are broken into blocks • Encryption is a bijection on {0,1, …, N-1} • i.e., a permutation • Decryption is its inverse Function that is both one-to-one and onto

  14. Number Theory • Let and be any two primes • Let • Let “the totient” • Let be a number relatively prime to • Then • is a bijection on • Let = the multiplicative inverse of mod. • Then • is also a bijection on • Furthermore, for all ,

  15. Key Generation Bob needs to generate his public and private keys. • He picks two large -bit random primes and (how?) • What role should primality2() play? • Test random -bit numbers: to find one • Public key is • Where • Where is an (at most) -bit number relatively prime to • Often , which permits fast encoding • Private key is , the multiplicative inverse of modulo • How to compute? • extended-Euclid(e, (p-1)(q-1)) That should help with exercise HW#4: 1.27

  16. Sending Messages Alice wants to send to Bob • She looks up his public key • She encodes • How to compute? • He receives and decodes it: • How to compute? That’s it!

  17. Example • Setup • Let • Let e = 3 • Keys • Public: • Private: • Functions • Encryption • Decryption • Example • Let

  18. How Safe is RSA? • There are two main attacks. • The first: • Factor the public key N into its primes • Invert to get • Given and (ciphertext), compute using modular exponentiation. • Factoring is hard, but nobody knows how hard. • It is unlikely to be in either P or NP-complete.

  19. How Safe is RSA? • The second attack involves computing • Reasoning: y1/e  (xe (mod N))1/e • (xe)1/e • x (mod N) • However, there is no known efficient algorithm for finding modular roots.

  20. Brute Force Attacks • Try all values of – harder than factoring • Try all primes from 1 to • Use computers: require time to crack

  21. The Punch-line • The crux of the security behind RSA • Efficient algorithms / Polynomial time computability of: • Modular Exponentiation – modexp() • Greatest Common Divisor – extended-Euclid() • Primality Testing – primality2() • Absence of efficient algorithms / Intractability of: • Factoring • Modular root finding

  22. Using Public Key Authentication • PGP (Pretty Good Privacy) uses Fermat in it's primality test. • SSH: use ssh-keygen to generate a suitable pair of keys. • The prime number is tested using two methods. • The second of which is Miller-Rabin and some filtering based on known composites • (see source code) • From man ssh: • Put your public key on the server (presumably because anyone can see your server) • Put your private key on your client (because you control it). • ssh can use public key authentication to verify that you are who you say you are without a password. • "the server checks if this key is permitted • if so, sends the user (actually the ssh program running on behalf of the user) a challenge, a random number, encrypted by the user's public key • The challenge can only be decrypted using the proper private key. • The user's client then decrypts the challenge using the private key, proving that he/she knows the private key but without disclosing it to the server.“

  23. RSA and SSH client server [public key] [private key] login encrypt a random number decrypt the random number If numbers match, then you must have the private key

  24. Thoughts • Security of this scheme remains unproven • Factoring large numbers into their primes may turn out to be easy or unnecessary to break the code • Can you break it, or prove it is hard to break? • Are there other “one-way” functions to do the job? • Can we approximately break the code—derive a message m within provable bounds of the clear-text x? • Are there alternative handshaking schemes to facilitate private communication without prior coordination? • Need creative minds on this problem (cool jobs at NSA)

  25. Assignment • HW #4: 1.27

More Related