paint-brush
실제 Python 암호화 API의 일반적인 오용~에 의해@cryptosovereignty
573 판독값
573 판독값

실제 Python 암호화 API의 일반적인 오용

너무 오래; 읽다

LICMA를 사용한 실증적 연구에서는 인기 있는 Python 프로젝트 895개와 MicroPython 프로젝트 51개를 분석한 결과 Python 프로젝트의 52.26%가 암호화폐 오용을 겪고 있는 것으로 나타났습니다. Python의 API 설계는 Java 및 C와 대조적으로 오용을 줄이는 데 기여합니다. 하이브리드 분석은 포괄적인 보안 평가에 중요합니다.
featured image - 실제 Python 암호화 API의 일반적인 오용
Crypto Sovereignty Through Technology, Math & Luck HackerNoon profile picture
0-item

저자:

(1) Anna-Katharina Wickert, Technische Universität Darmstadt, 다름슈타트, 독일([email protected]);

(2) Lars Baumgärtner, Technische Universität Darmstadt, 다름슈타트, 독일([email protected]);

(3) 독일 다름슈타트 Technische Universität Darmstadt의 Florian Breitfelder ([email protected]);

(4) Mira Mezini, Technische Universität Darmstadt, 다름슈타트, 독일 ([email protected]).

링크 표

초록 및 서론 1편

2 배경

3 Licma 및 3.1 설계의 설계 및 구현

3.2 구현

4 방법론과 4.1 Python 앱 검색 및 다운로드

4.2 선행연구와의 비교

5 평가 및 5.1 GitHub Python 프로젝트

5.2 마이크로파이썬

6 선행연구와의 비교

7 타당성에 대한 위협

8 관련 업무

9 결론, 감사의 말씀, 참고문헌


추상적인

배경 : 이전 연구에 따르면 암호화 API를 사용하는 Java 앱의 최대 99.59%가 API를 한 번 이상 오용하는 것으로 나타났습니다. 그러나 이러한 연구는 Java와 C에 대해 수행된 반면, 다른 언어에 대한 실증적 연구는 누락되어 있다. 예를 들어, Python의 암호화 작업에 대한 통제된 사용자 연구에 따르면 전문 개발자의 68.5%가 암호화 작업을 위한 보안 솔루션을 작성하는 것으로 나타났습니다.


목표 : 이러한 관찰이 실제 코드에 적용되는지 이해하기 위해 Python의 암호화 오용에 대한 연구를 수행했습니다.

방법 : 우리는 5가지 Python 암호화 API의 일반적인 오용을 다루는 정적 분석 도구를 개발했습니다. 이 분석을 통해 우리는 GitHub의 인기 Python 프로젝트 895개와 임베디드 장치용 MicroPython 프로젝트 51개를 분석했습니다. 또한, 우리는 우리의 결과를 이전 연구 결과와 비교했습니다.

결과 : 우리의 분석에 따르면 Python 프로젝트의 52.26%가 적어도 한 번 이상 오용된 것으로 나타났습니다. 또한 일부 Python 암호화 라이브러리의 API 설계는 개발자가 Java 및 C 코드로 수행된 연구에서 훨씬 더 일반적이었던 암호화 기능을 오용하는 것을 방지합니다. 결론 : 우리는 Python 애플리케이션의 암호화폐 오용에 대한 좋은 API 설계의 긍정적인 영향을 확인할 수 있다고 결론을 내렸습니다. 또한 MicroPython 프로젝트에 대한 분석을 통해 하이브리드 분석의 중요성이 드러났습니다.

1. 소개

암호화(이하 암호화)는 오늘날 데이터를 보호하고 기밀성을 보장하기 위해 널리 사용됩니다. 예를 들어 암호화폐가 없으면 온라인 뱅킹을 안전하게 사용하거나 온라인 쇼핑을 할 수 없습니다. 불행하게도 이전 연구 결과에 따르면 암호화폐는 종종 안전하지 않은 방식으로 사용되는 것으로 나타났습니다[3, 4, 7, 9, 11]. 그러한 문제 중 하나는 암호화와 같은 암호화 기본 요소에 대해 안전하지 않은 블록 모드와 같은 안전하지 않은 매개변수를 선택하는 것입니다. 이러한 오용을 식별하기 위해 CryptoREX [13], CryptoLint [4], CogniCryptSAST [8] 및 Cryptoguard [12]와 같은 많은 정적 분석 도구가 존재합니다.


이러한 도구와 각각의 실제 연구는 Java 및 C에 중점을 두고 있지만 사용자 연구에 따르면 기존 Python API가 암호화 오용 횟수를 줄이는 것으로 나타났습니다. Acaret al. [2]는 307명의 GitHub 사용자를 대상으로 3가지 암호화 관련 개발 작업을 해결해야 하는 실험을 수행했습니다. 그들은 전문 개발자의 68.5%가 주어진 작업에 대해 Python으로 보안 솔루션을 작성하는 것을 관찰했습니다. 간단한 암호화 작업을 해결하려고 시도한 256명의 Python 개발자를 대상으로 한 통제된 실험에서 Acar et al. [1]은 Python 라이브러리 암호화 와 같은 간단한 API 설계가 개발자의 보안 코드 작성을 지원한다는 것을 확인했습니다. 그러나 아직까지 Python에서 암호화폐 오용이 Java나 C에서보다 덜 자주 발생한다는 사실을 확인한 실증적 실제 연구는 없습니다.


Python의 암호화 오용을 경험적으로 평가하기 위해 5가지 Python 암호화 API와 Java의 JCA API를 지원하는 다중 언어 분석 프레임워크인 LICMA를 소개합니다. 우리는 가장 일반적인 암호화 오용을 감지하기 위해 모든 Python API에 대해 5가지 규칙[4]을 제공하고 JCA에 대해 6가지 규칙[4]을 제공합니다. LICMA를 통해 우리는 GitHub의 인기 Python 앱 895개와 MicroPython 프로젝트 51개를 분석하여 Python의 오용에 대한 통찰력을 얻었습니다. 우리는 암호화폐를 사용하는 Python GitHub 앱의 52.26%에서 적어도 한 번의 오용으로 인해 1,501건의 오용이 발생한 것으로 확인했습니다. 전체적으로 오용의 7%만이 애플리케이션 코드 자체 내에서 발생하고 나머지 오용은 종속성으로 인해 발생합니다. 또한 MicroPython 프로젝트에 대한 연구에 따르면 임베디드 도메인의 개발자는 C 코드를 통해 암호화를 사용하는 경향이 있는 것으로 나타났습니다. 따라서 여러 언어에 걸쳐 프로그램 정보(예: 호출 그래프)를 추적할 수 있는 하이브리드 정적 분석의 중요성이 드러났습니다[5, 10].


Python API가 암호화 오용 가능성이 적은지 여부를 더 잘 이해하기 위해 다음과 같이 기여합니다.


• Python 및 Java에서 암호화 오용을 탐지하는 새로운 다국어 분석 도구입니다. Python의 경우 5가지 일반적인 Python 암호화 API 및 Java의 경우 표준 API JCA에 대한 암호화 오용을 다룹니다.


표 1: Java 및 C에서 일반적으로 논의되는 6가지 암호화 오용[4, 13]과 Python의 위반 사례.


• GitHub에서 가장 인기 있는 895개 Python 애플리케이션의 암호화 오용에 대한 실증적 연구에서 1,501개의 오용이 밝혀졌습니다.


• Python 애플리케이션에 대한 조사 결과를 Android 앱 및 C의 펌웨어 이미지에 대한 실제 암호화 오용에 대한 이전 연구와 비교합니다. 우리는 대부분의 Python 애플리케이션이 더 안전하고 구체적인 오용 유형 간의 분포가 많이 다르다는 것을 관찰했습니다. .


• 하이브리드 정적 분석의 중요성을 보여주는 MicroPython 프로젝트의 암호화 오용에 대한 실증적 연구입니다.


• 연구에 사용된 데이터 세트, 분석 결과 및 LICMA 코드를 모두 포함하는 복제 패키지[1].


이 문서는 CC BY 4.0 DEED 라이선스에 따라 arxiv에서 볼 수 있습니다.


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