Авторы:
(1) Анна-Катарина Викерт, Технический университет Дармштадта, Дармштадт, Германия ([email protected]);
(2) Ларс Баумгертнер, Технический университет Дармштадта, Дармштадт, Германия ([email protected]);
(3) Флориан Брайтфельдер, Технический университет Дармштадта, Дармштадт, Германия ([email protected]);
(4) Мира Мезини, Технический университет Дармштадта, Дармштадт, Германия ([email protected]).
Краткое содержание и 1 Введение
3 Проектирование и реализация Licma и 3.1 Дизайн
4. Методология и 4.1. Поиск и загрузка приложений Python.
4.2 Сравнение с предыдущими исследованиями
5 оценочных и 5.1 проектов Python на GitHub
6 Сравнение с предыдущими исследованиями
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 показывает важность гибридного анализа.
Криптография, далее криптография, в настоящее время широко используется для защиты наших данных и обеспечения конфиденциальности. Например, без криптовалюты мы не смогли бы безопасно пользоваться онлайн-банкингом или совершать покупки в Интернете. К сожалению, результаты предыдущих исследований показывают, что криптовалюта часто используется небезопасным способом [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.
• Эмпирическое исследование злоупотреблений криптовалютой в 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