Package google.security.safebrowsing.v5alpha1

Indice

SafeBrowsing

Le API di Navigazione sicura consentono ai client di verificare le risorse web (più comunemente gli URL) rispetto agli elenchi costantemente aggiornati di Google relativi a risorse web non sicure.

BatchGetHashLists

rpc BatchGetHashLists(BatchGetHashListsRequest) returns (BatchGetHashListsResponse)

Ottieni più elenchi di hash contemporaneamente.

È molto comune per un cliente avere bisogno di più elenchi di hash. L'utilizzo di questo metodo è preferibile rispetto all'uso ripetuto del metodo Get standard.

Si tratta di un metodo standard Get in batch come definito all'indirizzo https://google.aip.dev/231 e anche il metodo HTTP è GET.

GetHashList

rpc GetHashList(GetHashListRequest) returns (HashList)

Ottieni i contenuti più recenti di un elenco di hashing. Un elenco di hash può essere costituito da un elenco di minacce o da un elenco non-minaccia come la cache globale.

Si tratta di un metodo Get standard come definito all'indirizzo https://google.aip.dev/131 e anche il metodo HTTP è GET.

ListHashLists

rpc ListHashLists(ListHashListsRequest) returns (ListHashListsResponse)

Elencare gli elenchi di hashing.

Nell'API V5, Google non rimuove mai un elenco di hash restituito da questo metodo. In questo modo, i client possono saltare l'uso di questo metodo e codificare semplicemente tutti gli elenchi di hash di cui hanno bisogno.

Si tratta di un metodo List standard come definito da https://google.aip.dev/132 e il metodo HTTP è GET.

SearchHashes

rpc SearchHashes(SearchHashesRequest) returns (SearchHashesResponse)

Cerca hash completi che corrispondono ai prefissi specificati.

Si tratta di un metodo personalizzato come definito da https://google.aip.dev/136 (il metodo personalizzato si riferisce al fatto che questo metodo abbia un nome personalizzato all'interno della nomenclatura generale di sviluppo delle API di Google e non all'utilizzo di un metodo HTTP personalizzato).

BatchGetHashListsRequest

La richiesta di ricevere più elenchi di hash contemporaneamente.

Campi
names[]

string

obbligatorio. I nomi di specifici elenchi di hash. L’elenco POTREBBE essere un elenco di minacce, o potrebbe essere la Cache globale. I nomi NON DEVONO contenere duplicati; se lo fossero, il client riceverà un errore.

version[]

bytes

Le versioni dell'elenco di hash già in uso nel client. Se è la prima volta che il client recupera gli elenchi di hash, il campo deve essere lasciato vuoto. In caso contrario, il client deve fornire le versioni ricevute in precedenza dal server. Il client NON DEVE manipolare questi byte.

Il client non deve necessariamente inviare le versioni nello stesso ordine dei nomi degli elenchi corrispondenti. Il client può inviare in una richiesta meno o più versioni rispetto ai nomi. Tuttavia, il client NON DEVE inviare più versioni corrispondenti allo stesso nome; in caso affermativo, verrà visualizzato un errore.

Nota cronologica: nella versione 4 dell'API era denominato states; per maggiore chiarezza, ora è stato rinominato in version.

desired_hash_length

HashLength

La lunghezza in byte del prefisso hash degli hash restituiti. Il server restituirà quindi tutti i prefissi hash di questa lunghezza specificata.

Diversi elenchi di hash hanno requisiti diversi per i valori accettabili del campo desired_hash_length. Puoi trovarlo nel campo supported_hash_lengths in HashListMetadata. Se desired_hash_length non specifica un valore all'interno di supported_hash_lengths, i client riceveranno un errore.

Per BatchGetHashListsRequest in particolare, i clienti non possono specificare desired_hash_length differenti per elenchi differenti. Se è necessario farlo, il client deve suddividersi in più BatchGetHashListsRequest.

size_constraints

SizeConstraints

I vincoli di dimensione in ogni elenco. Se omesso, non ci sono vincoli. Tieni presente che le dimensioni qui indicate sono per elenco, non aggregate per tutti gli elenchi.

BatchGetHashListsResponse

La risposta contenente più elenchi di hash.

Campi
hash_lists[]

HashList

Gli elenchi di hashing nello stesso ordine specificato nella richiesta.

FullHash

L'hash completo identificato con una o più corrispondenze.

Campi
full_hash

bytes

L'hash completo corrispondente. Questo è l'hash SHA256. La lunghezza sarà esattamente di 32 byte.

full_hash_details[]

FullHashDetail

Elenco non ordinato. Un campo ripetuto che identifica i dettagli pertinenti a questo hash completo.

FullHashDetail

Dettagli relativi a un hash completo corrispondente.

Una nota importante sulla compatibilità in avanti: il server può aggiungere nuovi tipi di minacce e attributi di minacce in qualsiasi momento; tali aggiunte sono considerate modifiche di versione minori. Le norme di Google non prevedono l'esposizione di numeri di versione secondari nelle API (per le norme relative al controllo delle versioni, consulta la pagina https://cloud.google.com/apis/design/versioning), quindi i client DEVONO essere pronti a ricevere messaggi FullHashDetail contenenti valori enum ThreatType o valori enum ThreatAttribute considerati non validi dal client. È quindi responsabilità del client verificare la validità di tutti i valori di enumerazione ThreatType e ThreatAttribute; se uno o più valori vengono considerati non validi, il client DEVE ignorare l'intero messaggio FullHashDetail.

Campi
threat_type

ThreatType

Il tipo di minaccia. Questo campo non sarà mai vuoto.

attributes[]

ThreatAttribute

Elenco non ordinato. Attributi aggiuntivi relativi a questi hash completi. Questo campo potrebbe essere vuoto.

GetHashListRequest

Una richiesta per ottenere un elenco di hash, che può essere un elenco di minacce o un elenco non-minaccia come la cache globale.

Novità della V5: il nome precedente della versione states della versione 4 è stato rinominato version per chiarezza. Gli elenchi sono ora denominati, i tipi di piattaforma e i tipi di voci di minacce sono stati rimossi. Ora è possibile che più elenchi abbiano lo stesso tipo di minaccia o un unico elenco interessato da più tipi di minaccia. I client hanno la nuova possibilità di specificare la lunghezza di hash desiderata. Questo fa parte della risposta ai prefissi hash a lunghezza variabile della V4, che ha causato problemi in molte implementazioni client: tutti gli hash in un elenco ora hanno una singola lunghezza, consentendo implementazioni client molto più efficienti. I vincoli sono stati semplificati e il tipo di compressione è stato rimosso (la compressione viene sempre applicata).

Campi
name

string

obbligatorio. Il nome di questo particolare elenco di hash. Potrebbe trattarsi di un elenco di minacce o della cache globale.

version

bytes

La versione dell'elenco di hash già in possesso del client. Se è la prima volta che il client recupera l'elenco di hash, questo campo DEVE essere lasciato vuoto. In caso contrario, il client DOVREBBE fornire la versione precedentemente ricevuta dal server. Il client NON DEVE manipolare questi byte.

Novità della V5: nella V4 dell'API, questo si chiamava states; per maggiore chiarezza, ora è stato rinominato in version.

desired_hash_length

HashLength

La lunghezza in byte del prefisso hash degli hash restituiti. Il server restituirà quindi tutti i prefissi hash di questa lunghezza specificata.

Diversi elenchi di hash hanno requisiti diversi per i valori accettabili del campo desired_hash_length. Puoi trovarlo nel campo supported_hash_lengths in HashListMetadata. Se desired_hash_length non specifica un valore all'interno di supported_hash_lengths, verrà restituito un errore.

size_constraints

SizeConstraints

I vincoli di dimensione nell'elenco. Se omesso, non ci sono vincoli. I vincoli sono consigliati su tutti i dispositivi con potenza di elaborazione, larghezza di banda o spazio di archiviazione limitati.

HashList

Un elenco di hash identificati dal relativo nome.

Campi
name

string

Il nome dell'elenco di hash. Tieni presente che la cache globale è anche solo un elenco di hash e può essere fatto riferimento qui.

version

bytes

La versione dell'elenco di hash. Il client NON DEVE manipolare questi byte.

partial_update

bool

Se true, si tratta di una differenza parziale che contiene aggiunte e rimozioni basate su ciò che il client dispone già. Se il valore è false, questo è l'elenco di hash completo.

Se il valore è false, il client DEVE eliminare qualsiasi versione memorizzata localmente per questo elenco di hash. Ciò significa che la versione posseduta dal cliente è gravemente obsoleta o che i dati del cliente sono considerati corrotti. Il campo compressed_removals sarà vuoto.

Se il valore è true, il client DEVE applicare un aggiornamento incrementale applicando le rimozioni e le aggiunte successive.

compressed_removals

RiceDeltaEncoded32Bit

La versione degli indici di rimozione con codifica Riso delta. Poiché ogni elenco hash ha sicuramente meno di 2^32 voci, gli indici vengono trattati come numeri interi a 32 bit e codificati.

minimum_wait_duration

Duration

I clienti devono attendere almeno questo tempo per recuperare di nuovo l'elenco di hash. Se omesso o pari a zero, i client DEVONO recuperare immediatamente perché indica che il server ha un aggiornamento aggiuntivo da inviare al client, ma non è possibile a causa dei vincoli specificati dal client.

metadata

HashListMetadata

Metadati sull'elenco di hash. Non viene compilato dal metodo GetHashList, ma viene utilizzato il metodo ListHashLists.

Campo di unione compressed_additions. La versione delle aggiunte con codifica Riso delta. La lunghezza del prefisso hash delle aggiunte è uniforme per tutte le aggiunte nell'elenco. Si tratta del desired_hash_length inviato dal client o di un valore scelto dal server se il client ha omesso questo campo. compressed_additions può essere solo uno dei seguenti:
additions_four_bytes

RiceDeltaEncoded32Bit

Le aggiunte a 4 byte.

additions_eight_bytes

RiceDeltaEncoded64Bit

Le aggiunte a 8 byte.

additions_sixteen_bytes

RiceDeltaEncoded128Bit

Le aggiunte a 16 byte.

additions_thirty_two_bytes

RiceDeltaEncoded256Bit

Le aggiunte da 32 byte.

Campo di unione checksum. Questo è il checksum per l'elenco ordinato di tutti gli hash presenti nel database dopo l'applicazione dell'aggiornamento fornito. Questo è un campo "unoof" per consentire più algoritmi di hashing. È anche possibile che il server ometta questo campo (nel caso in cui non siano stati forniti aggiornamenti) per indicare che il client deve utilizzare il checksum esistente. checksum può essere solo uno dei seguenti:
sha256_checksum

bytes

L'elenco ordinato di tutti gli hash, sottoposto di nuovo ad hashing con SHA256.

HashListMetadata

Metadati relativi a uno specifico elenco di hash.

Campi
threat_types[]

ThreatType

Elenco non ordinato. Se non è vuoto, indica che l'elenco di hash è un tipo di elenco di minacce e indica il tipo di minacce associate ad hash o prefissi hash in questo elenco. Può essere vuoto se la voce non rappresenta una minaccia, ad esempio nel caso in cui rappresenti un probabile tipo di sicurezza.

likely_safe_types[]

LikelySafeType

Elenco non ordinato. Se non è vuoto, indica che l'elenco di hash rappresenta un elenco di hash probabili e indica i modi in cui sono considerati probabilmente sicuri. Questo campo si escludono a vicenda con il campo threat_types.

mobile_optimized

bool

Indica se questo elenco è ottimizzato per i dispositivi mobili (Android e iOS).

description

string

Una descrizione leggibile di questo elenco. Scritto in inglese.

supported_hash_lengths[]

HashLength

Le lunghezze di hash supportate per questo elenco di hash. Ogni elenco di hash supporta almeno una lunghezza. Il campo non sarà quindi vuoto.

HashLength

La lunghezza degli hash in un elenco di hash.

Enum
HASH_LENGTH_UNSPECIFIED Lunghezza non specificata. Il server non restituirà questo valore alle risposte al client (nel campo supported_hash_lengths), ma il client può inviarlo al server (nel campo desired_hash_length). In questo caso il server sceglierà un valore automaticamente. I client DEVONO consentire al server di scegliere un valore.
FOUR_BYTES Ogni hash è un prefisso di quattro byte.
EIGHT_BYTES Ogni hash è un prefisso di otto byte.
SIXTEEN_BYTES Ogni hash è un prefisso di sedici byte.
THIRTY_TWO_BYTES Ogni hash è un hash completo di 32 byte.

LikelySafeType

Tipi di siti probabilmente sicuri.

Tieni presente che SearchHashesResponse non contiene intenzionalmente LikelySafeType.

Enum
LIKELY_SAFE_TYPE_UNSPECIFIED Sconosciuto.
GENERAL_BROWSING Probabilmente questo sito è sufficientemente sicuro per la navigazione generale. È anche nota come cache globale.
CSD Probabilmente questo sito è sufficientemente sicuro che non è necessario eseguire modelli di rilevamento lato client o controlli di protezione tramite password.
DOWNLOAD Probabilmente questo sito è sufficientemente sicuro da non dover controllare i download dal sito.

ListHashListsRequest

La richiesta di elencare gli elenchi di hash disponibili.

Campi
page_size

int32

Il numero massimo di elenchi di hash da restituire. Il servizio potrebbe restituire un numero inferiore a questo valore. Se non specificate, il server sceglierà una dimensione di pagina, che potrebbe essere superiore al numero di elenchi di hash, in modo che l'impaginazione non sia necessaria.

page_token

string

Un token di pagina, ricevuto da una chiamata ListHashLists precedente. Specifica questo valore per recuperare la pagina successiva.

ListHashListsResponse

La risposta contenente metadati sugli elenchi di hash.

Campi
hash_lists[]

HashList

Gli elenchi di hashing sono in ordine arbitrario. Saranno inclusi solo i metadati sugli elenchi di hash, non i contenuti.

next_page_token

string

Un token, che può essere inviato come page_token per recuperare la pagina successiva. Se questo campo viene omesso, non verranno visualizzate altre pagine.

RisoDeltaCodificato 128 bit

Uguale a RiceDeltaEncoded32Bit, ad eccezione del fatto che codifica i numeri a 128 bit.

Campi
first_value_hi

uint64

I 64 bit superiori della prima voce nei dati codificati (hash). Se il campo è vuoto, i 64 bit superiori sono tutti zero.

first_value_lo

fixed64

I 64 bit inferiori della prima voce nei dati codificati (hash). Se il campo è vuoto, i 64 bit inferiori sono tutti zero.

rice_parameter

int32

Il parametro Golomb-Rice. Il valore di questo parametro è compreso tra 99 e 126 inclusi.

entries_count

int32

Il numero di voci con codifica delta nei dati codificati. Se è stato codificato un solo numero intero, questo sarà pari a zero e il singolo valore verrà archiviato in first_value.

encoded_data

bytes

I delta codificati che sono codificati utilizzando il programmatore Golomb-Rice.

RisoDeltaCodificato256 bit

Uguale a RiceDeltaEncoded32Bit, ad eccezione del fatto che codifica i numeri a 256 bit.

Campi
first_value_first_part

uint64

I primi 64 bit della prima voce nei dati codificati (hash). Se il campo è vuoto, i primi 64 bit sono tutti zero.

first_value_second_part

fixed64

I bit da 65 a 128 della prima voce nei dati codificati (hash). Se il campo è vuoto, i bit da 65 a 128 sono tutti zero.

first_value_third_part

fixed64

Dai 129 al 192° bit della prima voce nei dati codificati (hash). Se il campo è vuoto, i bit da 129 a 192 sono tutti zero.

first_value_fourth_part

fixed64

Gli ultimi 64 bit della prima voce nei dati codificati (hash). Se il campo è vuoto, gli ultimi 64 bit sono tutti zero.

rice_parameter

int32

Il parametro Golomb-Rice. Il valore di questo parametro è compreso tra 227 e 254 inclusi.

entries_count

int32

Il numero di voci con codifica delta nei dati codificati. Se è stato codificato un solo numero intero, questo sarà pari a zero e il singolo valore verrà archiviato in first_value.

encoded_data

bytes

I delta codificati che sono codificati utilizzando il programmatore Golomb-Rice.

RisoDeltaCodificato 32 bit

I dati codificati di Rice-Golomb. Utilizzato per hash o indici di rimozione. È garantito che ogni hash o indice qui abbia la stessa lunghezza, che è esattamente di 32 bit.

In generale, se ordiniamo tutte le voci lessicograficamente, scopriremo che i bit di ordine superiore tendono a non cambiare con la stessa frequenza dei bit di ordine inferiore. Ciò significa che se prendiamo anche la differenza adiacente tra le voci, i bit di ordine superiore hanno un'alta probabilità di essere zero. Questo sfrutta questa alta probabilità di zero scegliendo essenzialmente un certo numero di bit; tutti i bit più significativi di questo saranno probabilmente zero, quindi usiamo la codifica unaria. Controlla il campo rice_parameter.

Nota storica: la codifica Riso-delta è stata utilizzata per la prima volta nella versione V4 di questa API. Nella V5 sono stati apportati due miglioramenti significativi: in primo luogo, la codifica Rice-delta è ora disponibile con prefissi hash più lunghi di 4 byte; in secondo luogo, i dati codificati sono ora trattati come big-endian in modo da evitare un costoso passaggio di ordinamento.

Campi
first_value

uint32

La prima voce nei dati codificati (hash o indici) o, se è stato codificato un solo indice o prefisso hash, il valore di quella voce. Se il campo è vuoto, il valore è pari a zero.

rice_parameter

int32

Il parametro Golomb-Rice. Il valore di questo parametro è compreso tra 3 e 30 inclusi.

entries_count

int32

Il numero di voci con codifica delta nei dati codificati. Se è stato codificato un solo numero intero, questo sarà pari a zero e il singolo valore verrà archiviato in first_value.

encoded_data

bytes

I delta codificati che sono codificati utilizzando il programmatore Golomb-Rice.

RisoDeltaCodificato 64 bit

Uguale a RiceDeltaEncoded32Bit, ad eccezione del fatto che codifica i numeri a 64 bit.

Campi
first_value

uint64

La prima voce nei dati codificati (hash) o, se è stato codificato un solo prefisso hash, il valore di quella voce. Se il campo è vuoto, il valore è pari a zero.

rice_parameter

int32

Il parametro Golomb-Rice. Il valore di questo parametro è compreso tra 35 e 62 inclusi.

entries_count

int32

Il numero di voci con codifica delta nei dati codificati. Se è stato codificato un solo numero intero, questo sarà pari a zero e il singolo valore verrà archiviato in first_value.

encoded_data

bytes

I delta codificati che sono codificati utilizzando il programmatore Golomb-Rice.

SearchHashesRequest

Una richiesta inviata dal client per cercare prefissi hash specifici.

Questa funzione è progettata per eseguire ricerche solo negli elenchi di minacce e non in elenchi non contenenti minacce come la cache globale.

Novità della V5: i client non devono specificare un ClientInfo o gli stati degli elenchi di hash nel proprio database locale. per una maggiore privacy. Inoltre, i clienti non hanno bisogno di inviare i tipi di minacce a cui sono interessati.

Campi
hash_prefixes[]

bytes

obbligatorio. I prefissi hash da cercare. I client NON DEVONO inviare più di 1000 prefissi hash. Tuttavia, seguendo la procedura di elaborazione degli URL, i client NON DEVONO dover inviare più di 30 prefissi hash.

Attualmente ogni prefisso hash deve avere una lunghezza esatta di 4 byte. Questo POTREBBE essere rilassato in futuro.

filter

string

Campo facoltativo. Se il client è interessato all'applicazione di filtri, ad esempio recuperando solo tipi specifici di minacce, è possibile specificarlo. Se omesso, vengono restituite tutte le minacce corrispondenti. Ti consigliamo vivamente di ometterla per ottenere la protezione più completa offerta da Navigazione sicura. Per la sintassi delle espressioni di filtro, visita la pagina https://google.aip.dev/160.

SearchHashesResponse

La risposta è stata restituita dopo la ricerca degli hash delle minacce.

Se non viene trovato nulla, il server restituirà uno stato OK (codice di stato HTTP 200) con il campo full_hashes vuoto, anziché uno stato NOT_FOUND (codice di stato HTTP 404).

Novità di V5: esiste una separazione tra FullHash e FullHashDetail. Nel caso in cui un hash rappresenta un sito che presenta più minacce (ad es. sia MALWARE che SOCIAL_EngineERING), non è necessario inviare l'hash completo il doppio rispetto a V4. Inoltre, la durata della cache è stata semplificata in un unico campo cache_duration.

Campi
full_hashes[]

FullHash

Elenco non ordinato. L'elenco non ordinato di hash completi trovati.

cache_duration

Duration

La durata della cache lato client. Il client DEVE aggiungere questa durata all'ora corrente per determinare la scadenza. La data e l'ora di scadenza vengono quindi applicate a ogni prefisso hash interrogato dal client nella richiesta, indipendentemente dal numero di hash completi restituiti nella risposta. Anche se il server non restituisce un hash completo per un determinato prefisso hash, DEVE anche essere memorizzato nella cache dal client.

Importante: il client NON DEVE presumere che il server restituisca la stessa durata della cache per tutte le risposte. Il server POTREBBE scegliere durate della cache diverse per risposte diverse a seconda della situazione.

SizeConstraints

I vincoli relativi alle dimensioni degli elenchi di hash.

Campi
max_update_entries

int32

La dimensione massima nel numero di voci. L'aggiornamento non conterrà più voci di questo valore, ma è possibile che contenga meno voci di questo valore. DEVE essere almeno 1024. Se il valore è omesso o è pari a zero, non viene impostato alcun limite per le dimensioni degli aggiornamenti.

max_database_entries

int32

Imposta il numero massimo di voci che il client è disposto ad avere nel database locale per l'elenco. (Il server POTREBBE causare l'archiviazione da parte del client di un numero di voci inferiore a questo numero). Se omesso o pari a zero, non viene impostato alcun limite di dimensione del database.

ThreatAttribute

Attributi delle minacce. Questi attributi possono conferire un significato aggiuntivo a una particolare minaccia, ma non influiscono sul tipo di minaccia. Ad esempio, un attributo potrebbe specificare un livello di confidenza minore, mentre un attributo diverso potrebbe specificare un'affidabilità più alta. In futuro potrebbero essere aggiunti altri attributi.

Enum
THREAT_ATTRIBUTE_UNSPECIFIED Attributo sconosciuto. Se il server restituisce questo valore, il client ignora del tutto il contenuto FullHashDetail che le include.
CANARY Indica che non deve essere utilizzato il valore Threat_type per l'applicazione forzata.
FRAME_ONLY Indica che minaccia_type deve essere utilizzato solo per l'applicazione forzata sui frame.

ThreatType

Tipi di minacce.

Enum
THREAT_TYPE_UNSPECIFIED Tipo di minaccia sconosciuto. Se il server restituisce questo valore, il client ignora del tutto il contenuto FullHashDetail che le include.
MALWARE

Tipo di minaccia malware. I malware sono software o applicazioni per dispositivi mobili pensati appositamente per danneggiare un computer, un dispositivo mobile, il software in esecuzione o gli utenti. I comportamenti dei malware includono l'installazione di software senza il consenso dell'utente e l'installazione di software dannoso, come i virus.

Ulteriori informazioni sono disponibili qui.

SOCIAL_ENGINEERING

Tipo di minaccia di ingegneria sociale. Le pagine di ingegneria sociale sostengono impropriamente di agire per conto di una terza parte con l'intento di confondere gli spettatori e spingerli a eseguire un'azione con la quale questi si fidano solo di un vero agente della terza parte. Il phishing è un tipo di ingegneria sociale che induce con l'inganno lo spettatore a eseguire l'azione specifica di fornire informazioni, come le credenziali di accesso.

Ulteriori informazioni sono disponibili qui.

UNWANTED_SOFTWARE Tipo di minaccia software indesiderato. Per software indesiderato si intende un software che non rispetta i Principi sul software di Google, ma non è un malware.
POTENTIALLY_HARMFUL_APPLICATION Tipo di minaccia per le applicazioni potenzialmente dannosa come utilizzato da Google Play Protect per il Play Store.