An Empirical Study of Cryptographic Misuse in Android Applications

정보

Keywords

  • 안드로이드
  • 암호화
  • 오용

배경

  • 개발자들은 안드로이드에서 비밀번호 및 개인 정보를 기기에서 보호하기 위하여 암호화 API를 사용함
  • 암호학자들은 제대로 된 사용 방법이 강력한 보안을 보장해 주며 잘못된 방법이 문제로 이어질 수 있음을 알고 있음
  • 하지만 개발자는 올바른 방식으로 암호화 API를 사용하는 방법을 알고 있는지 모르겠음

목표

  • 개발자들이 암호화 API를 제대로 사용하는지를 확인해 보자.
  • 특히 잘 알려진 2개의 보안 표준에 중점을 둠
    1. chosen plaintext attacks (IND-CPA)
    2. cracking resistance
  • 점검 플랫폼은 안드로이드
    1. 다양한 개인정보이 위치하고 있음
    2. 안정적인 Java 암호화 API를 사용함
    3. 점검할 수 있는 모수가 큼

방법론

  • Google Play 마켓에 올라가 있는 프로그램을 자동으로 확인하는 프로그램 분석 기법을 개발함
  • CryptoLint, Androguard Android 프로그램 분석 프레임워크 기반의 정적 분석 도구
    1. Androguard가 Dalvik byte-code를 disassemble해주면, 이를 IR로 바꿈
    2. 이 IR을 비슷한 그룹군으로 구분하고, 프로시저 간 분석을 통해 sCFG(Control Flow Graph)를 만듦
      • 모든 메소드들은 SSA(single static assignment)로 변환됨
      • 모든 클래스들의 계층 구조를 추출함
      • 이를 기반으로 sCFG를 생성함
    3. slicing 알고리즘으로 특정 지점의 변수를 기준으로 순방향 또는 역방향으로 탐색함
    4. 보안 속성들을 평가함

결과

  • 암호화 API를 사용하는 대략 88%의 어플리케이션에서 하나 이상의 실수를 하는 것을 발견함

결론

  • 안드로이드 어플리케이션에서 전반적인 암호화 보안을 향상시키는 방향으로 분석 기반의 구체적인 수정 사항을 제안해 줌.

+ Recent posts