¿El conjunto de datos cifrado AES completo tiene que estar presente para ser "crackeado"?

8

Estoy implementando un algoritmo AES 256 en tarjetas de crédito y me pregunto si fortalecería o debilitaría el conjunto de datos cifrado si dividiera el conjunto de datos y lo persistiera en dos ubicaciones. No entiendo el algoritmo AES lo suficiente para saber si 'todos los bits deben estar presentes para el craqueo' o si un subconjunto de los datos cifrados en realidad hace que sea más fácil de craquear.

Aquí está el escenario:

Texto para cifrar : 4798531212123535

Algoritmo : AES256

Clave : b0882e32f1194793800f4f0b43ddec6b273d31aafc474c4c8a3d5ae35b3e104b

Datos cifrados : GoCN4o35w4vzU4hQp47CLUgsTgaxRvvT7qdTVh5Hl + I =

Q1 : Si tuviera que dividir el conjunto de datos en 2 partes y almacenarlas en 2 repositorios en 2 partes del país ... Si una de las partes estaba comprometida, ¿debilité la seguridad? por dividir?

Q2 : la siguiente pregunta sería: si el conjunto de datos parcial & la clave se vio comprometida, ¿se puede usar la clave para descifrar parte del conjunto de datos o debe estar presente todo el conjunto de datos para ganar?

Parte 1 : GoCN4o35w4vzU4hQp47CLUgs

Parte 2 : TgaxRvvT7qdTVh5Hl + I =

------------ Agregado para mayor claridad --------------

Si la Parte 1 y la Clave estuvieran comprometidas, ¿el resultado del descifrado resultaría en algo de valor? ¿El resultado sería una secuencia correcta de caracteres?

Valores comprometidos :

Parte 1 : GoCN4o35w4vzU4hQp47CLUgs

Clave : b0882e32f1194793800f4f0b43ddec6b273d31aafc474c4c8a3d5ae35b3e104b

El valor descifrado sería algo así como: 47985312 (que es una secuencia del original)

    
pregunta troy r 19.12.2014 - 16:53
fuente

3 respuestas

28

Lo estás haciendo mal. No en la división o lo que sea; pero en el pensamiento . El cifrado AES, si se hace correctamente, no será "crackeado". AES es la pieza más robusta de su sistema; Esta es la última parte de la que debería preocuparse.

Lo que proporciona el cifrado AES es una funcionalidad muy específica: al utilizar una clave K determinada, transforma una parte de los datos (el "texto simple") en algo que es ilegible (el "texto cifrado") < em> excepto para aquellos que saben K , porque conocer K permite revertir la transformación. Mientras K permanezca desconocido para los atacantes, los datos cifrados están seguros. Si los atacantes conocen a K , entonces han ganado, y ninguna cantidad de división, intercambio o baile alrededor de un fuego mientras cantan la gloria del Gran Espíritu, te salvará.

AES utiliza claves de 128, 192 o 256 bits. Hay tantas claves posibles que la probabilidad de que un atacante comprometa la clave a través de la suerte pura es infinitesimal. Las claves de 128 bits son suficientes para eso; las claves más grandes no están destinadas a aumentar la seguridad, sino a afirmar su estado de macho alfa entre sus compañeros desarrolladores.

Si realmente necesita involucrarse en rituales elaborados de combinación de datos para que, por ejemplo, su jefe tenga la impresión de que "la seguridad está sucediendo" y no se esté aflojando, entonces también puede hacerlo correctamente. No dividir en cambio, dada una secuencia de bytes C (la cadena cifrada), genere una secuencia de bytes aleatorios D de la misma longitud; luego "dividir" C en dos acciones C 1 = C XOR D , y C 2 = D . Para ensamblar los recursos compartidos, solo XOROS juntos: sucede que C 1 XOR C 2 = C . Ese tipo de división es demostrablemente seguro (un atacante que aprende C 1 o C 2 , pero no ambos. aprende exactamente nada , en el sentido de information-theoretic , que es tan bueno como Cualquier criptografía puede obtener). Por supuesto, siempre que no destruyas cosas (DEBES generar una D muy aleatoria y generar una nueva cada vez que tengas una cadena para "dividir").

    
respondido por el Tom Leek 19.12.2014 - 17:30
fuente
4

Debería preocuparse por el almacenamiento seguro de la clave AES, no por dividir los datos. Si la clave está comprometida, realmente no hará ninguna diferencia lo que haya hecho con los datos porque Principio de Kerckhoffs .

Editado para agregar: Más especialmente, no debe almacenar la clave AES en la misma base de datos que contiene los datos cifrados porque un compromiso de la base de datos producirá tanto la clave como los datos. Los compromisos de la base de datos remota, por ejemplo por inyección de SQL, a veces son posibles incluso cuando no se compromete todo el sistema operativo. Guardar la clave en otro lugar es parte de la defensa en profundidad. Lo ideal sería almacenarlo con un módulo de seguridad de hardware (HSM), pero compilarlo en un programa o incluso como un archivo en el sistema de archivos es mucho mejor que el almacenamiento en la base de datos.

    
respondido por el Bob Brown 20.12.2014 - 06:47
fuente
1

Le sugiero que reconsidere su enfoque de este problema. ¿Dónde estás almacenando los datos? Si se encuentra en una base de datos, la mayoría de las bases de datos tienen la capacidad de cifrar los datos de manera bastante segura. ¿Los datos necesitan moverse sobre un canal inseguro? Mira en el HTTPS o FTP seguro. No te metas con Crypto a menos que tú también lo tengas. Es extremadamente fácil equivocarse.

    
respondido por el Anthony 19.12.2014 - 23:35
fuente

Lea otras preguntas en las etiquetas