Introducción a la Criptografia

download Introducción a la Criptografia

If you can't read please download the document

Transcript of Introducción a la Criptografia

SimtricosAsimtricosTiempo de vidaMenorMayorLongitudMenorMayorNum. de clavesElevadoPequeo

???Pgina ??? (???)24/02/2008, 23:41:47Pgina / Dani Gutirrez [email protected]

Introduccin a la
Criptografa

ndice

Introduccin

Valores aleatorios

Funciones hash

Cifrados simtrico y asimtrico. Comparacin.

Aplicaciones: encriptacin, firma digital, protocolos, MAC/HMAC

Esquemas de autenticacin

Estndares y Formatos

Software

Licencia de uso

Introduccin

Objetivos:

Privacidad=Confidencialidad

Autenticacin

Integridad

No repudio

Fundamentos matemticos:

Generacin de nmeros aleatorios

Generacin de nmeros primos grandes

Sustituciones

Permutaciones=Trasposiciones

Valores aleatorios

nonce=number used once. Nmero o cadena de bits a ser empleado una sola vez, aleatorio y que no se repite. Ej. empleado en autenticacin digest de http

Vector de inicializacin (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 generacin 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 versin salted de md5y {ssha} la variante salted de la sha-1 {sha}

Funciones hash

Sinnimos: resumen, digest, hash

Crean un resumen de N bits a partir de un contenido origen.

Propiedades:

Funciona en una sola direccin: a partir del resumen no se puede deducir el origen

No hay 2 orgenes que den un mismo resumen (en teora), o son difciles de calcularlos
(ver http://en.wikipedia.org/wiki/Hash_collision)

Usos:

Resumen de un contenido (ej. fichero, correo electrnico), ej. para comparacin

Codificacin 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 versin salted de md5. El salt se almacena en el 2 campo de la forma $1salt$... Ej. comprobacin:
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 simtrico

Una misma clave para encriptar y desencriptar

Problema: distribucin de claves (ha de estar muy guardada, o ser de vida corta)

Los mtodos 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 asimtrico

Dos claves, una pblica y otra privada. Propiedades:

A partir de una clave pblica es imposible deducir la privada.

Lo que se encripta con una se puede desencriptar con la otra, y viceversa. Ej:

Encriptacin:

Origen: encriptar mensaje con clave pblica 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 pblica del emisor

Slo se puede desencriptar con la otra clave; con ninguna otra.

Cifrado asimtrico

Ejs. de algoritmos:

DH (Diffie-Hellman). Uso tpico para claves de sesin: intercambiar claves simtricas sin la ayuda de una clave previa en un medio inseguro

RSA

DSA/DSS: Ms moderno y ms seguro que RSA

Usado slo para firmar (no para encriptar).

Necesita una funcin hash (ej. sha1).
DSS=DSA+sha1

ElGamal

Curvas elpticas

Ref: http://en.wikipedia.org/wiki/Public-key_cryptography

Cifrado asimtrico

Usos de RSA y DSA:

Generacin de claves privada y pblica:

La clave privada se puede encriptar con una passphrase y algoritmos simtricos des, 3des o idea. Se pide al usarla ej. arranque de servidor web

La clave pblica es deducible a partir de la clave privada.

Operaciones:

Firma: ms rpido RSA.

Verificacin: ms rpido DSA.

Encriptacin: slo RSA.

Ejs:

openssh: ssh-keygen -t dsa

openssl: openssl genrsa -out privkey.pem 1024

Comparacin de cifrados

En ambos: importante longitud de clave.

Asimtrico ms lento que simtrico

Claves:

Aplicaciones: encriptacin

Proceso:

Se crea una clave K. Puede ser:

Aleatoria, en el lado del emisor.

De sesin, a partir de las claves privada y pblica de emisor y receptor. Algoritmo Diffie-Hellman.

El emisor enva:

Mensaje encriptado con algoritmo simtrico y clave K.

Clave K encriptada con algoritmo asimtrico y clave pblica 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 enva el resultado

Garantiza:

Autenticidad e integridad

No repudio, como consecuencia de los dos anteriores

Ej. aplicaciones:

Correo electrnico (thunderbird, kmail,...)

Documentos ofimticos (openoffice, acrobat reader)

Aplicaciones: protocolos

Uso especfico en:

GPG/PGP

SSL/TLS (ej. https: autenticacin de servidor y/o cliente)

SSH

IKE (IPsec)

...

Aplicaciones: MAC/HMAC/...

MAC (message authentication code): cdigo pequeo de informacin construido a partir del mensaje y de una clave simtrica (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): slo para integridad. Parte slo del mensaje, no de una clave

Esquemas de autenticacin

Problema de partida: verificar la asociacin de claves pblicas e identidades.

Esquemas:

Confianza en base a terceros:

Vertical: jerarqua de CAs (ej. PKI X.509)

Horizontal: red de confianza (ej. PGP/GPG)

Verificacin directa (ej. ssh)

Otros: modelo de confianza local (ej. SPKI=Simple PKI)

Estndares y Formatos

PKCS: Public Key Cryptography Standards. Listado de los principales:

1: claves RSA pblica y privada

5: encriptacin en base a claves

7: Firmar y encriptar mensajes,....

8: formato de fichero no encriptado de claves pblicas y privadas

10: Mensaje enviado a una CA para solicitar verificacin de una clave pblica

11: API para tokens de criptografa (seguridad hardware)

12: formato de fichero encriptado de claves pblicas y privadas

Estndares y Formatos

ASN.1

Abstract Syntax Notation One.

Lenguaje para describir y codificar reglas para representar datos.

Estndar ITU X.208/X.680.

Reglas de codificacin:

BER: Basic Encoding Rules (X.690). Ej. para LDAP

CER: Canonical Encoding Rules

DER: Distinguished Encoding Rules

XER: XML Encoding Rules

...

Estndares y Formatos

Formatos de parmetros, claves privada y pblica,...:

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 elpticas: 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/

Pulse para editar el formato del texto de ttulo

Pulse para editar los formatos del texto del esquema

Segundo nivel del esquema

Tercer nivel del esquema

Cuarto nivel del esquema

Quinto nivel del esquema

Sexto nivel del esquema

Sptimo nivel del esquema

Octavo nivel del esquema

Noveno nivel del esquema