7

Piszę aplikację na Androida i muszę przechowywać dwa klucze, które będę używał do szyfrowania/odszyfrowywania niektórych wiadomości. (Muszę przechowywać klucz prywatny RSA). Czytałem:Przechowywanie kluczy w Androidzie

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

i tam jest rozdział zatytułowany:

Wybór między pęku kluczy lub dostawcy Android magazynu kluczy

, ale nie jestem pewien, co jeszcze Powinienem wybrać najbezpieczniejsze rozwiązanie.

Proszę, pomóż mi.

Odpowiedz

5

Jako strona mówi:

Użyj API Brelok kiedy chcesz systemowych poświadczenia

Celem API Brelok jest użycie poświadczeń login/hasło, aby uzyskać „żeton "z której może korzystać ta aplikacja (i potencjalne inne aplikacje). KeyChain jest również często używany do synchronizowania prywatnych informacji (takich jak maile) w tle.

Ale w twoim przypadku brzmi to, że chcesz tylko zapisać prywatny klucz RSA. W tym przypadku Keystore jest lepszym rozwiązaniem. Zauważ, że Keystore działa tylko na urządzeniach 4.3+, ponieważ korzysta ze sprzętowej bezpiecznej pamięci (takiej jak ARM Trustzone i inne bezpieczne środowiska wykonawcze) w celu przechowywania swoich kluczy prywatnych (jeśli jest obecny moduł sprzętowy). Ta funkcja została dodana w systemie Android 4.3.

Aby użyć magazynu kluczy, należy wygenerować certyfikat za pomocą klucza publicznego i zapisać go za pomocą klucza prywatnego w magazynie kluczy. Magazyn kluczy wykorzystuje wzorzec/pin lock/etc użytkownika. (jeśli jest obecny) do zaszyfrowania klucza prywatnego. Zauważ, że czasami prowadzi to do irytującego faktu, że użytkownik nie może już wyłączyć ekranu blokady, o ile użytkownik nie wyczyści swojego magazynu certyfikatów lub nie usunie aplikacji (pod Androidem < = 5), więc pamiętaj o usunięciu certyfikatu kiedy klucz nie jest już potrzebny. Magazyn kluczy zapisze klucz prywatny w module sprzętowym (jeśli jest obecny), więc znacznie trudniej jest wyodrębnić klucz prywatny lub inne aplikacje do szyfrowania danych za pomocą klucza prywatnego. Nadal nie jest w 100% odporny na błędy, ponieważ nowy exploits are found i root mogą ominąć (w pewien sposób) tę dodatkową warstwę ochrony. Ale wciąż jest lepsze niż zapisanie klucza prywatnego w pliku.

Także jeśli chcesz głębiej zrozumieć, jak to wszystko działa "pod maską", polecam lekturę this paper, która szczegółowo opisuje Keystore i inne mechanizmy bezpieczeństwa w systemie Android.

+0

Świetna wiadomość, dziękuję! Jedno pytanie, ponieważ cytowany artykuł odnosi się do zmian w Lollipop: czy wiesz, czy szyfrowanie magazynu kluczy zostało ulepszone w późniejszych wersjach Androida? Dostępne informacje, które znalazłem, nie są bardzo jasne w tym punkcie. – Frank

Powiązane problemy