Encriptación. Nociones avanzadas 2

nociones de seguridad

Los objetivos de seguridad solo son útiles cuando se combinan con un modelo de ataque. La convención es escribir una noción de seguridad como MODELO-OBJETIVO. Por ejemplo, IND-CPA denota indistinguibilidad contra ataques de texto plano, NM-CCA denota no maleabilidad contra ataques de texto cifrado, y así. Comencemos con los objetivos de seguridad para un atacante.

SEGURIDAD SEMANTIVA Y ENCRIPTACION ALEATORIA: IND-CPA

La noción de seguridad más importante es IND-CPA, también llamada seguridad semántica. Captura la intuición de que los textos cifrados no deben filtrar información sobre textos sin formato siempre que la clave sea secreta. Para lograr la seguridad INDCPA, el cifrado debe devolver diferentes textos cifrados si se encripta dos veces sobre el mismo texto sin formato; de lo contrario, un atacante podría identificar textos duplicados en sus textos cifrados, contradiciendo la definición de que los textos cifrados no deben revelar ninguna información. Una forma de lograr la seguridad IND-CPA es utilizar cifrado aleatorio. Como sugiere el nombre, aleatoriza el proceso de cifrado y devuelve diferentes textos cifrados cuando el mismo texto plano se cifra dos veces.
El cifrado se puede expresar como

C = E(K, R, P)

donde R es la cadena de bits aleatorios. El descifrado sigue siendo determinista, sin embargo, ya que dado E(K, R, P), siempre debe obtener P, independientemente del valor de R. ¿Qué pasa si el cifrado no es aleatorio? El atacante elige dos textos sin formato, P1 y P2, y recibe un texto cifrado de uno de los dos, pero no sabe cual texto plano es el que corresponde el texto cifrado. Es decir, obtienen Ci = E (K, Pi) y se tiene que adivinar si i es 1 o 2. En el modelo CPA, el atacante puede realizar consultas de cifrado para determinar tanto C1 = E (K, P1) y C2 =E (K, P2). Si el cifrado no es aleatorio, basta con ver si Ci
es igual a C1 o C2 para determinar qué texto sin formato estaba cifrado y
por lo tanto es IND. Por lo tanto, la aleatorización es clave para la noción de INDCPA.

Con el cifrado aleatorio, los textos cifrados deben ser un poco más largos que los textos sin formato para permitir más de un texto cifrado posible por texto sin formato. Por ejemplo, si hay 2^64 posibles textos cifrados por texto plano, los textos cifrados deben ser al menos 64 bits más largos que los textos sin formato.

logrando encriptacion semanticamente segura

Una de las construcciones más simples de un cifrado semánticamente seguro utiliza un
generador de bits aleatorios determinista (DRBG), un algoritmo que devuelve una cadena de bits aleatorios dado algún valor secreto:

E(K, R, P) = (DRBG (K||R) ⊕ P, R)


Aquí, R es una cadena elegida al azar para cada nuevo cifrado y se le da a DRBG junto con la clave. (K||R) denota la cadena que consta de K seguido de R). Este enfoque recuerda al pad de un solo uso: en cambio, al elegir una clave aleatoria de la misma longitud que el mensaje, aprovechamos la cadena del generador de bits aleatorios para obtener una cadena aleatoria. La prueba de que este cifrado IND-CPA esseguro es simple, si asumimos
que el DRBG produce bits aleatorios. La prueba funciona ad absurdum: si puede distinguir textos cifrados de cadenas aleatorias, lo que significa que puede distinguir DRBG (K || R) ⊕ P de aleatorio, entonces esto significa que puede distinguir DRBG (K||R) del azar. Recuerda que el modelo CPA le permite obtener textos cifrados para los valores elegidos de P, por lo que puede hacer XOR P a DRBG (K, R) ⊕ P y obtener DRBG (K, R). Pero ahora tenemos una contradicción, porque comenzamos asumiendo que DRBG (K, R) no puede ser distinguido se su aleatoriedad, produciendo cadenas aleatorias. Entonces concluimos
que los textos cifrados no se pueden distinguir de las cadenas aleatorias y, por lo tanto,
que el cifrado es seguro.

Como ejercicio, intente determinar qué otras nociones de seguridad satisfacen el cifrado anterior E (K, R, P) = (DRBG (K || R) ⊕ P, R). ¿Es NM-CPA o IND-CCA?

comparando las nociones de seguridad

Ha aprendido que los modelos de ataque como CPA y CCA se combinan con objetivos de seguridad como NM e IND para construir las nociones de seguridad NM-CPA, NM-CCA, IND-CPA e IND-CCA. Como estan estas nociones relacionadas? ¿Podemos probar que si se satisface la noción X implica satisfacer la noción Y?
Algunas relaciones son obvias: IND-CCA implica IND-CPA, y NMCCA implica NM-CPA, porque cualquier cosa que pueda hacer un atacante al CPA, tambien el atacante también puede hacerselo al CCA. Es decir, si no puede descifrar un cifrado realizando consultas de texto cifrado elegido y texto plano elegido, no se puede realizar consultas de texto sin formato elegido. Una relación menos obvia es que IND-CPA no implica NM-CPA. A
entender esto, observe que la construcción IND-CPA anterior (DRBG (K, R) ⊕ P, R) no es NM-CPA: dado un texto cifrado (X, R), puede crear el texto cifrado (X ⊕ 1, R), que es un texto cifrado válido de P ⊕ 1, así contradiciendo la noción de no maleabilidad. Pero la relación opuesta se mantiene: NM-CPA implica IND-CPA. La intuición es que el cifrado IND-CPA es como poner artículos en una bolsa, no puede verlos, pero puede reorganizar sus posiciones en la bolsa sacudiéndolo hacia arriba y hacia abajo. NM-CPA es más como una caja fuerte: una vez dentro, no puede interactuar con lo que puso allí. Pero esta analogía no funciona para IND-CCA y NM-CCA, que son nociones equivalentes de que cada
implican la presencia de la otra.

Hay dos tipos principales de aplicaciones de cifrado. El cifrado en tránsito protege los datos enviados de una máquina a otra: los datos están encriptados antes de ser enviados y descifrados después de ser recibidos, como en las conexiones cifradas a sitios web de comercio electrónico. El cifrado en reposo protege los datos almacenado en un sistema de información. Los datos están encriptados antes de ser escrito en la memoria y descifrado
antes de ser leído. Los ejemplos incluyen cifrado de disco en sistemas en laptops y máquinas virtuales y cifrado para instancias virtuales en la nube. Las nociones de seguridad que hemos visto se aplican a ambos tipos de aplicaciones, pero la noción correcta a considerar puede dependen de la aplicación.

encriptacion asimetrica

Hasta ahora hemos considerado solo el cifrado simétrico, donde dos partes comparten una clave. En el cifrado asimétrico, hay dos claves: una para cifrar y otra para descifrar. La clave de cifrado se llama clave pública y generalmente se considera disponible públicamente para cualquier persona que quiera enviarle mensajes cifrados. Sin embargo, la clave de descifrado debe permanecer secreta y se llama clave privada.

La clave pública se puede calcular a partir de la clave privada, pero obviamente la clave privada no se puede calcular a partir de la clave pública. En otras palabras, es fácil de calcular en una dirección, pero no en la otra, y esa es el punto de la criptografía de clave pública, cuyas funciones son fáciles de calcular en una dirección pero prácticamente imposible de invertir. Los modelos de ataque y los objetivos de seguridad para el cifrado asimétrico son más o menos lo mismo que para el cifrado simétrico, excepto porque la clave de cifrado es pública, cualquier atacante puede realizar consultas de cifrado utilizando la clave pública para cifrar. El modelo predeterminado para el cifrado asimétrico es, por tanto, el atacante de texto plano elegido (CPA). El cifrado simétrico y asimétrico son los dos tipos principales de cifrado y, por lo general, se combinan para crear sistemas de comunicación seguros. También se utilizan para formar la base de más
esquemas sofisticados, como verá a continuación.

cuando los cifrados hacen algo mas que encriptar

El cifrado básico convierte los textos sin formato en textos cifrados y los textos cifrados en
textos planos, sin más requisitos que la seguridad. Sin embargo, algunas aplicaciones a menudo necesitan más que eso, ya sean funciones de seguridad adicionales o funcionalidades extra. Por eso los criptógrafos crearon variantes de cifrado simétrico y asimétrico. Algunos son bien entendidos, eficientes y ampliamente implementados, mientras que otros son experimentales, apenas se utilizan, y ofrecen un rendimiento deficiente.

encriptacion autenticada

El cifrado autenticado (AE) es un tipo de cifrado simétrico que devuelve una etiqueta de autenticación además de un texto cifrado. La figura de abajo muestra que el cifrado por autentificacion establece:

AE(K, P)=(C, T)

donde la etiqueta de autenticación T es una cadena corta que es imposible de adivinar sin la clave. El descifrado toma K, C y T y devuelve el texto sin formato P solo si verifica
que T es una etiqueta válida para ese par de texto plano-texto cifrado; de lo contrario aborta el descifrado y devuelve algún error.

Encriptacion autentificada

La etiqueta asegura la integridad del mensaje y sirve como evidencia de que el texto cifrado recibido es idéntico al enviado en primer lugar por una parte legítima que conoce la clave K. Cuando K se comparte con la otra parte, la etiqueta también garantiza que el mensaje fue enviado por esa parte; es decir, autentica implícitamente al remitente esperado como el verdadero creador del mensaje.

Se usa la palabra “creador” en lugar de “remitente” aquí porque un atacante puede grabar algunos pares (C, T) enviados por la parte A a la parte B y luego los envían de nuevo a B, pretendiendo ser A. Esto se llama ataque de repetición, y se puede prevenir, por ejemplo, incluyendo un número de contador en el mensaje. Cuando un mensaje es descifrado, su contador i se incrementa en uno: i + 1. De esta manera, se podría verificar el contador para ver si se ha enviado un mensaje dos veces, lo que indica que un atacante está intentando un ataque de reproducción reenviando el mensaje. Esto también permite la detección de mensajes perdidos.

El cifrado autenticado con datos asociados (AEAD) es una extensión de cifrado autenticado que requiere texto claro y datos no cifrados y lo utiliza para generar la etiqueta de autenticación AEAD (K, P, A) = (C, T). Una aplicación típica de AEAD se utiliza para proteger los datagramas de protocolos con un encabezado de texto sin formato y una carga útil cifrada. En tales casos, al menos algunos datos del encabezado deben permanecer claros; por ejemplo, las direcciones de destino deben ser claras para enrutar paquetes de red.

encriptacion preservando el formato

Un cifrado básico toma bits y devuelve bits; no le importa si los bits representa texto, una imagen o un documento PDF. El texto cifrado puede a su vez, codificarse como bytes sin procesar, caracteres hexadecimales, base64 y otros formatos. Pero, ¿y si necesita que el texto cifrado tenga el mismo formato que el texto plano, como a veces lo requieren los sistemas de bases de datos que solo pueden registrar datos en un formato prescrito?
El cifrado que conserva el formato (FPE) resuelve este problema. Puede crear textos cifrados que tienen el mismo formato que el texto sin formato. Por ejemplo, FPE puede cifrar direcciones IP a direcciones IP (como se muestra en la Figura 1-5), los codigos ZIP a códigos postales, números de tarjetas de crédito a números de tarjetas de crédito con una suma de comprobación válida, etc.

Encriptacion para direcciones IP preservando el formato

encriptacion totalmente homomorfica

El cifrado totalmente homomórfico (FHE) es el santo grial para los criptógrafos: permite a sus usuarios reemplazar un texto cifrado

C = E (K, P)

con otro texto cifrado

C′=E(K,F(P))

para F(P) que puede ser cualquier función de P, y sin descifrar el texto cifrado inicial C. Por ejemplo, P puede ser un texto de un documento, y F puede ser la modificación de parte del texto. Usted puede imaginar una aplicación en la nube que almacene sus datos cifrados, pero donde el proveedor de la nube no sabe cuáles son los datos o el tipo de cambios realizados cuando cambian esos datos. Suena increíble, ¿no?Pero hay una otra cara: este tipo de cifrado es lento, tan lento que incluso la operación más básica llevaría un tiempo inaceptablemente largo. El primer esquema FHE se creó en 2009, y desde entonces variantes más eficientes han aparecido, pero no está claro si FHE alguna vez será lo suficientemente rápido para ser útil.

encriptacion de busqueda

El cifrado de búsqueda permite realizar búsquedas en una base de datos cifrada sin
filtrar los términos buscados cifrando la propia consulta de búsqueda. Como el cifrado totalmente homomórfico, el cifrado de búsqueda podría mejorar la privacidad de muchas aplicaciones basadas en la nube al ocultar sus búsquedas a su proveedor de nube. Algunas soluciones comerciales afirman ofrecer búsquedas de cifrado, aunque se basan principalmente en criptografía estándar con algunos trucos para permitir la búsqueda parcial. Sin embargo, al momento de escribir estas líneas, el cifrado de búsqueda sigue siendo experimental dentro de la investigación.

encriptacion modificable

El cifrado modificable (TE) es similar al cifrado básico, excepto por un parámetro adicional llamado tweak, que tiene como objetivo simular diferentes versiones de un cifrado (Figura de abajo). El ajuste puede ser un valor único por cliente para garantizar que el cifrado de un cliente no pueda ser clonado por otras partes que utilizan el mismo producto, pero la aplicación principal de TE es el cifrado de disco. Sin embargo, TE no está obligado a usarse en una sola aplicación y es un tipo de cifrado de nivel inferior utilizado para construir otros esquemas, como los modos de cifrado de autenticación.

Encriptacion modificable

En el cifrado de disco, TE cifra el contenido de dispositivos de almacenamiento como discos duros o unidades de estado sólido. (No se puede utilizar el cifrado aleatorio porque aumenta el tamaño de los datos, lo cual es inaceptable para archivos en medios de almacenamiento.) Para hacer que el cifrado sea impredecible, TE utiliza un ajuste de valor que depende de la posición de los datos cifrados, que suele ser un número de sector o un índice de bloque.

como las cosas pueden ir mal

Los algoritmos de cifrado o sus implementaciones pueden no proteger la confidencialidad de muchas formas. Esto puede deberse a una falla en la coincidencia de los requisitos de seguridad (como IND-CPA) o establecer requisitos que coincidan con la realidad (si se orienta solo a la seguridad IND-CPA cuando los atacantes pueden realizar consultas de texto cifrado elegido). Muchos ingenieros ni siquiera piensan en los requisitos de la seguridad criptográfica y solo quieren crear productos con cierta seguridad sin comprender lo qué realmente esto significa. Veamos dos ejemplos.

encriptacion debil

Nuestro primer ejemplo se refiere a cifrados que pueden atacarse utilizando técnicas de criptoanálisis, como ocurrió con la comunicación móvil 2G (GSM) estándar. El cifrado en teléfonos móviles 2G utilizó un cifrado llamado A5/1 que resultó ser más débil de lo esperado, lo que permitió la interceptación de llamadas por cualquier persona con las habilidades y herramientas adecuadas. Los operadores de telecomunicaciones tuvieron que encontrar soluciones para evitar el ataque.

El estándar 2G también definió A5/2, un cifrado para áreas distintas de la UE y US. A5/2 fue deliberadamente más débil para evitar el uso de cifrado fuerte

Dicho esto, atacar A5/1 no es trivial y tomó más de 10 años para que los investigadores encontraran un método de criptoanálisis eficaz. Además, el ataque es un intercambio de memoria de tiempo (TMTO), un método que primero ejecuta cálculos durante días o semanas para construir grandes tablas de búsqueda, que se utilizan posteriormente para el ataque real. Para A5/1, las tablas precalculadas son más de 1TB. Estándares posteriores
para el cifrado móvil, como 3G y LTE, especificaron cifrados más fuertes, pero eso no significa que su cifrado no se verá comprometido; más bien, simplemente significa que el cifrado no se verá comprometido al romper el cifrado simetrico parte del sistema.

modelo erroneo

El siguiente ejemplo se refiere a un modelo de ataque no válido que pasó por alto algunos
canales laterales. Muchos protocolos de comunicación que utilizan cifrado garantizan que
usen cifrados considerados seguros en el modelo CPA o CCA. Sin embargo, algunos ataques no requieren consultas de cifrado, como en el modelo de CPA, ni requieren consultas de descifrado, como en el modelo CCA. Simplemente necesitan consultas de validez para saber si un texto cifrado es válido, y estas consultas son normalmente enviadas al sistema responsable de descifrar los textos cifrados. Los ataques de Oracle son un ejemplo de tales ataques, en los que un atacante aprende si un texto cifrado se ajusta al formato requerido.
Específicamente, en el caso de ataques de padding de Oracle, un texto cifrado es válido
solo si su texto plano tiene el padding adecuado, se agrega una secuencia de bytes al texto sin formato para simplificar el cifrado. El descifrado falla si el padding es incorrecto, y los atacantes a menudo pueden detectar fallas de descifrado e intentar explotarlos. Por ejemplo, la presencia de la excepción de Java javax.crypto.BadPaddingException indicaría que un padding incorrecto fue observado. En 2010, los investigadores encontraron ataques de padding de Oracle en varios sitios web de aplicaciones. Las consultas de validez consistieron en enviar un texto cifrado a algún sistema y observar si arrojan un error. Gracias a estas consultas, se podrían descifrar textos cifrados de otro modo seguros sin saber la clave.
Los criptógrafos a menudo pasan por alto ataques como los ataques de padding de Oracle
porque generalmente dependen del comportamiento de una aplicación y de cómo los usuarios pueden interactuar con la aplicación.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s