Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AlbertoBSD en 22 Septiembre 2016, 16:52 pm



Título: Librerias de Cifrado Simetrico y Asimetrico en C/C++
Publicado por: AlbertoBSD en 22 Septiembre 2016, 16:52 pm
En construcción

Libcrypto
Documentación: No esta muy ordenada
https://wiki.openssl.org/index.php/Libcrypto_API


Libgcrypt
Documentación: Excelente
Algoritmos: La mayoria de los Simetricos y siguen desarrollando los Asimetricos

Citar
Libgcrypt is a general purpose cryptographic library based on the code from GnuPG. It provides functions for all cryptograhic building blocks: symmetric ciphers (AES, DES, Blowfish, CAST5, Twofish, SEED, Camellia, Arcfour), hash algorithms (MD4, MD5, RIPE-MD160, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, TIGER-192, Whirlpool), MACs (HMAC for all hash algorithms), public key algorithms (RSA, Elgamal, DSA, ECDSA), large integer functions, random numbers and a lot of supporting functions.

Libgcrypt works on most POSIX systems and many pre-POSIX systems. It can also be built using a cross-compiler system for Microsoft Windows.
https://www.gnu.org/software/libgcrypt/
https://gnupg.org/download/index.html#libgcrypt




Abro el tema por que me he encontrado con el problema de usar una librería de cifrado en Windows, el problema que el proyecto que estoy haciendo en C en FreeBSD lo hice con libgcrypt pero esta NO se puede portar tan fácilmente a windows :P :P Y cada que alguien preguntaba por alguna librería asi yo siempre recomendaba libgcrypt (Mas que nada la recomendaba por completa suite de algoritmos y excelente documentación).

Realmente no conozco muchas librerias de este tipo ya que siempre trabaje con libgcrypt y me parecia muy completa,
¿podrian comentar algunas mas que usen o conozcan y que tambien funcionen con windows y no tengan tantas dependencias?

Saludos!


Título: Re: Librerias de Cifrado Simetrico y Asimetrico en C/C++
Publicado por: Poyoncio en 22 Septiembre 2016, 20:06 pm
He estado hace un tiempo en el mismo problema que tu, el problema de la mayoria de apis y pequeños proyectos desarrollados orientados a criptografia, es que si no conoces como funcionan muy bien no sabes por donde empezar, en python es tan sencillo como aes_encrypt(clave, mensaje), mientras que en c++ de 20 lineas para abajo necesitas. Estaria bien crear una cabecera que hiciera algo parecido como en el ejemplo de python.

Yo no consegui resolverlo ya que casi todas las opciones eran de tipo openssl y librerias de esas que tienen dependencias, mi idea era un .h portable con el codigo, es decir dentro del exe.


Por si te sirve de algo, encontre esta api de Rijandel, espero que te sirva:
 ftp://ftp.zedz.net/pub/security/cryptography/algorithms/aes/aes-c++-sstefanek/
EDITO: El link esta caido voy a intentar encontrarlo otra vez
EDITO2: Tambien tenia esta: http://www.codeproject.com/Articles/57478/A-Fast-and-Easy-to-Use-AES-Library


Título: Re: Librerias de Cifrado Simetrico y Asimetrico en C/C++
Publicado por: AlbertoBSD en 22 Septiembre 2016, 23:29 pm
En mi caso solo fue por que la librería que usaba no estaba totalmente portada para windows.

En general es preferible (Criptograficamente) establecer todos los parámetros para el cifrado aunque se trate de cifrado simétrico (AES) existen muchas variedades y cosas que definir, como el IV (Vector de Inizialisacion) tambien el KEY (Tu clave) + el tipo de cifrado (AES128, AES256) y modo de cifrado (ECB, CFB, CBC,CCM,GCM).

No todos son compatibles entre si, y algunas implementaciones no son tan seguras como otras.

Yo prefiero escribir 20 lineas a una sola. O mejor aun crear mi propia función acorde a mis necesidades y llamarla con una sola linea (Que es lo que realizo actualmente), no es tan dificil, tal vez, solo te falta leer un poco mas de criptografia y entender mas o menos los conceptos y con eso no sera tan dificil entender esas 20 lineas.

Ademas mientras es posible personalizar tanto el codigo como deees para que se adapte a cualquier tipo de proyecto.

He visto implementaciones criptograficas INSEGURAS de una sola linea como la que mencionas que no son tan seguras muchas de ellas incluso "Incluyen" el Material para descifrar dentro del mismo mensaje "supuestamente" cifrado.

Ver mas:

https://www.owasp.org/index.php/Top_10_2010-A7-Insecure_Cryptographic_Storage
http://www.veracode.com/blog/2012/06/insecure-cryptographic-storage-explained
Citar
Insecure Cryptographic Storage is a common vulnerability that occurs when sensitive data is not stored securely. Protecting sensitive data by encrypting it should be a key step in a Secure Software Development Lifecycle

Saludos!