javier chistik t.p final criptografía y seguridad...

52
Javier Chistik T.P final Criptografía y Seguridad Informática 68781 Protocolo de Seguridad SSH

Upload: others

Post on 03-Jun-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Page 2: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

INDICE

Página

CAP.1. ARQUITECTURA DEL PROTOCOLO SSH.................................1

1.1. INTRODUCCIÓN1.2. ESPECIFICACIÓN DE REQUISITOS1.3. ARQUITECTURA

1.3.1. CLAVE1.3.2. PROPIEDADES DE SEGURIDAD

1.4. CONSIDERACIONES DE SEGURIDAD

CAP. 2. PROTOCOLO DE LA CAPA DE TRANSPORTE........................9

2.1. INTRODUCCIÓN2.2. PROTOCOLO DE PAQUETE BINARIO2.3. COMPRESIÓN Y ENCRIPTADO2.4. INTEGRIDAD DE LOS DATOS2.5. INTERCAMBIO DE CLAVES

CAP.3. PROTOCOLO DE AUTENTICACIÓN..........................................6

3.1. INTRODUCCIÓN3.2. ESTRUCTURA DEL PROTOCOLO DE AUTENTICACIÓN

3.2.1. REQUISITOS DE AUTENTICACIÓN3.3. MÉTODO DE AUTENTICACIÓN CON CLAVE PÚBLICA3.4. MÉTODO DE AUTENTICACIÓN MEDIANTE PASSWORD3.5. CONSIDERACIONES DE SEGURIDAD

CAP.4. PROTOCOLO DE CONEXIÓN.....................................................3

4.1. INTRODUCCIÓN4.2. REQUISITOS GLOBALES4.3. MECANISMO DE CANAL DE COMUNICACIÓN

4.3.1. APERTURA DE UN CANAL4.3.2. TRANSFERENCIA DE DATOS4.3.3. CLAUSURA DE UN CANAL

4.4. SESIONES INTERACTIVAS4.4.1. APERTURA DE SESIÓN

4.5. CONSIDERACIONES DE SEGURIDAD

Page 3: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXOS

ANEXO 1. Recomendaciones de aleatoriedad para seguridad..............12

ANEXO 2. Codificación UTF-8...............................................................14

ANEXO 3. Algoritmo cifrador “Blowfish” y “Twofish...............................16

ANEXO 4. MAC (Código de autenticación de mensaje).........................26

ANEXO 5. Protocolo de Certificación X.509...........................................36

ANEXO 6. Esquema resumen de conexión SSH...................................36

Page 4: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

CAP. 1. ARQUITECTURA DEL PROTOCOLO SSH

1.1.- INTRODUCCIÓN

SSH es un protocolo que tiene como fin un logueo remoto seguro y otrosservicios en redes inseguras. Está compuesto por los siguientes componentes:

• Protocolo de la Capa de Transporte, el cuál provee autenticación,confidencialidad, e integridad. También, aunque en forma opcional, puede proveercompresión. La capa de transporte, típicamente corre sobre una conexión TCP/IP.

• Protocolo de Autenticación del Usuario, es el que autentifica al cliente con el

servidor. Corre sobre el Protocolo de la capa de transporte. • Protocolo de Conexión, es el encargado de multiplexar el “túnel encriptado” en

varios canales lógicos. Corre sobre el Protocolo de autenticación del usuario.

1.2.- ESPECIFICACIÓN DE REQUISITOS

En todo este trabajo, se usarán palabras claves para describir requerimientos.Dichas palabras serán interpretadas como lo indica la RFC-2119, y son lassiguientes:

• “DEBE” . Esta palabra, o los términos “REQUERIDO” , significan que la definiciónes un requerimiento absoluto de la especificación.

• “NO DEBE”. Esta frase o la frase “NO SERÁ”, significan que la definición es una

prohibición absoluta de la especificación. • “DEBERÍA”. Esta palabra, o el adjetivo “RECOMENDADO” , significan que

existirían razones válidas, en particulares circunstancias, para ignorar un ítem enparticular.

• “NO DEBERÍA”. Significa que no existen razones válidas, para ignorar un ítem. • “PUEDE”. Esta palabra o el adjetivo “OPCIONAL” , significa que el ítem es

realmente opcional.

1.3.- ARQUITECTURA

1.3.1.- CLAVE

Cada servidor “DEBE” poseer una clave de host. Los hosts “PUEDEN”poseer varias claves usando diferentes algoritmos. También varios hosts “PUEDEN”compartir la misma clave de host. Cada host “DEBE” tener al menos una clave paraser usada por el algoritmo de clave pública.

Page 5: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

La clave de host del servidor, es usada durante el intercambio de claves paraverificar si el cliente está realmente hablando con el servidor correcto. Para que estosea posible, el cliente debe tener a priori conocimiento de la clave pública del host.

Pueden ser usado dos modelos diferentes:

• El cliente posee una base de datos local que asocia cada nombre de host (comofue tipeado por el usuario) con la correspondiente clave pública. Dicho métodotiene la ventaja de no necesitar una infraestructura de administración central, ocoordinación de terceras partes. Lo negativo es lo dificultoso de manteneractualizada la base de datos.

• La clave y nombre del host es certificada por una autoridad de certificación

confiable. Esta opción, no tiene el problema del mantenimiento, pero cada clavede host debe ser certificada apropiadamente por la autoridad central antes que laautorización sea posible. De esta manera se debe depositar mucha confianza endicha infraestructura central.

1.3.2.- PROPIEDADES DE SEGURIDAD

La mayor virtud del protocolo SSH es la de brindar seguridad en Internet.Todos los algoritmos de encriptado, integridad, y de clave pública usados sonconocidos. Todos los algoritmos son negociados.

1.4.- CONSIDERACIONES DE SEGURIDAD

Existen consideraciones a tener en cuenta para conservar la buena calidad delos números aleatorios a ser usados. Dichos números “DEBERÍAN” ser generadossegún los mecanismos de seguridad que se mencionan en la RFC 1750. Una brevedescripción de dicha RFC se encuentra como Anexo 1.

Page 6: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

CAP. 2. PROTOCOLO DE LA CAPA DE TRANSPORTE

2.1.- INTRODUCCIÓN

La capa de transporte de SSH es un protocolo de transporte seguro. Ésteprovee un fuerte encriptado, autenticación criptográfica, y protección de integridad.

En este protocolo, la autenticación está basada en el host, sin ejecutarautenticación del usuario. Como se explicó en el capítulo anterior, la autenticación delusuario se realiza mediante el protocolo de autenticación.

El protocolo fue diseñado para ser simple, flexible, que permita negociación deparámetros, y minimizar los números de “round - trips”. El método de intercambio declaves, el algoritmo de clave pública, algoritmo de encriptado simétrico, algoritmo deautenticación de mensaje, y algoritmo de hash son todos negociables. Es de esperaren todos los ambientes, que sean necesarios solo dos round - trips para unintercambio de claves, autenticación de server, requerimiento de servicio, ynotificación de aceptación de requerimiento de servicio. En l peor de los casos serían3 round - trips.

2.2.- PROTOCOLO DE PAQUETE BINARIO

SSH trabaja sobre una capa de transporte binaria y transparente de 8 bits.Cada paquete tiene el siguiente formato:

packet_length (uint32)padding_length (byte)payload; n1=packet_length - padding_length - 1 (byte[n1])random padding; n2=padding_length (byte[n2])mac ; m=mac_length (byte[m])

packet_length:

Longitud del paquete (bytes), sin incluir MAC.

padding_length:

Longitud del relleno (bytes)

payload:

El contenido útil del paquete. En caso de haber sido negociado compresión,este campo es comprimido. Por default la compresión es nula.

padding:

Se realiza un relleno arbitrario tal que la longitud total de los camposnombrados anteriormente, sea un múltiplo del tamaño del bloque de cifrado. “DEBE”al menos existir 4 bytes de relleno, siendo el máximo 255 bytes. Dicho relleno“PODRÍA” ser bytes aleatorios.

Page 7: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

mac:

Código de autenticación de mensaje.

2.3.- COMPRESIÓN Y ENCRIPTADO

Si se negoció compresión, solo el campo con carga útil es el que se comprime,usando el algoritmo convenido.

Un algoritmo de encriptado y una clave son negociados durante el intercambiode claves. Cuando éste tiene efecto, el packet_length, padding_length, payload decada paquete “DEBE” ser encriptado con el algoritmo convenido. Todos loscifradores “DEBERÍAN” usar claves con una longitud efectiva igual o mayor de 128bits.

Están definidos los siguientes cifradores:

3des - cbc requerido Triple DES en modo CBCblowfish-cbc recomendado Blowfish en modo CBCarcfour opcional Cifrador stream Arcfouridea-cbc opcional Idea en modo CBCcast128-cbc opcional CAST-128 en modo CBC

El algoritmo Blowfish será descripto como Anexo3.

2.4.- INTEGRIDAD DE LOS DATOS

La integridad de los datos es protegida incluyendo en cada paquete un códigode autenticación de mensaje (MAC), que es computado desde el contenido delpaquete y un número de secuencia del mismo. Los distintos algoritmos de esta capaserán tratados como Anexo4.

El algoritmo MAC es negociado durante el intercambio de claves.

Están definidos los siguientes algoritmos:

hmac-sha1 requerido HMAC-SHA1 (longitud= 20)hmac-sha-96 recomendado primeros 96 bits de HMAC-SHA1 (longitud= 12)hmac-md5 opcional HMAC-MD5 (longitud= 16)hmac-md5-96 opcional primeros 96 bits de HMAC-MD5 (longitud= 12)

El protocolo acepta distintos tipos de algoritmos de clave pública. Entre ellosse encuentra el DSS (Digital Signature Standard) y certificados SKIP, CA, PGP yX509. Este último se analizará como Anexo5.

Page 8: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

2.5.- INTERCAMBIO DE CLAVES

El intercambio de claves comienza cuando uno de los lados envía la lista delos algoritmos que soporta. Cada lado “PUEDE” interrogar cual algoritmo estáusando el otro lado, y “PUEDE” y puede enviar un paquete de inicio de intercambiode clave acorde al algoritmo preferido.

El intercambio de claves produce dos valores: una clave secreta compartida K,y una hash de intercambio H. Las claves de encriptado y autenticación son derivadasde ellas. H del primer intercambio de claves, es usada también como “identificador desesión”, el cual es el único identificador para dicha conexión. Éste es usado por losmétodos de autenticación como parte del dato que fue firmado como prueba deposesión de la clave privada.

Page 9: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

CAP. 3. PROTOCOLO DE AUTENTICACIÓN

3.1.- INTRODUCCIÓN

Este protocolo, corre encima del Protocolo de Capa de Transporte de SSH. Élasume que protocolos subyacentes proveen protección en cuanto a integridad yconfidencialidad.

Cuando este protocolo comienza, recibe un identificador de sesión delprotocolo del nivel inmediato inferior. Dicho número únicamente identifica la sesión yes conveniente su uso como firma para probar la posesión de una clave privada.

3.2.- ESTRUCTURA DEL PROTOCOLO DE AUTENTICACIÓN

El servidor guía la autenticación diciéndole al cliente cuáles autenticacionesson útiles para continuar con el diálogo entre los dos en cualquier momento. El clientetiene libertad de intentar los métodos listados por el server en cualquier orden. Estoda al servidor un control completo sobre dicho proceso si lo desea, pero a su vezpermite suficiente flexibilidad al cliente a usar los métodos que soporta, o que sonmás convenientes para el usuario.

El servidor “DEBERÍA” poseer un timeout para la autenticación, y proceder ala desconexión si al autenticación no fue aceptada en ese lapso de tiempo. El timeout“RECOMENDADO” es de 10 minutos. También la implementación “DEBERÍA”limitar el número de intentos de autenticación fallidos por el cliente en una sesión (elrecomendado es de 20 intentos). Si este umbral es excedido, el server “DEBERÍA”desconectar.

3.2.1.- REQUISITOS DE AUTENTICACIÓN

Toda autenticación “DEBE” usar el siguiente formato de mensaje. Sólo losprimeros campos son definidos; los restantes dependen del método de autenticaciónusado.

SSH_MSG_USERAUTH_REQUEST (byte)user name (codificado en UTF-8) (string)service name (en ASCII) (string)method name (en ASCII) (string)

el resto del paquete es específico del método.

Los nombres de usuario y servicio son repetidos en cada nuevo intento deautenticación, y “PUEDEN” cambiar. Notar que el nombre de usuario está codificadoen UTF-8, codificación que se le hará mención en el Anexo2.

El nombre de servicio, especifica el servicio a comenzar luego de laautenticación. Si dicho servicio no está disponible, el server “PUEDE” realizar ladesconexión. En el caso que el servicio no exista, la autenticación “NO DEBE” seraceptada.

Page 10: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

La autenticación es completada cuando el server responde con el mensajeSSH_MSG_USERAUTH_SUCCESS. Luego de dicho mensaje, el server comienzacon el servicio requerido.

3.3.- MÉTODO DE AUTENTICACIÓN CON CLAVE PÚBLICA.

El único método de autenticación requerido es el de clave pública. Por lo tantotodas las implementaciones “DEBEN” soportar este método; aunque, no todos losusuarios necesitan poseer claves públicas, y en su mayoría las políticas a seradoptadas en un futuro cercano, es de no requerir clave pública de autenticación atodos los usuarios.

Con este método, la posesión de una clave privada sirve de autenticación.Este método funciona enviando una firma digital creada por la clave privada delusuario, debiendo el server chequear si son válidas.

Frecuentemente las claves privadas son almacenadas en forma encriptada enel host del cliente. Los algoritmos de claves pública usados serán tratados en elcapítulo siguiente.

Para realizar la autenticación, el cliente “DEBE” la firma digital generada. Éstaen enviada usando el siguiente paquete:

SSH_MSG_USERAUTH_REQUEST (byte)user name (codificado en UTF-8) (string)service name (en ASCII) (string)“publickey” (string)TRUE booleanopublic key algorithm name (string)public key (string)signature (string)

Cuando el server recibe este mensaje, “DEBE” chequear si la clavesuministrada es aceptada para la autenticación, y si la firma es correcta.

3.4.- MÉTODO DE AUTENTICACIÓN MEDIANTE PASSWORD.

La autenticación con password tiene el siguiente paquete. Notar que el server“PUEDE” solicitar al usuario el cambio de password.

SSH_MSG_USERAUTH_REQUEST (byte)user name (codificado en UTF-8) (string)service name (en ASCII) (string)“password” (string)FALSE booleanoplaintext password (UTF-8) (string)

Notar que el password es codificado en UTF-8.

Page 11: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

3.5.- CONSIDERACIONES DE SEGURIDAD.

El propósito de éste protocolo es el de ejecutar la autorización del cliente. Ésteasume que corre sobre un protocolo de capa de transporte seguro. Si la capa detransporte no provee encriptado, métodos de autenticación que aseguren un datosecreto, puede deshabilitarse para proteger de posibles ataques, provocando DNS(denegación de servicio).

Page 12: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

CAP. 4. PROTOCOLO DE CONEXIÓN

4.1.- INTRODUCCIÓN

El Protocolo de Conexión de SSH, fue diseñado para correr encima de losprotocolos de Capa de Transporte y Autenticación del Usuario de SSH. Dichoprotocolo provee sesiones interactivas de logueo, ejecución remota de comandos,conexiones TCP/IP y X11. El nombre de servicio para este protocolo es “ssh-connection”.

4.2.- REQUISITOS GLOBALES

Existen varias clases de requerimientos que afectan “globalmente” al estadodel terminal remoto, independiente de algún canal. Un ejemplo de lo expuesto es unrequerimiento para comenzar una transmisión TCP/IP a un puerto específico. Todorequerimiento de este tipo debe ser de la forma:

SSH_MSG_GLOBAL_REQUEST (byte)request name (restricted to US-ASCII) (string)want reply (booleano)

...request-specific data follows

El receptor responderá a este mensaje conSSH_MSG_REQUEST_SUCCESS, SSH_MSG_REQUEST_FAILURE, u otromensaje de continuación específico si “want reply” es TRUE (verdadero).

4.3.- MECANISMO DE CANAL DE COMUNICACIÓN

Todas las sesiones, conexiones de retransmisiones, etc. son canales decomunicación. Cualquiera de los dos lados de la conexión puede abrir el canal. Loscanales múltiples son multiplexados en una sola conexión.

Los canales son identificados con números en cada punto terminal. El númerode referencia de cada canal, puede ser diferente en cada lado. El requerimiento deapertura de un canal contiene el número de canal del remitente. Todo otro mensajerelacionado con el canal, contiene el número de canal del receptor.

Los canales tiene su flujo controlado. No puede ser transmitido ningún datohasta la recepción de un mensaje que indica la disponibilidad de la ventana detransmisión.

4.3.1.- APERTURA DE UN CANAL

Cuando uno de los lados desea abrir un nuevo canal, éste asigna un númerolocal para el canal. Luego envía el siguiente mensaje al otro lado, incluyendo en elmismo dicho número y el tamaño inicial de la ventana.

Page 13: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

SSH_MSG_CHANNEL_OPEN (byte)channel type (restricted to US-ASCII) (string)sender channel (booleano)initial window size (entero de 32 bits)maximum packet size (entero de 32 bits)

...channel type specific data follows

Luego el lado remoto decide si puede abrir el canal, y responde con losiguiente:

SSH_MSG_CHANNEL_OPEN_CONFIRMATION (byte)recipient channel (entero de 32 bits)sender channel (entero de 32 bits)initial window size (entero de 32 bits)maximum packet size (entero de 32 bits)

...channel type specific data follows

donde “recipient channel” es el número de canal dado en el requerimiento deapertura original, y “sender channel” es el número de canal asignado por el otro lado,o en lugar de “CONFIRMATION”, envía “FAILURE” (fracaso). Esto ocurre si elreceptor no soporta el tipo de canal especificado.

4.3.2.- TRANSFERENCIA DE DATOS

El tamaño de la ventana especifica cuantos bytes puede enviar la otra parteantes que ésta deba esperar que la ventana sea ajustada. Ambas partes usan elsiguiente mensaje para realizar dicho ajuste.

SSH_NSG_CHANNEL_WINDOW_ADJUST (byte)recipient channel (entero de 32 bits)data (string)

Algunos canales pueden transferir distintos tipos de datos. Un ejemplo es eldato stderr para seciones interactivas. Tales datos pueden ser transferidos con elmensaje SSH_MSG_CHANNEL_EXTENDED_DATA donde un número entero indicael tipo de dato. los distintos tipos permitidos dependen del tipo de canal.

SSH_MSG_CHANNEL_EXTENDED_DATA (byte)recipient_channel (entero de 32 bits)data_type_code (entero de 32 bits)data (string)

4.3.3.- CLAUSURA DE UN CANAL

Cuando una de las partes no va a enviar mas datos por un largo período alcanal, ésta “DEBERÍA” enviar el mensaje SSH_MSG_CHANNEL_EOF.

Page 14: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

SSH_MSG_CHANNEL_EOF (byte)recipient_channel (entero de 32 bits)

Notar que el canal permanece abierto después de dicho mensaje, y mas datospueden ser enviados en la otra dirección. Este mensaje no consume espacio en laventana y puede ser enviado inclusive si no hay espacio disponible en la ventana.

Cuando una de las partes desea culminar con el canal, ésta envíaSSH_NSG_CHANNEL_CLOSE. El canal es considerado cerrado por una de laspartes cuando esta a enviado y recibido SSH_NSG_CHANNEL_CLOSE , y de estamanera puede dar un nuevo uso al número de canal. La parte “PUEDE” enviarSSH_NSG_CHANNEL_CLOSE sin haber enviado o recibido el mensajeSSH_NSG_CHANNEL_EOF.

SSH_NSG_CHANNEL_CLOSE (byte)recipient_channel (entero de 32 bits)

Este mensaje no consume espacio de ventana y puede ser enviado inclusivesin disponibilidad de espacio.

4.4.- SESIONES INTERACTIVAS

Una sesión es una ejecución remota de un programa. Dicho programa puedeser una aplicación, un comando de sistema, etc. Múltiples sesiones pueden seractivadas simultáneamente.

4.4.1.- APERTURA DE SESION

Una sesión comienza enviando el siguiente mensaje:

SSH_NSG_CHANNEL_OPEN (byte)“session” (string)sender channel (entero de 32 bits)initial window size (entero de 32 bits)maximum packet size (entero de 32 bits)

4.5.- CONSIDERACIONES DE SEGURIDAD

Se asume que este protocolo corre por encima de una capa de transportesegura y autenticada. La autenticación del usuario y protección contra ataques a lared, es provista por protocolos subyacentes.

Page 15: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXOS

Anexo 1: Recomendaciones de aleatoriedadpara seguridad

Anexo 2: Codificación UTF - 8

Anexo 3: Algoritmo cifrador “Blowfish” y“Twofish”

Anexo 4: MAC (Código de autenticación de mensaje)

Anexo 5: Protocolo de certificación X.509

Anexo 6: Esquema resumen de conexión SSH

Page 16: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Anexo 1: Recomendaciones de aleatoriedad para seguridad

Page 17: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXO.1. RECOMENDACIONES DE ALEATORIEDAD PARA SEGURIDAD

A1.1.- INTRODUCCIÓN

Los sistemas de seguridad son construidos en base a fuertes algoritmoscriptográficos. La seguridad de ellos depende en la generación de números secretospara passwords, claves criptográficas. Es muy usado los sistemas de pseudo-aleatoriedad, proporcionando pseudo-seguridad.

Es importante tener en cuenta que el requerimiento principal para los datossecretos, es que el adversario posea una muy baja probabilidad de determinarlos.

A1.2.- REQUISITOS

Probablemente el requisito mas común de aleatoriedad es el password.Usualmente es una simple cadena de caracteres. Obviamente si el password puedeser adivinado, no provee seguridad.

Otros requisitos provienen del campo de la criptografía. Dichas técnicas sonmuy usadas para una variedad de servicios tales como confidencialidad yautenticación. Tales servicios, como s conocido, esa basado en “claves”, que debenser indescifrables por un posible adversario.

En algunos casos, tal como en el uso de encriptado simétrico (ej: DES), laspartes que desean comunicarse o autenticarse, deben conocer la misma clavesecreta. En los casos de encriptado asimétrico o “clave pública” (ej: RSA), las clavesse producen de a pares. Una es la privada, secreta para una de las partes, y otra esla pública, la cuál es publicada para todo el mundo. Es computacionalmenteimposible hallar la clave privada mediante la pública.

En la mayoría de los casos, un adversario podría intentar determinar la clavesecreta por el método simple de prueba y error. La probabilidad que éste tenga éxitoes muy baja en general. El tamaño del espacio donde el adversario debe buscar, estárelacionado al contenido de “información” presente, desde el punto de vista de lateoría de la información. Como es sabido, ésta depende de la cantidad de clavesposibles y la probabilidad de cada valor:

bits p pii

= − ×∑ 2 log( )

donde i varía entre 1 y el número de valores secretos posibles y pi es la probabilidaddel valor numerado i.

A1.3.- SECUENCIAS PSEUDO-ALEATORIAS TRADICIONALES

La mayoría de las fuentes tradicionales de números aleatorios usan fuentesdeterminísticas de números pseudo-aleatorios .

Page 18: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Una técnica típica de generación de números pseudo-aleatorios, es dearitmética modular donde el valor N+1, es calculado del N-ésimo valor mediante:

V V a b cN N+ = × +1 ( ) mod( )

Dicha técnica tiene una fuerte relación con los generadores pseudo-aleatoriosmediante registros de desplazamiento, muy usados criptograficamente.

Lo beneficioso de esta generación tradicional, es medida mediante testestadísticos. La elección precisa de los valores iniciales de V ,a,b y c, puedenproducir excelentes resultados estadísticos.

A1.4.- FUNCIONES MEZCLA

Una función mezcla fuerte es una que combina dos o más entradas y produceuna salida, en la cual cada bit de salida es producto de una función no-linealcompleja de todos los bits de entrada. Como promedio, si se cambia un bit deentrada, se produce un cambio de aproximadamente la mitad de los bits de salida.Pero como la relación no es lineal y es compleja, no se puede garantizar el cambio deun bit de salida en particular, cambiando un bit de entrada.

Un ejemplo de estas funciones es el estándar de encriptado de datos delgobierno de USA (DES). Éste toma 120 bits de entrada (64 de datos y 56 de clave), yproduce 64 bits de salida cada uno, los cuales dependen de una función no-linearcompleja de todos los bits de entrada.

Otra familia conocida de estas funciones son los “resúmenes de mensajes” ofunciones de Hash, ales como el estándar SHS y las series MD2, MD4, MD5. Dichasfunciones toman una cantidad arbitraria de entradas y producen una salida mezcladade todos los bits de entrada. Las series MD* producen 128 bits de salida, mientrasque el SHS produce 160 bits.

Page 19: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Anexo 2: Codificación UTF - 8

Page 20: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXO.2. CODIFICACIÓN UTF-8

A2.1.- INTRODUCCIÓN

El estándar Unicode, versión 1.1, y el ISO/IEC 10646 juntamente definen unset de caracteres de 16 bits, UCS-2, el cual abarca la mayoría de los sistemas deescritura del mundo. Tanto UCS-2 como UCS-4 (set de 31 bits), son difíciles de usaren muchas aplicaciones y protocolos, ya que la mayoría asume caracteres de siete uocho bits. Aún los nuevos sistemas que permiten trabajar con 16 bits no puedenprocesar datos UCS-4. Debido a ello, se desarrolló el UTF (formatos detransformación UCS).

UTF-8 usa todos los bits de un octeto, pero posee la cualidad de preservar elrango completo del ASCII.

El UTF-8 fue un proyecto de X/Open Joint Internationalization Group XOJIG,con el objetivo de especificar un sistema de archivos seguro, compatible con sistemasUNIX.

A2.2.- DEFINICIÓN DE UTF-8

En UTF-8, los caracteres son codificados usando secuencias de 1 a 6 octetos.En una secuencia de n octetos, n>1, el octeto inicial tiene el n-ésimo bit de ordensuperior seteado en 1, seguido por un bit seteado en 0. Los bits restantes de dichoocteto, contienen bits del valor del carácter a ser codificado. Cuando se trata de unocteto único, el bit de mayor orden es seteado a 0, y los 7 bits remanentes se usanpara la codificación.

La tabla siguiente resume el formato de los diferentes tipos de octetos. Laletra X indica los bits disponibles para los bits codificados.

UCS-4 (hex.) Secuencia de Octetos UTF-8 (binario)0000 0000 - 0000 007F 0xxxxxxx0000 0080 - 0000 07FF 110xxxxx 10xxxxxx0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx

0001 0000 - 001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx0020 0000 - 03FF FFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx

10xxxxxx0400 0000 - 7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx

La codificación de UCS-4 a UTF-8 es realizada de la siguiente manera:

a) Se determina la cantidad de octetos requeridos según el valor del carácter y la primer columna de la tabla anterior.

b) Se setean los correspondientes bits de orden superior.

Page 21: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

c) Se comienzan a llenar los bits marcados con x, comenzando desde los de menor orden, poniendo el primero en el último octeto.

Page 22: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Anexo 3: Algoritmo cifrador “Blowfish” y“Twofish

Page 23: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXO.3. ALGORITMO CIFRADOR “BLOWFISH” y “TWOFISH”

A3.1.- BLOWFISH

A3.1.1- Introducción

El DES ha sido siempre el “caballito de batalla” de los algoritmos decriptografía, llevando el estándar 19 años. El diseño en el año 1995 de una máquinade u$s 1 millón que es capaz de hackear una clave DES en 3,5 horas, confirma loconocido por todo el mundo: El tamaño de clave del DES es muy pequeño para elmundo de hoy.

El mundo confía en el DES porque fue publicado como estándar, y porquesobrevivió a 20 años de criptoanálisis en el mundo entero. La criptografía es así: Laconfianza en un algoritmo crece a medida que un grupo tras otro intenta quebrarlo yfalla.

Los candidatos para reemplazarlo son el Triple-DES, IDEA (usado en PGP),el BLOWFISH y el TWOFISH.

El BLOWFISH es un cifrador de bloques, con tamaño del mismo de 64 bits yclave de tamaño máximo de 448 bits (contra los 56 bits de clave del DES).

El TWOFISH es una evolución del anterior, con funciones mas complejas ylongitud de bloque de 128 bits.

A3.1.2.- Decisiones de diseño

Basado en parámetros usados para estándares de algoritmos de encriptado,se diseño BLOWFISH con las siguientes características:

• Manipulación de datos en grandes bloques, preferentemente de 32 bits detamaño.

• Poseer tamaño de bloque de 64 bits o 128 bits (esta última es la versión Twofish).

• Poseer clave escalonada, desde 32 a 256 bits.

• Uso de operaciones simples

• Número variable de iteraciones (para aplicaciones con claves pequeñas).

A3.1.3.- Descripción del algoritmo

BLOWFISH es un cifrador de bloques de 64 bits, con clave de longitudvariable. El algoritmo consiste en dos partes:

• Parte de expansión de clave

• Parte de encriptado de datos

Page 24: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

La primer parte, convierte la clave de a lo sumo 448 bits, en varios arreglos desubclaves , totalizando 4168 bytes.

El encriptado de datos ocurre vía una red de Feistel de 16 ciclos. Cada unoconsiste en una permutación dependiente de la clave, y una sustitución dependientede la clave y los datos. Todas las operaciones son XORs y sumas de palabras de 32bits. La única operación adicional es 4 búsquedas en tablas indexadas en arreglos dedatos por ciclo (cajas S).

Antes de continuar, explicaremos someramente que es una red de Feistel.Dicha red es un método de transformación de una función (usualmente llamadafunción F), en una permutación. Fue inventada por Horst Feistel en su diseño deLucifer, y ha sido usada en la mayoría de los diseños de cifradores de bloques, talescomo: DES, FEAL, GOST, LOKI, CAST y BLOWFISH.

El bloque fundamental de una red de Feistel es la función F: unatransformación , dependiente de la clave, de una cadena de entrada en una cadenade salida. La función F es no-lineal e irreversible. A continuación daremos algunasdefiniciones que caracterizan a estas redes:

Definición 1: La función F de una red convencional de Feistel se puede expresarcomo:

{ } { } { }Fn

kn

: , , ,0 1 0 1 0 12 2× →

En esta definición, n es el tamaño del bloque. F es una función que toma n/2bits y k bits de la clave como entradas, y produce una salida de longitud n/2 bits.

Definición 2: Un ciclo de la función F de una red convencional de Feistel se puedeexpresar como:

( )( ) ( )( ) ( )X F msb X lsb X msb Xi k n i n i n ii+ = ⊕1 2 2 2/ / /

Donde Xi es la entrada al ciclo, Xi+1 es la salida del ciclo, ki es la clave, n es lalongitud del bloque, lsbu (x) y msbu (x) selecciona el menor y el mayor bit significativosrespectivamente, la suma es una suma en mod-2, y las barras indican concatenación.En cada ciclo, msbn/2 (xi) opera, vía una función no-lineal F, dependiente de la clave,sobre lsbn/2 (xi). Normalmente a esto se lo llama la “mitad izquierda” opera sobre la“mitad derecha”.

La seguridad en este tipo de redes está basada en la iteración de la función F.El número de ciclos requeridos para resistir un ataque, es dependiente de laspropiedades de la función.

SUBCLAVE:

BLOWFISH usa un gran número de subclaves. Dichas claves deben serprecomputadas antes de cualquier encriptado o decriptado de datos.

Page 25: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

1) El arreglo “P” consiste en 18 subclaves de 32 bits:P1, P2,......, P18.

2) Existen 4 cajas “S” con 256 entradas cada una:

S1,0, S1,1,..., S1,255;S2,0, S2,1,..., S2,255;S3,0, S3,1,..., S3,255;S4,0, S4,1,..., S4,255;

El método exacto usado para calcular estas subclaves será descripto masadelante.

Recordar que una caja S , es un manejador de tablas de sustitución no lineal.Estas varían en tamaño de entrada y salida, y pueden ser creadas aleatoriamente opor medio de algoritmos.

ENCRIPTADO:

BLOWFISH es una red de Feistel de 16 ciclos. La entrada es un elemento dedatos de 64 bits, x.

Divide x into two 32-bit halves: xL, xRFor i=1 to 16:xL=xL XOR PixR= F (xL) XOR xRSwap xL and xRSwap xL and xR (Undo the last swap)xR= xR XOR P17xL= xL XOR P18Recombine xL and xR

Function FDivide xL into four eight-bit quarters: a, b, c, and dF(xL)= ((S1,a + S2,b mod 232 ) XOR S3,c) + S4,d mod 232

Page 26: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

X (64 bits)

XL (32 bits) XR (32 bits)

+ +Pi

F

++P18 P17

Salida Encriptada

un ciclo

15 ciclosmas

deshacer el último cambio

Como se aprecia en el esquema anterior, el algoritmo de encriptado realiza losiguiente:

1) Separa la entrada de 64 bits en dos bloque de 32 bits cada uno (xL y xR).

2) A xL se le aplica XOR con Pi , donde i indica el subíndice de los arreglos desubclaves P.

3) A xR se le aplica XOR con la salida de la función F, la cual toma como entrada a xL.

4) Luego se canjea de lugar xL con xR.

5) Esto se efectúa durante 15 veces mas, dejando el último ciclo sin canjear.

Page 27: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

6) Luego se XORea con P18 y P17 respectivamente y por último se los concatena, formando la salida de 64 bits encriptada.

El descifrado es exactamente lo mismo, excepto que P1, P2,...., P18 sonusadas en orden inverso.

GENERACIÓN DE SUBCLAVE:

Las subclaves son calculadas usando el algoritmo Blowfish. El método exactoes el siguiente:

1) Primero se inicializa los arreglos P y las cajas S, en orden, con una cadena fija. Dicha cadena consiste en los dígitos hexadecimal de pi. Por ejemplo:

P1 = 0x243f6a88P2 = 0x85a308d3P3 = 0x13198a2eP4 = 0x03707344

2) Realizar XOR de P1 con los primeros 32 bits de la clave, XOR de P2 con los segundos 32, y así sucesivamente para todos los bits de la clave. Para claves cortas, existe al menos una clave equivalente larga. Por ej: si A es clave de 64

bits, entonces AA, AAA, etc, son claves equivalentes.

3) Encriptar una cadena de todos ceros, con Blowfish, usando las subclaves descriptas en 1) y 2).

4) Reemplazar P1 y P2 con la salida del paso 3).

5) Encriptar la salida del paso 3) usando el algoritmo Blowfish con las subclaves modificadas.

6) Reemplazar P3 y P4 con la salida del paso 5).

7) Continuar el proceso, reemplazando las entradas del arreglo P, y luego las 4 cajas S en orden, con las salidas del algoritmo Blowfish.

En total son requeridas 521 iteraciones para generar todas las subclaves.

A3.2.- TWOFISH

A3.2.1.- Introducción

Como mencionamos Twofish es un cifrador de bloques de 128 bits, aceptandoclaves variables hasta 256 bits. El cifrador es una red de Feistel de 16 ciclos con una

Page 28: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

función biyectiva F construída de 4 cajas S, dependientes de la clave. Dichas cajasson de 8x8 bits. También contiene rotaciones, transformaciones, que veremos masadelante.

A3.2.2.- Bloques de implementación

Como dijimos anteriormente Twofish se basa en una red de Feistel de 16ciclos. (anteriormente describimos que era una red de Feistel).

También incorpora cajas “S”. Estas cajas, son manejadores de tablas nolineales de sustitución usadas en la mayoría de los cifradores de bloques. Twofishusa cuatro cajas “S” diferentes , dependientes de la clave, de 8x8 bits.

Otra componente son las Matrices de Máxima Distancia Separable (MDS).Un código MDS sobre un campo, es una transformación lineal desde los elementos adel campo, hacia los elementos b, produciendo un vector compuesto de a+belementos con la propiedad que el número mínimo de elementos distintos de cero encualquier vector distinto de cero es al menos b+1. Estas transformaciones pueden serrepresentadas mediante una matriz de a x b elementos. Un caso de MDS es el códigocorrector de errores Reed-Solomon (RS). Una condición necesaria y suficiente paraque una matriz a x b sea MDS es que todas las submatrices cuadradas posiblesobtenidas por descarte de filas y columnas no sean singulares.

Twofish usa una matriz MDS de 4 x 4 sobre un campo GF (2 8 ).

Otro componente de este algoritmo es la Transformada Pseudo - Hadamard(PHT). Esta es una operación de mezcla que mediante software es de rápidavelocidad. Dadas 2 entradas a y b, la PHT de 32 bits está definida como:

′ = +a a b mod 2 32

′ = +b a b2 232mod

Twofish usa PHT de 32 bits para mezclar las salidas desde sus 2 funciones gparalelas de 32 bits.

El “Blanqueado” (Whitening) es una técnica que consiste en XORear clavesantes del primer ciclo y después del último. Se demuestra que esta técnicaincrementa substancialmente la dificultad de posibles ataques. Twofish XORea 128bits de subclave antes del primer ciclo de Feistel y otros 128 bits después del último.Dichas subclaves son calculadas de la misma manera que se calculan las subclavesde los ciclos. La diferencia es que son utilizadas solo para ese fin.

Twofish calcula las subclaves mediante una organización compleja.

Page 29: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

A3.2.3.- El Algoritmo Twofish

La figura 1 muestra un esquema del cifrador de bloques Twofish. Comodijimos anteriormente usa como estructura una red de Feistel de 16 ciclos, con unblanqueado adicional de la entrada y salida.

El texto plano es dividido en 4 palabras de 32 bits cada una. En la entrada hayun “blanqueado”, el cual XORea la entrada con 4 palabras claves. En cada ciclo las 2palabras de la izquierda son usadas como entrada de las funciones g. (Una de ellases rotada primero en 8 bits). La función g consiste en 4 cajas “S” de 4 bytes deancho, dependientes de la clave, seguidas por un paso de mezcla lineal basado enuna matriz MDS. El resultado de las 2 funciones es luego combinado usando unatransformada PHT, sumándoseles 2 palabras claves. Estos 2 resultados sonXOReados con las palabras de la derecha (una de las cuales es rotada a la izquierdaen 1 bit). Luego la parte izquierda y derecha son cambiadas de posición para elpróximo ciclo. Antes de culminar los ciclos, el cambio de posición del último esinvertido y las 4 palabras son XOReadas con otras 4 palabras claves para producirasí el texto cifrado.

A3.2.4.- La función F

La función F es una permutación dependiente de la clave sobre valores de 64bits. Esta tiene 3 argumentos; 2 palabras de entrada R0 y R1; y el número de ciclo r,usado para seleccionar la subclave apropiada. R0 es pasada a través de la función g,dando como resultado T0. R1 es rotada a la izquierda en 8 bits y luego pasada através de la función g para dar T1. Dichos resultados son combinados en la PHT,adicionándoles luego 2 palabras claves.

T g R

T g ROL R

F T T K

F T T Kr

r

0 0

1 1

0 0 1 2 832

1 0 1 2 932

8

2

2 2

==

= + +

= + ++

+

( )

( ( , ))

( ) mod

( ) mod

donde (F0,F1) es el resultado de F.

A3.2.5.- La función g

La función g forma el corazón de Twofish. La palabra de entrada X es divididaen 4 bytes. Cada byte es pasado por una caja “S” de 8 bits de entrada y 8 bits desalida. Los 4 resultados son interpretados como un vector de longitud 4 sobre uncampo GF(28) y multiplicado por la matriz 4x4 MDS (usando dicho campo para loscálculos). El vector resultado es interpretado como una palabra de 32 bits, la cuál esel resultado de g.

Page 30: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

xX

y s x

i i

i i i

=

=

228

8mod

i = 0 3,... ,

z

z

z

z

EF B B

B EF EF

EF B EF

EF EF b

y

y

y

y

0

1

2

3

0

1

2

3

01 5 5

5 01

5 01

01 5

=

.

Donde la matriz Z es la salida, que es la multiplicación de la matriz Y con lamatriz MDS (los valores están en haxadecimal).

A3.2.6.- Generación de Subclaves

El sistema de generación de subclaves, provee 40 palabras expandidas de laclave K0, ..., K39. Twofish está definido para claves de N = 128, N=192 y N=256 . Lasclaves de longitud menor a 256 bits pueden ser usadas mediante el rellenado de lasmismas con ceros. La generación de estas claves es bastante compleja ,involucrando la multiplicación de una matríz derivada de un código Reed - Solomon(RS).

RS

A A DB E

A F E C E

A FC C AE D

A A DB E

=

01 4 55 87 5 58 9

4 56 82 3 1 6 68 5

02 1 1 47 3 19

4 55 87 5 58 9 03

Page 31: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Figura 1: Esquema del algoritmo de encriptado Twofish.

Page 32: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Anexo 4: MAC (Código de autenticación de mensaje)

Page 33: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXO.4. MAC (CÓDIGO DE AUTENTICACIÓN DE MENSAJE)

A4.1.- INTRODUCCIÓN

Verificar la integridad y autenticidad de la información, es una necesidadprimaria en los sistemas de computación y redes. En particular, 2 partes que secomunican sobre un canal inseguro, requieren un método por el cual la informaciónenviada por una de las partes, pueda ser validada y autenticada por la otra.

Comúnmente dicho mecanismo está basado en una clave secreta compartidaentre las partes, tomando la forma de un Código de Autenticación de Mensaje(MAC). En este caso, cuando una parte A transmite un mensaje a la parte B, ésteadjunta al mensaje un valor llamado Etiqueta de Autenticación (Tag), computadapor el algoritmo MAC como una función de la información transmitida y la clavesecreta compartida.

En el lado receptor, B recalcula la Tag del mensaje recibido usando el mismomecanismo (y clave) y comprueba que el valor que obtiene sea igual a la etiquetaanexada al mensaje recibido.

MACG MACV

msg

msg msg’

tag

k k

tag’

OK

NOT-OK

Emisor “S” Receptor “R”

Figura 1: Ejemplificación de MAC. El MACG (generador) puede ser probabilístico. Por otro lado, el MACV(verificador) debe ser siempre determinístico.

Los MACs, tradicionalmente han sido construidos con cifradores de bloques,tal como el DES. Los mas populares son el CBC - MAC, y el XOR - MAC.Recientemente se ha estado construyendo MACs de funciones criptográficas Hash,tal como el MD5 y SHA-1. Dichos tres grupos serán tratados a continuación.

Page 34: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

A4.2.- CBC - MAC (CIPHER BLOCK CHAINING MESSAGE AUTHENTICATION CODE)

A.4.2.1.- Esquema general.

La construcción mas común de MAC, es usando la idea de “cifrado porbloques en cadena”. Antes de entrar en el estudio del mismo, daremos algunas

notaciones. Dada una función { } { }fl l

: , ,0 1 0 1→ y un número m >= 1, llamamos

{ } { }f m ml l( ) : , ,0 1 0 1→ , la función que transforma el ml-bit de entrada x=x1 .... xm

(donde x li = ) en una cadena de l -bit.

( )f x x f f f f x x x xmm m m

( ) ... ( (... ( ( ) ) ... ) )1 1 2 1= ⊕ ⊕ ⊕ ⊕−

Llamamos f (m) al cifrador de bloque en cadena de f. Ahora, un cifrador debloque F con clave de longitud k y tamaño de bloque l , especifica una familia de

permutaciones { } { }f al l

: , ,0 1 0 1→ , una por cada k - bit de la clave a. El CBC MAC

construido a partir de F , tiene un parámetro asociado s=<l , el cuál es el número debits de salida. El CBC MAC es entonces definido para cualquier cadena de ml - bitsx=x1 .... xm por:

cbc mac x xaF

m

def

− =( ... )1 Los primeros s bits de f x xam

m( ) ( ... )1

Como fue mencionado, el CBC MAC es un estándar internacional. El máspopular es el que usa F= DES (Data Encryption Standard; k=56 y l=64) y s= 32.

DES DESDES DESk k k k

x1x2 x3 xm

Truncadoa 32 bitsMACk (x)

Figura 2: Diagrama del DES - CBC - MAC (ANSI X9.9, ISO 9797)

Page 35: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

A.4.2.2.- Seguridad

Ahora estudiaremos la seguridad del CBC MAC. Según el punto de vista deRackoff y Luby sobre el DES, ellos sugieren suponer a un cifrador de bloques comouna función pseudoaleatoria (PRF). Una familia de funciones { }F f a= es una

familia de funciones pseudoaleatorias, si la transferencia entrada/salida parece seraleatoria para alguien que no conoce la clave a.

Un MAC seguro debe resistir cualquier tipo de falsificación proveniente de unataque al mensaje. Si F es una función pseudoaleatoria, cuya familia es F (m), lafamilia de funciones f (m) para f F∈ , es ella misma una familia de funcionespseudoaleatorias. Se demuestra que el PRF hace automáticamente seguro la MAC.

Para evaluar la seguridad, definiremos los parámetros de interés: el tiempo decorrida t del adversario; el número de consultas q que el adversario realiza a unabase para acceder a f (.); y el provecho del adversario ε , sobre una simplesuposición.

MACG

MACk (msg1)

MACV

MACk (msg2)

MACk (msgq)

k

OK

kE

msg *

tag*

...

msg1

msg2

msgq

...

Figura 3: Una MAC es (t,q,ε) - segura, si ningún adversario puede engañar con probabilidad >= ε en untiempo =< que t, con =< q consultas.

Page 36: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Se asume que un adversario A puede quebrar a F (m) en (t,q,ε). Esto significaque A, corriendo en un tiempo t y realizando q consultas en su base, obtiene éxitocon probabilidad ε en distinguir un componente aleatorio de F (m) desde una funciónaleatoia de ml - bits a l - bits.

Supongamos que F es un cifrador de bloques con seguridad (t,q,ε ). Entonces es demostrable que la CBC MAC (t’,q’, ε ‘ ) − segura, para:

t ‘= t, q ‘=qm, ′ = + +ε ε3

2

2 2

1

q ml

De esta manera la CBC MAC deja de ser segura para qm = 2 l/2 (por ej. para1.000.000 de msgs, cada uno de longitud de bloque 1.000.000).

A4.3.- XOR MAC

A.4.3.1.- Introducción

A principios de los ‘90 otro tipo de MAC ha empezado a tomar vigencia: éstasson construidas por sistemas de claves usando unciones de hash, tales como enMACa (x)= MD5 (x,a).

Los esquemas XOR son métodos que posee grandes ventajas en cuanto aeficiencia y seguridad. Son simples de describir e implementar. Ellos usan comoprincipio alguna función pseudoaleatoria (PRF). En particular, como vimosanteriormente, una PRF finita puede definirse desde un cifrador de bloques (ej. DES),o desde una función de compresión de una función de hash (ej. MD5).

La XOR MAC, consiste en tres pasos fundamentales:

• Codificación del mensaje M como una colección de bloques (cada bloquedependerá de unos pocos bits del mensaje).

• Aplicación de la PRF a cada bloque, creando una colección de imágenes PRF (laclave de MAC a es el índice de todas esas computaciones de PRF).

• Se le aplica XOR al set de imágenes PRF, obteniendo así la salida de MAC.

Existen diferentes tipos de XOR MACS, y se identifican por las distintasformas de codificar y las diferentes PRF elegidas.

Page 37: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

En este caso especificaremos, para cada familia de PRF, con cada tamaño debloque b, dos XOR MACs: la llamada XMACRF,b , la cuál es probabilística; y ladeterminística llamada XMACCF,b .

A4.3.2- Los Esquemas

Comenzaremos presentando los dos esquemas, usando DES. Otras formasson posibles, usando otros cifradores de bloques, o métodos tales como MD5.

Consideremos entonces l=64 y L=48. Para cada uno de los 56 bits de clave ay los l bits del texto plano x, tendremos Fa (x), que son los primeros L bits de DESa (x).Consideramos la salida de Fa (x), de 48 bits y no la salida de 64 bits del DES. Esto esporque el DES es una permutación pseudoaleatoria, mientras que nuestro objetivo esuna función pseudoaleatoria. El emisor y receptor, comparten una clave de 56 bits, talcomo lo especifica el DES - Fa.

Como notación asumiremos la longitud M es múltiplo de 32 bits, la cuál selleva a cabo mediante un relleno de bits. (por ej. poniendo un uno y después ceros).

Luego el mensaje es visto como una secuencia de bloques de 32 bits,

[ ] [ ]M M M n= 1 ... con [ ]M i = 32 para i=1,...,n. Asumimos que el número de bloques

n es menor que 231, equivalentemente M ≤ × =32 2 231 36 bits, lo cuál no es unarestricción significante en la práctica.

Definimos <i>, a la representación binaria del número de índice del bloque{ }i n∈ 1,..., como una cadena de exactamente 31 bits (es por ello la acotación del

número de bloques en 231 bits). Damos por lo tanto los siguientes esquemas:

Esquema XMACR. Este esquema es también llamado “esquema aleatorio XOR”.Para autenticar el mensaje [ ] [ ]M M M n= 1 ... , realiza lo siguiente:

• Toma una cadena aleatoria r de 63 bits.

• Calcula ( ) [ ]( ) [ ]( ) [ ]( )z F r F M F M F n M na a a a= ⊕ ⊕ ⊕ ⊕0 1 1 1 1 2 2 1. . . . . ... . .

• Pone la MAC de M al par µ = ( r, z ).

Luego el emisor transmite ( M,µ ). El receptor recibe ( M’,µ’ ), donde µ’=( r’, z’ ),y computa ( ) [ ]( ) [ ]( ) [ ]( )z F r F M F M F n M na a a a= ′ ⊕ ′ ⊕ ′ ⊕ ⊕ ′0 1 1 1 1 2 2 1. . . . . ... . . .El

receptor, por lo tanto, acepta M’ si y solo si z = z’. Cabe destacar que cada vez queel emisor quiere autenticar un mensaje, se genera un nuevo set de númerosaleatorios. En la figura 4 muestra el esquema de XMACCR.

Esquema XMACC. Este esquema también es llamado “esquema XOR basado encontador”. Aquí se requiere que el emisor mantenga un contador C de 63 bits, el cualse inicializa con 0 y es incrementado para cada mensaje (por lo tanto pueden ser

Page 38: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

firmados hasta 263 mensajes). Para autenticar el mensaje [ ] [ ]M M M n= 1 ... , se hace

lo siguiente:

• Se incrementa el contador C en 1.

• Se calcula ( ) [ ]( ) [ ]( ) [ ]( )z F C F M F M F n M na a a a= ⊕ ⊕ ⊕ ⊕0 1 1 1 1 2 2 1. . . . . ... . .

• Pone la MAC de M al par µ = ( C, z ).

Luego el emisor transmite ( M,µ ). El receptor recibe ( M’,µ’ ), donde µ’=(C’, z’),y computa ( ) [ ]( ) [ ]( ) [ ]( )z F C F M F M F n M na a a a= ′ ⊕ ′ ⊕ ′ ⊕ ⊕ ′0 1 1 1 1 2 2 1. . . . . ... . . , y

acepta si dicho valor es igual a z’. Notar que el contador es incluido en la firma.

F F F F

x=x1 x2 ... xm

0 1 1 1aleatorio <1> x1 <2> <m>x2 xm

k k kk

Etiqueta

1 63 32311 1 131 3132 32

Figura 4: Esquema de XMACCR

El diagrama de XMACC es idéntico al anterior, con la salvedad que en lugarde lo aleatorio del primer bloque, va el contador antes mencionado.

Page 39: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

A4.3.3- Seguridad

Supongamos que F (ej. DES) es un cifrador de bloque con seguridad (t, q, ε ).Luego el adversario consulta sobre la MAC de q mensajes, cada uno de bloques dem l-bits.

Entonces la XMACR tiene seguridad (t’, q’, ε’), para:

t ‘= t, q ‘=(q + 1)m, ′ = ++

ε ε2 1

2

2ql

Lo cual marca que XMACR es superior en cota de seguridad que CBC MAC.

Con respecto a XMACC, se dice que ésta tiene seguridad (t’, q’, ε’), para:

t ‘= t q ‘=(q + 1)m, ′ = +ε ε 1

2l

Se muestra entonces que en este caso la cota de seguridad es óptima,superando a los otros dos casos.

A4.4.- FUNCIONES DE HASH PARA MACs (HMAC Y NMAC)

En general se prefiere la construcción de MACs basadas en funciones dehash (ej. MD5 o SHA), debido a que éstas son mas rápidas que los cifradores debloques en implementaciones por software.

Las funciones de hash, como ya es conocido, son funciones que transformancadenas de diferentes longitudes a salidas de tamaños fijos y cortos. Estasfunciones, por ej. MD5 o SHA-1, son designadas para ser resistentes a la colisión.

Esto significa que si representamos dicha función por F, entonces debería serimposible para un adversario encontrar dos cadenas x y x’ tal que F(x) = F(x’). Laprincipal motivación de dichas funciones es la de ser combinadas con firmas digitales,con el objeto de hacerlas menos vulnerables y mas eficientes.

Una metodología particular para la construcción de una función de hashresistente a la colisión fue propuesta por Merkle. Dicha metodología forma la basepara el diseño de las funciones de hash mas comunes como MD5 y SHA-1. Estabasado en un componente básico llamado función de compresión, la cual procesaentradas de longitud fija, y luego es iterada en orden de hashear arbitrariamentegrandes entradas. Tal función de compresión, que la designaremos con la letra f,acepta dos entradas: una cadena variable de longitud l y un bloque de datos delongitud b. (Para MD5 y SHA-1) tenemos b = 512, l = 128 para MD5 y l = 160 paraSHA-1).

Page 40: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

fl bitsl bits

b bits

Figura 5 : Función de compresión. (b=512, l=128 en MD5)

La operación de la función de hash iterativa es la siguiente. Primero, un bit bde valor IV es fijado. Luego, una entrada es hasheada mediante iteraciones de lafunción de compresión. Esto es, si x= x1, x2, ..., xn es la entrada, donde los xi sonbloques de longitud b cada uno y n es un número arbitrario de bloques, entoncesx xn+ =1 será la longitud del mensaje. El valor de la función iterada F sobre x es hn+1

donde h0 = IV y hi = f (hi-1 , xi ) para i=1,2,...,n+1.

fIV

x1

f

x2...

... f

xn

f

x

F (x)

Figura 6: Construcción de una función de hash iterativa dada una función de compresión f. La entrada xde la última iteración, ilustra el anexo de la longitud del mensaje tal como en MD5 y SHA-1.

La motivación por estas estructuras iterativas, proviene de la observación quesi una función de compresión es resistente a la colisión, entonces también lo será lafunción de has iterada resultante. De esta manera, estas estructuras proveen uncriterio de diseño general para funciones de hash resistentes a colisión.

A4.4.1- NMAC (La construcción anidada)

Presentaremos una básica construcción de NMAC. Llamaremos fk y Fk lasversiones con claves de las funciones de compresión y su función iterada dadas en lasección anterior.

Page 41: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

A4.4.2- La función NMAC

Sea k = ( k1, k2 ) donde k1 y k2 son claves hacia F (ej. cadenas aleatorias delongitud l cada una ). Definimos una función MAC, NMAC(x), la cuál funciona sobreentradas x de longitud arbitraria como:

NMACk(x) = Fk1(Fk2(x))

Notar que dicha función actúa sobre la salida de una función iterada y por lotanto comprende solo una iteración de la función compresión. Eso es, que dichafunción es básicamente la función compresión fk1 actuando sobre Fk2(x) rellenadahasta llenar el tamaño del bloque.

A4.4.3- La función HMAC

Como vimos en la sección anterior, la construcción NMAC, requiere de accesodirecto al código para la función de compresión, de manera de codificar la IV. Talcambio es trivial para funciones con código bien estructurado como MD5. Decualquier modo, en algunos casos a uno le gustaría evitar esos cambios mínimos, yusar el código como es. A continuación presentamos una variante de NMAC queposee esa cualidad. Como ventaja adicional, dicha construcción involucra una solaclave k de longitud l-bit como contrapuesto a las dos diferentes claves que usaNMAC.

Sea F la función de hash iterada, inicializada con su IV. La función HMACfunciona sobre entradas x de longitud arbitraria, y usa una sola cadena aleatoria k delongitud l como clave:

HMAC x F k opad F k ipad xk ( ) ( , ( , ))= ⊕ ⊕

Donde k es la terminación de k por la adición de ceros hasta completar eltamaño del bloque de la función de hash iterada el cual es de b - bits, opad e ipadson dos constantes fijas de b - bits (o e i viene de interno y externo respectivamente),el operador suma es una Or exclusiva, y las comas representan concatenación de lainformación. Opad está formado por la repetición del byte x’36’ tantas veces comosea necesario para cubrir el bloque de b - bits, e ipad es definida similarmenteusando el byte x’5c’. (Por ejemplo en MD5 y SHA-1 dichos bytes se repiten 64 veces).

A4.4.4- Seguridad en HMAC y NMAC

La seguridad en HMAC está basada en la seguridad de NMAC. La principalobservación para relacionar dichas dos funciones y su seguridad, es que definiendo

k f k opad1 = ⊕( ) y k f k ipad2 = ⊕( ) , obtenemos que HMACk(x) = NMAC(k1,k2)(x).

Page 42: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

En otras palabras, la transformación anterior, convierte a HMAC en un caso particularde

NMAC, donde las claves k1 y k2 son “pseudoaleatorias” derivadas de k usando lafunción compresión f.

Desde el punto de vista de la implementación, se debe tener en cuenta queHMAC resulta una función mas lenta que NMAC, debido a que requiere doscomputaciones extras de la función compresión. Esto puede tener un efecto negativocuando se autentican largas cadenas de datos.

Se puede demostrar que tanto NMAC como HMAC proveen de buenaseguridad. El caso de ataque mas probable para estas funciones es el “Ataque deCumpleaños” , ya que es el mas usado para encontrar colisiones en funcionescriptográficas de hash. Dicho ataque requiere del conocimiento del valor de MAC enaproximadamente 2 l/2 mensajes (donde l es la longitud de la función de hash desalida). Para valores de l >= 128, el ataque se vuelve prácticamente inútil.

Page 43: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Anexo 5: Protocolo de certificación X.509

Page 44: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

ANEXO.5. PROTOCOLO DE CERTIFICACIÓN X509

A5.1.- INTRODUCCIÓN

Internet es un sistema abierto, donde la identidad de las personasinvolucradas en comunicación no es fácil de definir. Más aún, el camino decomunicación no es físico, y puede incluir posibilidad de interferencia activa. Por ellola comunicación debe pensarse de manera de proteger su integridad.

La solución es usar encriptado (para asegurar privacidad), y certificación(para asegurar que la comunicación ocurre entre dos puntos deseados).

La certificación se está expandiendo rápidamente debido al comercioelectrónico y la legislación de tomar las firmas digitales como instrumento deidentificación.

El problema que puede causar una mala certificación o la ausencia de lamisma, es el ataque del “hombre en el medio” , quién gana el control de los datos,accediendo a recursos. Es importante ver que dicho problema no desaparece con elencriptado o aún con un protocolo seguro tal como SSL. Es el caso de “IP spoofing”.

Como conclusión vemos que la flexibilidad y seguridad de una autenticaciónpuede ser implementada en buena manera introduciendo una tercera parte. Estatercera parte es confiable por todos para certificar la verdadera identidad de laspartes. Dicha parte es llamada CAs (Autoridad de certificación) y el sistema para elservicio de autenticación es llamado PKIs (Ifraestructura de clave pública).

A5.2.- X.509 y CAs

La recomendación ITU-T X.509, describe dos niveles de autenticación:autenticación simple, usando un password como verificación de identidad; yautenticación fuerte , comprendiendo credenciales llenadas con técnicascriptográficas. La segunda es la que tendremos en estudio. También define unaestructura para la provisión de servicios de autenticación, bajo un control central porun “Directorio”.

Dicho “Directorio” es implementado por la Autoridad de Certificación (CA).Existen entidades principales las cuales son reconocidas para los procedimientos decertificación:

• CA: Designación general para cada entidad que controla los servicios deautenticación y se encarga del gerenciamiento de los certificados. CA puede serpública (un banco que emite certificados para que sus clientes tengan acceso),comercial (un proveedor de servicios que vende certificados a las partes, comoVerisign), o privado, (compañía que emite certificados para sus empleados).

• Subscriptor: Es una entidad que proporciona a la CA información a ser incluida

en sus propios certificados, firmado por el CA. Usualmente esta información es endosada por el CA.

Page 45: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

A5.3.- CERTIFICADOS Y REQUISITOS DE CERTIFICACIÓN

Los certificados, como dijimos anteriormente, son documentos digitales deidentificación. Como los certificados de la vida real, éstos poseen un conjunto deatributos que definen el dueño del certificado. También vimos que una tercera partelo garantiza. Los atributos de un certificado son codificados de acuerdo a estándares,que en el caso que estamos analizando es el X.509.

Básicamente, un certificado consiste en nombres, para el sujeto y el emisor,una clave pública para el sujeto, y una firma.

La siguiente figura ilustra la estructura de un formulario de certificación.

VALIDEZNo Antes

No Despué s

INFO. CLAVE PÚBLICATamaño

TipoArchivo Clave Privada

FIRMAAlgoritmo de Firma

NOMBRE ALT. DE SUJETOIP

E-mail

LIMITACIONES BASICASCA

USO DE CLAVEFirma Digital

EXTENSIONES

CERTIFICADOArchivo de Salida

Nro. de SerieNombre del Sujeto - Nombre de Emisor

Explicaremos algunos de los términos mas comunes de las variables usadasen el formulario de certificación:

• Archivo de salida: Es el archivo con el certificado en formato binario. • Nro. de Serie: El nro. de serie es el único identificador del certificado bajo la

Autoridad de Certificación. Dicho número y el nombre del emisor pueden ser usados para revocar un certificado.

• Nombre del sujeto: Dicho nombre consiste en muchas partes, algunas de las

cuales son: País (ej: “C=FI”), nombre de la organización (ej: “O=SSH Communication Security”), unidad (ej: “OU=Marketing”), nombre común del sujeto (ej:”CN=Johnny Smith”).

• Nombre emisor: Semejante al anterior pero con los datos del emisor. • Nombres alternativos del sujeto: Esta extensión es usada por otros métodos de

nombramientos alternativos para el sujeto. Esto es el DNS del sujeto (Domain name server) (ej: “ssh.fi”) y e-mail del sujeto (ej: “[email protected]”).

• Archivo de Clave Privada: Es el nombre del archivo donde la clave privada del sujeto estará almacenada, en formato binario.

Page 46: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

• Tipo: Es el tipo de clave a producirse. Las posibles son RSA (tamaño mayor o

igual a 1024 bits) y DSA (tamaño igual a 1024 bits). • Tamaño: Tamaño de la clave en bits. • Algoritmo de Firma: Es el algoritmo de firma a ser usado. Ej: MD5 con encriptado

RSA,o DSA con SHA-1 • No antes: El día a partir del cual el certificado es válido. • No después: El día a partir del cual el certificado es inválido. • CA: Define si el certificado es uno CA o no.

La figura de la página siguiente ilustra como sería un formulario típico decertificado.

Page 47: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Certificate ::= {OutputFile ::= "test-ca-1.bin"

SerialNumber ::= 0SubjectName ::= <C=FI,O=SSH Communications Security\, Ltd., CN=Test CA>IssuerName ::= <C=FI,O=SSH Communications Security\, Ltd., CN=Test CA>Validity ::= {

NotBefore ::= "1998 Jul 30th, 19:30:00"NotAfter ::= "2000 Jan 1st, 12:00:00"

}PublicKeyInfo ::= {

Size ::= 1024Type ::= rsaEncryptionPrivateKeyFile ::= "test-ca-1.prv"

}Signature ::= {

SignatureAlgorithm ::= md5WithRSAEncryption}Extensions ::= {

SubjectAltNames ::= {IP ::= 1.2.3.4EMAIL ::= [email protected]

}BasicConstraints ::= {

CA}KeyUsage ::= {

DigitalSignature}

}]

}

El requerimiento de certificado es el método usado para requerir certificacióndel CA. Existe un estándar para ello y es el PKCS#10. Dicho estándar es soportadopor la herramienta de certificado X.509 del protocolo SSH. La estructura de dichorequerimiento está ilustrada en la siguiente figura:

INFO. CLAVE PÚBLICAArchivo Clave Privada

FIRMAAlgoritmo de Firma

NOMBRE ALT. DE SUJETOIP

E-mail

USO DE CLAVEFirma Digital

EXTENSIONES

CERTIFICADOArchivo de SalidaNombre del Sujeto

Page 48: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Las variables que aparecen son similares a las del certificado. Solo varíanalgunas de ellas:

• Archivo de salida: Es el archivo de salida del requerimiento a ser almacenado enformato binario.

• Algoritmo de Firma: Es el algoritmo de firma usado.

• Archivo de Clave Privada: Es el archivo donde está almacenada la clave privada.

La siguiente figura muestra un típico formulario de requerimiento:

CertificateRequest ::= {OutputFile ::= "test-user-1.req"SubjectName ::= <C=FI,O=SSH Communications Security\, Ltd., CN=Test User 1>PublicKeyInfo ::= {

InputPrivateKeyFile ::= "test-user-1.prv"}Signature ::= {

SignatureAlgorithm ::= md5WithRSAEncryption}Extensions ::= {

SubjectAltNames ::= {IP ::= 192.168.2.4

}KeyUsage ::= {

DigitalSignatureKeyEncipherment

}}

}

El uso de formularios de certificados y certificación, es probablemente la formamas simple de hacer las cosas, pero no la única. La herramienta de certificado X.509de SSH, incluye también una completa librería de código fuente de “C” para poderrealizar los requerimientos.

A5.4.- SERVICIOS DE DIRECTORIO Y CERTIFICADO DE REVOCACIÓN

En caso que una aplicación necesite un certificado de una parte, es de buenavoluntad comunicarse con ella, y si el mismo no es obtenido, se lo puede obtener dela autoridad confiable CA.

Page 49: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

El CA posee una base de datos con listas de certificados y revocaciones decertificados (CRLs), que puede ser accedida mediante un acceso a directorio. Elmétodo mas popular para la recuperación de CRLs y certificados, es el de

“Lightweight Directory Access Protocol” (LDAP), el cuál está incluido en laherramienta de certificados X.509 de SSH. El cliente LDAP se conecta al directorio yrecupera el certificado requerido basándose en una palabra clave, la cual es uncampo del certificado.

Una vez recuperado, el cliente puede controlar la validez del certificado,usando la clave pública del CA. El período de validez está escrito en el certificado. Detodas maneras, en caso que l certificado deba ser revocado antes de su día decaducidad original, dicha revocación es comunicada a las partes vía una lista derevocación de certificados, la cual incluye todos los certificados revocados.

Page 50: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Anexo 6: Esquema resumen de conexión SSH

Page 51: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

Page 52: Javier Chistik T.P final Criptografía y Seguridad ...materias.fi.uba.ar/6669/alumnos/1999/ssh.pdf · ser usada por el algoritmo de clave pública. Javier Chistik T.P final Criptografía

Javier Chistik T.P final Criptografía y Seguridad Informática68781

Protocolo de Seguridad SSH

BIBLIOGRAFÍA

• El protocolo SSH. T. Kivinen, M. Saariven, T. Rimme - Agosto 1998. • Repaso sobre los sistemas de certificación: X.509, CA, PGP y SKIP. E. Gerck -

1998 • Herramientas de certificación SSh X.509. IPSEC 1998 • La seguridad de las cadenas de bloques cifradas - MAC. Mihir Bellare, Joe

Kilian - Julio 1997. • Autenticación de mensajes usando funciones de Hash - HMAC. Mihir Bellare,

Ran Conett, Hugo Krawczyk - 1996. • Funciones de Hash para autenticar mensajes. Mihir Bellare, Joe Kilian - 1996. • Diseño y análisis de códigos de autenticación de mensajes - MAC. Phillip

Rogaway - 1996. • XOR MACs: Nuevo método para la autenticación de mensajes usando

funciones pseudoaleatorias finitas. Mihir Bellare, Roch Guerin, Phillip Rogaway- Octubre 1995.