La definición de un buen algoritmo de cifrado incluye “toda la seguridad depende única y exclusivamente de la clave”. Si el conocimiento del algoritmo ayuda, la única razón para esto puede ser que el algoritmo está roto: la definición de “roto criptográficamente” es “hay una manera de explotar la estructura en el algoritmo para descifrar un mensaje con menos cómputo que simplemente intentar con las teclas uno después de otro”.
Ahora, por supuesto, si conocen la clave o quieren intentar forzarla por fuerza bruta, necesitarán saber qué algoritmo usar.
En teoría, es imposible determinar el algoritmo utilizado a partir del texto cifrado.
- ¿Qué algoritmo se utiliza en los puntos de calificación para las clasificaciones de cricket ICC?
- Cuando se ejecuta el ordenamiento rápido aleatorio, ¿cuántas llamadas se realizan al generador de números aleatorios en el peor de los casos? ¿Y también para el mejor caso?
- ¿Cuánto de los algoritmos de Windows 8 y 10 se toman de versiones anteriores de Windows?
- ¿Qué es mejor si necesito elegir un camino para mi carrera, algoritmos y estructuras de datos, o tecnologías de big data, en las que estoy trabajando actualmente?
- ¿Cuál es la complejidad temporal del algoritmo babilónico para encontrar la raíz cuadrada?
En la práctica, es posible intentar adivinar por el tamaño y las propiedades de los datos (no hay demasiados algoritmos populares), y la mayoría de los servicios como HTTPS incluyen mensajes de negociación de algoritmos, por razones de compatibilidad (para que los servidores y los clientes puedan calcular para saber cuál es el mejor algoritmo que ambos admiten, ya que no se puede saber qué programa se escribe cuando).
En general, si necesita clientes arbitrarios para poder hablar con servidores arbitrarios, tendrá que haber algún método conocido de comunicación, y esto incluirá el algoritmo de cifrado utilizado. Pero, suponiendo que no esté utilizando algoritmos rotos (según la definición anterior), esto no debería ser un problema.