paint-brush
Usos indebidos comunes de las API criptográficas de Python en la naturalezapor@cryptosovereignty
482 lecturas
482 lecturas

Usos indebidos comunes de las API criptográficas de Python en la naturaleza

Demasiado Largo; Para Leer

Un estudio empírico que utilizó LICMA analizó 895 proyectos populares de Python y 51 proyectos de MicroPython y encontró que el 52,26% de los proyectos de Python tienen usos indebidos de criptografía. El diseño de API de Python contribuye a menos usos indebidos, en contraste con Java y C. Los análisis híbridos son cruciales para evaluaciones de seguridad integrales.
featured image - Usos indebidos comunes de las API criptográficas de Python en la naturaleza
Crypto Sovereignty Through Technology, Math & Luck HackerNoon profile picture
0-item

Autores:

(1) Anna-Katharina Wickert, Technische Universität Darmstadt, Darmstadt, Alemania ([email protected]);

(2) Lars Baumgärtner, Technische Universität Darmstadt, Darmstadt, Alemania ([email protected]);

(3) Florian Breitfelder, Technische Universität Darmstadt, Darmstadt, Alemania ([email protected]);

(4) Mira Mezini, Technische Universität Darmstadt, Darmstadt, Alemania ([email protected]).

Tabla de enlaces

Resumen y 1 Introducción

2. Fondo

3 Diseño e Implementación de Licma y 3.1 Diseño

3.2 Implementación

4 Metodología y 4.1 Búsqueda y descarga de aplicaciones Python

4.2 Comparación con estudios anteriores

5 Evaluación y 5.1 Proyectos GitHub Python

5.2 MicroPython

6 Comparación con estudios anteriores

7 amenazas a la validez

8 Trabajo relacionado

9 Conclusión, agradecimientos y referencias


ABSTRACTO

Antecedentes : estudios anteriores han demostrado que hasta el 99,59 % de las aplicaciones Java que utilizan API criptográficas hacen un mal uso de la API al menos una vez. Sin embargo, estos estudios se han realizado en Java y C, mientras que faltan estudios empíricos para otros lenguajes. Por ejemplo, un estudio controlado de usuarios con tareas criptográficas en Python ha demostrado que el 68,5 % de los desarrolladores profesionales escriben una solución segura para una tarea criptográfica.


Objetivos : Para comprender si esta observación se aplica al código del mundo real, realizamos un estudio sobre los usos indebidos de criptografía en Python.

Método : Desarrollamos una herramienta de análisis estático que cubre los usos indebidos comunes de 5 API criptográficas de Python diferentes. Con este análisis, analizamos 895 proyectos populares de Python de GitHub y 51 proyectos de MicroPython para dispositivos integrados. Además, comparamos nuestros resultados con los hallazgos de estudios anteriores.

Resultados : Nuestro análisis revela que el 52,26 % de los proyectos Python tienen al menos un mal uso. Además, el diseño de API de algunas bibliotecas criptográficas de Python ayuda a los desarrolladores a evitar el mal uso de las funciones criptográficas, que eran mucho más comunes en estudios realizados con código Java y C. Conclusión : Concluimos que podemos ver un impacto positivo del buen diseño de API en el uso indebido de criptomonedas para aplicaciones Python. Además, nuestro análisis de proyectos MicroPython revela la importancia de los análisis híbridos.

1. INTRODUCCIÓN

La criptografía, en adelante cripto, es muy utilizada hoy en día para proteger nuestros datos y garantizar la confidencialidad. Por ejemplo, sin criptomonedas, no podríamos utilizar la banca en línea ni realizar compras en línea de forma segura. Desafortunadamente, los resultados de investigaciones anteriores muestran que las criptomonedas se utilizan a menudo de forma insegura [3, 4, 7, 9, 11]. Uno de esos problemas es la elección de un parámetro inseguro, como un modo de bloque inseguro, para primitivas criptográficas como el cifrado. Existen muchas herramientas de análisis estático para identificar estos usos indebidos, como CryptoREX [13], CryptoLint [4], CogniCryptSAST [8] y Cryptoguard [12].


Si bien estas herramientas y los respectivos estudios en el campo se concentran en Java y C, los estudios de usuarios sugieren que las API de Python existentes reducen la cantidad de usos indebidos de criptografía. Acar et al. [2] realizó un experimento con 307 usuarios de GitHub que tuvieron que resolver 3 tareas de desarrollo relacionadas con criptografía. Observaron que el 68,5 % de los desarrolladores profesionales escribieron una solución segura en Python para la tarea encomendada. Dentro de un experimento controlado con 256 desarrolladores de Python que intentaron resolver tareas criptográficas simples, Acar et al. [1] identificó que un diseño de API simple, como la criptografía de la biblioteca Python, ayuda a los desarrolladores a escribir código seguro. Sin embargo, ningún estudio empírico ha confirmado todavía que el uso indebido de criptomonedas en Python ocurra con menos frecuencia que en Java o C.


Para evaluar empíricamente los usos indebidos de criptografía en Python, presentamos LICMA , un marco de análisis en varios idiomas compatible con 5 API criptográficas de Python diferentes y la API JCA de Java. Proporcionamos 5 reglas diferentes [4] para todas las API de Python y 6 reglas diferentes [4] para que JCA detecte los usos indebidos de criptografía más comunes. Con LICMA, analizamos 895 aplicaciones populares de Python de GitHub y 51 proyectos de MicroPython para obtener información sobre los usos indebidos de Python. Identificamos que el 52,26 % de las aplicaciones Python GitHub con usos de criptografía tienen al menos un uso indebido, lo que provoca 1.501 usos indebidos. En total, sólo el 7 % de los usos indebidos se producen dentro del propio código de la aplicación, mientras que el resto de los usos indebidos se introducen mediante dependencias. Además, nuestro estudio de proyectos MicroPython revela que los desarrolladores en el dominio integrado tienden a utilizar criptografía a través de código C. Por lo tanto, se revela la importancia de los análisis estáticos híbridos, que pueden rastrear la información del programa, por ejemplo, un gráfico de llamadas, en múltiples idiomas [5, 10].


Para mejorar aún más nuestra comprensión de si las API de Python son menos propensas a usos indebidos de criptografía, hacemos las siguientes contribuciones:


• Una novedosa herramienta de análisis en varios idiomas para detectar usos indebidos de criptografía en Python y Java. Para Python, cubrimos los usos indebidos de criptografía para 5 API criptográficas comunes de Python y para Java, la API estándar JCA.


Tabla 1: Seis usos indebidos de criptografía comúnmente discutidos en Java y C [4, 13] con un ejemplo de una violación en Python.


• Un estudio empírico sobre los usos indebidos de las criptomonedas en las 895 aplicaciones Python más populares en GitHub, que revela 1.501 usos indebidos.


• Una comparación de nuestros hallazgos en aplicaciones Python con estudios previos sobre usos indebidos de criptomonedas en aplicaciones de Android e imágenes de firmware en C. Observamos que la mayoría de las aplicaciones Python son más seguras y la distribución entre los tipos concretos de usos indebidos difiere mucho .


• Un estudio empírico de los usos indebidos de criptografía en proyectos MicroPython que revela la importancia de los análisis estáticos híbridos.


• Un paquete de replicación que incluye ambos conjuntos de datos utilizados para nuestro estudio, los resultados de nuestro análisis y el código de LICMA[1].


Este documento está disponible en arxiv bajo licencia CC BY 4.0 DEED.


[1] dx.doi.org/10.6084/m9.figshare.16499085