CLICK HERE FOR BLOGGER TEMPLATES AND MYSPACE LAYOUTS »

viernes, 3 de abril de 2009

OpenSSH

Esta es una pequeña introduccion de la instalacion y configuracion del OpenSSH
en Debian lenny.
Empezamos con la instalacion de los dos paquetes necesarios para nuestra configuracion.
Como esta es una version de Debian muy nueva les voy a colocar una linea de repositorio que me ha funcionado muy bien deb http://ftp.de.debian.org/debian lenny main.



En la imagen anterior se muestra la linea que utilizamos para instalar nuestro servidor SSH; seguida de la imagen con la cual montamos el cliente SSH.



Como ya hemos instalado los paquetes vamos a crear una llave la cual vamos a enviar al servidor ssh; para conectarnos sin que solicite password de root, si no de nuestra llave.Cabe recordar que nosotros somos clientes y servidores. En algun momento alguien nos enviara su llave para poderse conectar de la misma forma con nosotros.



En el momento de la creacion de la llave el sistema te va a preguntar por una frase o password; Coloca una que te sea facil de recordar.



Ya creada la llave vamos a crear el archivo en donde vamos a introducir las llaves de los usuarios de nuestro servidor, esta ruta esta ubicada en el archivo #> etc/ssh/sshd_config en el viene en la configuracion del SSH, cuando vean el archivo, encontraran una ruta que es la que especifica donde tiene que leer para encontrar la llave de las autorizaciones #> root/.ssh/authorize_keys, este archivo no existe entonces lo creamos como se ve en la imagen de abajo.



Ahora nos vamos a configurar nuestro servidor.



Ahora dejo una pequeña muestra de como se configura el ssh, con una breve explicacion de algunas lineas.
Siginificado de algunas lineas del ssh/sshd_config
RECUERDEN ESTA ES UNA CONFIGURACION PERSONALIZADA. PARA TU NECESIDADES PUEDES TENER OTRA, ESTA ES UNA BASE DE LO QUE SIGNIFICAN ALGUNAS LINEAS.
# Definimos el puerto por el que escuchamos las peticiones de conexión del los clientes
Port 22
# Especificamos por qué direcciones locales escucharemos.
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
# Especificamos las versiones del protocolo que aceptaremos
Protocol 2,1
# Archivos que contienen las llaves privadas de host a usar (solo permisos rw- para root)
# HostKeys for protocol version 1
HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Cada cuantos segundos el servidor regenera las claves, para así evitar el que se puedan
# descifrar sesiones caputaradas y luego usarse. Nunca es guardada en disco.
KeyRegenerationInterval 3600
# Espeficia el nº de bits para la clave del servidor del protocolo v1
ServerKeyBits 768
# Tipo de logeo de actividades -> AUTH=>/var/log/auth.log También disponible DAEMON, USER...
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
# El servidor desconecta al cliente si no se ha logueado correctamente en 600 segs.
LoginGraceTime 600
# Permitimos o no el login del usuario root => poner a no!
PermitRootLogin no
# SSH comprobará que los archivos tienen los permisos correctos, para evitar tener archivos con todos
# los permisos a todos los usuarios
StrictModes yes
# Permitimos la autentificación por RSA (solo para v1)
RSAAuthentication yes
# Permitimos la autentificación por clave pública (solo para v2)
PubkeyAuthentication yes
# Contiene el archivo que contiene las claves para la autentificación
#AuthorizedKeysFile %h/.ssh/authorized_keys
# NO usaremos el método de autentificación por rhost (.rhost)
# rhosts authentication should not be used
RhostsAuthentication no
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# No usamos el protocolo de autentificación por host
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Uncomment to disable s/key passwords
#ChallengeResponseAuthentication no
# HAbilitamos la autentificación "normal" si todo falla
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
# Use PAM authentication via keyboard-interactive so PAM modules can
# properly interface with the user
PAMAuthenticationViaKbdInt yes
# Opciones para servidor Kerberos
# To change Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#AFSTokenPassing no
#KerberosTicketCleanup no
# Kerberos TGT Passing does only work with the AFS kaserver
#KerberosTgtPassing yes
# En un principio, no permitimos exportar las X
X11Forwarding no
# Espeficicamos el primer nº de pantalla disponible para exportar
X11DisplayOffset 10
# Si queremos que al hacer login, al usuario le salga /etc/motd
PrintMotd no
# Por defecto, enseñaremos los datos del último login
#PrintLastLog no
# Para que el servidor pueda "enterarse" de que el cliente ha caido por ej
KeepAlive yes
#
#UseLogin no
#MaxStartups 10:30:60
# Si queremos enviar un banner cuando un cliente se conecte
#Banner /etc/issue.net
#ReverseMappingCheck yes
# Servidor ftp por ssh
Subsystem sftp /usr/lib/sftp-server
Luego de haber organizado nuestra configuracion, procedemos a enviar nuestra llave que se encuentra en la ruta #> root/.ssh/id_rsa.pub, en la imagen a continuacion se mustra el archivo en el Deskto, por que yo lo habia copiado en esa ruta.
Ahora voy a enviar mi llave a otro servidor.



De igual forma con el mismo comando sea desde un equipo linux o windows nos pueden enviar la llave.

GPG

GPG o GNU privace guard es una herramienta para cifrado y firmas digitales, cuenta con un versátil sistema de gestión de claves, así como módulos de acceso para todo tipo de clave pública directorios. GnuPG, también conocido como GPG, es una herramienta de línea de comandos con las características para una fácil integración con otras aplicaciones.

INSTALACION DE GPG4win


lo primero que debemos hacer es instalar nuestro software de gpg4win el cual es un software de encritiptacion de correo electronico.



lo primero que nos aparece es la imagen de bienvenida a este programa le damos next o siguiente para continuar.



luego leemos los terminos de contracto y licencia y le daremos next o siguiente para aceptarlos.



luego nos paracen una serie de componentes dependiendo de los que necesites los señalas o no en este caso solo me faltaba por señalar gnupg que es el componente de llave para el software los demas los deje por defecto.



luego escojeremos la ruta especifica para el software y le damos next o siguiente para continuar.



en esta aplicacion nos da una opcion de crear un acceso directo para su ejecuccion rapida en el escritorio la señalamos y le damos next o siguiente.



luego nos pide un nombre para la carpeta y el lugar donde la queremos guardar luego le damos next o siguiente.



luego esperamos a que se extraigan todos los paquetes necesarios. cuando este termine le damos next o siguiente.



cuando este termine de extraer todo los paquetes nos aparecera un cuadro de dialogo donde nos dice que si queremos leer un documento en este caso lo señalamos y acontinuacion le damos next o siguiente.



luego lo primero que tenemos que hacer es crear nuestras llaves en este caso por consola lo aremos con le comando gpg --gen-key y enter.



luego escojeremos que clase de llave vamos a crear en este caso le damos 1 que es DSA.



luego podremos decirle que la llave caduque o expire en este caso le decimos 0 para que no expire.



luego nos dice que confirmemos si la opcion elijida e sla correcta le decimos yes para aceptar.



luego nos pide que le asignemos un nombre a nuestra llave en este caso fue daniel.



luego nos pide una direccion de correo valida en este caso fue jhonnyr89@gmail.com.



luego nos pide un comentario para distinguir nuestra llave.



luego nos pide un password o contraseña para nuestra llave.



luego nos pide que le repitamos la entrada del password o contraseña.



luego esperamos a que se cargue todos los datos que acabamos de ingresar.



luego nos muestra la informacion ingresada como es el nombre el id y el correo que ingresamos.



y por ultimo nos aparece nuestra llave ya creada.



luego subimos nuestra llave al servidor rediris con el comando gpg --send-keys --keyserver pgp.rediris.com

sábado, 28 de febrero de 2009

INFRAESTRUCTURA DE LLAVE PUBLICA

La infraestructura de clave publica, es la combinacion de software , tecnologias de encriptacion y servicios que posibilitan a las empresas u organismos otorgar seguridad a sus comunicaciones y transacciones por internet.

- El proposito es proveer claves y manejos de certificados confiables y eficientes para lograr la habilitacion de la autenticacion, la no repudacion y la confidencialidad

- Logra la confianza basada en el uso de certificados de clave publica, los cuales son estructuras de datos que ligan los valores de clave publica a los sujetos

- La ligadura se realiza a traves de una autoridad de certificacion, la cual verifica la identidad del sujeto y firma digitalmente el certificado

COMPONENTES PKI

- AUTORIDADES DE CERTIFICACION: Emiten y revocan certificados

- AUTORIDADES DE REGISTRACION: Atestiguan la ligadura entre las claves publicas y las entidades propietarias de los certificados

- POSEEDORES DE LOS CERTIFICADOS: Pueden firmar documentos digitales

- REPOSITORIOS: Guardan y hacen posible los certificados

CERTIFICADOS E INFRAESTRUCTURA DE LA LLAVE PUBLICA
AUTENTICACION: Es un proceso que tiene como finalidad verificar la informacion referente a un determinado objeto, por ejemplo:

- La identidad del remitente (ya sea un dispositivo electronico y un usuario)
- La integridad de la informacion enviada
- El momento de envio de la informacion
- La validez de la firma

MECANSIMOS DE AUTENTICACION

La autenticacion asegura que la identidad de los partcipantes sea verdadera, se pueden evaluar 3 aspectos para autenticar usuarios

- Verificar algo que el usuario tiene
- Poner a prueba al usuario sobre algo que sabe, esto es pedir una contraseña
- Verificar algo que el usuario es, por ejemplo, analizar sus huellas dactilares o su retina

FUNCIONES HASH

- Producen huellas digitales de longitud fija para documentos de longitud arbitriaria, de esta manera producen informacion util para detectar modificaciones maliciosas

- Traducen contraseñas a salidas de longitud fija

- Pueden ser utilizadas para producir numeros aleatorios

- Proveen autenticacion basica a traves de la funcionalidad MAC (message authentication code)

- Utilizadas como bloques basicos para firmas digitales


PROBLEMAS CON ALGORITMOS ASIMETRICOS

Los problemas que surgen del uso de algoritmos asimetricos sin el respaldo de infraestructuras adicionales pueden dividirse en cuatro areas

1- autenticacion de llave
2- renovacion de llaves
3- no repudio
4- aplicacion de politicas.

jueves, 26 de febrero de 2009

CRIPTOGRAFIA


DEFINICIONES



  • Criptografía:Es el arte de escribir secretamente.

La ciencia de la comunicación segura.

  • Criptoanálisis:El arte de romper los esquemas de la criptografía.
  • Encripción:Es la transformación de un texto en claro para que no pueda ser leído.
  • Texto en claro:Lo que se quiere encriptar.
  • Criptograma:Es el producto de la encripción.
  • Desencripción:Es como se puede recuperar a partir del criptograma el texto original que fue encriptado.
  • Cipher:Es un sistema criptográfico que permite transformar texto plano mediante transposición o sustitución de acuerdo a un algoritmo previamente establecido. Ejemplo: DES, 3DES, etc.

MECANISMOS DE SEGURIDAD


  • Algoritmos de llave simétrica.
  • Algoritmos de llave asimétrica.
  • Hash.
  • MAC.
  • Firmas digitales.
  • Certificados Digitales.

ALGORITMOS DE LLAVE SIMETRICA


  • La llave con la que se encripta es igual a la llave con la que se desencripta.
  • También conocidos como algoritmos de llave privada, porque esta es conocida solo por los participantes en la comunicación.

  • Su principal problema es la distribución de las llaves.
  • Altamente eficientes (rápidos).
  • Fáciles de implementar en Hardware.
  • DES (Data Encription Standard).
  • Desarrollado por IBM.
  • Encripta bloques de 64 bits y produce bloques de 64 bits.
  • Llave de 56 bits aunque se acostumbra escribir como 8 bytes (1 bit de paridad).
  • Rápido y eficiente.
  • Utilizado en múltiples tecnologías como IPSec.

  • DES (Data Encription Standard).
  • Desarrollado por IBM.
  • Encripta bloques de 64 bits y produce bloques de 64 bits.
  • Llave de 56 bits aunque se acostumbra escribir como 8 bytes (1 bit de paridad).
  • Rápido y eficiente.
  • Utilizado en múltiples tecnologías como IPSec.
  • 3DES o Triple DES.
  • Una variación es 3DES que consiste en 3 procesos DES en cadena.
  • Puede operar así:
  • C = Ek3(Ek2(Ek1(P))).Llamado DES-EEE.
  • C = Ek3(Dk2(Ek1(P))). Llamado DES-EDE.
  • Muy utilizado también en IPSec.



Diagrama 3DES







  • IDEA (International Data Encription Algorith)
  • Desarrollado en Suiza por Xuejia Lai y James L. Massey of ETH-Zürich
  • Llave de 128 bits.
  • Encripta bloques de 64 bits y produce bloques de 64 bits.
  • Utilizado en PGP (Pretty Good Privacy – Correo seguro).
  • RC2
  • Desarrollado por Rivest.
  • Encripta bloques de 64bits.
  • Llave de longitud variable
  • Tres veces más rápido que DES.
  • RC4
  • Desarrollado por Rivest
  • Llave de longitud variable
  • Encripción de stream.
  • Muy utilizado en SSL.
  • AES (Advance Encription Standard)
  • El algoritmo se llama Rijndael
  • Desarrollado por 2 Europeos.
  • Encripta bloques de 128 bits y produce bloques de 128 bits.
  • Llave de 128, 192 y 256 bits.
  • Aprobado por el NIST (National Institute of Standards and Technology).

  • Se utiliza una llave para encriptar y otra llave para desencriptar.
  • Cada usuario tiene entonces dos llaves: una PRIVADA conocida solo por el usuario y otra PUBLICA conocida por todo el mundo.
  • Dada una llave no se puede derivar la otra.
  • Basados en la dificultad de factorizar números grandes y logaritmos discretos.
  • Difíciles de implementar en Hardware.
  • Son más lentos que los simétricos (De 100 a 10.000 veces)
  • Generalmente utilizados al comienzo de una sesión segura para el proceso de autenticación y/o para proteger el intercambio de llaves simétricas con las que después se continuará el proceso de encripción.
  • Ejemplo: RSA, Diffie-Hellman
  • RSA
  • Creado por Ron Rivest, Adi Shamir, Leonard Adleman en 1977.
  • Basado en la dificultad de factorizar números grandes (200 dígitos o más).
  • 100 a 10000 veces más lento que DES.
  • Muy utilizado en SSL.
  • Llaves típicas de 768 (no muy seguras), 1024, 2048 bits.

  • RSA EN DETALLE
  • Tome 2 primos p y q y obtenga su producto n=p*q. p y q se almacenan o destruyen.
  • Elija un número e <>
  • Calcule e*d=1 mod (p-1)(q-1).
  • (e,n)=llave pública. (d,n)=llave privada.

  • Para encriptar se calcula c=me mod n
  • Para desencriptar se calcula m = cd mod n
  • Diffie-Hellman.
  • Permite a dos partes establecer una llave común.
  • Se basa en la dificultad para calcular logaritmos discretos.
  • No autentica las partes.
  • Muy utilizando en IPSec.
  • Se definen varios tipos de grupos así:
  • DF Grupo 1: 768 bits.
  • DF Group 2: 1024 bits.
  • DF Group 5: 1536 bits.
  • DIFFIE-HELLMAN EN DETALLE
  • Las partes comparten dos números públicos m y g, m debe ser un número primo grande.
  • Alice genera un número aleatorio grande a y calcula X=ga mod m
  • Bob genera un número aleatorio grande b y calcula Y= gb mod m
  • Alice envía X a Bob y Bob envía Y a Alice.
  • Bob calcula K1=Xb mod m
  • Alice calcula K2=Ya mod m
  • K1 y K2 = gab mod m

ALGORITMOS HASH

  • Conocidos también como message digests.
  • Toma una entrada de longitud variable y produce una salida de longitud fija que se puede considerar una huella digital de la entrada.
  • Si los hash de dos mensajes son iguales muy probablemente los mensajes serán los mismos.
  • Operan en un solo sentido.
  • Ejemplos: MD5 y SHA-1

HASH MD5 Y SHA-1

  • MD5 (Message Digests-5)
  • Desarrollado por Ron Rivest.
  • Produce un código de 128bits.
  • En Unix/Linux con comando md5sum se puede calcular el hash de un archivo. Util para verificar integridad.

n RFC 1321.

  • SHA-1 (Secure Hash Algorith-1)
  • Desarrollado por NIST/NSA (National Institute of Standards and Technology/National Security Agency).
  • Produce un código de 160bits.
  • Más lento que MD5 pero más segurio.
  • MAC
  • Message Authenticacion Code.
  • Hash donde interviene una llave simétrica.
  • Permite garantizar la integridad de un mensaje.

FIRMA DIGITAL

  • HASH encriptado con la llave privada de un esquema asimétrico.
  • Usado en SET (Secure Electronic Transactions).

DIGITAL ENVELOPE

  • Sobre digital.
  • Técnica de encripción de dos niveles asi:
  • El mensaje es encriptado utilizando una tecnología simétrica.
  • La llave requerida para desencriptar el mensaje va encriptada con una tecnología asimétrica (llave publica).
  • Mejora el rendimiento al utilizar la criptografía asimétrica (que es lenta) solo para encriptar la llave simétrica con la que va encriptado el mensaje.

APLICACIÓN DE LA CRIPTOGRAFIA

  • PRIVACIDAD: DES, IDEA o RSA.

  • AUTENTICACIÓN: RSA.

  • NO RECHAZO: RSA y MD5 o SHA-1 (Secure Hash Algorith). NSA/NIST

  • INTEGRIDAD: MD5 y SHA-1