[Android] API 키 안전하게 숨기기 (local.properties + BuildConfig)
·
Android/Security & Privacy
프로젝트 관리를 위해 Git과 같은 형상관리 툴을 사용할 경우 API 키 값과 같은 중요 정보들이 노출될 수 있음을 고려해야 한다. 안드로이드에서 일반적으로 local.properties를 gitignore에 등록하여 외부 노출을 막는다. 이 점을 이용하여 local.properties에 중요 값을 저장하고, 앱의 빌드 정보에 키 값을 추가하여 BuildConfig로 코드 상에서 접근할 수 있다.◾ local.properties 임시 값 설정/** * local.properties */API_KEY_1 = "89sdfsbsn815832jdsfkjedv"API_KEY_2 = "04kjcasvbcxzv632jbvzj35f"API_KEY_3 = "cbfhb518gfa0h52ngf=4ynb3"예시를 위한 임시 ..
[Android] Cipher를 사용하여 암호화 복호화 해보기
·
Android/Security & Privacy
Cipher는 암호화와 복호화를 위한 기능을 제공한다.예제로 EditText에 텍스트를 입력하고 '암호화' 버튼과 '복호화' 버튼을 클릭하여 입력한 텍스트가 어떻게 표시되는지 보여주려고 한다.1. MessageDigest를 사용하여 Hash 키 생성2. Cipher.getInstance로 객체 생성3. SecretKeySpec을 통해 '1'의 Hash 키를 비밀키로 변환4. Cipher.init으로 초기화하여 암호화 또는 복호화 작업 수행MessageDigest를 사용하여 Hash 키 생성Cipher를 사용하려면 해시 키가 필요하다. 해시 키는 MessageDigest로 만들 수 있다./** * 주어진 바이트 배열과 알고리즘을 사용하여 해시키를 반환. */private fun hashSHA256(): B..
[Android] 권한(Permission) 처리하기
·
Android/Security & Privacy
Android 5.1 버전 이하에서는 앱의 설치 단계에서만 사용자에게 권한을 요청한다. 개별적으로 권한을 선택할 수 없어서 앱을 사용하기 위해서 요청된 묶음 권한에 대해 감수할 수밖에 없었다. 또한 사용자가 앱 사용 중 어느 타이밍에 해당 권한을 사용하는지 확실히 알 수 없어서 약간의 찝찝한(불안한)을 가질 수밖에 없었다. 하지만 Android 6.0 버전부터 앱 실행 중 사용자에게 권한을(런타임 권한) 요청할 수 있는 기능이 추가됐다. 사용자의 입장에서 어떤 동작을 할 때 권한 요청을 받기 때문에 이 권한이 왜 필요한지 이유를 알 수 있다. (사용자가 편안함을 느낀다고 한다.) 안드로이드 버전이 업데이트될 때 어떤 기능에 대해서 권한을 체크하도록 추가되는 경우가 있다. 예를 들어 Android 12 버..