Gdy klienci zdecydują się korzystać z Bezpiecznego przeglądania Google w wersji 5 w trybie czasu rzeczywistego, będą przechowywać w lokalnej bazie danych: (i) globalną pamięć podręczną prawdopodobnie bezpiecznych witryn sformatowaną jako skróty SHA256 wyrażeń URL z sufiksem hosta i prefiksem ścieżki, (ii) zestaw list zagrożeń sformatowanych jako prefiksy skrótów SHA256 wyrażeń URL z sufiksem hosta i prefiksem ścieżki. Ogólna zasada jest taka, że gdy klient chce sprawdzić konkretny adres URL, przeprowadza lokalne sprawdzenie za pomocą globalnej pamięci podręcznej prawdopodobnie bezpiecznych witryn. Jeśli wystąpi dopasowanie, przeprowadzane jest sprawdzanie lokalnych list zagrożeń (zgodnie z procedurą opisaną w sekcji Tryb listy lokalnej). Jeśli nie ma dopasowania, klient kontynuuje sprawdzanie skrótu w czasie rzeczywistym zgodnie z poniższymi informacjami.
Oprócz lokalnej bazy danych klient będzie utrzymywać lokalną pamięć podręczną. Taka pamięć podręczna nie musi być przechowywana w pamięci trwałej i może zostać wyczyszczona w przypadku braku pamięci.
Szczegółowa specyfikacja procedury znajduje się poniżej.
Procedura sprawdzania adresów URL w czasie rzeczywistym
Ta procedura przyjmuje pojedynczy adres URL u i zwraca SAFE, UNSAFE lub UNSURE. Jeśli zwróci wartość SAFE, oznacza to, że adres URL jest uznawany przez Bezpieczne przeglądanie Google za bezpieczny. Jeśli zwraca wartość UNSAFE, adres URL jest uznawany przez Bezpieczne przeglądanie Google za potencjalnie niebezpieczny i należy podjąć odpowiednie działania, takie jak wyświetlenie ostrzeżenia dla użytkownika, przeniesienie otrzymanej wiadomości do folderu ze spamem lub wymaganie od użytkownika dodatkowego potwierdzenia przed kontynuowaniem. Jeśli zwróci wartość UNSURE, należy następnie użyć procedury trybu listy lokalnej.
- Niech
expressionsbędzie listą wyrażeń przyrostków/przedrostków wygenerowanych przez adres URLu. - Niech
expressionHashesbędzie listą, której elementami są identyfikatory SHA256 każdego wyrażenia wexpressions. - Za każde
hashzexpressionHashes:- Jeśli
hashznajduje się w pamięci podręcznej globalnej, zwróćUNSURE.
- Jeśli
- Niech
expressionHashPrefixesbędzie listą, której elementami są pierwsze 4 bajty każdego hasza wexpressionHashes. - Za każde
expressionHashPrefixzexpressionHashPrefixes:- Wyszukaj
expressionHashPrefixw pamięci podręcznej. - Jeśli wpis z pamięci podręcznej zostanie znaleziony:
- Sprawdza, czy bieżący czas jest późniejszy niż czas wygaśnięcia.
- Jeśli jest większa:
- Usuń znaleziony wpis z pamięci podręcznej.
- Kontynuuj pętlę.
- Jeśli nie jest większa:
- Usuń to urządzenie
expressionHashPrefixz kontaexpressionHashPrefixes. - Sprawdź, czy odpowiedni pełny skrót w
expressionHashesznajduje się w pamięci podręcznej. - Jeśli zostanie znaleziony, zwróć
UNSAFE. - Jeśli nie zostanie znaleziony, kontynuuj pętlę.
- Usuń to urządzenie
- Jeśli nie znajdziesz wpisu w pamięci podręcznej, kontynuuj pętlę.
- Wyszukaj
- Wyślij
expressionHashPrefixesna serwer Bezpiecznego przeglądania Google w wersji 5 za pomocą RPC SearchHashes lub metody REST hashes.search. Jeśli wystąpił błąd (w tym błędy sieci, błędy HTTP itp.), zwróć wartośćUNSURE. W przeciwnym razie niech odpowiedź będzie wartościąresponseotrzymaną z serwera SB, czyli listą pełnych skrótów wraz z informacjami pomocniczymi określającymi charakter zagrożenia (inżynieria społeczna, złośliwe oprogramowanie itp.) oraz czasem wygaśnięcia pamięci podręcznejexpiration. - Za każde
fullHashzresponse:- Wstaw
fullHashdo pamięci podręcznej lokalnej wraz zexpiration.
- Wstaw
- Za każde
fullHashzresponse:- Niech
isFoundbędzie wynikiem wyszukiwaniafullHashwexpressionHashes. - Jeśli
isFoundma wartość False, kontynuuj pętlę. - Jeśli
isFoundma wartość PRAWDA, zwracaUNSAFE.
- Niech
- Zwrot:
SAFE.
Ten protokół określa kiedy klient wysyła wartość expressionHashPrefixes do serwera, ale celowo nie określa dokładnie jak to zrobić. Na przykład klient może wysłać wszystkie prefiksy expressionHashPrefixes w jednym żądaniu, ale może też wysłać każdy prefiks expressionHashPrefixes do serwera w osobnych żądaniach (być może równolegle). Klient może też wysyłać niepowiązane lub losowo wygenerowane prefiksy skrótów razem z prefiksami skrótów w expressionHashPrefixes, o ile liczba prefiksów skrótów wysyłanych w jednym żądaniu nie przekracza 30.