Criptografía
Christian Chávez
Erick Altamirano
Universidad Yachay Tech
2023
Contenido
- Conceptos Básicos de Criptografía
- Cifrado Monográfico
- Cifrado por Bloques
- Cifrado Exponencial
- Sistemas de Clave Pública
Preliminares
- Texto plano. El mensaje (leible) que será transmitido.
- Texto cifrado. El mensaje codificado (secreto).
- Clave: lo que te permite cifrar o descifrar.
- Alfabeto: Sistema de símbolos (letras, números, etc.).
Cifrados Monográficos
Los mas sencillos
Cifrados Monográficos
Cifrado de Julio César: desplaza las letras del alfabeto por un número fijo de posiciones.
Cifrado y Decifrado
- A cada letra $\ell$ se le asigna un valor $n$ entre $0$ y $26$
- Desplazar cada valor por $3$ significa $$n \mapsto n + 3 \!\!\! \mod 27$$
- Para recuperar el mensaje, $$n \mapsto n - 3 \!\!\! \mod 27$$
Procedimiento...
Asigne un valor entero a cada letra
$\mathrm{A}$ |
$\mathrm{B}$ |
$\mathrm{C}$ |
$\mathrm{D}$ |
$\mathrm{E}$ |
$\mathrm{F}$ |
$\mathrm{G}$ |
$\mathrm{H}$ |
$\mathrm{I}$ |
$\mathrm{J}$ |
$\mathrm{K}$ |
$\mathrm{L}$ |
$\mathrm{M}$ |
$\mathrm{N}$ |
$0$ |
$1$ |
$2$ |
$3$ |
$4$ |
$5$ |
$6$ |
$7$ |
$8$ |
$9$ |
$10$ |
$11$ |
$12$ |
$13$ |
$\mathrm{Ñ}$ |
$\mathrm{O}$ |
$\mathrm{P}$ |
$\mathrm{Q}$ |
$\mathrm{R}$ |
$\mathrm{S}$ |
$\mathrm{T}$ |
$\mathrm{U}$ |
$\mathrm{V}$ |
$\mathrm{W}$ |
$\mathrm{X}$ |
$\mathrm{Y}$ |
$\mathrm{Z}$ |
$14$ |
$15$ |
$16$ |
$17$ |
$18$ |
$19$ |
$20$ |
$21$ |
$22$ |
$23$ |
$24$ |
$25$ |
$26$ |
Procedimiento...
Recorra $3$ cada valor
$\mathrm{A}$ |
$\mathrm{B}$ |
$\mathrm{C}$ |
$\mathrm{D}$ |
$\mathrm{E}$ |
$\mathrm{F}$ |
$\mathrm{G}$ |
$\mathrm{H}$ |
$\mathrm{I}$ |
$\mathrm{J}$ |
$\mathrm{K}$ |
$\mathrm{L}$ |
$\mathrm{M}$ |
$\mathrm{N}$ |
$3$ |
$4$ |
$5$ |
$6$ |
$7$ |
$8$ |
$9$ |
$10$ |
$11$ |
$12$ |
$13$ |
$14$ |
$15$ |
$16$ |
$\mathrm{Ñ}$ |
$\mathrm{O}$ |
$\mathrm{P}$ |
$\mathrm{Q}$ |
$\mathrm{R}$ |
$\mathrm{S}$ |
$\mathrm{T}$ |
$\mathrm{U}$ |
$\mathrm{V}$ |
$\mathrm{W}$ |
$\mathrm{X}$ |
$\mathrm{Y}$ |
$\mathrm{Z}$ |
$17$ |
$18$ |
$19$ |
$20$ |
$21$ |
$22$ |
$23$ |
$24$ |
$25$ |
$26$ |
$0$ |
$1$ |
$2$ |
Ejemplo
Texto plano |
$\mathrm{Y}$ |
$\mathrm{A}$ |
$\mathrm{C}$ |
$\mathrm{H}$ |
$\mathrm{A}$ |
$\mathrm{Y}$ |
Valor numérico |
$25$ |
$0$ |
$2$ |
$7$ |
$0$ |
$25$ |
Transformación |
$1$ |
$3$ |
$5$ |
$10$ |
$3$ |
$1$ |
Texto cifrado |
$\mathrm{B}$ |
$\mathrm{D}$ |
$\mathrm{F}$ |
$\mathrm{K}$ |
$\mathrm{D}$ |
$\mathrm{B}$ |
Cifrados monográficos más sofisticados
- Por agrupación
- Transformaciones afines
- Transposición
- $\cdots$
Cifrados monográficos más sofisticados
Por agrupación: hacer groupos de $k$ letras. Por ejemplo con
$k=2$,
Plain text |
$\mathrm{Y}$ |
$\mathrm{A}$ |
|
|
$\mathrm{C}$ |
$\mathrm{H}$ |
|
|
$\mathrm{A}$ |
$\mathrm{Y}$ |
Numeric value |
$25$ |
$0$ |
|
|
$2$ |
$7$ |
|
|
$0$ |
$25$ |
Transformation |
$1$ |
$3$ |
|
|
$5$ |
$10$ |
|
|
$3$ |
$1$ |
Ciphered text |
$\mathrm{B}$ |
$\mathrm{D}$ |
|
|
$\mathrm{F}$ |
$\mathrm{K}$ |
|
|
$\mathrm{D}$ |
$\mathrm{B}$ |
Cifrados monográficos más sofisticados
Transformación afín: escalar (por $a$) y desplazar (por $b$)
$$
n \mapsto a n + b \!\!\! \mod 27
$$
Cifrados monográficos más sofisticados
Requerimos que $(a,27) = 1$ para poder descifrar con
$$
n \mapsto a^{-1}(n-b) \!\!\! \mod 27
$$
Cifrados monográficos más sofisticados
Transposición: reordenar las letras del texto plano
Texto plano |
$\mathrm{Y}$ |
$\mathrm{C}$ |
$\mathrm{A}$ |
$\mathrm{H}$ |
$\mathrm{Y}$ |
$\mathrm{A}$ |
Valor numérico |
$25$ |
$2$ |
$0$ |
$7$ |
$25$ |
$0$ |
Transformación |
$1$ |
$5$ |
$3$ |
$10$ |
$1$ |
$3$ |
Texto cifrado |
$\mathrm{B}$ |
$\mathrm{F}$ |
$\mathrm{D}$ |
$\mathrm{K}$ |
$\mathrm{B}$ |
$\mathrm{D}$ |
Cifrado en bloques
- Tomamos el equivalente numérico de un texto plano y lo dividimos en grupos de $n$ letras, que
tratamos como un vector $P$ de
$\mathbb{R}^n$
- Luego multiplicamos cada vector $P$ por una matriz $A$ de tamaño $n\times n$ y tomamos residuos
módulo $k$.
Cifrado en bloques
- Es decir, los vectores cifrados son de la forma $$C \equiv A P \pmod{k}$$
- donde $k$ es el tamaño del alfabeto
Cifrado en bloques
¿Cómo escogemos la matriz de cifrado $A$?
$A$ debe ...
- tener componentes en $\mathbb{Z}_k$
- ser invertible y además $(\det A, k)=1$
Ejemplo
Cifremos "YACHAY" poligráficamente
Consideremos la matriz $
A = \begin{bmatrix}
7 & 11\\
3 & 2
\end{bmatrix}
$
con componentes en $\mathbb{Z}_{27}$ y $$(\det A, 27) = (8,27)=1$$
Ejemplo
Cifremos "YACHAY" poligráficamente
- Dividimos el texto plano en grupos de $n=2$ letras
- y lo transformamos en su equivalente numérico
YA $\to$ $\begin{bmatrix} 24\\0 \end{bmatrix}\quad$
CH $\to$ $\begin{bmatrix} 2\\7 \end{bmatrix}\quad$
AY $\to$ $\begin{bmatrix} 0\\24 \end{bmatrix}$
Ejemplo
Cifremos "YACHAY" poligráficamente
- Aplicamos la transformación $C \equiv A P \pmod{27}$
- Por facilidad, ponemos los vectores $C$ como columnas de una matriz y la multiplicamos por $A$
$$
\begin{bmatrix}
7 & 11\\
3 & 2
\end{bmatrix}
\begin{bmatrix}
24 & 2 & 0\\
0 & 7 & 24
\end{bmatrix} =
\begin{bmatrix}
6 & 10 & 21\\
18 & 20 & 21
\end{bmatrix}
$$
Ejemplo
Cifremos "YACHAY" poligráficamente
- Utilizando el alfabeto encontramos el texto cifrado
$$
\mathrm{GR}\ \mathrm{KT} \ \mathrm{UU}
$$
- Un texto plano que difiera por una única letra del original puede tener
asociado un texto cifrado muy diferente
Decifrado
- Hallamos $A^{-1}$ y aplicamos la transformación inversa $$P \equiv A^{-1} C \pmod{27}$$
- La matriz $A^{-1}$ existe pues $(\det A, 27) = 1$
Decifrado
- En el ejemplo anterior, $$
\begin{align*}
A^{-1} &= (\det A)^{-1} \begin{bmatrix}
2 & -11\\
-3 & 7
\end{bmatrix}\\
&=17 \begin{bmatrix}
2 & -11\\
-3 & 7
\end{bmatrix}\\
&\equiv \begin{bmatrix}
7 & 25\\
3 & 11
\end{bmatrix} \pmod {27}
\end{align*}
$$
Observaciones
- Como en el caso de cifrado de caracteres, una forma más general de cifrar
por bloques, es aplicando a los vectores una transformación afín de la forma $$ C \equiv AP + B
\pmod{27}$$
Observaciones
- El cifrado de Hill fue el primer cifrado de sustitución poligráfico basado en álgebra lineal,
- aunque es suceptible al criptoanálisis.
- Pero podemos aumentar su seguridad tomando $n$ suficientemente grande.
Cifrados Exponenciales
- Son relativamente resistentes al criptoanálisis
- Ciframos y deciframos mensajes utilizando exponenciación modular
Consideremos el siguiente alfabeto
$\mathrm{A}$ |
$\mathrm{B}$ |
$\mathrm{C}$ |
$\mathrm{D}$ |
$\mathrm{E}$ |
$\mathrm{F}$ |
$\mathrm{G}$ |
$\mathrm{H}$ |
$\mathrm{I}$ |
$\mathrm{J}$ |
$\mathrm{K}$ |
$\mathrm{L}$ |
$\mathrm{M}$ |
$\mathrm{N}$ |
$00$ |
$01$ |
$02$ |
$03$ |
$04$ |
$05$ |
$06$ |
$07$ |
$08$ |
$09$ |
$10$ |
$11$ |
$12$ |
$13$ |
$\mathrm{Ñ}$ |
$\mathrm{O}$ |
$\mathrm{P}$ |
$\mathrm{Q}$ |
$\mathrm{R}$ |
$\mathrm{S}$ |
$\mathrm{T}$ |
$\mathrm{U}$ |
$\mathrm{V}$ |
$\mathrm{W}$ |
$\mathrm{X}$ |
$\mathrm{Y}$ |
$\mathrm{Z}$ |
$14$ |
$15$ |
$16$ |
$17$ |
$18$ |
$19$ |
$20$ |
$21$ |
$22$ |
$23$ |
$24$ |
$25$ |
$26$ |
Cifrado
- Dividimos al texto plano en grupos de $2n$ letras
- Tratamos a cada bloque $P$ como un único entero
- Escogemos un primo $p$ tal que $ 2626 < p < 262626$ Recordar: nuestro alfabeto es de tamaño
$k=27$
- Escogemos un entero $e$ tal que $(e,p-1) = 1$
- Calculamos los bloques cifrados $C \equiv P^e \pmod{p}$
Cifrado
- El texto cifrado es la lista enteros $C$
- No se convierte a letras
- La clave de cifrado es $e$
- Calcular $C \equiv P^e \pmod{p}$ requiere esfuerzo, pero no es nada difícil para una computadora
de hoy en día
Algoritmo para calcular $P^e\pmod{p}$
- Encontramos la representación de $e$ en base $2$, digamos $e=(r_k r_{k-1} \cdots r_0)_2$
- Calculamos $P, P^2, P^4, \ldots, P^{2^k}$ reduciendo $\text{mod} \,p$
- Escribimos $P^e$ como el producto $$P^{r_{k}2^k}P^{r_{k-1}2^{k-1}} \cdots P^{r_0 2^0}$$
- Simplificamos y tomamos residuos módulo $p$
Ejemplo 1: Calculemos $2743^{21}\pmod{2897}$
- La representación de $21$ en base $2$ es $(1,0,1,0,1)_2$
- Calculamos $$
\begin{align*}
2743 &\equiv 2743 &&\pmod{2897}\\
2743^2 &\equiv 540&&\pmod {2897} \\
2743^4 &\equiv 1900&&\pmod {2897} \\
2743^8 &\equiv 338&&\pmod {2897} \\
2743^{16} &\equiv 1261&&\pmod {2897}
\end{align*}
$$
Ejemplo 1: Calculemos $2743^{21}\pmod{2897}$
3. Como $$21=1\cdot 2^4 + 0\cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1\cdot 2^0,$$ tenemos
$$
\begin{align*}
2743^{21} &\equiv 2743^{ 2^4} \cdot 2743^{ 2^2} \cdot 2743^{ 2^0} \pmod{2897}\\
&\equiv 1261 \cdot 1900 \cdot 2743 \pmod{2897}\\
&\equiv 81 \cdot 2743 \pmod{2897}\\
&\equiv 2011 \pmod{2897}
\end{align*}
$$
Ejemplo 2
Cifremos exponencialmente el texto
$$
\mathrm{
''GENERALIZAR\>\> ES\>\> SIEMPRE
}$$
$$
\mathrm{EQUIVOCARSE''
}
$$
con $p =2707$ y $e=17$.
Ejemplo 2
- Convertimos las letras del texto en su equivalente numérico y formamos bloques de longitud
cuatro obteniendo
$$
\begin{array}{llllllll}0604 & 1304 & 1800 & 1108 & 2600 & 1804 & 1919 & 0804 \\ 1216 & 1804 &
0417 & 2108 & 2215 & 0200 & 1819 & 0424\end{array}
$$
donde adicionamos al final los dos dígitos $24$, correspondientes a la letra \(\mathrm{X}\),
para que todos los bloques tengan cuatro dígitos.
Ejemplo 2
- Aplicamos la transformación $P^{17} \pmod{2707}$ a cada bloque $P$
- Después de algún trabajo obtenemos, usando el algoritmo anterior, el texto cifrado que es
\[\begin{array}{cccccccc}0185 & 2343 & 1853 & 0912 & 1316 & 2524 & 2645 & 1781 \\ 2653 & 2524 &
1325 & 2111 & 1615 & 0084 & 1543 & 0504\end{array}\]
- Recordar: el texto cifrado lo dejamos en valores numéricos, no lo convertimos a letras
Decifrado
- Aplicamos $P\equiv C^d\pmod{p}$ donde $d=e^{-1} \pmod{p-1}$.
Observaciones
- Para que un criptoanalista descifre un mensaje se necesita un gran tiempo de computación.
- Aún conociendo el primo $p$, se necesitan años para determinar $e$, cuando $p > 100$.
Sistemas de Clave Pública