Criptología

author
20 minutes, 45 seconds Read
¿Cosas de criptografía? Suena divertido.

Objetivos de la unidad

Entender, bastante bien, en qué consiste la criptografía y el criptoanálisis y, sobre todo, saber lo que puede y no puede garantizar.

Antecedentes

Alice y Bob pueden ser personas, pero también clientes y servidores, ordenadores pares, almacenes de datos, routers de red, etc. Mallory puede suplantar a uno de los participantes, añadir, modificar o eliminar mensajes reales, secuestrar la conexión, hacer una denegación de servicio, inyectar malware, etc.

Objetivos:

  • Confidencialidad: Debería costarle a Eve más recuperar $m$ que lo que vale $m$.
  • Autenticación: Bob debe ser capaz de verificar que fue Alice quien envió $m$.
  • Integridad: Bob debe poder verificar que $m$ no ha sido manipulado.
  • No repudio: Alice no debería poder negar el envío de $m$.

Los mejores criptosistemas asumen que Eve y Mallory conocen $E$, $D$, $c$ y, si $k_e \neq k_d$, entonces $k_e$ también. La mayoría de los criptosistemas no dependen de que sus algoritmos se mantengan en secreto, porque:

  • Si tu algoritmo secreto se ve comprometido (alguien podría abandonar tu grupo), tienes que cambiarlo, ¡y eso es mucho más difícil que simplemente cambiar una clave!
  • Los algoritmos públicos pueden ser sometidos a miles de expertos en busca de fallos, por lo que tienes cierto grado de confianza en aquellos que resisten el escrutinio.

Más información: Seguridad a través de la oscuridad, Principio de Kerchoff y esta discusión.

El estudio de la criptología incluye el diseño de varios cifrados, los métodos de criptoanálisis (ataques), el intercambio de claves, la autenticación de claves, el hash criptográfico, la firma digital y las cuestiones sociales (legales, políticas, etc.). Vea la página de Wikipedia sobre temas de criptografía.

NO HAGA ESTAS COSAS POR SU CUENTA EN APLICACIONES REALES

Claro, está bien jugar en casa, pero NUNCA intente hacer su propia criptografía para algo real. Déjalo para los profesionales. Si te conviertes en un profesional, entonces, mmmmm, vale.
Este ha sido un importante anuncio de servicio público.

Definiciones

Palabras a saber:

Criptografía El arte y la ciencia de hacer cifrados. Criptoanálisis El arte y la ciencia de descifrar cifrados, es decir, la extracción de $m$ dados $c$, $E$, $D$ y posiblemente $k_e$. Criptología El estudio de la criptografía y el criptoanálisis.

Ejercicio: Infórmese sobre la esteganografía. ¿En qué se diferencia de la criptografía?

Criptosistema Conjunto particular de algoritmos y protocolos para el cifrado, el descifrado y la generación de claves. Ejemplos: Criptosistema Cramer-Shoup, criptosistema Rabin, criptosistema Benaloh, criptosistema RSA. Sistema criptográfico Cualquier sistema que utiliza la criptografía. Cifrado Un algoritmo utilizado en un criptosistema.

Ejercicio: ¿En qué se diferencia un «código» de un «cifrado»? Son los códigos más seguros que los cifrados? ¿Por qué no se utilizan con tanta frecuencia?

Confusión Propiedad de que la relación entre el texto plano, el texto cifrado y la clave sea tan complicada que resulte inútil para el criptoanalista. Difusión Propiedad de que los patrones estadísticos del texto plano se extiendan ampliamente por el texto cifrado.

Líneas de tiempo

Si te gusta la historia….

  • Artículo de la historia de la criptografía de la Wikipedia
  • Línea de tiempo de la Wikipedia
  • Línea de tiempo de Carl Ellison

Tipos de cifrado

Aquí tienes algunas categorías útiles de cifrado. Tenga en cuenta que un cifrado particular puede pertenecer a más de una de estas categorías.

  • Clásico: Un cifrado lo suficientemente fácil de realizar a mano, normalmente basado en caracteres. También se denomina manual.
  • Moderno: prácticamente cualquier cifrado que no sea clásico.
  • Sustitución: Cada carácter del texto plano se sustituye por uno o más caracteres para hacer el texto cifrado.
  • Transposición: Los caracteres del texto plano se reordenan para formar el texto cifrado.
  • Monoalfabético: Un cifrado de sustitución en el que un carácter del texto plano se sustituye siempre por el mismo carácter.
  • Polialfabético: Un cifrado de sustitución que esencialmente utiliza múltiples mapeos de sustitución monoalfabéticos.
  • Homofónico: Una sustitución en la que un carácter puede mapear a uno de un conjunto de caracteres.
  • Poligráfica: Una sustitución de bloques de caracteres por bloques de caracteres.
  • Periódico: Un cifrado polialfabético en el que el esquema de sustitución se repite.
  • No periódico: Se explica por sí mismo si se entiende periódico.
  • Bloque: El cifrado no tiene lugar por caracteres sino por bloques de caracteres.
  • Stream: Un cifrado que opera sobre un flujo de datos de longitud desconocida, que suele incorporar retroalimentación.
  • Clave secreta: Un cifrado en el que $k_e$ y $k_d$ son iguales o trivialmente derivables el uno del otro; requiere que las partes se reúnan en secreto para intercambiar las claves que van a utilizar. También llamado simétrico.
  • Clave pública: Esquema en el que la clave de cifrado de cada uno es conocida públicamente pero su clave de descifrado se mantiene en secreto. También llamado asimétrico.

Criptografía de clave secreta

Los cifrados de clave secreta (también llamados de clave simétrica) son mucho más rápidos que los de clave pública, pero la gestión de las claves puede ser un gran problema.

  • Si $n$ personas en un grupo necesitan comunicarse, necesitan $\frac{n(n-1)}{2}$ claves.
  • Las claves deben distribuirse de forma segura (en secreto).
  • Las claves deben mantenerse seguras.
  • Las claves deben cambiarse con frecuencia, lo que retroalimenta el dolor de cabeza de la distribución.

NOTA

En los ejemplos basados en caracteres que aparecen a continuación, supondremos (sin pérdida de generalidad) un alfabeto de 26 símbolos (A..Z).

Cifrado César

Un cifrado completamente patético e inseguro para los estándares modernos. La clave de cifrado $k_e$ es un número entero pequeño y $k_d = k_e$. Para cifrar, se añade $k_e$ a cada carácter del texto plano; para descifrar, se resta.

Ejemplo: Para k=5, ATTACKATDAWN se convierte en FYYFHPFYIFBS

Trivial de descifrar: sólo hay que adivinar $k_e$.

Sustitución monoalfabética

En lugar de simplemente añadir un desplazamiento fijo a cada carácter, se puede precomputar una tabla de sustitución generando una permutación aleatoria de su alfabeto. Por ejemplo:

 ABCDEFGHIJKLMNOPQRSTUVWXYZ MQHPSVJYCURFTBILAKWNGZDOEX

Ahora ATTACKATDAWN es MNNMHRMNPMDB.

No se descifra esto adivinando la clave (hay $n!$ claves posibles), pero el análisis de frecuencia puede descifrar cualquier cifrado de sustitución monoalfabético, siempre que el mensaje sea lo suficientemente largo.

Para las técnicas cuya clave es una permutación, una forma de hacer que la clave sea más fácil de recordar es elegir una frase, disponer sus letras únicas y luego rellenar las letras que faltan en orden. Por ejemplo, PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL produce este mapeo de sustitución:

 PREMATUOIZNSHFLVBCDGJKQWXY

Sustitución homofónica

Cada letra del texto plano se asigna a uno o más símbolos en el texto cifrado. El número de objetivos debe ser proporcional a su frecuencia (para evitar el análisis de frecuencia). Ejemplo:

 A 12 15 36 50 56 70 81 95 B 51 84 C 16 44 65 D 04 06 48 82 E 01 17 19 34 47 49 58 60 67 77 85 90 F 13 27 G 09 28 H 26 42 53 59 68 71 I 35 73 76 86 91 96 J 18 K 07 L 29 40 54 87 M 25 30 N 21 61 62 69 74 94 O 02 03 08 10 57 75 93 P 41 98 Q 97 R 32 38 43 45 80 83 S 14 22 39 79 89 99 T 00 20 23 33 46 52 72 78 88 U 11 64 66 V 37 W 63 92 X 31 Y 24 55 Z 05

Para cifrar, elija al azar entre las posibilidades. Ejemplo, un posible cifrado de ATTACKATDAWN es

 56 78 20 95 65 07 12 72 06 50 92 61

Vigenère simple

El cifrado conocido como cifrado Vigenère simple por desplazamiento no fue inventado por Vigenère en absoluto… parece que fue descrito por primera vez por Giovan Battista Bellaso. La clave es una cadena que se añade al texto plano con adición modular, como en este ejemplo (A=0, B=1, C=2, …, Z=25):

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUAR Ciphertext: JUKVKSIPPYVSOLBFILZMONOEYHGANSBWOOYDNHVDXCRUPBIOI

Para generar el texto cifrado a mano se puede utilizar una rueda de códigos o una tabula recta.

Este esquema no es seguro ya que la clave se repite. Si se puede determinar la longitud de la clave, el criptoanalista puede hacer múltiples análisis de frecuencia (uno por cada valor de desplazamiento en la clave). Los métodos para determinar la longitud de la clave son el método Kaisiski y la prueba de Friedman.

Para los datos binarios (es decir, una secuencia de bits) la adición modular de base-2 es una simple xor. Ejemplo:

 Plaintext: 0110000101010000111101001010101010010000001111101 Key: 0000011100000111000001110000011100000111000001110 Ciphertext: 0110011001010111111100111010110110010111001110011

Autoclave Vigenère

Vigenère creó en realidad un cifrado de autoclave que es más fuerte porque la clave nunca se repite. En su lugar, la «clave» se compone de la frase clave seguida del texto llano, así:

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKTAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRD Ciphertext: JUKVKVOZCOHMDSFUMZCTNHZVQPFOJWCOOTWYVVBHUBYHYSWFU

Este utiliza el texto llano como parte de la clave. También puedes usar el texto cifrado. ¿Ves cómo?

Cifres modernos de autoclave

Todavía puedes descifrar los cifrados Vigenère de autoclave mediante un análisis lingüístico, porque la clave contiene texto y, por tanto, es probable que tenga letras de alta frecuencia. Los cifrados modernos de autoclave generan los valores de desplazamiento con un generador de números aleatorios. La clave sembra el generador.

Ejercicio: Implemente un cifrado de autoclave en el lenguaje de programación de su elección.

Pad de una sola vez

Si la clave:

  • es tan larga o más que el mensaje que se codifica
  • se genera realmente de forma aleatoria
  • se utiliza una vez y sólo una vez

Entonces tiene un cifrado probadamente seguro llamado pad de una sola vez. Su algoritmo real puede utilizar la sustitución polialfabética o incluso la simple xorización del mensaje con la clave, siempre que cumpla los tres criterios anteriores.

La almohadilla de un solo uso nunca puede ser descifrada. Es un esquema de cifrado perfecto, desde una perspectiva matemática, de todos modos.

Ejercicio: ¿Por qué no se utilizan comúnmente las almohadillas de un solo uso, entonces, dado que son los cifrados más seguros posibles?

Playfair

Este es un ejemplo de un cifrado de sustitución poligráfica.Reemplaza pares de caracteres. La clave es una permutación de {A..I,K..Z}, por ejemplo:

 Z C B M L G D A Q E T U O K H F S X V N P I Y R W

Para cifrar, escriba el texto plano (sin espacios ni puntuación), poniendo una X entre las letras dobles y al final si es necesario para que el texto tenga una longitud uniforme.Luego, para cada par de letras:

  • Deja que $(a,b)$ sea la fila y la columna del primer caráctery $(c,d)$ sea la fila y la columna del segundo.
  • Si $a \Nnecesita c$ y $b \Nnecesita d$ entonces devuelve $(a,d)(b,c)$.
  • Si $a = c$ entonces devuelve $(a,(b+1) \bmod 5)(c,(d+1) \bmod 5)$.
  • Si $b = d$ entonces devuelve $((a+1) \bmod 5,b)((c+1) \bmod 5,d)$.
Ejemplo: THEN ATTACK FROM THE EASTTH EN AT XT AC KF RO MT HE XE AS TXUT HW GO FO DB TV YK ZK NH NA DX OFUTHWGOFODBTVYKZKNHNADXOF

La desencriptación ejecuta las reglas a la inversa. El cifrado Playfair es bastante inseguro.

Four-square

Encripta dígrafos como Playfair, pero ligeramente más fuerte porque permite letras dobles y no produce dígrafos de texto cifrado invertidos para dígrafos de texto plano invertidos. Ejemplo

 a b c d e G I V E M f g h i k L B R T Y l m n o p O D A H C q r s t u F K N P Q v w x y z S U W X Z P R E M A a b c d e T U O I Z f g h i k N S H F L l m n o p V B C D G q r s t u K Q W X Y v w x y z
Ejemplo: THEN ATTACK FROM THE EASTTH EN AT TA CK FR OM TH EE AS TXNI VL EV FM MO BV DF NI MA VV NX

Muy bien, así que ligeramente más fuerte que Playfair, pero ¿y qué? Los ordenadores pueden descifrar estas cosas en segundos, o tal vez en minutos (si se les da suficiente texto cifrado).

Transposición de bloques simple

El cifrado de transposición más simple divide el mensaje en bloques de tamaño n, y luego revuelve cada bloque según una permutación de $(1..n)$.

Ejemplo: Para la clave $(4,1,6,3,2,5)$ el mensaje GETTHATHEALTHINSPECTOR se convierte en TGATEHATTEHLSHENIPRCOT.

Transposición en columnas

Escribe el mensaje fila por fila en una cuadrícula y luego lo lee en columnas. Totalmente inseguro. La clave es sólo el número de filas. Adivínalo.

Valla de rieles

La valla de rieles no es mejor que la anterior, sólo más divertida. La clave es el número de raíles en los que se escribe el texto plano de forma ascendente y descendente, generando el texto cifrado mediante la lectura de un raíl cada vez.

Ejemplo: Para codificar "fill out and file a WS2475 form" en 4 carriles:

 f t l 4 m i u a i e 2 7 r l o n f a s 5 o l d w f

se lee entonces el texto cifrado "ftl4miuaie27rlonfas5oldwf". Esto es trivial de descifrar. Sólo hay que adivinar $k$.

Combinar sustitución y transposición

La transposición sola es muy débil; la sustitución es débil; combinarlas es mejor. Se pueden mezclar muchos de los cifrados de sustitución clásicos con varias transposiciones, o utilizar algunos cifrados de combinación especiales como el bífido. Además, la mayoría de las famosas máquinas de rotor y los cifrados modernos utilizan esta combinación; de hecho, aplican estas transformaciones muchas veces.

Bifid

Esta sustituye las letras con sus coordenadas en una cuadrícula y hace una transposición en columna sobre las coordenadas. Ejemplo:

 Z C B M L G D A Q E T U O K H F S X V N P I Y R W

Escribe las coordenadas (fila, columna) debajo de cada letra del texto plano (ej, «A» está en la fila 1, columna 2; «T» está en la fila 2, columna 0, etc.):

 ATTACKATDAWN 122102121143 200213201244

Luego lee en filas, agrupa de dos en dos y busca las letras del texto cifrado:

 122102121143200213201244 A U B A D R T B Q T A W

Trífido

Como Bífido, pero en un cubo. Ejemplo:

 Z C B M L F V N P G D A Q E X I R W T U O K H S Y . J

Para cifrar, primero hay que escribir las coordenadas:

 ATTACKATDAWN 000001000022 122102121110 200210201221
 000001000022122102121110200210201221 Z C Z O S F H Q V I N .

Enigma

La Enigma era la famosa máquina de rotor alemana de la Segunda Guerra Mundial (en realidad una familia de máquinas).La mayoría de las versiones implementaban un cifrado de sustitución polialfabética con un periodo de 16900 más un tablero de enchufe para la codificación (transposición). La clave consistía en el orden de los rotores, la posición inicial de cada roter, los ajustes del anillo y los ajustes del tablero de conexiones (unas 1,6 × 1020 posibilidades). Había una nueva clave cada día (más o menos) prepublicada en libros de códigos.

Los aliados pudieron descifrarla gracias a algunas debilidades en su diseño…

  • Ninguna letra se cifraría a sí misma
  • La auto-reciprocidad significaba que había menos posibilidades de configuración de los codificadores

…pero lo más importante, muchas debilidades en la forma en que se utilizaba…

  • Era muy fácil encontrar crestas. La mayoría de los mensajes comenzaban con un informe meteorológico.
  • Al principio, las claves de los mensajes aparecían dos veces seguidas.

…y obteniendo los libros de códigos de los buques capturados.

Puedes leer sobre cómo se rompió la Enigma en la NSA, y en laWikipedia.

Métodos criptográficos modernos

Ahora que tenemos la teoría de la información de Shannon, ordenadores muy potentes y siglos de teoría y práctica a nuestras espaldas, la mayoría de las técnicas modernas:

  • operan con cadenas de bits, no con cadenas de caracteres
  • tienen cuidado de enmascarar completamente los patrones y las redundancias en el texto plano
  • utilizan claves aleatorias (que también pueden reutilizarse)
  • aseguran que cambios muy ligeros en el texto plano afectan a una gran parte del texto cifrado (y viceversa). Esto se denomina efecto avalancha.

Además, es bueno que el cifrado sea:

  • eficiente
  • tolerante a fallos

La mayoría de los cifrados son de bloque o de flujo. Los cifradores de bloque requieren relleno y pueden funcionar en diferentes modos (véase el libro de Schnier o el artículo de Wikipedia.)

  • ECB – Libro de códigos electrónico
  • CBC – Encadenamiento de bloques de cifrado
  • CFB – Retroalimentación de cifrado
  • OFB – Retroalimentación de salida
  • CTR – Contador
  • BC – Encadenamiento de bloques
  • PCBC – Encadenamiento de bloques de cifrado de propagación
  • CBCC – Encadenamiento de bloques de cifrado con suma de comprobación

DES

En Wikipedia

IDEA

En Wikipedia

RC4

En Wikipedia

RC6

En Wikipedia

Blowfish

En Wikipedia

Twofish

En Wikipedia

AES

En Wikipedia

AES es el nuevo estándar, que sustituye a DES. Fue el ganador del concurso (en 2001), donde se presentó con el nombre de Rijndael, superando aRC6, Serpent, MARS y Twofish.

Intercambio de claves

Diffie y Hellman (ganadores del Premio Turing 2015) y su amigoMerkle demostraron en 1976 que era posible que dos personas intercambiaran una clave secreta sin tener que reunirse en secreto:

  • Alice elige un primo $n$ y lo envía en secreto a Bob
  • Alice elige un primitiveroot mod $n$ (cómo encontrarlo), llamado $g$, y lo envía en secreto a Bob
  • Alice elige un entero secreto $a$, y envía $g^a \bmod n$ en claro a Bob
  • Bob elige un entero secreto $b$, y envía $g^b \bmod n$ en claro a Alice
  • Alice calcula ($g^b \bmod n)^a \bmod n$ y Bob calcula ($g^a \bmod n)^b \bmod n$. Esta es la clave. (Es $g^{ab} \bmod n$)

Esto es probablemente seguro, siempre que $n$ sea muy grande y $\frac{n-1}{2}$ también sea primo, porque aunque Eve conoce $g$, $n$, $g^a \bmod n$, y $g^b \bmod n$, no se conoce ninguna forma eficiente de obtener $a$ o $b$ a partir de estos.Ese es el problema del logaritmo discreto, ¿recuerdas?

Ejemplo con $n$ pequeño:

  • Alice elige $n=208799$ y $g=13$ y se los envía a Bob
  • Alice elige $a=152335$ y Bob elige $b=98113$
  • Alice envía a Bob $13^{152335} \bmod 208799 = 73033$
  • Bob envía a Alice $13^{98133} \bmod 208799 = 147540$
  • Alice calcula $147540^{152335} \bmod 208799 = 8435$
  • Bob calcula $73033^{98133} \bmod 208799 = 8435$
  • La clave secreta es $8435$.

No haga esto con valores pequeños de $n$.

En general, a menos que obtenga algún tipo de certificación, no intente asegurar ningún sistema del mundo real por su cuenta. Pero, por supuesto, siga adelante y aprenda los algoritmos y practique la codificación por ahora.

Criptografía de clave pública

Los cifrados de clave pública resuelven la pesadilla de la gestión de claves de los cifrados secretos, a costa de la velocidad. En un grupo de $n$ personas sólo se necesitan $n$claves públicas y $n$claves privadas.

Criptografía RSA

Diffie-Hellman no hace encriptación; sólo intercambia una clave.RSA puede encriptar y desencriptar. He aquí cómo. Cada persona

  • Genera dos grandes primos, $p$ y $q$.
  • Elige un valor $e$ relativamente primo a $(p-1)(q-1)$.
  • Publica su clave pública $(N,e)$ donde $N = pq$.
  • Calcula $d$ = inverso modular de $e$ relativo a $(p-1)(q-1)$, manteniéndolo en secreto.
  • Destruye $p$ y $q$.

Ahora comprueba esto:

  • Para que Alice envíe un mensaje $m$ a Bob, envía $c = m^e \bmod N$.
  • Bob descifra esto fácilmente porque $m = c^d \bmod N$.
Ejercicio: Investiga las matemáticas que hay detrás de RSA. ¿Por qué funciona, en detalle? Su respuesta hará uso de los teoremas subyacentes a la función totiente de Euler; asegúrese de mostrar cómo se reduce a $(p-1)(q-1)$ cuando $pq$ es primo, entre otras cosas.
Ejercicio: Diffie-Hellman (DH) se considera a veces parte de la criptografía de clave pública, aunque se ocupe del intercambio de claves y no sea en sí mismo un algoritmo de cifrado. ¿Por qué, entonces, algunas personas lo consideran de clave pública? (La respuesta a esto requiere algo de investigación.)

Un ejemplo trivial:

¡AVISO!
Este ejemplo es sólo ilustrativo. Nunca implemente su propio algoritmo criptográfico. También asegúrese de entender lo horrible que es la criptografía de clave pública con claves tan pequeñas. Las claves reales deberían tener miles de bits.

Usemos una clave de 16 bits (NO HAGAS ESTO EN LA REALIDAD). Genera dos primos aleatorios de 8 bits:

$p = 163\q = 173$

Genera un primo de 16 bits para el exponente de codificación:

$e = 64013$

Ahora:

$n = pq = 28199 \d = \mathsf{modInverse}(e, (p-1)(q-1)) = 6797$

Codifiquemos la cadena ¿Dónde está ud.?. Aquí está en UTF-8:

c2 bf 44 c3 b3 6e 64 65 20 65 73 74 c3 a1 20 75 64 2e 3f

En decimal:

194 191 68 195 179 110 101 32 101 115 116 195 161 32 117 100 46 63

Ahora apliquemos la función de codificación a cada uno::

$194^{64013} \bmod 28199 = 15626$
$191^{64013} \bmod 28199 = 19945$
$68^{64013} \bmod 28199 = 27982$
$\vdots$
$63^{64013} \bmod 28199 = 18384$

El texto cifrado es:

15626 19445 27982 22746 2679 7739 16824 23107 9054 23107 8378 16412 22746 5566 9054 881 16824 17864 18384

Para decodificar:

$15626^{6797} \bmod 28199 = 194$
$19445^{6797} \bmod 28199 = 191$
$27982^{6797} \bmod 28199 = 68$
$\vdots$
$16824^{6797} \bmod 28199 = 63$

¡Recuperamos el mensaje original!

Por cierto
Como la encriptación simétrica es mucho más rápida, se puede generar primero una clave secreta y transmitirla por una línea asegurada por criptografía de clave pública. Ahora todas las comunicaciones futuras pueden utilizar la clave secreta.

Hash criptográfico

Un hash, también conocido como huella dactilar, suma de comprobación, compendio de mensajes es un patrón de bits (normalmente unos 160 bits), generado a partir de un mensaje por una función criptográfica de hash. Para que el hash sea seguro, o criptográfico, debe ser computacionalmente inviable

  • encontrar un mensaje que se hash a un valor dado (onewayness)
  • encontrar dos mensajes que hash al mismo valor (resistencia a la colisión)

Matemáticamente, una función hash criptográfica $H$ produce un hash de un mensaje, $H(m) = c$, de tal manera que $m$ no puede determinarse eficientemente a partir de $c$, y no se puede encontrar eficientemente $m_1 \neq m_2$ de tal manera que $H(m_1) = H(m_2)$,

Usualmente el cambio de un solo bit en el mensaje causará que el digesto se vea completa y totalmente diferente.

$ cat willThis is my will.I leave 1000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum willc18feb890752c9e680c99d1e909fd761 will$ sed "s/1/9/g" will > Will$ cat WillThis is my will.I leave 9000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum Will85570bc2d0458b1f98f484261dee7d4d Will

Un hash seguro proporciona una forma de determinar si un mensaje ha sido manipulado.

Véase la Guía Ilustrada de Hashes Criptográficos de Steve Friedl.

Códigos de Autenticación de Mensajes

Son similares a los hashes criptográficos, excepto que utilizan una clave secreta, mientras que los hashes sólo utilizan el propio mensaje.

$MAC(m, k) = c$

Para más información:

  • MACs vs. Hashes en StackOver Hashes en StackOverflow
  • Firmas digitales en Wikpedia
  • MACs en Wikipedia

Firmas digitales

¿Cómo puede Bob estar seguro de que el mensaje proviene de Alice y no de otra persona? En la práctica, se suele firmar un hash, no todo el mensaje.

RSA para firmas digitales

Para que Alice envíe un mensaje a Bob,

  • Alice encripta m con su clave privada
  • Alice encripta con la clave pública de Bob
  • Bob desencripta con su clave privada
  • Bob desencripta con La clave pública de Alice

$m = A(B'(B(A'(m)))$

DSA

En Wikipedia

Criptoanálisis

Este es un tema extenso y no será cubierto aquí. En su lugar, aquí hay una lista de técnicas.

  • Análisis de frecuencia
  • Ataque de texto plano conocido
  • Ataque de texto cifrado conocido
  • Ataque de texto plano elegido
  • Ataque de ataque de clave
  • Criptoanálisis lineal
  • Criptoanálisis diferencial
  • Robo
  • Soborno
  • Chantaje
Ejercicio: Hacer un poco de auto-estudio en el criptoanálisis o encontrar un divertido curso en línea.

Ejemplos de programación

Heh, no vamos a mostrar cómo rodar su propio cripto. Vamos a ver algunas librerías existentes.

¿Transmites datos a través de una red IP?
Usa TLS.
Sigue leyendo, sin embargo, si quieres usar algunas divertidas librerías de criptografía.

Ejemplos de JavaScript

Referencia: Node crypto.

Ejemplos de Python

Referencia:Bibliotecas criptográficas de Python -Python hashlib -Python secrets

Ejemplos de Java

Similar Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada.