Traballo Ruido,Relatos de Guerra por Daniel Carcamo Avalo..pdf
Herramientas criptográficas en GNU/Linux
1. Vanesa Vidal Castro
vvcastro@uvigo.es Ferramentas criptográficas de
Departamento de Informática código aberto:
Universidade de Vigo
GPG e sistemas de arquivos
cifrados
Ferramentas de seguridade en GNU/Linux
Curso de Extensión Universitaria
21 de xuño de 2010
2. INTRODUCCIÓN Á CRIPTOGRAFÍA
GPG (Gnu Privacy Guard)
SISTEMAS DE ARQUIVOS CIFRADOS
EncFS (Encrypted Filesystem)
Loop-AES
True-Crypt
2
3. Criptografía
Arte ou ciencia de cifrar e descifrar información
utilizando técnicas que fagan posible o intercambio de
mensaxes de maneira segura de xeito que só poidan
ser lidas polas persoas ás que van dirixidas
(traducido de http://es.wikipedia.org).
Na actualidade abarca diversos aspectos: ocultación
da mensaxe (cifrado), autenticidade do emisor (firma
dixital), distribución de claves, etc.
Nos bos algoritmos a seguridade descansa na clave
e non no algoritmo.
3
4. Utilidades da criptografía
Moi variadas. Algúns exemplos:
Certificados dixitais: navegadores, administracións
públicas, etc.
Cifrado de comunicacións: VPNs (Redes Privadas
Virtuais), correos electrónicos, etc.
Cifrado de arquivos: Perda de portátiles, backups, etc.
Centrarémonos en:
Cifrado de arquivos.
Cifrado de directorios.
Cifrado de sistemas de arquivos completos.
Asegurar a autenticidade dos correos electrónicos.
Asegurar a privacidade dos correos electrónicos. 4
5. Criptografía
Clasificación dos sistemas criptográficos:
Segundo o tipo de operación utilizado para transformar o texto
claro en texto cifrado:
Sustitución: cada elemento é substituido por outro.
Transposición: os elementos reordénanse.
Segundo o tratamento da mensaxe:
Cifrado en bloque (bloques de 64 ou 128 bits).
Cifrado en fluxo (bit a bit).
Segundo o número de claves empregado:
Cifrado simétrico (clave privada): úsase unha única clave.
Cifrado asimétrico (clave pública): úsanse dúas claves.
5
6. Cifrado simétrico
Existe unha única clave (K) para cifrar e descifrar.
K Canle segura
Texto Texto
Transmisión claro
claro de texto cifrado
Algoritmo de cifrado Algoritmo de descifrado
Requisitos para un uso seguro da criptografía
simétrica:
Algoritmo de cifrado robusto.
Transmisión da clave entre emisor e receptor de
forma segura. 6
7. Cifrado simétrico (cont'd)
Vantaxes:
Tempo de procesado.
Inconvenientes:
Distribución da clave.
Comunicación moitos a moitos. Para comunicarse n
persoas necesitánse n(n-1)/2 claves.
Exemplos:
DES (56 bits), 3DES (112-168), AES (128-256 bits),
Blowfish (32-448 bits), IDEA (128 bits), etc.
Seguridade relativa na actualidade:
Tamaño de clave >= 128 bits ( 2128 claves posibles).
7
8. Cifrado simétrico (cont'd)
Algoritmos de cifrado convencional:
Algoritmo Tamaño Tamaño Número de Aplicacións
de clave de bloque etapas
DES 56 64 16 SET,
Kerberos
3DES 112 o 168 64 48 GPG
AES 128, 192 o 128 10, 12 o 14 Substituirá a
256 DES e 3DES
IDEA 128 64 8 GPG
Blowfish ata 448 64 16 Varios
paquetes de
RC5 ata 2048 64 ata 255 software
8
9. Cifrado asimétrico
Aparece a finais dos 70 (definido por Diffie e Hellman). Basado en
funcións matemáticas.
Utilizan un par de claves: unha para cifrar e outra para descifrar.
Finalidade: evitar o problema do intercambio de claves dos sistemas
de cifrado convencionais.
Non se pode obter unha clave a partir da outra nin da mensaxe
cifrada.
Aplicacións:
Cifrado/Descifrado: emisor cifra coa clave pública do receptor.
Sinatura dixital: emisor “asina” a mensaxe coa súa clave privada.
Intercambio de claves: para negociar unha clave de sesión.
9
10. Cifrado asimétrico (cont'd)
Esquema para cifrado/descifrado
O emisor debe localizar a clave pública do destinatario.
A clave privada xérase de forma local e non se distribúe.
K pública K privada
destinatario destinatario
Texto Texto
en Transmisión en
claro de texto cifrado claro
Algoritmo de cifrado Algoritmo de descifrado
10
11. Cifrado asimétrico
Esquema para autentificación e sinatura dixital.
Emisor cifra unha mensaxe coa súa clave privada.
Receptor descifra a mensaxe utilizando a clave pública do
emisor.
K privada K pública
emisor emisor
Texto Y
X Transmisión X Texto
en en
claro de texto cifrado
claro
Algoritmo de cifrado Algoritmo de descifrado
Mensaxe Y cifrada só polo emisor => asinada dixitalmente.
Mensaxe Y non pode ser modificada sen a K privada do
emisor => autentificación + non repudio. 11
12. Cifrado asimétrico
Non é necesario cifrar toda a mensaxe para autentificar.
Cifrado asimétrico costoso computacionalmente. Demasiado
lento.
Pode ser interesante que a mensaxe sexa visible.
Alternativa: Uso de funcións hash ou resumos da mensaxe.
Sinatura dixital – >
Resultado de aplicar unha función hash + cifrar coa k privada.
Función hash é útil <=>
Díficil atopar 2 documentos diferentes con valor hash igual
Díficil atopar o documento orixinal a partir do valor hash.
Exemplos de algoritmos: MD5, SHA1.
12
13. Sinatura dixital
Sinatura dixital con documentos públicos:
----- Resumir
K privada emisor
Resumir ---- HASH
----- ----
---- HASH
HASH
encriptado + K pública
== ?
---- emisor
Algoritmo
de cifrado HASH
HASH
encriptado
Algoritmo de
Orixe → Sinatura descifrado
Destino → Verificación
Cifrando con clave privada o resumo aségurase orixe,
autenticidade e integridade do documento enviado.
13
14. Cifrado asimétrico
Sinatura dixital con documentos privados:
Cifrar coa clave pública do destino a mensaxe.
K pública
emisor
Resumir K privada emisor HASH
HASH
encriptado
-----
HASH
HASH
encriptado + Algoritmo de
---- descifrado == ?
Algoritmo
---- de cifrado -----
En
----
cr
HASH
En
ipt
----
cr
ad
ip
o
Resumir
ta
do
K privada
destino
K pública destino
Só o destino pode ver o contido da mensaxe (confidencialidade).
Só a orixe puido crear a mensaxe (autentificación e integridade).
Problema: máis costoso .
14
15. Procesos de sinatura e cifrado
Claves emisor:(Pue,Pre)
Texto
Claves en posesión do emisor: Pue, Pre, Pur
en
claro Claves receptor: (Pur,Prr)
Resumir
HASH
Sinatura
Texto Cifrar resumo(Pre)
en Cifrado
claro
HASH HASH HASH
encriptado(Pre) encriptado(Pre.k) encriptado(Pre.k)
K cifrada(Pur)
Texto Texto Texto Envío
en cifrado Cifrar (Pur) cifrado
Xerar clave k
claro sesión (k) (k) (k)
e cifrar (k)
15
16. Proceso de descifrado e autenticidade
Descifrado
HASH HASH
encriptado(Pre.k) encriptado(Pre.k)
descifrar HASH
obter k (Prr) (k) encriptado(Pre)
K cifrada(Pur)
Recepción Texto Texto
cifrado cifrado Texto
k en obter
(k) (k)
claro resumo
(Pue)
Mensaxe
HASH == HASH 2 HASH 2 HASH
auténtica
Texto Texto
en en
HASH != HASH 2
claro Recalcular claro
Mensaxe resumo
falsa
Claves emisor:(Pue,Pre) Verificación e autenticidade
Claves en posesión do receptor: Pur, Prr, Pue
Claves receptor: (Pur,Prr) 16
17. Cifrado asimétrico (cont'd)
Vantaxes:
Distribución de claves.
Comunicación moitos a moitos: 1 par de claves por cada
extremo da comunicación.
Inconvenientes:
Distribución fiable da clave pública ( posible falsificación).
Tempo de procesado alto.
Exemplos:
RSA, ElGamal, DSA (so para asinar), Diffie-Hellman
(distribución de claves), etc.
Seguridade relativa na actualidade:
Tamaño de clave >= 2048 bits.
17
18. Cifrado asimétrico
Uso no curso:
GPG → Cifrado simétrico e asimétrico
Sistemas de ficheiros encriptados → Cifrado simétrico.
SSL → cifrado asimétrico para negociar a clave de
sesión simétrica.
18
19. Ferramentas criptográficas
Hai moitas ferramentas destinadas a solventar
diversos problemas criptográficos.
Centrarémonos nas que nos permiten levar á práctica
as utilidades criptográficas vistas anteriormente.
GPG (GNU Privacy Guard)
EncFS (Encrypted Filesystem)
Loop-AES
dm-crypt / LUKS (Device-mapper crypto target / Linux
Unified Key Setup)
TrueCrypt
19
20. GPG (GNU Privacy Guard)
É unha implementación completa e libre do estándar
OpenPGP, definida no RFC4880.
http://www.gnupg.org
Sistema de cifrado híbrido.
Permite cifrar e asinar datos (arquivos) e/ou correos
electrónicos.
Inclúe un sistema versátil de xestión de claves.
Incorpora comandos en liña e unha librería para
facilitar a integración con outras ferramentas.
Existe como paquete nas distribucións linux máis
coñecidas e incluso hai versións para windows (
http://www.gpg4win.org).
20
21. Utilidades de GPG
Cifrar/Descifrar arquivos.
Importar/Exportar claves públicas.
Distribución da clave de forma individual.
Servidor de claves PGP (Non son autoridades certificadoras)
Asinar dixitalmente e verificación.
Certificar unha clave pública.
A cada clave pública asignaselle unha pegada (fingerprint).
Revocar certificados.
Posibles motivos → clave privada extraviada, en perigo ou
frase de paso esquecida.
Integración con outras ferramentas: FireGPG 21
(Gmail+Firefox).
22. Directorios e arquivos por defecto en GPG
Estructura creada por defecto:
/
home
vanesa
.gnugpg
gpg.conf pubring.gpg secring.gpg
22
23. Estructura das mensaxes GPG
Clave de sesión
Clave de sesión cifrada 1
cifrada 1
Clave de sesión Clave de sesión
cifrada 2 cifrada 2
. .
. .
. .
Datos cifrados Datos cifrados
Datos comprimidos
Datos comprimidos
Datos comprimidos Sinatura Sinatura
Datos Datos Datos
Mensaxe cifrada Mensaxe asinada Mensaxe cifrada e asinada 23
24. Mensaxes finais GPG
Opción --armor para convertir saida en formato ASCII.
Codificación base 64: ( cada 6 bits → 8 bits ASCII)
Valor de 6 Codificación Valor de 6 Codificación Valor de 6 Codificación Valor de 6 Codificación
bits bits bits bits
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
Relleno = 24
26. GPG
Creación de claves
$gpg --gen-key
Debemos indicar a información para crear a clave.
Algoritmo utilizado para a creación do par de claves.
Opción por defecto: Xéranse 2 pares de claves.
Clave con DSA para asinar.
Clave con ElGamal para cifrar.
vanesa@thanos:~$ gpg --gen-key
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software
Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Por favor seleccione tipo de clave deseado:
(1) DSA y ElGamal (por defecto)
(2) DSA (sólo firmar)
(5) RSA (sólo firmar)
¿Su elección?: 26
27. GPG
Tamaño da clave
Depende do algoritmo seleccionado.
Maior lonxitude da clave → Cifrado/Descifrado máis lento.
Data da caducidade da clave
Recomendable clave sen data de caducidade.
Identificador de usuario
Nome real, enderezo electrónico e comentario.
Asocia a clave a un usuario real.
Frase clave.
Contrasinal para desbloquear a clave privada.
Punto débil da seguridade de GnuPG.
27
28. Cifrado/Descifrado con GPG
Cifrar un arquivo.
$ gpg --output crypt.txt --encrypt --recipient <user_id> plain.txt
[Eliminar manualmente o arquivo.]
Descifrar un arquivo encriptado.
$ gpg --output plain.txt --decrypt crypt.txt
28
29. Intercambio de claves
Exportar unha clave pública.
Para poder enviar unha clave a un interlocutor antes hai
que exportala.
$ gpg --output <nome_fich> --export <user_id>
Por defecto, exportase en formato binario. Para exportar
en formato texto → --armor .
Existe a opción de publicar a clave pública nun
servidor de claves:
opción: --send-keys
con --keyserver <nome_servidor> pódese exportar a un servidor de
claves diferente do que está en .gnupg/gpg.conf
29
30. Intercambio de claves
Importar unha clave pública.
Para poder enviar mensaxes cifradas ao destinatario ao
que corresponde a clave importada.
$ gpg --import <nome_fich>
Existe a opción de importar a clave pública nun
servidor de claves:
opción: --recv-keys,
con --keyserver <nome_servidor> pódese importar dun servidor de
claves diferente do que está en .gnupg/gpg.conf
Para buscar claves nun servidor de claves:
opción: --search-keys
30
31. GPG e sinatura dixital
Asinamos un arquivo coa clave privada → asegurar
integridade e non repudio.
$ gpg --output <arquivo_saida> --sign <arquivo>
O destinatario debe verificar a sinatura:
$ gpg --verify <arquivo_asinado>
Para verificar a sinatura e descifrar o arquivo orixinal
simultaneamente:
$ gpg --output <arquivo_saida> --decrypt <arquivo_asinado>
31
32. GPG: Outras opcións
Para ver a lista de claves que hai no anel de claves
públicas:
$gpg --list-keys
Permite traballar con criptografía simétrica
unicamente.
Poden ser emitidos certificados de revocación da
clave por se ésta se ve comprometida:
$gpg --output certif-revocacion.gpg --gen-revoke <id_clave>
32
33. GPG: Sinatura de claves
Posibilidade de asinar as claves públicas dos
destinatarios aos que escribimos.
As sinaturas de claves validan as claves públicas e
incrementan a seguridade e confiabilidade de ditas
claves.
Debemos ser moi coidadosos coas claves que se
asinan e comprobar que a pegada coincide coa do
usuario. Non se debe presupoñer nada.
Existen varios niveis de confianza para asinar unha
clave (Descoñecido, ningunha, marxinal, absoluta).
Unha vez asignada unha clave debe ser enviada o
seu propietario ou a un servidor de claves público.
33
34. GPG
Integración de GPG coa maioría dos xestores de
correo electrónico.
Existe un complemento para o navegador Mozilla
Firefox e Gmail → FireGPG.
34
36. Sistemas de ficheiros cifrados
Existen varias opcións para encriptar sistemas de ficheiros
en Linux.
Dúas posibilidades:
Sistema de ficheiros pass-trough (EncFS, CFS).
Sistemas pass-trough pódese ir aumentando o tamaño
segundo o necesitemos (on the fly). Non hai limitacións.
Encriptación pass-trough: expón metadatos (nº de arquivos
cifrados, permisos, tamaño de cada arquivo, ... )
Con pass trough non se necesitan permisos especiais.
Posibilidade de realizar copias de seguridade.
Dispositivos de bloque encriptados (Loop-AES).
Os dipositivos de bloque teñen un tamaño fixo de entrada.
Funcionan en espacio de núcleo.
Necesitase permisos especiais.
36
37. EncFS
EncFS (Encrypted Filesystem)
http://www.arg0.net/encfs
Permite cifrar directorios en espacio de usuario.
Usa o módulo FUSE( Filesystem in Userspace) para
acceder o sistema de ficheiros.
Non necesita permisos especiais.
Útil para protexer datos de ataques físicos (roubos ou
perdas de un portátil, memoria USB, ... )
Programa encfsctl para cambiar a contrasinal máis
37
tarde.
38. Loop-AES
É un librería de cifrado que utiliza os dispositivos de bucle
(loop) (http://sourceforge.net/projects/loop-aes).
Os dispositivos de bucle son dispositivos de bloque que
non almacenan os datos directamente, senón que escribe
noutro dispositivo que hai por debaixo.
Neste proceso de traspaso de escritura desde o
dispositivo de bucle ata o dispositivo de bloque subxacente
permítense facer diferentes procesos (no caso concreto de
loop-AES a encriptación e desencriptación de datos
utilizando o algoritmo AES).
Os dispositivos de bucle son /dev/loop0 ... /dev/loop7 e
poden asociarse a calquera dispositivo de bloque ou arquivo
dentro dun sistema de arquivos.
38
39. A elección final depende das nosas necesidades:
Tamaño dos arquivos.
Encriptar ficheiros ou particións completas.
Nivel de seguridade necesario.
39
40. TrueCrypt
Free Open-Source On-the-fly encryption
http://www.truecrypt.org/
Crear un disco virtual encriptado dentro de un arquivo
e montao como se fose un disco real.
Encriptar particións completas ou dispositivos de
almaceamento (memorias USB).
Encriptado en tempo real, transparente.
Lectura/escritura tan rápida como se non estivese
encriptado.
Permite uso de esteganografía.
Algoritmos: AES-256, Twofish, Serpent.
40
43. TrueCrypt
Indicar o
lugar no que
se garda o
ficheiro que
se vai crear.
O ficheiro
creado
poderá ser
movido,
copiado,
borrado...
Se o ficheiro seleccionado xa existe non se encriptará, senón que
será sobreescrito polo novo volume.
43
44. TrueCrypt
Seleccionar o
algoritmo de
encriptación
desexado:
AES
Serpent
Twofish
..
Seleccionar o
algoritmo Hash:
RIPEMD-160
SHA-512
Whirlpool
44
45. TrueCrypt
Indicar o tamaño
do volume a crear.
Introducir a
contrasinal:
Tamaño
recomendable >=
20 caracteres.
Algún carácter
“raro”(*,$, @ ... )
45
47. TrueCrypt
Mover o rato
dentro do
asistente para
incrementar a
fortaleza das
claves.
Premer “Format”
para crear o
volume.
47
48. TrueCrypt
Para utilizar o
volume creado:
Seleccionar o
ficheiro.
Premer
“Mount”.
Solicítase a
contrasinal.
O volume
cárgase no
número de slot
que
seleccionemos.
48
49. TrueCrypt
Podemos acceder o arquivo facendo doble-click
sobre a unidade creada.
Lembrarnos de desmontar a unidade unha vez
rematemos de traballar con ela.
49
50. Bibliografía
Fundamentos de Seguridad en Redes: Aplicaciones y
Estándares, segunda edición, William Stallings, Pearson
Prentice Hall, 2004.
http://es.wikipedia.org
http://www.gnupg.org
http://www.arg0.net/encfs
http://sourceforge.net/projects/loop-aes
http://www.saout.de/misc/dm-crypt
http://www.truecrypt.org
http://www.linux.com/articles/52820
50