¿Es posible apilar algoritmos de cifrado con SSL?

1

SSL admite varios cifrados, pero ¿es posible apilar / anidar los cifrados y procesar el texto sin formato en etapas? Mi adversario puede ser capaz de descifrar fácilmente una o más de las etapas, pero para descifrar mi mensaje, deben descifrarlas todas si puedo usar varios cifrados.

Por ejemplo:

ciphertext = Encrypt(plaintext, key, alg=[1,2] )
           = Encrypt1(Encrypt2(plaintext,key2),key1)

Si quiero establecer una conexión protegida por Blowfish, una curva elíptica, un cifrado de sustitución débil de mi propia creación y 3 rondas de 3DES con claves diferentes, ¿SSL puede hacer esto?

Dado que todos los cifrados pueden tener puntos débiles desconocidos, el uso de una amplia selección de cifrados posiblemente seguros requerirá que mi amenaza persistente avanzada sea competente en todos ellos. Si solo uno de los cifrados retiene, mi mensaje permanece seguro (siempre que los cifrados no compartan información clave). Deseo transmitir un enigma, envuelto en un misterio, etc.

    
pregunta Des Cent 09.04.2014 - 22:19
fuente

3 respuestas

1

SSL se llama TLS hoy en día.

Durante un protocolo de enlace TLS, el cliente y el servidor acuerdan una suite de cifrado. Un cypher-suite es una combinación de un algoritmo de intercambio de claves, un algoritmo de cifrado masivo, un algoritmo de hash y una función pseudoaleatoria.

La especificación TLS define una lista fija de posibles cypher-suites en Apéndice A.5 .

Cuando un cliente se conecta a un servidor TLS, envía al servidor una lista de las suites de cifrado que admite. Estas suites deben ser de las listas definidas en las especificaciones. El cliente no puede proponer uno personalizado. El servidor luego elige una (1) de estas suites de cifrado. Esa suite se utiliza para el cifrado.

Un servidor TLS que cumpla con los estándares no le permitirá colocar múltiples cifrados, ni aceptará ningún código no incluido en la especificación.

Pero cuando usa TLS para envolver su propio protocolo, por supuesto puede agregar más cifrado en el nivel de la aplicación. TLS solo transporta bytes. Lo que representan estos bytes no importa.

    
respondido por el Philipp 09.04.2014 - 23:06
fuente
2

SSL / TLS es un protocolo para enviar "datos de aplicación" como un flujo de bytes bidireccional, por lo que puede enviar a través de él, cualquier cosa que pueda codificarse como bytes, es decir, cualquier cosa que se ajuste en la memoria de una computadora. Si desea aplicar capas de cifrado adicionales, nada lo impedirá.

Creer que tal cascada de algoritmos de encriptación hará algún bien a su seguridad es una ilusión conocida, desafortunadamente muy común. Los algoritmos de cifrado, cuando se usan correctamente (por ejemplo, como se usan en TLS), no son la parte más débil del sistema; Son la parte más fuerte. Cuando te atacan, no será a través de romper los algoritmos. Agregar algoritmos adicionales no ayudará. En realidad, probablemente resulte perjudicial, aunque solo sea porque la complejidad adicional matará su rendimiento y lo inducirá a no a utilizar TLS en algunos casos, debido a esa sobrecarga gratuita. Consulte esta respuesta para obtener más información sobre la tema.

Creer que tu algoritmo casero también ayudará es también una ilusión común. La parte principal de la formación como criptógrafo es aprender que nadie puede construir por sí mismo un algoritmo que sea seguro y confiable. Por lo tanto, los criptógrafos profesionales no crean algoritmos de esa manera; en cambio, publican candidatos , para ser inspeccionados por sus colegas. Si ninguno de estos otros criptógrafos bien intencionados encontró algo malo que decir sobre el nuevo algoritmo después de algunos años, entonces podemos comenzar a imaginar que el algoritmo podría ser bastante robusto después de todo. Este es el único método conocido para diseñar algoritmos seguros. No puedes hacerlo por ti mismo, solo, por definición. Yo tampoco puedo. Nadie puede.

    
respondido por el Tom Leek 10.04.2014 - 15:23
fuente
0

Bueno, piénsalo de esta manera:

Cada cifrado produce una salida. Inventemos un cifrado y representémoslo con f() . Diremos que el mensaje que está cifrando es "Hola mundo". f("Hello World") producirá una salida de algún tipo. Digamos que esa salida es ... 1234567890. Ahora, ¿qué sucede si creamos otro esquema, por ejemplo, d() ? d("1234567890") nos da otra salida, solo diremos que es 0987654321. Ahora, ¿qué pasaría si enviara "0987654321" a través de SSL / TLS? Obtendrías el equivalente de esto:

ssl(d(f("Hello World")))

Entonces, en resumen, sí, es posible. Sin embargo, como dijo @Phillip, es posible que el servidor con el que intenta comunicarse no sea compatible con ...

    
respondido por el KnightOfNi 09.04.2014 - 23:06
fuente

Lea otras preguntas en las etiquetas