1. Dex 부분 암호화 (Selective Dex encryption)
Dex 부분 암호화는 안드로이드 앱의 Java/Kotlin 코드로 빌드된 Dex 파일을 모두 암호화하여 보호하는 Dex 암호화 기능이 일부 앱에서 성능을 저하하는 경우 이를 완화할 수 있도록 제공되는 기능입니다.
Dex 전체 암호화를 적용한 앱을 단말에 설치 후 첫 실행 시 액티비티가 실행될 때까지 걸리는 시간이 증가할 수 있습니다. 앱이 단말에 설치될 때 Dex 파일은 단말에 맞게 최적화되는 과정을 거치게 되는데 앱실링을 적용하여 암호화된 Dex 파일은 단말에 설치될 때 시스템이 최적화를 하지 못합니다. 이로 인해 앱을 처음 실행할 때 복호화되는 Dex를 대상으로 최적화를 진행하게 되고 이때 딜레이가 발생합니다.
2. 부분암호화 적용하기
1) 실링 옵션 적용할 때 부분 암호화 선택
앱실링 적용 시 코드 암호화 메뉴에서 부분 암호화를 활성화하여 적용할 수 있습니다. 기본적으로 모든 암호화를 활성화하는 것을 권장드립니다.
2) 실링 요청
부분 암호화를 처음 사용하는 경우 실링을 요청하면 다음과 같은 알림창이 표시됩니다. ‘확인’ 버튼을 선택하여 다음 화면으로 진행할 수 있습니다.
위와 같이 업로드를 시도한 앱에 대해 팝업창이 표시됩니다. 확인 버튼을 누르면 새로운 팝업창이 표시되며, 이 화면에서 해당 앱에서 보호할 클래스 또는 패키지를 추가할 수 있습니다.
3) 부분암호화 적용할 클래스 또는 패키지 추가
아래와 같이 업로드할 앱의 클래스 또는 패키지를 미리 추가한 다음 팝업창을 닫고 다시 실링을 요청하면 Dex 부분 암호화가 정상적으로 적용됩니다.
4) 실링 재요청 및 결과 확인
Dex 부분 암호화를 적용한 다음 실링을 요청하면 실링 내역 패널에서 변경된 실링 옵션이 정상적으로 적용된 것을 확인할 수 있습니다.
5) 부분 암호화 패키지 및 클래스 목록 관리
Dex 부분 암호화를 위한 패키지 및 클래스를 관리하는 팝업창은 안드로이드 보안 서비스 페이지의 앱 목록 패널에서 각 앱마다 가지고 있는 ‘부분 암호화 관리’ 버튼을 선택하여 접근할 수 있습니다.
3. Dex 전체 암호화 vs 부분 암호화
전체 암호화에 따른 성능 저하는 저사양 단말에서 비교적 크게 발생합니다.
아래 비교표를 통해 안드로이드 OS별 Dex 암호화 옵션에 따른 성능을 확인하실 수 있습니다.
성능 측정 기준
- OS 별 단말에 설치 후 최초 실행 시 Activity가 실행될 때까지 걸리는 시간 측정
- 앱실링 2.22.0.0 버전 기준
- Dex 전체 크기가 22MB인 앱으로 측정하였으며, Selective dex 기능을 적용할 때 1~2MB의 패키지를 선택하여 암호화하였습니다.
- 앱의 dex 크기 및 앱의 구조에 따라 실제 성능은 편차가 발생할 수 있습니다.
설치 후 첫 실행시 Activity 실행에 걸리는 시간 |
||||
안드로이드 버전 |
앱실링없는 원본 (초) |
전체 암호화 (초) |
부분 암호화 (초) |
Dex 암호화 하지 않음 (초) |
5 |
1.99 |
9.42 |
5.64 |
3.51 |
6 |
1.79 |
8.64 |
5.29 |
3.84 |
7 |
0.79 |
5.11 |
4.31 |
3.49 |
8 |
0.84 |
6.23 |
3.62 |
4.14 |
9 |
1.80 |
8.40 |
4.52 |
3.28 |
10 |
1.22 |
5.09 |
2.76 |
2.06 |
11 |
0.43 |
2.91 |
1.80 |
1.50 |