데이터를 암호화 하기 위해서는 암호화 할 데이타 와 암호화에 사용할 암호키가 필요합니다. 암호키는 일반적으로 128비트 혹은 256비트 값이 사용되는데, 많은 분들이 암호키로 78 자리의 랜덤 숫자를 기억하기 보다는 짤막한 패스워드 (passphrase) 를 사용하는 편을 더 좋아합니다. 이런 분들을 위해, 안드로이드의 javax.crypto.SecretKeyFactory 클래스에서는 문자열을 이용하여 암호키를 생성하는 방법을 지원하고 있습니다.

하지만, 안드로이드 4.4 부터는 SecretKeyFactory 의 동작 방식에 약간의 변경이 생겼습니다. 만일 여러분의 어플리케이션이 다음과 같은 조건에 해당한다면, 해당 변화로 인해 킷캣 버전에서는 어플리케이션이 정상적으로 동작하지 않을 수 있습니다. 바로 지금 확인해 보시길 바랍니다.
  1. 대칭키를 생성하기 위하여 SecretKeyFactory 를 사용하고,
  2. 키 생성 알고리즘으로 PBKDF2WithHmacSHA1 알고리즘이 사용되며,
  3. 패스워드로 유니코드 문자열을 사용 가능한 경우
안드로이드 4.4 이전에는 PBKDF2WithHmacSHA1 알고리즘을 사용할 때, 패스워드로 제공된 각 캐릭터의 처음 8비트만을 사용하도록 구현되어 있어습니다. 하지만, 안드로이드 4.4 부터는 관련 PCKS #5 표준에서 권장하는대로, 유니코드 문자에 포함된 모든 바이트를 사용하도록 구현이 변경되었습니다. 패스워드로 아스키 문자만을 지원하는 경우 (8비트로 표현 가능한) 에는 이전과 별 다른 차이가 없겠지만, 만일 유니코드 문자열을 패스워드로 사용하고 계셨거나, 사용자가 유니코드 문자열을 패스워드로 사용할 수 있도록 지원하고 계셨다면, 안드로이드 4.4 이후 버전 부터는 SecretKeyFactory 를 통해 생성되는 암호키의 결과가 이전과 달라 질 수 있습니다.

때문에, 킷캣에서는 이전 버전과의 호환성을 유지하기 위하여 캐릭터 비트 데이터의 앞 쪽 8비트 만을 사용하는 암호키 생성 알고리즘 - PBKDF2WithHmacSHA1And8bit 을 추가 하였습니다.  유니코드를 지원하는 패스워드를 사용하고, PBKDF2WithHmacSHA1 알고리즘을 사용하고 계셨던 분들은 하위 호환성을 위해 기존 코드를 다음과 같이 수정하셔야합니다.


import android.os.Build;
 SecretKeyFactory factory;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   // Use compatibility key factory -- only uses lower 8-bits of passphrase chars
   factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1And8bit");
} else {
   // Traditional key factory. Will use lower 8-bits of passphrase chars on
   // older Android versions (API level 18 and lower) and all available bits
   // on KitKat and newer (API level 19 and higher).
   factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
}


LiquidFun 라이브러리는 C++로 작성되었고 C++ 컴파일러가 존재하는 어떤 플랫폼 상에서도 활용하실 수 있습니다. 프로젝트 홈페이지에 가보시면, 안드로이드, 리눅스, OSX, 윈도우 상에서 라이브러리를 빌드하는 방법, 간단한 예제 어플리케이션, API 활용법, UnitTest 등 유용한 내용을 확인해 보실 수 있습니다.

구글은 개발자분들이 LiquidFun 라이브러리를 이용해 어떤 멋진 결과물을 만들어낼지 기대하고 있습니다. 최신 버전 라이브러리는 GitHub 의 LiquidFun 프로젝트 페이지에서 다운로드 받으실 수 있고, 라이브러리에 관한 궁금한점이나 최신 뉴스가 궁금하신 분들은 LiquidFun 에 관한 구글 그룹스에 가입하시길 바랍니다.



유니티 엔진을 위한 구글 플레이 게임 플러그인

유니티 테크놀로지스의 유명한 크로스 플랫폼 게임 엔진인 유니티 를 이용하여 게임을 개발하고 계신 개발자 분들은 새롭게 공개된 구글 플레이 게임 플러그인 을 살펴보시기 바랍니다. 이 플러그인을 활용하면 유니티의 소셜 인터페이스를 통해 사인인, 업적, 리더보드, 클라우드 세이브 기능을 활용할 수 있습니다. 안드로이드와 iOS 두 플랫폼 모두를 지원하며 GitHub 의 플레이 게임스 프로젝트 페이지에서 최신 릴리즈 버전과 유용한 문서, 샘플 코드를 살펴보실 수 있습니다.


구글 플레이의 새로운 게임 카테고리

2014년 2월, 플레이 스토어에 새로운 게임 카테고리 세 가지 - 시뮬레이션, 롤플레잉, 교육 이 추가될 예정 입니다. 지금 바로 구글 플레이 개발자 콘솔 상에서 새로운 카테고리를 선택할 수 있으며, 카테고리를 지정해 두시면 카테고리가 일반 사용자에게 공개되는 대로 여러분의 게임이 해당 카테고리에 포함될 것 입니다. 새로운 카테고리를 선택하셔도 2014년 2월 새로운 카테고리가 실재로 공개되기 전까지 현재의 게임 카테고리가 변경되는 것은 아닙니다.