¿cómo funciona el cifrado? – Gary explica

¿cómo funciona el cifrado? – Gary explica

probablemente uses encriptación, de una forma u otra, todos los días. Puede que no sepas que lo eres, pero lo eres. Y supongo que no lo piensas dos veces. ¿Tiene un servicio de televisión por cable o vía satélite basado en suscripción? Adivina qué, parte de ese contenido estará encriptado. ¿Se conecta a sitios web utilizando https://? Eso es más encriptación. Alguna vez creado un .archivo zip con una contraseña? Lo tienes, que usa encriptación.,

Podría seguir y enumerar docenas de otros ejemplos de cifrado diario, pero no lo haré. en cuanto a Android, también admite cifrado, no solo para la web con https: / / sino también para sus archivos y datos. Android 6.0 Marshmallow utiliza el cifrado de disco completo, mientras que Android 7.0 Nougat ha añadido la opción de cifrado por archivo. La idea es que si su teléfono debe caer en manos de unfriendlies, entonces sus datos privados están seguros.

Entonces, ¿qué es el cifrado? Es el proceso de tomar datos simples, incluyendo texto, y convertirlos en una forma ilegible (por humanos o computadoras)., El proceso de cifrado se basa en una clave, la analogía aquí es un candado que necesita una clave, y solo las personas con la clave pueden desbloquear (descifrar) los datos y devolverlos a su forma original. Esto significa que cualquier persona que se apodere de sus datos cifrados no puede leerlos a menos que tenga la clave.

como dijo el personaje de Tom Jericho en la excelente película Enigma, «convierte los mensajes de texto sin formato en jerigonza. En el otro extremo hay otra máquina, que traduce el mensaje al texto original.»Cifrado y descifrado!,

todo comenzó con Caesar

El arte de la escritura secreta, lo que llamaríamos cifrado, ha existido durante al menos 2500 años, sin embargo, el ejemplo más famoso de la antigüedad es el del cifrado de sustitución utilizado por Julio César para enviar mensajes a Cicerón., Un cifrado de sustitución funciona así, comienzas con el alfabeto en una línea y luego añades una segunda línea con el alfabeto desplazado un poco:

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

si quieres cifrar la palabra «hola» entonces tomas la primera letra, H, y miras la letra debajo de ella, que te da E. entonces la E da B y así sucesivamente. La forma cifrada de HELLO es EBIIL. Para descifrarlo, busca E en la fila inferior y ve la H por encima de ella, luego la B en la parte inferior para obtener la E por encima de ella y así sucesivamente. Completa el proceso para recibir HELLO.,

en este caso la «clave» es 3, porque el alfabeto se ha desplazado tres a la derecha (también puede cambiar a la izquierda en su lugar). Si cambia a key para decir 5, entonces obtendrá esto:

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

ahora la versión cifrada de HELLO sería CZGGJ. Muy diferente a EBIIL. En este caso la clave es 5. ¡Magia!

sin Embargo, hay algunos problemas importantes con esta forma de cifrado. En primer lugar, solo hay 26 llaves. Es posible que haya oído hablar de personas que hablan de claves de 128 bits o claves de 256 bits, bueno, esta es una clave de 5 bits (es decir, 26 en binario es 11010)., Por lo tanto, no tomaría mucho tiempo probar las 26 variaciones y ver cuál comienza a producir texto comprensible.

en segundo lugar, el inglés (y otros idiomas) tiene ciertas características. Por ejemplo, E es la letra más popular en Inglés, por lo que si tenía una buena parte del texto, Podría ver qué letra aparece con más frecuencia y luego adivinar que es E. cambie el alfabeto inferior para que coincida con E con el carácter más común y probablemente haya descifrado el código. También hay solo unas pocas letras que pueden duplicarse en inglés, como OO, LL, SS, EE y así sucesivamente., Cada vez que vea un doble como el II o GG (de los ejemplos anteriores), debe tratar de hacer coincidir los alfabetos primero.

la combinación de la Clave Pequeña y el hecho de que la misma letra siempre encripta a la misma letra correspondiente en el alfabeto de cifrado significa que este es un cifrado muy débil. Y hoy con las computadoras haciendo el trabajo duro, esto es más que débil!,

más alfabetos y cifrado irrompible

las debilidades del cifrado de sustitución César se pueden aliviar ligeramente utilizando más de un alfabeto desplazado. El ejemplo a continuación se puede ampliar a 26 alfabetos desplazados de los cuales varios se utilizan a la vez, pero no todos.

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

así que si establecemos la clave en WVY significa que usamos el alfabeto que comienza con W primero, luego el que comienza con V y finalmente el que comienza con Y. Esto se repite para codificar el mensaje completo. Así que Hola se convertiría en DZJHJ., Observe que ahora la doble L en HELLO no está codificada como el mismo carácter, ahora es J y luego H. También, la primera J en el texto cifrado es el código para L mientras que la segunda on es el código para O. así que J ahora no siempre representa la misma letra de texto plano.

una versión de esta idea, con 26 alfabetos, es la base del cifrado Vigenère que fue publicado en el siglo XVI por Blaise de Vigenère. Una idea similar también fue descrita por Giovan Battista Bellaso en 1553., El cifrado Vigenère permaneció inquebrantable durante 300 años hasta que fue descifrado por Charles Babbage y luego por Friedrich Kasiski. El secreto para romper el cifrado Vigenère es entender que, en última instancia, las mismas palabras se pueden codificar utilizando las mismas letras porque los mismos alfabetos se utilizan una y otra vez. Así que la palabra » y » puede ser codificada diferente las primeras veces que aparece, pero en última instancia será codificada utilizando las mismas letras de nuevo. La repetición es generalmente la caída de un cifrado.,

La repetición es la debilidad en el cifrado César, el Vigenère y todas las variantes, pero hay una forma de usar un cifrado del alfabeto para crear un código secreto irrompible sin repeticiones, se llama el pad de una sola vez. La idea es que en lugar de usar un alfabeto desplazado, se use una secuencia aleatoria de letras. Esta secuencia debe ser verdaderamente aleatoria y debe tener la misma longitud que el mensaje.

I S T H I S U N B R E A K A B L EP S O V Y V U B M W S P A H Q T D

en lugar de hacer una sustitución directa esta vez usamos la adición, con un giro., A cada letra del alfabeto se le asigna un número, A es 0, B es 1, C es 2 y así sucesivamente. I es la novena letra del alfabeto, lo que significa que tiene un valor de 8. P (La letra debajo de ella en nuestro pad de cifrado de una sola vez) 15. 8 + 15 = 25 que significa X. La segunda letra de nuestro mensaje es S, que tiene el valor 18. Da la casualidad de que S es también la letra en nuestra libreta de una sola vez (que no es un problema en absoluto). 18 + 18 = 36. Aquí está el giro, no hay letra 36 del alfabeto. Así que realizamos lo que se llama una operación de módulo., Lo que básicamente significa es que dividimos el resultado por 26 (el número de letras en el alfabeto) y usamos el resto. 36 / 26 = 1 resto 10. La letra con el valor de 10 es K. si continúa haciendo esto, el mensaje cifrado final es:

X K H C G N O O N N W P K H R E H

la razón por la que este código es irrompible es que solo usa la clave (la cadena aleatoria) Una vez. Esto significa que cualquiera que intente decodificar el mensaje no tiene punto de referencia y no hay repetición. El siguiente mensaje que se enviará utilizará una clave aleatoria completamente diferente y así sucesivamente.,

el mayor problema con las almohadillas de una sola vez, es obtener las claves de la otra parte para que puedan descifrar el mensaje. Tradicionalmente esto se hacía utilizando un libro en forma de bloc de notas, con los diferentes códigos en cada página. Las páginas que estaban en uso cambiaban todos los días y una vez que se usaba un código, se podía extraer del pad y desechar. Sin embargo, estas almohadillas deben transportarse en un método seguro. Porque si alguien más obtiene los códigos entonces el cifrado puede ser descifrado., Esto básicamente significaba que necesitaba reunirse con la otra parte antes de la mano y acordar qué códigos se usarían y cuándo. Es el método más seguro, pero también es el más engorroso, y ciertamente no es una solución viable para el mundo digital moderno de hoy.

la era digital

durante el siglo XX el cifrado se mecanizó, siendo el ejemplo más famoso la máquina Enigma utilizada por los nazis durante la Segunda Guerra Mundial. , Hay tres grandes beneficios para la criptografía computarizada:

  1. Las computadoras son flexibles, a diferencia de las cajas mecánicas, las computadoras se pueden programar para realizar muchas operaciones diferentes en un mensaje y el número y la complejidad de estas operaciones se pueden alterar relativamente rápidamente.
  2. Velocidad.
  3. Las computadoras tratan con números binarios no solo con letras.

Los puntos 1 y 2 son muy importantes, especialmente cuando se comparan computadoras con métodos de cifrado mecánico. Sin embargo, el cambio de paradigma es que las computadoras se ocupan de números y no de letras., Esto significa que el cifrado se puede aplicar a cualquier tipo de datos. Un mensaje de texto, una imagen, un archivo de audio, una película, una base de datos, archivos en un teléfono inteligente y así sucesivamente.

con el paso de letras A binario se produjo un cambio en la forma en que se realiza el cifrado. Las letras enteras ya no necesitan ser cifradas, sino que los unos y los ceros pueden ser manipulados para producir nuevas secuencias. La palabra hola en ASCII de 8 bits es 01001000010001010100110001001100010011111. Desde aquí el binario puede ser manipulado en una miríada de diferentes maneras. Se puede dividir, desplazar, agregar, multiplicar, lo que sea.,

el método utilizado para procesar los unos y ceros se conoce como algoritmo criptográfico y hay muchos tipos diferentes de Algoritmos. Las principales características de un algoritmo de cifrado son su seguridad (se puede descifrar) y su rendimiento (cuánto tiempo se tarda en codificar o decodificar datos).

En términos muy generales, hay dos tipos principales de cifrados de cifrado digital, cifrados de flujo y cifrados de bloque. Con un cifrado de flujo, los datos se cifran por byte a la vez. Los datos se procesan de principio a fin y se transmiten a través del algoritmo de cifrado., RC4 es un famoso ejemplo de cifrado de flujo. Fue utilizado en WEP y fue un método de cifrado opcional para varios otros protocolos y productos.

Los cifrados de flujo son como pads de una sola vez en que los datos no solo se cifran contra una sola clave, sino más bien una secuencia de números pseudo-aleatorios que se basa en la clave. La diferencia entre un pad de una sola vez y un cifrado de flujo es que con un pad de una sola vez la clave debe ser verdaderamente aleatoria. Con los cifrados de flujo usando la misma clave significa que obtienes la misma secuencia de números, eso es lo que hace posible decodificar el mensaje., Sin embargo, sin la clave, la secuencia parece aleatoria y, por lo tanto, es difícil de romper.

La debilidad de RC4 fue que, bajo ciertas circunstancias y bajo ciertas condiciones (principalmente cuando los mismos datos fue repetidamente cifrado), entonces es posible adivinar qué número sigue en la secuencia. Esta conjetura reduce el número de combinaciones posibles y permite un ataque de fuerza bruta (donde se intenta cada combinación) para ser utilizado. Para que el ataque funcione se necesitan muchos datos. El RC4 NO MORE attack necesita recopilar 75 horas de datos cifrados, basados en 4450 solicitudes por segundo.,

el otro tipo principal de cifrado es el cifrado por bloques. Esto funciona dividiendo los datos en bloques más manejables, digamos de 64 bits. Cada bloque se procesa varias veces, conocido como rondas (como en el boxeo). Para cada ronda el bloque se divide en dos partes iguales, la izquierda y la derecha. La parte derecha permanece intacta mientras que la parte izquierda se encripta usando una función especial, llamada función redonda. La función round toma dos entradas, la tecla y la parte derecha (la parte que quedó intacta). El resultado de la función round se «añade»a la parte izquierda usando XOR.,

Este modelo se conoce como Feistel Cipher, llamado así por su inventor Horst Feistel que trabajó en el cifrado en IBM. Su trabajo en última instancia condujo al desarrollo del estándar de cifrado de datos (DES). En 1977 DES se convirtió en el estándar oficial de cifrado para los Estados Unidos y vio la adopción en todo el mundo. DES utiliza 16 rondas trabajando en bloques de 64 bits. El problema con DES es que la NSA limitó el tamaño de la clave a 56 bits. Si bien en 1977 esto era suficiente, a finales de la década de 1990 se hizo posible que las organizaciones no gubernamentales rompieran los mensajes cifrados DES.,


JARGON BUSTER
Exclusive OR (XOR) – esta es una operación lógica de nivel de bits que se aplica a 2 bits de entrada A y B. El exclusivo OR Devuelve VERDADERO o falso (1 o 0) a la pregunta, «A O B, pero no, A y B». Se puede pensar en ello como, «uno o el otro, pero no ambos». Por lo tanto, si A es 1 y B es 0 entonces eso es uno o el otro, por lo que el resultado es 1 (verdadero). El mismo resultado se aplica a A es 0 y B es 1. Pero si A es 0 y B es 0, entonces el resultado es 0 (false), ya que ambos tienen el mismo valor. Falso también se da para a es 1 y B es 1.,

pero la verdadera magia de XOR es que es reversible. Si A XOR B = C entonces B XOR C = A, y a XOR C = B. Esto es muy importante para el cifrado, ya que significa que los datos se pueden cifrar (donde A son los datos) utilizando una clave (B) para obtener los datos cifrados (C). Más tarde, los datos cifrados pueden ser descifrados por XOR con la clave de nuevo para obtener los datos originales. La razón por la que XOR se usa junto con funciones redondas complicadas y operaciones de cambio de bits es porque por sí solo XOR se puede romper usando el análisis de frecuencia (debido a la tecla que se repite constantemente).,

en respuesta a las debilidades de los DES, se propuso un nuevo estándar llamado Triple DES (3DES). Que básicamente cifró los datos tres veces con DES, pero con tres claves diferentes. 3DES ofreció una manera de aumentar el tamaño de la clave de 56 bits a 168 bits sin la necesidad de diseñar un algoritmo de cifrado por bloques completamente nuevo. Debido a algunos detalles técnicos, la clave efectiva es de 112 bits, pero si tuviera una máquina que pudiera romper DES en 1 minuto, le tomaría a la misma máquina aproximadamente 260,658 años romper una clave Triple DES.,

mientras que DES había servido a su propósito durante casi 25 años, la longitud de clave limitada significaba que era hora de otro estándar de cifrado. En 2001, el Instituto Nacional de estándares y Tecnología de los Estados Unidos (NIST) publicó el estándar de cifrado avanzado (AES). No es un cifrado de Feistel, sino más bien una red de permutación de sustitución. Todavía utiliza bloques y rondas al igual que DES, sin embargo, durante cada ronda el orden de los bits en el bloque se intercambian y el resultado se combina con la clave usando XOR.

AES utiliza claves de 128, 192 o 256 bits y trabaja en bloques de 128 bits., El número de rondas utilizadas depende del tamaño de la clave. El mínimo es 10, que se utiliza para las claves de 128 bits y el máximo es 14, que se utiliza para las claves de 256 bits.

AES, Android y la arquitectura ARMv8

AES está en el corazón de los subsistemas de cifrado en Android. Para Android 5.0 y Android 6.0, Google ordenó el uso de AES con al menos una clave de 128 bits para los dispositivos que admiten el cifrado de disco completo., Con Android 7, Google se ha trasladado a file based encryption (FBE), que permite cifrar diferentes archivos con diferentes claves al tiempo que permite descifrar archivos de forma independiente. Parece que FBE en Android 7 utiliza AES de 256 bits.

cuando ARM hizo el movimiento de 32 bits a 64 bits, definió una nueva revisión de su arquitectura de conjunto de instrucciones llamada ARMv8. Además de definir el conjunto de instrucciones para los chips ARM de 64 bits, también agregó nuevas instrucciones para implementar partes del algoritmo AES en el hardware. Durante cada ronda se intercambian varios bits y se sustituyen., Cómo se manipulan los bits está bien definido (y parte del estándar) por lo que las extensiones AES en ARMv8 permiten que esas partes del cifrado se realicen en hardware en lugar de software.

el resultado es un cifrado increíblemente rápido, que debería tener un impacto insignificante en el rendimiento general del sistema. La implementación AOSP del cifrado basado en archivos utiliza AES-256 y requiere un rendimiento de al menos 50MB/s.

criptografía de Clave Pública y recapitulación

La mayor parte de lo que hemos discutido hasta ahora se conoce como cifrado simétrico., Para cifrar y descifrar un mensaje, tanto el remitente como el destinatario necesitan conocer la clave secreta. Hay una forma de encriptación llamada encriptación asimétrica donde hay dos claves, una para encriptar mensajes y otra diferente para desencriptarlos. La clave de cifrado puede publicarse libremente para todos los que quieran enviar un mensaje al destinatario, sin embargo, la clave de descifrado debe permanecer secreta, pero solo debe ser conocida por el destinatario. Esto significa que hay una clave pública y una clave privada. Este sistema es la base de cómo funciona la seguridad en Internet, Cómo funciona el protocolo https://., Sin embargo, eso es una historia para otro día!

para cerrar quiero añadir una advertencia. El cifrado es un tema complejo y hay mucho más en el cifrado de lo que he escrito aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *