¿Qué es un cifrado de clave privada?
Un cifrado de clave privada (o simétrico), se basa en un algoritmo/método/cifrado que usa una única clave para cifrar/descifrar los mensajes/criptogramas.
Como ya os comenté existe un principio, el llamado principio de Kerkhoff, que dice que todos los algorítmos de cifrados y descifrados deben ser públicos y conocidos por todos, por tanto lo único secreto es la clave del algorítmo, esta clave se convierte en la piedra angular del algorítmo.
En este principio se basan todos los cifrados de clave privada, en mantener secreta la clave bajo cualquier medio, ya que es lo único que no permite a los usuarios malintencionados descifrar nuestros mensajes. Para ello la clave se comparte por canales seguros (ya veis que este es su punto débil, ya que si tenemos un canal seguro no necesitamos un cifrado) entre los interlocutores del mensaje.
Cifrado DES
Cito de la Wikipedia:
El cifrado DES (Data Encryption Standard) es un algoritmo de cifrado, es decir, un método para cifrar información, elaborado en Estados Unidos en 1974 por IBM, y cuyo uso se ha propagado ampliamente por todo el mundo. El algoritmo fue controvertido al principio, con algunos elementos de diseño clasificados, una longitud de clave relativamente corta, y las continuas sospechas sobre la existencia de alguna puerta trasera para la National Security Agency (NSA).
El cifrado DES es un cifrado por bloques, este cifrado toma un mensaje y lo separa en bloques de un tamaño de bits determinado (en caso del DES el tamaño del bloque es de 64 bits), y transforma este mensaje en un criptograma tras una serie de complicadas operaciones, dando como resultado un criptograma de la misma longitud que el mensaje.
En el cifrado DES, se usa una clave de 64 bits para cifrar los bloques, aunque en realidad sólo se usan 56 bits. Los 8 bits restantes de la clave son usados para comprobar la paridad y después son descartados.
Funcionamiento
El funcionamiento del cifrado se basa en 16 fases idénticas del proceso, normalmente llamadas rondas. Se realizan dos permutaciones, una inicial (PI) y una final (PF), que son funciones inversas entre sí. Antes del comienzo de las rondas el bloque de 64 bits a cifrar/descifrar, se divide en dos mitades de 32 bits cada una, y se procesan alternativamente cruzandose. (Este entrecruzamiento se conoce como esquema Feistel)
La estructura del cifrado asegura que el cifrado y el descifrado sean procesos muy similares, la única diferencia es que las subclaves se aplican en orden inverso cuando desciframos.
Viendo la imagen anterior, que representa el funcionamiento del cifrado, podemos ver los siguientes símbolos:
-
Simbolo rojo “⊕”: Representa la operación OR Exclusivo (XOR).
-
La función-F: Es una función que mezcla la mitad del bloque con parte de la clave, la salida se combina con la otra mitad del bloque, y el bloque resultante se intercambia con el bloque de entrada de la función-F.
La función-F, que podemos ver en la imagen anterior, tiene como entrada medio bloque (32 bits) y consta de los siguientes pasos:
Expansión: La mitad del bloque (32 bits) se expande a 48 bits mediante la permutación de expansión, denotada como E en la imagen.
Mezcla: El resultado de la anterior operación (Expansión) se combina con una subclave mediante la operación XOR. Las subclaves se derivan de la clave inicial mediante una generación de subclaves, en total hay dieciséis.
Sustitución: Tras realizar la anterior operación (Mezcla) el bloque es dividido en ocho trozos de 6 bits antes de ser procesados por las cajas-S, o cajas de sustitución. Cada una de las ocho cajas-S reemplaza los 6 bits de entrada por 4 bits de salida, de acuerdo con una especificación de una tabla de búsqueda. Las cajas-S son el núcleo de la seguridad del cifrado.
Permutación: Tras realizar la operación anterior (Sustitución) en sus ocho trozos, los 32 bits de salida se reordenan de acuerdo a una permutación fija: la caja-P.
La generación de las subclaves para el cifrado, consiste en los siguientes pasos:
-
Primero, se seleccionan 56 bits de la clave de los 64 iniciales mediante la Elección Permutada 1 (EP-1) — los ocho bits restantes pueden descartarse o utilizarse como bits de comprobación de paridad. Los 56 bits se dividen entonces en dos mitades de 28 bits; a continuación cada mitad se trata independientemente.
-
En rondas sucesivas, ambas mitades se desplazan hacia la izquierda uno o dos bits (dependiendo de cada ronda), y entonces se seleccionan 48 bits de subclave mediante la Elección Permutada 2 (PC-2) — 24 bits de la mitad izquierda y 24 de la derecha. Los desplazamientos implican que se utiliza un conjunto diferente de bits en cada subclave; cada bit se usa aproximadamente en 14 de las 16 subclaves.
La generación de claves para descifrado es similar — debe generar las claves en orden inverso. Por tanto los desplazamientos se hacen hacia la derecha, en lugar de hacia la izquierda.
A modo de apunte, decir que este cifrado fue muy controvertido y ampliamente usado, incluso se llegaron a realizar varias modificaciones para que siguiera siendo seguro después de haber sido roto, la modificación más conocida fue el triple DES. También decir que este cifrado fue usado en su época porque se podía realizar vía hardware, es decir, sin ningún tipo de programa que fuera el encargado de hacerlo.
(Más información en Wikipedia)
(Las imágenes y parte del post han sido extraídos del artículo de la Wikipedia, ya que no he encontrado una mejor fuente de información, sé que hay partes muy oscuras que no sé si llegaréis a entender, pero es que este cifrado se las trae y se me haría muy largo explicarlo todo)
Post anterior: Otros cifrados
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
Joer, me fastidiais todos los posts, jajaja
Malkavian eso ya lo explicaré, como digo siempre, gracias por el apunte, lo iba a meter en clave pública.
Bueno, para el intercambio de claves tenemos el algoritmo de Diffie-Hellman, ¿no?:
http://zooglea.blogspot.com/2005/05/apuntes-sobre-criptografa-v.html
Bueno, aclarar que hasta el aháhá, el comentario anterior iba en serio. Si no he entendido mal, se cifra la mitad y luego se hace el XOR del bloque….
Así que ésa es la clave, partir el mensaje en 2, cifrar la mitad y cifrar la otra mitad con la mitad cifrada previamente… aháhá… entonces me llevo 3, sumo la tangente y me da… un pomelo… ¿?¿?
(es viernes… ¿se nota el desvarío?)
[…] Post anterior: Cifrado de clave privada Escrito por neok, 15 de Diciembre de 2006 en Informática, Criptografía, Matemáticas discreta […]