170 lines
5.6 KiB
TeX
Executable File
170 lines
5.6 KiB
TeX
Executable File
\documentclass[../main.tex]{subfiles}
|
|
|
|
\begin{document}
|
|
\section{Symmetric Cryptosystems}
|
|
|
|
\definition{}
|
|
The goal of cryptography is to establish private communication between two parties over
|
|
a public channel. The rest of this handout tries to achieve this goal, using the tools we've
|
|
developed in the last two sections. \\
|
|
|
|
In this handout, a ``symmetric cryptosystem'' consists of the following:
|
|
\begin{itemize}
|
|
\item[-] A public prime number $p$ (Ideally, a \textit{big} prime number).
|
|
\item[-] $k$, a secret key that is shared between both parties. This is NOT public.
|
|
\item[-] $E_k(m) = c$, a function that uses key $k$ to encrypt message $m$ into a ciphertext $c$.
|
|
\item[-] $D_k(c) = m$, a function that uses key $k$ to decrypt a ciphertext $c$ into message $m$. \\
|
|
\item[-] Of course, $D_k(E_k(m)) = m$. \\
|
|
\end{itemize}
|
|
|
|
We have a good reason for picking a prime $p$. A prime base guarantees that every\footnote[1]{except those $\equiv 0 \pmod{p}$, of course} integer has an inverse mod $p$. Review \ref{mod_has_inverse} and convince yourself that this is true. \\
|
|
|
|
\vspace{2ex}
|
|
|
|
We'll assume that the secret key $k$ has been shared beforehand. How such a $k$ is created is beyond the scope of this handout, but those that are curious may look up ``Diffie-Hellman Key Exchange'' (Computerphile offers a
|
|
pretty good introduction). \\
|
|
|
|
\vspace{2ex}
|
|
|
|
One may wonder why we care about secretly exchanging numbers. Those of you with experience in computing may have an answer: any information---text, images, etc---may be represented as a number. For example, we can encode the 26 letters of the alphabet as the numbers $1 - 26$. Such mappings are called ``encodings.'' \\
|
|
|
|
\vspace{2ex}
|
|
|
|
Finally, you will notice that the encryption schemes that follow can only take a limited range of inputs. Indeed, even the cyphers in use today have a limited input size. A simple (though possible insecure) way to overcome this limitation is to split the message into ``blocks'' of a desired size, and encrypt each independently.
|
|
|
|
|
|
|
|
\vfill
|
|
\pagebreak
|
|
|
|
\problem{Multiplication mod p}
|
|
Consider the cryptosystem where
|
|
\begin{itemize}
|
|
\item[-] $p$ is a prime (for this problem, fix $p = 11$. Remember, $p$ is public.)
|
|
\item[-] $k$ is an integer
|
|
\item[-] $E_k(m) = k \times m \pmod{p}$
|
|
\item[-] $D_k(c) = k^\star \times c \pmod{p}$
|
|
\end{itemize}
|
|
|
|
|
|
\problempart{}
|
|
Encrypt $m = 8$ with $k = 5$. \\
|
|
Decrypt $c = 3$ with $k = 9$. \\
|
|
\textcolor{gray}{In other words, find $E_5(8)$ and $D_9(3)$}
|
|
|
|
\begin{solution}
|
|
$E_5(8) = 5 \times 8 \equiv 7$ \\
|
|
$D_9(3) = k^\star \times 3 = 5 \times 3 \equiv 4$
|
|
\end{solution}
|
|
|
|
\vfill
|
|
|
|
\problempart{}
|
|
Using this cryptosystem, Nikita sends a message to Sanjit. \\
|
|
Looking over Sanjit's shoulder, you find that $E_k(9) = 8$ \\
|
|
What key was used? \\
|
|
\textcolor{gray}{This is called a \textit{known plaintext attack}. With a good cryptosystem, it will be very difficult to solve this problem.}
|
|
|
|
\begin{solution}
|
|
$E_k = c = km$ \\
|
|
$E_k \times m^\star = kmm^\star = k$ \\
|
|
|
|
$m^\star = 5; k = 7$
|
|
\end{solution}
|
|
|
|
\vfill
|
|
|
|
\problempart{}<mult_analysis>
|
|
If you know many ciphertexts encrypted with the same key, can you find the key used to create them? \\
|
|
What range of values can this system effectively encrypt?
|
|
Justify all answers.
|
|
|
|
\begin{solution}
|
|
|
|
If the messages are independent, no. However, analysis is possible if the plaintexts have a known structure.
|
|
|
|
\linehack{}
|
|
|
|
$m \in \{1, 2, ..., 10\}$ \\
|
|
Note that $m$ cannot be $\equiv 0$.
|
|
|
|
\end{solution}
|
|
|
|
|
|
\vfill
|
|
\pagebreak
|
|
|
|
\problem{The Affine Cipher}
|
|
Consider the cryptosystem where
|
|
\begin{itemize}
|
|
\item[-] $p$ is a prime (for this problem, fix $p = 541$)
|
|
\item[-] $k = (k_1,\ k_2)$ is a tuple of two integers
|
|
\item[-] $E_k(m) = k_1 \times m + k_2 \pmod{p}$
|
|
\item[-] $D_k(c) = k_1^\star \times (c - k_2) \pmod{p}$
|
|
\end{itemize}
|
|
|
|
|
|
\problempart{}
|
|
Encrypt $m = 204$ with $k = (34,\ 71)$. \\
|
|
Decrypt $c = 431$ with $k = (34,\ 71)$.
|
|
|
|
\begin{solution}
|
|
$E_k(204) = 34 \times 204 + 71 \equiv 515$ \\
|
|
|
|
$k^\star = 366$
|
|
\hfill\textcolor{gray}{Known from \ref{find_inverse}}\\
|
|
$D_k(431) = 366 (431 - 71) \equiv 297$
|
|
\end{solution}
|
|
|
|
\vfill
|
|
|
|
\problempart{}
|
|
Now, let $p = 601$. You know two plaintext-ciphertext pairs:\\
|
|
$(m_1,\ c_1) = (387,\ 324)$ \\
|
|
$(m_2,\ c_2) = (491,\ 381)$ \\
|
|
How would you find $(k_1, k_2)$? \\
|
|
\textcolor{gray}{\textit{Note: } You do NOT have to find $k$. The calculations take a lot of manual labor. All you need to do is detail the steps you \textit{would} take if you had a calculator.}
|
|
|
|
\begin{solution}
|
|
$E_k(387) = k_1 \times 387 + k_2 \equiv 324 \pmod{601}$ \\
|
|
$E_k(491) = k_1 \times 491 + k_2 \equiv 381 \pmod{601}$ \\
|
|
|
|
$387k_1 + k_2 - 324 \equiv 491k_1 + k_2 - 381$ \\
|
|
$387k_1 + 57 \equiv 491k_1$ \\
|
|
$104k_1 \equiv 57$ \\
|
|
So $104k_1 + 601a = 57$ \\
|
|
|
|
Solve $104k_1 + 601a = \gcd(601, 104) = 1$, then scale.
|
|
\hfill\textcolor{gray}{Remember, 601 is prime.} \\
|
|
$k_1 \equiv -2964 \equiv 41 \pmod{601}$. \\
|
|
|
|
Substitute $k_1 = 41$. \\
|
|
$(k_1, k_2) = (41, 83)$
|
|
|
|
\end{solution}
|
|
\vfill
|
|
|
|
\problempart{}
|
|
If you only know one message and its corresponding ciphertext, can you find the encryption key? \\
|
|
If you know many ciphertexts encrypted with the same key, can you find the key used to create them? \\
|
|
What range of values can this system effectively encrypt?
|
|
Justify all answers.
|
|
|
|
\begin{solution}
|
|
Given $m$ and $c$, you cannot find $k_1$ or $k_2$.
|
|
|
|
\linehack{}
|
|
|
|
Given any number of ciphertexts, you cannot find $k$.
|
|
|
|
\linehack{}
|
|
|
|
$m \in \{1, 2, ..., 540\}$
|
|
|
|
Other answers are the same as those to \ref{mult_analysis}.
|
|
\end{solution}
|
|
|
|
\vfill
|
|
\pagebreak
|
|
\end{document}
|