Cifrado fácil

Contents

Algoritmos de cifrado explicados con ejemplos

El cifrado está codificando mensajes con la intención de permitir solo que el destinatario desee comprender el significado del mensaje. Es una función bidireccional (necesitas poder deshacer cualquier revisión que hayas hecho al mensaje). Esto está diseñado para proteger los datos en tránsito.

Algoritmo de cifrado simple

Estoy trabajando en un proyecto de elevador solo por diversión, en realidad es hardware. Pero creo que esta es más una pregunta de software. No necesito tener esta característica, de hecho, es completamente redundante, pero tenía curiosidad, así que la estoy agregando de todos modos, así que puedo aprender: P tengo una dirección de 8 bits, un bus de datos de 8 bits y un cifrado de 8 bits código. Tengo un maestro y muchos dispositivos de esclavos. El maestro conoce la dirección de los esclavos y conoce el código de cifrado. Los esclavos conocen su dirección y el código de cifrado también. Quiero un algoritmo realmente simple tal que: el maestro envíe “y” donde, y = función (datos, código de cifrado) El esclavo recibe “y” y puede extraer datos por datos = function2 (y, código de cifrado) Intenté jugar con con y, xor, o, etc. y combinaciones de ellos, pero no pudo resolverlo. De nuevo estoy buscando algoritmos simples. Si no le importa, podría hacerme un favor más y explicar alguna teoría sobre cómo puedo llegar a tal solución/funciones. Muchas gracias!

preguntó 25 de abril de 2013 a las 15:46
441 1 1 insignia de oro 5 5 insignias de plata 12 12 insignias de bronce

Simple y El cifrado efectivo vendrá en forma de biblioteca, no es algo que escriba usted mismo. El cifrado simplemente simple podría ser ROT13.

25 de abril de 2013 a las 15:48
Xtea es relativamente simple, también RC4, pero es un poco difícil de usar correctamente.
25 de abril de 2013 a las 15:50

Un enfoque muy simple: enviar y = x xor tecla, luego x = y xor tecla en el otro lado, pero no habrá mucha protección allí.

Algoritmos de cifrado explicados con ejemplos

Megan Kaczanowski

Megan Kaczanowski

Algoritmos de cifrado explicados con ejemplos

La criptografía, en su forma más básica, es la ciencia del uso de códigos y cifrados para proteger los mensajes.

El cifrado está codificando mensajes con la intención de permitir solo que el destinatario desee comprender el significado del mensaje. Es una función bidireccional (necesitas poder deshacer cualquier revisión que hayas hecho al mensaje). Esto está diseñado para proteger los datos en tránsito.

Si está buscando un fondo general sobre la diferencia entre los algoritmos simétricos y asimétricos y una descripción general de lo que es el cifrado, comience aquí. Este artículo cubrirá principalmente dos de los algoritmos de cifrado más utilizados.

Como descripción general, había un problema importante con los algoritmos simétricos cuando se crearon por primera vez: solo funcionaban de manera efectiva si ambas partes ya conocían el secreto compartido. Si no lo hicieran, intercambiar de forma segura una llave sin un tercero Eves Batting fue extremadamente difícil.

Y si un tercero obtuvo la clave, fue muy fácil para ellos rompir el cifrado, derrotando el propósito de la comunicación segura.

Diffie-Hellman resolvió este problema al permitir a los extraños intercambiar información sobre canales públicos que pueden usarse para formar una clave compartida. Una clave compartida es difícil de descifrar, incluso si se monitorean todas las comunicaciones.

¿Cómo funciona Diffie-Hellman??

Diffie-Hellman es lo que se llama protocolo de intercambio de claves. Este es el uso principal para Diffie-Hellman, aunque también podría usarse para el cifrado (generalmente no lo es, porque es más eficiente usar las claves D-H para intercambiar las claves, luego cambiar a un cifrado simétrico (significativamente más rápido) para la transmisión de datos ).

La forma en que esto funciona es la siguiente:

Screen-shot-2019-10-04-AT-5.45.13-pm

Básicamente, hay dos fiestas, Alice y Bob, que acuerdan un color inicial (arbitraria pero tiene que ser diferente cada vez). También tienen un color secreto que se mantienen para sí mismos. Luego mezclan este color con el color compartido, lo que resulta en dos colores diferentes. Luego pasan este color a la otra parte, que lo mezcla con su color secreto, lo que resulta en el mismo color secreto final.

  Avast Secureline VPN Multi-Device License Key

Esto se basa en la idea de que es relativamente fácil mezclar dos colores, pero es muy difícil separarlos para encontrar el color secreto. En la práctica, esto se hace con matemáticas.

  1. Bob y Alice están de acuerdo en dos números, un gran Prime, P = 29 y Base G = 5
  2. Ahora Bob elige un número secreto, x (x = 4) y hace lo siguiente: x = g^x % p (en este caso % indica el resto. Por ejemplo, el 3%2 es 3/2, donde el resto es 1). X = 5 ^4 % 29 = 625 % 29 = 16
  3. Alice también elige un número secreto, y (y = 8) y hace lo siguiente: y = g^y % p. Y = 5 ^ 8 % 29 = 390,625 % 29 = 24
  4. Bob envía X a Alice y Alice envía Y a Bob.
  5. Entonces Bob hace lo siguiente: k = y ^ x % p, k = 24 ^ 4 % 29 = 331,776 % 29 = 16
  6. Alice luego hace lo siguiente: k = x ^ y % p, k = 16 ^ 8 % 29 = 4,294,967,296 % 29 = 16

La gran (*posiblemente mágica*) de esto es que tanto Bob como Alice tienen el mismo número, K, y ahora pueden usar esto para hablar en secreto, porque nadie más sabe K.

La seguridad de este protocolo se basa en algunas cosas:

  1. (Hecho) Es relativamente fácil generar números primos, incluso grandes números primos (como P).
  2. (Hecho) La exponencia modular es fácil. En otras palabras, es relativamente fácil calcular x = g ^ x % p.
  3. (Suposición basada en la potencia informática actual y las matemáticas) La extracción de raíz modular sin los factores primos es muy difícil. Esencialmente, es muy difícil encontrar a K sin saber X e Y, incluso si has espetado el tráfico y puedes ver P, G, X e Y.

Por lo tanto, suponiendo que esto se implementó correctamente, es relativamente fácil hacer las matemáticas requeridas para crear la clave, pero es extremadamente difícil y lleva mucho tiempo hacer las matemáticas requeridas para tratar de romper la clave al forzarla Brute.

Incluso si un atacante pudiera comprometer esta clave, Diffie-Hellman permite un perfecto secreto hacia adelante.

¿Qué es el secreto perfecto para avanzar??

Esta es la idea de que si desciiza el cifrado que el servidor está utilizando para comunicarse ahora, no significa que todas las comunicaciones que el servidor haya llevado a cabo se puede leer.

En otras palabras, solo le permite ver las comunicaciones que se están utilizando ahora (es decir, con esta clave secreta). Dado que cada conjunto de comunicaciones tiene una clave secreta diferente, tendrá que descifrarlos a todos por separado.

Esto es posible si cada sesión tiene una clave efímera diferente para cada sesión. Debido a que Diffie-Hellman siempre usa nuevos valores aleatorios para cada sesión, (por lo tanto, generando nuevas claves para cada sesión) se llama efímera Diffie Hellman (EDH o DHE). Muchas suites de cifrado usan esto para lograr un secreto perfecto para avanzar.

Como Diffie-Hellman le permite intercambiar material clave en texto sin formato sin preocuparse por comprometer el secreto compartido, y las matemáticas son demasiado complicadas para que un atacante sea la fuerza bruta, el atacante no puede derivar la clave de la sesión (e incluso si pudieran, utilizando Diferentes, efímeras, claves para cada sesión significa que solo pueden espiar esta sesión, ni ninguna en el pasado o el futuro).

El secreto de avance está habilitado con cualquier intercambio de claves de Diffie-Hellman, pero solo el intercambio de claves efímeros (una clave diferente para cada sesión) proporciona un secreto de avance perfecto.

Aquí hay una publicación de Scott Helme hablando de esto con más profundidad y explicando cómo habilitar esto en sus servidores.

¿Cuáles son las limitaciones de Diffie-Hellman??

La mayor limitación de D-H es que no verifica la identidad. En otras palabras, cualquiera puede afirmar que es Alice o Bob y no hay un mecanismo incorporado para verificar que su declaración es verdadera.

Además, si la implementación no se lleva a cabo de manera segura, el algoritmo podría ser descifrado con suficientes recursos dedicados (poco probable, pero posible para equipos académicos o actores de estado-nación).

  Support VPN pur

Por ejemplo, esto podría ocurrir si el generador de números aleatorios no se proporciona con entropía adecuada para respaldar la fuerza deseada, en otras palabras, porque los números generados por computadora nunca son realmente aleatorios, el grado en que ha inyectado artificialmente la incertidumbre es importante para la fuerza de su implementación.

Además, se demostró un ataque en 2015 que mostró que cuando muchos servidores usaron los mismos números primos como el comienzo del intercambio de claves, la seguridad general de Diffie-Hellman era menor de lo esperado.

Esencialmente, un atacante podría simplemente precomputar el ataque contra ese mejor momento, lo que facilita el compromiso de las sesiones de cualquier servidor que haya utilizado ese número primo.

Esto ocurrió porque millones de servidores estaban usando los mismos números primos para intercambios de claves. Precomputar este tipo de ataque todavía requiere recursos académicos o de nivel nación y es poco probable que afecte a la gran mayoría de las personas.

Sin embargo, afortunadamente para aquellos que tienen que preocuparse por los atacantes de estado-nación, hay una forma diferente de lograr el intercambio de claves DH utilizando la criptografía de la curva elíptica (ECDHE). Esto está fuera del alcance de este artículo, pero si está interesado en aprender más sobre las matemáticas detrás de este intercambio, consulte este artículo.

Para ver las debilidades de DH más detalladas, consulte este documento técnico y este sitio web.

RSA

RSA lleva el nombre de los creadores – Rivest, Shamir, Adleman, y es una forma de generar claves públicas y privadas.

Técnicamente hay dos algoritmos RSA (uno utilizado para firmas digitales y uno utilizado para el cifrado asimétrico.) – Este artículo cubre el algoritmo de cifrado asimétrico.

Esto permite el intercambio de claves: primero asigna cada parte a las claves públicas/privadas de transacción, luego genera una clave simétrica y, finalmente, utiliza los pares de claves públicas/privadas para comunicar de forma segura la clave simétrica compartida.

Debido a que el cifrado asimétrico es generalmente más lento que el cifrado simétrico, y no se escala tan bien, usar el cifrado asimétrico para intercambiar de forma segura las claves simétricas es muy común es muy común.

Entonces, cómo funciona?

  1. Elija 2 números primos muy grandes (al menos 512 bits, o 155 dígitos decimales cada uno), x e y (estos números deben ser secretos y elegidos al azar)
  2. Encuentra el producto, es decir, z = x*y
  3. Seleccione un entero público impar, E, entre 3 y N – 1, y no tiene factores comunes (aparte de 1) con (x -1) (y -1) (por lo que es relativamente primo a x – 1 e y – 1 ).
  4. Encuentre el múltiplo menos común de x – 1 e y – 1, y llámelo l.
  5. Calcule el exponente privado, d, de x, y y e. DE = 1 % L. D es el inverso de E % L (ya sabes que existe un inverso porque E es relativamente primo para Z – 1 e Y – 1). Este sistema funciona porque p = (p ^ e) ^ d % z.
  6. Salida (z, e) como la clave pública y (z, d) como la clave privada.

Ahora, si Bob le gustaría enviar un mensaje a Alice, genera el texto cifrado (c) desde el texto plano (p) usando esta fórmula:

Para descifrar este mensaje, Alice calcula lo siguiente:

La relación entre D y E asegura que las funciones de cifrado y descifrado sean inversas. Eso significa que la función de descifrado es capaz de recuperar con éxito el mensaje original, y que es bastante difícil recuperar el mensaje original sin la clave privada (z, d) (o factores primos x e y).

Esto también significa que puede hacer públicos a Z y E sin comprometer la seguridad del sistema, lo que facilita la comunicación con otras personas con las que aún no tiene una clave secreta compartida.

También puede usar las operaciones en reversa para obtener una firma digital del mensaje. Primero, utiliza la operación de descifrado en el texto sin formato. Por ejemplo, s = firma (p) = p ^ d % z.

  PureVPN Lifetime Review

Luego, el destinatario puede verificar la firma digital aplicando la función de cifrado y comparando el resultado con el mensaje. Por ejemplo, m = verificar (s) = s ^ e % z.

A menudo, cuando esto se hace, el texto sin formato es un hash del mensaje, lo que significa que puede firmar el mensaje (independientemente de la longitud) con una sola exponencia.

La seguridad del sistema se basa en algunas cosas:

  1. (Hecho) Es relativamente fácil generar números primos, incluso grandes números primos (como X e Y).
  2. (Hecho) La multiplicación es fácil. Es muy fácil encontrar Z.
  3. (Asunción basada en las matemáticas actuales) El factoring es difícil. Dado z, es relativamente difícil recuperar x e y. Es factible, pero lleva un tiempo y es costoso.

Una estimación dice que recuperar los factores principales de un número de 1024 bits tomaría un año en una máquina que costó $ 10 millones. Duplicar el tamaño aumentaría exponencialmente la cantidad de trabajo necesario (varios miles de millones de veces más de trabajo).

A medida que la tecnología continúa avanzando, estos costos (y el trabajo requerido) disminuirán, pero en este punto, este tipo de cifrado, implementado adecuadamente, es una fuente poco probable de compromiso.

Screen-shot-2019-10-05-AT-11.18.45-am

En general, los únicos piratas informáticos con este tipo de dinero y dedicación a un solo objetivo son los estados nacionales. Además, si hay una manera más fácil de comprometer un sistema (ver más abajo), probablemente sea una mejor opción.

4. (Hecho) La exponencia modular es fácil. En otras palabras, es relativamente fácil calcular c = p ^ e % z.

5. (Hecho) Extracción de raíz modular – Revertir el proceso anterior – es fácil si tiene los factores primos (si tiene Z, C, E y los factores primos x e y, es fácil encontrar P tal que C = P ^ e % Z).

6. (Suposición basada en la potencia informática actual y las matemáticas) La extracción de raíz modular sin los factores primos es muy difícil (si tiene z, c, e, pero no x e y, es relativamente difícil encontrar p tal que c = p ^ e % z, particularmente si a es suficientemente grande).

Quiero aprender más sobre las matemáticas de personas mucho más inteligentes? Mira este artículo.

Genial, que es mejor?

Depende de su caso de uso. Hay algunas diferencias entre los dos algoritmos: primero, el secreto perfecto para adelante (PFS), de los que hablamos anteriormente en el contexto de Diffie -Hellman. Mientras técnicamente tu podría Genere pares de claves RSA efímeros y proporcione un secreto perfecto hacia adelante con RSA, el costo computacional es mucho más alto que para Diffie-Hellman, lo que significa que Diffie-Hellman es una mejor opción para las implementaciones SSL/TLS donde desea que el Secrecio de Adelante perfecto sea perfecto.

Si bien existen algunas diferencias de rendimiento entre los dos algoritmos (en términos de trabajo requeridos del servidor), las diferencias de rendimiento generalmente no son lo suficientemente grandes como para marcar la diferencia al elegir uno sobre el otro.

En su lugar, en general, la consideración principal al determinar cuál es mejor depende de cuál sea más compatible con su caso de uso (por ejemplo, al implementar SSL, querrá Diffie Hellman debido a un perfecto secreto hacia adelante) o cuál es más popular o aceptado Como el estándar en la industria.

Por ejemplo, mientras Diffie -Hellman fue aprobado por el gobierno de EE. UU. Y apoyado por un organismo institucional, el estándar no se lanzó, mientras que RSA (estandarizado por una organización privada) proporcionó un estándar gratuito, lo que significa que RSA se hizo muy popular entre las organizaciones privadas.

Si está interesado en leer más, hay un gran hilo aquí sobre las diferencias.

Interesado en aprender a los piratas informáticos que usan ataques criptográficos? Prueba este conjunto de desafíos de las criptopales.

Cuanto más aprendo sobre la criptografía, más creo que Alice y Bob probablemente deberían hablar en persona.

– Paul Reinheimer (@preinheimer) 13 de marzo de 2017