El gamal

 Mateo Sanabria Ardila

Introducción a la criptografía
Recordemos Diffie-Hellman
  • Que parámetros son publico para el intercambio de llaves en DH?
  • Como se consiguen dichos parámetros?
  • Es suficiente con DH para lograr establecer un canal de comunicaciones seguro?
  • Por que es seguro DH? Cuando nos referimos al tamano de clave en DH a que parametro se hace referencia?

Alice

BOB

DH: key-exchange

a = K_{prA} \in \{2, \cdots ,p-2\}
b = K_{prB} \in \{2, \cdots ,p-2\}
A \equiv \alpha^{a} \ mod \ p = K_{pubA}
B \equiv \alpha^{b} \ mod \ p = K_{pubB}
K_{AB} \equiv B^a \ mod \ p
K_{AB} \equiv A^b \ mod \ p

Problema del logaritmo discreto: PLD

Dados \ p,\beta \in \mathbb{Z}^{*}_{p} \ y \ un \ generador \ \alpha
econtrar \ x \ tal \ que
\alpha^x \equiv \beta \ \textbf{mod} \ p
Note que solucionar el problema del logaritmo discreto eficientemente permite conocer la llave acordada en DF, Por qué ? 
\log_{\alpha} (\beta) \equiv x \ \textbf{mod} \ p

Es posible romper PLD?

Ataques contra PLD

Tamaño de clave recomendado basado en algunos ataques conocidos, para los estandares computacionales actuales:
  • Búsqueda por fuerza bruta: 
    
    La cardinalidad del grupo debe ser del orden de 2**80
  • Baby-step giant-step, algoritmo Pohlig–Hellman, algoritmo rho de Pollard : 
    
    La cardinalidad del grupo debe ser de al menos 2**160
\alpha^{x} \equiv A \ \textbf{mod} \ p
\color{red}K_{private}
\color{blue}K_{public}

Se puede tener un canal seguro basado en PLD?

Alice

BOB

\tiny d = K_{prB} \in \{2, \cdots ,p-2\}
\tiny K_{pubB} = \beta \equiv \alpha^{b} \ mod \ p
\tiny y \equiv x \times K_M \ \textbf{mod} p
Escoge un p primo y un generador alpha
\tiny (\beta,p,\alpha)
\tiny (y,K_E)
\tiny K_{E} \equiv \alpha^{i} \ mod \ p
\tiny i \in \{2, \cdot, p-2 \}
\tiny K_{M} \equiv \beta^{i} \ mod \ p
\tiny K_M \equiv K_{E}^{d} \ \textbf{mod} \ p
\tiny x \equiv y \times K_{M}^{-1}
Alice quire enviarle x a Bob

Correctitud ElGamal

\small d_{k_{pr}}(K_E,y) \equiv y \cdot (K_M)^{-1} \ mod \ p
\small \equiv (x \cdot K_M) \cdot (K_{E}^d)^{-1} \ mod \ p
\small \equiv (x \cdot (\alpha^d)^i) \cdot ((\alpha^i)^d)^-1 \ mod \ p
\small \equiv x \cdot \alpha^{d\cdot i -d\cdot i} \ mod \ p
\small \equiv x \ mod \ p
\small d_{k_{pr}}(K_E,y) \equiv x \ mod \ p

Optimización usando el pequeño teorema de fermat

K_E \in \mathbb{Z}_{p}^{*} : K_{E}^{p-1} \equiv 1 \ mod \ p
\small K_{M}^{-1} \equiv (K_{E}^{d})^{-1} \cdot 1 \ mod \ p
\equiv (K_{E}^{d})^{-1} \cdot K_{E}^{p-1} \ mod \ p
\equiv K_{E}^{p-1-d} \ mod \ p
x \equiv y \cdot K_{M}^{-1} \equiv K_{E}^{p-1-d} \ mod \ p

onservaciones ElGamal

  • La llave publica de Bob y los parámetros alpha y p, son siempre los mismos.
  • Ke Debe ser diferente para cada texto plano!! (Ke = ephemeral key)
  • ElGamal es un esquema de encriptación probabilistico. (Cifrar el mismo texto plano con la misma llave varias veces entrega diferente texto cifrado)
  • Que tan seguro es ElGamal?