Browse Source

Fixing book's chapter about Williams' p+1.

I was so wrong :(
Not that now I think I am.
Michele Orrù 11 years ago
parent
commit
80b009fc2c
3 changed files with 39 additions and 36 deletions
  1. 1 1
      book/dixon.tex
  2. 1 0
      book/ssl_prequisites.tex
  3. 37 35
      book/williams+1.tex

+ 1 - 1
book/dixon.tex

@@ -101,7 +101,7 @@ a forward part of the Gauss-Jordan elimination algorithm (carried out from right
 to left), and can be used to determine whether the set of exponent vectors is
 to left), and can be used to determine whether the set of exponent vectors is
 linearly dependent.
 linearly dependent.
 
 
-For each $v_i$ described as above, associate a \emph{companion history vector}
+For each $v_i$ described as above, associate a \emph{companion history vector} \\
 $h_i = (\beta_0, \beta_1, \ldots, \beta_{f-1})$, where for $0 \leq m < f$:
 $h_i = (\beta_0, \beta_1, \ldots, \beta_{f-1})$, where for $0 \leq m < f$:
 \begin{align*}
 \begin{align*}
   \beta_m = \begin{cases}
   \beta_m = \begin{cases}

+ 1 - 0
book/ssl_prequisites.tex

@@ -163,6 +163,7 @@ adopted, and the padding size.
 Failure to authenticate, decrypt will result in I/O error and a close of the
 Failure to authenticate, decrypt will result in I/O error and a close of the
 connection.
 connection.
 
 
+\vfill
 \section{What is inside a certificate \label{sec:ssl:x509}}
 \section{What is inside a certificate \label{sec:ssl:x509}}
 SSL certificates employed the X.509 PKI standard, which specifies, among other
 SSL certificates employed the X.509 PKI standard, which specifies, among other
 things, the format for revocation lists, and certificate path validation
 things, the format for revocation lists, and certificate path validation

+ 37 - 35
book/williams+1.tex

@@ -52,50 +52,52 @@ Therefore, the latter expression becomes:
   \end{cases}
   \end{cases}
 \end{equation}
 \end{equation}
 
 
-Three foundamental properties interpolate terms of Lucas Sequences:
+Two foundamental properties interpolate terms of Lucas Sequences, namely
+\emph{addition} and \emph{duplication} formulas:
 \begin{align}
 \begin{align}
-  & V_{2n+1} = \tau V_n^2 - V_n V_{n-1} - \tau \label{eq:ls:2n+1} \\
-  & V_{2n} = V_n^2 - 2 \label{eq:ls:2n} \\
-  & V_{2n-1} = V_nV_{n-1} - \tau \label{eq:ls:2n-1}
+  & V_{n+m} = V_nV_m - V_{m-n} \label{eq:ls:addition} \\
+  & V_{2n} = V_n^2 - 2 \label{eq:ls:duplication}
 \end{align}
 \end{align}
 
 
 All these identities can be verified by direct substitution with
 All these identities can be verified by direct substitution with
 \ref{eq:williams:ls}. What's interesting about the ones of above, is that we can
 \ref{eq:williams:ls}. What's interesting about the ones of above, is that we can
 exploit them to efficiently compute the product $V_{hk}$ if we are provided with
 exploit them to efficiently compute the product $V_{hk}$ if we are provided with
-$\angular{V_k, V_{k-1}}$ by considering the binary representation of the number
-$h$. In other words, we can consider each bit of $h$, starting from the least
-significant one: if it is zero, we use the multiplication formula
-\ref{eq:ls:2n}; otherwise the two addition formulas \ref{eq:ls:2n+1} and
-\ref{eq:ls:2n-1}.
+`$V_k$ by considering the binary representation of the number
+$h$. In other words, we can consider each bit of $h$, starting from second most
+significant one: if it is zero, we compute $\angular{V_{2k}, V_{(2+1)k}}$ using
+\ref{eq:ls:duplication} and \ref{eq:ls:addition} respectively; otherwise we
+compute $\angular{V_{(2+1)k}, V_{2(k+1)}}$ using \ref{eq:ls:addition} and
+\ref{eq:ls:duplication}.
 
 
 \begin{algorithm}[H]
 \begin{algorithm}[H]
   \caption{Lucas Sequence Multiplier}
   \caption{Lucas Sequence Multiplier}
   \begin{algorithmic}[1]
   \begin{algorithmic}[1]
-    \Function{Lucas}{$V, V', a, \tau$}
-      \While{$a > 0$}
-        \If{$a$ is even }
-          \State $V'' \gets V^2 -2$
-          \Comment by equation \ref{eq:ls:2n}
-          \State $V' \gets VV' - \tau$
-          \Comment by equation \ref{eq:ls:2n-1}
-          \State $V \gets V''$
-        \ElsIf{$a$ is odd}
-          \State $V'' \gets \tau V^2 - VV' - \tau$
-          \Comment by equation \ref{eq:ls:2n+1}
-          \State $V' \gets V^2 -2$
-          \Comment by equation \ref{eq:ls:2n}
-          \State $V \gets V''$
+    \Function{Lucas}{$V, a, N$}
+      \State $V_1 \gets V$
+      \State $V_2 \gets V^2 - 2 \pmod{N}$
+
+      \For{each bit $b$ in $a$ to right of the MSB}
+        \If{$b$ is $0$ }
+          \State $V_2 \gets V_1V_2 - V \pmod{N}$
+          \Comment by addition %% \ref{eq:ls:addition}
+          \State $V_1 \gets V_1^2 -2 \pmod{N}$
+          \Comment by duplication %% \ref{eq:ls:duplication}
+        \ElsIf{$b$ is $1$}
+          \State $V_1 \gets V_1V_2 - V \pmod{N}$
+          \Comment by addition %% \ref{eq:ls:addition}
+          \State $V_2 \gets V_2^2 -2 \pmod{N}$
+          \Comment by duplication %% \ref{eq:ls:duplication}
         \EndIf
         \EndIf
-        \State $a \gets a \gg 1$
-      \EndWhile
-      \State \Return $V, V'$
+      \EndFor
+      \State \Return $V_1$
     \EndFunction
     \EndFunction
   \end{algorithmic}
   \end{algorithmic}
 \end{algorithm}
 \end{algorithm}
 
 
 Finally, we need the following (\cite{Williams:p+1} \S 2):
 Finally, we need the following (\cite{Williams:p+1} \S 2):
 \begin{theorem*}[Lehmer]
 \begin{theorem*}[Lehmer]
-  If $p$ is an odd prime and the Legendre symbol
+  Let $\Delta$ be $\tau^2-4$;
+  if $p$ is an odd prime and the Legendre symbol
   $\varepsilon = \legendre{\Delta}{p}$, then:
   $\varepsilon = \legendre{\Delta}{p}$, then:
   \begin{align*}
   \begin{align*}
 %%  &  U_{(p - \varepsilon)m} \equiv 0 \pmod{p} \\
 %%  &  U_{(p - \varepsilon)m} \equiv 0 \pmod{p} \\
@@ -107,13 +109,14 @@ Finally, we need the following (\cite{Williams:p+1} \S 2):
 
 
 \begin{remark}
 \begin{remark}
   From number theory we know that the probability that
   From number theory we know that the probability that
-  $\mathbb{P}\{\varepsilon = -1\} = \rfrac{1}{2}$.
+  $P(\varepsilon = -1) = \rfrac{1}{2}$.
   There is no reason to restrict ourselves to
   There is no reason to restrict ourselves to
   $\legendre{\Delta}{p} = -1$.
   $\legendre{\Delta}{p} = -1$.
   In the alternative case of $\varepsilon = 1$, the factorization yields the
   In the alternative case of $\varepsilon = 1$, the factorization yields the
   same factors as Pollard's $p-1$ method, but slowerly.
   same factors as Pollard's $p-1$ method, but slowerly.
-  For this reason, when we look up for a $p-1$ factorization, it is advisable
-  to attempt the attack presented in the previous chapter \cite{Williams:p+1}.
+  For this reason it is advisable to first attempt the attack presented in the
+  previous chapter \cite{Williams:p+1}whenever we look up for a $p-1$
+  factorization.
 \end{remark}
 \end{remark}
 
 
 
 
@@ -127,12 +130,12 @@ $\gcd(V_Q -2, N)$ is a non-trial divisor of $N$.
 
 
 \begin{enumerate}[(i)]
 \begin{enumerate}[(i)]
 \item take a random, initial $\tau = V_1$; now let the \emph{base} be
 \item take a random, initial $\tau = V_1$; now let the \emph{base} be
-  $\angular{V_0, V_1}$.
+  $\angular{V_1}$.
 \item take the $i$-th prime in $\mathcal{P}$, starting from $0$, and call it
 \item take the $i$-th prime in $\mathcal{P}$, starting from $0$, and call it
   $p_i$;
   $p_i$;
-\item assuming the current state is $\angular{V_k, V_{k-1}}$, compute the
+\item assuming the current state is $\angular{V_k}$, compute the
   successive terms of the sequence using additions and multiplications formula,
   successive terms of the sequence using additions and multiplications formula,
-  until you have $\angular{V_{p_ik}, V_{p_ik - 1}}$.
+  until you have $\angular{V_{p_ik}}$.
 \item just like with the Pollard $p-1$ method, repeat step (iii) for $e =
 \item just like with the Pollard $p-1$ method, repeat step (iii) for $e =
   \ceil{\frac{\log N}{\log p_i}}$ times;
   \ceil{\frac{\log N}{\log p_i}}$ times;
 \item select $Q = V_k - 2 \pmod{N}$ and check the $gcd$ with $N$, hoping this
 \item select $Q = V_k - 2 \pmod{N}$ and check the $gcd$ with $N$, hoping this
@@ -157,12 +160,11 @@ if $g = N$ start back from scratch, as $pq \mid g$.
     \Require $\mathcal{P}$, the prime pool
     \Require $\mathcal{P}$, the prime pool
     \Function{Factorize}{$N, \tau$}
     \Function{Factorize}{$N, \tau$}
       \State $V \gets \tau$
       \State $V \gets \tau$
-      \State $V' \gets 2$
       \For{$p_i \strong{ in } \mathcal{P}$}
       \For{$p_i \strong{ in } \mathcal{P}$}
       \Comment step (i)
       \Comment step (i)
         \State $e \gets \log \sqrt{N} // \log p_i$
         \State $e \gets \log \sqrt{N} // \log p_i$
         \For{$e \strong{ times }$}
         \For{$e \strong{ times }$}
-          \State $V, V' \gets \textsc{lucas}(V, V', p_i, \tau)$
+          \State $V \gets \textsc{lucas}(V, p_i, N)$
           \Comment step (ii)
           \Comment step (ii)
           \State $Q \gets V -2$
           \State $Q \gets V -2$
           \State $g \gets \gcd(Q, N)$
           \State $g \gets \gcd(Q, N)$