안전하지 않은 암호화 모드 사용 문제 해결하기

이 정보는 보안 수준이 낮은 AES/ECB 모드를 사용하는 암호화가 포함된 앱의 개발자를 대상으로 합니다. 이렇게 보안이 취약한 모드를 사용하여 콘텐츠를 암호화하면 암호문의 보안 수준이 낮아지고 사용자 데이터가 위험에 노출될 수 있습니다. 앱의 보안 수준이 낮은 암호화 모드 위치는 앱의 Play Console 알림에서 확인할 수 있습니다. 위치가 '(동적으로 로드된 코드)'로 끝나면 앱 또는 앱에서 사용하는 라이브러리에서 동적으로 로드된 코드 내에 있는 것입니다. 애플리케이션은 일반적으로 주문형 기능 제공을 통해 동적으로 로드된 코드를 사용하지만 다른 권장되지 않는 기법도 있습니다. 일부 권장되지 않는 기법은 Google Play 정책을 위반하므로 사용해서는 안 됩니다. 또한 패커가 애플리케이션 코드를 동적으로 로드된 코드로 변환할 수 있습니다.

'안전하지 않은 암호화 모드' 알림 해결 방법

앱에서 암호화가 인스턴스화되는 위치를 검토합니다. 다음 구성 모드를 통해 안전하지 않은 AES/ECB가 사용되었음을 알 수 있습니다. 

  • 'AES'
  • 'AES/ECB/NoPadding'
  • 'AES/ECB/PKCS5Padding'
  • 'AES/ECB/ISO10126Padding'

예를 들어 다음 코드에서는 'AES'가 제공되었기 때문에 AES/ECB 모드를 기본적으로 사용합니다. 

// Console 알림은 이 방식을 가리킴
 public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
    Cipher cipher = Cipher.getInstance(“AES”); 
// 기본적으로 AES/ECB 모드 사용
    SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);

    return cipher.doFinal(plainText);

 }

개발자는 앞서 언급한 안전하지 않은 모드 대신 'AES/GCM/NoPadding'을 사용하는 것이 좋습니다.

다음 단계

  1. 위에 안내된 단계를 따라 앱을 업데이트합니다.
  2. Play Console에 로그인하여 업데이트된 앱 버전을 제출합니다.

이 기간 동안 신규 앱 또는 앱 업데이트는 요청 검토가 끝날 때까지 게시 대기 중 상태가 됩니다. 앱이 적절히 업데이트되지 않은 경우에는 계속해서 경고가 표시됩니다.

도움이 필요한 경우

취약점에 관한 기술적인 문의사항이 있다면 'android-security' 태그를 사용하여 Stack Overflow에 질문을 게시하시기 바랍니다.


 

도움이 되었나요?

어떻게 하면 개선할 수 있을까요?
false
기본 메뉴
4144281079510055440
true
도움말 센터 검색
true
true
true
true
true
5016068
false
false