티스토리 뷰

반응형

 

 

 

가. 원인

  - 암호키가 소스코드에 하드코딩되어 암호화에 사용

 

 

나. 영향

  - 실행파일이 유출 시, 디컴파일을 통해 암호화키가 유출되어 중요정보를 복호화

 

 

다. 보안대책

  - 암호키는 암호화하여 안전한 별도의 위치에 저장 후 사용

 

 

라. 안전한 코드

1. 안전한 암호키 사용

 

  public String encryptData( String plainText ) {

     String key = getPassword( "/var/password.ini" );

     key = decrypt( key );

     SecretKeySpec keySpec = new SecretKeySpec( key.getBytes(), "AES" );

     ...

     Cipher cipher = Cipher.getInstance( "AES" );

     cipher.init( Cipher.ENCRYPT_MODE, keySpec );

     byte[] encryptData = cipher.doFinal( plainText.getBytes( "UTF-8" ) );

     String result = new String( encryptData );

     return result;   

  }

 

 

 

마. 진단방법

<암호화 키 사용방법 확인>

  1. DB접속 등 패스워드 사용이 필요한 기능을 확인

  2. 사용된 패스워드의 암호화 적용여부를 확인

  3. 암호화 된 패스워드가 소스코드에 저장되어 있는지 확인

 

 

 

바. 정/오탐 케이스

<정탐 케이스>

  1. 암호화 키를 소스코드에 하드코딩으로 사용하는 경우

 

<오탐 케이스>

  1. 별도의 함수 등으로 암호키를 가져올 경우

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday