Conceptos básicos de criptografía (2): cifrado simétrico
DES: Ya eliminado.
3DES: Comparado con el DES, está reforzado, pero aún tiene grandes riesgos.
AES: Un nuevo algoritmo de cifrado simétrico.
Las características determinan los escenarios de uso. El cifrado simétrico tiene las siguientes características:
Es rápido y se puede utilizar en escenarios de cifrado de alta frecuencia.
Utilice la misma clave para cifrar y descifrar.
Puede elegir el método de cifrado de 128, 192 o 256 bits como grupo, y el valor de salida del cifrado es un múltiplo del número del grupo seleccionado. Diferentes longitudes de clave, diferentes rondas de cifrado recomendadas y una mayor potencia de cifrado.
Por ejemplo:
La longitud del resultado del cifrado AES está determinada por la longitud de la cadena original: un carácter es 1 byte = 4 bits y una cadena es n 1 byte. Debido a que el último bit es '\0', el resultado de AES128 es 32 bits cuando la longitud de la cadena es menor o igual a 15.
El cifrado simétrico se utiliza ampliamente en varios lugares de cifrado debido a su rápida velocidad. Pero debido a que necesita transmitir la clave, una vez que la clave es interceptada o filtrada, su cifrado se descifrará por completo, por lo que AES generalmente se usa junto con RSA.
Debido a que RSA no necesita transmitir la clave y la velocidad de cifrado es lenta, AES generalmente usa RSA para cifrar la clave utilizada en la cerradura y luego transmite la clave para garantizar la seguridad de la clave. Una vez que la clave se transfiere con éxito, se utiliza AES para cifrar la información durante toda la sesión, lo que resuelve las deficiencias de AES y RSA y las aprovecha. Un ejemplo relativamente clásico es el cifrado HTTPS, que se estudiará en el próximo artículo.
Este artículo proporciona una explicación aproximada del algoritmo AES en modo ECB, y el algoritmo detallado de cada paso no se describirá nuevamente.
Divida el texto sin formato de 128 bits en una matriz de texto sin formato de 16 bytes y luego convierta la matriz de texto sin formato en una matriz de estado. Tome el texto sin formato de "abcdefghijklmnop" como ejemplo:
De manera similar, la clave de 128 bits se divide en 16 grupos de matrices de estado. A diferencia del texto sin formato, el texto cifrado genera las 4x8x4=128 claves originales en columnas, es decir, un conjunto de cuatro elementos, cada elemento consta de cuatro claves por columna, donde cada clave en la matriz es de 1 byte, que son 8 bits.
Después de generar las claves sin procesar iniciales de w[0], w[1], w[2] y w[3], la matriz de claves se expande a W[0] mediante la permutación de claves. función, W[1],…,W[43], una secuencia de 44 componentes. Los primeros cuatro elementos de la secuencia w [0], w [1], w [2] y w [3] son las claves originales, utilizadas para la adición de clave inicial en la operación de cifrado. Las últimas 40 palabras se dividen en 10 grupos. Cada grupo consta de cuatro campos de 32 bits, para un total de **128 bits.
La razón por la que se propone este paso por separado es porque la principal diferencia entre los modos ECB y CBC radica en este paso.
En el modo ECB, después de que la expansión de clave inicial genera el grupo de claves (w0-w43), el texto sin formato se extrae w[i, i 3] de acuerdo con el número de ronda actual para la operación de cifrado.
En el modo CBC, la ronda anterior de texto cifrado (el valor después del cifrado de texto sin formato) y el texto sin formato actual se someten a XOR antes de la operación de cifrado. Como se muestra en la figura:
Según la agrupación de diferentes dígitos, las rondas de cifrado recomendadas oficialmente son:
La operación de cifrado de ronda de la primera ronda es la misma que la función de ronda de la novena ronda, que incluye Hay cuatro operaciones: sustitución de bytes, desplazamiento de filas, mezcla de columnas y suma de claves redondas. La última iteración no realiza la combinación de columnas.
Cuando se completa el cifrado del primer grupo, los grupos siguientes realizan operaciones de cifrado en un bucle hasta que todos los grupos completan la operación de cifrado.
Normalmente, el resultado se convertirá a base64 bits. En este punto, la operación de decodificación debe realizarse como codificación base64, no UTF-8 en iOS.
Base64 es un método de codificación que utiliza lenguajes de uso común para transmitir código de bytes de 8 bits. El principio de codificación es el siguiente:
Los datos originales se dividen en grupos de 3 bytes, es decir, 3×8 = 24 bits.
Dividir los datos de 3×8 = 24 en datos de 4×6 = 24, es decir, dividirlo en 4 grupos.
Los datos de los cuatro grupos se rellenan con dos ceros en los bits altos, es decir, 8x4=32, por lo que los datos originales se incrementan en un tercio.
Convierte datos según la tabla de codificación base64. Si los datos binarios que se van a codificar no son múltiplos de 3, al final le quedarán 1 o 2 bytes. Base64 se rellena con \x00 bytes al final y luego se agrega un símbolo 1 o 2 = al final de la codificación para indicar cuántos bytes se rellenan. Se eliminará automáticamente al decodificar.
Por ejemplo: el resultado final de un hombre es TWFu.
Todos los datos en la computadora se almacenan en números binarios de 0 y 1. Todos los caracteres se convierten a través de la tabla ascii y luego se muestran en el idioma correspondiente. Sin embargo, hay muchos caracteres invisibles en las tablas ascii. Estos caracteres invisibles pueden pasar por varios tipos de enrutamiento en diferentes hardware durante la transmisión de datos y son propensos a errores al escapar. Por lo tanto, se especifican 64 caracteres visibles (a-z, A-Z, 0-9, , /) y todos los datos binarios son visibles después de la transcodificación base64.
ECB y CBC son dos modos de trabajo de cifrado. El mismo punto es que antes de que comience el cifrado, el texto sin formato y el texto cifrado se agrupan según 128/192/256. Tomando 128 bits como ejemplo, tanto el texto sin formato como el texto cifrado se dividen en 16 grupos, y cada grupo tiene 1 byte equivalente a 8 bits.
En el modo de trabajo del BCE, el texto sin formato y el texto cifrado de cada grupo son independientes entre sí. El texto sin formato de cada grupo genera texto cifrado cifrando el texto cifrado del grupo, sin afectar a otros grupos.
En el modo de trabajo CBC, el texto sin formato del último grupo se XOR con el texto cifrado del grupo anterior antes del cifrado, y luego el texto cifrado de este grupo se utiliza para el cifrado para generar texto cifrado.
Cifrar paquetes de datos simples. Después de dividir el texto sin formato y el texto cifrado en varios grupos, el texto cifrado se utiliza para cifrar el texto sin formato para generar texto cifrado.
Corporación Canadiense de Radiodifusión
Cifrado:
Descifrado: