paint-brush
Распространенные злоупотребления API-интерфейсами Python Crypto в дикой природек@cryptosovereignty
579 чтения
579 чтения

Распространенные злоупотребления API-интерфейсами Python Crypto в дикой природе

Слишком долго; Читать

Эмпирическое исследование с использованием LICMA проанализировало 895 популярных проектов Python и 51 проект MicroPython и обнаружило, что в 52,26% проектов Python используются криптографические злоупотребления. Дизайн API Python способствует меньшему количеству злоупотреблений, в отличие от Java и C. Гибридный анализ имеет решающее значение для комплексной оценки безопасности.
featured image - Распространенные злоупотребления API-интерфейсами Python Crypto в дикой природе
Crypto Sovereignty Through Technology, Math & Luck HackerNoon profile picture
0-item

Авторы:

(1) Анна-Катарина Викерт, Технический университет Дармштадта, Дармштадт, Германия ([email protected]);

(2) Ларс Баумгертнер, Технический университет Дармштадта, Дармштадт, Германия ([email protected]);

(3) Флориан Брайтфельдер, Технический университет Дармштадта, Дармштадт, Германия ([email protected]);

(4) Мира Мезини, Технический университет Дармштадта, Дармштадт, Германия ([email protected]).

Таблица ссылок

Краткое содержание и 1 Введение

2 Фон

3 Проектирование и реализация Licma и 3.1 Дизайн

3.2 Реализация

4. Методология и 4.1. Поиск и загрузка приложений Python.

4.2 Сравнение с предыдущими исследованиями

5 оценочных и 5.1 проектов Python на GitHub

5.2 МикроПитон

6 Сравнение с предыдущими исследованиями

7 угроз валидности

8 сопутствующих работ

9. Заключение, благодарности и ссылки


АБСТРАКТНЫЙ

Справочная информация : предыдущие исследования показали, что до 99,59 % Java-приложений, использующих криптографические API, хотя бы один раз неправильно используют API. Однако эти исследования проводились на Java и C, а эмпирические исследования для других языков отсутствуют. Например, контролируемое исследование пользователей с криптографическими задачами на Python показало, что 68,5% профессиональных разработчиков пишут безопасное решение для криптографических задач.


Цели : чтобы понять, справедливо ли это наблюдение для реального кода, мы провели исследование злоупотреблений криптографией в Python.

Метод : мы разработали инструмент статического анализа, который охватывает распространенные злоупотребления 5 различными криптографическими API Python. В ходе этого анализа мы проанализировали 895 популярных проектов Python с GitHub и 51 проект MicroPython для встраиваемых устройств. Далее мы сравнили наши результаты с результатами предыдущих исследований.

Результаты : Наш анализ показывает, что 52,26 % проектов Python имеют хотя бы одно неправильное использование. Кроме того, дизайн API некоторых криптографических библиотек Python помогает разработчикам избежать злоупотреблений криптографическими функциями, которые гораздо чаще встречались в исследованиях, проведенных с кодом Java и C. Вывод : мы пришли к выводу, что видим положительное влияние хорошего дизайна API на злоупотребление криптовалютой в приложениях Python. Кроме того, наш анализ проектов MicroPython показывает важность гибридного анализа.

1. ВВЕДЕНИЕ

Криптография, далее криптография, в настоящее время широко используется для защиты наших данных и обеспечения конфиденциальности. Например, без криптовалюты мы не смогли бы безопасно пользоваться онлайн-банкингом или совершать покупки в Интернете. К сожалению, результаты предыдущих исследований показывают, что криптовалюта часто используется небезопасным способом [3, 4, 7, 9, 11]. Одной из таких проблем является выбор небезопасного параметра, например небезопасного блочного режима, для криптопримитивов, таких как шифрование. Для выявления подобных злоупотреблений существует множество инструментов статического анализа, например CryptoREX [13], CryptoLint [4], CogniCryptSAST [8] и Cryptoguard [12].


Хотя эти инструменты и соответствующие практические исследования сосредоточены на Java и C, исследования пользователей показывают, что существующие API-интерфейсы Python сокращают количество злоупотреблений криптовалютой. Акар и др. [2] провели эксперимент с 307 пользователями GitHub, которому нужно было решить 3 задачи разработки, связанные с криптографией. Они отметили, что 68,5% профессиональных разработчиков написали безопасное решение на Python для данной задачи. В рамках контролируемого эксперимента с 256 разработчиками Python, которые пытались решить простые криптографические задачи, Акар и др. [1] выявили, что простая конструкция API, такая как криптография библиотеки Python, помогает разработчикам писать безопасный код. Однако ни одно эмпирическое исследование еще не подтвердило, что злоупотребления криптографией в Python происходят реже, чем в Java или C.


Чтобы эмпирически оценить злоупотребления криптографией в Python, мы представляем LICMA , многоязычную среду анализа с поддержкой 5 различных криптографических API Python и Java JCA API. Мы предоставляем 5 различных правил [4] для всех API Python и 6 различных правил [4] для JCA для обнаружения наиболее распространенных злоупотреблений криптовалютой. С помощью LICMA мы проанализировали 895 популярных приложений Python с GitHub и 51 проект MicroPython, чтобы получить представление о злоупотреблениях Python. Мы определили, что 52,26 % приложений Python GitHub с использованием криптовалют имеют по крайней мере одно неправильное использование, вызывающее 1501 неправильное использование. В общей сложности только 7% злоупотреблений происходят внутри самого кода приложения, а остальные злоупотребления привносятся зависимостями. Кроме того, наше исследование проектов MicroPython показывает, что разработчики встраиваемых систем склонны использовать шифрование с помощью кода C. Таким образом, раскрывается важность гибридного статического анализа, который может отслеживать информацию о программе, например, граф вызовов, на нескольких языках [5, 10].


Чтобы еще больше улучшить наше понимание того, менее ли API Python менее склонны к злоупотреблениям криптовалютой, мы вносим следующий вклад:


• Новый многоязычный инструмент анализа для обнаружения злоупотреблений криптографией в Python и Java. Для Python мы рассматриваем злоупотребления криптографией для 5 распространенных криптографических API Python, а для Java — стандартный API JCA.


Таблица 1. Шесть часто обсуждаемых злоупотреблений криптографией в Java и C [4, 13] с примером нарушения в Python.


• Эмпирическое исследование злоупотреблений криптовалютой в 895 самых популярных приложениях Python на GitHub выявило 1501 злоупотребление.


• Сравнение наших результатов по приложениям Python с предыдущими исследованиями злоупотреблений криптовалютой в реальных условиях для приложений Android и образов прошивок на C. Мы заметили, что большинство приложений Python более безопасны, а распределение между конкретными типами злоупотреблений сильно различается. .


• Эмпирическое исследование злоупотреблений криптовалютой в проектах MicroPython, которое показывает важность гибридного статического анализа.


• Пакет репликации, включающий оба набора данных, использованных для нашего исследования, результаты нашего анализа и код LICMA[1].


Этот документ доступен на arxiv под лицензией CC BY 4.0 DEED.


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