IST360 - RSA Encryption Example

Document Sample
IST360 - RSA Encryption Example Powered By Docstoc
					                                      RSA Encryption Example

The RSA encryption process has been a standard since 1977 and it continues to provide a solid level of
protection for data transfer. Its soul foundation is based on mathematic functions that work with
factoring and modulus of large integers. The design has proved itself over time to be highly secure.
The encryption process is asymmetrical, meaning there are two sets of keys, one public and one private.
This document provides a simplistic working example of how the RSA encryption process would be
utilized to encrypt one small integer.
Building the keys:
   1) The first step is to choose two different prime numbers which we’ll name p and q. Normally
      these prime numbers would be randomly generated and would be quite large. These numbers
      would then be destroyed immediately after the product of the two numbers is determined. For
      this example we will use two small values:
                        p = 5 and q = 11
   2) To find the product we multiply p*q to find our first public key value of n. The value n will also
      appear in our private key.
                       n= p*q
                       n = 55
   3) Next we compute the totient or Phi function of p and q. We do this by subtracting 1 from each
      and then calculating the product.
                       m = (p – 1) * (q – 1)
                       m = 4 * 10
                       m = 40
* Note – the following steps (4 and 5) are usually handled with the extended Euclidean algorithm. Our
method will be far more rudimental (hit or miss).
   4) Next we need to find an integer that is greater than 1 and is coprime to m - we’ll call it “e”.
      (coprime to m means no shared factors). e is the second and final value we need to create our
      public key. We do this by a hit or miss method starting with the integer 2. (note gcd = greatest
      common divisor)
      The formula is:                        gcd(e, m) = 1
      So let’s plug away… if e = 2 then gcd(2, 40) = 2 (no – 2 and 40 have common factors)
                               if e = 3 then gcd(3, 40) = 1 (yes – 3 and 40 don’t have common factors)
   5) Step five will provide the remaining value needed for the creation of the private key (d). Now
      we go through a process that has us finding a common factor (somewhat the reverse of step 4).
      For the value of i we use an integer and we’ll start another hit or miss method starting with 0:
   The formula is: d = (1 + im) / e
   Rewritten as:      if i = 0 then d = (1+ (0*40)) /3       (no –3 is not a factor of 1)
                      if i = 1 then d =41/3                  (no – 3 is not a factor of 41)
                      if i = 2 then d =81/3                  (yes – 3 is a factor of 81)
                                       d = 27

So our public key contains: n = 55 and e = 3 and our private key contains: n = 55 and d = 27

                                       RSA Encryption Example

Now that we have created both a public and private key, let’s go through the process of encrypting and
decrypting a small integer using our keys. Let’s encrypt the number 4 (our number must be less than the
value of either p or q). Remember, when text is encrypted or decrypted it is done based on the ASCII
value of the characters. Therefore, all cryptography will be done on numeric values. We’ll consider the
ASCII conversion as already having been done for our examples. The value of 4 relates to the ASCII
value of EOT (end of transmission).


   6) Remember to encrypt a message that is not a digital signature we use our public key. The
      formula to do so follows (z = the integer that is to be encrypted, e & n from our public key):
                     c = z mod n
                       = 4 mod 55
                       = 64 mod 55 (calculate this using the scientific calculator in windows)
                      c = 9 (or divide 55 into 64 1 time with a remainder of 9)

So, using our current set of keys the number 4 is sent across to it’s destination as the number 9 – who
would have guessed?


   7) The decryption process usually deals with exponents that are sufficiently large that a hit or miss
      method typically would not work. Most calculators cannot handle very large exponents either.
      If you are dealing with a value larger than your calculator can handle, try the following URL
      (courtesy of the U of Minnesota): Then we can find u (the decrypted value of c), using our
      private key that holds the values of d and n.

                      u = c mod n
                        = 9 mod 55
                        = 58149737003040059690390169 mod 55 (via windows scientific calculator)

        Yahoo, our decryption worked!


Shared By: