Cual es el mejor modo de operación para cifrados de bloques simétricos?

Iniciado por retr02332, 24 Diciembre 2019, 20:03 PM

0 Miembros y 1 Visitante están viendo este tema.

retr02332

En python3, en la libreria pycrypto, hay multiples modos de operacion, pero la pregunta es:

¿cual debo usar y porque?.

Muchas gracias.

engel lex

#1
no es un asunto del "mejor" si han llegado hasta los standares actuales quiere decir que no hacen lo mismo sino que cada uno tiene su caso de uso, estudia el tema primero y ve cual es el mas apropiado y seguro para el aplicativo que vas a desarrollar...

http://dlerch.blogspot.com/2007/07/modos-de-cifrado-ecb-cbc-ctr-ofb-y-cfb.html

https://es.wikipedia.org/wiki/Modos_de_operaci%C3%B3n_de_una_unidad_de_cifrado_por_bloques


un caso muy simple CBC no lo puedes usar en streams o lineas de datos sensibles a perdidas, ya que si pierdes un bloque el resto será irrecuperable, en tal caso el EBC es mejor, pero como verás en los articulos, tiene defectos, sin embargo un EBC tras una compresión de datos no tendrá ese problema porque la compresión en naturaleza se supone que se dedica a destruir redundancias
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

retr02332

¿Que es una verificacion de la integracion del mensaje y como se hace en python?

Especificamente con pycryptodome, algoritmo AES, metodo de cifrado CTR.

Segun veo en la documentacion, este metodo de cifrado puede ser atacado mediante una vulnerabilidad llamada "Bit-flipping attacks", y que con el uso de una verificacion de la integridad del mensaje, esto se arreglara.

Muchas gracias.

MCKSys Argentina

Cita de: clay2332xd en 24 Diciembre 2019, 22:04 PM
¿Que es una verificacion de la integracion del mensaje y como se hace en python?

Especificamente con pycryptodome, algoritmo AES, metodo de cifrado CTR.

Segun veo en la documentacion, este metodo de cifrado puede ser atacado mediante una vulnerabilidad llamada "Bit-flipping attacks", y que con el uso de una verificacion de la integridad del mensaje, esto se arreglara.

Muchas gracias.

Significa que haciendo un hash del mensaje, puedes saber si el mismo fue corrompido durante la transmision. Usando SHA1 debería bastar, pero si quieres mas seguridad SHA256.

Para sacar los hashes, debes usar la lib hashlib (en python 3): https://gist.github.com/re4lfl0w/a6ff3a988b4e67297efc

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


retr02332

Entonces solo es para verificar que el mensaje llegue intacto?

O hay algo mas que se pueda hacer al respecto?

kub0x

Cita de: clay2332xd en 24 Diciembre 2019, 22:04 PM
¿Que es una verificacion de la integracion del mensaje y como se hace en python?

Especificamente con pycryptodome, algoritmo AES, metodo de cifrado CTR.

Segun veo en la documentacion, este metodo de cifrado puede ser atacado mediante una vulnerabilidad llamada "Bit-flipping attacks", y que con el uso de una verificacion de la integridad del mensaje, esto se arreglara.

Muchas gracias.

La crypto en su parte primaria se puede definir como cifrar y descifrar, quiero decir, que el mundo tiene esa imagen "pura" de lo que es la crypto. Ahora, un atacante con máscara de villano puede reemplazar mensajes a placer, entonces, como puede Bob saber si lo que recibió desde Alice realmente llegó intacto? Y como puede saber que fue Alice quien lo envió? Y como sabe que nadie hizo un reenvio? Todos estas cuestiones realmente forman lo que es la criptografía moderna, además del subyaciente criptoanálisis de estos métodos, todo ello formano la Criptología (cryptography + cryptanalysis).

Si quieres usar AES deberás de estar seguro primero que modo de operación utilizar junto al algoritmo de integridad y/o autenticación. Tienes el modo AE (Authenticated Encryption):

CitarAuthenticated encryption (AE) and authenticated encryption with associated data (AEAD) are forms of encryption which simultaneously assure the confidentiality and authenticity of data. These attributes are provided under a single, easy to use programming interface.

Matando dos pájaros de un tiro. Sino HMAC hace bien su trabajo o Poly1305, el cual también recomiendo por su alto rendimiento con AES.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate