Todo el cifrado que existe se reduce a un generador de números pseudoaleatorios para generar un pseudo pad único y la función XOR.
El PRNG es la parte del algoritmo que hace todo el trabajo, pero debido a que puede hacer que sea algo externo (se pueden usar las ligeras fluctuaciones en un púlsar), decir que es intrínseco al algoritmo no es del todo honesto.
De acuerdo, no siempre se implementan como (flujo generado) (+) (flujo de datos), particularmente cifrados de bloque donde los datos se pueden mover alrededor del bloque o plegarse de forma reversible, pero siempre se puede convertir cualquier cifrado en un flujo generado XOR flujo de datos.
- ¿Por qué usar un diagrama de flujo es una mala práctica en la programación?
- ¿Cuáles son las aplicaciones del mundo real de algunas estructuras de datos avanzadas, y cuándo elegiría una estructura de datos sobre otra, en el caso de estructuras de datos similares?
- Cómo imprimir espacio para los elementos de la matriz
- ¿Cuál es el problema de algoritmo más difícil en LeetCode?
- ¿Cuál es tu recurso favorito para aprender sobre programación competitiva?
Entonces, una respuesta es que todos los componentes de encriptación del algoritmo de encriptación son igualmente simples y constituyen un operador binario.
Probablemente esa no sea la respuesta que está buscando, pero Deep Thought tendrá que explicarle por qué. 🙂
Si eliminamos respuestas triviales, hay varios posibles candidatos.
Arco iris: trata los datos como una matriz cuadrada. Aplica un algoritmo de la familia DES “a través”, luego un algoritmo diferente “abajo”, luego el primer algoritmo “a través” nuevamente. La complejidad efectiva es alta, pero es difícil decir qué tan alto porque el álgebra necesitaba reducir esto a un formulario donde podría hacer una comparación directa no existe.
(Casi cualquier bloque de cifrado) + XCBC: XCBC toma tres flujos de datos, uno el bloque y dos vectores iniciales generados de otro modo. XCBC encripta y autentica, por lo que estos datos adicionales tienen un buen uso. Debido a que tiene cifrado más cifrado con tres conjuntos de datos independientes, siempre que el cifrado no se cancele, diría que esto es increíblemente complejo. Es lo suficientemente loco como para saber que nadie lo usa.
(Corrección de error como un cifrado) + (Cualquiera de los anteriores): Convierta los datos en un cubo N (una forma rectilínea de lados iguales de N dimensiones donde todos los lados son idénticos). Codifique utilizando códigos de corrección de errores (restaurativos, no simplemente de detección) de modo que haya una solución única para lo que habrían sido los datos originales. Luego use cifrado autenticado para ocultarlo. La mayoría del cifrado deja rastros residuales de datos (la razón por la que se desarrolló el 2DEM), que se puede utilizar para debilitar la clave sin depender de un problema con el cifrado. La corrección de errores y la compresión se utilizan, en varios casos, para tratar de eliminar las huellas digitales.
(Cifrado consciente de la relación): esto es complejo en términos de diseño en lugar de la cantidad mínima de lógica necesaria para programarlo. Este tipo de cifrado se usa comúnmente en bases de datos, donde absolutamente no desea que personas no autorizadas puedan inspeccionar los datos, donde desea evitar el descifrado donde sea posible (en parte, la misma razón, en parte el rendimiento), pero donde permanecen todos los operadores de relaciones en SQL absolutamente válido, a pesar de que están trabajando en los datos cifrados. Algunos lo tienen donde algunas de las matemáticas también funcionarán. Por lo tanto, P encriptado viene antes que Q encriptado y encriptado 45 + encriptado 54 = encriptado 99. Necesariamente, esto es relativamente débil, pero es muy útil.
Cifrado bizantino con combinaciones restringidas: el cifrado bizantino es simplemente donde una clave se divide en N partes, donde puede reconstruir la clave con cualquiera de ellas. Sin embargo, es posible que desee agregar una restricción adicional, que si A está presente, B está ausente. En otras palabras, la forma en que se combinan las claves no es por simple mosaico sino por una pieza de lógica con propiedades criptográficas / de autenticación.
Cifrado de clave pública bizantino inverso: desea un mensaje que pueda cifrar y luego multidifusión o difusión, donde cualquier clave de un conjunto específico puede descifrar el mensaje pero no otro. La transmisión digital es punto a punto en lugar de multidifusión porque nadie podría descubrir los derechos de autor o un sistema de facturación. Debe poder transmitir contenido a personas específicas sin el secreto del intercambio de claves (porque si eso fuera aceptable, Internet estaría protegido a través de IPSec, que no lo es) y con una transmisión independientemente de cuántos reciban. Hasta donde sé, esto no existe, lo que lo convierte en el sistema de cifrado más complicado.