Herramientas criptográficas en GNU/Linux
-
Upload
seguridadelinux -
Category
Education
-
view
846 -
download
8
description
Transcript of Herramientas criptográficas en GNU/Linux
21 de xuño de 2010
Ferramentas de seguridade en GNU/LinuxCurso de Extensión Universitaria
Vanesa Vidal [email protected] de InformáticaUniversidade de Vigo
Ferramentas criptográficas de código aberto:
GPG e sistemas de arquivos cifrados
2
INTRODUCCIÓN Á CRIPTOGRAFÍA
GPG (Gnu Privacy Guard)
SISTEMAS DE ARQUIVOS CIFRADOS
EncFS (Encrypted Filesystem)Loop-AESTrue-Crypt
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.
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.
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.
6
Cifrado simétrico
Texto claro
Texto claro
Algoritmo de cifradoAlgoritmo de cifrado Algoritmo de descifradoAlgoritmo de descifrado
Transmisión de texto cifrado
K
Existe unha única clave (K) para cifrar e descifrar.
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.
Canle segura
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 ( claves posibles).2128
8
Cifrado simétrico (cont'd)
Algoritmos de cifrado convencional:
Algoritmo Tamaño de clave
Tamaño de bloque
Número de etapas
Aplicacións
DES 56 64 16 SET, Kerberos
3DES 112 o 168 64 48 GPG
AES 128, 192 o 256
128 10, 12 o 14 Substituirá a DES e 3DES
IDEA 128 64 8 GPG
Blowfish ata 448 64 16 Varios paquetes de
softwareRC5 ata 2048 64 ata 255
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.
10
Cifrado asimétrico (cont'd)
Esquema para cifrado/descifradoO emisor debe localizar a clave pública do destinatario.
A clave privada xérase de forma local e non se distribúe.
Textoen
claro
Textoen
claro
Transmisión de texto cifrado
K pública destinatario
Algoritmo de cifradoAlgoritmo de cifrado Algoritmo de descifradoAlgoritmo de descifrado
K privada destinatario
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.
Mensaxe Y cifrada só polo emisor => asinada dixitalmente.Mensaxe Y non pode ser modificada sen a K privada do emisor => autentificación + non repudio.
Textoen
claro
Textoen
claro
Transmisión de texto cifrado
K privada emisor
Algoritmo de cifradoAlgoritmo de cifrado Algoritmo de descifradoAlgoritmo de descifrado
K pública emisor
XY
X
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 igualDíficil atopar o documento orixinal a partir do valor hash.
Exemplos de algoritmos: MD5, SHA1.
13
Sinatura dixital
Sinatura dixital con documentos públicos:
Cifrando con clave privada o resumo aségurase orixe, autenticidade e integridade do documento enviado.
-------------
Resumir
HASH
K privada emisor
Algoritmo Algoritmo de cifradode cifrado
HASHencriptado +
-------------
HASHencriptado
HASH
HASH
Resumir
== ?
Algoritmo de Algoritmo de descifradodescifrado
K pública emisor
Orixe → Sinatura
Destino → Verificación
14
Cifrado asimétrico
Sinatura dixital con documentos privados:Cifrar coa clave pública do destino a mensaxe.
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 .
-------------
Resumir
HASH
K privada emisor
Algoritmo Algoritmo de cifradode cifrado
HASHencriptado +
-------------
HASHencriptado
HASH
HASH
Resumir
== ?Algoritmo de Algoritmo de descifradodescifrado
K pública emisor
K pública destino
Encriptado
Encriptado
K privadadestino
15
Procesos de sinatura e cifrado
Claves emisor:(Pue,Pre) Claves en posesión do emisor: Pue, Pre, Pur
Claves receptor: (Pur,Prr)
k
Sin
atu
ra
Xerar clave sesión (k)e cifrar (k)
Resumir
Textoen
claro
HASH
Textoen
claro
HASHencriptado(Pre)
Cifrar resumo(Pre)
Textocifrado
(k)
Textoen
claro
HASHencriptado(Pre.k)
Cifrar (Pur)Texto
cifrado (k)
HASHencriptado(Pre.k)
Envío
Cifrado
K c
ifrad
a(P
ur)
16
Proceso de descifrado e autenticidade
Claves emisor:(Pue,Pre) Claves en posesión do receptor: Pur, Prr, Pue
Claves receptor: (Pur,Prr)
Recepción Textocifrado
(k)
HASHencriptado(Pre.k)
K c
ifrad
a(P
ur) obter k (Prr)
k
Textocifrado
(k)
HASHencriptado(Pre.k)
descifrar(k)
HASHencriptado(Pre)
Textoen
claroobter
resumo(Pue)
HASH
Textoen
claroRecalcular resumo
HASH 2
Textoen
claro
Mensaxeauténtica
Mensaxefalsa
HASH == HASH 2
HASH != HASH 2
Descifrado
Verificación e autenticidade
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.
18
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.
Cifrado asimétrico
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-AESdm-crypt / LUKS (Device-mapper crypto target / Linux Unified Key Setup)TrueCrypt
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).
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
(Gmail+Firefox).
22
Directorios e arquivos por defecto en GPG
Estructura creada por defecto:
secring.gpggpg.conf
/
home
vanesa
pubring.gpg
.gnugpg
23
Estructura das mensaxes GPG
Mensaxe cifrada Mensaxe asinada Mensaxe cifrada e asinada
Clave de sesión cifrada 1
Datos cifrados
Datos comprimidos
Datos
Datos comprimidos
Datos
Sinatura
Datos cifrados
Datos comprimidos
Datos
Sinatura
Clave de sesión cifrada 2
.
.
.
Clave de sesión cifrada 1
Clave de sesión cifrada 2
.
.
.
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 bits
Codificación Valor de 6 bits
Codificación Valor de 6 bits
Codificación Valor de 6 bits
Codificación
0123456789
101112131415
ABCDEFGHIJKLMNOP
16171819202122232425262728293031
QRSTUVWXYZabcdef
32333435363738394041424344454647
ghijkl
mnopqrstuv
48495051525354555657585960616263
Relleno
wxyz0123456789+/=
25
Mensaxes GPG
Mensaxe orixinal:Arquivo de proba para encriptar.
Mensaxe encriptada:-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.9 (GNU/Linux)
hQIOAxzr9+4awToHEAf9FJjFsYEqDXRBOSECPZAiNf2aPEMNZ58wXhB6zpE7h33J
hNHjZtUvcenJnnBvVy8GjLMCdcz0b+vDjeeh1ZxX8+g5pr4s/e9AHWeHp8iHfKyk
MmYclBvPZI01x+C2TC87CmL9zADXU9GFg/+7jm6OzKD2lVImhgkWNZKPhmgJCbiQ
rWMe/WssxaEAS57dyNEGfe9ylpZchpbvK1RO0YCErAOtj49YhMhv2MlEHNvuaYZI
XgUOGfRt/eFi9Bh0rGOyl0sMZdG75JmXvezHqw61/AQlUQ3pfJiO/MS5YqaZOgSV
Q4jkUWkQf7XqMbHCUi3E2/1UNOU8bqsPe+g0r0ptfQf8DKD4zi+pWxbjIz0DNR2f
roRhJoguWWT1GEhCd8F7vD1zkIyn5xxhEx8XeoHL9ZqwKwBfLb03uOFCluySRh/U
WJ1skeydam8poeVEMeyMXgEjR1/W+7414cna76iXJwdIXQFCXb/kKaezWmL1wQ/A
CIoSwfSvAMucapuqokZZ+VDb62Yn1mXLhLP4Hjxz4IsU7HOm7RF2TmfU2CpUBSPQ
2gBSOxxFeEAbpDVcd77o7TYWpQrARKAaAcyjmwUuFZPB4uqOUWXu8RQWcEkp4SwQ
bTMhetoXedhvigdA3Zoby5U2jiHgVZUq3dKs8pzXRrqyzkv99rXFkurmKWHcuRSQ
UNJrARIlWzvgxziVIZ2vbdkxsC4iIhHQoiYi6zNflox/aUUVD+Z2tcAplaTHWmLy
Kwi9GNg+d41W17NAneGTmrpM+CTpqMnoq330g761IJK/Cy6s1sT5Nn3xg0MRnxjH
73p+dDnJM7CVWA/QlBc=
=zVNi
-----END PGP MESSAGE-----
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-keygpg (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?:
27
GPG
Tamaño da claveDepende do algoritmo seleccionado.Maior lonxitude da clave → Cifrado/Descifrado máis lento.
Data da caducidade da claveRecomendable clave sen data de caducidade.
Identificador de usuarioNome 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.
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
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-keyscon --keyserver <nome_servidor> pódese exportar a un servidor de claves diferente do que está en .gnupg/gpg.conf
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
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>
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>
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.
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.
35
FireGPG
Integración → facilita o uso de GPG.
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.
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 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.
39
A elección final depende das nosas necesidades:
Tamaño dos arquivos.Encriptar ficheiros ou particións completas.Nivel de seguridade necesario.
40
TrueCrypt
Free Open-Source On-the-fly encryptionhttp://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.
41
TrueCrypt
Creación de unha unidade encriptada a partir de un ficheiro (file container).
Premer no botón “Create Volume”
42
TrueCrypt
Seleccionamos a opción “Crear un ficheiro encriptado”.
En tipo de volume: marcamos a opción “Volume standard”.
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.
44
TrueCrypt
Seleccionar o algoritmo de encriptación desexado:AESSerpentTwofish..
Seleccionar o algoritmo Hash:
RIPEMD-160SHA-512Whirlpool
45
TrueCrypt
Indicar o tamaño do volume a crear.
Introducir a contrasinal:
Tamaño recomendable >= 20 caracteres.Algún carácter “raro”(*,$, @ ... )
46
TrueCrypt
Seleccionar o formato de arquivos a utilizar:
FATEXT-2EXT-3...
47
TrueCrypt
Mover o rato dentro do asistente para incrementar a fortaleza das claves.
Premer “Format” para crear o volume.
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.
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.
50
Bibliografía
Fundamentos de Seguridad en Redes: Aplicaciones y Estándares, segunda edición, William Stallings, Pearson Prentice Hall, 2004.
http://es.wikipedia.orghttp://www.gnupg.orghttp://www.arg0.net/encfshttp://sourceforge.net/projects/loop-aeshttp://www.saout.de/misc/dm-crypthttp://www.truecrypt.orghttp://www.linux.com/articles/52820