Supongamos que soy un atacante, y me enfrento a un algoritmo de cifrado débil pero desconocido desarrollado por "Dave". ¿Cómo lo rompería? Ni siquiera sabría por dónde empezar. Sería una cadena de caracteres aparentemente sin sentido.
Eso es correcto, no lo harías. Aquí hay algunos datos encriptados (4587556841584465455874588). ¿Tienes una idea de lo que eso significa? Absolutamente no.
Sin embargo, te estás perdiendo la clave del pilar central fundamental, más importante e integral al universo que mantiene la criptografía unida. La idea es simple:
the key is everything
Eso es todo. Eso es lo que tienes que proteger. La parte que debes proteger con tu vida y la esperanza de que nadie te golpee con un martillo hasta que les digas qué es.
Sobre esta base, debe asumir que su algoritmo puede ser leído por el atacante. Ellos saben cómo funciona. Pueden documentar su proceso. Si hay alguna debilidad, la encontrarán. Y los explotarán. Como ese enojado papá de la CIA de Taken.
Resulta que esto es menos una suposición y más un caso práctico en uso. Dave, el criptógrafo de artesanía doméstica, desea incluir un algoritmo de cifrado en su programa. Decidiendo evitar todas las pruebas y trabajos de diseño que los criptógrafos han hecho por él de forma gratuita a lo largo de los años, escribe algo relacionado con el extraño xor, compila su programa y lo entrega a los amigos.
Ese algoritmo está ahora en sus manos. Se acabó el juego.
Ahora, puedes preguntar "¿no puedo simplemente mantener el algoritmo en secreto? Eso funcionará, ¿verdad?" Oh Dave, por favor pare. No no no. El problema con los algoritmos secretos es que es mucho más probable que sean robados. Después de todo, la clave es diferente para cada usuario (en realidad, esto no es un requisito, pero supongamos que es por simplicidad) pero el algoritmo permanece sin cambios. Por lo tanto, solo necesitas una de tus implementaciones para estar expuesto a un atacante y es el juego otra vez.
Editar : Ok, en respuesta a la pregunta actualizada del OP. Supongamos por un momento que el algoritmo es totalmente desconocido. Cada uno de los dos participantes en una conversación cifrada tiene perfecta seguridad en la implementación de su algoritmo.
En este caso, tienes datos para analizar. Puede hacer cualquiera de las siguientes acciones:
- Analizar para letras de uso frecuente . Así es como se rompería un cifrado típico de cambio de caesar.
- Intenta adivinar la longitud de la clave. Con esta información, puede pasar a buscar bloques de texto cifrado repetidos que puedan corresponder al mismo texto simple.
- El índice de coincidencia de intentos y otras medidas similares utilizadas para romper la clave de vigilancia, ya que muchos cifrados polialfabéticos son (posiblemente) solo variantes de esto.
- Esté atento a los patrones. Cualquier patrón puede darte la clave.
- Busca otras pistas. ¿Corresponden las longitudes a una cierta medida? ¿Son, por ejemplo, múltiplos de un cierto valor, como un límite de byte, y por lo tanto están (posiblemente) rellenados?
- Intente analizar con una de las técnicas de criptoanálisis con cifrado simétrico . Estos dependen del conocimiento del algoritmo en muchos casos, por lo que es posible que no se apliquen aquí.
- Si cree que los datos en cuestión representan un intercambio de claves, puede probar una de las muchas técnicas para romper clave pública algoritmos .
El hecho es que una pequeña parte de los datos de un algoritmo desconocido podría no ser descifrable. Sin embargo, esto no significa que deba confiar en que este sea el caso. Cuantos más datos pueda recuperar un criptoanalista, es más probable que rompan el algoritmo. Probablemente no sepa, sin un análisis criptográfico serio, cuál es ese límite; por ejemplo, es razonable suponer que se podría aplicar una fuerza bruta a un algoritmo de cifrado de cifrado para palabras de tres letras, ya que hay pocas que tengan sentido.
También te enfrentas a problemas de reutilización. En la Segunda Guerra Mundial, Engima superó este problema al tener configuraciones programables para su algoritmo secreto, pero esto también se rompió.
También hay que considerar el elemento humano de la criptografía. Me doy cuenta de que la etiqueta en la lata dice "usar una vez, no digerir", etc., pero los humanos son humanos y es probable que la usen dos veces, tres veces, etc. Cualquier comportamiento de este tipo juega en las manos del criptoanalista.