PDF de programación - Ejemplos de programación criptográfica

Imágen de pdf Ejemplos de programación criptográfica

Ejemplos de programación criptográficagráfica de visualizaciones

Publicado el 24 de Abril del 2019
1.113 visualizaciones desde el 24 de Abril del 2019
944,7 KB
93 paginas
Creado hace 19a (10/04/2005)
Ejemplos de programación

criptográfica

Ana Saiz García

ana (at) gpul (dot) org

David Fernández Vaamonde
david_fv (at) gpul (dot) org

II Taller de Criptografía aplicada

Universidade da Coruña

Guión

● Parte I: Introducción a las técnicas de cifrado y

autenticación

● Parte II: Programación criptográfica con Cryptlib
● Parte III: Programación criptográfica con Mono
● Conclusiones
● Bibliografía y referencias

Introducción a las técnicas de cifrado y

Parte I

autenticación

● Introducción
● Cifrado simétrico
● Cifrado de clave pública
● Autenticación

Introducción (I)

● Criptología:

– Criptografía:

● mensaje inteligible → no inteligible y viceversa
● utiliza una clave

– Criptoanálisis:

● mensaje no inteligible → inteligible sin conocer la clave

● Un sistema puede ser:

– Incondicionalmente seguro (ideal)
– Computacionalmente seguro

Introducción (II)

● Criptosistema:

● Terminología:

– m: texto en claro
– c: texto cifrado o

criptograma. Mensaje
transformado en ininteligible

– algoritmos de cifrado:

convierten m en c

– k: clave utilizada por los algoritmos de

cifrado

– C: cifrado. Proceso de convertir m en c
utilizando k y un algoritmo de cifrado:
c=Ck[m]=Ek[m]

– D: descifrado. Proceso de convertir c en m

utilizando k y un algoritmo de cifrado:
m=Dk[c]

Introducción (III)

● Servicios de seguridad

● Mecanismos de seguridad

– Confidencialidad

– Integridad
– Autenticación
– No repudio

– Cifrado
– Generación de tráfico
– Integridad de los datos
– Protocolos de autenticación
– Firma digital

Introducción (IV)

● Ataques a la información:

– A la confidencialidad:

● Revelación: averiguar contenido mensaje
● Análisis de tráfico: descubrir patrón

– A la autenticidad:

● Suplantación de la fuente
● Modificación del contenido del mensaje
● Modificación de secuencia de mensajes
● Modificación de tiempo

– Repudio

● De origen: niega haber enviado
● De destino: niega haber recibido

Introducción (V)

● Sistemas de cifrado simétrico (o de clave secreta)

– Clave secreta compartida por emisor y receptor
– Emisor cifra con la clave y receptor descifra con la misma clave

– Servicios:

● confidencialidad
● autenticación
● integridad
– Problemas:

● distribución y gestión de claves

Introducción (VI)

● Sistemas de cifrado asimétrico (o de clave pública)

– Dos claves: privada y pública asociadas
– Si se cifra con una clave sólo se puede descifrar con la otra

– Servicios:

● cifrado con privada y descifrado con pública → autenticación y no

repudio

● cifrado con pública y descifrado con privada → confidencialidad

– Problemas:

● cifrado lento
● distribución de clave pública

Introducción (y VII)

● Otros mecanismos

– Intercambio de clave: Diffie-Hellman
– Protocolos de autenticación
– Funciones HASH
– Funciones MAC
– Firma digital

Cifrado simétrico (I)

● Seguridad del cifrado
⇒ privacidad de la clave
⇒ privacidad del algoritmo → no necesita ser secreto

● Bloque cifrador

– Elemento básico de cifrado
– Efectos:

● Avalancha: cambio 1 bit de entrada ⇒ cambio n/2 bits de salida
● Integridad: cada bit de salida función de todos los de entrada

– Operaciones básicas:

Substitución:

clave: función de substitución
confusión
cajas-S (S-boxes)

Permutación:

clave: reordenación de bits
difusión
cajas-P (P-boxes)

Cifrado simétrico (II)

DES (I)

Cifrado simétrico (III)

DES (II)

● Detalle de la iteración

Cifrado simétrico (IV)
DES (III): Modos de uso

● ECB: Electronic Codebook

– cifrado de bloque (64 bits)
– bloques independientes → repeticiones

en bloques en claro se pueden repetir
en texto cifrado

– válido para mensajes cortos (1 bloque)
– el más rápido

● CBC: Cipher Block Chaining

– cifrado de bloque (64 bits)



realimentación del bloque cifrado
anterior

– necesita vector de inicialización
– válido para mensajes mayores de 64

bits

● CFB: Cipher Feedback
– cifrado de bloques de j bits

si j=1 o j=8 → cifrado de flujo

– necesita vector de inicialización
– válido para tráfico de flujo
● OFB: Output feedback

– cifrado de flujo
– necesita vector de inicialización
– necesita sincronización

emisor/receptor

– no propaga errores

Cifrado simétrico (V)

DES (y IV)

● Ventajas

– Fuerte efecto avalancha

● Desventajas

– clave de 56 bits → demasiado corta (ataque de fuerza bruta)

● Triple DES

– Variante de DES con dos o tres claves:

– c=Ck3[Dk2[Ck1[m]]]
– No vulnerable a fuerza bruta

Cifrado simétrico (y VI)

● Otros algoritmos:

– IDEA
– Skipjack
– Blowfish
– RC2
– RC5
– CAST-128
– AES

Criptografía de clave pública (I)

● Seguridad del cifrado: imposible averiguar Ksecreta conociendo
los algoritmos de cifrado y descifrado, Kpública y criptogramas

● Categorías:

– Cifrado/descifrado ⇒ confidencialidad
– Firma digital ⇒ autenticación y no repudio
– Intercambio de clave secreta compartida (cifrado simétrico)

● Confidencialidad + autenticación: cifrar primero con clave pública

del receptor y después con clave privada del emisor.

● Ataques:

– Fuerza bruta sobre clave
– Fuerza bruta sobre mensaje (mensajes cortos)
– Cálculo de clave privada

Criptografía de clave pública (II)

RSA (I)

● Texto en claro y cifrado son enteros entre 0 y n-1 (valor típico n=1024

bits)

● Bloques de longitud ≤ log2(n) bits
● Para un bloque de texto en claro M y un bloque de texto cifrado C:

– Cifrado: C=Memod n
– Descifrado: M=Cdmod n=Medmod n
– emisor conoce clave pública de receptor: {n, e}
– receptor conoce clave privada propia: {n, d}

Criptografía de clave pública (y III)

RSA (y II)

● La seguridad se basa en la dificultad de la factorización
● Ataques a RSA
– Fuerza bruta

● hacer claves más largas  cifrado/descifrado más lento

– Ataque matemático

● costoso si n grande

– Ataque de temporización  observación de tiempos de ejecución
para determinados valores aplicados a los algoritmos  sabiendo
tiempo, intuir valor

● forzar tiempo constante
● dar retardo aleatorio
● blindar texto cifrado multiplicándolo por número aleatorio antes de

pasarlo al algoritmo

Autenticación (I)

● Procedimiento para verificar la autenticidad de un mensaje:

– que la fuente es la que dice ser
– que el contenido no ha sido modificado

● Valor utilizado para autenticar un mensaje: autenticador
● Mecanismos para generar el autenticador:

– Cifrado del mensaje: el mensaje cifrado sirve como autenticador

del mensaje

– Código de Autenticación de Mensaje (MAC): función pública del

mensaje y una clave secreta ⇒ valor de longitud fija

– Función Hash: función pública que genera un valor de longitud fija

a partir de un mensaje de cualquier longitud

Autenticación (II)

● Autenticación mediante cifrado
– Autenticación del remitente (A):

● cifrado simétrico:

– A y B comparten clave secreta, sólo el otro puede haber cifrado con esa

clave

– ofrece confidencialidad
– no ofrece no repudio
● cifrado asimétrico:

– cifrado con clave privada de A, sólo A puede haberlo cifrado
– ofrece no repudio
– no ofrece confidencialidad
– no es eficiente en mensajes largos

– Autenticación del mensaje:

● código de detección de errores, número de secuencia, marca de

tiempo

Autenticación (III)

● Autenticación sin cifrado

– Se genera una referencia de autenticación y se añade al mensaje, que

se transmite en claro
– No confidencialidad
– Usos:

● cuando no importa la confidencialidad
● mensaje para varios destinos: sólo 1 verifica autenticidad ⇒ más barato y

más rápido

● receptor muy cargado que no puede descifrar todos los mensajes que le

llegan ⇒ sólo verifica algunos

● cuando interesa mantener la protección de autenticación más allá de la

recepción

– Código de autenticación de mensaje
– Funciones hash

Autenticación (IV)

MAC

● Código de autenticación de mensaje

Autenticación (V)

HASH (I)

● No necesita clave
● Usos:

– Con cifrado simétrico:

● autenticación

m|C

[h(m)]
k

● autenticación + confidencialidad

C

[m|h(m)]
k

Autenticación (VI)

HASH (II)

– Con cifrado asimétrico:

● autenticación (firma digital)

m|C

[h(m)]

KprivA

● con confidencialidad

C

[m|C
k

[h(m)]]

KprivA

Autenticación (VII)

HASH (y III)

– Sin cifrado: secreto compartido S

● autenticación
m|h(m|S)

● Algoritmos:

– MD5
– SHA-1
– RIPEMD

● HMAC: MAC con HASH

Autenticación (y VIII)

Firma digital

● Cifrado asimétrico sobre resumen hash de un mensaje ⇒ se reduce

tiempo de procesamiento

● No ofrece confidencialidad
● Ofrece no repudio de origen
● Ejemplo: firma digital con RSA

Parte II

Programación criptográfica con Cryptlib

● Introducción
● Ideas generales
● Ejemplo 1: cifrado simétrico
● Ejemplo 2: firma digital

Introducción

● Librerías criptográficas multiplataforma
● Tres niveles de abstracción:

– alto nivel
– nivel medio mayor conocimiento de las técnicas y algoritmos de cifrado
– nivel bajo
● Algoritmos

– Cifrado simétrico: DES, Triple DES, IDEA, Skipjack, CAST-128, Blowfish,

RC2, RC4, RC5

– Cifrado asimétrico: RSA, DSA, El Gamal
– Hash: MD2, MD3, MD5, RIPEMD-160, SHA
– MAC: HMAC-MD5, HMAC-SHA, HMAC-RIPEMD-160
– Intercambio de clave: Diffie-Hellman
– Certificados
– Dispositivos hardware

Ideas generales (I)

Inicio/final



Inicializar cryptlib

● Limpiado y eliminación de objetos que hemos olvidado destruir

#include “cryptlib.h”

main{

cryptInit( );

...

cryptEnd( );

}

Ideas generales (II)

Gestión de errores

● Todas las funciones devuelven un entero con un error asociado

(definido en cryptlib.h)

● Dos macros:

– cryptStatusError(status)
– cryptStatusOK(status)

status=cryptInit();
  if(cryptStatusError(status))
    printf("Init: %d\n", status);

status=cryptCheckSignature(signature, publicKey, 
   shaContext);
  if(cryptStatusOK(status))

 printf(“Firma correcta”);

Ideas generales (y III)
Contextos de cifrado y keysets

● Contextos:

– Objetos a nivel intermedio
– Se crean con atributos:

● Propietario
● Algoritmo y modo de cifrado
● Vector de inicialización...

– Se generan, derivan o importan claves
– Se cifra/descifra en el cont
  • Links de descarga
http://lwp-l.com/pdf15782

Comentarios de: Ejemplos de programación criptográfica (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad