Real Time Mode

Gdy klienci zdecydują się korzystać z Ochrony w czasie rzeczywistym w wersji 5, w lokalnej bazie danych będą przechowywać: (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, wykonywane jest lokalne sprawdzenie przy użyciu pamięci podręcznej globalnej. Jeśli ten test zostanie zaliczony, przeprowadzane jest sprawdzenie lokalnych list zagrożeń. W przeciwnym razie klient kontynuuje sprawdzanie skrótu w czasie rzeczywistym zgodnie z poniższym opisem.

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 jest dostępna 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, adres URL jest uznawany za bezpieczny przez Bezpieczne przeglądanie Google. Jeśli zwraca wartość UNSAFE, oznacza to, że Bezpieczne przeglądanie Google uznało adres URL za potencjalnie niebezpieczny i należy podjąć odpowiednie działania, np. wyświetlić ostrzeżenie dla użytkownika, przenieść otrzymaną wiadomość do folderu ze spamem lub wymagać od użytkownika dodatkowego potwierdzenia przed kontynuowaniem. Jeśli zwróci wartość UNSURE, należy zastosować procedurę lokalnego sprawdzania.

  1. Niech expressions będzie listą wyrażeń przyrostków/przedrostków wygenerowanych przez adres URL u.
  2. Niech expressionHashes będzie listą, której elementami są skróty SHA256 poszczególnych wyrażeń w expressions.
  3. Za każde hashexpressionHashes:
    1. Jeśli hash znajduje się w pamięci podręcznej, zwróć UNSURE.
  4. Niech expressionHashPrefixes będzie listą, której elementami są pierwsze 4 bajty każdego hasza w expressionHashes.
  5. Za każde expressionHashPrefixexpressionHashPrefixes:
    1. Wyszukaj expressionHashPrefix w pamięci podręcznej.
    2. Jeśli wpis z pamięci podręcznej zostanie znaleziony:
      1. Sprawdza, czy bieżący czas jest późniejszy niż czas wygaśnięcia.
      2. Jeśli jest większa:
        1. Usuń znaleziony wpis z pamięci podręcznej.
        2. Kontynuuj pętlę.
      3. Jeśli nie jest większa:
        1. Usuń to urządzenie expressionHashPrefix z konta expressionHashPrefixes.
        2. Sprawdź, czy odpowiedni pełny skrót w expressionHashes znajduje się w pamięci podręcznej.
        3. Jeśli zostanie znaleziony, zwróć UNSAFE.
        4. Jeśli nie znajdziesz, kontynuuj pętlę.
    3. Jeśli nie znajdziesz wpisu w pamięci podręcznej, kontynuuj pętlę.
  6. Wyślij expressionHashPrefixes na 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 odpowiedzią będzie response otrzymana z serwera SB, czyli lista 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 czas wygaśnięcia pamięci podręcznej expiration.
  7. Za każde fullHashresponse:
    1. Wstaw fullHash do pamięci podręcznej lokalnej wraz z expiration.
  8. Za każde fullHashresponse:
    1. Niech isFound będzie wynikiem wyszukania fullHashexpressionHashes.
    2. Jeśli isFound ma wartość False, kontynuuj pętlę.
    3. Jeśli isFound ma wartość PRAWDA, zwraca UNSAFE.
  9. Powrót: 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.