REST Resource: hashList

資源:HashList

以名稱識別的雜湊清單。

JSON 表示法
{
  "name": string,
  "version": string,
  "partialUpdate": boolean,
  "compressedRemovals": {
    object (RiceDeltaEncoded32Bit)
  },
  "minimumWaitDuration": 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.

  // Union field checksum can be only one of the following:
  "sha256Checksum": string
  // End of list of possible types for union field checksum.
}
欄位
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)

用戶端至少應等候這段時間,才能再次取得雜湊清單。如果省略或為 0,用戶端「應該」立即擷取,因為指出伺服器有其他更新要傳送至用戶端,但因為用戶端指定的限制條件而無法傳送。

時間長度以秒為單位,最多可有 9 個小數位數,並結尾為「s」。例如:"3.5s"

metadata

object (HashListMetadata)

雜湊清單相關中繼資料。這會由 hashList.get 方法填入,但會由 ListHashLists 方法填入。

聯集欄位 compressed_additions。Rice-delta 編碼的新增項目版本。清單中所有新增內容的雜湊前置字元長度都相同。這可能是用戶端傳送的 desired_hash_length,或是用戶端省略該欄位時,伺服器選擇的值。compressed_additions 只能採用下列其中一種設定:
additionsFourBytes

object (RiceDeltaEncoded32Bit)

4 位元組新增的內容。

additionsEightBytes

object (RiceDeltaEncoded64Bit)

8 位元組新增項目。

additionsSixteenBytes

object (RiceDeltaEncoded128Bit)

16 位元組新增項目。

additionsThirtyTwoBytes

object (RiceDeltaEncoded256Bit)

32 位元組新增項目。

聯集欄位 checksum。這是套用提供的更新後,資料庫中所有雜湊的已排序清單總和檢查碼。這是「oneof」欄位,可讓系統接受多個雜湊演算法。伺服器也可能省略這個欄位 (在未提供更新的情況下),指出用戶端應使用現有的總和檢查碼。checksum 只能是下列其中一項:
sha256Checksum

string (bytes format)

所有雜湊的排序清單,並使用 SHA256 再次進行雜湊處理。

Base64 編碼的字串。

RiceDeltaEncoded32Bit

Rice-Golomb 編碼的資料。用於雜湊或移除索引。我們保證此處的每個雜湊或索引長度皆相同,且長度為 32 位元。

一般而言,如果我們按照字母順序排序所有項目,會發現較高順序的變動頻率通常不會像較低點的一樣高。也就是說,如果我們也採用項目之間的相鄰差異,則高排序位元很可能是 0。這種攻擊手法是藉由選擇特定數目的位元來入侵這種極高的可能性,所有比這個數字更重要,都不是零,因此我們使用一元編碼。請參閱 riceParameter 欄位。

歷史附註:此 API 的第 4 版首次使用 Rice-delta 編碼。V5 中做了兩個重大的改善:首先,Rice-delta 編碼現可使用超過 4 個位元組的雜湊前置字元;其次,編碼資料現在視為大端子,避免花費昂貴的排序步驟。

JSON 表示法
{
  "firstValue": integer,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
欄位
firstValue

integer (uint32 format)

編碼資料中的第一個項目 (雜湊或索引),或者如果只編碼一個雜湊前置字元或索引,則會是該項目的值。如果此欄位為空白,則項目為 0。

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

編碼資料中的第一個項目 (雜湊),或者如果只編碼一個雜湊前置字串,則該項目的值。如果此欄位為空白,則項目為 0。

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)
  ],
  "mobileOptimized": boolean,
  "description": string,
  "supportedHashLengths": [
    enum (HashLength)
  ]
}
欄位
threatTypes[]

enum (ThreatType)

未排序的清單。如果不是空白,就會指定雜湊清單是一種威脅清單,而此雜湊會列出與雜湊或雜湊前置字串相關的威脅類型。如果該項目不代表威脅,則為空白;也就是說,該項目代表可能安全無虞的類型。

likelySafeTypes[]

enum (LikelySafeType)

未排序的清單。如果不是空白,就會指定雜湊清單代表一份可能的安全雜湊清單,並列舉這些雜湊可能安全無虞的方法。這個欄位與 ThreatTypes 欄位互斥。

mobileOptimized

boolean

這份清單是否針對行動裝置 (Android 和 iOS) 進行最佳化。

description

string

這份清單的清楚易懂說明。以英文書寫。

supportedHashLengths[]

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 未指定長度。伺服器不會在回應用戶端時傳回這個值 (在 supportedHashLengths 欄位),但用戶端可以將這個值傳送至伺服器 (位於 desiredHashLength 欄位),在此情況下,伺服器會自動挑選一個值。用戶端「應」讓伺服器選擇值。
FOUR_BYTES 每個雜湊均為四位元組的前置字串。
EIGHT_BYTES 每個雜湊均為八位元組的前置字串。
SIXTEEN_BYTES 每個雜湊均為十六個位元組的前置字串。
THIRTY_TWO_BYTES 每個雜湊均為 32 個位元組的完整雜湊。

方法

get

取得雜湊清單的最新內容。