jueves, 17 de noviembre de 2016

¿Nos importa una "mierda" nuestra privacidad?

¿Te importa tu privacidad cuando navegas por Internet, o cuando pones contenidos en redes sociales,..., o no te preocupa en absoluto y éste es un tema para los raros como yo?.

Mi opinión, muy breve:

1.- No, no nos importa hasta que pasa "algo". ¡Como es "gratis" a mí que me importa! (hasta que pase algo que me afecte directamente a mí).

2.- El nuevo Reglamento Europeo de Protección de datos (RGPD) "no hay por donde cogerlo"; en mi opinión conlleva un escenario de pérdida de derechos fundamentales respecto a privacidad y protección de datos de carácter personal.

3.- Una regulación "homogeneizadora" suele devenir indefectiblemente en una regulación más laxa, como creo que es el caso. ¡Que no nos vendan otra cosa!.

4.- Esa supuesta regulación "homogeneizadora" responde exclusivamente, en mi opinión, a intereses económicos, y no precisamente los nuestros.

La vieja y pusilánime Europa, que dice defender los "derechos fundamentales" de sus ciudadanos, y mejor haría defendiendo los "derechos humanos" de todos, incluidos los de los refugiados (asunto muchísimo más importante), se pliega a los intereses comerciales de los lobby.

5.- Lo dicho:

¡La LOPD ha muerto, viva el TTIP (con permiso de Donald)!.

¿Qué opináis?. Asunto para el debate: ¿Nos importa una "mierda" nuestra privacidad?.

martes, 8 de noviembre de 2016

Criptografía (XXXVII): criptología para todos (IV)

Hace ya más de un año empecé a escribir sobre criptología en este humilde blog, con el único objetivo de aprender, pasármelo bien y compartir lo que voy aprendiendo sobre ella de la forma más comprensible de la que sea capaz y espero que sin cometer demasiados errores.

Echando la vista atrás veo que son ya más de sesenta entradas las que he escrito sobre ello, y en este post hago un pequeño resumen, primero a modo de clasificación de los sistemas criptográficos según su tipología, tanto clásicos como modernos, y segundo a modo de índice de las entradas que he escrito en este blog.

La clasificación que realizo no pretende ser exhaustiva (los sistemas criptográficos presentan demasiadas variantes para considerarlas todas; algunas de las cuales, además, me resultan difíciles de catalogar), sino que se trata de una primer aproximación conforme a lo que he ido entendiendo (por supuesto y como siempre encantado de recibir aportaciones y las correcciones que sean oportunas sobre lo aquí expuesto).

Una clasificación que a mí me parece adecuada (poniendo para cada tipo un ejemplo de sistema criptográfico de los que he tratado y de los que hablaré en este blog) podría ser la siguiente:
Dicho esto, el índice de las entradas sobre criptología en este blog, intentando ordenarlas un poco, es el siguiente:

1.- Criptología clásica:

     1.1.- Criptología para todos:
              1.1.1.- Conceptos básicos de criptografía y algunos criptosistemas clásicos.
                          1.1.1.1.- Criptografía, criptoanálisis, criptología y esteganografía.
                          1.1.1.2.- La escítala.
                          1.1.1.3.- Cifrado de Polibio.
                          1.1.1.4.- Cifrado César.
                          1.1.1.5.- Cifrado de Alberti.
              1.1.2.- Conceptos básicos de criptoanálisis y algunos criptosistemas clásicos.
                          1.1.2.1.- Tipos de ataques a criptosistemas.
                          1.1.2.2.- Cifrado por sustitución homofónica.
                          1.1.2.3.- Cifrado de Vigenère.
                          1.1.2.4.- Cifrado de Playfair.
                          1.1.2.5.- Cifrado de Vernam.
                          1.1.2.6.- Cifrado ADFGVX.
                          1.1.2.7.- Máquinas de cifrado del siglo XX.

     1.2.- Cifrado Vigenère:
             1.2.1.- Cifrado Vigenère y criptoanálisis Kasiski (ejemplo de ambos).
             1.2.2.- Otro ejemplo de criptoanálisis Kasiski al cifrado Vigenère.
             1.2.3.- Resolución de dudas planteadas en este blog sobre el primer ejemplo.
             1.2.4.- Cifrado Vigenère y criptoanálisis basado en el Índice de coincidencia (IC):
                         1.2.4.1.- Criptoanálisis IC cifrados sust. polialfabética con claves periódicas.
                         1.2.4.2.- Ejemplo de ataque a un criptograma basado en el IC.
             1.2.5.- Cifrado autoclave

     1.3.- Cifrado ADFGVX:
             1.3.1.- Ejemplo de cifrado y descifrado.
             1.3.2.- Criptoanálisis Painvin.
             1.3.3.- Ejemplo de cifrado ADFGVX y criptoanálisis Painvin.
             1.3.4.- Otro ejemplo de criptoanálisis al cifrado ADFGVX:
                        1.3.4.1.- Planteamiento del ejemplo.
                        1.3.4.2.- Longitud de la clave utilizada en el cifrado.
                        1.3.4.3.- Orden caracteres de la clave antes de su ordenación alfabética.
                        1.3.4.4.- Análisis de frecuencias.

      1.4.- Cifrado de Hill:
              1.4.1.- Ejemplo de cifrado y descifrado.
              1.4.2.- Criptoanálisis Gauss Jordan.            

     1.5.- Cifrado cinta móvil:
              1.5.1.- Método de cifrado y ejemplo de criptograma.

     1.6.- La máquina Enigma:
             1.6.1.- ¿Qué era y cómo funcionaba?.
                         1.6.1.1.- Primera aproximación.
                         1.6.1.2.- Segunda aproximación.
                         1.6.1.3.- Tercera aproximación.
             1.6.2.- Vulnerabilidades de la máquina Enigma.
             1.6.3.- Criptoanálisis de la máquina Enigma:
                        1.6.3.1.- El ataque polaco:
                                      1.6.3.1.1.- Deducción del cableado de los rotores y del reflector
                                      1.6.3.1.2.- El catálogo de características.
                                      1.6.3.1.3.- Cambios en operativa máquina (la "clave de sesión").
                                      1.6.3.1.4.- Nuevo método de criptoanálisis: las hojas Zygalski.
                                      1.6.3.1.5.- Ejemplo de criptoanálisis basado en las hojas Zygalski.
                                      1.6.3.1.6.- La bomba criptológica de Marian Rejewski.
                        1.6.3.2.- El criptoanálisis británico (Bletchley Park):
                                      1.6.3.2.1.- La bomba de Turing.
                                      1.6.3.2.2.- Nueva versión mejorada: la bomba de Turing-Welchman.
             1.6.4.- Cronología de la máquina Enigma:
                        1.6.4.1.- La pequeña historia de la máquina Enigma (I) (1918 - 1939).
                        1.6.4.2.- La pequeña historia de la máquina Enigma (II) (1918 hasta hoy).   
             1.6.5.- La máquina Enigma en el cine:
                        1.6.5.1.- "The Imitation Game" - Descifrando Enigma (I).
                        1.6.5.2.- "The Imitation Game" - Descifrando Enigma (II).

2.- Criptología moderna:

     2.1.- Criptología para todos:
              2.1.1.- Conceptos básicos de criptografía moderna.
                         2.1.1.1.- Confusión y difusión.
                         2.1.1.2.- Criptografía simétrica o de clave privada o secreta.
                         2.1.1.3.- Criptografía asimétrica o de clave pública.
                         2.1.1.4.- Criptografía híbrida.

     2.2.- Simétrica o de clave privada o secreta:
             2.2.1.- El algoritmo DES:
                        2.2.1.1.- Descripción.
                        2.2.1.2.- Ejemplo de cifrado.
                        2.2.1.3.- Ejemplo de descifrado.

     2.3.- Asimétrica o de clave pública: 
             2.3.1.- El algoritmo RSA:
                        2.3.1.1.- Cifrado y descifrado.
                        2.3.1.2.- Autenticidad (identidad del emisor e integridad del mensaje).
                        2.3.1.3.- Ataque a RSA mediante cifrado cíclico.
                        2.3.1.4.- La importancia de los números aleatorios. 
                        2.3.1.5.- Ataque a RSA mediante la paradoja del cumpleaños.
                        2.3.1.6.- Ataque a RSA mediante módulo común.
                        2.3.1.7.- Ataque a RSA mediante factorización (I): método de Fermat.
                        2.3.1.8.- Ataque a RSA mediante factorización (II): método rho de Pollard.
                        2.3.1.9.- Ataque a RSA mediante factorización (III): método p -1 de Pollard.
                        2.3.1.10.- Ataque a RSA mediante factorización (IV): el método de Dixon (I)
                        2.3.1.11.- RSA y primos grandes: ¿"la pescadilla que se muerde la cola"?.
                        2.3.1.12.- Descifrado RSA: ¿un "trabajo de chinos"?.
                        2.3.1.13.- Ataque de intermediario a RSA

3.- Otros:

     3.1.- ¿Sabías que...?:
              3.1.1.- Los jeroglíficos egipcios.
              3.1.2.- El cifrado de los caballeros templarios.
              3.1.3.- El cifrado francmasón.
              3.1.4.- Los anagramas que Galileo envió a Kleper.
              3.1.5.- Anagramas famosos.
              3.1.6.- El cifrado en la literatura:
                         3.1.6.1.- "El escarabajo de oro" (Edgar Allan Poe).
                         3.1.6.2.- "El símbolo perdido" (Dan Brown).
                         3.1.6.3.- "Viaje al centro de la tierra (I)" (Julio Verne).
                         3.1.6.4.- "Viaje al centro de la tierra (II)" (Julio Verne).
              3.1.7.- Criptosistemas utilizados en la guerra civil española:
                         3.1.7.1.- La cinta móvil.
                         3.1.7.2.- Ejemplo de criptoanálisis de un mensaje cifrado con la cinta móvil:
                                       3.1.7.2.1.- Primera fase del criptoanálisis.
                                       3.1.7.2.2.- Segunda fase del criptoanálisis.
              3.1.8.- Los números primos en la criptografía.

     3.2.- Funciones hash o resumen:
              3.2.1.- El algoritmo MD5.

     3.3.- Esteganografía:
              3.3.1.- Criptografía vs Esteganografía.
              3.3.2.- El método EOF y un ejemplo.
              3.3.3.- El método LSB.
              3.3.4.- Ejemplo método LSB.

     3.4.- Retos:
              3.4.1.- Reto 1: "La novela escondida":
                         3.4.1.1.- Enunciado y pistas.
                         3.4.1.2.- Solución.
              3.4.2.- Reto 2: "La escapada":
                         3.4.2.1.- Enunciado y pistas.
                         3.4.2.2.- Solución.
              3.4.3.- Reto 3: "El cumpleaños de mi amigo":
                         3.4.3.1.- Enunciado y pistas.
                         3.4.3.2.- Solución.
              3.4.4.- Reto 4: "La llave inglesa":
                         3.4.4.1.- Enunciado y pistas.
                         3.4.4.2.- Solución.
              3.4.5.- Reto 5: "Tú también, Bruto, hijo mío":
                         3.4.5.1.- Enunciado y pistas.
                         3.4.5.2.- Solución.
              3.4.6- Reto 6: "Dime con quién andas y te diré quién eres":
                         3.4.6.1.- Enunciado y pistas.
                         3.4.6.2.- Solución.
              3.4.7.- Reto 7: "Descifrando Enigma":
                         3.4.7.1.- Enunciado y pistas.
                         3.4.7.2.- Solución (por publicar).
              3.4.8.- Reto 8: "Aficiones que reúnen":
                         3.4.8.1.- Enunciado y pistas.
                         3.4.8.2.- Solución (por publicar).
Iré actualizando este índice a medida que vaya escribiendo nuevas entradas.

martes, 1 de noviembre de 2016

Gimnasia mental (XXVI): la cesta y los huevos

Dos problemas muy similares a resolver utilizando el teorema chino del resto.

1.- Una cesta tiene un conjunto de huevos: si se sacan en grupos de 2, de 3, de 4, de 5 y de 6 queda siempre un huevo en la cesta. En cambio, si se sacan en grupos de 7 no queda ninguno.

2.- Otra cesta tiene un conjunto de huevos: si se sacan en grupos de 2 queda 1, si en grupos de 3 quedan 2, si en grupos de 4 quedan 3, si en grupos de 5 quedan 4, si en grupos de 6 quedan 5 y si se sacan en grupos de 7 no queda ninguno.

¿Cuál es el número más pequeño de huevos que hay en cada cesta?.

Bueno, hay diferentes maneras de resolverlo, además de empleando el teorema chino del resto, del que he hablado al principio del post.

Voy poniendo algunas de ellas, incluidas las que se van proponiendo en forma de comentario a este post. 

a) La fuerza bruta, es decir, "a lo bestia”:

Para cada número entero positivo comprobamos el resto de dividirlo entre 2, 3, 4, 5, 6 y 7 hasta encontrar el menor de ellos cuyo resto sea 1 y 0 cuando se divide dicho número por 2 y 7, respectivamente, y para la primera cesta 1 cuando se divide entre 3, 4, 5 y 6, y para la segunda 2, 3, 4 y 5 cuando se divide entre 3, 4, 5 y 6, respectivamente.

Un método nada original y muy poco eficiente, pero si no tenemos ganas de pensar y con el ordenador…
Por tanto, en la primera cesta hay un número mínimo de 301 huevos y en la segunda de 119.

b) Refinando un poco la fuerza bruta:

Llamando X al número de huevos de cada una de las dos cestas, es evidente que de ambos enunciados se deduce que X es un múltiplo de 7 y, además, que es impar.

Teniendo en cuenta lo indicado anteriormente, para cada X múltiplo de 7 e impar buscamos el número entero positivo más pequeño de X cuyo resto de dividirlo entre 3, 4, 5 y 6 sea 1, para la primera cesta, y sea 2, 3, 4 y 5, respectivamente, para la segunda.

Algo mejoramos, ya que restringimos bastante los casos a examinar.
Por tanto, en la primera cesta hay un número mínimo de 301 huevos y en la segunda de 119.

c) Utilizando el mínimo común múltiplo: que es el método que propone mi tocayo Mikel en el primer comentario a este post.

El mínimo común múltiplo de 2, 3, 4, 5, 6 es: mcm(2,3,4,5,6) = 22 x 31 x 51 = 60.

Con este método seremos mucho más eficientes en la búsqueda de las soluciones.

c.1) Primera cesta: X - 1 debe ser múltiplo de 2, 3, 4, 5 y 6 y, por tanto, de 60.

Para cada X = 60Y + 1 (donde Y = 1, 2, 3…) buscamos el valor más pequeño de X que sea múltiplo de 7. Para Y = 5: X = 60 x 5 + 1 = 301, que es múltiplo de 7.
Por tanto, en la primera cesta hay un número mínimo de 301 huevos.

c.2) Segunda cesta: X + 1 debe ser múltiplo de 2, 3, 4, 5 y 6 y, por tanto, de 60.

Para cada X = 60Y - 1 (donde Y = 1, 2, 3…) buscamos el valor más pequeño de X que sea múltiplo de 7. Para Y = 2: X = 60 x 2 - 1 = 119, que es múltiplo de 7. 
Por tanto, en la segunda cesta hay un número mínimo de 119 huevos.

d) Aplicando el teorema chino del resto:

El enunciado del teorema sería algo así: si n1, n2, …, ni son números enteros positivos primos entre sí (mcd(ni,nj) = 1 para i ¹ j) y a1, a2,.. ai son números enteros, entonces el sistema de congruencias simultáneas X º aj (mod nj), donde 1 £ j £ i, tiene solución única módulo N (N = n1 x n2 x … x ni) dada por:
Dicho esto, siendo X el número de huevos de cada una de las dos cestas, podemos plantear los siguientes sistemas de congruencias simultáneas.

d.1) Primera cesta:

º 1 mod 2, es decir, 2 debe dividir a X - 1.

º 1 mod 3, es decir, 3 debe dividir a X - 1.

º 1 mod 4, es decir, 4 debe dividir a X - 1.

º 1 mod 5, es decir, 5 debe dividir a X - 1.

º 1 mod 6, es decir, 6 debe dividir a X - 1.

º 0 mod 7, es decir, 7 debe dividir X - 0.

Para poder aplicar el teorema chino del resto los módulos deben ser coprimos entre sí, por lo que nos quedamos con el siguiente sistema de congruencias simultáneas:

º 1 mod 3.

º 1 mod 4.

º 1 mod 5.

º 0 mod 7.

Y ahora calculamos el valor de X de la siguiente forma:

N = 3 x 4 x 5 x 7 = 420.

N1 = N / n1 = 420 / 3 = 140; (N1)-1 = 2.

N2 = N / n2 = 420 / 4 = 105; (N2)-1 = 1.

N3 = N / n3 = 420 / 5 = 84; (N3)-1 = 4.

N4 = N / n4 = 420 / 7 = 60; (N4)-1 = 2.

X = 1 x 140 x 2 + 1 x 105 x 1 + 1 x 84 x 4 + 0 x 60 x 2 = 280 + 105 + 336 = 721 mod 420 = 301.

Comprobamos que 2 y 6 dividen a 300 y, por tanto, en la primera cesta hay un número mínimo de 301 huevos.

d.2) Segunda cesta:

º 1 mod 2, es decir, 2 debe dividir a X - 1.

º 2 mod 3, es decir, 3 debe dividir a X - 2.

º 3 mod 4, es decir, 4 debe dividir a X - 3.

º 4 mod 5, es decir, 5 debe dividir a X - 4.

º 5 mod 6, es decir, 6 debe dividir a X - 5.

º 0 mod 7, es decir, 7 debe dividir X - 0.

Para poder aplicar el teorema chino del resto los módulos deben ser coprimos entre sí, por lo que nos quedamos con el siguiente sistema de congruencias simultáneas:

º 2 mod 3.

º 3 mod 4.

º 4 mod 5.

º 0 mod 7.

Y ahora calculamos el valor de X de la siguiente forma:

N= 3 x 4 x 5 x 7 = 420.

N1 = N / n1 = 420 / 3 = 140; (N1)-1 = 2.

N2 = N / n2 = 420 / 4 = 105; (N2)-1 = 1.

N3 = N / n3 = 420 / 5 = 84; (N3)-1 = 4.

N4 = N / n4 = 420 / 7 = 60; (N4)-1 = 2.

X = 2 x 140 x 2 + 3 x 105 x 1 + 4 x 84 x 4 + 0 x 60 x 2 = 560 + 315 + 1.344 = 2.219 mod 420 = 119.

Comprobamos que 2 divide a 118 y 6 divide a 114 y, por tanto, en la segunda cesta hay un número mínimo de 119 huevos.