Implementar algoritmos de criptografía en un microcontrolador ARM

Suponga una situación en la que desea realizar algunos procedimientos de cifrado en su microcontrolador ARM. (Recibir un archivo, cifrarlo con 3DES y algunas funciones hash y devolverlo, por ejemplo).

Hasta donde yo sé, tenemos dos opciones aquí:

  1. ¡Reinventando la rueda! es decir, escribir algunas funciones para realizar los algoritmos criptográficos descritos.
  2. Agregar bibliotecas ya escritas en nuestro proyecto y usar sus métodos de manera simple.

Ahora quiero beneficiarme de la segunda solución usando bibliotecas OpenSSL . ¡Pero no estoy seguro de eso! ¿Es posible agregar estas bibliotecas al IDE de IAR ? ¿Debo volver a compilar el código fuente de OpenSSL antes de agregarlo a mi programa?

Realmente aprecio una solución paso a paso.

"Cifrar con... y algunos hashes": múltiples hashes no brindan seguridad y, de hecho, pueden presentar debilidades. Sin embargo, si solo planea hacer diferentes hashes en diferentes entradas, no hay problema.

Respuestas (1)

Sí, deberá volver a compilar la biblioteca en IAR para poder usarla en su proyecto. Puede encontrar instrucciones paso a paso en esta respuesta .

Sugiero echar un vistazo a mbedTLS o Tiny SSL en lugar de OpenSSL, ya que su proyecto probablemente se beneficiará del uso de una biblioteca más pequeña.

De acuerdo: OpenSSL es un enorme paquete heredado con el que es difícil trabajar. Considere también nacl.cr.yp.to . Si solo desea 3DES (¡obsoleto!) y SHA-2, puede obtenerlos por separado como implementaciones de referencia. ¡No olvide usar el modo CBC correcto, IV, programación de teclas y modos de relleno!
@pjc50 ¿Puedo usar NACL en mis programas ARM también?
Como quiero generar y verificar algunas firmas, creo que OpenSSL es la única opción, ¿verdad?
Creo que necesitas SHA-2 para esto. También se implementa en mbedTLS.
NaCl está dirigido a ARM: hyperelliptic.org/tanja/vortraege/20121129.pdf y puede hacer firmas, aunque solo crypto_sign_edwards25519sha512batch y no firmas compatibles con PGP.