2015-03-06 14 views
12

Chcę przechowywać tajne dane w prywatnym magazynie kluczy mojej aplikacji.Użyj KeyPairGeneratorSpec dla poziomu interfejsu API Androida <18?

Jednak pracując nad tym kodem, Android Studio ostrzegał, że KeyPairGeneratorSpec.Builder(context) wymaga poziomu interfejsu API 18, a ja wybieram 14 jako minimum. :-(

Jak mogę przechowywać tajne dane w mojej aplikacji dla Androida poziomie 14 API poprzez 17p

+1

Zazwyczaj można znaleźć rzeczy, które trzeba w bibliotece wsparcia, ale go wygląda na to, że nie dodali tej klasy. https://developer.android.com/reference/android/support/v4/app/package-summary.html Niestety nie mam dla ciebie odpowiedzi. – nasch

+1

Tak, też nie mogłem uwierzyć własnym oczom. –

Odpowiedz

5

AndroidKeyStore który jest zazwyczaj wspierany sprzętowo (ale niekoniecznie) została formalnie wprowadzona w API poziomie 18, widać i jest opisany tutaj: http://developer.android.com/training/articles/keystore.html

Nikolay Elenkov napisał miłą aplikację do przetestowania AndroidKeyStore które można znaleźć tutaj: https://github.com/nelenkov/android-keystore

Istnieje kilka sztuczek, które można użyć, aby zmusić go do rodzaju pracy na poziomie API 17, jeśli zagłębisz się w AOSP, ale nie ma żadnej gwarancji będzie działać na każdym urządzeniu, więc jest to bezsensowne. Zdecydowanie nie będzie to działało wcześniej.

To naprawdę nie jest konieczne używanie AndroidKeyStore do przechowywania klucza prywatnego, chyba że jesteś super paranoikiem na temat bezpieczeństwa i żądasz, aby był on wspierany przez sprzęt lub w izolowanym procesie (proces przechowywania kluczy na urządzeniach nieobsługujących sprzętu).

Jeśli samodzielnie wygenerujesz parę kluczy w aplikacji i zapiszesz ją w pliku kluczy w obszarze danych, żadna inna aplikacja na Androida nie będzie w stanie odczytać klucza, który jest wystarczająco bezpieczny dla większości aplikacji. Można nawet zezwolić użytkownikowi na ochronę magazynu kluczy za pomocą wybranego przez siebie hasła.

Istnieją pewne dobre informacje na temat generowania pary kluczy w oprogramowaniu przy użyciu języka Java i Android można znaleźć tutaj:

Android RSA Keypair Generation - Should I use Standard Java/Bouncy Castle/Spongy Castle/JSch/Other?

https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html

Powiązane problemy