Академический Документы
Профессиональный Документы
Культура Документы
Temario
Criptografa simtrica y asimtrica Integridad y funciones de hash. Problemas. Cifrado y firma digital con S/Mime y PGP. Verificacin de firma. Implementacin de autoridad certificante de prueba utilizando SSL.CA. Autenticacin de servidor y clientes va web utilizando certificados. Mecanismos de proteccin y almacenamiento seguro de claves. Cracking de contraseas y rainbow tables. Cifrado de particiones reales o virtuales en Windows y Linux. Desarrollo utilizando criptografa.
Qu dice ac ?
Tm9zLCBsb3MgcmVwcmVzZW50YW50ZXMgZGVsIHB1ZWJsbyBkZSBsYSBOYWNp824g QXJnZW50aW5hLCByZXVuaWRvcyBlbiBDb25ncmVzbyBHZW5lcmFsIENvbnN0aXR1 eWVudGUgcG9yIHZvbHVudGFkIHkgZWxlY2Np824gZGUgbGFzIHByb3ZpbmNpYXMg cXVlIGxhIGNvbXBvbmVuLCBlbiBjdW1wbGltaWVudG8gZGUgcGFjdG9zIHByZWV4 aXN0ZW50ZXMsIGNvbiBlbCBvYmpldG8gZGUgY29uc3RpdHVpciBsYSB1bmnzbiBu YWNpb25hbCwgYWZpYW56YXIgbGEganVzdGljaWEsIGNvbnNvbGlkYXIgbGEgcGF6 IGludGVyaW9yLCBwcm92ZWVyIGEgbGEgZGVmZW5zYSBjb236biwgcHJvbW92ZXIg ZWwgYmllbmVzdGFyIGdlbmVyYWwsIHkgYXNlZ3VyYXIgbG9zIGJlbmVmaWNpb3Mg ZGUgbGEgbGliZXJ0YWQgcGFyYSBub3NvdHJvcywgcGFyYSBudWVzdHJhIHBvc3Rl cmlkYWQgeSBwYXJhIHRvZG9zIGxvcyBob21icmVzIGRlbCBtdW5kbyBxdWUgcXVp ZXJhbiBoYWJpdGFyIGVuIGVsIHN1ZWxvIGFyZ2VudGlubzsgaW52b2NhbmRvIGxh IHByb3RlY2Np824gZGUgRGlvcywgZnVlbnRlIGRlIHRvZGEgcmF6824geSBqdXN0 aWNpYTogb3JkZW5hbW9zLCBkZWNyZXRhbW9zIHkgZXN0YWJsZWNlbW9zIGVzdGEg Q29uc3RpdHVjafNuIHBhcmEgbGEgTmFjafNuIEFyZ2VudGluYS4gCg==
Base64
Mecanismo de codificacin que utiliza un conjunto de 64 caracteres para codificar cualquier valor posible de un byte. Toma 3 bytes, y los convierte en 4. Usa A-Z, a-z, 0-9, +,/ e = para el padding. Ej: Mensaje en claro Codificado en base 64: TWVuc2FqZSBlbiBjbGFybwo=
Criptografa simtrica
Tambin conocido como criptografa de clave secreta o clave privada. La clave utilizada en la operacin de cifrado es la misma que se utilizada para el descifrado. Existen dos mecanismos de operacin bsicos: Cifrado en bloques. Cifrado de flujo.
Modo CBC El texto se divide en bloques y cada bloque es mezclado con la cifra del bloque previo, luego es cifrado utilizando la clave.
Criptografa simtrica
Algunos Algoritmos: DES (poco seguro), 3DES, Blowfish, AES (128,192,256) Ventajas Gran velocidad No aumenta el tamao del mensaje Desventajas Distribucin de las claves: Es necesario que el receptor conozca la clave que se va a utilizar. No es posible utilizar medios inseguros para la comunicacin de las claves.
Criptografa asimtrica
La invencin del concepto de criptografa de clave pblica se atribuye a Diffie y a Hellman (1976). Nace como una solucin al problema de distribucin de claves, permitiendo que dos partes puedan acordar una clave en comn sobre canales inseguros. Posteriormente la aparicin del algoritmo RSA, propone un mecanismo en el cual el descifrado de la informacin se realiza con una clave distinta a la clave de cifrado.
Criptografa asimtrica
Se basa en la existencia de dos claves relacionadas matemticamente entre s: Clave pblica disponible para todos. Clave privada conocida slo por el individuo.
Funciones de hash
La funcin de hash transforma un mensaje de entrada M de longitud variable en una cadena de salida de longitud fija H(M). Debe ser fcil de computar.
Funciones de hash
La longitud es tpicamente: 128, 160, 256 o 512 bits. Las funciones ms difundidas son: MD5 (128 bits, RFC 1321) SHA-1 (160 bits, NIST FIPS 180-2) RIPEMD160 (ISO/IEC 10118-3) SHA-256 SHA-512 Whirlpool (512 bits)
Cifrado
Firmado
Para el caso de cifrado de mensajes se combinan algoritmos simtricos y asimtricos. Clave de sesin: se protege con un algoritmo asimtrico, por ejemplo RSA. Datos: se protegen con un algoritmo simtrico, por ejemplo AES en combinacin con la clave de sesin. Para la firma de mensajes: El proceso implica el cifrado, con la clave privada del firmante, del hash (normalmente SHA-1) del mensaje a firmar.
PGP
En 1991 Philip Zimmermann publica la versin 1.0 de PGP. En 1992 aparece la versin 2.0. Su cdigo se escribe fuera de USA para evitar las leyes restrictivas respecto al software criptogrfico y sus problemas legales. La gestin de claves en PGP se basa en la confianza mutua. Las ltimas versiones contemplan la utilizacin de Autoridades Certificantes como certificadores de claves pblicas
PGP
Datos asociados a las claves: versin de PGP. clave pblica junto con el algoritmo (RSA, DSA, DH). informacin sobre la identidad del titular. firma digital del titular del certificado (auto-firma). perodo de validez. algoritmo simtrico de cifrado preferido. conjunto de firmas de terceros: (opcional) definen nivel de confianza. definen nivel de validez.
Esquema de confianza
Las claves pblicas se pueden subir a un servidor de claves. Los que desean intercambiar mensajes se encuentran y certifican con un documento de identidad (ej: pasaporte) el ID y fingerprint mutuamente. Las partes obtienen la clave pblica y confirman el ID y fingerprint de la parte. Firman la clave pblica del otro con su clave privada. Puede haber confianza indirecta.
Esquema de confianza
Esquema de confianza
Bob obtiene el certificado de Alice. Si conoce y confa en el certificado de la autoridad certificante, puede validar el certificado de Alice (sabe que la clave pblica realmente pertenece a ella) Cmo consigue Bob la clave pblica de la AC para validar el certificado de Alice? Preinstalado en la navegador Va fuente externa (boletn oficial, otros) El modelo de confianza se basa en que todos confan en la Autoridad Certificante.
SSLCipherSuite HIGH:MEDIUM:!aNULL:!eNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLOptions +StdEnvVars SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 "/etc/apache/ssl/sitio.arcert.gov.ar.crt" "/etc/apache/ssl/sitio.arcert.gov.ar.key"
<Location /admin/> SSLVerifyClient require SSLVerifyDepth 2 SSLRequire %{SSL_CLIENT_S_DN_Email} =~ m/.gov.ar$/ \ or %{SSL_CLIENT_S_DN_Email} in {"test@hotmail.com","test@gmail.com"} </Location> #Importante: Fuera del virtual host no permitir acceso via http <Directory /var/www/admin/> SSLRequireSSL </Directory>
Niveles FIPS
Nivel 1: Define algoritmos a implementar (AES (FIPS 197), DES (FIPS 46-3), TripleDES (FIPS 81)). No evala entorno ni seguridad fsica. Nivel 2: Introduce seguridad fsica, roles y CC EAL2. Nivel 3: Aumenta seguridad fsica. Autenticacin basada en identidad, CC EAL3. Nivel 4: Sobrescritura fsica segura. CC EAL4.
Linux
La contrasea se almacena en un archivo slo accesible por root (/etc/shadow) y la clave se cifra de la siguiente manera: $1$O34Nj3aF$3ecTiyOvCOAqhtaEaN0yG0 La misma est compuesta por 3 campos: $1$: Indica que se utiliza MD5. $O34Nj3aF$: El salt utilizado. $3ecTi: El hash propiamente dicho. Este es un buen mecanismo para utilizar en aplicaciones web!
Windows
Lan Manager Hash Se convierte todo a maysculas antes de generar el hash. El set de caracteres es: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 %!@\#$%^&*()_=+~[]\{}|\:;"<>,.?/ El hash se divide en dos bloques de 7 caracteres. Si la clave tiene menos de 14 caracteres, se paddea con null. Utiliza DES, cifrando con la clave del usuario la constante KGS!@#$%. El resultado del hash es un valor de 16 bytes. No se utiliza Salt. NT Hash Distingue entre maysculas y minsculas. Puede tener un largo de hasta 128 caracteres, y la longitud es variable, no hace falta hacer padding. No es soportado por defecto en Win9x y Me. NT4 lo soporta desde el SP4. Utiliza MD4. No se utiliza salt.
Manejo de claves
En resumen, se deben tener en cuenta los siguientes temas al manejar claves: Como se generan las claves. Como se asocia una clave a la identidad de su poseedor. Como se distribuyen las claves. Como dos partes establecen una clave comn. Como se almacenan las claves de manera segura. Que ocurre cuando se compromete una clave. Como se destruyen las claves.
Microsoft EFS
Disponible desde Windows 2000 en adelante. Funciona por debajo de NTFS, orientado al archivo. Basado en criptografa de llave pblica. Es tan fuerte como lo es la contrasea de usuario.
Debian PartmanCrypto
Se pueden cifrar todas las particiones, a excepcin de /boot Sistema simtrico. Mecanismos soportados: dm-crypt (default), LUKS y loop-AES. Algoritmos utilizados por dm-crypt: AES, Blowfish, Serpent y Twofish. La llave puede ser aleatoria y de uso nico en cada reboot (til para la particin swap). Tiene integracin con GnuPG. Configurable desde la instalacin (en Debian Etch). Dependiendo de que particin se trate, puede que detenga el proceso de inicio de la mquina hasta la introduccin del passphrase.
TrueCrypt
Versiones para Windows y Linux. Algoritmos implementados: AES-256, Blowfish (448-bit key), CAST5, Serpent, Triple DES, y Twofish. Permite utilizar los algoritmos en cascada (ej: AES + Twofish + Serpent). Muy til para dispositivos mviles. No tiene cabeceras, por lo que la informacin fcilmente confundible con ruido aleatorio. Esteganografa mediante volmenes ocultos. http://www.truecrypt.org/
CAPICOM
Abstraccin de alto nivel de CryptoAPI. No se encuentra instalada por defecto. Utilizado en la mayora de las implementaciones que requieran: Firma digital de datos / cdigo. Cifrado de datos. Utilizacin de funciones de Hash, etc
Programacin: C, C++, C#, Delphi, .Net, Vbasic, ASP, VBScript, JScript, Windows Shell Script.
Referencias
Cryptography Reference http://msdn.microsoft.com/library/enus/seccrypto/security/cryptography_reference.asp CAPICOM Reference http://msdn.microsoft.com/library/enus/seccrypto/security/capicom_reference.asp CAPICOM Download http://www.microsoft.com/downloads/details.aspx?FamilyID =860ee43a-a843-462f-abb5ff88ea5896f6&DisplayLang=en
Java
Acceso a funcionalidad criptogrfica provisto mediante una serie de interfaces: Java Cryptography Architecture (JCA) Java Cryptography Extension (JCE) Los proveedores criptogrficos implementan funciones para firmar y cifrar datos mediante algoritmos standard, funciones de hash y un repositorio de claves/certificados (keystore). Soporte nativo para dispositivos criptogrficos va PKCS#11, a partir de Java SE 5.0.
Java
Multiplataforma. Funcionalidad bsica provista por SUN JCE Provider y clase PKCS7. Funcionalidad extendida con biblioteca Bouncy Castle Soporte para objetos ASN.1. Soporte para certificados X.509 v3, CRLs v2. Soporte para PKCS#12, S/MIME y CMS (PKCS#7) Soporte para OCSP. Implementacin de soluciones cliente/servidor en conjunto con Tomcat/JBoss.
Referencias
Java SE (Standard Edition) http://java.sun.com/javase/downloads/index.jsp Bouncy Castle http://www.bouncycastle.org/ Uso de PKCS#11 con JCE provider http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide .html
OpenSSL
Versiones para Unix, Linux y Windows. Biblioteca y aplicacin sobre la que se basa la mayor parte de los servicios criptogrficos de las plataformas Unix/Linux. Implementa SSL v2/v3 y TLS v1. Implementa un gran nmero de algoritmos de cifrado y firma: DES, 3DES, AES, Blowfish, RSA, DSA, ECDSA, etc. Implementa algoritmos de hash: MD5, SHA-1, SHA-256 Soporta los standards PKCS#7, PKCS#10, PKCS#11, PKCS#12, PKCS#15. Soporta S/MIME y OCSP. Programacin: C, C++, Perl, Phyton, PHP, Ruby http://www.openssl.org/