Crytography - Solution (long)

David Snook ua532 at freenet.victoria.bc.ca
Mon Jun 13 09:51:00 PDT 1994



Iams Post. June 12/94


	The plaintext messsage was "Leonard Euler Pi", which was deciphered
by David Wagner of Princeton. It is Euler's Totient Function that is the
mathematical basis for the RSA Cryptographic System, hence the message. The
trailing "Pi" was included to minimize the possibility of a "lucky guess".

The 'cheap' scientific calculator, referred to in the original posting, was
an old Radio Shack EC-4024, programmable. The problem itself, however, was
set up on a 386DX using MathCAD and Qbasic.
   
Below, is a detailed method for deciphering the encrypted message, a brief
explanation of some of the how's and why's,  and a copy of the original
problem posting. Thanx.


David




*------------------------------------------------------------------------*
A Cryptographic Problem  ---------------------------------> The Solution:
*------------------------------------------------------------------------*

        N = p*q               (p) and (q) both prime        PUBLIC
   Phi(N) = (p-1)(q-1)        Totient function (Euler)
        E = Integer           (E)nciphering Key             PUBLIC

             -1
        D = E   mod Phi(N)    (D)eciphering key             PRIVATE

*-------*
STEP #1:
*------------------------------------------------------------------------*

You're given:      E = 2683

                   N = 83323
                   N = p*q     (p) & (q) both prime
By factoring:     
                   p = 97
                   q = 859

Then:        Phi(N)  = (97-1)(859-1)   
             Phi(N)  = 82368

*-------*
STEP #2:
*------------------------------------------------------------------------*

                        -1
You're given:      D = E   mod Phi(N)
                  DE = 1   mod Phi(N)
                   1 = DE  mod Phi(N)

Then:              1 = DE - (k * Phi(N))    Algebraic form of equation
                  DE =  1 + (k * Phi(N))

                   D = 1 + (k * 82368)      Where D must be integer
                       ---------------
                             E

                   D = 1 + (k * 82368)      
                       ---------------
                            2683

Set k = 1,2,3, ... i                        Trial and error .. k = 10


                   D = 1 + (10 * 82368)
                       ----------------
                            2683

                   D = 307                  !THIS IS THE DECIPHERING KEY!
                       
*------------------------------------------------------------------------*

*-------*
STEP #3:
*------------------------------------------------------------------------*
To recover the plaintext:

                        D
                   P = C  mod N
                    1   1

                            307
                   P = 48284    mod 83323                  See NOTE 1 
                    1

                   P = 3805
                    1

Look up (38) and (05) in the encoding alphabet:

                   M =  L e
                    1

Repeat STEP #3 for the remaining (C)iphertext blocks to obtain:  
 
 Message   =      L e   o n   a r   d     E u   l e   r     P i

 Plaintext =     3805  1514  0118  0463  3121  1205  1863  4209

 Ciphertext=    48284 65276 34353 19422 26879 31970 31567 52773

*-------*
NOTE 1:
*------------------------------------------------------------------------*
                 307
The number  48284    is very large,  so break up the process and handle
it piece meal as follows.

             1         1                 2
           (C  mod N)(C  mod N) mod N = C    mod N
             2         1                 3 
           (C  mod N)(C  mod N) mod N = C    mod N
             3         1                 4
           (C  mod N)(C  mod N) mod N = C    mod N

             etc.

             4         4                 8  
           (C  mod N)(C  mod N) mod N = C    mod N
             8         8                 16
           (C  mod N)(C  mod N) mod N = C    mod N
             16        16                32
           (C  mod N)(C  mod N) mod N = C    mod N

             etc.

Hint: (256+32+16+3) = 307
                                             2
The largest number to be processed is then  C , (11 digits) max. 
*------------------------------------------------------------------------*

*------------------------------------------------------------------------*
How it all works ........... and why!
*------------------------------------------------------------------------*

        N = p*q               (p) and (q) both prime        PUBLIC
   Phi(N) = (p-1)(q-1)        Totient function (Euler)
        E = Integer           (E)nciphering Key             PUBLIC

             -1
        D = E   mod Phi(N)    (D)eciphering key             PRIVATE
        1 = ED  mod Phi(N)    See below !!!


The sender enciphers her/his (P)laintext message, P, into (C)iphertext
blocks using the published, public keys E and N, as follows,

            E                                          E
       C = P  mod N     --------->       C  mod N  =  P   mod N

The receiver deciphers the (C)iphertext blocks by using her/his private
key D, and the public key N, as follows,

            D                             D            ED
       P = C  mod N     --------->       C  mod N  =  P   mod N

This is possible because the arithmetic performed in the exponent is
done Phi(N), such that,
                           Y           (Y mod Phi(Z))
                          X  mod Z  = X

*------------------------------------------------------------------------*

        D          ED         (ED mod Phi(N))
So:    C  mod N = P  mod N = P


But:   ED mod Phi(N) = 1                                    See above !!!

        D          ED         1
So:    C  mod N = P  mod N = P              The Original Plaintext Block!

*------------------------------------------------------------------------*

It is Euler's Totient Function that makes it all work. Hence the message.

*------------------------------------------------------------------------*

*------------------------------------------------------------------------*
A Crytographic Problem            May 22, 1994             David J. Snook
*------------------------------------------------------------------------*

	There has been a great deal of media discussion, about Clipper
Chips, information privacy, and the "cracking" of RSA-129. This problem
is designed around the underlying mathematics of modern crytographic
systems: RSA, in this particular case. (Rivest, Shamir, Adleman)

	The security of these systems is based on the fact that very
large numbers (200 digits) are very difficult and time consuming to
factor. The numbers associated with this problem are very small, in
crytographic terms, and therefore provide little or no security from
the amateur crypt-analyst. In fact, this problem can be solved with
paper, pencil and a "cheap" scientific calculator.

	Below, is a line of ciphertext, two(2) public keys, followed
by the procedures and equations used to encipher and decipher the message.

The problem ........ What was the original message?  


                  C     C     C     C     C     C     C     C   
                   1     2     3     4     5     6     7     8     

 Ciphertext=    48284 65276 34353 19422 26879 31970 31567 52773


 Key #1  N= 83323
 Key #2  E=  2683

*--------------------*
Procedures & Equations
*------------------------------------------------------------------------*

        N = p*q               (p) and (q) both prime        PUBLIC
   Phi(N) = (p-1)(q-1)        Totient function (Euler)
        E = Integer           (E)nciphering Key             PUBLIC

             -1
        D = E   mod Phi(N)    (D)eciphering key             PRIVATE

Enciphering was done, two(2) characters at a time, using the encoding
alphabet listed below to form (P)laintext blocks. Each block was then
raised to the power of E modulo N to produce the blocks of (C)iphertext.
There are eight(8) blocks of (C)iphertext with each containing exactly
two(2) characters.

             E                E                        E
        C = P  mod N ,   C = P  mod N ,  ........ C = P  mod N
         1   1            2   2                    8   8 

Deciphering is accomplished by raising each (C)iphertext block to the
power of D modulo N. This recovers the (P)laintext blocks and hence the
original message text. 

             D                D                        D
        P = C  mod N ,   P = C  mod N ,  ........ P = C  mod N
         1   1            2   2                    8   8 
*-------------------------------------------------------------------------*

*---------------*
Encoding alphabet
*-------------------------------------------------------------------------*
  a = 01    b = 02    c = 03    d = 04    e = 05    f = 06    g = 07
  h = 08    i = 09    j = 10    k = 11    l = 12    m = 13    n = 14 
  o = 15    p = 16    q = 17    r = 18    s = 19    t = 20    u = 21
  v = 22    w = 23    x = 24    y = 25    z = 26    A = 27    B = 28
  C = 29    D = 30    E = 31    F = 32    G = 33    H = 34    I = 35
  J = 36    K = 37    L = 38    M = 39    N = 40    O = 41    P = 42
  Q = 43    R = 44    S = 45    T = 46    U = 47    V = 48    W = 49
  X = 50    Y = 51    Z = 52    0 = 53    1 = 54    2 = 55    3 = 56
  4 = 57    5 = 58    6 = 59    7 = 60    8 = 61    9 = 62      = 63
  . = 64    , = 65    ; = 66    ? = 67
*-------------------------------------------------------------------------*
Plaintext example
*---------------*

 Message   =      S i   r     I s   a a   c     N e   w t   o n 

 Plaintext =     4509  1863  3519  0101  0363  4005  2320  1514

                   P     P     P     P     P     P     P     P    ... P
                    11    12    13    14    15    16    17    18        k 
*-------------------------------------------------------------------------*

--
David J. Snook.................................ua532 at freenet.victoria.bc.ca







More information about the cypherpunks-legacy mailing list