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

KeyStore 데이터 저장

0 추천
안녕하세요. 보안관련 업무를 맡고 있는 초보 개발자입니다.

현재 보안관련 앱을 개발중인데요.

binary 형태의 데이터를 파일로 저장하고 있습니다.

보안을 위해 이 데이터를 KeyStore에 저장하려고 합니다.

구글링 해보니 iOS는 KeyChain 이라는 곳에 데이터를 저장할수 있다고 하는데요.

안드로이드는 KeyStore에 데이터를 저장하는 자료를 찾을수가 없네요.

혹 방법을 알고 계신분의 도움  말씀 부탁드립니다.

읽어주셔서 감사합니다.
soGoodMan (260 포인트) 님이 2016년 8월 10일 질문
soGoodMan님이 2016년 8월 10일 수정

1개의 답변

0 추천
 
채택된 답변
음.. iOS의 경우 키체인에 데이터를 저장할 수 있습니다만

안드로이드의 키스토어는 저장용도가 아니라 앱을 서명해서 릴리즈 바이너리를 만드는데 사용됩니다.

키스토어를 개발툴로 만들때 일정정보를 포함하여 만들수는 있지만 이 경우 다른앱에서 분석이 가능하도록 노출되는 값이

될수 있어서 위험하구요. 동적으로 값을 할당했다 지웠다 할수 없습니다.

결론 : 안된다, 된다고 해도 위험함
라쎄린드 (25,460 포인트) 님이 2016년 8월 10일 답변
soGoodMan님이 2016년 8월 10일 채택됨
답변 감사합니다. ^^
찾아보니 이런 글이 있던데요.

http://www.masterqna.com/android/44589/%EC%A0%84%EC%86%A1%EB%90%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%95%94%ED%98%B8%ED%99%94-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4?show=44641#c44641

답변에
"keyStore에 해당 암호화 키를 저장 시키고 keyStore엑세서 만드셔서 키스토어에서
 암호화키 빼와서 사용하는 방법으로 하시면 되겠습니다."

이런 내용이 있던데 진정 방법이 없는 것일까요?
고객사에서 데이터를 keystore 에 저장하는 것을 요구해서 말이죠...

구글링 해보니

https://developer.android.com/training/articles/keystore.html

이런 글도 있던데 영어가 짧아서 파악하는데 어려움이 있네요.ㅜㅜ
저 링크에 복잡한 내용을 봐도 결국 asset에 넣는다는 자체가 값이 더이상 변경이 불가능하다는 것이죠.. 동적으로 값을 할당했다 지웠다 할수 없습니다. 라고 위에 답변드린 부분입니다.
모든유저에게 고정된 값을 저장한걸 사용하고 싶다~ 라고 하면 그냥 앱내 소스로 할것이지 굳이 키스토어에 스트링 저장해서 갖다쓸 필요는 없겠죠?
안드로이드에서는 결국 불가능하다는 말씀이시군요.
답변 감사합니다.^^
넵 크게 도움 못드린거 같아 좀 그렇네요 ㅎㅎ키체인처럼 변동적으로 데이터 관리를 할수 있는 SharedPreference 나 캐시 폴더, 혹은 암호화된 파일등을 이용해서 풀면 좋을거 같습니다.
말씀 감사합니다.
말씀하신 SharedPreference 찾아보니 앱 삭제하면 데이터도 삭제되는군요.
앱삭제와 무관하게 데이터는 유지해야 하는데 문제가 있겠군요.
그리고 현재 파일로 저장하는 것과 차이가 없는것 같은데요..
키체인이 하는걸 보면 해당앱에서만 접근이 가능할꺼고 스트링 형식으로 저장하는게 일반적일텐데 이런 부분을 가장 쉽게 해결하려면 파일에 해당정보 저장하고 파일 자체를 암호화 시키시는것만으로 해결될거 같아요 파일암호화는 찾아보면 금방나옵니다
네...말씀 감사합니다.
데이터는 이미 암호화 되어 파일로 저장하고 있습니다.
말씀중에
"키체인이 하는걸 보면 해당앱에서만 접근이 가능할꺼고"
이 내용이 포인트네요.
아마 고객사에서 keystore 저장을 요구한 이유일 것 같은데요.
키체인쪽을 파봐야 겠습니다.
많은 도움이 되었습니다.
해당앱에서 접근하기만을 바라시면 로컬 DB를 생성해서 암호화해서 저장해도 되지 않을까요? sqlite db는 로컬 db라서 해당앱만 접근가능하거든요
두 분의 이야기를 읽어보았으나, 부족한 지식으로 이해가 되지않아 질문드려봅니다
질문이는 변동되는 값에 대해서 언급한 것 같은데
그러면 변동되지 않는 데이터는 디바이스 내에 어떻게 안전하게 저장할까요
...