El Criptosistema Afin es una clase de encriptación por sustitución y es monoalfabético y simétrico.
Un criptosistema afín es determinado por dos enteros a y b siendo
- a ≥ 0
- b ≤ m
- m es el tamaño del alfabeto.
- Además a y m deben ser coprimos.
Para encriptar un mensaje a cada caracter se le aplica la siguiente fórmula:
e( x ) = a x + b (mod m )
Por ejemplo si:
a=3, b=5 y m=26
El mensaje que queremos encriptar es "hola".
Toda la aritmética debe ser realizada modulo m en este caso 26.
Las letras se numeran en orden alfabético de forma tal que A=0, B=1, ... ,Z=25
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
La funcion de encriptación que utilizaremos será:
e( x ) = 3 x + 5 (mod 26)
h=7 => e( 7 ) = 7 * 3 + 5 = 26 mod 26 = 0 = a
o=14 => e( 14 ) = 14 * 3 + 5 = 47 mod 26 = 21 = v
l=11 => e( 11 ) = 11 * 3 + 5 = 38 mod 26 = 12 = m
a=0 => e( 0 ) = 0 * 3 + 5 = 5 = f
El mensaje "hola" encriptado es "avmf"
Este es un sistema monoalfabético pues cualquier ocurrencia de un determinado caracter será reemplazado siempre por un único caracter en el mensaje cifrado ya que e( x ) = a x + b es función.
El requerimiento de que a y m sean coprimos asegura que la función e( x ) = a x + b sea inyectiva ya que si la función no fuera inyectiva un cierto caracter en el mensaje cifrado podría corresponder a mas de un caracter en el mensaje original y no podríamos descifrar el mensaje.
Dos números 'a' y 'b' son coprimos si su Máximo común divisor es 1. El concepto de números coprimos es de gran importancia en el mundo de la criptografía, este y otros conceptos de la teoría de números son utilizados muy a menudo para encriptar y desencriptar información.
En nuestro ejemplo '3' y '26' son coprimos mientras que '10' y '26' no lo son (MCD=2).
La funcion de desencriptación es d ( x ) = a−1 ( x − b )(mod m ) donde a−1 es la inversa multiplicativa de a modulo m
en el caso de a = 3, a−1 = 9 ya que 3 · 9 = 27 = 1 modulo 26, por lo tanto la función de desencriptación será:
d ( x ) = 9 ( x − 5)(mod 26)
Criptoanálisis.
Un criptosistema afín también es vulnerable a un ataque por fuerza bruta, ya que existen 12 posibles valores para a: 1,3,5,7,9,15,17,19,21,23,25 y 26 posibles valores para b (0..25) de esta forma la cantidad de claves posibles es 12*26=312 pero se debe eliminar el caso (a=1,b=0) pues no encripta, luego la cantidad de posibles claves es 311 y el sistema es completamente vulnerable a un ataque por fuerza bruta.