REST Resource: hashList

资源:HashList

由名称标识的哈希列表。

JSON 表示法
{
  "name": string,
  "version": string,
  "partialUpdate": boolean,
  "compressedRemovals": {
    object (RiceDeltaEncoded32Bit)
  },
  "minimumWaitDuration": string,
  "sha256Checksum": string,
  "metadata": {
    object (HashListMetadata)
  },

  // Union field compressed_additions can be only one of the following:
  "additionsFourBytes": {
    object (RiceDeltaEncoded32Bit)
  },
  "additionsEightBytes": {
    object (RiceDeltaEncoded64Bit)
  },
  "additionsSixteenBytes": {
    object (RiceDeltaEncoded128Bit)
  },
  "additionsThirtyTwoBytes": {
    object (RiceDeltaEncoded256Bit)
  }
  // End of list of possible types for union field compressed_additions.
}
字段
name

string

哈希列表的名称。请注意,全局缓存也只是一个哈希列表,可在此处进行参考。

version

string (bytes format)

哈希列表的版本。客户端不得操纵这些字节。

使用 base64 编码的字符串。

partialUpdate

boolean

如果为 true,则表示这是包含添加和移除的部分差异,具体取决于客户端已有的内容。如果为 false,则表示这是完整的哈希列表。

如果为 false,客户端必须删除此哈希列表的所有本地存储版本。这意味着,客户端拥有的版本严重过时,或者客户端数据被认为已损坏。compressedRemovals 字段将为空。

如果为 true,客户端必须通过应用移除操作,然后再应用添加操作来应用增量更新。

compressedRemovals

object (RiceDeltaEncoded32Bit)

删除索引的 Rice-delta 编码版本。由于每个哈希列表的条目数肯定少于 2^32,因此索引被视为 32 位整数并进行编码。

minimumWaitDuration

string (Duration format)

客户端应至少等待这么长时间才能再次获取哈希列表。如果省略或为零,客户端应立即提取,因为这表示服务器有额外的更新要发送给客户端,但由于客户端指定的限制而无法发送。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

sha256Checksum

string (bytes format)

所有哈希的排序列表,再次使用 SHA256 进行哈希处理。这是应用所提供的更新后,数据库中存在的所有哈希的排序列表的校验和。如果未提供任何更新,服务器将省略此字段,以指示客户端应使用现有校验和。

使用 base64 编码的字符串。

metadata

object (HashListMetadata)

有关哈希列表的元数据。此字段不会由 hashList.get 方法填充,但会由 ListHashLists 方法填充。

联合字段 compressed_additions。添加项的 Rice-delta 编码版本。添加项的哈希前缀长度在列表中的所有添加项中都是一致的。compressed_additions 只能是下列其中一项:
additionsFourBytes

object (RiceDeltaEncoded32Bit)

4 字节加法。

additionsEightBytes

object (RiceDeltaEncoded64Bit)

8 字节加法。

additionsSixteenBytes

object (RiceDeltaEncoded128Bit)

16 字节的增量。

additionsThirtyTwoBytes

object (RiceDeltaEncoded256Bit)

32 字节的添加。

RiceDeltaEncoded32Bit

Rice-Golomb 编码的数据。用于哈希或移除索引。可以保证,此处的每个哈希或索引都具有相同的长度,并且此长度正好为 32 位。

一般来说,如果我们按字典顺序对所有条目进行排序,会发现高阶位往往不如低阶位那样频繁变化。这意味着,如果我们还考虑条目之间的相邻差分,则高阶位的概率很高为零。这种方法利用了零概率较高的特点,即选择一定数量的位;所有比这些位更重要的位都可能为零,因此我们使用一元编码。请参阅 riceParameter 字段。

历史记录:Rice-delta 编码首次用于此 API 的 V4 版本。在 V5 中,我们做出了两项重大改进:首先,Rice-delta 编码现在可用于长度超过 4 字节的哈希前缀;其次,编码后的数据现在被视为大端字节序,从而避免了代价高昂的排序步骤。

JSON 表示法
{
  "firstValue": integer,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
字段
firstValue

integer (uint32 format)

编码数据(哈希或索引)中的第一个条目,或者,如果仅编码了一个哈希前缀或索引,则为该条目的值。如果该字段为空,则相应条目的值为零。

riceParameter

integer

Golomb-Rice 参数。此参数保证介于 3 到 30 之间(含首尾)。

entriesCount

integer

编码数据中采用差分编码的条目数量。如果仅编码了一个整数,则此值为零,并且该单个值将存储在 firstValue 中。

encodedData

string (bytes format)

使用 Golomb-Rice 编码器编码的编码增量。

使用 base64 编码的字符串。

RiceDeltaEncoded64Bit

RiceDeltaEncoded32Bit 相同,但此函数可对 64 位数字进行编码。

JSON 表示法
{
  "firstValue": string,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
字段
firstValue

string

编码数据(哈希)中的第一个条目,或者,如果仅编码了一个哈希前缀,则为该条目的值。如果该字段为空,则相应条目的值为零。

riceParameter

integer

Golomb-Rice 参数。此参数保证介于 35 到 62 之间(含)。

entriesCount

integer

编码数据中采用差分编码的条目数量。如果仅编码了一个整数,则此值为零,并且该单个值将存储在 firstValue 中。

encodedData

string (bytes format)

使用 Golomb-Rice 编码器编码的编码增量。

使用 base64 编码的字符串。

RiceDeltaEncoded128Bit

RiceDeltaEncoded32Bit 相同,但此函数可对 128 位数字进行编码。

JSON 表示法
{
  "firstValueHi": string,
  "firstValueLo": string,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
字段
firstValueHi

string

编码数据(哈希)中第一个条目的高 64 位。如果该字段为空,则高 64 位全为零。

firstValueLo

string (uint64 format)

编码数据(哈希)中第一个条目的低 64 位。如果该字段为空,则低 64 位全为零。

riceParameter

integer

Golomb-Rice 参数。此参数保证介于 99 到 126 之间(含)。

entriesCount

integer

编码数据中采用差分编码的条目数量。如果仅编码了一个整数,则此值为零,并且该单个值将存储在 firstValue 中。

encodedData

string (bytes format)

使用 Golomb-Rice 编码器编码的编码增量。

使用 base64 编码的字符串。

RiceDeltaEncoded256Bit

RiceDeltaEncoded32Bit 相同,但此函数可对 256 位数字进行编码。

JSON 表示法
{
  "firstValueFirstPart": string,
  "firstValueSecondPart": string,
  "firstValueThirdPart": string,
  "firstValueFourthPart": string,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
字段
firstValueFirstPart

string

编码数据(哈希)中第一个条目的前 64 位。如果该字段为空,则前 64 位均为零。

firstValueSecondPart

string (uint64 format)

编码数据(哈希)中第一个条目的第 65 位到第 128 位。如果该字段为空,则第 65 位到第 128 位均为零。

firstValueThirdPart

string (uint64 format)

编码数据(哈希)中第一个条目的第 129 位到第 192 位。如果该字段为空,则第 129 位到第 192 位均为零。

firstValueFourthPart

string (uint64 format)

编码数据(哈希)中第一个条目的后 64 位。如果该字段为空,则最后 64 位均为零。

riceParameter

integer

Golomb-Rice 参数。此参数保证介于 227 到 254 之间(含首尾)。

entriesCount

integer

编码数据中采用差分编码的条目数量。如果仅编码了一个整数,则此值为零,并且该单个值将存储在 firstValue 中。

encodedData

string (bytes format)

使用 Golomb-Rice 编码器编码的编码增量。

使用 base64 编码的字符串。

HashListMetadata

有关特定哈希列表的元数据。

JSON 表示法
{
  "threatTypes": [
    enum (ThreatType)
  ],
  "likelySafeTypes": [
    enum (LikelySafeType)
  ],
  "description": string,
  "hashLength": enum (HashLength)
}
字段
threatTypes[]

enum (ThreatType)

无序列表。如果不为空,则表示哈希列表是一种威胁列表,并列举了与此哈希列表中的哈希或哈希前缀关联的威胁类型。如果条目不代表威胁(即代表可能安全的类型),则可能为空。

likelySafeTypes[]

enum (LikelySafeType)

无序列表。如果此字段不为空,则表示哈希列表代表的是可能安全的哈希列表,并且此字段会列举这些哈希被视为可能安全的方式。此字段与 threatTypes 字段互斥。

description

string

有关此列表的人类可读说明。使用英语撰写。

hashLength

enum (HashLength)

相应哈希列表支持的哈希长度。每个哈希列表将仅支持一种长度。如果针对同一组威胁类型或安全类型引入了不同的哈希长度,则会以单独列表的形式引入,并具有不同的名称和相应的哈希长度设置。

ThreatType

威胁类型。

枚举
THREAT_TYPE_UNSPECIFIED 威胁类型未知。如果服务器返回此值,客户端应完全忽略封装的 FullHashDetail
MALWARE

恶意软件威胁类型。恶意软件是指符合以下特征的所有软件或移动应用:蓄意危害计算机、移动设备、计算机/移动设备上运行的软件或计算机/移动设备用户。恶意软件会表现出各种恶意行为,其中包括:未经用户同意就擅自安装软件,以及安装病毒等有害软件。

点击此处了解详情。

SOCIAL_ENGINEERING

社会工程学威胁类型。社交工程学网页会虚假声称代表第三方行事,目的是让观看者感到困惑,从而执行观看者只会信任该第三方的真实代理人所采取的操作。网络钓鱼是一种社会工程学攻击,会诱骗观看者执行提供信息(例如登录凭据)的特定操作。

点击此处了解详情。

UNWANTED_SOFTWARE 垃圾软件威胁类型。垃圾软件是指不符合 Google 软件准则但不是恶意软件的任何软件。
POTENTIALLY_HARMFUL_APPLICATION Google Play 保护机制针对 Play 商店使用的潜在有害应用威胁类型

LikelySafeType

可能安全的网站类型。

请注意,SearchHashesResponse 有意不包含 LikelySafeType

枚举
LIKELY_SAFE_TYPE_UNSPECIFIED 未知。
GENERAL_BROWSING 此网站可能足够安全,可供一般浏览。这也称为全局缓存。
CSD 此网站可能足够安全,无需运行客户端检测模型或密码保护检查。
DOWNLOAD 此网站可能足够安全,因此无需检查来自该网站的下载内容。

HashLength

哈希列表中的哈希长度。

枚举
HASH_LENGTH_UNSPECIFIED 未指定长度。
FOUR_BYTES 每个哈希都是一个四字节前缀。
EIGHT_BYTES 每个哈希都是一个 8 字节的前缀。
SIXTEEN_BYTES 每个哈希都是一个 16 字节的前缀。
THIRTY_TWO_BYTES 每个哈希都是一个 32 字节的完整哈希。

方法

get

获取哈希列表的最新内容。