Implementacja potwierdzenia chronionego

co należy wziąć pod uwagę

Aby zapewnić integralność potwierdzenia chronionego przez Androida, należy wziąć pod uwagę te kwestie. Jeśli nie uda się rozwiązać tych kwestii, nie będzie można wdrożyć potwierdzenia chronionego na urządzeniu.

Ważne informacje dotyczące jądra Linuksa

Potwierdzenie chronione działa bezpiecznie nawet wtedy, gdy jądro urządzenia zostało naruszone. Gdy okno potwierdzenia chronionego jest aktywne, jądro nie może zakłócać integralności treści na ekranie, integralności danych wejściowych użytkownika ani integralności danych wyjściowych. W ramach architektury należy zablokować jądro, aby nie mogło ono wpływać na decyzję użytkownika ani podszywać zdarzeń użytkownika. W tym przypadku jądro nie jest uważane za godne zaufania, ponieważ może być kontrolowane przez atakującego lub zastąpione czymś zupełnie innym.

Informacje o oprogramowaniu

Potwierdzenie chronione może być wdrażane na urządzeniu tylko wtedy, gdy wszystkie komponenty mają zaufane oprogramowanie sprzętowe. Potwierdzenie chronione ma na celu zapewnienie użytkownikowi możliwości przeczytania komunikatu wyświetlanego w interfejsie zaufanych usług, aby mógł podjąć świadomą decyzję o dokonaniu transakcji. Sterownik panelu wyświetlania jest szczególnie ważny, ponieważ może uniemożliwić użytkownikowi wyświetlanie interfejsu zaufanych urządzeń.

Wskazówki dotyczące danych wejściowych

Wybierz bezpieczną metodę wprowadzania, aby mieć pewność, że zdarzenia wprowadzania generowane przez wybraną metodę nie są przekazywane do okna potwierdzenia chronionego, chyba że użytkownik wygeneruje zdarzenie, gdy to okno jest aktywne.

Sprzęt fizyczny

Żaden komponent, który może być kontrolowany przez jądro Androida, np. system na chipie (SoC) lub zintegrowany układ scalony do zarządzania zasilaniem (PMIC), nie może sterować przewodem połączonym z fizycznym przyciskiem potwierdzenia.

Informacje o kontrolerach dotykowych

Protected Confirmation może używać przycisków oprogramowania na ekranie jako danych wejściowych. Za każdym razem, gdy sterowanie dotykowe jest obsługiwane przez TEE, należy podjąć działania w celu odizolowania stanu sterowania dotykowego.

oczekiwane zachowanie;

Dozwolone dźwięki

Jeśli system przerwie sesję potwierdzenia z powodu połączenia przychodzącego lub zdarzenia zasilania, HAL musi przekazać informacjęResponseCode::Aborted. Aplikacje otrzymują wywołanie zwrotne onCanceled()i wiedzą, że użytkownik nie wybrał żadnego działania. Alarmy nie muszą przerywać sesji, ale muszą powiadomić użytkownika. Podczas aktywnego okna nie są dozwolone żadne nakładki powiadomień.

Okres prolongaty

Po zainicjowaniu potwierdzenia chronionego dane wejściowe muszą pozostać nieaktywne przez co najmniej 1 sekundę, zanim będą mogły reagować na interakcje użytkownika. Ten okres karencji zapewnia użytkownikowi możliwość zareagowania na nieoczekiwane okno potwierdzenia. Ten okres przejściowy musi być egzekwowany przez zaufaną aplikację.

Obrót ekranu

Tryb portretowy jest jedynym wymaganym trybem, a obrót ekranu nie jest obsługiwany. Obrót ekranu umożliwia potencjalne nadużycia w skompromitowanym systemie, takie jak umieszczanie mylących przycisków lub manipulowanie tekstem.

Błędy podczas renderowania tekstu

W przypadku tekstu treści obowiązuje twarda granica 6144 bajtów (0x1800), w tym dodatkowe niewyświetlane dane i informacje z nagłówka CBOR. Dodatkowo istnieje miękka granica, która musi być egzekwowana. Jeśli renderowany komunikat nie mieści się całkowicie na ekranie, upewnij się, że potwierdzenie chronione zostało przerwane, a transakcja anulowana. Jeśli MessageSize przekracza maksymalny dozwolony rozmiar, implementacja musi zwrócić UIErrorMessageTooLong w funkcji promptUserConfirmation.

Sprawdzoną metodą jest formatowanie tekstu po otrzymaniu wywołania interfejsu API. Tekst w polu wiadomości musi być w pełni widoczny dla użytkownika.

Wyświetlacze dodatkowe

Dodatkowe ekrany są obsługiwane pod pewnymi warunkami. Należy zachować integralność danych wyjściowych i danych wejściowych użytkownika. Nie można wyświetlać żadnych informacji wprowadzających w błąd. W przeciwnym razie okno dialogowe może być wyświetlane tylko na wyświetlaczu głównym, a wszystkie inne wyświetlacze powinny być dezaktywowane lub puste. Rozwiązania do strumieniowego przesyłania danych i udostępniania ekranu nie mogą wyświetlać okna dialogowego ani generować potwierdzeń.