하나의 애플리케이션에서 Android KeyStore를 사용합니다. 전체 KeyStore 및 각 암호 입력에 대한 암호를 설정했습니다. 이러한 암호는 문자열이므로 코드의 문자열 구성원에 저장됩니다.Android KeyStore 비밀번호를 안전하게 저장하는 방법
잠재적으로 공격자가 apk를 디 컴파일하여 앱에서 하드 코드 된 암호를 얻을 수 있기 때문에 앱을 게시하고 싶어도 안전하지 않습니다.
내 질문은 : 위의 시나리오에서
- : 공격자가 파일 만 내 응용 프로그램에서 액세스 할 수 있습니다 (루팅 해제 전화에) 내 키 스토어 파일 또는 읽을 수있을 것이다 그래야 혼자 암호 충분하지 않아?
- KeyStore 암호를 처리하는 가장 좋은 방법은 무엇입니까? 나는 주변을 둘러 보았지만 이것을 어떻게 처리 할 지 명확한 답을 찾지 못했습니다. clearification에 대한
편집 : 앱 서명에 대해 있지만 암호로 보호 된 안드로이드 키 스토어에서 암호화 키를 저장에 대해 얘기하지 않습니다. 앱은 런타임 중에 키 항목을 검색하기 위해 비밀번호에 대한 액세스 권한을 가져야합니다. 현재 코드의
예 :
String keyStorePwd = "password1";
String keyEntryPwd = "password2";
FileInputStream fis = getApplicationContext().openFileInput("sms.keystore");
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(fis, keyStorePwd.toCharArray());
SecretKey key = (SecretKey) ks.getKey("aes_key_sms_notifier", keyEntryPwd.toCharArray());
fis.close();
어쩌면 당신은 https://github.com/scottyab/secure-preferences – Prexx
@Prexx 나쁜 아이디어를 사용할 수 있습니다 . 하나는 왜 모든 것을 안전하게하기 위해 무덤에있는 무작위 라이브러리를 신뢰하겠습니까? 잠시 동안 보안 기본 설정을 암호화하려면 키가 필요합니다. 열쇠 란 앱에 키가 있음을 의미합니다. 그래서 무의미한 스피드 범프가됩니다. –
grade.properties를 사용하고 있습니다. 거기에 패스를 저장하십시오. – ZeroOne