From 9e6d37e08aff55a4de24b53fc046eb9074689bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Franu=C5=A1i=C4=87?= Date: Mon, 25 Jun 2012 15:14:38 -0600 Subject: [PATCH] Added actual files to repo. --- README | 17 ++++++ block-diagram.tex | 85 +++++++++++++++++++++++++++ conclusions.tex | 30 ++++++++++ exponent-arithmetic.tex | 56 ++++++++++++++++++ exponential-notation.tex | 49 ++++++++++++++++ exponential-tables.tex | 46 +++++++++++++++ factor-ops.tex | 88 ++++++++++++++++++++++++++++ hard-problems.tex | 57 ++++++++++++++++++ huge-integers.tex | 52 +++++++++++++++++ intro.tex | 34 +++++++++++ main.tex | 121 +++++++++++++++++++++++++++++++++++++++ makefile | 49 ++++++++++++++++ mappings.tex | 107 ++++++++++++++++++++++++++++++++++ modex-15.tex | 27 +++++++++ modex-33-arrows.tex | 97 +++++++++++++++++++++++++++++++ modex-33-cols.tex | 44 ++++++++++++++ modex-33.tex | 45 +++++++++++++++ modex-function.tex | 60 +++++++++++++++++++ mult-plus-one.tex | 14 +++++ multiple-plus-one.tex | 59 +++++++++++++++++++ oplus-15.tex | 27 +++++++++ oplus-operator.tex | 46 +++++++++++++++ otimes-15.tex | 27 +++++++++ otimes-operator.tex | 47 +++++++++++++++ references.tex | 47 +++++++++++++++ rings.tex | 26 +++++++++ set-Zn.tex | 31 ++++++++++ simple-proof.tex | 46 +++++++++++++++ simulation.tex | 61 ++++++++++++++++++++ wallpaper.tex | 98 +++++++++++++++++++++++++++++++ why-RSA-works.pdf | Bin 0 -> 199952 bytes 31 files changed, 1593 insertions(+) create mode 100644 README create mode 100644 block-diagram.tex create mode 100644 conclusions.tex create mode 100644 exponent-arithmetic.tex create mode 100644 exponential-notation.tex create mode 100644 exponential-tables.tex create mode 100644 factor-ops.tex create mode 100644 hard-problems.tex create mode 100644 huge-integers.tex create mode 100644 intro.tex create mode 100644 main.tex create mode 100644 makefile create mode 100644 mappings.tex create mode 100644 modex-15.tex create mode 100644 modex-33-arrows.tex create mode 100644 modex-33-cols.tex create mode 100644 modex-33.tex create mode 100644 modex-function.tex create mode 100644 mult-plus-one.tex create mode 100644 multiple-plus-one.tex create mode 100644 oplus-15.tex create mode 100644 oplus-operator.tex create mode 100644 otimes-15.tex create mode 100644 otimes-operator.tex create mode 100644 references.tex create mode 100644 rings.tex create mode 100644 set-Zn.tex create mode 100644 simple-proof.tex create mode 100644 simulation.tex create mode 100644 wallpaper.tex create mode 100644 why-RSA-works.pdf diff --git a/README b/README new file mode 100644 index 0000000..95fceb6 --- /dev/null +++ b/README @@ -0,0 +1,17 @@ +# why-RSA-works/README +# Copyright 2012 Peter Franusic. +# All rights reserved. +# + +This directory contains LaTeX source files for an article titled "Why RSA Works". +The article describes the math behind the RSA algorithm. +The makefile script assumes that the pdflatex program is installed. + +To generate a PDF of the article: + + $ make why-RSA-works.pdf + +To generate a tarfile of the sources: + + $ make why-RSA-works.tar + diff --git a/block-diagram.tex b/block-diagram.tex new file mode 100644 index 0000000..79db0f1 --- /dev/null +++ b/block-diagram.tex @@ -0,0 +1,85 @@ +%%%% why-RSA-works/block-diagram.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +%% +%% 2 3 4 5 6 7 +%% 6789012345678901234567890123456789012345678901234567890123456 +%% Alice's Alice's +%% public key private key +%% {---------} {---------} +%% n e n d +%% | | | | +%% | | | | +%% | | | | +%% +-------------+ +-------------+ +%% m | | c | | y +%% --------| m # x |--------| m # x' |-------- +%% | | | | +%% +-------------+ +-------------+ +%% +%% An RSA cryptosystem + +% graphic macro definitions + +\setlength{\unitlength}{0.05in} % for pictures +\newsavebox{\bigblock} +\savebox{\bigblock}(16,12)[bl]{ + \put( 0, 0){\line(1,0){16}} + \put( 0, 12){\line(1,0){16}} + \put( 0, 0){\line(0,1){12}} + \put(16, 0){\line(0,1){12}}} +\newsavebox{\smallblock} +\savebox{\smallblock}(9,12)[bl]{ + \put( 0, 0){\line(1,0){ 9}} + \put( 0, 12){\line(1,0){ 9}} + \put( 0, 0){\line(0,1){12}} + \put( 9, 0){\line(0,1){12}}} + +% The block diagram +\begin{picture}(90,45)(0,0) +% Box around picture +%\put( 0.0, 0.0){\line(1,0){90}} +%\put( 0.0, 42.0){\line(1,0){90}} +%\put( 0.0, 0.0){\line(0,1){42}} +%\put( 90.0, 0.0){\line(0,1){42}} +% Transmitter +\put( 18.0, 37.0){\textsf{Alice's}} +\put( 16.2, 34.0){\textsf{public key}} +\put( 16.8, 28.0){$\overbrace{\phantom{XXXX}}$} +\put( 14.0, 11.0){\usebox{\bigblock}} +\put( 18.0, 16.5){\large{\texttt{modex}}} +\put( 8.0, 18.0){$m$} +\put( 6.0, 17.0){\vector(1,0){8}} +\put( 17.3, 27.0){$n$} +\put( 18.0, 26.0){\vector(0,-1){3}} +\put( 25.3, 27.0){$e$} +\put( 26.0, 26.0){\vector(0,-1){3}} +\put( 33.5, 18.0){$c$} +\put( 15.5, 7.0){\textsf{transmitter}} +\put( 18.8, 4.0){\textsf{(Bob)}} +% Channel +\put( 30.0, 17.0){\vector(1,0){28}} +\put( 39.0, 37.0){\textsf{insecure}} +\put( 39.0, 34.0){\textsf{channel}} +\put( 36.4, 28.0){$\overbrace{\phantom{XXXXXX}}$} +\put( 44.0, 17.0){\circle{2}} +\put( 44.0, 16.0){\line(0,-1){5.5}} +\put( 40.5, 7.0){\textsf{sniffer}} +\put( 41.0, 4.0){\textsf{(Eve)}} +% Receiver +\put( 62.0, 37.0){\textsf{Alice's}} +\put( 59.7, 34.0){\textsf{private key}} +\put( 60.8, 28.0){$\overbrace{\phantom{XXXX}}$} +\put( 58.0, 11.0){\usebox{\bigblock}} +\put( 62.0, 16.5){\large{\texttt{modex}}} +\put( 53.0, 18.0){$c$} +\put( 61.3, 27.0){$n$} +\put( 62.0, 26.0){\vector(0,-1){3}} +\put( 69.3, 27.0){$d$} +\put( 70.0, 26.0){\vector(0,-1){3}} +\put( 76.5, 18.0){$y$} +\put( 74.0, 17.0){\vector(1,0){8}} +\put( 62.0, 7.0){\textsf{receiver}} +\put( 62.5, 4.0){\textsf{(Alice)}} +\end{picture} diff --git a/conclusions.tex b/conclusions.tex new file mode 100644 index 0000000..ce35bc9 --- /dev/null +++ b/conclusions.tex @@ -0,0 +1,30 @@ +%%%% why-RSA-works/conclusions.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +So why does RSA work? +Why is it that we can take some message $m$, +run it through two modex operations, and come out with the same $m$? +There are several reasons. +First of all, RSA computations are done in a commutative ring +and the multiplicative association property holds in commutative rings. +This property tells us that +the two exponentiations $(m^e)^d$ are the same as the one exponentiation $m^{ed}$. + +A second reason is that exponents $e$ and $d$ are chosen +such that they satisfy the multiples-plus-one condition $ed = k\lambda + 1$. +This insures that $ed$ is one of the identity columns +in the exponential table of ring $\mathcal{R}_n$. + +A third reason is that the exponential table contains +repeating blocks of columns where $m^a=m^{k\lambda+a}$. +This is the wallpaper pattern that we saw in Table \ref{modex-33}. +This pattern is the reason for the multiples-plus-one condition. + +Finally, RSA works because it relies on the intractability of the factoring problem. +A huge RSA modulus $n$ cannot be factored expeditiously. +Given that $n$ is the product of two distinct huge random primes, +it is virtually impossible to factor $n$ in any reasonable amount of time, +even if the factoring effort is distributed across thousands of computers. + diff --git a/exponent-arithmetic.tex b/exponent-arithmetic.tex new file mode 100644 index 0000000..16683f4 --- /dev/null +++ b/exponent-arithmetic.tex @@ -0,0 +1,56 @@ +%%%% why-RSA-works/exponent-arithmetic.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +RSA uses exponential notation in the ring $\mathcal{R}_n$. +Exponential notation is simply a mathematical shorthand for writing +a series of multiplications using the $\otimes$ operator. +The multiplicative association property allows us to derive +two rules for doing arithmetic with exponents. + +Consider the set of three equations below. +The left side of the first equation is the expression $m^2 \otimes m^3$. +We can replace the $m^2$ with $(m \otimes m)$. +We can also replace the $m^3$ with $(m \otimes m \otimes m)$. +The right side of the first equation shows this. +The multiplicative association property says that we can +ignore the parentheses and simply count the number of $m$'s that are multiplied. +There are 5 and we show this in the second equation. +Note that 5 is the sum of 2 plus 3. +So instead of expanding the expression $m^2 \otimes m^3$ +we can simply add 2 and 3, as shown in the third equation. +\begin{eqnarray*} + m^2 \otimes m^3 &=& (m \otimes m) \otimes (m \otimes m \otimes m) \\ + &=& m^5 \\ + &=& m^{2 + 3} +\end{eqnarray*} + +\paragraph{Exponent addition rule:} In general, when we have an expression of the form +$m^e \otimes m^d$ in the ring $\mathcal{R}_n$ we can simply add the exponents. +\[ m^e \otimes m^d = m^{e + d} \] + +Consider the set of four equations below. +The left side of the first equation is the expression $(m^2)^3$. +This means three copies of $m^2$ are multiplied using the $\otimes$ operator. +The right side of the first equation shows this. +In the second equation, we replace each $m^2$ with $(m \otimes m)$. +The multiplicative association property says that we can +ignore the parentheses and simply count the number of $m$'s that are multiplied. +There are 6 and we show this in the third equation. +Note that 6 is the product of 2 times 3. +Instead of expanding the expression $(m^2)^3$ +we can simply multiply 2 and 3, as shown in the fourth equation. +\begin{eqnarray*} + (m^2)^3 &=& m^2 \otimes m^2 \otimes m^2 \\ + &=& (m \otimes m) \otimes (m \otimes m) \otimes (m \otimes m) \\ + &=& m^6 \\ + &=& m^{2 \times 3} +\end{eqnarray*} + +\paragraph{Exponent multiplication rule:} In general, when we have an expression of the form +$(m^e)^d$ in the ring $\mathcal{R}_n$ we can simply multiply the exponents. +\begin{equation} \label{eq:expo-mult} + (m^e)^d = m^{ed} +\end{equation} + diff --git a/exponential-notation.tex b/exponential-notation.tex new file mode 100644 index 0000000..9ddf8d6 --- /dev/null +++ b/exponential-notation.tex @@ -0,0 +1,49 @@ +%%%% why-RSA-works/exponential-notation.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +Let's say we're given three elements $a,b,c$ which are members of the set $Z_n$. +We're also given the expression $a \otimes b \otimes c$. +The question is this: How do we compute this expression? +Do we first multiply $a$ and $b$ and then multiply $c$? +Or do we multiply $b$ and $c$ and then multiply $a$? +The answer is that either way is correct. +It doesn't matter what order we multiply the elements. +This is because the ring $\mathcal{R}_n$ has the property of \emph{multiplicative association}. +The multiplicative association property says that +when we have a series of $\otimes$ operations, +we can do the operations in whatever order we want. +The answer will be the same. +\begin{eqnarray*} + a \otimes b \otimes c &=& (a \otimes b) \otimes c \\ + &=& a \otimes (b \otimes c) +\end{eqnarray*} + +The modex function is represented mathematically using \emph{exponential notation}. +Exponential notation is an efficient way to describe a series of multiplications of the same value. +For example, the value $m$ can be multiplied by itself any number of times. +We use exponential notation to describe this. +Remember that it doesn't matter in what order the $m$'s are multiplied together. +\begin{eqnarray*} + \overbrace{m}^1 &=& m^1 \\ + \overbrace{m \otimes m}^2 &=& m^2 \\ + \overbrace{m \otimes m \otimes m}^3 &=& m^3 \\ + \overbrace{m \otimes m \otimes m \otimes m}^4 &=& m^4 \\ + &\vdots& +\end{eqnarray*} + +RSA uses the exponential notation $m^e$. +The value $m$ is the \emph{message} integer. +The value $e$ is the \emph{encryptor} exponent. +The exponential notation $m^e$ means that $e$ copies of $m$ are multiplied together +using the $\otimes$ operator in the ring $\mathcal{R}_n$. +\[ m^e \quad = \quad \overbrace{m \otimes m \otimes m \, \cdots \otimes m \otimes m}^e \] + +RSA also uses the exponential notation $c^d$. +The value $c$ is the \emph{ciphertext} integer. +The value $d$ is the \emph{decryptor} exponent. +The exponential notation $c^d$ means that $d$ copies of $c$ are multiplied together +using the $\otimes$ operator in the ring $\mathcal{R}_n$. +\[ c^d \quad = \quad \overbrace{c \otimes c \otimes c \, \cdots \otimes c \otimes c}^d \] + diff --git a/exponential-tables.tex b/exponential-tables.tex new file mode 100644 index 0000000..c8daa2b --- /dev/null +++ b/exponential-tables.tex @@ -0,0 +1,46 @@ +%%%% why-RSA-works/exponential-tables.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +%% Define an exponential product and give an example. +We now take a closer look at exponential products $m^a$ in the ring $\mathcal{R}_n$. +When $n$ is very small we can compute exponential products by hand. +As an example we compute $7^3$ in the ring $\mathcal{R}_{15}$ using Table \ref{otimes-15}. +\[ 7^3 \quad = \quad 7 \otimes 7 \otimes 7 \quad = \quad (7 \otimes 7) \otimes 7 \quad += \quad 4 \otimes 7 \quad = \quad 13 \] + +%% Define an exponential table and give an example. +We can go on to calculate the exponential product +of each pair of elements in $Z_{15}$ and put them all in a table. +Table \ref{modex-15} specifies the exponential products $m^a$ in the ring $\mathcal{R}_{15}$. +The product of $7^3$ is at the intersection of row 7 and column 3. +\vspace{2ex} +%%%% modex table +\begin{table}[!h] + \begin{center} + \input{modex-15.tex} + \caption{$m^a \quad (\mathcal{R}_{15})$} + \label{modex-15} + \end{center} +\end{table} + +%% Define a cycle and point out examples in the table. +Now consider the product sequence in row 3 (shown below). +Notice how the sequence starts at 1 and then repeats itself. +The shortest repetitive part of a sequence is called a \emph{cycle}. +The cycle in row 3 is (3, 9, 12, 6). +The \emph{period} of this cycle is 4. +\[ 1 \quad \overbrace{3 \quad 9 \quad 12 \quad 6} + \quad \overbrace{3 \quad 9 \quad 12 \quad 6} \quad \cdots \] + +%% Define an identity column and point out examples in the table. +Each row in Table \ref{modex-15} is a sequence that starts with 1 followed by a series of cycles. +Each cycle in the various rows has a period of either 1 or 2 or 4. +Remarkably, all of the cycles line up vertically in such a way +as to provide what may be called \emph{identity columns}. +Consider columns 1, 5, 9, and 13. These are the identity columns in the table. +Each is identical to the row number column on the left side of the table. +So for any $m \in Z_{15}$ we have +\[ m^1 = m^5 = m^9 = m^{13} \] + diff --git a/factor-ops.tex b/factor-ops.tex new file mode 100644 index 0000000..e8b397c --- /dev/null +++ b/factor-ops.tex @@ -0,0 +1,88 @@ +%%%% why-RSA-works/factor-ops.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +%% This is LaTeX source code for a figure that contains four curves. +%% The curves are specified by LaTeX and Lisp expressions shown below. +%% The labels of the curves are TD, QS, NFS, and Shor. +%% TD = Trial Division factoring algorithm. +%% QS = Quadratic Sieve factoring algorithm. +%% NFS = Number Field Sieve factoring algorithm. +%% Shor = Peter Shor's factoring algorithm for quantum computers. +%% The curves are overlayed on a 64 by 30 grid pattern. +%% The x-axis has lines every 4 grids, with labels {128,256,384,...,1204}. +%% The y-axis has lines every 3 grids, with labels {6,12,18,24,30}. +%% +%% In the Lisp code below, the expt function will accept integer exponents +%% greater than 128 but not floating-point exponents. +%% E.g., (expt 2 129) returns 680564733841876926926749214863536422912, +%% but (expt 2 129.0) causes an error message to be printed. +%% +%% TD curve: +%% $y = \log \left( \sqrt{2^x} \right)$ +%% (setf y (log (sqrt (expt 2 x)) 10)) +%% +%% QS curve: +%% $y = \log \left( e^{\left( \left( \ln \; 2^{x} \right)^{\frac{1}{2}}\; \cdot \; +%% \left( \ln \; \left( \ln \; 2^{x} \right) \right)^{\frac{1}{2}} \right)} \right)$ +%% (setf y (log (exp (* (expt (log (expt 2 x)) 1/2) (expt (log (log (expt 2 x))) 1/2))) 10)) +%% +%% NFS curve: +%% $y = \log \left( e^{\left( \left( \ln \; 2^{x} \right)^{\frac{1}{3}}\; \cdot \; +%% \left( \ln \; \left( \ln \; 2^{x} \right) \right)^{\frac{2}{3}} \right)} \right)$ +%% (setf y (log (exp (* (expt (log (expt 2 x)) 1/3) (expt (log (log (expt 2 x))) 2/3))) 10)) +%% +%% Shor curve: +%% $y = \log \left( \left( \ln \left( 2^{x} \right) \right)^{3} \right)$ +%% (setf y (log (expt (log (expt 2 x)) 3) 10)) +%% + +\setlength{\unitlength}{1.6mm} +\begin{picture}(64,30) +\linethickness{0.075mm} + +%% grid pattern +%% \multiput (x,y) (dx,dy) {n} {object} +\multiput (0,0) (8,0) {9} {\line(0,1){30}} % x divisions +\multiput (0,0) (0,6) {6} {\line(1,0){64}} % y divisions + +%% y-axis labels +%% 6 12 18 24 30 +\put (-2.5, 29.5){\scriptsize\textsf{30}} +\put (-2.5, 23.5){\scriptsize\textsf{24}} +\put (-2.5, 17.5){\scriptsize\textsf{18}} +\put (-2.5, 11.5){\scriptsize\textsf{12}} +\put (-2.2, 5.5){\scriptsize\textsf{ 6}} + +%% x-axis labels +%% 128 256 384 512 640 768 896 1024 +\put( 6.8,-2.0){\scriptsize\textsf{128}} +\put(14.8,-2.0){\scriptsize\textsf{256}} +\put(22.8,-2.0){\scriptsize\textsf{384}} +\put(30.8,-2.0){\scriptsize\textsf{512}} +\put(38.8,-2.0){\scriptsize\textsf{640}} +\put(46.8,-2.0){\scriptsize\textsf{768}} +\put(54.8,-2.0){\scriptsize\textsf{896}} +\put(62.0,-2.0){\scriptsize\textsf{1024}} + +\thicklines + +%% TD curve +%% \qbezier (start-x,start-y) (pull-x,pull-y) (stop-x,stop-y) +\put (7.0, 26.0) {\textsf{TD}} +\qbezier (0.00, 0.00) (6.25, 15.00) (12.50, 30.00) + +%% QS curve +\put (42.5, 25.0) {\textsf{QS}} +\qbezier (0.00, 0.00) (7.00, 15.00) (64.00,29.65) + +% NFS curve +\put (50.0, 13.25) {\textsf{NFS}} +\qbezier (0.00,0.00) (5.50, 9.00) (64.00,13.58) + +%% Shor curve +\put (51.0, 9.25) {\textsf{Shor}} +\qbezier (0.00,0.00) ( 0.50,4.50) ( 8.00,5.84) +\qbezier (8.00,5.84) (24.00,8.00) (64.00,8.55) + +\end{picture} diff --git a/hard-problems.tex b/hard-problems.tex new file mode 100644 index 0000000..10f2504 --- /dev/null +++ b/hard-problems.tex @@ -0,0 +1,57 @@ +%%%% why-RSA-works/hard-problems.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +%%%% Note that RSA trades the problem of key distribution for different problems +%%%% that are considered \emph{hard}. + +The security of RSA is based on several hard problems. +The most prominent of these is \emph{integer factorization}. +The problem is to write an algorithm that computes the prime factors of some huge integer $n$ +and does it using a small number of computing operations. +An algorithm is ``fast'' if it requires only a few operations to complete the solution. +It is a hard problem to write an algorithm that is fast enough +to factor a 1024-bit RSA modulus within any reasonable amount of time. + +Four factoring algorithms are graphed in Figure \ref{factor-ops}. +They are, from slowest to fastest: Trial Division (TD), the Quadratic Sieve (QS), +the Number Field Sieve (NFS), and Peter Shor's algorithm for quantum computers.\cite{Shor} +The graph plots the number of operations required to factor some modulus $n$. +For example, it will take roughly $10^{12}$ operations +to factor a 768-bit modulus using the NFS algorithm. +This is about 1500 years on a single core 2.2 GHz AMD Opteron processor with 2 GB RAM.\cite{RSA-768} +%%%% Trial Division (TD): $\mathcal{O}(\sqrt{N})$ operations. +%%%% Quadratic Sieve (QS): $\mathcal{O}(e^{(\ln N)^{1/2}(\ln (\ln N))^{1/2}})$ operations. +%%%% Number Field Sieve (NFS): $\mathcal{O}(e^{(\ln N)^{1/3}(\ln (\ln N))^{2/3}})$ operations. +%%%% Quantum algorithm (Shor): $\mathcal{O}((\ln N)^3)$ operations. + +%%%% Graph of factoring times +%%%% Present three graphs: TD, QS, NFS. +%%%% Bits on linear scale, operations on log scale. + +\begin{figure}[h] +\vspace{4ex} +\begin{center} +\input{factor-ops.tex} +\vspace{2ex} +\caption{$\log_{10}$ operations per $\log_2 n$} +\label{factor-ops} +\end{center} +\end{figure} + +An RSA cryptosystem can be broken if the modulus can be factored. +That is, if Eve can factor $n$ into $p$ and $q$, she can easily compute $d$. +She first computes the Carmichael function value $\lambda=\lcm(p-1,q-1)$. +Then she computes $d$ such that $ed=k\lambda + 1$. +Trouble is, factoring a huge integer takes a \emph{very} long time. + +Eve can try to solve the RSA problem\cite{RSA-problem} and +compute the $e^{th}$ root of $m^e$, +i.e., compute $m = \sqrt[e]{m^e}$. +But computing roots takes just as long as factoring. +There are other algorithms that can theoretically break RSA +but they're all just as slow as integer factorization. +The point is that Eve will not be able break an RSA cryptosystem with a huge modulus +in any reasonable amount of time. + diff --git a/huge-integers.tex b/huge-integers.tex new file mode 100644 index 0000000..fd830dd --- /dev/null +++ b/huge-integers.tex @@ -0,0 +1,52 @@ +%%%% why-RSA-works/huge-integers.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +Figure \ref{block-diagram} shows an RSA cryptosystem. +It consists of a transmitter, a receiver, and a sniffer in between. +Tradition has it that \emph{Bob} is the transmitter, \emph{Alice} is the receiver, +and \emph{Eve} is the sniffer. (\emph{Eavesdropper}, get it?) +The twin engines of the system are the modular exponentiation (modex) functions. + +RSA uses \emph{huge} integers. +By huge we mean integers with over 300 decimal digits. +It would take over four lines to print a 300 digit integer on this page. +Happily, we can represent huge integers with single letters. +Each of the letters in the figure represents a huge integer. +These are: \mbox{message $m$}, \mbox{modulus $n$}, \mbox{encryptor $e$}, +\mbox{ciphertext $c$}, \mbox{decryptor $d$}, and \mbox{output $y$}. + +%%%% Figure: Block diagram +\vspace{-3ex} +\begin{figure}[h] +\begin{center} +\input{block-diagram.tex} +\caption{An RSA cryptosystem} +\label{block-diagram} +\end{center} +\end{figure} + +Bob generates encrypted messages and transmits them to Alice. +He originates \mbox{message $m$}, +computes the modex function using \mbox{modulus $n$} and \mbox{encryptor $e$}, +then writes \mbox{ciphertext $c$} into the insecure channel. +The public \mbox{key $(n,e)$} was generated and published by Alice +prior to any transmission by Bob. + +Alice receives encrypted messages from Bob and decrypts them. +She reads \mbox{ciphertext $c$} from the insecure channel, +computes the modex function using \mbox{modulus $n$} and \mbox{decryptor $d$}, +then writes \mbox{output $y$}. +The magic of RSA is that \mbox{output $y$} is identical to \mbox{message $m$}. +I.e., \mbox{$y=m$}. +Alice generated and secured her private \mbox{key $(n,d)$} prior to +receiving any ciphertext from Bob. + +Eve is the threat that exists on every insecure channel. +She attempts to read messages that are meant to be read only by Alice. +But Eve is defeated by RSA encryption. +She can intercept ciphertext $c$ but she won't be able to compute $y$ +because she doesn't have access to decryptor $d$. +Only Alice has access to decryptor $d$. + diff --git a/intro.tex b/intro.tex new file mode 100644 index 0000000..9677bb6 --- /dev/null +++ b/intro.tex @@ -0,0 +1,34 @@ +%%%% why-RSA-works/intro.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +Arthur C. Clarke once quipped that +``any sufficiently advanced technology is indistinguishable from magic.'' +Cryptography is the magic that +transmogrifies a meaningful message into gibberish and then back again. +For thousands of years, military-grade cryptography was the exclusive domain of +diplomats and generals, partly due to the high cost of keeping secret keys secret. +But around 1975 something happened to change all that: \emph{public-key} cryptography was invented. +Public-key cryptography dramatically reduces the cost of secret key management. + +The Rivest-Shamir-Adleman algorithm (RSA) is a well-established computational method +for public-key cryptography.\cite{RSA-paper} +We offer the reader an understanding of why RSA works. +A simple proof of the RSA identity is developed using an illustrative approach. +Table \ref{modex-33} is particularly revealing. + +The scope of the article is limited to understanding the RSA identity. +The discussion therefore omits related topics such as multi-prime RSA, key generation, +conversion of text to integers and integers to text, padding of cleartext messages, +various speed-ups such as Montgomery reduction and the Chinese remainder theorem, +and the latest factoring algorithms. +RSA authentication is not covered because the math is identical to that of RSA encryption. + +The presentation differs in several ways from conventional treatments of the RSA algorithm. +The algebraic equations utilize ring notation and equal signs +rather than modular notation and equivalence signs. +Instead of Euler's totient function and Fermat's little theorem, +a proof of the RSA identity employs the Carmichael function +and a corollary from the literature.\cite{ray-attack} + diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..31e553b --- /dev/null +++ b/main.tex @@ -0,0 +1,121 @@ +%%%% why-RSA-works/main.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +\documentclass{article} +%\pagestyle{empty} + +%%%% Various environments +\usepackage{verbatim} +\usepackage{graphicx} +\usepackage{latexsym} +\usepackage{amssymb} + +%%%% Easy-vision mode +\usepackage[usenames]{color} +\pagecolor{black} +\color{green} + +%%%% math-mode commands +\newcommand{\lcm}{\mathrm{lcm}} + +%%%% PDF metadata +\pdfinfo +{ /Title (Why RSA Works) + /Author (Peter Franusic) + /Subject (Rivest-Shamir-Adleman algorithm) + /Keywords (RSA, Carmichael, public-key, cryptography) +} + +%%%% European-style paragraphs +%%%% IMPORTANT: \begin{document} must follow for this to work. +\setlength{\parindent}{0pt} +\setlength{\parskip}{1.3ex} + +%%%% Title block +\title{\textbf{\huge{Why RSA Works}}} +\author{Peter Franu\v si\'c + \footnote{ + Copyright 2012 Peter Franu\v si\'c. + All rights reserved. + Email: \texttt{pete@sargo.com}}} +\date{} + +\begin{document} + +%% Title page +\maketitle +\thispagestyle{empty} +\vspace{8ex} +\input{intro.tex} + +\newpage +\section{Huge integers} +\input{huge-integers.tex} + +\newpage +\section{Simulation} +\input{simulation.tex} + +\newpage +\section{Rings} +\input{rings.tex} + +\section{The set $Z_n$} +\input{set-Zn.tex} + +\newpage +\section{The $\oplus$ operator} +\input{oplus-operator.tex} + +\newpage +\section{The $\otimes$ operator} +\input{otimes-operator.tex} + +\newpage +\section{Exponential notation} +\input{exponential-notation.tex} + +\newpage +\section{The modex function} +\input{modex-function.tex} + +\newpage +\section{Exponent arithmetic} +\input{exponent-arithmetic.tex} + +\newpage +\section{Multiple-plus-one} +\input{multiple-plus-one.tex} + +\newpage +\section{Exponential tables} +\input{exponential-tables.tex} + +\newpage +\section{Wallpaper} +\input{wallpaper.tex} + +\newpage +\section{Mappings} +\input{mappings.tex} + +\newpage +\section{A simple proof} +\input{simple-proof.tex} + +\newpage +\section{Hard problems} +\input{hard-problems.tex} + +\newpage +\section{Conclusions} +\input{conclusions.tex} + +\newpage +%%%% References +\input{references.tex} + +\end{document} + diff --git a/makefile b/makefile new file mode 100644 index 0000000..66e06c2 --- /dev/null +++ b/makefile @@ -0,0 +1,49 @@ +# why-RSA-works/makefile +# Copyright 2012 Peter Franusic. +# All rights reserved. +# + +MISC= README \ + makefile \ + +TEXS= block-diagram.tex \ + conclusions.tex \ + exponent-arithmetic.tex \ + exponential-notation.tex \ + exponential-tables.tex \ + factor-ops.tex \ + hard-problems.tex \ + huge-integers.tex \ + intro.tex \ + main.tex \ + mappings.tex \ + modex-15.tex \ + modex-33-arrows.tex \ + modex-33-cols.tex \ + modex-33.tex \ + modex-function.tex \ + mult-plus-one.tex \ + multiple-plus-one.tex \ + oplus-15.tex \ + oplus-operator.tex \ + otimes-15.tex \ + otimes-operator.tex \ + references.tex \ + rings.tex \ + set-Zn.tex \ + simple-proof.tex \ + simulation.tex \ + wallpaper.tex \ + + +why-RSA-works.pdf: ${TEXS}$ + pdflatex main.tex + pdflatex main.tex + mv main.pdf why-RSA-works.pdf + +why-RSA-works.tar: ${TEXS}$ ${MISC}$ + tar -cvf why-RSA-works.tar ${MISC}$ ${TEXS}$ why-RSA-works.pdf + +clean: + rm *~ *.aux *.log + diff --git a/mappings.tex b/mappings.tex new file mode 100644 index 0000000..ce3f797 --- /dev/null +++ b/mappings.tex @@ -0,0 +1,107 @@ +%%%% why-RSA-works/mappings.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +%% The goal of this section is to present RSA encryption and decrypttion as two mappings +%% and try to explain why this works. +%% Leverage the modex-33 table to provide a concrete example. +%% Perhaps offer a theorem which asserts: If $e$ is relatively prime to $\lambda$, +%% then column $e$ will contain all elements of $Z_n$. + +%% Introduce the two mappings $m \to m^3$ and $c \to c^7$. +RSA encryption maps an integer $m$ to an integer $m^e$. +Likewise, RSA decryption maps an integer $c$ to an integer $c^d$. +This is demonstrated in Table \ref{modex-33-cols}, where $e=3$ and $d=7$. +In the encryption procedure, +every element in the $m$ column maps to a unique element in the $m^3$ column. +And in the decryption procedure, +every element in the $c$ column maps to a unique element in the $c^7$ column. + +%%%% modex-33 columns and arrows +\begin{table}[!h] + \begin{center} + \input{modex-33-cols.tex} + \caption{$m \to c \to y \quad (\mathcal{R}_{33})$} + \label{modex-33-cols} + \end{center} +\end{table} +\input{modex-33-arrows.tex} + +% Give an example of $m \to y$. +The table also illustrates an example. +First $m=13$ is mapped to $m^3=19$ which then becomes $c$. +Subsequently $c=19$ is mapped to $c^7=13$ which then becomes $y$. +The final result, $y=13$, is identical to the original, $m=13$. +This is how RSA works, no matter which $m$ one starts with, no matter how large $n$ is. +The final $y$ will always be identical to the original $m$. + +%% Here's a question we haven't really answered: +%% Why are the elements in columns $e$ and $d$ arranged the way they are? +%% We know that $(m^e)^d=m$ for all $m$ by way of the proof. +%% But how did the elements in columns $e$ and $d$ get in the right order? + +\newpage + +%% Point out that some $c=m$. +Some of the values in column $m$ are the same as their corresponding value in $m^3$. +For example, $10 \to 10$. There are 9 of these, out of a total of 33. +That means that 28 percent of the ciphertexts are identical to their plaintext messages. +This would be unacceptable, of course, +except that the percentage is infinitesimal for huge values of $n$. + +%% Point out that each column contains every element in $Z_n$. +Columns $m^3$ and $c^7$ each contain every element in $Z_{33}$. +This is a requirement in order to make the two mappings work, so that $y=m$, +Every element in $m$ needs to map to a unique element in $m^3$, +and every element in $c$ must map to a unique element in $c^7$. +If this were not the case, +if some element in $Z_{33}$ was not in column $m^3$, +or if some element in $Z_{33}$ was in column $m^3$ more than once, +then RSA would not work for every $m$ in $Z_{33}$. + +%% Point out that some columns \emph{do not} contain every element, +%% and that neither column number shares a prime factor with $\lambda$. +Refer again to Table \ref{modex-33} in the Wallpaper section. +Many of the columns do not contain every element in $Z_{33}$. +These are columns 0, 2, 4, 5, 6, 8, 10, 12, 14, 15, 16, 18, 20, 22, 24, 25, 26, 28, 30, and 32. +That's 20 out of 33 columns, or 61 percent. +In each of these columns, some elements of $Z_{33}$ are missing and some appear more than once. +For example, the element 1 appears more that once in each of these columns. + +It turns out that for each of these columns (except column 0), +the column number shares a prime factor with $\lambda=10$. +The prime factors of 10 are 2 and 5. +So if a column number is a multiple of 2 or a multiple of 5, +the column itself won't contain every element in $Z_{33}$. +Notice that neither 3 nor 7 shares a prime factor with $\lambda$. + +%% Define the greatest common divisor function and give an example. +We can use the \emph{greatest common divisor} function ($\gcd$) +to determine if two integers share a prime factor. +When the two integers are small we can compute the greatest common divisor by hand. +As an example we compute the gcd of 6468 and 7560 by hand. +First we list the prime factors of 6468 and the prime factors of 7560. +Then we list the prime factors that are common to both. +Finally, we compute the product of these common factors. +This gives us the gcd. +\begin{center} +\begin{tabular}{lcl} + Factors of 6468 &=& $2 \cdot 2 \cdot 3 \cdot 7 \cdot 7 \cdot 11$ \\ + Factors of 7560 &=& $2 \cdot 2 \cdot 2 \cdot 3 \cdot 3 \cdot 3 \cdot 5 \cdot 7$ \\ + Common to both &=& $2 \cdot 2 \cdot 3 \cdot 7$ \\ + $\gcd(6468,7560)$ &=& 84 +\end{tabular} +\end{center} + +Most implementations of the gcd function return 1 if no prime factors are shared. +Therefore, if the $\gcd$ function returns anything greater than 1, +we are assured that the two numbers share one or more prime factors. +RSA uses the $\gcd$ function during key generation +in order to select an encryptor $e$ that shares no prime factors with $\lambda$. + +%% Point out that this pair of column numbers meets the multiples-plus-one condition. +%% Finally, we note that $e=3$ and $d=7$ meet the multiples-plus-one condition. +%% That is, $ed=k\lambda+1$ where $\lambda=10$. +%% \[ ed = (3)(7) = 21 = 2 \cdot 10 + 1 \] + diff --git a/modex-15.tex b/modex-15.tex new file mode 100644 index 0000000..4b8396d --- /dev/null +++ b/modex-15.tex @@ -0,0 +1,27 @@ +%%%% why-RSA-works/modex-15.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +\begin{footnotesize} +\begin{tabular} + {c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c} + & \phantom{X} + & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 \\ + & & \phantom{10} & & & & & & & & & & & & & & \\ + 0 & & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 1 & & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ + 2 & & 1 & 2 & 4 & 8 & 1 & 2 & 4 & 8 & 1 & 2 & 4 & 8 & 1 & 2 & 4 \\ + 3 & & 1 & 3 & 9 & 12 & 6 & 3 & 9 & 12 & 6 & 3 & 9 & 12 & 6 & 3 & 9 \\ + 4 & & 1 & 4 & 1 & 4 & 1 & 4 & 1 & 4 & 1 & 4 & 1 & 4 & 1 & 4 & 1 \\ + 5 & & 1 & 5 & 10 & 5 & 10 & 5 & 10 & 5 & 10 & 5 & 10 & 5 & 10 & 5 & 10 \\ + 6 & & 1 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 \\ + 7 & & 1 & 7 & 4 & 13 & 1 & 7 & 4 & 13 & 1 & 7 & 4 & 13 & 1 & 7 & 4 \\ + 8 & & 1 & 8 & 4 & 2 & 1 & 8 & 4 & 2 & 1 & 8 & 4 & 2 & 1 & 8 & 4 \\ + 9 & & 1 & 9 & 6 & 9 & 6 & 9 & 6 & 9 & 6 & 9 & 6 & 9 & 6 & 9 & 6 \\ + 10 & & 1 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 \\ + 11 & & 1 & 11 & 1 & 11 & 1 & 11 & 1 & 11 & 1 & 11 & 1 & 11 & 1 & 11 & 1 \\ + 12 & & 1 & 12 & 9 & 3 & 6 & 12 & 9 & 3 & 6 & 12 & 9 & 3 & 6 & 12 & 9 \\ + 13 & & 1 & 13 & 4 & 7 & 1 & 13 & 4 & 7 & 1 & 13 & 4 & 7 & 1 & 13 & 4 \\ + 14 & & 1 & 14 & 1 & 14 & 1 & 14 & 1 & 14 & 1 & 14 & 1 & 14 & 1 & 14 & 1 \\ +\end{tabular} +\end{footnotesize} diff --git a/modex-33-arrows.tex b/modex-33-arrows.tex new file mode 100644 index 0000000..6826a59 --- /dev/null +++ b/modex-33-arrows.tex @@ -0,0 +1,97 @@ +%%%% why-RSA-works/modex-33-arrows.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +\vspace{-385pt} +\setlength{\unitlength}{1pt} % default value is 1pt +\begin{picture}(345,375) + +% Put box around picture. +%% \put( 0, 0){\line(1,0){345}} % bottom +%% \put( 0,375){\line(1,0){345}} % top +%% \put( 0, 0){\line(0,1){375}} % left +%% \put(345, 0){\line(0,1){375}} % right + +% Draw arrows to map m to m^3. +\put( 80,343.5){\vector(1,0){16}} % 0 +\put( 80,334.0){\vector(1,0){16}} % 1 +\put( 80,324.5){\vector(1,0){16}} % 2 +\put( 80,315.0){\vector(1,0){16}} % 3 +\put( 80,305.5){\vector(1,0){16}} % 4 +\put( 80,296.0){\vector(1,0){16}} % 5 +\put( 80,286.5){\vector(1,0){16}} % 6 +\put( 80,277.0){\vector(1,0){16}} % 7 +\put( 80,267.5){\vector(1,0){16}} % 8 +\put( 80,258.0){\vector(1,0){16}} % 9 +\put( 80,248.5){\vector(1,0){16}} % 10 +\put( 80,239.0){\vector(1,0){16}} % 11 +\put( 80,229.5){\vector(1,0){16}} % 12 +\put( 80,220.0){\vector(1,0){16}} % 13 +\put( 80,210.5){\vector(1,0){16}} % 14 +\put( 80,201.0){\vector(1,0){16}} % 15 +\put( 80,191.5){\vector(1,0){16}} % 16 +\put( 80,182.0){\vector(1,0){16}} % 17 +\put( 80,172.5){\vector(1,0){16}} % 18 +\put( 80,163.0){\vector(1,0){16}} % 19 +\put( 80,153.5){\vector(1,0){16}} % 20 +\put( 80,144.0){\vector(1,0){16}} % 21 +\put( 80,134.5){\vector(1,0){16}} % 22 +\put( 80,125.0){\vector(1,0){16}} % 23 +\put( 80,115.5){\vector(1,0){16}} % 24 +\put( 80,106.0){\vector(1,0){16}} % 25 +\put( 80, 96.5){\vector(1,0){16}} % 26 +\put( 80, 87.0){\vector(1,0){16}} % 27 +\put( 80, 77.5){\vector(1,0){16}} % 28 +\put( 80, 68.0){\vector(1,0){16}} % 29 +\put( 80, 58.5){\vector(1,0){16}} % 30 +\put( 80, 49.0){\vector(1,0){16}} % 31 +\put( 80, 39.5){\vector(1,0){16}} % 32 + +% Draw arrows to map c to c^3. +\put(180,343.5){\vector(1,0){16}} % 0 +\put(180,334.0){\vector(1,0){16}} % 1 +\put(180,324.5){\vector(1,0){16}} % 2 +\put(180,315.0){\vector(1,0){16}} % 3 +\put(180,305.5){\vector(1,0){16}} % 4 +\put(180,296.0){\vector(1,0){16}} % 5 +\put(180,286.5){\vector(1,0){16}} % 6 +\put(180,277.0){\vector(1,0){16}} % 7 +\put(180,267.5){\vector(1,0){16}} % 8 +\put(180,258.0){\vector(1,0){16}} % 9 +\put(180,248.5){\vector(1,0){16}} % 10 +\put(180,239.0){\vector(1,0){16}} % 11 +\put(180,229.5){\vector(1,0){16}} % 12 +\put(180,220.0){\vector(1,0){16}} % 13 +\put(180,210.5){\vector(1,0){16}} % 14 +\put(180,201.0){\vector(1,0){16}} % 15 +\put(180,191.5){\vector(1,0){16}} % 16 +\put(180,182.0){\vector(1,0){16}} % 17 +\put(180,172.5){\vector(1,0){16}} % 18 +\put(180,163.0){\vector(1,0){16}} % 19 +\put(180,153.5){\vector(1,0){16}} % 20 +\put(180,144.0){\vector(1,0){16}} % 21 +\put(180,134.5){\vector(1,0){16}} % 22 +\put(180,125.0){\vector(1,0){16}} % 23 +\put(180,115.5){\vector(1,0){16}} % 24 +\put(180,106.0){\vector(1,0){16}} % 25 +\put(180, 96.5){\vector(1,0){16}} % 26 +\put(180, 87.0){\vector(1,0){16}} % 27 +\put(180, 77.5){\vector(1,0){16}} % 28 +\put(180, 68.0){\vector(1,0){16}} % 29 +\put(180, 58.5){\vector(1,0){16}} % 30 +\put(180, 49.0){\vector(1,0){16}} % 31 +\put(180, 39.5){\vector(1,0){16}} % 32 + +% Draw 3 lines for m^3 to c. +\put(114, 220){\line(1,0){23}} % upper horz. +\put(137, 163){\line(0,1){57}} % vertical +\put(137, 163){\vector(1,0){26}} % lower horz. + +% Draw 3 lines for c^3 to y. +\put(211, 163){\line(1,0){23}} % lower horz. +\put(234, 163){\line(0,1){57}} % vertical +\put(234, 220){\vector(1,0){26}} % upper horz. + +% The End +\end{picture} diff --git a/modex-33-cols.tex b/modex-33-cols.tex new file mode 100644 index 0000000..b82f054 --- /dev/null +++ b/modex-33-cols.tex @@ -0,0 +1,44 @@ +%%%% why-RSA-works/modex-33-cols.tex +%%%% Copyright 2012 Pete Franusic. +%%%% All rights reserved. +%%%% +\begin{footnotesize} +\begin{tabular}{ccccccccc} + $m$ & & $m^3$ & \phantom{XXXXX} & + $c$ & & $c^7$ & \phantom{XXXXX} & $y$ \\ + & & & & & & & & \\ + 0 & & 0 & & 0 & & 0 & & 0 \\ + 1 & & 1 & & 1 & & 1 & & 1 \\ + 2 & & 8 & & 2 & & 29 & & 2 \\ + 3 & & 27 & & 3 & & 9 & & 3 \\ + 4 & & 31 & & 4 & & 16 & & 4 \\ + 5 & & 26 & & 5 & & 14 & & 5 \\ + 6 & & 18 & & 6 & & 30 & & 6 \\ + 7 & & 13 & & 7 & & 28 & & 7 \\ + 8 & & 17 & & 8 & & 2 & & 8 \\ + 9 & & 3 & & 9 & & 15 & & 9 \\ + 10 & & 10 & & 10 & & 10 & & 10 \\ + 11 & & 11 & & 11 & & 11 & & 11 \\ + 12 & & 12 & & 12 & & 12 & & 12 \\ + 13 & & 19 & & 13 & & 7 & & 13 \\ + 14 & & 5 & & 14 & & 20 & & 14 \\ + 15 & & 9 & & 15 & & 27 & & 15 \\ + 16 & & 4 & & 16 & & 25 & & 16 \\ + 17 & & 29 & & 17 & & 8 & & 17 \\ + 18 & & 24 & & 18 & & 6 & & 18 \\ + 19 & & 28 & & 19 & & 13 & & 19 \\ + 20 & & 14 & & 20 & & 26 & & 20 \\ + 21 & & 21 & & 21 & & 21 & & 21 \\ + 22 & & 22 & & 22 & & 22 & & 22 \\ + 23 & & 23 & & 23 & & 23 & & 23 \\ + 24 & & 30 & & 24 & & 18 & & 24 \\ + 25 & & 16 & & 25 & & 31 & & 25 \\ + 26 & & 20 & & 26 & & 5 & & 26 \\ + 27 & & 15 & & 27 & & 3 & & 27 \\ + 28 & & 7 & & 28 & & 19 & & 28 \\ + 29 & & 2 & & 29 & & 17 & & 29 \\ + 30 & & 6 & & 30 & & 24 & & 30 \\ + 31 & & 25 & & 31 & & 4 & & 31 \\ + 32 & & 32 & & 32 & & 32 & & 32 \\ +\end{tabular} +\end{footnotesize} diff --git a/modex-33.tex b/modex-33.tex new file mode 100644 index 0000000..22113ba --- /dev/null +++ b/modex-33.tex @@ -0,0 +1,45 @@ +%%%% why-RSA-works/modex-33.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +\begin{footnotesize} +\begin{tabular} + {c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c} + & \phantom{X} + & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27 & 28 & 29 & 30 & 31 & 32 \\ + & & \phantom{99} & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\ + 0 & & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 1 & & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ + 2 & & 1 & 2 & 4 & 8 & 16 & 32 & 31 & 29 & 25 & 17 & 1 & 2 & 4 & 8 & 16 & 32 & 31 & 29 & 25 & 17 & 1 & 2 & 4 & 8 & 16 & 32 & 31 & 29 & 25 & 17 & 1 & 2 & 4 \\ + 3 & & 1 & 3 & 9 & 27 & 15 & 12 & 3 & 9 & 27 & 15 & 12 & 3 & 9 & 27 & 15 & 12 & 3 & 9 & 27 & 15 & 12 & 3 & 9 & 27 & 15 & 12 & 3 & 9 & 27 & 15 & 12 & 3 & 9 \\ + 4 & & 1 & 4 & 16 & 31 & 25 & 1 & 4 & 16 & 31 & 25 & 1 & 4 & 16 & 31 & 25 & 1 & 4 & 16 & 31 & 25 & 1 & 4 & 16 & 31 & 25 & 1 & 4 & 16 & 31 & 25 & 1 & 4 & 16 \\ + 5 & & 1 & 5 & 25 & 26 & 31 & 23 & 16 & 14 & 4 & 20 & 1 & 5 & 25 & 26 & 31 & 23 & 16 & 14 & 4 & 20 & 1 & 5 & 25 & 26 & 31 & 23 & 16 & 14 & 4 & 20 & 1 & 5 & 25 \\ + 6 & & 1 & 6 & 3 & 18 & 9 & 21 & 27 & 30 & 15 & 24 & 12 & 6 & 3 & 18 & 9 & 21 & 27 & 30 & 15 & 24 & 12 & 6 & 3 & 18 & 9 & 21 & 27 & 30 & 15 & 24 & 12 & 6 & 3 \\ + 7 & & 1 & 7 & 16 & 13 & 25 & 10 & 4 & 28 & 31 & 19 & 1 & 7 & 16 & 13 & 25 & 10 & 4 & 28 & 31 & 19 & 1 & 7 & 16 & 13 & 25 & 10 & 4 & 28 & 31 & 19 & 1 & 7 & 16 \\ + 8 & & 1 & 8 & 31 & 17 & 4 & 32 & 25 & 2 & 16 & 29 & 1 & 8 & 31 & 17 & 4 & 32 & 25 & 2 & 16 & 29 & 1 & 8 & 31 & 17 & 4 & 32 & 25 & 2 & 16 & 29 & 1 & 8 & 31 \\ + 9 & & 1 & 9 & 15 & 3 & 27 & 12 & 9 & 15 & 3 & 27 & 12 & 9 & 15 & 3 & 27 & 12 & 9 & 15 & 3 & 27 & 12 & 9 & 15 & 3 & 27 & 12 & 9 & 15 & 3 & 27 & 12 & 9 & 15 \\ + 10 & & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 & 10 & 1 \\ + 11 & & 1 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 & 11 & 22 \\ + 12 & & 1 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 & 12 \\ + 13 & & 1 & 13 & 4 & 19 & 16 & 10 & 31 & 7 & 25 & 28 & 1 & 13 & 4 & 19 & 16 & 10 & 31 & 7 & 25 & 28 & 1 & 13 & 4 & 19 & 16 & 10 & 31 & 7 & 25 & 28 & 1 & 13 & 4 \\ + 14 & & 1 & 14 & 31 & 5 & 4 & 23 & 25 & 20 & 16 & 26 & 1 & 14 & 31 & 5 & 4 & 23 & 25 & 20 & 16 & 26 & 1 & 14 & 31 & 5 & 4 & 23 & 25 & 20 & 16 & 26 & 1 & 14 & 31 \\ + 15 & & 1 & 15 & 27 & 9 & 3 & 12 & 15 & 27 & 9 & 3 & 12 & 15 & 27 & 9 & 3 & 12 & 15 & 27 & 9 & 3 & 12 & 15 & 27 & 9 & 3 & 12 & 15 & 27 & 9 & 3 & 12 & 15 & 27 \\ + 16 & & 1 & 16 & 25 & 4 & 31 & 1 & 16 & 25 & 4 & 31 & 1 & 16 & 25 & 4 & 31 & 1 & 16 & 25 & 4 & 31 & 1 & 16 & 25 & 4 & 31 & 1 & 16 & 25 & 4 & 31 & 1 & 16 & 25 \\ + 17 & & 1 & 17 & 25 & 29 & 31 & 32 & 16 & 8 & 4 & 2 & 1 & 17 & 25 & 29 & 31 & 32 & 16 & 8 & 4 & 2 & 1 & 17 & 25 & 29 & 31 & 32 & 16 & 8 & 4 & 2 & 1 & 17 & 25 \\ + 18 & & 1 & 18 & 27 & 24 & 3 & 21 & 15 & 6 & 9 & 30 & 12 & 18 & 27 & 24 & 3 & 21 & 15 & 6 & 9 & 30 & 12 & 18 & 27 & 24 & 3 & 21 & 15 & 6 & 9 & 30 & 12 & 18 & 27 \\ + 19 & & 1 & 19 & 31 & 28 & 4 & 10 & 25 & 13 & 16 & 7 & 1 & 19 & 31 & 28 & 4 & 10 & 25 & 13 & 16 & 7 & 1 & 19 & 31 & 28 & 4 & 10 & 25 & 13 & 16 & 7 & 1 & 19 & 31 \\ + 20 & & 1 & 20 & 4 & 14 & 16 & 23 & 31 & 26 & 25 & 5 & 1 & 20 & 4 & 14 & 16 & 23 & 31 & 26 & 25 & 5 & 1 & 20 & 4 & 14 & 16 & 23 & 31 & 26 & 25 & 5 & 1 & 20 & 4 \\ + 21 & & 1 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 & 21 & 12 \\ + 22 & & 1 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 & 22 \\ + 23 & & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 & 23 & 1 \\ + 24 & & 1 & 24 & 15 & 30 & 27 & 21 & 9 & 18 & 3 & 6 & 12 & 24 & 15 & 30 & 27 & 21 & 9 & 18 & 3 & 6 & 12 & 24 & 15 & 30 & 27 & 21 & 9 & 18 & 3 & 6 & 12 & 24 & 15 \\ + 25 & & 1 & 25 & 31 & 16 & 4 & 1 & 25 & 31 & 16 & 4 & 1 & 25 & 31 & 16 & 4 & 1 & 25 & 31 & 16 & 4 & 1 & 25 & 31 & 16 & 4 & 1 & 25 & 31 & 16 & 4 & 1 & 25 & 31 \\ + 26 & & 1 & 26 & 16 & 20 & 25 & 23 & 4 & 5 & 31 & 14 & 1 & 26 & 16 & 20 & 25 & 23 & 4 & 5 & 31 & 14 & 1 & 26 & 16 & 20 & 25 & 23 & 4 & 5 & 31 & 14 & 1 & 26 & 16 \\ + 27 & & 1 & 27 & 3 & 15 & 9 & 12 & 27 & 3 & 15 & 9 & 12 & 27 & 3 & 15 & 9 & 12 & 27 & 3 & 15 & 9 & 12 & 27 & 3 & 15 & 9 & 12 & 27 & 3 & 15 & 9 & 12 & 27 & 3 \\ + 28 & & 1 & 28 & 25 & 7 & 31 & 10 & 16 & 19 & 4 & 13 & 1 & 28 & 25 & 7 & 31 & 10 & 16 & 19 & 4 & 13 & 1 & 28 & 25 & 7 & 31 & 10 & 16 & 19 & 4 & 13 & 1 & 28 & 25 \\ + 29 & & 1 & 29 & 16 & 2 & 25 & 32 & 4 & 17 & 31 & 8 & 1 & 29 & 16 & 2 & 25 & 32 & 4 & 17 & 31 & 8 & 1 & 29 & 16 & 2 & 25 & 32 & 4 & 17 & 31 & 8 & 1 & 29 & 16 \\ + 30 & & 1 & 30 & 9 & 6 & 15 & 21 & 3 & 24 & 27 & 18 & 12 & 30 & 9 & 6 & 15 & 21 & 3 & 24 & 27 & 18 & 12 & 30 & 9 & 6 & 15 & 21 & 3 & 24 & 27 & 18 & 12 & 30 & 9 \\ + 31 & & 1 & 31 & 4 & 25 & 16 & 1 & 31 & 4 & 25 & 16 & 1 & 31 & 4 & 25 & 16 & 1 & 31 & 4 & 25 & 16 & 1 & 31 & 4 & 25 & 16 & 1 & 31 & 4 & 25 & 16 & 1 & 31 & 4 \\ + 32 & & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 & 32 & 1 \\ +\end{tabular} +\end{footnotesize} diff --git a/modex-function.tex b/modex-function.tex new file mode 100644 index 0000000..93578d3 --- /dev/null +++ b/modex-function.tex @@ -0,0 +1,60 @@ +%%%% why-RSA-works/modex-function.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +The term \emph{modex} is a contraction of modular exponentiation. +The modex function performs exponentiation in the ring $\mathcal{R}_n$. +It performs the equivalent of a series of $\otimes$ operations. + +The RSA cryptosystem in Figure \ref{block-diagram} uses two modex functions: +one in the transmitter and the other in the receiver. +Both modex functions have three inputs and one output. +We specify the output equation for each. + +\paragraph{Receiver output equation:} +The receiver's modex function takes the inputs $c,n,d$ and computes the output $y$. +The modex output $y$ is the equivalent of $d$ copies of $c$ multiplied together using +the $\otimes$ operator in the ring $\mathcal{R}_n$. +\begin{equation} \label{eq:rx-out} + y = c^d +\end{equation} + +\paragraph{Transmitter output equation:} +The transmitter takes the inputs $m,n,e$ and computes the output $c$. +The modex output $c$ is the equivalent of $e$ copies of $m$ multiplied together using +the $\otimes$ operator in the ring $\mathcal{R}_n$. +\begin{equation} \label{eq:tx-out} + c = m^e +\end{equation} + +\vspace{4ex} + +The modex function doesn't actually multiply $e$ copies of $m$ in order to compute $m^e$. +This would take eons for huge values of $e$. +Instead, modex actually uses a method called \emph{square-and-multiply}. +A register $r$ is first initialized to $m$. +Then it's repeatedly squared $(r \otimes r)$ and multiplied $(r \otimes m)$ +depending on the number of bits in $e$ and the value of each bit. +For example, if $e$ is 1024 bits long, there'll be 1023 squares and about 512 multiplies. +A lot less than $2^{1024}$ multiplies. + +The modex function uses the $\otimes$ operator in the ring $\mathcal{R}_n$. +Recall that the $\otimes$ operator takes two integers, multiplies them, +then subtracts some multiple of $n$ so that the result is in $Z_n$. +That is, $a \otimes b = ab - kn$. +The subtraction step is called \emph{reduction} and may be implemented +by taking the remainder of a division. +The product $ab$ is divided by $n$, the quotient is $k$, and the remainder is $ab-kn$. +But division is time consuming, and +most modex implementations do not use division for the reduction step. +Instead, they use a faster method called \emph{Montgomery reduction}, +which replaces slow divisions with fast truncations. + +The modex function can be very time-consuming to compute. +Square-and-multiply and Montgomery reduction are two \emph{speed-ups} +that are used to shorten the compute time. There are others. +The enumeration and details of these speed-ups are outside the scope of this paper, +but they are well-documented in the literature. +\cite{Koc}\cite{Schneier}\cite{HAC} + diff --git a/mult-plus-one.tex b/mult-plus-one.tex new file mode 100644 index 0000000..59bc002 --- /dev/null +++ b/mult-plus-one.tex @@ -0,0 +1,14 @@ +%%%% why-RSA-works/mult-plus-one.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +\begin{tabular}{llll} +$911 \cdot 191 = 174001$ & $931 \cdot 971 = 904001$ & $951 \cdot 551 = 524001$ & $971 \cdot 931 = 904001$ \\ +$913 \cdot 977 = 892001$ & $933 \cdot 597 = 557001$ & $953 \cdot 617 = 588001$ & $973 \cdot 37 = 36001$ \\ +$917 \cdot 253 = 232001$ & $937 \cdot 873 = 818001$ & $957 \cdot 93 = 89001$ & $977 \cdot 913 = 892001$ \\ +$919 \cdot 679 = 624001$ & $939 \cdot 459 = 431001$ & $959 \cdot 439 = 421001$ & $979 \cdot 619 = 606001$ \\ +$921 \cdot 481 = 443001$ & $941 \cdot 661 = 622001$ & $961 \cdot 641 = 616001$ & $981 \cdot 421 = 413001$ \\ +$923 \cdot 987 = 911001$ & $943 \cdot 807 = 761001$ & $963 \cdot 27 = 26001$ & $983 \cdot 647 = 636001$ \\ +$927 \cdot 863 = 800001$ & $947 \cdot 283 = 268001$ & $967 \cdot 303 = 293001$ & $987 \cdot 923 = 911001$ \\ +$929 \cdot 169 = 157001$ & $949 \cdot 549 = 521001$ & $969 \cdot 129 = 125001$ & $989 \cdot 909 = 899001$ \\ +\end{tabular} diff --git a/multiple-plus-one.tex b/multiple-plus-one.tex new file mode 100644 index 0000000..2741d90 --- /dev/null +++ b/multiple-plus-one.tex @@ -0,0 +1,59 @@ +%%%% why-RSA-works/multiple-plus-one.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +RSA uses two integers as exponents. +One is the encryptor $e$ and the other is the decryptor $d$. +In order for RSA to work, the product $ed$ must satisfy a strict condition. +The condition is that the product $ed$ must have a \emph{multiple-plus-one} form. +The product must be able to be written in the form $k\lambda+1$. +The reason for this condition will become apparent later. +For now, however, we need to understand what the expression $k\lambda+1$ means. + +%% This paragraph shall introduce Table \ref{mult-plus-one} below. +Table \ref{mult-plus-one} contains some examples of multiple-plus-one products. +Each product ends in 001. +Each product is a multiple of 1000, plus one. +In the first example, the product 174001 is equal to $174 \cdot 1000 + 1$. + +\vspace{2ex} +%%%% multiple-plus-one table +\begin{table}[!ht] + \begin{small} + \input{mult-plus-one.tex} + \end{small} + \caption{Multiples of 1000, plus one} + \label{mult-plus-one} +\end{table} +\vspace{2ex} + +%% This paragraph shall introduce $\lambda$. +The Greek letter $\lambda$ (pronounced \textsf{LAM duh}) +is specified in the RSA literature.\cite{RSA-standard} +We use $\lambda$ here as an integer constant. +It typically has a huge value, almost as large as modulus $n$. +In the context of Table \ref{mult-plus-one} it has a small value, $\lambda=1000$. +The products can therefore be written like this: +\begin{eqnarray*} + 911 \cdot 191 &=& 174 \lambda + 1 \\ + 913 \cdot 977 &=& 892 \lambda + 1 \\ + 917 \cdot 253 &=& 232 \lambda + 1 \\ + & \vdots & +\end{eqnarray*} + +%% This paragraph shall explain that $k$ is some unspecified positive integer. +The products in the table can be written in the form $k\lambda+1$. +The symbol $k$ signifies some positive integer. +Its value is not important. +The term $k\lambda$ simply means \emph{some integer multiple of $\lambda$}. +This meaning of $k$ allows the multiple-plus-one condition to be stated succinctly. + +%% This paragraph shall formally state the condition. +\paragraph{Multiple-plus-one condition:} +Given positive integers $e$, $d$, and $\lambda$, +the product $ed$ shall be an integer multiple of $\lambda$, plus one. +\begin{equation} \label{eq:inv-pair} + ed = k\lambda + 1 +\end{equation} + diff --git a/oplus-15.tex b/oplus-15.tex new file mode 100644 index 0000000..80b9885 --- /dev/null +++ b/oplus-15.tex @@ -0,0 +1,27 @@ +%%%% why-RSA-works/oplus-15.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +\begin{footnotesize} +\begin{tabular} + {c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c} + & \phantom{X} + & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 \\ + & & & & & & & & & & & & & & & & \\ + 0 & & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 \\ + 1 & & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 \\ + 2 & & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 \\ + 3 & & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 \\ + 4 & & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 \\ + 5 & & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 \\ + 6 & & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 \\ + 7 & & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 \\ + 8 & & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ + 9 & & 9 & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ + 10 & & 10 & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\ + 11 & & 11 & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\ + 12 & & 12 & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\ + 13 & & 13 & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\ + 14 & & 14 & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 \\ +\end{tabular} +\end{footnotesize} diff --git a/oplus-operator.tex b/oplus-operator.tex new file mode 100644 index 0000000..48f8328 --- /dev/null +++ b/oplus-operator.tex @@ -0,0 +1,46 @@ +%%%% why-RSA-works/oplus-operator.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +When $n$ is small, the $\oplus$ operator can be specified using a table. +Table \ref{oplus-15} specifies the $\oplus$ operator for the ring $\mathcal{R}_{15}$. +The table is a 15 by 15 block of integers. There are 15 rows and 15 columns. +Recall that rows run left and right, columns run up and down. +Row numbers are specified by the extra column along the left side of the block. +Column numbers are specified by the extra row along the top of the block. +Note the diagonal stripe pattern that is visible in the table. + +\vspace{2ex} +%%%% oplus-15 table +\begin{table}[!ht] + \begin{center} + \input{oplus-15.tex} + \caption{$a \oplus b \quad (\mathcal{R}_{15})$} + \label{oplus-15} + \end{center} +\end{table} + +Table \ref{oplus-15} specifies the value of $a \oplus b$ for every possible pair of $a$ and $b$. +For example, let $a=10$ and $b=12$. +The value of $10 \oplus 12$ is specified at the intersection of row $10$ and column $12$. +This value is $7$. Therefore $10 \oplus 12 = 7$. + +Notice that every element in the table is in the set $Z_{15}$. +This demonstrates the \emph{additive closure} property of rings. +The additive closure property states that for every pair of elements $a$ and $b$ in $Z_n$, +the sum $a \oplus b$ is also an element in $Z_n$. +\[ a \oplus b \in Z_n \] + +The value of $a \oplus b$ can also be specified using a rule. +To compute $10 \oplus 12$ we first calculate $10 + 12$ to get 22. +Since 22 is not an element in $Z_{15}$ we subtract the modulus 15, i.e. $22 - 15 = 7$. +Since $7 \in Z_{15}$ we stop and 7 is our final result. + +In general, the $\oplus$ operator takes two integers $a$ and $b$, +adds them together using normal addition, +then subtracts some multiple of $n$ such that the final value is in $Z_n$. +The term $kn$ signifies some multiple of $n$. That is, $kn=0n,1n,2n,3n,\ldots$ +We simply use whichever $kn$ works in order to get closure, where $a \oplus b \in Z_n$. +\[ a \oplus b = a + b - kn \] + diff --git a/otimes-15.tex b/otimes-15.tex new file mode 100644 index 0000000..517b23e --- /dev/null +++ b/otimes-15.tex @@ -0,0 +1,27 @@ +%%%% why-RSA-works/otimes-15.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% +\begin{footnotesize} +\begin{tabular} + {c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c@{ }c} + & \phantom{X} + & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 \\ + & & & & & & & & & & & & & & & & \\ + 0 & & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 1 & & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 \\ + 2 & & 0 & 2 & 4 & 6 & 8 & 10 & 12 & 14 & 1 & 3 & 5 & 7 & 9 & 11 & 13 \\ + 3 & & 0 & 3 & 6 & 9 & 12 & 0 & 3 & 6 & 9 & 12 & 0 & 3 & 6 & 9 & 12 \\ + 4 & & 0 & 4 & 8 & 12 & 1 & 5 & 9 & 13 & 2 & 6 & 10 & 14 & 3 & 7 & 11 \\ + 5 & & 0 & 5 & 10 & 0 & 5 & 10 & 0 & 5 & 10 & 0 & 5 & 10 & 0 & 5 & 10 \\ + 6 & & 0 & 6 & 12 & 3 & 9 & 0 & 6 & 12 & 3 & 9 & 0 & 6 & 12 & 3 & 9 \\ + 7 & & 0 & 7 & 14 & 6 & 13 & 5 & 12 & 4 & 11 & 3 & 10 & 2 & 9 & 1 & 8 \\ + 8 & & 0 & 8 & 1 & 9 & 2 & 10 & 3 & 11 & 4 & 12 & 5 & 13 & 6 & 14 & 7 \\ + 9 & & 0 & 9 & 3 & 12 & 6 & 0 & 9 & 3 & 12 & 6 & 0 & 9 & 3 & 12 & 6 \\ + 10 & & 0 & 10 & 5 & 0 & 10 & 5 & 0 & 10 & 5 & 0 & 10 & 5 & 0 & 10 & 5 \\ + 11 & & 0 & 11 & 7 & 3 & 14 & 10 & 6 & 2 & 13 & 9 & 5 & 1 & 12 & 8 & 4 \\ + 12 & & 0 & 12 & 9 & 6 & 3 & 0 & 12 & 9 & 6 & 3 & 0 & 12 & 9 & 6 & 3 \\ + 13 & & 0 & 13 & 11 & 9 & 7 & 5 & 3 & 1 & 14 & 12 & 10 & 8 & 6 & 4 & 2 \\ + 14 & & 0 & 14 & 13 & 12 & 11 & 10 & 9 & 8 & 7 & 6 & 5 & 4 & 3 & 2 & 1 \\ +\end{tabular} +\end{footnotesize} diff --git a/otimes-operator.tex b/otimes-operator.tex new file mode 100644 index 0000000..6a8f0b9 --- /dev/null +++ b/otimes-operator.tex @@ -0,0 +1,47 @@ +%%%% why-RSA-works/otimes-operator.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +When $n$ is small, the $\otimes$ operator can be specified using a table. +Table \ref{otimes-15} specifies the $\otimes$ operator for the ring $\mathcal{R}_{15}$. +The format is the same as Table \ref{oplus-15}. The values, of course, are different. +Note the rose-like pattern visible in the table. +The table is symmetrical about the diagonals. +If we ignore column 0, then +row 1 is the reverse of row 14, row 2 is the reverse of row 13, etc. + +\vspace{2ex} +%%%% otimes-15 table +\begin{table}[!ht] + \begin{center} + \input{otimes-15.tex} + \caption{$a \otimes b \quad (\mathcal{R}_{15})$} + \label{otimes-15} + \end{center} +\end{table} + +Table \ref{otimes-15} specifies the value of $a \otimes b$ for every possible pair of $a$ and $b$. +For example, let $a=11$ and $b=8$. +The value of $11 \otimes 8$ is specified at the intersection of row $11$ and column $8$. +This value is $13$. Therefore $11 \otimes 8 = 13$. + +Notice that every element in the table is in the set $Z_{15}$. +This demonstrates the \emph{multiplicative closure} property of rings. +The multiplicative closure property states that for every pair of elements $a$ and $b$ in $Z_n$, +the product $a \otimes b$ is also an element in $Z_n$. +\[ a \otimes b \in Z_n \] + +The value of $a \otimes b$ can also be specified using a rule. +To compute $11 \otimes 8$ we first calculate $11 \times 8$ to get 88. +Since 88 is not an element in $Z_{15}$ we subtract a multiple of the modulus, $kn$. +In this case, $kn = 5 \times 15 = 75$. Therefore $88 - 75 = 13$. +And $13 \in Z_{15}$ so 13 is our final result. + +In general, the $\otimes$ operator takes two integers $a$ and $b$, +multiplies them together using normal multiplication, +then subtracts some multiple of $n$ such that the final value is in $Z_n$. +In other words, we subtract whichever $kn$ works in order to get closure, +where $a \otimes b \in Z_n$. +\[ a \otimes b = ab - kn \] + diff --git a/references.tex b/references.tex new file mode 100644 index 0000000..8867604 --- /dev/null +++ b/references.tex @@ -0,0 +1,47 @@ +%%%% why-RSA-works/references.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +\begin{thebibliography}{99} + +\bibitem{RSA-paper} + R. L. Rivest, A. Shamir, and L. Adleman. + A method for obtaining digital signatures and public-key cryptosystems. + \emph{Communications of the ACM}, 21(2):120-126. + +\bibitem{ray-attack} + Andreas de Vries. The ray attack, an inefficient trial to break RSA cryptosystems. + FH S\"udwestfalen University of Applied Sciences, Haldener StraBe 182, D-58095 Hagen, 2003. + +\bibitem{wiki-Rings} + Ring (mathematics). \emph{Wikipedia}, \verb$www.wikipedia.com$. + +\bibitem{Koc} + \c Cetin Kaya Ko\c c. High-speed RSA implementation. RSA Labs, 1994. + +\bibitem{Schneier} + Bruce Schneier. \emph{Applied Cryptography}. John Wiley \& Sons, 1994. + +\bibitem{HAC} + A. Menezes, P. van Oorschot, and S. Vanstone. + \emph{Handbook of Applied Cryptography}. CRC Press, 1996. + +\bibitem{RSA-standard} + PKCS \#1 v2.1: RSA cryptography standard. RSA Labs, 2002. + +\bibitem{Shor} + Peter W. Shor, + ``Polynomial-Time Algorithms for Prime Factorization and + Discrete Logarithms on a Quantum Computer,'' 1996. + +\bibitem{RSA-768} + Thorsten Kleinjung et al. + Factorization of a 768-bit RSA modulus. + Version 1.4, February 18, 2010. + +\bibitem{RSA-problem} + Ronald L. Rivest and Burt Kaliski. RSA problem. RSA Labs, 2003. + +\end{thebibliography} + diff --git a/rings.tex b/rings.tex new file mode 100644 index 0000000..b47b4c8 --- /dev/null +++ b/rings.tex @@ -0,0 +1,26 @@ +%%%% why-RSA-works/rings.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +RSA uses mathematical structures called rings. +A \emph{ring} is a set equipped with two binary operators.\cite{wiki-Rings} +The ring displays several well-defined algebraic properties, +including both additive closure and multiplicative closure. + +Recall that a set is simply a collection of elements. +These elements can be anything, but in the case of RSA, the elements are integers. +RSA uses sets with a finite number of elements. +The number of elements in a set is called the \emph{modulus}. +The modulus is represented by the symbol $n$. + +A binary operator is something that takes two elements and computes a third. +Rings use two binary operators, which we denote here as +$\oplus$ (pronounced \textsf{OH plus}) and $\otimes$ (pronounced \textsf{OH times}). +The $\oplus$ operator is similar to addition. +The $\otimes$ operator is similar to multiplication. + +In general, we say that the ring $\mathcal{R}_n$ +consists of the set $Z_n$, the $\oplus$ operator, and the $\otimes$ operator. +\[ \mathcal{R}_n = (Z_n,\oplus,\otimes) \] + diff --git a/set-Zn.tex b/set-Zn.tex new file mode 100644 index 0000000..65a5821 --- /dev/null +++ b/set-Zn.tex @@ -0,0 +1,31 @@ +%%%% why-RSA-works/set-Zn.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +A finite set $Z_n$ can be specified in several different ways. +When a set has just a few elements, they can be explicitly enumerated, listed within curly brackets. +For example, the set $Z_{15}$ consists of the 15 integers starting with 0 and ending with 14. +\[ Z_{15} = \{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14\} \] + +When a set has a huge number of elements, they cannot be enumerated. +But if a set consists entirely of sequential elements, it can be specified +by listing the first few elements, an ellipsis, and the last few elements. +For example, the set $Z_n$ consists of a sequence of $n$ integers, +starting with 0 and ending with $(n-1)$. +\[ Z_n = \{0,1,2,3,\ldots,(n-2),(n-1)\} \] + +When RSA generates a pair of keys, it selects some modulus $n$ +that is the product of two distinct primes $p$ and $q$. +The term \emph{product} means that we multiply $p$ times $q$. +Instead of writing $p \times q$ we use the abbreviation $pq$. +\[ n = pq \] + +The term \emph{distinct} means that $p$ and $q$ are different from each other. +That is, $p \ne q$. +Recall that a \emph{prime} is any integer greater than 1 +that cannot be divided evenly by any other integer except 1 and itself. +The first five primes are 2, 3, 5, 7, and 11. +In the example of $Z_{15}$ above, the modulus $15$ is +the product of the two distinct primes $3$ and $5$. + diff --git a/simple-proof.tex b/simple-proof.tex new file mode 100644 index 0000000..26f6639 --- /dev/null +++ b/simple-proof.tex @@ -0,0 +1,46 @@ +%%%% why-RSA-works/simple-proof.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +We need to convince ourselves that RSA works under a broad set of conditions. +That is, we need to demonstrate that we can start with any $m \in Z_n$, +perform two modex operations on it, and get $m$ back. +Here's the set of conditions: +\begin{itemize} +\item two prime integers $p$ and $q$ such that $p \ne q$ +\item the ring $\mathcal{R}_n = (Z_n,\oplus,\otimes)$ where $n=pq$ +\item exponential notation in $\mathcal{R}_n$ (e.g. $m^3 = m \otimes m \otimes m$) +\item the Carmichael function value $\lambda=\lcm(p-1,q-1)$ +\item two integers $e$ and $d$ such that $ed=k\lambda + 1$ +\item an integer $m$ such that $m \in Z_n$ +\end{itemize} + +Refer to the RSA cryptosystem of Figure \ref{block-diagram}. +The message $m$ is presented at the input of Bob's transmitter. +The message $y$ is produced at the output of Alice's receiver. +We will demonstrate that $y=m$. + +The receiver output equation (\ref{eq:rx-out}) states that $y=c^d$. +This is what we begin our proof with. +In the following steps, we will modify the right side of this equation. +\[ y = c^d \] + +The transmitter output equation (\ref{eq:tx-out}) states that $c=m^e$. +We replace $c$ in the equation above with $(m^e)$. +\[ y = (m^e)^d \] + +The exponent multiplication rule (\ref{eq:expo-mult}) states that $(m^e)^d=m^{ed}$. +We replace $(m^e)^d$ in the equation above with $m^{ed}$. +\[ y = m^{ed} \] + +The multiple-plus-one condition (\ref{eq:inv-pair}) states that $ed=k\lambda + 1$. +We replace $ed$ in the equation above with $k\lambda + 1$. +\[ y = m^{k\lambda + 1} \] + +The Carmichael identity (\ref{eq:carm-id}) states that $m=m^{k\lambda + 1}$. +We replace $m^{k\lambda + 1}$ in the equation above with $m$. +\[ y = m \] + +QED + diff --git a/simulation.tex b/simulation.tex new file mode 100644 index 0000000..3f1b404 --- /dev/null +++ b/simulation.tex @@ -0,0 +1,61 @@ +%%%% why-RSA-works/simulation.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +We can simulate RSA messaging using a Lisp interpreter. +Our version of Lisp uses a question mark for the prompt. +Lisp commands may be variable names or compound expressions. +The interpreter reads each command, evaluates it, and prints the result. + +Alice must precompute three integers before Bob can send her RSA encrypted messages. +These are \mbox{modulus $n$}, \mbox{encryptor $e$}, and \mbox{decryptor $d$}. +Some examples have been precomputed and are displayed below in decimal format. +Note that \mbox{modulus $n$} has 56 decimal digits. This turns out to be 186 bits. +A typical RSA modulus has at least 1024 bits, but we use 186 bits here for the sake of brevity. +\begin{quote} +\begin{verbatim} +? n +97397795163266888271167242107545263613895906874319587249 +? e +10306926753200670273346978999454444249925952109333797079 +? d +46445936998769783647957439537275126296124161350172130481 +\end{verbatim} +\end{quote} + +A typical RSA message is an AES-128 session key. +This is a random 128-bit integer used by the AES algorithm to encrypt a high bandwidth session. +Here $m$ has 39 decimal digits, or 128 bits. +Normally $m$ would be padded with extra random bits to make it about the same size as $n$, +but we've omitted padding steps in this demonstration for the sake of clarity. +\begin{quote} +\begin{verbatim} +? m +325004947599823818213341565111207349415 +\end{verbatim} +\end{quote} + +Bob commands his Lisp interpreter to compute \mbox{ciphertext $c$}. +Lisp computes the modex function with inputs $m$, $e$, $n$, +assigns this value to the variable $c$, then prints the result. +Note that, whereas $m$ has only 39 digis, \mbox{ciphertext $c$} has 56 digits, +the same as $n$. +\begin{quote} +\begin{verbatim} +? (setf c (modex m e n)) +65406940630722215589598713946252700262213080283568050086 +\end{verbatim} +\end{quote} + +Alice commands her Lisp interpreter to compute \mbox{output $y$}. +Lisp computes the modex function with inputs $c$, $d$, $n$, +assigns this value to the variable $y$, then prints the result. +Note that $y$ is identical to $m$. \emph{Magic!} +\begin{quote} +\begin{verbatim} +? (setf y (modex c d n)) +325004947599823818213341565111207349415 +\end{verbatim} +\end{quote} + diff --git a/wallpaper.tex b/wallpaper.tex new file mode 100644 index 0000000..8892e40 --- /dev/null +++ b/wallpaper.tex @@ -0,0 +1,98 @@ +%%%% why-RSA-works/wallpaper.tex +%%%% Copyright 2012 Peter Franusic. +%%%% All rights reserved. +%%%% + +%%%% The goal here is to introduce the Carmichael identity. +%%%% We look at a modex table where a visible pattern is readily apparent. +%%%% We define the Carmichael function value and set forth the wallpaper theorem +%%%% and the Carmichael identity. + +%% Introduce the modex-33 table and point out the wallpaper pattern. +We now consider a larger exponentiation table. +Table \ref{modex-33} specifies exponential products $m^a$ in the ring $\mathcal{R}_{33}$. +The table is small enough to fit on a page +yet big enough for us to visually perceive a \emph{wallpaper} pattern. +There appear to be three identical strips of wallpaper side by side. +Each strip is 10 columns wide and runs from top to bottom. + +%% modex-33 table +\begin{table}[!h] +\hspace{-9ex} + \input{modex-33.tex} + \caption{$m^a \quad (\mathcal{R}_{33})$} + \label{modex-33} +\end{table} + +%% Develop the equation that describes the pattern. +Notice that this table also contains identity columns. +They are columns 1, 11, 21, and 31. +Also notice that column 2 is the same as columns 12 and 22, +column 3 is the same as columns 13 and 23, and so on. +In fact, the entire block of columns 1 through 10 is repeated in columns 11 through 20, +and this block pattern continues to repeat for columns beyond 20. + +\newpage + +We can easily represent this wallpaper pattern with an equation. +Any column $a$ is the same as column $10+a$ and column $20+a$ and so on. +We use the notation $k \cdot 10$ to denote some multiple of 10. +So for any $m \in Z_{33}$ and any integer $a > 0$ we have +\[ m^a = m^{k \cdot 10 + a} \] + +%% Define the Carmichael function value and give the equation. +Each row in Table \ref{modex-33} is a sequence of exponential products. +Each sequence is a 1 followed by a series of cycles. +These cycles have various periods. +For this table the periods are 1, 2, 5, and 10. +The period of the longest cycle is symbolized by $\lambda$. +This is also known as the \emph{Carmichael function value}. +For this particular exponential table we have $\lambda=10$. +However, for any two distinct primes $p$ and $q$, +it turns out that the Carmichael function value $\lambda$ +is the \emph{least common multiple} of $p-1$ and $q-1$. +\[ \lambda = \lcm(p-1,q-1) \] + +%% Describe how to compute an lcm and give an example. +When $p$ and $q$ are small we can compute the Carmichael function value by hand. +For example, let $p=11$ and $q=13$ so that $\lambda=\lcm(10,12)$. +The multiples of 10 are 10, 20, 30, etc. +The multiples of 12 are 12, 24, 36, etc. +The multiples that are common to both are 60, 120, 180, etc. +The least of these is 60. +\begin{center} +\begin{tabular}{lcl} + Multiples of 10 &=& 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, \ldots \\ + Multiples of 12 &=& 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, \ldots \\ + Common to both &=& 60, 120, 180, \ldots \\ + $\lcm(10,12)$ &=& 60 +\end{tabular} +\end{center} + +%% Substitute the 10 with $\lambda$. +We described the wallpaper pattern of Table \ref{modex-33} +using the equation $m^a=m^{k \cdot 10 + a}$. We can replace the 10 with $\lambda$. +This gives us $m^a=m^{k\lambda + a}$. +This equation holds for primes $p=3$ and $q=11$. +But does it hold for \emph{any} pair of primes? +We assert that it does and we offer the following theorem without proof. + +\paragraph{Wallpaper theorem:} +Given two distinct primes $p$ and $q$, the ring $\mathcal{R}_{pq}$, +the Carmichael function value $\lambda=\lcm(p-1,q-1)$, +any $m \in Z_{pq}$, any integer $a > 0$, and any integer $k \ge 0$, then +\[ m^a = m^{k\lambda + a} \] + +RSA uses a special case of the Wallpaper theorem where $a=1$. +We call this special case the \emph{Carmichael identity}. +The $m^a$ on the left side is replaced by $m$, since $m^1=m$. +The $m^{k\lambda + a}$ on the right side is replaced by $m^{k\lambda + 1}$. + +\paragraph{Carmichael identity:} +Given two distinct primes $p$ and $q$, the ring $\mathcal{R}_{pq}$, +the Carmichael function value $\lambda=\lcm(p-1,q-1)$, +any $m \in Z_{pq}$, and any integer $k \ge 0$, then +\begin{equation} \label{eq:carm-id} + m = m^{k\lambda + 1} +\end{equation} + diff --git a/why-RSA-works.pdf b/why-RSA-works.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e9cfce1dd96014f7f7c6a17a472c591b6317c282 GIT binary patch literal 199952 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

Ha2!TivbEg*TRN1R3*UrU;{(N~A!(4d4Ub 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