마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 앱이 이렇게 허술한지 몰랐네요. 여러분들은 어떻게 중요 정보를 처리하고 계신가요?

0 추천

얼마 전 앱을 출시하고 몇 차례의 업데이트를 할 때까지 보안에 대해 1도 몰랐던 초짜 개발자 입니다. "내 앱에서 치명적인 정보가 얼마나 새나가고 있을까" 하는 궁금증을 가지게 된 것은 구글 플레이에서 다운받은 apk를 까서 서명만 지들 서명으로 바꾸고 구글 플레이 이외의 마켓에 업로드해서 이익을 챙기는 놈들이 있다는 소리를 듣고서부터죠. 그때부터 apk 디컴파일에 관심을 가지게 되었고, 오늘 apktool, dex2jar, jd-gui 툴을 사용하여 구글 플레이로부터 다운받은 제 앱을 까보았습니다.

결과는 처참하네요. String.xml 에 넣어두면 괜찮다던 (모 블로그에서 얻은 정보입니다.) 애드몹 계정 정보가 적나라하게 드러납니다. 이 부분을 해커가 자신의 애드몹 계정으로 바꾸고 리빌드 후 제가 미처 커버하지 못한 마켓에 등록한다면 아주 손쉽게 저의 광고비를 챙겨갈 수 있을 듯 보입니다. 서명 바꿔치기는 말할 것도 없어 보이구요. 저야 순수 광고 수익만 얻는 무료 앱이기 때문에 서명 바꿔치기는 의미가 없지만 애드몹 계정 정보는 좀 충격적이네요.

여러분은 중요 정보를 어떻게 처리하고 계시는지 궁금합니다. 애드몹 계정 정보나 DB의 암호화/복호화 처리를 위해 사용한 AES 키를 안전하게 보관할 수 있는 방법이 없을까요? 계정 정보나 키를 서버에 두는 방법도 있긴 하지만 서버를 돌릴 여력이 없습니다. 로컬에서 해결할 수 있는 좋은 방법이 없을까요?

혹시 프로가드 적용 안된 앱 아니냐 생각하시는 분들 계실까봐 말씀드리는데, 프로가드 제대로 적용되었습다.

THK (2,360 포인트) 님이 2017년 7월 11일 질문
THK님이 2017년 7월 11일 수정

1개의 답변

+1 추천
 
채택된 답변
안녕하세요.

댓글을 달려고 보니, 여기에 다시 질문을 남겨서 의견을 드리면..

말씀하신대로, 서버에서 키(대칭키)를 받아서 앱에서 인크립션한 키 정보를 풀어서 사용하는게 깔끔하고 안전하지만.. 현실적으로 어렵다면..

간단하게 네이티브 코드 영역에서 키 정보를 불러오는 것으로, 앱 크래킹을 조금 복잡하게 할 수 있습니다.

이 정보는 아래 링크를 보시면 됩니다.

https://medium.com/@abhi007tyagi/storing-api-keys-using-android-ndk-6abb0adcadad
mcsong (44,040 포인트) 님이 2017년 7월 11일 답변
THK님이 2017년 7월 11일 채택됨
말씀하신대로 결국에는 서버 운용이 답인 것 같습니다. 일단은 NDK 로 가야겠지만요. 좋은 정보 감사합니다!
...