Package google.security.safebrowsing.v5alpha1

Index

SafeBrowsing

Les API Safe Browsing permettent aux clients de comparer des ressources Web (le plus souvent des URL) à des listes de ressources Web non sécurisées qui sont constamment mises à jour par Google.

BatchGetHashLists

rpc BatchGetHashLists(BatchGetHashListsRequest) returns (BatchGetHashListsResponse)

Obtenez plusieurs listes de hachage à la fois.

Il est très courant pour un client d'avoir besoin de plusieurs listes de hachage. Cette méthode est préférable à l'utilisation répétée de la méthode Get standard.

Il s'agit d'une méthode Get par lot standard, telle que définie par https://google.aip.dev/231. La méthode HTTP est également GET.

GetHashList

rpc GetHashList(GetHashListRequest) returns (HashList)

Récupérez le dernier contenu d'une liste de hachage. Une liste de hachage peut prendre la forme d'une liste des menaces ou d'une liste de non-menaces telle que le cache global.

Il s'agit d'une méthode Get standard telle que définie par https://google.aip.dev/131. La méthode HTTP est également GET.

ListHashLists

rpc ListHashLists(ListHashListsRequest) returns (ListHashListsResponse)

Listez les listes de hachage.

Dans la version 5 de l'API, Google ne supprime jamais de liste de hachage renvoyée par cette méthode. Cela permet aux clients d'ignorer cette méthode et de simplement coder en dur toutes les listes de hachage dont ils ont besoin.

Il s'agit d'une méthode List standard telle que définie par https://google.aip.dev/132. La méthode HTTP est GET.

SearchHashes

rpc SearchHashes(SearchHashesRequest) returns (SearchHashesResponse)

Recherche les hachages complets correspondant aux préfixes spécifiés.

Il s'agit d'une méthode personnalisée, telle que définie par https://google.aip.dev/136. Elle fait référence à un nom personnalisé qui correspond à la nomenclature générale de Google pour le développement d'API. Elle ne fait pas référence à l'utilisation d'une méthode HTTP personnalisée.

BatchGetHashListsRequest

Demande d'obtention de plusieurs listes de hachage en même temps.

Champs
names[]

string

Obligatoire. Les noms des listes de hachage concernées. Il peut s'agir d'une liste des menaces ou il peut s'agir du cache global. Les noms NE DOIVENT PAS contenir de doublons ; si tel est le cas, le client recevra une erreur.

version[]

bytes

Versions de la liste de hachage dont dispose déjà le client. Si c'est la première fois que le client récupère les listes de hachage, laissez le champ vide. Sinon, le client doit fournir les versions précédemment reçues du serveur. Le client NE DOIT PAS manipuler ces octets.

Le client n'a pas besoin d'envoyer les versions dans le même ordre que les noms de liste correspondants. Le client peut envoyer plus ou moins de versions dans une requête qu'il n'y a de noms. Cependant, le client NE DOIT PAS envoyer plusieurs versions correspondant au même nom. Si c'est le cas, le client recevra un message d'erreur.

Remarque historique: dans la version 4 de l'API, cette fonction s'appelait states. Elle est désormais renommée version pour plus de clarté.

desired_hash_length

HashLength

Longueur de préfixe souhaitée des hachages renvoyés en octets. Le serveur renvoie ensuite tous les préfixes de hachage de la longueur spécifiée.

Les listes de hachage n'ont pas les mêmes exigences concernant les valeurs acceptables pour le champ desired_hash_length. Vous le trouverez dans le champ supported_hash_lengths du fichier HashListMetadata. Si desired_hash_length ne spécifie pas de valeur dans supported_hash_lengths, une erreur est renvoyée aux clients.

Pour BatchGetHashListsRequest en particulier, les clients ne peuvent pas spécifier un autre desired_hash_length pour différentes listes. Si cette opération est nécessaire, le client doit le diviser en plusieurs BatchGetHashListsRequest.

size_constraints

SizeConstraints

Les contraintes de taille appliquées à chaque liste. Si cette valeur est omise, il n'y a aucune contrainte. Notez que les tailles indiquées ici correspondent à chaque liste, et non à l'ensemble des listes.

BatchGetHashListsResponse

Réponse contenant plusieurs listes de hachage.

Champs
hash_lists[]

HashList

Les listes de hachage dans le même ordre que celui indiqué dans la requête.

FullHash

Hachage complet identifié par une ou plusieurs correspondances.

Champs
full_hash

bytes

Hachage complet correspondant Il s'agit du hachage SHA256. La longueur sera exactement de 32 octets.

full_hash_details[]

FullHashDetail

Liste à puces. Champ répété identifiant les détails pertinents pour ce hachage complet.

FullHashDetail

Détails sur un hachage complet correspondant.

Remarque importante concernant la compatibilité ascendante: le serveur peut ajouter de nouveaux types et attributs de menaces à tout moment. Ces ajouts sont considérés comme des modifications de version mineures. Google s'engage à ne pas exposer les numéros de version mineure dans les API (voir https://cloud.google.com/apis/design/versioning pour connaître les règles de gestion des versions). Par conséquent, les clients DOIVENT être prêts à recevoir des messages FullHashDetail contenant des valeurs d'énumération ThreatType ou ThreatAttribute considérées comme non valides par le client. Par conséquent, il est de la responsabilité du client de vérifier la validité de toutes les valeurs d'énumération ThreatType et ThreatAttribute. Si une valeur est considérée comme non valide, le client DOIT ignorer l'intégralité du message FullHashDetail.

Champs
threat_type

ThreatType

Type de menace. Ce champ ne sera jamais vide.

attributes[]

ThreatAttribute

Liste à puces. Attributs supplémentaires concernant ces hachages complets. Ce champ peut être vide.

GetHashListRequest

Requête permettant d'obtenir une liste de hachage, qui peut être une liste des menaces ou une liste de non-menaces telle que le cache global.

Nouveautés dans la version 5: pour plus de clarté, l'ancien nom states dans la version 4 a été renommé version. Les listes sont désormais nommées, et les types de plates-formes et d'entrées de menaces sont supprimés. Il est désormais possible que plusieurs listes contiennent le même type de menace ou qu’une seule liste concerne plusieurs types de menaces. Les clients ont la nouvelle possibilité de spécifier la longueur de hachage souhaitée. Cela fait partie de la réponse aux préfixes de hachage de longueur variable de V4, qui posaient problème dans de nombreuses implémentations client: tous les hachages d'une liste ont désormais une seule longueur, ce qui permet des implémentations client beaucoup plus efficaces. Les contraintes ont été simplifiées et le type de compression a été supprimé (la compression est toujours appliquée).

Champs
name

string

Obligatoire. Le nom de cette liste de hachage spécifique. Il peut s’agir d’une liste de menaces ou cela peut être le cache global.

version

bytes

Version de la liste de hachage déjà utilisée par le client. Si c'est la première fois que le client récupère la liste de hachage, ce champ DOIT être laissé vide. Sinon, le client DOIT fournir la version précédemment reçue du serveur. Le client NE DOIT PAS manipuler ces octets.

Nouveautés de la version 5: dans la version 4 de l'API, cette fonction s'appelait states. Pour plus de clarté, elle est désormais renommée version.

desired_hash_length

HashLength

Longueur de préfixe souhaitée des hachages renvoyés en octets. Le serveur renvoie ensuite tous les préfixes de hachage de la longueur spécifiée.

Les listes de hachage n'ont pas les mêmes exigences concernant les valeurs acceptables pour le champ desired_hash_length. Vous le trouverez dans le champ supported_hash_lengths du fichier HashListMetadata. Si desired_hash_length ne spécifie pas de valeur dans supported_hash_lengths, une erreur est renvoyée.

size_constraints

SizeConstraints

Contraintes de taille sur la liste. Si cette valeur est omise, il n'y a aucune contrainte. Les contraintes sont recommandées sur tous les appareils dont la puissance de traitement, la bande passante ou l'espace de stockage sont limités.

HashList

Une liste de hachages identifiés par son nom.

Champs
name

string

Nom de la liste de hachage. Notez que le cache global n'est qu'une simple liste de hachage, que vous pouvez consulter ici.

version

bytes

Version de la liste de hachage. Le client NE DOIT PAS manipuler ces octets.

partial_update

bool

Lorsque la valeur est "true", il s'agit d'une différence partielle comprenant des ajouts et des suppressions basés sur les données déjà disponibles dans le client. Si la valeur est "false", il s'agit de la liste de hachage complète.

Lorsque la valeur est "false", le client DOIT supprimer toute version stockée localement pour cette liste de hachage. Cela signifie que soit la version détenue par le client est très obsolète, soit les données du client sont soupçonnées d'être corrompues. Le champ compressed_removals sera vide.

Lorsque la valeur est "true", le client DOIT appliquer une mise à jour incrémentielle en appliquant des suppressions, puis des ajouts.

compressed_removals

RiceDeltaEncoded32Bit

Version des index d'extraction, encodée au format delta de riz. Étant donné que chaque liste de hachage comporte certainement moins de 2^32 entrées, les index sont traités comme des entiers 32 bits et encodés.

minimum_wait_duration

Duration

Les clients doivent attendre au moins ce temps pour obtenir à nouveau la liste de hachage. En cas d'omission ou de zéro, les clients DOIVENT récupérer immédiatement l'accès, car cela indique que le serveur a une mise à jour supplémentaire à envoyer au client, mais ce n'est pas possible en raison des contraintes spécifiées par le client.

metadata

HashListMetadata

Métadonnées sur la liste de hachage. Il n'est pas renseigné par la méthode GetHashList, mais par la méthode ListHashLists.

Champ d'union compressed_additions. Version des ajouts encodées au format Rice-delta. La longueur des préfixes de hachage des ajouts est uniforme pour tous les ajouts de la liste. Il peut s'agir de la valeur desired_hash_length envoyée par le client ou d'une valeur choisie par le serveur si le client a omis ce champ. La compressed_additions ne peut être qu'un des éléments suivants :
additions_four_bytes

RiceDeltaEncoded32Bit

Ajouts de 4 octets.

additions_eight_bytes

RiceDeltaEncoded64Bit

Ajouts de 8 octets.

additions_sixteen_bytes

RiceDeltaEncoded128Bit

Ajouts de 16 octets.

additions_thirty_two_bytes

RiceDeltaEncoded256Bit

Ajouts de 32 octets.

Champ d'union checksum. Il s'agit de la somme de contrôle de la liste triée de tous les hachages présents dans la base de données après l'application de la mise à jour fournie. Il s'agit d'un champ "oneof" qui autorise plusieurs algorithmes de hachage. Le serveur peut également ignorer ce champ (si aucune mise à jour n'a été fournie) pour indiquer que le client doit utiliser la somme de contrôle existante. checksum ne peut être qu'un des éléments suivants :
sha256_checksum

bytes

Liste triée de tous les hachages, une nouvelle fois hachée avec SHA256.

HashListMetadata

Métadonnées sur une liste de hachage particulière.

Champs
threat_types[]

ThreatType

Liste à puces. Si ce champ n'est pas vide, cela indique que la liste de hachage est un type de liste de menaces, et énumère le type de menaces associé aux hachages ou préfixes de hachage de cette liste. Peut être vide si l'entrée ne représente pas une menace, c'est-à-dire si elle représente un type de sécurité vraisemblablement sans danger.

likely_safe_types[]

LikelySafeType

Liste à puces. Si ce champ n'est pas vide, cela indique que la liste de hachage représente une liste de hachages susceptibles d'être sûrs et énumère en quoi ils sont considérés comme probablement sûrs. Ce champ s'exclut mutuellement avec le champ "menaces".

mobile_optimized

bool

Indique si cette liste est optimisée pour les appareils mobiles (Android et iOS).

description

string

Description lisible de cette liste. Rédigé en anglais.

supported_hash_lengths[]

HashLength

Longueurs de hachage acceptées pour cette liste de hachage. Chaque liste de hachage peut accepter au moins une longueur. Ce champ ne sera donc pas vide.

HashLength

Longueur des hachages d'une liste de hachage.

Enums
HASH_LENGTH_UNSPECIFIED Longueur non spécifiée. Le serveur ne renvoie pas cette valeur dans les réponses au client (dans le champ supported_hash_lengths), mais le client est autorisé à l'envoyer (dans le champ desired_hash_length). Dans ce cas, le serveur sélectionne une valeur automatiquement. Les clients DOIVENT laisser le serveur choisir une valeur.
FOUR_BYTES Chaque hachage est un préfixe de quatre octets.
EIGHT_BYTES Chaque hachage est un préfixe de huit octets.
SIXTEEN_BYTES Chaque hachage correspond à un préfixe de 16 octets.
THIRTY_TWO_BYTES Chaque hachage est un hachage complet de 32 octets.

LikelySafeType

Types de sites sans risque.

Notez que SearchHashesResponse ne contient pas LikelySafeType intentionnellement.

Enums
LIKELY_SAFE_TYPE_UNSPECIFIED Inconnu.
GENERAL_BROWSING Ce site est probablement suffisamment sûr pour la navigation générale. C'est ce que l'on appelle le cache global.
CSD Ce site est probablement suffisamment sûr pour qu'il ne soit pas nécessaire d'exécuter des modèles de détection côté client ni de vérifier la protection par mot de passe.
DOWNLOAD Ce site est probablement suffisamment sûr pour que les téléchargements depuis celui-ci n'aient pas besoin d'être vérifiés.

ListHashListsRequest

Demande de liste des listes de hachage disponibles.

Champs
page_size

int32

Nombre maximal de listes de hachage à renvoyer. Le service peut renvoyer un nombre inférieur à cette valeur. Si aucune valeur n'est spécifiée, le serveur choisit une taille de page, qui peut être supérieure au nombre de listes de hachage. La pagination n'est donc pas nécessaire.

page_token

string

Jeton de page reçu d'un appel ListHashLists précédent. Fournissez-le pour récupérer la page suivante.

ListHashListsResponse

Réponse contenant des métadonnées sur les listes de hachage.

Champs
hash_lists[]

HashList

Listes de hachage dans un ordre arbitraire. Seules les métadonnées sur les listes de hachage seront incluses, pas leur contenu.

next_page_token

string

Jeton pouvant être envoyé en tant que page_token pour récupérer la page suivante. Si ce champ est omis, il n'y a pas d'autres pages.

RiceDeltaEnCod128Bit

Identique à RiceDeltaEncoded32Bit, sauf qu'il encode des nombres de 128 bits.

Champs
first_value_hi

uint64

Les 64 bits supérieurs de la première entrée dans les données encodées (hachages). Si le champ est vide, les 64 bits supérieurs sont tous des zéros.

first_value_lo

fixed64

Les 64 bits inférieurs de la première entrée dans les données encodées (hachages). Si le champ est vide, les 64 bits inférieurs sont tous des zéros.

rice_parameter

int32

Paramètre Golomb-Rice. La valeur de ce paramètre est comprise entre 99 et 126 inclus.

entries_count

int32

Nombre d'entrées encodées en delta dans les données encodées. Si un seul entier a été encodé, la valeur est zéro et la valeur unique sera stockée dans first_value.

encoded_data

bytes

Deltas encodés à l'aide du codeur Golomb-Rice

RiceDeltaEncoded256Bit

Identique à RiceDeltaEncoded32Bit, sauf qu'il encode des nombres de 256 bits.

Champs
first_value_first_part

uint64

Les 64 premiers bits de la première entrée dans les données encodées (hachages). Si le champ est vide, les 64 premiers bits sont tous des zéros.

first_value_second_part

fixed64

Les 65 à 128 bits de la première entrée dans les données encodées (hachages). Si le champ est vide, les 65 à 128 bits sont tous des zéros.

first_value_third_part

fixed64

Les 129 à 192 bits de la première entrée dans les données encodées (hachages). Si le champ est vide, les 129 à 192 bits sont tous des zéros.

first_value_fourth_part

fixed64

Les 64 derniers bits de la première entrée dans les données encodées (hachages). Si le champ est vide, les 64 derniers bits sont tous des zéros.

rice_parameter

int32

Paramètre Golomb-Rice. La valeur de ce paramètre est comprise entre 227 et 254, inclus.

entries_count

int32

Nombre d'entrées encodées en delta dans les données encodées. Si un seul entier a été encodé, la valeur est zéro et la valeur unique sera stockée dans first_value.

encoded_data

bytes

Deltas encodés à l'aide du codeur Golomb-Rice

RiceDeltaEnCod32Bit

Les données encodées en Rice-Golomb. Utilisé pour les hachages ou les index de suppression. C'est garanti que chaque hachage ou index a ici la même longueur, et que cette longueur est exactement de 32 bits.

En règle générale, si nous trions toutes les entrées de façon lexicographique, nous constatons que les bits d'ordre supérieur ont tendance à ne pas changer aussi souvent que les bits d'ordre inférieur. Cela signifie que si nous prenons également la différence adjacente entre les entrées, les bits d’ordre supérieur ont une forte probabilité d’être zéro. Cette méthode exploite cette forte probabilité de zéro en choisissant essentiellement un certain nombre de bits. Tous les bits plus significatifs que celui-ci sont susceptibles d'être zéro. C'est pourquoi nous utilisons l'encodage unaire. Consultez le champ rice_parameter.

Remarque historique: L'encodage du delta de riz a été utilisé pour la première fois dans la version 4 de cette API. Dans la version 5, deux améliorations significatives ont été apportées: premièrement, l'encodage Rice-delta est désormais disponible avec des préfixes de hachage de plus de 4 octets ; deuxièmement, les données encodées sont désormais traitées comme des données big-endian afin d'éviter une étape de tri coûteuse.

Champs
first_value

uint32

Première entrée des données encodées (hachages ou index) ou, si un seul préfixe de hachage ou index a été encodé, la valeur de cette entrée. Si le champ est vide, la valeur à saisir est zéro.

rice_parameter

int32

Paramètre Golomb-Rice. La valeur de ce paramètre est comprise entre 3 et 30 inclus.

entries_count

int32

Nombre d'entrées encodées en delta dans les données encodées. Si un seul entier a été encodé, la valeur est zéro et la valeur unique sera stockée dans first_value.

encoded_data

bytes

Deltas encodés à l'aide du codeur Golomb-Rice

RiceDeltaEncoded64Bit

Identique à RiceDeltaEncoded32Bit, sauf qu'il encode des nombres de 64 bits.

Champs
first_value

uint64

La première entrée des données encodées (hachages) ou, si un seul préfixe de hachage a été encodé, la valeur de cette entrée. Si le champ est vide, la valeur à saisir est zéro.

rice_parameter

int32

Paramètre Golomb-Rice. La valeur de ce paramètre est comprise entre 35 et 62 inclus.

entries_count

int32

Nombre d'entrées encodées en delta dans les données encodées. Si un seul entier a été encodé, la valeur est zéro et la valeur unique sera stockée dans first_value.

encoded_data

bytes

Deltas encodés à l'aide du codeur Golomb-Rice

SearchHashesRequest

Requête émise par le client pour rechercher des préfixes de hachage spécifiques.

Cette fonctionnalité est conçue pour rechercher uniquement les listes de menaces, pas les listes de non-menaces telles que le cache global.

Nouveautés de la version 5: les clients n'ont pas besoin de spécifier ClientInfo ni les états des listes de hachage de leur base de données locale. Cela permet d'améliorer la confidentialité. De plus, les clients n’ont pas besoin d’envoyer les types de menaces qui les intéressent.

Champs
hash_prefixes[]

bytes

Obligatoire. Préfixes de hachage à rechercher. Les clients NE DOIVENT PAS envoyer plus de 1 000 préfixes de hachage. Toutefois, suivant la procédure de traitement des URL, les clients NE DOIVENT PAS envoyer plus de 30 préfixes de hachage.

Actuellement, chaque préfixe de hachage doit comporter exactement 4 octets. Cette option PEUT être assouplie à l'avenir.

filter

string

Facultatif. Si le client souhaite effectuer des filtres, par exemple pour ne récupérer que certains types de menaces, vous pouvez le spécifier. Si cette valeur est omise, toutes les menaces correspondantes sont renvoyées. Nous vous recommandons vivement d'omettre cette étape afin d'obtenir la protection la plus complète possible par la navigation sécurisée. Pour en savoir plus sur la syntaxe des expressions de filtre, consultez https://google.aip.dev/160.

SearchHashesResponse

Réponse affichée après la recherche de hachages de menaces.

Si rien n'est trouvé, le serveur renvoie un état OK (code d'état HTTP 200) avec le champ full_hashes vide, au lieu de renvoyer un état NOT_FOUND (code d'état HTTP 404).

Nouveautés de la version 5: il existe une séparation entre FullHash et FullHashDetail. Dans le cas où un hachage représente un site présentant de multiples menaces (par exemple, MALWARE et SOCIAL_ENGINEERING), il n'est pas nécessaire d'envoyer le hachage complet deux fois, contrairement à la version 4. De plus, la durée du cache a été simplifiée dans un seul champ cache_duration.

Champs
full_hashes[]

FullHash

Liste à puces. Liste non triée des hachages complets trouvée.

cache_duration

Duration

Durée du cache côté client. Le client DOIT ajouter cette durée à l'heure actuelle pour déterminer le délai d'expiration. Le délai d'expiration s'applique ensuite à chaque préfixe de hachage interrogé par le client dans la requête, quel que soit le nombre de hachages complets renvoyés dans la réponse. Même si le serveur ne renvoie pas de hachage complet pour un préfixe de hachage particulier, ce fait DOIT également être mis en cache par le client.

Important: le client NE DOIT PAS supposer que le serveur renverra la même durée de mise en cache pour toutes les réponses. Le serveur PEUT choisir des durées de mise en cache différentes pour différentes réponses en fonction de la situation.

SizeConstraints

Contraintes relatives à la taille des listes de hachage.

Champs
max_update_entries

int32

Taille maximale du nombre d'entrées. La mise à jour ne contiendra pas plus d'entrées que cette valeur, mais il est possible qu'elle contienne moins d'entrées que cette valeur. Il DOIT être au moins égal à 1024. Si cette valeur est omise ou égale à zéro, aucune limite de taille de mise à jour n'est définie.

max_database_entries

int32

Définit le nombre maximal d'entrées que le client est prêt à avoir dans la base de données locale pour la liste. (Le serveur PEUT amener le client à stocker un nombre d'entrées inférieur à ce nombre.) Si cette valeur est omise ou est égale à zéro, aucune limite de taille de la base de données n'est définie.

ThreatAttribute

Attributs des menaces. Ces attributs peuvent conférer une signification supplémentaire à une menace spécifique, mais n’affecteront pas le type de menace. Par exemple, un attribut peut indiquer un niveau de confiance inférieur, tandis qu'un autre peut indiquer un niveau de confiance plus élevé. D'autres attributs seront peut-être ajoutés ultérieurement.

Enums
THREAT_ATTRIBUTE_UNSPECIFIED Attribut inconnu. Si le serveur renvoie cette valeur, le client ne doit pas tenir compte de la FullHashDetail qui l'englobe.
CANARY Indique que le type de menace ne doit pas être utilisé pour l'application.
FRAME_ONLY Indique que le type de menace ne doit être utilisé que pour l'application sur des frames.

ThreatType

Types de menaces.

Enums
THREAT_TYPE_UNSPECIFIED Type de menace inconnu. Si le serveur renvoie cette valeur, le client ne doit pas tenir compte de la FullHashDetail qui l'englobe.
MALWARE

Type de menace de logiciel malveillant. Un logiciel malveillant est un logiciel ou une application mobile conçus spécialement pour endommager un ordinateur ou un appareil mobile, perturber le fonctionnement du programme qu'il ou elle exécute, ou nuire à ses utilisateurs. Les logiciels malveillants ont des comportements néfastes. Ils peuvent installer des logiciels sur l'ordinateur de l'internaute sans son consentement et installer des programmes dangereux tels que des virus.

Pour en savoir plus, cliquez ici.

SOCIAL_ENGINEERING

Type de menace d'ingénierie sociale. Les pages d'ingénierie sociale prétendent à tort agir pour le compte d'un tiers dans le but d'inciter les internautes à effectuer une action qui ne leur ferait confiance qu'à un véritable agent de ce tiers. L'hameçonnage est un type d'ingénierie sociale qui amène l'utilisateur à effectuer une action spécifique consistant à fournir des informations, telles que des identifiants de connexion.

Pour en savoir plus, cliquez ici.

UNWANTED_SOFTWARE Type de menace logicielle indésirable. Un logiciel indésirable est un logiciel qui ne respecte pas les principes de Google concernant les logiciels, mais qui n'est pas un logiciel malveillant.
POTENTIALLY_HARMFUL_APPLICATION Type de menace d'application potentiellement dangereuse tel qu'il est utilisé par Google Play Protect sur le Play Store.