CC50S Seguridad en el Documento Electrónico IV.- Herramientas (Parte 1) UNIVERSIDAD DE CHILE Departamento de Ciencias de la Computación Universidad de Chile INGENIERIA
Profesor Alex Bórquez Ingeniero Civil Universidad de Chile aborquez@dcc.uchile.cl alex.borquez@gmail.com
Créditos Agustín Villena Ingeniero Civil Universidad de Chile Profesor Universidad de Chile agustin.villena@gmail.com Philippe Camacho Master en Criptología y Seguridad Informática Universidad de Bordeaux, Francia philippe.camacho@gmail.com
Plan General I.- Conceptos Básicos de Seguridad (Parte 1) 1.1 Seguridad como gestión de riesgos 1.2 Atributos de seguridad 1.3 Criptografía de clave (o llave) simétrica I.- Conceptos Básicos de Seguridad (Parte 2) 1.4 Criptografía de claves asimétricas 1.4.1 Comparación del costo computacional de los algoritmos de clave asimétrica versus los algoritmos de llave simétrica 1.4.2 Algoritmo de hash y clave de sesión 1.4.3 Encriptación y desencriptación 1.4.4 Firma y su relación con los atributos de Integridad, No Repudiablilidad y Autenticidad 1.4.5 Ataques I.- Conceptos Básicos de Seguridad (Parte 3) 1.5 Identificación de los Participantes 1.5.1 PGP 1.5.2 Infraestructura de Clave Pública 1.5.3 Biometría II.- Certificados de identidad digital 2.1 Contenido de un certificado 2.2 Ciclo de vida de un certificado 2.3 Dispositivos criptográficos 2.4 Uso de Certificados 2.4.1 Mensajería segura: S/MIME 2.4.2 Transmisión segura: HTTPS / SSL 2.5 Estándares de codificación: PEM, X.509, PKCS (#7, #10, #12), ASN.1, DER
Plan General III.- Estándares Criptográficos para XML 3.1 XML Signature 3.1.1 Algoritmo de firma y esquema XML Signature 3.1.2 Tipos de firma: ensobrada, ensobrante y separada 3.2 XML Encryption 3.2.1 Algoritmos de encriptación y esquema XML Encryption 3.2.2 Tipos de archivos que se pueden encriptar con XML Encryption 3.2.3 Tipos de llaves usadas en la encriptación con XML Encryption IV.- Herramientas 4.1 La biblioteca libxml2 4.1.1 Validación sintáctica de XML con xmllint 4.1.2 Firma/validación y encriptación/desencriptación con xmlseci.- Conceptos Básicos de Seguridad (Parte 2) 4.2 La biblioteca OpenSSL 4.2.1 Creación de una Autoridad Certificadora Raíz bajo el esquema PKI 4.2.2 Extensión de solucitudes de certificados de identidad digital 4.2.3 Emisión de certificados de identidad digital 4.2.4 Exportación de la clave pública 4.2.5 Instalación de certificados de identidad digital 4.2.6 Revocación de certificados de identidad digital 4.2.7 Validación de vigencia de certificados de identidad digital
Plan General V.- Aplicaciones en Chile 5.1 Certificados de identidad digital en Chile 5.2 Firma electrónica en Chile 5.2.1 Principios Equivalencia funcional Neutralidad tecnológica Autonomía de voluntad 5.2.2 Firma como complemento seguro al documento electrónico 5.2.3 Firma Electrónica Avanzada y sus propiedades 5.2.4 Firma Electrónica Simple 5.3 Factoring electrónico en Chile VI. Problemas en la seguridad del documento electr onico 6.1 Usabilidad de las tecnologías criptográficas y la brecha cultural 6.2 Equivalencia funcional de la Firma Electrónica Avanzada y las TSA 6.3 Esquema PKI y el problema de las CLR 6.4 Análisis de las consecuencias de un eventual quiebre de algunos supuestos en los que se basa la criptografía moderna
The XML C parser and toolkit of Gnome Proyecto Open Source, derivado del proyecto Gnome (Entorno gráfico de Linux) Portado a múltiples plataformas Windows HP/UX Mac OS/X Etc. e integrado con múltiples lenguajes C C++ Pascal Python Ruby Etc.
Bibliotecas Asociadas libxml2, parseador y procesador XML. libxslt, procesador de transformaciones XSL y EXSL. xmlsec, procesador de estándares XMLSec y XMLDSig. xsldbg, depurador de transformaciones XSL. Y puede utilizar las siguientes bibliotecas OpenSSL, NSS, MS CryptoAPI librerías criptográficas iconv, herramientas para caracteres internacionales zlib, herramientas para comprimir.
Estándares Implementados the XML standard Namespaces in XML XML Base RFC 2396 XML Path Language (XPath) 1.0 HTML4 parser XML Pointer Language (XPointer) Version 1.0 XML Inclusions (XInclude) Version 1.0 Canonical XML Version 1.0 www.w3.org/tr/rec-xml www.w3.org/tr/rec-xml-names/ www.w3.org/tr/xmlbase/ Uniform Resource Identifiers www.ietf.org/rfc/rfc2396.txt www.w3.org/tr/xpath www.w3.org/tr/html401/ www.w3.org/tr/xptr www.w3.org/tr/xinclude/ www.w3.org/tr/xml-c14n and the Exclusive XML Canonicalization CR draft www.w3.org/tr/xml-excc14n Relax NG, ISO/IEC 19757-2 W3C XML Schemas Part 2 Datatypes REC 02 May 2001 W3C xml id Working Draft 7 April 2004 2003, www.oasis-open.org/committees/relaxng/spec-20011203.html
Herramientas Provee además un conjunto de herramientas de línea de comandos xmllint Para validar y procesar XML xsltproc Para transformar XML usando XSL xmlsec Para cifrar usando XMLSec o firmar usando XMLDSig Requiere definir una plantilla que Indica los algoritmos a usar Y donde se colocarán los resultados de la operación
xmllint : Funciones principales xmllint xmllint <operación> <operación> <xml <xml a a procesar> procesar> Operación significado <en blanco> Valida si el XML está bien formado valid validar contra DTD schema validar contra XML Schema c14n canonicalizar html usar parseador HTML format da formato al XML shell ambiente interactivo para examinar XML como si fuera un directorio
xmllint : Ejemplos de uso Validar XML c:\>xmllint c:\>xmllint doc.xml doc.xml <?xml <?xml version="1.0" version="1.0" encoding="utf-8"?> encoding="utf-8"?> <Envelope <Envelope xmlns="urn:envelope"> xmlns="urn:envelope"> <Data <Data type="string" type="string" id="a"> id="a"> Hello, Hello, World! World! </Data> </Data> </Envelope> </Envelope> Canonicalizar XML c:\>xmllint c:\>xmllint --c14n --c14n doc.xml doc.xml <Envelope <Envelope xmlns="urn:envelope"> xmlns="urn:envelope"> <Data <Data id="a" id="a" type="string"> type="string"> Hello, Hello, World! World! </Data> </Data> </Envelope> </Envelope>
xmlsec : Funciones principales xmlsec xmlsec <operación> <operación> <llave> <llave> <archivo <archivo a a cifrar/firmar> cifrar/firmar> <salida> <salida> <plantilla> <plantilla> Elemento Argumento de xmlsec significado operación encrypt Cifrar decrypt Descifrar sign Firmar verify verificar firma llave deskey llave 3DES simétrica privkey llave privada pubkey llave pública session-key Generar llave de sesión salida output archivo de salida
xmlsec : Ejemplo de cifrado Llave a usar para cifrar Qué se va a cifrar c:\>xmlsec c:\>xmlsec encrypt encrypt --deskey --deskey deskey.bin deskey.bin --binary-data --binary-data binary.dat binary.dat --output --output encrypted_binary_dat.xml encrypted_binary_dat.xml crypt_template.xml crypt_template.xml Salida del cifrado Plantilla del cifrado <?xml <?xml version="1.0" version="1.0"?>?> <EncryptedData <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#"> xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> /> <KeyInfo <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName <KeyName /> /> </KeyInfo> </KeyInfo> <CipherData> <CipherData> <CipherValue <CipherValue /> /> </CipherData> </CipherData> </EncryptedData> </EncryptedData>
xmlsec : Ejemplo de cifrado con llave de sesión Llave a usar para cifrar llave de sesión Llave de sesión generada automáticamente xpath del nodo a cifrar c:\>xmlsec c:\>xmlsec encrypt encrypt --pubkey-pem --pubkey-pem rsapub.pem rsapub.pem --session-key --session-key des-192 des-192 --xml-data --xml-data transaction.xml transaction.xml --node-xpath --node-xpath /PayInfo/CreditCard/Number/text() /PayInfo/CreditCard/Number/text() --output --output encrypted-transaction-text.xml encrypted-transaction-text.xml session_key_template.xml session_key_template.xml Qué se va a cifrar Salida del cifrado Plantilla del cifrado <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName/> <KeyName/> </KeyInfo> </KeyInfo> <CipherData> <CipherData> <CipherValue/> <CipherValue/> </CipherData> </CipherData> </EncryptedKey> </EncryptedKey> </KeyInfo> </KeyInfo> <CipherData> <CipherData> <CipherValue/> <CipherValue/> </CipherData> </CipherData> </EncryptedData> </EncryptedData>
xmlsec : Ejemplo de firmado Llave a usar para firmar Archivo de salida c:\>xmlsec c:\>xmlsec sign sign --privkey --privkey rsakey.pem rsakey.pem --output --output sign1.xml sign1.xml sign1-tmpl.xml sign1-tmpl.xml Plantilla del cifrado <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <Envelope> <Envelope> <SignedData>Hello, World!</SignedData> <SignedData>Hello, World!</SignedData> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI=""> <Reference URI=""> <Transforms> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </Transforms> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue/> <DigestValue/> </Reference> </Reference> </SignedInfo> </SignedInfo> <SignatureValue/> <SignatureValue/> <KeyInfo> <KeyInfo> <KeyName/> <KeyName/> </KeyInfo> </KeyInfo> </Signature> </Signature> </Envelope> </Envelope>
Preguntas Gracias por su atención