Red de conocimiento informático - Conocimiento informático - Cifrado simétrico basado en criptografía (1)

Cifrado simétrico basado en criptografía (1)

No daré una definición. Déjame explicarte brevemente. No quiero que otros conozcan mi información. Utilizo una clave secreta para cifrar mi información y convertirla en un texto secreto como un fantasma. encanto (texto cifrado). Incluso si otros lo ven, no pueden identificarlo. Sólo con la clave secreta se puede entender la información después de descifrar el texto secreto. No se lo digo a la mayoría de la gente. Mi clave secreta es información privada, por lo que también se llama clave privada. La clave secreta utilizada para cifrar y descifrar es la misma, por lo que se llama "cifrado simétrico" y también se llama "cifrado de clave privada".

Para texto sin formato y clave simétrica

Proceso de cifrado E(texto sin formato, clave) = texto cifrado

Proceso de descifrado D(texto cifrado, clave) = texto sin formato

p>

El cifrado simétrico se divide en dos tipos: cifrado de bloque y cifrado de flujo. Este artículo solo presenta cifrados en bloque.

El cifrado de bloques es un tipo de algoritmo de cifrado y descifrado que solo puede procesar un bloque de datos de una longitud específica a la vez. AES es un algoritmo de cifrado en bloque. El algoritmo de cifrado AES puede cifrar una longitud de bloque de 128 bits a la vez.

Modo ECB

Utilizando el algoritmo de cifrado AES en modo ECB, se pueden cifrar datos de 128 bits a la vez, es decir, 16 bytes. Si queremos cifrar 48 bytes de contenido, debemos dividir los datos en 3 grupos de 16 bytes cada uno, a saber, P1, P2 y P3. Los textos secretos formados después de cifrar P1, P2 y P3 son C1, C2 y C3 respectivamente. Empalmamos C1, C2 y C3 en secuencia para convertirse en el resultado final del cifrado.

Modo CBC

"Cifrado simétrico - Cifrado simétrico 2" se está escribiendo e incluirá más modos de cifrado de bloques, cifrado de flujo y más conocimiento de AES.

Cifrado DES: Algoritmo de cifrado antiguo, las regulaciones NIST solo se pueden utilizar en sistemas heredados y TDEA. (Consulte [CNS] Capítulo 3.2)

Cifrado TDEA (Triple DEA): muchos materiales también se denominan 3DES (Triple DES). (Referencia [SP800-67])

Python puede usar el módulo pycrypto para el cifrado y descifrado AES. Para instalar pycrypto, use el comando pip install pycrypto.

A continuación se muestra una demostración de la primera versión de AES. Échale un vistazo primero y luego se actualizará a la segunda versión.

Ejecútelo y podrá cifrar y descifrar normalmente. Sin embargo, si cambia el texto a cifrar de aesAlgorithmDemo a hola, se informará un error:

Esto se debe a que la longitud del paquete de AES es de 128 bits, que son 16 bytes. Algunas implementaciones de AES requieren relleno si la longitud del mensaje que se va a cifrar no es múltiplo de 16 bytes.

El método de llenado se basa generalmente en el estándar de llenado PKCS#7.

Si la longitud de los datos no es un múltiplo entero del grupo, los datos deben completarse al múltiplo del grupo. Si la longitud de los datos es un múltiplo del grupo, los datos. Es necesario completar la longitud del grupo. El valor de cada byte rellenado es la longitud del relleno. PKCS#7 admite longitudes de paquetes de 1 a 255 bytes.

Por poner algunos ejemplos:

La longitud del paquete de AES es de 16 bytes, independientemente de si la clave secreta es de 128 bits, 192 bits o 256 bits.

Si la longitud de los datos que se van a cifrar es de 5 bytes, debe rellenar 11 bytes y los bits de contenido rellenados se rellenarán hasta una longitud de 0x0b. Después del llenado, se parece a la siguiente expresión

Si la longitud de los datos es 30 bytes, es necesario completar 2 bytes y el contenido de cada byte es 0x02. Si los datos son exactamente un múltiplo de 16, Es necesario completar 16 bytes, el contenido de cada byte es 0x10.

Después de comprender el concepto de relleno, reescribimos las funciones de cifrado y descifrado de la siguiente manera:

¿Este relleno lo hará incompatible con otros sistemas? No. Los programas AES generales admiten el relleno PKCS#7.

Conceptos básicos de criptografía: RSA y claves asimétricas

Serie Conceptos básicos de criptografía

[CNS] "Criptografía y seguridad de redes" (Sexta edición) )

[SP800-67] Publicación especial de NIST 800-67 Revisión 1, Recomendación para el cifrado de bloques del algoritmo de cifrado de datos triple (TDEA), enero de 2012.

[SSH] Vulnerabilidad de divulgación de información en modo OpenSSH CBC

[NIST SP 800-57 Parte 1 Rev. 4] Recomendación para la gestión de claves, Parte 1: General