Cómo analizar y elegir una buena libreta relacionada con criptografía

4

Me gustaría saber cómo se analiza y se selecciona una biblioteca relacionada con la criptografía. Por ejemplo, hoy tenemos muchas implementaciones TLS, que utilizan primitivas criptográficas, por ejemplo: GnuTLS, OpenSSL, LibreSSL, etc. Entonces, ¿cómo seleccionamos una?

  • ¿Cómo se analiza la biblioteca? ¿Revisa el código fuente?
  • ¿Qué pasa si no soy un experto en criptografía? ¿Debo confiar en las organizaciones que están detrás de esas bibliotecas?

Recientemente he estado usando bibliotecas relacionadas con criptografía proporcionadas por GNU, básicamente porque son de código abierto (lo que hace posible que cualquiera pueda revisar el código), tiene una buena documentación y porque los proyectos de GNU son en general confiables y confiables. ¿Qué otros parámetros, además del registro de seguimiento de la biblioteca debería tener en cuenta?

    
pregunta Falcon 23.08.2017 - 03:52
fuente

2 respuestas

4

La evaluación de bibliotecas externas siempre es un acto de equilibrio difícil. En muchos casos, las personas que realizan la evaluación no son especialistas de las funciones principales de la biblioteca (de lo contrario, a menudo no necesitarían usar una biblioteca de terceros). Esto es aún más cierto en el caso de criptografía porque la experiencia en la implementación de criptografía es rara, difícil de adquirir y difícil de acceder.

Por lo tanto, daría los siguientes avisos:

  • No se moleste en intentar auditar el código por seguridad. Audítelo para claridad, facilidad de uso, capacidad y adecuación a sus necesidades .
  • Asegúrese de que la gente que lo va a usar entenderá cómo usar la API correctamente . La mayoría de los desarrolladores de aplicaciones tienen poca o ninguna comprensión de criptografía. Muchos ni siquiera comprenden adecuadamente lo que no saben sobre el tema (de ahí el hábito alarmantemente común de escribir " custom spaghetti code "como función de" cifrado "o claves de codificación dentro del código fuente). Asegúrese de que no va a requerir que tomen decisiones para las que no están preparados (como elegir un modo de operación de cifrado en bloque o seleccionar un IV).
  • Asegúrese de que el código se mantiene correctamente , ahora y en el futuro. Este es probablemente el punto más importante.
  • ¿Cuál es la reputación de biblioteca de la biblioteca y, quizás más importante, el historial de cómo lidiar con fallas del pasado? Si no puede encontrar ningún registro de este tipo, manténgase alejado: el código es demasiado nuevo (o demasiado oscuro) como para haberlo probado correctamente o las personas que lo mantienen están desalentando activamente tales pruebas externas (o, lo que es peor, no lo están haciendo). mucho mantenimiento).
  • Intente evitar las dependencias difíciles tanto como sea posible: escriba sus propias interfaces en el código contra el que programará en lugar de codificar directamente contra la API. Con suerte, eso debería facilitar el cambio de biblioteca si es deseable o necesario.

Al final, tendrás que poner algo de confianza en las manos de algún desconocido. Lo mejor es tratar eso como cualquier otra relación comercial: confíe pero verifique y siempre tenga un plan de respaldo.

    
respondido por el Stephane 23.08.2017 - 10:59
fuente
0

Para las personas (incluidas aquellas que son técnicamente muy capaces) que no se especializan en criptografía, la única forma práctica de seleccionar una buena biblioteca criptográfica es leer sobre ella y decidir.

En general, no es una mala idea confiar en el consejo de organizaciones / especialistas reputados que recomiendan abiertamente una biblioteca en particular. Por supuesto, podrían cometer errores, pero eso sería mejor que una decisión desinformada.

Factores adicionales: buscaría libs en desarrollo activo, soporte para algoritmos recientes & Protocolos (por ejemplo, argon2 *), y soporte para mi lenguaje de programación favorito.

    
respondido por el Sas3 23.08.2017 - 04:08
fuente

Lea otras preguntas en las etiquetas