Dex 부분 암호화는 무엇인가요? (Selective Dex encryption)

1. Dex 부분 암호화 (Selective Dex encryption)

Dex 부분 암호화는 안드로이드 앱의 Java/Kotlin 코드로 빌드된 Dex 파일을 모두 암호화하여 보호하는 Dex 암호화 기능이 일부 앱에서 성능을 저하하는 경우 이를 완화할 수 있도록 제공되는 기능입니다.

Dex 전체 암호화를 적용한 앱을 단말에 설치 후 첫 실행 시 액티비티가 실행될 때까지 걸리는 시간이 증가할 수 있습니다. 앱이 단말에 설치될 때 Dex 파일은 단말에 맞게 최적화되는 과정을 거치게 되는데 앱실링을 적용하여 암호화된 Dex 파일은 단말에 설치될 때 시스템이 최적화를 하지 못합니다. 이로 인해 앱을 처음 실행할 때 복호화되는 Dex를 대상으로 최적화를 진행하게 되고 이때 딜레이가 발생합니다.

2. Dex 부분암호화 적용하기

1) 실링 옵션 적용할 때 부분 암호화 선택

앱실링 적용 시 Dex 암호화 메뉴에서 부분 암호화를 활성화하여 적용할 수 있습니다.

sealing_option_kr.png

2) 실링 요청

부분 암호화를 처음 사용하는 경우 실링을 요청하면 다음과 같은 알림창이 표시됩니다. ‘확인’ 버튼을 선택하여 다음 화면으로 진행할 수 있습니다.

kr_popup.png

위와 같이 업로드를 시도한 앱에 대해  팝업창이 표시됩니다. 확인 버튼을 누르면 새로운 팝업창이 표시되며, 이 화면에서 해당 앱에서 보호할 클래스 또는 패키지를 추가할 수 있습니다.kr_popup3.png

 

3) 부분암호화 적용할 클래스 또는 패키지 추가

아래와 같이 업로드할 앱의 클래스 또는 패키지를 미리 추가한 다음 팝업창을 닫고 다시 실링을 요청하면 Dex 부분 암호화가 정상적으로 적용됩니다.

kr_popup2.png

4) 실링 재요청 및 결과 확인

Dex 부분 암호화를 적용한 다음 실링을 요청하면 실링 내역 패널에서 변경된 실링 옵션이 정상적으로 적용된 것을 확인할 수 있습니다.

result.png

 

5) 부분 암호화 패키지 및 클래스 목록 관리

Dex 부분 암호화를 위한 패키지 및 클래스를 관리하는 팝업창은 안드로이드 보안 서비스 페이지의 앱 목록 패널에서 각 앱마다 가지고 있는 ‘Dex 부분 암호화’ 버튼을 선택하여 접근할 수 있습니다. 

krapplist.png

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



도움이 되었습니까?
0명 중 0명이 도움이 되었다고 했습니다.
comment section

0 댓글

댓글을 남기려면 로그인하세요.