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)

ライスデルタでエンコードされた削除インデックスのバージョン。各ハッシュリストのエントリ数は明らかに 2^32 未満なので、インデックスは 32 ビット整数として扱われ、エンコードされます。

minimumWaitDuration

string (Duration format)

クライアントがハッシュリストを再度取得するには、少なくともこれほどの時間待つ必要があります。省略するかゼロの場合、クライアントはすぐにフェッチすべきです。これは、サーバーにはクライアントに送信する追加のアップデートがあるものの、クライアントが指定した制約のためにできなかったことを示しているからです。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

metadata

object (HashListMetadata)

ハッシュリストに関するメタデータ。これは hashList.get メソッドによって入力されますが、ListHashLists メソッドによって入力されます。

共用体フィールド compressed_additions。ライスデルタでエンコードされた加算バージョン。追加値のハッシュ接頭辞長は、リスト内のすべての追加で均一です。これは、クライアントから送信された 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 でエンコードされた文字列。

RiceDeltaEncoded32 ビット

Rice-Golomb でエンコードされたデータ。ハッシュまたは削除インデックスのいずれかに使用されます。すべてのハッシュまたはインデックスは同じ長さであることが保証されており、この長さはちょうど 32 ビットです。

一般的には、すべてのエントリを辞書順に並べ替えると、上位ビットが下位ビットほど頻繁には変化しない傾向があることがわかります。これは、エントリ間の隣接する差分も取得する場合、上位のビットがゼロである可能性が高いことを意味します。これは、基本的に特定の数のビットを選択することで、ゼロの確率の高さを利用します。これより重要なビットはすべてゼロになる可能性が高いため、単項エンコードを使用します。riceParameter フィールドをご覧ください。

歴史的な注意事項: ライスデルタ エンコードは、この API の V4 で初めて使用されました。V5 では 2 つの大きな改善が行われました。1 つ目は、ライスデルタエンコーディングが、4 バイトを超えるハッシュプレフィックスで利用できるようになったことです。次に、コストのかかる並べ替えステップを回避するために、エンコードされたデータがビッグ エンディアンとして扱われるようになりました。

JSON 表現
{
  "firstValue": integer,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
フィールド
firstValue

integer (uint32 format)

エンコードされたデータの最初のエントリ(ハッシュまたはインデックス)。1 つのハッシュプレフィックスまたはインデックスのみがエンコードされている場合は、そのエントリの値。フィールドが空の場合、エントリはゼロです。

riceParameter

integer

Golomb-Rice パラメータ。このパラメータは、3 ~ 30 の値を取ることが保証されています。

entriesCount

integer

エンコードされたデータでデルタ エンコードされたエントリの数。単一の整数のみがエンコードされている場合、これはゼロになり、単一の値が firstValue に保存されます。

encodedData

string (bytes format)

Golomb-Rice コーダーを使用してエンコードされた差分。

Base64 でエンコードされた文字列。

RiceDeltaEncoded64 ビット

RiceDeltaEncoded32Bit と同じですが、64 ビットの数値をエンコードします。

JSON 表現
{
  "firstValue": string,
  "riceParameter": integer,
  "entriesCount": integer,
  "encodedData": string
}
フィールド
firstValue

string

エンコードされたデータの最初のエントリ(ハッシュ)。ハッシュ プレフィックスが 1 つだけエンコードされている場合は、そのエントリの値。フィールドが空の場合、エントリはゼロです。

riceParameter

integer

Golomb-Rice パラメータ。このパラメータは、35 ~ 62 の値を取ることが保証されています。

entriesCount

integer

エンコードされたデータでデルタ エンコードされたエントリの数。単一の整数のみがエンコードされている場合、これはゼロになり、単一の値が firstValue に保存されます。

encodedData

string (bytes format)

Golomb-Rice コーダーを使用してエンコードされた差分。

Base64 でエンコードされた文字列。

RiceDeltaEncoded128 ビット

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 でエンコードされた文字列。

RiceDeltaEncoded256 ビット

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)

このハッシュリストでサポートされているハッシュ長。各ハッシュリストは少なくとも 1 つの長さをサポートします。したがって、このフィールドは空になりません。

ThreatType

脅威の種類

列挙型
THREAT_TYPE_UNSPECIFIED 不明な脅威タイプ。これがサーバーから返された場合、クライアントは含まれている FullHashDetail を完全に無視する必要があります。
MALWARE

マルウェアの脅威の種類。マルウェアとは、ソフトウェアまたはモバイルアプリであり、特にパソコン、モバイル デバイス、それらで実行されているソフトウェア、パソコンやモバイル デバイスのユーザーに対して有害な影響を与えることを目的として設計されたものを指します。マルウェアは、ユーザーの同意なしにソフトウェアをインストールする、ウイルスなどの有害なソフトウェアをインストールするなど、悪意のある動作を示します。

詳細につきましては、こちらをご覧ください。

SOCIAL_ENGINEERING

ソーシャル エンジニアリングの脅威タイプ。ソーシャル エンジニアリング ページでは、閲覧者が第三者の真の代理人のみを信頼して操作を実行させることを意図して、第三者を代理していると偽って視聴者を混乱させます。フィッシングとは、ログイン認証情報などの情報を提供してもらうという特定の操作をユーザーに行わせるソーシャル エンジニアリングの一種です。

詳細につきましては、こちらをご覧ください。

UNWANTED_SOFTWARE 望ましくないソフトウェアの脅威の種類。望ましくないソフトウェアとは、Google のソフトウェア原則に準拠していないがマルウェアではないソフトウェアを指します。
POTENTIALLY_HARMFUL_APPLICATION Play ストアの Google Play プロテクトで使用されている、有害な可能性があるアプリの脅威の種類。

LikelySafeType

安全性の高いサイトの種類

なお、SearchHashesResponse には意図的に LikelySafeType を含めていません。

列挙型
LIKELY_SAFE_TYPE_UNSPECIFIED 不明。
GENERAL_BROWSING このサイトは一般的なブラウジングには十分安全であると考えられます。これはグローバル キャッシュとも呼ばれます。
CSD このサイトは十分に安全であるため、クライアント側の検出モデルやパスワード保護チェックを実行する必要はありません。
DOWNLOAD このサイトは十分に安全である可能性が高いため、サイトからのダウンロードはチェックする必要はありません。

HashLength

ハッシュリスト内のハッシュの長さ。

列挙型
HASH_LENGTH_UNSPECIFIED 長さが指定されていません。サーバーはクライアントへのレスポンス(supportedHashLengths フィールド)でこの値を返しませんが、クライアントはこの値をサーバー(desiredHashLength フィールド)に送信することができます。送信する場合は、サーバーが自動的に値を選択します。クライアントは、サーバーが値を選択できるようにすべきです。
FOUR_BYTES 各ハッシュは 4 バイトの接頭辞です。
EIGHT_BYTES 各ハッシュは 8 バイトの接頭辞です。
SIXTEEN_BYTES 各ハッシュは 16 バイトの接頭辞です。
THIRTY_TWO_BYTES 各ハッシュは、32 バイトの完全なハッシュです。

メソッド

get

ハッシュリストの最新の内容を取得します。