viernes, 28 de agosto de 2015

Criptografía (XV): cifrado ADFGVX y criptoanálisis Painvin (II)

En el post anterior vimos un ejemplo de cifrado utilizando el método ADFGVX y en éste contaré las labores de criptoanáisis realizadas por Georges Painvin para descifrar los mensajes del ejército alemán durante la primera guerra mundial.

Antes de nada comentar que no estableció un método general para descifrar cualquier mensaje cifrado con este sistema, sino que sus labores de criptoanálisis  se centraron en mensajes de un mismo día (los alemanes cambian de clave cada día) con unas características muy específicas; mensajes muy esteriotipados con comienzos y/o finales muy similares.

Por tanto, al igual que ya comenté en un post sobre el criptoanálisis de la máquina enigma, el éxito de Georges Painvin en el descifrado de ciertos mensajes no se debió a una debilidad del sistema criptográfico en sí mismo, el cifrado ADFGVX era muy seguro para su época (de hecho se "rompió" en muy pocas ocasiones durante la guerra, aunque también es verdad que los criptoanalistas tuvieron muy poco tiempo para ello porque entró en funcionamiento poco antes de su final), sino en la inestimable ayuda que "amablemente" le ofrecieron los alemanes al enviar mensajes muy similares en un mismo día, y por tanto cifrados con la misma clave; por lo que entiendo que otra vez queda de manifiesto que el eslabón de seguridad más débil en este caso también lo fueron las personas que utilizaron este método.

Esos mensajes esteriotipados en un mismo día no tenían porque tener información relevante, pero a partir de ellos Georges Painvin podía obtener el orden de las columnas antes de su transposición (orden de los caracteres de la clave antes del cambio de orden de las columnas) y la posición de los caracteres del texto en claro en la tabla de sustitución utilizada, y esto posibilitaba a su vez el descifrado de todos los mensajes de ese mismo día, algunos de los cuales contendrían sin duda información muy valiosa.

De esta forma, el día 1 de junio de 1918 cayeron en sus manos dos mensajes cifrados que presentaban gran cantidad de caracteres en común, y, utilizando los conocimientos que ya había adquirido sobre el descifrado de los mensajes, fue capaz de deducir esa información y se pudieron descifrar todos los mensajes interceptados ese día.

Entre esos mensajes, tal y como se nos cuenta en epost titulado "Criptografía: el arte de esconder mensajes", publicado en uno de los blogs de EiTB, se encontró uno que solicitaba el envío urgente de municiones a un punto concreto, lo que podía revelar el lugar por donde los alemanes iban a realizar su ofensiva. Basándose en esa información y tras realizar las oportunas comprobaciones, los franceses pudieron comprobar que con toda probabilidad ése era el sitio donde tenían que concentrar sus fuerzas para detener el avance alemán. Lo que hicieron y les salió bien.

Hasta aquí este post sobre la explicación, de forma muy general, de cómo Georges Painvin consiguió que fuera posible descifrar los mensajes de ciertos días, y en dos próximas entradas me propongo poner un ejemplo muy sencillo de la operativa que utilizó para ello y plantear un caso un poco más complicado para todos aquellos que quieran intentar descifrar el mensaje (incluidos uno de los coautores de este blog, mi amigo @vldani, y la persona que me dio la idea de iniciar esta serie de entradas sobre criptografía, mi primer jefe en eso de la informática y también amigo @Inaki_Regidor).

domingo, 23 de agosto de 2015

Criptografía (XIV): cifrado ADFGVX y criptoanálisis Painvin (I)

En el primer post de esta serie sobre criptografía comenté el cifrado de Vigenère y el método Kasiski para atacar un cifrado polialfabético.

Este método de criptografía clásica para cifrar mensajes aparecía en un post titulado "Criptografía: el arte de esconder mensajes", publicado en uno de los blogs de EiTB, y fue lo que me animó a escribir esa primera entrada.

Pues bien, también en la entrada del citado blog se hablaba del cifrado ADFGVX, empleado por el ejército alemán a finales de la I Guerra Mundial, y en este post explico cómo se cifraban los mensajes utilizando ese método y en el siguiente las labores de criptoanálisis realizadas por Georges Painvin para conseguir descifrarlos.

Este método, inventado por el coronel Fritz Nebel, debe su curioso nombre a que en el texto cifrado sólo aparecen esas seis letras, que fueron elegidas porque son muy diferentes entre sí en código morse y eso evitaba errores al transmitir los mensajes.

El método de cifrado original se llamaba ADFGX (la letra "V" se incluyó posteriormente) y se basaba en una tabla de 5 filas y 5 columnas. En las 25 cuadrículas (5 x 5) de esa tabla se colocaban de forma aleatoria las 26 letras del alfabeto inglés (como hay una letra más que cuadrículas, la "I" y la "J" compartían una misma casilla), de la siguiente manera:
Evidentemente, tanto el emisor como el receptor debían utilizar la misma tabla.  

Veamos un ejemplo de cifrado utilizando este método. Para cifrar el mensaje "EJEMPLO CIFRADO" utilizando como clave la palabra "CLAVE" daríamos los dos siguientes pasos:

1º) En primer lugar sustituiríamos cada uno de los caracteres del texto a cifrar por el dígrafo o grupo de dos letras que le corresponde en la tabla anterior, es decir, cada letra del texto en claro se sustituye por la letra de la fila y de la columna que corresponden a la cuadrícula en la que está.

En el ejemplo: la "E" del texto a cifrar se sustituiría por "FF":
La "J" se sustituiría por "AD" y así  sucesivamente. De esta forma obtendríamos lo siguiente:
Si nos quedáramos aquí el cifrado sería muy débil, ya que hasta ahora se trataría de un sistema de sustitución monoalfabético (cada letra del texto a cifrar se sustituiría siempre por el mismo dígrafo en el texto cifrado) que no resistiría un análisis de frecuencias realizado con poco esfuerzo, por lo que era necesario dar un paso adicional antes de obtener el texto cifrado definitivo.

2º) El segundo paso consistía en introducir una palabra clave para transponer o cambiar de orden las columnas con objeto de alterar los dígrafos e imposibilitar así un análisis de frecuencias.

En nuestro ejemplo utilizaremos como clave la palabra "CLAVE" y actuaríamos como se indica a continuación.

Debajo de nuestra palabra clave iríamos colocando en una primera fila cada uno de los caracteres obtenidos en el paso anterior y tras completar todos los caracteres de la clave continuaríamos en la fila siguiente, de la siguiente forma:
Ahora ordenaríamos la columnas por el orden alfabético de los caracteres de la clave:
Y, finalmente, para obtener el texto cifrado leeríamos las columnas de izquierda a derecha y de arriba a abajo, de la siguiente manera:
Con lo que obtendríamos:

Obviamente, para descifrar el mensaje bastaría con seguir estos mismos pasos en sentido inverso. Es decir:

1º) Ordenaríamos nuestra palabra clave por el orden alfabético de sus caracteres y justo debajo iríamos colocando en una primera columna y de arriba abajo cada uno de los caracteres del texto cifrado, y tras completar un número de caracteres igual al cociente que resulte de dividir la longitud del mensaje cifrado (en nuestro caso 28) entre la longitud de la clave (en nuestro caso 5) continuaríamos en la columna siguiente (en nuestro ejemplo el cociente de 28 / 5 es 5).

Pero, tal  y cómo se observa en el segundo paso del cifrado, después de colocar debajo de nuestra palabra clave los caracteres obtenidos en el primer paso quedan dos huecos, lo que hace que después de transponer las columnas conforme al orden alfabético de los caracteres de la clave no todas las columnas tengan el mismo número de caracteres que el cociente que hemos calculado (si se dan los citados huecos algunas de ellas tendrán un carácter más, en nuestro ejemplo algunas de ellas tendrán 6 caracteres en lugar de 5). Si no tuviéramos en cuenta que se pueden producir esos huecos no se podría obtener el mensaje en claro correcto.

¿Cómo podemos saber si en el proceso de cifrado se han producido huecos y, en ese caso, que columnas tienen un carácter más que el cociente que resulta de dividir la longitud del mensaje cifrado entre la longitud de la clave?. Pues muy fácil, simplemente teniendo en cuenta el resto de dicha división:

- Si el resto es 0 no se han producido huecos en el proceso de cifrado y por tanto todas las columnas tienen el mismo número de caracteres que el cociente (en nuestro ejemplo 5).

- Si el resto es distinto de 0 sí se han producido huecos y el número de columnas con un carácter más que el cociente será precisamente igual al resto (en nuestro ejemplo el resto de 28 / 5 es 3, lo que nos indica que hay tres columnas de 6 caracteres y, por tanto, dos columnas de 5 caracteres).

Las columnas que tienen un carácter más que el cociente son las correspondientes a los "n" primeros caracteres de la clave (donde "n" es igual al resto).

En resumen y para nuestro ejemplo:

- Longitud del mensaje cifrado = 28.
- Longitud de la clave = 5.
- 28 / 5 ---> cociente = 5; resto = 3.
- Debajo de los tres primeros caracteres de la clave ("C", "L" y "A") hay que colocar  6 caracteres (cociente + 1) del texto cifrado. 
- Debajo del resto de caracteres de la clave ("V" y "E") hay que colocar 5 caracteres (cociente) del texto cifrado.

Con lo que se obtendría la ubicación correcta de los caracteres individuales de los dígrafos, es decir, la disposición que se obtuvo en el último paso del cifrado:
Después ordenaríamos las columnas conforme a la clave original y leeríamos fila a fila los caracteres situados debajo de la misma:
Con lo que obtendríamos los siguientes dígrafos:


FF AD FF DG GF AF XF GG AD FG DX DD DF XF

Y ahora ya, para completar el descifrado del mensaje acudiríamos a la tabla en la que se basa este método y que habríamos pactado con el emisor del mensaje, y sustituiríamos cada dígrafo por la letra que se encuentra en la intersección de la fila correspondiente a su primer carácter y la columna de su segundo carácter.

En nuestro ejemplo: el dígrafo "FF" se sustituiría por la "E" para obtener la letra del texto en claro:
El dígrafo "AD se sustituiría por la "J" y así  sucesivamente. De esta forma obtendríamos el siguiente texto en claro:
Lo alemanes empezaron a utilizar el cifrado ADFGX en marzo de 1918 y en junio de ese mismo año introdujeron la letra "V " en los dígrafos. El método para cifrar y descifrar los mensajes era el mismo, pero ahora la tabla tenía 6 filas y 6 columnas que contenían las 26 letras del alfabeto inglés y los 10 dígitos (del 0 al 9) dispuestos de forma aleatoria, y pasó a conocerse como ADFGVX

Como hemos visto este método combinaba la sustitución y la transposición, y tanto el emisor como el receptor debían utilizar la misma tabla y conocer la clave para cifrar y descifrar los mensajes.


La importancia y urgencia de descifrar los mensajes alemanes venían dadas porque el ejercito alemán se encontraba ya a escasos 60 kilómetros de París y se disponía a lanzar su ofensiva final hacia la capital francesa.

Para los franceses era vital averiguar por dónde se produciría el ataque para concentrar sus fuerzas en ese punto y poder así contener el avance alemán, para lo que el descifrado de los mensajes podía ser fundamental; tarea a la que se puso en cuerpo y alma el capitán Georges Painvin. Lo que consiguió y dio a los franceses una ventaja decisiva para derrotar a los alemanes y evitar la caída de París. Pero, ¿cómo lo hizo?. Sobre este tema trataré en un próximo post.

miércoles, 12 de agosto de 2015

Sonría y diga algo, por favor, le estamos grabando

Por deformación profesional y, todo hay que decirlo, porque soy un poco friki, cuando paseo con un poco de tiempo o entro en algún local suelo quedarme mirando los letreros de zona videovigilada que me encuentro para ver si cumplen la normativa vigente en materia de protección de datos de carácter personal.

Reconozco que, además, también suelo fijarme en las cámaras de videovigilancia con el mismo fin (si enfocan o no hacia parte de la vía pública, si en caso afirmativo podrían orientarse de otra manera para conseguir la finalidad de vigilancia que se pretende y, al mismo tiempo, respetar al máximo la privacidad de los viandantes, etc.).

Lógicamente, la cara que suelen poner mis acompañantes cuando me ven hacer este tipo de cosas es de absoluta estupefacción ("pero... ¿qué hace éste?"), que se torna a aburrimiento extremo cuando me preguntan: "pero... ¿se puede saber que haces?" y yo se lo cuento con todo lujo de detalles. Ni que decir cabe que a los diez minutos de mi exposición, cuando voy por la Instrucción 1/2006 de la Agencia Española de Protección de Datos y estoy metiéndome ya en harina, se me suele cortar sin ningún tipo de miramiento y la conversación sobre este tema termina con un: "Joé tío, ¡pero que coñazo eres!".

Pues bien, como este blog no tiene la odiosa manía de no dejar que me exprese (es la ventaja que tiene tener uno: escribes sobre lo que te da la gana) me gustaría contar mi opinión sobre un distintivo de este tipo que me he encontrado hoy, el que se muestra en la foto (perdón por la calidad de la misma).

La verdad es que es la primera vez que he visto uno de este tipo: además de videovigilada, "zona audiovigilada", y lo primero que me ha venido a la mente es que esto, salvo que se acredite que la grabación del sonido (y, por tanto, conversaciones incluidas) es necesaria para la finalidad de vigilancia que se persigue, es una "patada" en toda regla a la normativa vigente en materia de protección de datos y, en mi opinión, una intromisión intolerable en la intimidad de las personas.

El letrero en cuestión está situado a la entrada de unas instalaciones de ocio con acceso al público en general y, por tanto, las personas de las que se tratan datos de carácter personal son, al menos, las pertenecientes a los colectivos de clientes y usuarios del local y de los trabajadores del mismo.

Lo primero que he hecho al llegar a casa es comprobar si el responsable del fichero o tratamiento (que he borrado de la fotografía) ha notificado convenientemente el fichero a la AEPD (como sabemos sólo existirá fichero si las imágenes y/o el audio se graban, aunque si no fuera así y en cualquier caso deben cumplirse inexcusablemente el resto de disposiciones de la normativa que le sean de aplicación al tratamiento de ambos tipo de datos).

Con la razón social del responsable de fichero y tras consulta al Registro General de Protección de Datos de la AEPD, efectivamente, me encuentro con que se ha declarado el fichero de "VIDEOVIGILANCIA", con la siguiente información que resumo a continuación:

- Descripción de la finalidad: "CAPTACIÓN DE IMÁGENES Y AUDIO POR CÁMARAS DE SEGURIDAD Y DISPOSITIVOS INSTALADOS EN LAS DEPENDENCIAS POR SEGURIDAD. EL FICHERO LÓGICO VIDEOVIGILANCIA ESTÁ COMPUESTO POR LOS FICHEROS FÍSICOS VIDEOVIGILANCIA Y AUDIOVIGILANCIA".

- Tipificación de la finalidad: "SEGURIDAD PRIVADA; SEGURIDAD Y CONTROL DE ACCESO A EDIFICIOS; VIDEOVIGILANCIA".

- Datos de carácter identificativo: "IMAGEN/VOZ".

- Colectivos: "EMPLEADOS; CLIENTES Y USUARIOS".

Hasta aquí todo parece correcto, salvo que, como ya he dicho, el fichero en sí mismo me parece una "patada" en toda regla a la normativa vigente y, por tanto, esto hace que me pregunte adicionalmente si alguien en la AEPD controla de alguna manera que los ficheros que se solicita inscribir en el registro cumplen con la normativa. A la vista de este caso y de otros muchos, me temo que no.

¿Por qué digo esto?. Sin entrar en mayores disquisiciones, al menos a mí, me parece que el tratamiento del audio en este caso difícilmente puede entenderse conforme al principio de calidad de los datos recogido en la LOPD:

"Los datos de carácter personal sólo se podrán recoger para su tratamiento, así como someterlos a dicho tratamiento, cuando sean adecuados, pertinentes y no excesivos en relación con el ámbito y las finalidades determinadas, explícitas y legítimas para las que se hayan obtenido".

Es decir, en este caso el tratamiento de audio, tanto con respecto a clientes y usuarios como a trabajadores, es en mi opinión inadecuado, no pertinente y excesivo en relación con el ámbito y para las finalidades declaradas.

Pero es que, además, dándole otra vuelta, si realmente se pretendiera utilizar estas imágenes para una finalidad distinta a las declaradas (por ejemplo, la grabación de las conversaciones entre los usuarios y los empleados a la hora de sacar las entradas para el acceso a las instalaciones y con la finalidad de gestionar la atención a clientes), entiendo que, aparte de que debería darse cumplimiento a otras disposiciones de la norma (información, consentimiento, etc.), también se incumpliría el citado principio de calidad, ya que dichas finalidades no serían explícitas (no se habrían declarado), aunque pudieran ser legítimas.

Y ya para finalizar, dándole otra vuelta, supongamos que ese audio pudiera tener como finalidad el control empresarial del cumplimiento de las obligaciones laborales de los trabajadores. ¿Podría ser?, pues creo que tampoco sería legítimo, ya que, con independencia de que se debería cumplir con todo lo anterior que sea de aplicación a este caso (declaración de esa finalidad concreta, información a los trabajadores, etc.), entiendo que, aunque el artículo 20 del ET atribuye al empresario la facultad de adoptar las medidas que estime más oportunas de vigilancia y control para verificar el cumplimiento del trabajador de sus obligaciones laborales, el tratamiento de audio con ese fin no cumpliría, en mi opinión, con el principio de proporcionalidad para limitar un derecho fundamental conforme a la doctrina del Tribunal Constitucional: "juicio de idoneidad”, "juicio de necesidad" y “juicio de proporcionalidad en sentido estricto”.

Por tanto, no le doy más vueltas; lo dicho, lo mire como lo mire y a mi entender: una "patada" en toda regla a la normativa vigente en materia de protección de datos y una intromisión ilegítima en el derecho a la intimidad.

Y tú, ¿qué opinas?.