¿Qué método utilizar para implementar el cifrado en una aplicación de escritorio de Windows?

0

Necesitaré realizar un cifrado de los datos del usuario en mi aplicación de escritorio de Windows, escrito en C / C++ usando WinAPIs (no .NET o WinRT stuff). Es decir, haré lo siguiente:

  • cifrado simétrico: AES
  • Cifrado de clave pública (asimétrico): preferiblemente utilizando Elliptic curve cryptography .

Mis únicos requisitos serían:

  • El código debe ejecutarse en Windows XP SP3 y posterior sistema operativo.
  • Sé lo suficientemente robusto.

Así que me preguntaba, ¿cuál sería el mejor uso para Windows?

  1. Para usar Windows integrado en API de criptografía , o

  2. Para usar alguna biblioteca criptográfica basada en C o C ++. ¿Si es así, Cuál? ¿Puedes explicar? (La aplicación se desarrollará en Visual Studio 2008 como proyecto C ++ / MFC).

Mi pensamiento sobre los beneficios de cada uno fue este:

  1. Con Windows incorporado en las API criptográficas, es una codificación más rápida, ya que la mayoría de los códigos de cifrado se proporcionan en las API. Además, las bibliotecas de Windows pueden implementar la aceleración de la CPU (por ejemplo, algunas CPU de Intel tienen operandos AES incorporados).

  2. Pero, con la biblioteca C / C ++, no hay dependencias en las DLL de Windows que pueden no estar presentes en el sistema operativo anterior, o contienen errores más antiguos que Microsoft no corrigió.

pregunta c00000fd 21.01.2017 - 03:56
fuente

2 respuestas

1

Recomiendo utilizar bibliotecas específicas de la plataforma siempre que sea posible. La razón principal es que obtendrán actualizaciones automáticamente, mientras que si usted agrupa una biblioteca de terceros, entonces es su responsabilidad monitorear las actualizaciones de esa biblioteca, producir versiones actualizadas de su software con la actualización de la biblioteca de terceros. y haz que tus usuarios instalen la actualización. Con las bibliotecas que se actualizan con frecuencia (como OpenSSL), esta es una carga de mantenimiento considerable para usted. En mis años como consultor de infosec, vi muchas, muchas bibliotecas OpenSSL desactualizadas con aplicaciones, la mayoría con unas pocas docenas de CVE.

Por supuesto, si tiene que admitir un sistema operativo que ya no recibe actualizaciones de seguridad de su desarrollador (debido a que tiene 16 años de edad), bueno, de todos modos, está equivocado. Todavía me inclino por usar las bibliotecas proporcionadas por la plataforma (Cryptography API o "CAPI", en este caso), tanto por el rendimiento como porque preocuparse por la seguridad de cualquiera que use un sistema operativo fuera de soporte es una tarea de tontos ( pero sus usuarios con sistemas operativos actuales apreciarán poder mantenerse seguros).

Una desventaja de usar las API de la plataforma si desea admitir XP es que XP solo tiene el CAPI heredado, no el CNG (Crypto API Next Generation) que ofrece Vista +. CNG es compatible con algoritmos más nuevos (sé que ofrece algoritmos EC; menos seguros de CAPI) y tiene una API mejor / más flexible.

CNG también es mucho más fácil de "conectar" con un código de terceros, lo cual es útil si tiene un cliente que, por ejemplo, desea usar una implementación específica de ciertos algoritmos (o almacenamiento de claves, o lo que sea) En lugar de la implementación provista por MS. Esta es otra razón para usar bibliotecas de plataforma, por supuesto; Si alguien ha cambiado su proveedor de CNG predeterminado, ¡probablemente quieran que lo respetes!

Le sugiero que considere muy cuidadosamente si realmente es necesario admitir un sistema operativo tan obsoleto al escribir un código preocupado por la seguridad.

    
respondido por el CBHacking 09.05.2017 - 22:06
fuente
0

La elección del algoritmo de cifrado depende del flujo de datos del usuario (los datos residen en el mismo sistema o se transfieren a la nube). La recuperación de datos también puede desempeñar un papel importante en la decisión del algoritmo de cifrado. Dado que la seguridad de su algoritmo está vinculada a la seguridad de su clave, asegúrese de decidir el cifrado adecuado en función de sus requisitos.

Pero la elección de la biblioteca en su caso debe depender principalmente del soporte de documentación y también del soporte de desarrollo continuo de las bibliotecas. Dado que XP es principalmente el sistema operativo discontinuado, preferiría no centrarme en él. Si su aplicación está vinculada a la solución de Windows solamente, puede usar las bibliotecas de Microsoft.

    
respondido por el MMu 08.02.2017 - 15:47
fuente

Lea otras preguntas en las etiquetas