Diapositiva 1

Anuncio
Dos modelos comunes:

PKI centralizada (SSL/TLS, S/MIME)
◦ Certificados
◦ Autoridades de certificación centralizadas

PKI distribuida (PGP)
◦ Firmas entre usuarios
◦ Red de confianza (Web of trust)

RFC 3280 define X.509 v3

Define una PKI para Internet

Formato de los certificados


Formato de las Listas de Revocación de
Certificados (CRL)
Forma de PKI centralizada más usada
◦ Usado para S/MIME, SSL/TLS, SSH...
Algunos campos del certificado X.509
•
•
•
•
•
•
•
•
•
•
•
•
•
Certificate
Version
Serial Number
Algorithm ID
Issuer
Validity
Subject
Subject Public Key Info
Public Key Algorithm
Subject Public Key
• ...
Certificate Signature Algorithm
Certificate Signature
Versión del certificado (3)
Número identificador único del cert.
Algoritmos para firmar el cert.
Nombre de la CA
Periodo de validez del cert.
Usuario (a quien pertenece la clave)
Datos de la clave certificada
…
Algoritmos usados para firmar el crt.
Firma de la CA

Open SSL Herramienta que implementa SSL

S/MIME Correo cifrado


Cifrado de llamada a procedimiento remoto (RPC). El
protocolo RPC utilizado por COM distribuido (DCOM)
proporciona un nivel de autenticación (privacidad de
paquete) que realiza el cifrado de todos los paquetes de
datos enviados entre el cliente y el servidor.
Seguridad del protocolo Internet (IPSec). IPSec ofrece una
solución para la comunicación segura en el nivel de
transporte y puede utilizarse para proteger los datos
enviados entre dos equipos, como por ejemplo, entre un
servidor de aplicaciones y un servidor de bases de datos.




Open SSL es una herramienta SSL funcional.
OpenSSL es una implementación de código
abierto, de los protocolos SSL y TLS.
Está basado sobre el extinto proyecto SSLeay,
iniciado por Eric Young y Tim Hudson.
Se encuentra disponible en www.openssl.org
y admite diferentes plataformas.

Pasos principales de la instalación(en sistemas UNIX):
◦ Descargar el paquete, descomprimirlo desde un usuario diferente
de root.
◦ Ejecutar el archivo ./configure (se puede especificar de forma
explicita)
◦ Ejecutar make
◦ Entrar al sistema como root. Ejecutar make install para mover los
archivos al directorio correspondiente (/usr/local/ssl)
◦ Crear referencia a las bibliotecas:
 ln –s /usr/local/ssl/lib/libssl.a
/usr/lib/
 ln –s /isr/local/ssl/lib/libcrypto /usr/lib
◦ Crear la referencia a los archivos incluidos:
 ln –s /usr/local/ssl/include/openssl/
/usr/include
◦ Incorporar el MANPATH /usr/local/ssl/man a su
archivo /etc/man.config
◦ Incorporar en la ruta de acceso (PATH)
/usr/local/ssl/bin
◦ OpenSSL incluye un API para programación segura
en C

openssl genrsa –des3 –out ca.key 1024
◦ En donde:
 genrsa indicará que se usarán parámetros RSA
 -des3 indica que se utilizará el algoritmo triple DES
para realizar el cifrado.
 -out ca.key, indica que la llave se depositará en un
archivo llamado ca.key
 El parámetro 1024 indica el tamaño que tendrá la clave
privada.
Al ejecutar el comando se pedirá el password que
resguardará la llave privada y su confirmación

Una vez que se generó la llave privada, se
utilizará ésta para generar un certificado,
para esto, se ejecuta el siguiente comando:
#openssl req –new –x509 –days 365 –key
ca.key –out ca.csr (o puede ser ca.crt)
 req indica que se trata de una solicitud
 -new que se trata de una nueva solicitud
 -x509 que la solicitud se generará en el estándar x509

Se ingresa el password y los datos que
formarán el certificado.


Enviar el archivo .csr a una CA, ésta solicita el
pago y valida la identidad de la organización y
proporciona el certificado por un tiempo
limitado.
Aunque también se pueden generar certificados
firmados por “uno mismo”
#openssl req –new –x509 –days 30 –in ca.csr –key
ca.key –out ca.ctr
csr.- Solicitud de firma del certificado
crt.- Certificado temporal firmado por el propio servidor.

Al instalar Apache:
◦ Después de desempaquetar el archivo de instalación (tgz)
#./configure –-enable-ssl
# make
# make install
◦ Generar una llave privada y un certificado (diapositivas
anteriores)
◦ Mover el .key y .crt al directorio: /dir_apache/conf/ssl
(crearlo, ya que no existe por default)
◦ Y modificar el archivo ssl.conf indicando donde se
encuentran los archivos:
 SSLCertificateFile
 SSLCertificateKeyFile
◦ Finalmente iniciar apache:
#/dir_apache/bin/apachectl start



Los servidores como el IIS tienen opciones
para habilitar conexiones seguras por medio
de la configuración.
Apache + SSL sobre Windows
Servidores de base de datos como DB2 u
Oracle también traen opción de conexiones
seguras.

http://httpd.apache.org/download.cgi
◦ Unix Source: httpd-2.2.14.tar.gz
◦ Win32 Source: httpd-2.2.14-win32-src.zip
◦ Win32 Binary without crypto (no mod_ssl) (MSI Installer):
apache_2.2.14-win32-x86-no_ssl.msi
◦ Win32 Binary including OpenSSL 0.9.8k (MSI Installer):
apache_2.2.14-win32-x86-openssl-0.9.8k.msi
C:\OpenSSL>openssl req -config openssl.cnf -new
-out my-server.csr
C:\OpenSSL>openssl rsa -in privkey.pem -out myserver.key
C:\OpenSSL>openssl x509 -in my-server.csr -out
my-server.cert -req -signkey my-server.key days 365
C:\OpenSSL>openssl x509 -in my-server.cert -out
my-server.der.crt -outform DER
#Listen 80
Listen 443
…..
Probar http://localhost:443
…..
LoadModule ssl_module modules/mod_ssl.so
…..
<VirtualHost localhost:443>
SSLEngine On
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key
</VirtualHost>
….
Probar: https://localhost

Iniciar el estado del cliente:
◦ SSL_METHOD * method;
◦ SSL_CTX *ctx;
◦ OpenSSL_add_all_algorithms();
 Cargar el cifrado
◦ SSL_load_error_strings();
 Cargar/registrar mansajes de error
◦ method = SSLv2_client_method();
 Crear el nuevo cliente
◦ ccx = SSL_CTX_new(method);
 Crear el nuevo contexto



El siguiente paso es crear un socket normal.
Después de la conexión de los sockets entre
cliente y servidor,se necesita crear una instancia
SSL y asociarla a la conexión.
SSL *ssl = SSL_new(ctx);
◦ Crear nuevo estado de la conexión

SSL_set_fd (ssl, sd);
◦ Adjuntar el descriptor del socket
 “int sd = socket(PF_INET, SOCK_STREAM,0);”

If (SSL_connect(ssl) == -1) //Realiza conexión
ERR_print_errors_fp(stderr);
Multipurpose Internet Mail Extensions
RFC 2045-2049


MIME
◦ Define la estructura del cuerpo de los correos
electrónicos.
◦ Permite dividir los correos en bloques múltiples.
◦ Permite incluir imágenes, audio, video... en un correo.
◦ No contempla seguridad/criptografía

Secure/MIME, desarrollado por RSA Security
◦ Extiende MIME con encripción y firmas
◦ Basado en PKI centralizada
◦ Usa CAs y certificados X.509
◦ RFC 3851 → S/MIME v3.1
◦ Tipos MIME Application/pkcs7-mime,
multipart/signed...

Estándar para uso de PGP

Usa red de confianza

Tipos MIME


◦ Basado en PKI distribuida
◦ RFC 3156 → MIME con OpenPGP (“PGP/MIME”)
◦ Application/pgp-encrypted, application/pgpsignature
◦ Estructura MIME de un correo cifrado/firmado
◦ RFC 2440 → OpenPGP Message Format
Campos binarios que componen un bloque
cifrado/firmado (datos encriptados, algoritmo,
hash...)
Comando pgp linux



IPSec puede utilizarse para proteger los datos
enviados entre dos equipos, como por ejemplo,
un servidor de aplicaciones y un servidor de
bases de datos.
IPSec es totalmente transparente para las
aplicaciones al implementarse los servicios de
cifrado, integridad y autenticación en el nivel de
transporte.
Las aplicaciones siguen comunicándose entre sí
de la forma habitual mediante puertos TCP y
UDP.

Proporcionar confidencialidad de mensajes al cifrar todos los
datos enviados entre dos equipos.

Proporcionar integridad de mensajes entre dos equipos (sin
cifrado de datos).



Proporcionar autenticación mutua entre dos equipos (no
usuarios). Por ejemplo, puede ayudar a proteger un servidor de
bases de datos si establece una directiva que admite peticiones
solamente de un equipo cliente específico (por ejemplo, un
servidor Web o de aplicaciones).
Restringir los equipos que pueden comunicarse entre sí.
También puede limitar la comunicación a protocolos IP y puertos
TCP/UDP específicos.
IPSec puede utilizar kerberos para autenticación de los usuarios




RPC es el mecanismo de transporte subyacente utilizado
por DCOM.
RPC ofrece un conjunto de niveles de autenticación
configurables, desde ninguna autenticación (y ninguna
protección de los datos) al cifrado total del estado de los
parámetros.
El nivel más seguro (Privacidad de paquete RPC) cifra el
estado de los parámetros para cada llamada a
procedimiento remoto (y, por lo tanto, todas las
invocaciones de métodos DCOM).
El nivel de cifrado RPC (40 bits o 128 bits) depende de la
versión del sistema operativo Windows que se ejecuta en
los equipos cliente y servidor.

SSH es un protocolo que permite establecer una conexión
segura entre un cliente y servidor a través de una red
insegura como es la red IP.

El protocolo SSH (Secure Shell) se desarrolló en 1995 por
el finlandés Tatu Ylönen.

Inicialmente se creo para sustituir a telnet, pero
actualmente se le han agregado más funcionalidades.

El protocolo SSH consta de dos componentes:
◦ Cliente SSH, permite conectarse al servidor de manera segura.
◦ Servidor SSH, actúa como supervisor, crea una conexión segura y
un proceso por cada cliente que atiende.



El objetivo de la versión 1 del protocolo (SSH1),
propuesta en 1995, ofrecía una alternativa a las
sesiones interactivas (shells) tales como Telnet, rsh,
rlogin y rexec.
Sin embargo, este protocolo tenía un punto débil
que permitía a los hackers introducir datos en los
flujos cifrados. Por este motivo, en 1997 se propuso
la versión 2 del protocolo (SSH2) como un
anteproyecto del IETF.
http://www.ietf.org/html.charters/secshcharter.html.
Secure Shell Versión 2 también incluye un protocolo
SFTP (Secure File Transfer Protocol).

Una conexión SSH se establece en varias
fases:
◦ En primera instancia, se determina la identidad
entre el servidor y el cliente para establecer un
canal seguro (capa segura de transporte).
◦ En segunda instancia, el cliente inicia sesión en el
servidor.
Descargar