floure.ARCHIVO / Tecnologías de la información
← Volver a la colección7 MIN DE LECTURA

Tecnologías de la información

Fundamentos de criptografia

Seguridad / Criptografía

Fundamentos de Criptografía

Cifrado, hash y firma digital tienen propósitos diferentes. Conviene separar qué oculta información, qué permite comparar contenido y qué vincula un mensaje con una clave. El vocabulario también protege el ritual.

Proceso de transformar información en una forma que los lectores no autorizados no puedan entender.

El mensaje original es el texto claro (plaintext). El cifrado transforma ese mensaje en texto cifrado (ciphertext) utilizando un algoritmo y una clave criptográfica. El descifrado permite recuperar el texto claro con la clave correspondiente.

Toda forma de encriptación necesita el cifrado y la llave para asegurar el intercambio de información.

Por ejemplo, una de las formas de encriptación más antigua es el cifrado Cesar (Caesar's cipher), nombrado así por ser el método utilizado por Julio Cesar para comunicarse con sus generales. Se cifraban mensajes a través de una llave que no era más que mover las letras en un número fijo de espacios.

Por ejemplo, Hola, usando un cifrado cesar de 3, sería Krod, porque se mueven las letras 3 espacios. Dicho cifrado actualmente es muy débil porque la cantidad de pruebas necesarias para desencriptar un mensaje se limita a la cantidad de letras del abecedario, por lo tanto sólo se necesitan unos ~26 intentos para descifrar el mensaje.

Esta táctica se llama Ataque de fuerza bruta, un proceso donde se prueban -a la fuerza- diferentes combinaciones.

Cifrado simétrico y asimétrico

Existen dos tipos principales de cifrado:

  • Simétrico:

    • Una única clave secreta para el intercambio de información.
    • Remitente y receptor deben conocer/tener dicha clave
  • Asimétrico:

    • Dos claves, una pública para cifrar y una privada para descifrar.

Criptoanálisis

Estudiar la seguridad de construcciones criptográficas e intentar encontrar debilidades o recuperar información bajo un modelo de ataque. Puede orientar mejoras, pero no es sinónimo de diseñar nuevos cifrados. La criptografía moderna usa construcciones distintas. RSA se relaciona con la dificultad de factorizar ciertos enteros; AES no se basa en ese problema. No existe una explicación única de seguridad aplicable a todos los algoritmos. NIST: AES.

Ataques de criptoanálisis

  • KPA: Known Plaintext Attack
    • Acceso a parte o la totalidad del texto simple de la información encriptada.
    • Se conoce el plaintext ("crib") y la versión encriptada.
    • El modelo define qué información conoce el atacante; el texto claro puede ser binario o estructurado, no necesariamente prosa legible.
    • El objetivo es analizar el texto para determinar la clave
  • CPA: Chosen Plaintext Attack
    • Atacante conoce el agoritmo de encriptación o tiene acceso a usarlo
    • Atacante puede obtener los textos según un set arbitrario que él envía
  • ACPA: Adaptive chosen plaintext attack
    • Similar al CPA, pero va adaptando su análisis usando textos subsecuentes
  • RKA: Related key attack
    • Similar al CPA, pero el atacante obtiene los ciphers encriptados con dos llaves diferentes.
    • Las llaves son desconocidas, pero se conoce su relación; ejemplo dos llaves difieren en el bit 1
  • COA: Cipher only attack
    • Sólo se conoce el mensaje encriptado.
    • Es la forma más común cuando se interceptan comunicaciones encriptadas

Resultados

Algunos ataques logran la ruptura total de la encriptación, mientras que otros obtienen información que puede ayudar al atacante a causar daños.

  • Deducción de instancias
    • Atacante descubre más texto sin formato o cifrado
    • No se obtuvo la clave pero con esto podemos usarlo para seguir analizando/atacando
  • Deducción de la información
    • Atacante obtiene información sobre un texto sin formato o cifrado que no conocía
    • Se puede usar para obtener más datos sobre la clave
  • Algoritmo de distinción
    • Atacante pudo distinguir el algoritmo de encriptación de una alteración aleatoria
  • Deducción global
    • Identificación del algoritmo funcionalmente equivalente al que se usa en la clave
  • Ruptura total
    • atacante logra obtener la clave completa y con ello tener acceso total



PKI

Public key infraestructure - Infraestructura de llaves pública

Se utilizan muchos algoritmos para enviar y almacenar información. Mantener individualmente un manejo de todas estas llaves de encriptación es una tarea imposible para el individuo común. Para esto existe la PKI.

PKI reúne roles, políticas, claves y certificados para gestionar confianza en claves públicas. No es un algoritmo de cifrado ni un intercambio obligatorio en dos pasos. Las construcciones híbridas pueden usar criptografía asimétrica para establecer secretos y simétrica para proteger datos, sin que una sea universalmente «más segura» que la otra.





Certificado Digital de seguridad.

Un certificado X.509 vincula una clave pública con un sujeto y otros atributos mediante la firma de un emisor. La autoridad firma, no cifra con su clave privada los datos del titular. Validar un certificado requiere revisar cadena de confianza, nombres, vigencia y el uso previsto. No basta con que el archivo exista. RFC 5280.





Algoritmos

Este listado sirve para distinguir funciones, no para elegir parámetros por memoria:

  • AES: cifrado simétrico con claves de 128, 192 o 256 bits; su uso necesita un modo apropiado y gestión correcta de claves y nonces. FIPS 197.
  • RSA: familia asimétrica con esquemas de cifrado y firma distintos. No elegir una longitud histórica del apunte como recomendación actual sin revisar política y biblioteca.
  • 3DES y DSA: aparecen en material histórico; no deben presentarse como opciones recomendadas por defecto para sistemas nuevos. La vigencia depende del uso y de la transición criptográfica aplicable. NIST SP 800-131A Rev.2.

Heartbleed afectó versiones concretas de OpenSSL y tuvo corrección. No justifica afirmar que toda implementación moderna con OpenSSL está desaconsejada. Aviso original de OpenSSL.

La seguridad del diseño no debe depender de mantener secreto el algoritmo. Eso tampoco elimina la necesidad de proteger claves ni de revisar la implementación.

HASH

Una función hash produce un resumen sin una operación de descifrado definida. Para usos criptográficos debe resistir ataques concretos; eso no impide probar entradas y comparar sus hashes. A diferencia de los algoritmos de cifrado simétricos y asimétricos, este no produce una llave de desencriptación. Lo que produce, es un identificador, conocido como valor hash (Hash value) o digest. Estos, son valores cortos de una longitud fija derivada de una entrada de longitud variable.

La gracia de utilizar Hash es que sirven para determinar la integridad de los archivos y aplicaciones. Esto ya que puedes tener un programa que hace exactamente lo mismo pero un pequeño cambio normalmente produce un digest distinto, aunque matemáticamente existen colisiones.

Integridad y no repudio no son sinónimos. Un hash sin una referencia confiable no autentica el origen: un atacante que cambia el archivo podría cambiar también el resumen publicado.

Las funciones hash son controles de seguridad importantes que ayudan a mantener la integridad de la información. Una forma de verificar esto es revisar los valores de archivos o aplicaciones y compararlos contra archivos maliciosos conocidos.

En linux podemos usar el CLI para generar el valor hash de cualquier archivo. Por ejemplo, sha256sum archivo calcula su SHA-256. Referencia de GNU Coreutils.


MD5 produce 128 bits, normalmente representados con 32 caracteres hexadecimales. Toda función de resumen de longitud fija admite colisiones; el problema práctico de MD5 es que no ofrece la resistencia a colisiones necesaria para usos que la requieren. Hacer una salida más larga no arregla automáticamente una construcción débil. RFC 6151.

No presentar SHA-1 como resistente a colisiones para usos nuevos. SHA-2 y SHA-3 son familias distintas; elegir algoritmo también depende del propósito. Un resumen de archivo no sustituye una función específica de almacenamiento de contraseñas.

SALTING

Protección adicional usada para reforzar las funciones. Básicamente 'le echamos sal' que es una cadena aleatoria de caracteres que se agrega a una entrada durante el proceso. Esto suele usarse al principio o al final de los datos. Un uso común para este condimentado es el de almacenamiento de contraseñas.

Véase también

Precisión: la introducción define cifrado, que es una parte de la criptografía. No todo algoritmo de clave pública cifra (también hay firma/acuerdo de claves). Un distinguidor diferencia una construcción de su referencia ideal, no necesariamente identifica el nombre del algoritmo. El César del ejemplo supone el alfabeto latino de 26 letras sin ñ; no ofrece seguridad moderna. Para contraseñas, usar una función específica con costo y salt único por contraseña: el salt se almacena junto al verificador y no necesita ser secreto. NIST: verificadores de contraseñas.

+----------------------------------------+
| Floure &                               |
| Tachibana's guild                      |
| [Hikari · Nozomi · Vesper]             |
| SEAL: sha256/12: 1f27c93df5de          |
| STATUS: LITURGY_IN_PROGRESS            |
+----------------------------------------+

Conexiones

Desde este apunte · 2

Enlazan aquí · 0

Sin enlaces entrantes.

Abrir red completa ↗
✳

Fin del apunte

Seguir explorando ↗