Dani Gutiérrez Porset [email_address] Introducción a la Criptografía
Índice Introducción Valores aleatorios Funciones hash Cifrados simétrico y asimétrico. Comparación. Aplicaciones: encriptación, firma digital, protocolos, MAC/HMAC Esquemas de autenticación Estándares y Formatos Software Licencia de uso
Introducción Objetivos: Privacidad=Confidencialidad Autenticación Integridad No repudio Fundamentos matemáticos: Generación de números aleatorios Generación de números primos grandes Sustituciones Permutaciones=Trasposiciones
Valores aleatorios “nonce”=”number used once”. Número o cadena de bits a ser empleado una sola vez, aleatorio y que no se repite. Ej. empleado en autenticación digest de http Vector de inicialización (IV): bloque de bits necesario para los cifradores de flujo o de bloque. Es un caso de nonce. “salt”: para protegerse contra los ataques de diccionario, las funciones de generación de claves crean claves a partir de una clave original y un conjunto de bits aleatorios denominado “salt”. A veces se emplea un IV como salt. Ej: En ldap, {smd5} es la versión salted de md5y {ssha} la variante salted de la sha-1 {sha}
Funciones hash Sinónimos: resumen, digest, hash Crean un resumen de N bits a partir de un contenido origen. Propiedades: Funciona en una sola dirección: a partir del resumen no se puede deducir el origen No hay 2 orígenes que den un mismo resumen (en teoría), o son difíciles de calcularlos (ver  http://en.wikipedia.org/wiki/Hash_collision ) Usos: Resumen de un contenido (ej. fichero, correo electrónico), ej. para comparación Codificación de passwords a longitud fija
Funciones hash Ejs. de algoritmos: crypt: el resultado depende de cada sistema concreto (  http://en.wikipedia.org/wiki/Crypt_(Unix )  ) md5. Tiene colisiones. Ejs: En /etc/shadow se emplea una versión salted de md5. El salt se almacena en el 2º campo de la forma $1salt$... Ej. comprobación: openssl passwd -1 -salt mi_salt mi_clave Passwords joomla de mysql sha, sha-1, sha-2. sha-1 es el sucesor de md5. Se emplea en SSL/TLS, S/MIME, PGP, SSH, IPsec. Refs: http://en.wikipedia.org/wiki/Cryptographic_hash_function http://en.wikipedia.org/wiki/SHA_hash_functions
Cifrado simétrico Una misma clave para encriptar y desencriptar Problema: distribución de claves (ha de estar muy guardada, o ser de vida corta) Los métodos pueden ser de flujo o de bloque. Ejs. de algoritmos: des, 3des, aes, desx cast, cast5 rc2, rc4, rc5 idea (patentado) blowfish Ref:  http://en.wikipedia.org/wiki/Symmetric-key_algorithm
Cifrado asimétrico Dos claves, una pública y otra privada. Propiedades: A partir de una clave pública es imposible deducir la privada. Lo que se encripta con una se puede desencriptar con la otra, y viceversa. Ej: Encriptación: Origen: encriptar mensaje con clave pública del receptor Destino: desencriptarlo con clave privada del receptor Firma: Origen: encriptar hash de un mensaje con clave privada del emisor Destino: desencriptarlo con la clave pública del emisor Sólo se puede desencriptar con la otra clave; con ninguna otra.
Cifrado asimétrico Ejs. de algoritmos: DH (Diffie-Hellman). Uso típico para claves de sesión: intercambiar claves simétricas sin la ayuda de una clave previa en un medio inseguro RSA DSA/DSS: Más moderno y más seguro que RSA Usado sólo para firmar (no para encriptar). Necesita una función hash (ej. sha1). DSS=DSA+sha1 ElGamal Curvas elípticas Ref:  http://en.wikipedia.org/wiki/Public-key_cryptography
Cifrado asimétrico Usos de RSA y DSA: Generación de claves privada y pública: La clave privada se puede encriptar con una passphrase y algoritmos simétricos des, 3des o idea. Se pide al usarla ej. arranque de servidor web La clave pública es deducible a partir de la clave privada. Operaciones: Firma: más rápido RSA. Verificación: más rápido DSA. Encriptación: sólo RSA. Ejs: openssh:  ssh-keygen -t dsa openssl:  openssl genrsa -out privkey.pem 1024
Comparación de cifrados En ambos: importante longitud de clave. Asimétrico más lento que simétrico Claves:
Aplicaciones: encriptación Proceso: Se crea una clave K. Puede ser: Aleatoria, en el lado del emisor. De sesión, a partir de las claves privada y pública de emisor y receptor. Algoritmo Diffie-Hellman. El emisor envía: Mensaje encriptado con algoritmo simétrico y clave K. Clave K encriptada con algoritmo asimétrico y clave pública del receptor. Garantiza confidencialidad
Aplicaciones: firma digital Proceso: En el lado del emisor: Se encripta el resumen del mensaje con la firma privada del emisor. Se envía el resultado Garantiza: Autenticidad e integridad No repudio, como consecuencia de los dos anteriores Ej. aplicaciones: Correo electrónico (thunderbird, kmail,...) Documentos ofimáticos (openoffice, acrobat reader)
Aplicaciones: protocolos Uso específico en: GPG/PGP SSL/TLS (ej. https: autenticación de servidor y/o cliente) SSH IKE (IPsec) ...
Aplicaciones: MAC/HMAC/... MAC (message authentication code): código pequeño de información construido a partir del mensaje y de una clave simétrica (no es una firma digital). Garantiza autenticidad e integridad. Algoritmos: Funciones resumen ej SHA1, MD5. HMAC (key-hashed MAC): MAC generado con funciones resumen Cifrado de bloque ej. OMAC. MIC (message integrity code): sólo para integridad. Parte sólo del mensaje, no de una clave
Esquemas de autenticación Problema de partida: verificar la asociación de claves públicas e identidades. Esquemas: Confianza en base a terceros: Vertical: jerarquía de CAs (ej. PKI X.509) Horizontal: red de confianza (ej. PGP/GPG) Verificación directa (ej. ssh) Otros: modelo de confianza local (ej. SPKI=Simple PKI)
Estándares y Formatos PKCS: Public Key Cryptography Standards. Listado de los principales: 1: claves RSA pública y privada 5: encriptación en base a claves 7: Firmar y encriptar mensajes,.... 8: formato de fichero no encriptado de claves públicas y privadas 10: Mensaje enviado a una CA para solicitar verificación de una clave pública 11: API para tokens de criptografía (seguridad hardware) 12: formato de fichero encriptado de claves públicas y privadas
Estándares y Formatos ASN.1 Abstract Syntax Notation One. Lenguaje para describir y codificar reglas para representar datos. Estándar ITU X.208/X.680. Reglas de codificación: BER: Basic Encoding Rules (X.690). Ej. para LDAP CER: Canonical Encoding Rules DER: Distinguished Encoding Rules XER: XML Encoding Rules ...
Estándares y Formatos Formatos de parámetros, claves privada y pública,...: DER (es binario) PEM (es ascii). Ej: -----BEGIN ...----- siendo ...: Claves: PKCS8 encriptado: ENCRYPTED PRIVATE KEY PKCS8 no encriptado:  PRIVATE KEY RSA: RSA PRIVATE KEY DSA: DSA PRIVATE KEY, DSA PARAMETERS Curvas elípticas: EC PRIVATE KEY Certificados: Certificado: CERTIFICATE, X509 CERTIFICATE Certificado firmado: TRUSTED CERTIFICATE CSR: CERTIFICATE REQUEST CRL: X509 CRL
Software Paquetes ubuntu asn1c - ASN.1 compiler for C dirmngr - server for managing certificate revocation lists kleopatra - KDE Certificate Manager openssl - Secure Socket Layer (SSL) binary and related cryptographic tools libbotan1.6 - multiplatform crypto library libio-socket-ssl-perl - Perl module implementing object oriented interface to SSL sockets libksba8 - X.509 and CMS support library libxyssl-dev - lightweight crypto and SSL/TLS library python-ncrypt - python wrapper for OpenSSL
Software Paquetes ubuntu beidgui - application to read out information from the Belgian electronic ID card ca-certificates - Common CA Certificates PEM files coolkey - Smart Card PKCS #11 cryptographic module cryptonit - A client side PKI (X.509) cryptographic tool ebox-ca - eBox - Certificate Authority Manager newpki-client - PKI based on the OpenSSL low-level API (client package) newpki-server - PKI based on the OpenSSL low-level API (server package) pyca - Certification Authority written in python seccure - tools for using algorithms based on elliptic curve cryptography (ECC) ssl-cert - Simple debconf wrapper for openssl tinyca - simple graphical program for certification authority management
Licencia de uso http://creativecommons.org/licenses/by-sa/3.0/

Introducción a la Criptografia

  • 1.
    Dani Gutiérrez Porset[email_address] Introducción a la Criptografía
  • 2.
    Índice Introducción Valoresaleatorios Funciones hash Cifrados simétrico y asimétrico. Comparación. Aplicaciones: encriptación, firma digital, protocolos, MAC/HMAC Esquemas de autenticación Estándares y Formatos Software Licencia de uso
  • 3.
    Introducción Objetivos: Privacidad=ConfidencialidadAutenticación Integridad No repudio Fundamentos matemáticos: Generación de números aleatorios Generación de números primos grandes Sustituciones Permutaciones=Trasposiciones
  • 4.
    Valores aleatorios “nonce”=”numberused once”. Número o cadena de bits a ser empleado una sola vez, aleatorio y que no se repite. Ej. empleado en autenticación digest de http Vector de inicialización (IV): bloque de bits necesario para los cifradores de flujo o de bloque. Es un caso de nonce. “salt”: para protegerse contra los ataques de diccionario, las funciones de generación de claves crean claves a partir de una clave original y un conjunto de bits aleatorios denominado “salt”. A veces se emplea un IV como salt. Ej: En ldap, {smd5} es la versión salted de md5y {ssha} la variante salted de la sha-1 {sha}
  • 5.
    Funciones hash Sinónimos:resumen, digest, hash Crean un resumen de N bits a partir de un contenido origen. Propiedades: Funciona en una sola dirección: a partir del resumen no se puede deducir el origen No hay 2 orígenes que den un mismo resumen (en teoría), o son difíciles de calcularlos (ver http://en.wikipedia.org/wiki/Hash_collision ) Usos: Resumen de un contenido (ej. fichero, correo electrónico), ej. para comparación Codificación de passwords a longitud fija
  • 6.
    Funciones hash Ejs.de algoritmos: crypt: el resultado depende de cada sistema concreto ( http://en.wikipedia.org/wiki/Crypt_(Unix ) ) md5. Tiene colisiones. Ejs: En /etc/shadow se emplea una versión salted de md5. El salt se almacena en el 2º campo de la forma $1salt$... Ej. comprobación: openssl passwd -1 -salt mi_salt mi_clave Passwords joomla de mysql sha, sha-1, sha-2. sha-1 es el sucesor de md5. Se emplea en SSL/TLS, S/MIME, PGP, SSH, IPsec. Refs: http://en.wikipedia.org/wiki/Cryptographic_hash_function http://en.wikipedia.org/wiki/SHA_hash_functions
  • 7.
    Cifrado simétrico Unamisma clave para encriptar y desencriptar Problema: distribución de claves (ha de estar muy guardada, o ser de vida corta) Los métodos pueden ser de flujo o de bloque. Ejs. de algoritmos: des, 3des, aes, desx cast, cast5 rc2, rc4, rc5 idea (patentado) blowfish Ref: http://en.wikipedia.org/wiki/Symmetric-key_algorithm
  • 8.
    Cifrado asimétrico Dosclaves, una pública y otra privada. Propiedades: A partir de una clave pública es imposible deducir la privada. Lo que se encripta con una se puede desencriptar con la otra, y viceversa. Ej: Encriptación: Origen: encriptar mensaje con clave pública del receptor Destino: desencriptarlo con clave privada del receptor Firma: Origen: encriptar hash de un mensaje con clave privada del emisor Destino: desencriptarlo con la clave pública del emisor Sólo se puede desencriptar con la otra clave; con ninguna otra.
  • 9.
    Cifrado asimétrico Ejs.de algoritmos: DH (Diffie-Hellman). Uso típico para claves de sesión: intercambiar claves simétricas sin la ayuda de una clave previa en un medio inseguro RSA DSA/DSS: Más moderno y más seguro que RSA Usado sólo para firmar (no para encriptar). Necesita una función hash (ej. sha1). DSS=DSA+sha1 ElGamal Curvas elípticas Ref: http://en.wikipedia.org/wiki/Public-key_cryptography
  • 10.
    Cifrado asimétrico Usosde RSA y DSA: Generación de claves privada y pública: La clave privada se puede encriptar con una passphrase y algoritmos simétricos des, 3des o idea. Se pide al usarla ej. arranque de servidor web La clave pública es deducible a partir de la clave privada. Operaciones: Firma: más rápido RSA. Verificación: más rápido DSA. Encriptación: sólo RSA. Ejs: openssh: ssh-keygen -t dsa openssl: openssl genrsa -out privkey.pem 1024
  • 11.
    Comparación de cifradosEn ambos: importante longitud de clave. Asimétrico más lento que simétrico Claves:
  • 12.
    Aplicaciones: encriptación Proceso:Se crea una clave K. Puede ser: Aleatoria, en el lado del emisor. De sesión, a partir de las claves privada y pública de emisor y receptor. Algoritmo Diffie-Hellman. El emisor envía: Mensaje encriptado con algoritmo simétrico y clave K. Clave K encriptada con algoritmo asimétrico y clave pública del receptor. Garantiza confidencialidad
  • 13.
    Aplicaciones: firma digitalProceso: En el lado del emisor: Se encripta el resumen del mensaje con la firma privada del emisor. Se envía el resultado Garantiza: Autenticidad e integridad No repudio, como consecuencia de los dos anteriores Ej. aplicaciones: Correo electrónico (thunderbird, kmail,...) Documentos ofimáticos (openoffice, acrobat reader)
  • 14.
    Aplicaciones: protocolos Usoespecífico en: GPG/PGP SSL/TLS (ej. https: autenticación de servidor y/o cliente) SSH IKE (IPsec) ...
  • 15.
    Aplicaciones: MAC/HMAC/... MAC(message authentication code): código pequeño de información construido a partir del mensaje y de una clave simétrica (no es una firma digital). Garantiza autenticidad e integridad. Algoritmos: Funciones resumen ej SHA1, MD5. HMAC (key-hashed MAC): MAC generado con funciones resumen Cifrado de bloque ej. OMAC. MIC (message integrity code): sólo para integridad. Parte sólo del mensaje, no de una clave
  • 16.
    Esquemas de autenticaciónProblema de partida: verificar la asociación de claves públicas e identidades. Esquemas: Confianza en base a terceros: Vertical: jerarquía de CAs (ej. PKI X.509) Horizontal: red de confianza (ej. PGP/GPG) Verificación directa (ej. ssh) Otros: modelo de confianza local (ej. SPKI=Simple PKI)
  • 17.
    Estándares y FormatosPKCS: Public Key Cryptography Standards. Listado de los principales: 1: claves RSA pública y privada 5: encriptación en base a claves 7: Firmar y encriptar mensajes,.... 8: formato de fichero no encriptado de claves públicas y privadas 10: Mensaje enviado a una CA para solicitar verificación de una clave pública 11: API para tokens de criptografía (seguridad hardware) 12: formato de fichero encriptado de claves públicas y privadas
  • 18.
    Estándares y FormatosASN.1 Abstract Syntax Notation One. Lenguaje para describir y codificar reglas para representar datos. Estándar ITU X.208/X.680. Reglas de codificación: BER: Basic Encoding Rules (X.690). Ej. para LDAP CER: Canonical Encoding Rules DER: Distinguished Encoding Rules XER: XML Encoding Rules ...
  • 19.
    Estándares y FormatosFormatos de parámetros, claves privada y pública,...: DER (es binario) PEM (es ascii). Ej: -----BEGIN ...----- siendo ...: Claves: PKCS8 encriptado: ENCRYPTED PRIVATE KEY PKCS8 no encriptado: PRIVATE KEY RSA: RSA PRIVATE KEY DSA: DSA PRIVATE KEY, DSA PARAMETERS Curvas elípticas: EC PRIVATE KEY Certificados: Certificado: CERTIFICATE, X509 CERTIFICATE Certificado firmado: TRUSTED CERTIFICATE CSR: CERTIFICATE REQUEST CRL: X509 CRL
  • 20.
    Software Paquetes ubuntuasn1c - ASN.1 compiler for C dirmngr - server for managing certificate revocation lists kleopatra - KDE Certificate Manager openssl - Secure Socket Layer (SSL) binary and related cryptographic tools libbotan1.6 - multiplatform crypto library libio-socket-ssl-perl - Perl module implementing object oriented interface to SSL sockets libksba8 - X.509 and CMS support library libxyssl-dev - lightweight crypto and SSL/TLS library python-ncrypt - python wrapper for OpenSSL
  • 21.
    Software Paquetes ubuntubeidgui - application to read out information from the Belgian electronic ID card ca-certificates - Common CA Certificates PEM files coolkey - Smart Card PKCS #11 cryptographic module cryptonit - A client side PKI (X.509) cryptographic tool ebox-ca - eBox - Certificate Authority Manager newpki-client - PKI based on the OpenSSL low-level API (client package) newpki-server - PKI based on the OpenSSL low-level API (server package) pyca - Certification Authority written in python seccure - tools for using algorithms based on elliptic curve cryptography (ECC) ssl-cert - Simple debconf wrapper for openssl tinyca - simple graphical program for certification authority management
  • 22.
    Licencia de usohttp://creativecommons.org/licenses/by-sa/3.0/