Librerias de Cifrado Simetrico y Asimetrico en C/C++

Iniciado por AlbertoBSD, 22 Septiembre 2016, 16:52 PM

0 Miembros y 2 Visitantes están viendo este tema.

AlbertoBSD

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

CitarLibgcrypt 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!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Poyoncio

#1
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
Curso de ensamblador desde cero

AlbertoBSD

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
CitarInsecure 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!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW