From 5c314d6bf2e252ffee8075075c035cda897b6360 Mon Sep 17 00:00:00 2001 From: Christoph Fuerst Date: Fri, 31 Mar 2017 19:20:40 +0200 Subject: [PATCH] Added cases --- report/formal.pdf | Bin 361612 -> 361948 bytes report/formal.tex | 53 +++++++++++++++++++++++++++++------------------------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/report/formal.pdf b/report/formal.pdf index aae5a1f0ca29049d101fc6a5bd057ceac7350a59..90947c55015da51487e1ea9ff32e1e58264e9379 100644 GIT binary patch delta 34627 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 diff --git a/report/formal.tex b/report/formal.tex index 59cdcb0..a487560 100644 --- a/report/formal.tex +++ b/report/formal.tex @@ -24,9 +24,9 @@ \numberwithin{equation}{section} - + \renewcommand{\thesection}{\arabic{section}} -\renewcommand{\thealgorithm}{\arabic{section}.\arabic{algorithm}} +\renewcommand{\thealgorithm}{\arabic{section}.\arabic{algorithm}} %opening \title{Formal Verification of Algorithms arising in Cryptography} @@ -41,11 +41,11 @@ We present a formal verification of algorithms that are used in applied Cryptography. Classic cryptographic algorithms rest on the mathematical field of number theory, where abstract mathematical problems are presented and algorithms to solve -them are discussed. These mathematical preliminaries are then -used to ensure secure encryption of secret messages. We prove -formal correctness by considering concrete implementations and +them are discussed. These mathematical preliminaries are then +used to ensure secure encryption of secret messages. We prove +formal correctness by considering concrete implementations and use the recently developed verification system {\rm RISCAL} to -prove exactness of the treated algorithms. We present the theories +prove exactness of the treated algorithms. We present the theories developed in RISCAL, and put them into context of formal verification systems. \end{abstract} @@ -61,11 +61,11 @@ One of the most fundamental notions in mathematics is without doubt the term \emph{divisor}, we say for $a,c\in\mathbb{N}$, that \emph{$a$ divides $c$}, and write $a|c$, if there is a number $b\in\mathbb{Z}$ such that $c = a\cdot b$. Every number $n\in\mathbb{N}$ has at least -two divisors, a \emph{prime number} $p\in\mathbb{N}$ is a number $p$ -that has exactly two divisors, $1$ and $p$. Let now be given two numbers -$a,b\in\mathbb{N}$. Among all divisors of two numbers $a$,$b$ there is a +two divisors, a \emph{prime number} $p\in\mathbb{N}$ is a number $p$ +that has exactly two divisors, $1$ and $p$. Let now be given two numbers +$a,b\in\mathbb{N}$. Among all divisors of two numbers $a$,$b$ there is a unique \emph{greatest} common divisor of $a$ and $b$, denoted by $\gcd(a,b)$, -that is computed by the \emph{Euclidean algorithm}. The \emph{extended Euclidean algorithm} +that is computed by the \emph{Euclidean algorithm}. The \emph{extended Euclidean algorithm} allows to compute integers $s,t\in\mathbb{Z}$ such that $a\cdot s + b\cdot t = \gcd(a,b)$. Two numbers $a,b$ with $\gcd(a,b)=1$ are sometimes called \emph{relative prime}. In particular, if $p$ is prime and $a\in\mathbb{N}$, there are integers $s,t\in\mathbb{Z}$ @@ -87,18 +87,18 @@ complex numbers $\mathbb{C}$, are infinite fields, the focus in cryptographic applications is on \emph{finite fields}. A finite field with $p$ elements, where $p$ is prime, is usually written as $\mathbb{Z}_p = \mathbb{Z}/p\mathbb{Z}$, and consists of the elements $\{0,1,\ldots,p-1\}$. The classic operations are -carried out modulo $p$, and hence, instead of $a\in\mathbb{Z}$, -we consider the residue class, denoted by $[a]_p := \{a+k\cdot p: 0\leq a < p \wedge k\in\mathbb{Z}\}$. -For residue classes, there are two representations available, either +carried out modulo $p$, and hence, instead of $a\in\mathbb{Z}$, +we consider the residue class, denoted by $[a]_p := \{a+k\cdot p: 0\leq a < p \wedge k\in\mathbb{Z}\}$. +For residue classes, there are two representations available, either $$ \left\{-\frac{p-1}{2},-\frac{p-3}{2}\ldots,\frac{p-3}{2},\frac{p-1}{2}\right\}\qquad \text{ or }\qquad \{0,\ldots,p-1\} = \mathbb{Z}_p, $$ which carry equivalent information. We focus on the second representation, i.e. we demand the result of the operation modulo $p$ to be in $\mathbb{Z}_p = \{0,\ldots,p-1\}$.\\ -The number $p$ is called the \emph{characteristic} of $\mathbb{Z}_p$. In fact, -the characteristic of every finite field is a prime power. Throughout this paper, -we restrict our attention to the set $\mathbb{Z}_p$, i.e. the integers modulo a prime $p$ +The number $p$ is called the \emph{characteristic} of $\mathbb{Z}_p$. In fact, +the characteristic of every finite field is a prime power. Throughout this paper, +we restrict our attention to the set $\mathbb{Z}_p$, i.e. the integers modulo a prime $p$ (rather than a prime power).\\ Let $p$ be an odd prime. In finite sets of the form $\mathbb{Z}_p$, addition, subtraction @@ -165,7 +165,7 @@ $$ -1,\qquad & \text{if $a$ is quadratic nonresidue modulo $p$} \end{cases} $$ -Let $a$ be an integer and $n$ be a positive odd number such that $n = p_1^{\alpha_1}\ldots p_s^{\alpha_s}$. +Let $a$ be an integer and $n$ be a positive odd number such that $n = p_1^{\alpha_1}\ldots p_s^{\alpha_s}$. The \emph{Jacobi-Symbol} $\left(\frac{a}{n}\right)$ is defined as $$ \left(\frac{a}{n}\right) = \left(\frac{a}{p_1}\right)^{\alpha_1}\ldots \left(\frac{a}{p_s}\right)^{\alpha_s}. @@ -183,9 +183,9 @@ $$ \end{lem} - + \subsubsection*{The Discrete Logarithm problem} -Consider an odd prime $p$. Let $b\in\mathbb{Z}_p$ and $0\leq x\leq p-1$. +Consider an odd prime $p$. Let $b\in\mathbb{Z}_p$ and $0\leq x\leq p-1$. We consider the equality $a\equiv b^x\pmod p$, and call $x$ the \emph{discrete logarithm} (or \emph{index}) of $a$ with respect to the basis $b$.\\ @@ -209,7 +209,7 @@ $$ ed \equiv 1 \pmod {\phi(n)}. $$ We call the pair $(n,e)$ the \emph{public key} of Alice and $d$ the \emph{private key}. -If B now wants to transmit a secret message to A, B uses the public key $(n,e)$ +If B now wants to transmit a secret message to A, B uses the public key $(n,e)$ of A. He represents his (secret) message $m$ by digits $\{0,1,\ldots,n-1\}$, and computes the encrypted message $c\equiv m^e\pmod n$ by repeated squaring. When he is finished, B transmits the encrypted message $c$ to A.\\ @@ -245,7 +245,7 @@ by first representing $d$ in its binary representation, i.e. $$ d = \sum_{i=0}^m a_i\cdot 2^i,\qquad a_i \in \{0,1\}. $$ -With that representation of $d$, we immediately obtain +With that representation of $d$, we immediately obtain $c^d \equiv c^{a_0}\cdot (c^{2})^{a_1} \cdot \ldots (c^{2^m})^{a_m}$. But some of the coefficients $a_k$ might be zero, and hence contribute 1 to the product. Hence, we are led to the following algorithm: @@ -271,7 +271,7 @@ Let us analyze this in more detail. To gain insight, we might consider some conc If we apply Algorithm \ref{alg:1} to a handful of numbers, we realize the following relationship: Formulated as function ${\rm Exp}(x,n)$, we find that algorithm is equivalent to the recursive description $$ -{\rm Exp}(x,n) = +{\rm Exp}(x,n) = \begin{cases} 1,\qquad & n =0\\ {\rm Exp}(x^2,n/2),\qquad & n \text{ is even}\\ @@ -295,7 +295,12 @@ For the While-loop, we start with values $(x,y,n)$ and update them to $(x',y',n' We observe that regardless if $n$ is even or odd, that $n'