암호화
An Empirical Study of Cryptographic Misuse in Android Applications
정보
Keywords
배경
- 개발자들은 안드로이드에서 비밀번호 및 개인 정보를 기기에서 보호하기 위하여 암호화 API를 사용함
- 암호학자들은 제대로 된 사용 방법이 강력한 보안을 보장해 주며 잘못된 방법이 문제로 이어질 수 있음을 알고 있음
- 하지만 개발자는 올바른 방식으로 암호화 API를 사용하는 방법을 알고 있는지 모르겠음
목표
- 개발자들이 암호화 API를 제대로 사용하는지를 확인해 보자.
- 특히 잘 알려진 2개의 보안 표준에 중점을 둠
- chosen plaintext attacks (IND-CPA)
- cracking resistance
- 점검 플랫폼은 안드로이드
- 다양한 개인정보이 위치하고 있음
- 안정적인 Java 암호화 API를 사용함
- 점검할 수 있는 모수가 큼
방법론
- Google Play 마켓에 올라가 있는 프로그램을 자동으로 확인하는 프로그램 분석 기법을 개발함
- CryptoLint, Androguard Android 프로그램 분석 프레임워크 기반의 정적 분석 도구
- Androguard가 Dalvik byte-code를 disassemble해주면, 이를 IR로 바꿈
- 이 IR을 비슷한 그룹군으로 구분하고, 프로시저 간 분석을 통해 sCFG(Control Flow Graph)를 만듦
- 모든 메소드들은 SSA(single static assignment)로 변환됨
- 모든 클래스들의 계층 구조를 추출함
- 이를 기반으로 sCFG를 생성함
- slicing 알고리즘으로 특정 지점의 변수를 기준으로 순방향 또는 역방향으로 탐색함
- 보안 속성들을 평가함
결과
- 암호화 API를 사용하는 대략 88%의 어플리케이션에서 하나 이상의 실수를 하는 것을 발견함
결론
- 안드로이드 어플리케이션에서 전반적인 암호화 보안을 향상시키는 방향으로 분석 기반의 구체적인 수정 사항을 제안해 줌.