¿Cuáles son las variables de AES?

10

AES es una rutina de cifrado estándar que se puede usar de manera consistente en múltiples idiomas, asumiendo que todas las variables coincidan. Mi pregunta es, cuales son las variables. Soy consciente de lo siguiente

  • Variante (es este AES-256, o simplemente AES-128)

  • Datos para cifrar

  • Clave (128 bits es común)

  • Vector de inicialización - ¿ahora qué es esto? ¿También son 128 bits predeterminados?

    Por la lectura de Wikipedia, entiendo que la IV se usa para evitar que dos bloques de 16 bits idénticos en el flujo general sean idénticos después del cifrado, ya que eso haría que los datos sean más fáciles de adivinar.

  • ¿También hay un modo?

    Supongo que esto va a ser de relleno / transmisión, frente a la longitud requerida de 128 bits ... ¿pero cuántos modos hay, o esto es diverso?

Lo siento si entendí algo de esto mal, pero me confundí y me gustaría una lista clara de las variables. Creo que los conseguí a todos, pero no estoy seguro de haberlos acertado.

    
pregunta George Bailey 06.06.2012 - 20:52
fuente

2 respuestas

11

El cifrado AES tiene un solo parámetro: la tecla . Indirectamente, también se define la variante AES. Tiene AES-128 para las claves de 16 bytes, AES-192 para las claves de 24 bytes y AES-256 para las claves de 32 bytes.

No considero que los datos de entrada sean un parámetro.

Ortogonal a que tiene el modo de encadenamiento , que es la forma en que se las arregla para cifrar / descifrar partes de datos que no coinciden con el tamaño de bloque del cifrado. Por ejemplo, ECB, CBC, CFB, etc. Yo uso el término genérico cipher porque un modo de encadenamiento es aplicable a cualquier block cipher , y AES es uno entre muchos ( por ejemplo, tiene TDES, Blowfish, etc.), con un tamaño de bloque constante de 16 bytes.

Algunos modos de encadenamiento (CBC, OFB, CFB, GCM) requieren un Vector de inicialización , que a menudo coincide con el tamaño de bloque del cifrado. En algunos casos, el IV se llama nonce y puede ser más pequeño que el tamaño del bloque (por ejemplo, para CTR).

Finalmente, algunos modos de encadenamiento pueden requerir que el texto plano tenga una longitud múltiple de algún valor (por ejemplo, tamaño de bloque para CBC, tamaño de segmento para CFB). En esos casos, es posible que también deba definir el algoritmo de relleno específico (por ejemplo, estilo PKCS7).

    
respondido por el SquareRootOfTwentyThree 06.06.2012 - 23:19
fuente
10

El propio AES tiene tres variantes: AES-128, AES-192 y AES-256. Internamente, los algoritmos tienen construcciones muy similares. El número es la longitud de la clave (en bits), es decir, la longitud del secreto preestablecido (AES es un cifrado de secreto compartido). Un número más alto significa no solo una clave más larga, sino también más trabajo realizado con la clave y la entrada para producir la salida.

Cada uno de estos tres algoritmos especifica dos funciones encrypt y decrypt ; ambas funciones toman como entrada una n -bit valor ( n = 128, 192 o 256) llamada clave y un valor de 128 bits llamado bloque de entrada, y producen como salida un valor de 128 bits llamado el bloque de salida. El bloque de entrada a encrypt se llama texto sin formato y el bloque de salida se llama texto cifrado; para decrypt , los roles se invierten.

encrypt(key, plaintext) = ciphertext
decrypt(key, ciphertext) = plaintext

AES es un cifrado de bloque . Solo especifica cómo cifrar o descifrar un bloque de 128 bits. Si sus datos son más cortos o más largos que eso, necesita algo más sofisticado: necesita tener una modo de operación , a menudo llamado modo de cadena porque especifica cómo para procesar un bloque tras otro. La elección del modo de encadenamiento es en gran medida independiente de la elección del algoritmo de procesamiento de bloques.

Algunos modos de encadenamiento solo requieren la clave y la entrada. Por ejemplo, ECB , el modo más simple de todos, solo dice cortar la entrada en bloques de del tamaño apropiado, aplique el algoritmo de cifrado / descifrado y pegue los bloques de salida juntos. Este modo tiene muchas fallas (por ejemplo, puede detectar repeticiones en la entrada si están alineadas con un límite de bloque; puede saber si dos mensajes cifrados son iguales porque entonces tienen el mismo texto cifrado).

Muchos modos de encadenamiento requieren una pieza de entrada adicional, generalmente un bloque de tamaño. Por lo general, se mezcla con el primer bloque de entrada de alguna manera, y se denomina vector de inicialización ( a menudo abreviado IV ). La IV se elige generalmente al azar; este es un requisito para algunos modos, mientras que para otros es suficiente nunca elegir el mismo IV dos veces para la misma tecla (lo que garantiza un sorteo aleatorio). La IV sirve (al menos) para hacer dos cifrados del mismo texto simple con la misma clave distinta. Un modo popular que usa un IV aleatorio es CBC . Otro modo popular es CTR (contador) ; su IV se llama más adecuadamente una nonce , porque no tiene que ser aleatoria, solo no repetida.

La división de la entrada en bloques solo funciona cuando es un múltiplo del tamaño del bloque. De lo contrario, el proceso habitual es dividir tantos bloques como sea posible al principio y aplicar un esquema de relleno hasta el último bloque parcial. Aunque relleno tiende a implicar que algunos bits se agregan para formar un bloque completo, el relleno de forma segura no es tan simple: un bloque parcial B con algún relleno P los riesgos agregados se confunden con un bloque completo que pasa a ser BP . Los buenos esquemas de relleno tienen que aplicar algo de relleno a todos los mensajes, incluso los que resultan ser un número exacto de bloques. Algunos modos de operación imponen un esquema de relleno particular, mientras que otros son agnósticos de relleno. Las bibliotecas criptográficas a menudo requieren que la entrada para bloquear las funciones de cifrado sean solo bloques completos, dejando la tarea de relleno a la persona que llama.

Hay modos que hacen algo más que un algoritmo de cifrado / descifrado a partir de cifrados de bloque. Los modos como CMAC hacen un código de autenticación de mensaje , es decir, una firma basada en un secreto compartido. Los modos como GCM realizan tanto el cifrado como la firma (la salida de AES- n - GCM-encrypt (clave, IV, etiqueta, texto plano) es tanto un texto cifrado como un MAC).

    
respondido por el Gilles 06.06.2012 - 23:55
fuente

Lea otras preguntas en las etiquetas