2016-09-13 14 views
5

Przeszedłem przez próbkę odcisków palców z Androidem dostarczoną przez Google.Dlaczego obiekt kryptograficzny jest potrzebny do uwierzytelniania odcisków palców w systemie Android?

https://developer.android.com/samples/FingerprintDialog/index.html

Ponieważ jestem nowym standardom bezpieczeństwa, nie jestem w stanie zrozumieć, co następuje.

  1. Dlaczego musimy używać Keystore, klucz, CryptoObject ... itp? Po prostu może być tak, poproś menedżera odcisków palców o uwierzytelnienie użytkownika i może po prostu zwrócić status (sukces/niepowodzenie).
  2. Czy muszę generować nowy klucz za każdym razem przy każdym uwierzytelnieniu?
+2

„To może być po prostu jak poprosić menedżera odcisków palców w celu uwierzytelnienia użytkownika i może po prostu zwrócić status (sukces/niepowodzenie) "- patrz [metoda' authenticate() 'na' FingerprintManager'] (https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager.html# authenticate (android.hardware.fingerprint.FingerprintManager.CryptoObject,% 20android.os.CancellationSignal,% 20int,% 20android.hardware.fingerprint.FingerprintManager.AuthenticationCallback,% 20android.os.Handler)). 'CryptoObject' może mieć wartość' null'. – CommonsWare

+0

Dzięki, planuję użyć uwierzytelniania odcisków palców dla mojej aplikacji. Czy nadal zaleca się używanie klucza, pliku kluczy itd.? Czy możesz wskazać mi kierunek, w którym rozumiem tę koncepcję? –

+0

Polecam, aby zadać osobne pytanie dotyczące przepełnienia stosu, w którym szczegółowo wyjaśniasz **, ** czego chcesz od uwierzytelnienia odcisków palców i co dokładnie próbujesz chronić (klucz API, dane użytkownika, coś innego?), i zapytaj, jakie aspekty interfejsu API linii papilarnych najlepiej pasują do twoich potrzeb. – CommonsWare

Odpowiedz

0

answere do jednego pytania,

Będziemy utworzyć klucz z aliasu i użyć aliasu odzyskać klucz. alias jest kluczem klucza. Będzie tam lista aliasów przechowywanych dla obszaru izolowanego aplikacji. Wyszukuje klucz przy kolejnych próbach wygenerowania klucza z tym samym aliasem.

+0

Czy możesz wyjaśnić to nieco więcej: '. Istnieje prawdopodobieństwo, że strona trzecia może przechwycić wyniki zwrócone przez skaner linii papilarnych. Obiekt Crypto służy do szyfrowania wyników zwracanych przez skaner linii papilarnych. ' – Yashasvi

+2

To, co powiedziałeś o trzeciej stronie, jest ** absolutnie fałszywe **. W każdym razie nie ma danych do przechwycenia. Z [Dokumentu systemu Android] (https://source.android.com/security/authentication/fingerprint-hal): "W związku z tym nieprzetworzoną pamięć nie wolno przekazywać w nieprzetworzonych obrazach i przetworzonych odciskach palców. Wszystkie takie dane biometryczne muszą być zabezpieczone w ramach sprzętu lub pamięci zaufanej z czujnikiem . (Pamięć wewnątrz TEE jest uważana za zaufaną pamięć , pamięć poza TEE jest uważana za niezaufaną). –

5

Dlaczego potrzebujemy użyć Keystore, klucz, CryptoObject ... itp? To może po prostu być jak poprosić menedżera odcisków palców w celu uwierzytelnienia użytkownika i może prostu przywrócić stan (sukces/zawiodły)

Nie musiał. Możesz wykonać uwierzytelnianie odcisków palców bez numeru CryptoObject, wystarczy podać wartość null. Wtedy nie będzie bałagan z magazynu kluczy i innych rzeczy.

Jedynym zastosowaniem numeru CryptoObject w przypadku uwierzytelniania odcisków palców jest sprawdzenie, czy dodano nowy odcisk palca od czasu ostatniego uwierzytelnienia użytkownika za pomocą odcisku palca.

Czy muszę generować nowy klucz za każdym razem przy każdym uwierzytelnieniu?

Jeśli nowy odcisk palca dodaje, trzeba będzie poprosi o podanie hasła w celu weryfikacji tożsamości użytkownika, a następnie wygenerować nowe klucze (bo stał się nieważny, gdy nowy odcisk palca został dodany).

Znowu nie trzeba zadzierać z nich, jeśli zdać nullCryptoObject

kwestia punktu widzenia

uwierzytelniania linii papilarnych nie wymaga CryptoObject, w rzeczywistości jest wręcz przeciwnie.

Podczas wykonywania operacji kryptograficznych w systemie Android można użyć jednego z następujących obiektów: Cipher, Signature, Mac (i innych). Jeden z tych trzech może być użyty do zbudowania CryptoObject.

Podczas generowania kluczy dla tych obiektów, istnieje metoda nammed setUserAuthenticationRequired(boolean) który udaje się dostać klucze valids tylko jeśli użytkownik uwierzytelniony za pomocą odcisku palca przed.

Tak więc, na przykład, w przypadku komunikacji klient/serwer, jeśli klient może używać kluczy, oznacza to, że został uwierzytelniony za pomocą odcisku palca, a jego tożsamość jest znana.

Nawiasem mówiąc, można sprawdzić moją bibliotekę dla palców Dialogi który realizuje proces CryptoObject, kluczy i haseł ... https://github.com/omaflak/FingerprintDialog-Library

Powiązane problemy