[Anterior]

[Tabla de Contenidos]

[Siguiente]

Diferencias entre SSL y TLS

 

  SSLv3 TLSv1
Errores de Alerta Durante la ejecución del HandShake Protocol, el servidor deberà esperar por la respuesta del cliente. Si el servidor ha enviado un mensaje de requirimiento de certificado, el cliente debe enviar en su lugar el mensaje certificado o un alerta no_certificate, la cual se describe como sigue:

no_certificate: Un mensaje de alerta no_certificate puede ser enviado en respuesta al requerimiento de certificado si no es apropiado el certificado disponible.

Una vez que el server ha enviado un mensaje de pedido de certificado el cliente deberà enviar el mensaje certificado
En la computación criptográfica, se calcula distinto el master secret Antes de una encriptación o verificación de integridad sobre los registros, el cliente y el servidor necesitan generar información secreta compartida conocida sólo por ellos. Este valor de 48 bytes es llamado master_secret y es usado para generar claves y secretos para la encriptación y computación del MAC. Algunos algoritmos como por ejemplo FORTEZZA, tienen sus propios procedimientos para generar las claves de encriptación, así el master_secret es usado sólo para la computación del MAC.

El master_secret es calculado como :

master_secret = MD5(pre_master_secret + SHA ('A' + pre_master_secret + ClientHello.random + ServerHello.random)) + MD5(pre_master_secret + SHA ('BB' + pre_master_secret + ClientHello.random + ServerHello.random)) + MD5(pre_master_secret + SHA ('CCC' + pre_master_secret + ClientHello.random + ServerHello.random))

Además, en SSL, el key_block se genera de la siguiente manera:

key_block = MD5(master_secret + SHA('A' + master_secret + ServerHello.random + ClientHello.random)) + MD5(master_secret + SHA('BB' + master_secret + ServerHello.random + ClientHello.random)) + MD5(master_secret + SHA('CCC' + master_secret + ServerHello.random + ClientHello.random)) + [...]
Se utiliza la función PRF para generar el master_secret:
master_secret = PRF(pre_master_secret, "master secret", ClientHello.random + ServerHello.random)[0..n]

Recordemos que la función PRF se obtiene como:

PRF(secret,label,seed) = P_MD5(S1, label + seed) XOR  P_SHA-1(S2, label + seed)

Además, en TLS al generar el key_block se utiliza la función PRF como se muestra a continuación:

key_block = PRF(SecurityParameters.master_secret, "key expansion", SecurityParameters.server_random + SecurityParameters.clients_random)
Algoritmos de Intercambio de Claves En SSL se tienen como algoritmos de intercambio de claves  RSA, Diffie Hellman y Fortezza Kea.

A nivel de protocolo, el  FORTEZZA es similar al Diffie-Hellman, con valores públicos fijos,contenidos en los certificados.

El resultado del proceso de intercambio de claves es el TEK (token encryption key), el cual es utilizado  para proteger  los datos   de las claves encriptadas,la clave de escritura del cliente, la clave de escritura del servidor, y la clave de encriptación del master secret. Las claves de encriptación de datos no derivan del pre_master_secret  porque  claves no protegidas no son accesibles desde fuera del token.

El pre_master_secret encriptado es  mandado al server en un mensaje de intercambio de claves por el cliente.

TLS no soporta el algoritmo de intercambio de claves Fortezza Kea.
el MAC se calcula diferente En SSL, en el cálculo del MAC no se ingresa ni el SSLCompressed.ContentType ni el SSLCompressed.ProtocolVersion, por lo tanto estos campos no estan protegidos contra ataques contra la integridad. (ver [8]) Se protegen también los campos TLSCompressed.ContentType y TLSCompressed.ProtocolVersion, incluyendolos en el cálculo del MAC.

[Anterior]

[Tabla de Contenidos]

[Siguiente]
1