Ad hoc simplemente significa:
Ad hoc es una frase latina que significa "para esto". Por lo general, significa una solución diseñada para un problema o tarea específica, no generalizable y que no está diseñada para poder adaptarse a otros propósitos.
En seguridad, el uso de protocolos ad-hoc suele ser algo malo. Hay (ahora) protocolos MAC bien analizados y bien definidos; por ejemplo, HMAC (MAC basado en hash) definido como: HMAC(k, m) = H((k ^ opad) + H((k ^ ipad) ++ m))
, donde H
es una función hash (por ejemplo, SHA128), opad es una constante hexadecimal larga bloque 5c5c5c...5c
, ipad es un 363636...36
, k es la clave secreta compartida (utilizada para generar y validar el MAC), ^
es XOR, +
es concatenación.
En SSLv3, el MAC descrito en la sección 5.2.3.1 a primera vista parece un HMAC:
The MAC is generated as:
hash(MAC_write_secret + pad_2 +
hash(MAC_write_secret + pad_1 + seq_num +
SSLCompressed.type + SSLCompressed.length +
SSLCompressed.fragment));
where "+" denotes concatenation.
pad_1: The character 0x36 repeated 48 times for MD5 or 40 times for SHA.
pad_2: The character 0x5c repeated 48 times for MD5 or 40 times for SHA.
pero la nota XOR nunca se usa, es siempre una concatenación. Tenga en cuenta que es H(k + opad + H(k + ipad + m))
. Además, el secreto de escritura MAC k
es simplemente MD5(master_secret + SHA('A' + master_secret + ServerHello.random + ClientHello.random))
en el caso de que MD5 sea el hash. Es muy posible que estas construcciones no estándar filtren información a atacantes muy poderosos.
Para citar este documento (Diferencias entre SSLv2, SSLv3 y TLS (PDF) ):
Uso ad hoc de los códigos de autenticación de mensajes : hay construcciones de MAC que no han sido objeto de análisis, como HMAC. Wagner y Schneier no tienen ninguna objeción específica a ellos, pero el punto es válido: es mejor usar algo que haya resistido una buena cantidad de análisis que algo que no, especialmente en sistemas de campo.
Por supuesto, volviendo a documento de Wagner y Schneier (PDF) , parece que SSLv3 solo está usando una versión antigua de HMAC que estaba obsoleta en 1996:
SSL protege la integridad de los datos de la aplicación mediante el uso de un MAC criptográfico. Los diseñadores de SSL han optado por utilizar HMAC, una construcción simple y rápida basada en hash con cierta evidencia teórica sólida para su seguridad [BCK96]. En un área donde se han analizado criptográficamente varias propuestas iniciales ad-hoc para MAC, estos resultados de seguridad demostrables son muy atractivos. HMAC se está convirtiendo rápidamente en el estándar de oro para la autenticación de mensajes, y es una excelente opción para SSL. A menos que se produzcan avances criptoanalíticos inesperados, parece improbable que la HMAC se rompa en un futuro próximo.
Señalamos que SSL 3.0 usa una versión más antigua y obsoleta de la construcción HMAC. SSL debe pasar al formato HMAC actual actualizado cuando sea conveniente para la máxima seguridad.