Phishing Protection: Server Spec: Difference between revisions

Jump to navigation Jump to search
different table formats
m (properly wikify list)
(different table formats)
Line 122: Line 122:
The client can download and update various kinds of tables (lists) via the update request. Each table has a name with three components: ''provider''-''type''-''format''. The provider is just a name used to identify where the list comes from. The type indicates whether the list is a white or blacklist. The format indicates how URLs should be looked up in the list, for example the list might contain domains, hosts, or URLs. For example:
The client can download and update various kinds of tables (lists) via the update request. Each table has a name with three components: ''provider''-''type''-''format''. The provider is just a name used to identify where the list comes from. The type indicates whether the list is a white or blacklist. The format indicates how URLs should be looked up in the list, for example the list might contain domains, hosts, or URLs. For example:


goog-black-url      // A blacklist from Google; lookups should be by URL
* goog-black-url      // A blacklist from Google; lookups should be by URL
acme-white-domain  // A whitelist of domains from Acme, Inc.; lookups by domain
* acme-white-domain  // A whitelist of domains from Acme, Inc.; lookups by domain


Tables are versioned with a major and minor numbers. The major version is currently 1, and is used to describe the wire format (see below), how the table is serialized. The minor number is the version of the list. When providers add new items to a list or take items out of it, they increment the minor version number.
Tables are versioned with a major and minor numbers. The major version is currently 1, and is used to describe the wire format (see below), how the table is serialized. The minor number is the version of the list. When providers add new items to a list or take items out of it, they increment the minor version number.
Line 132: Line 132:


The server responds with updates to all tables in the wire format. For each table, the response includes either a completely new table or a diff between the client's version of the table and the most current version, whichever is smaller. If the client provided a wrapped key, the server also needs to compute a Message Authentication Code for the response data that the client use to verify the integrity of the tabels.
The server responds with updates to all tables in the wire format. For each table, the response includes either a completely new table or a diff between the client's version of the table and the most current version, whichever is smaller. If the client provided a wrapped key, the server also needs to compute a Message Authentication Code for the response data that the client use to verify the integrity of the tabels.
The Firefox client is currently aware of three different table formats:
* enchash: An encrypted hash table.  The host name is hashed and used as encryption key.  If a match can be found in a table, the value is decrypted into regular expressions that must match the URL for there to be a hit.
* url: The URL is looked up directly in the table.
* domain:  The host name or domain is derived from the URL and used as key for a table lookup.
The different formates will be discussed in more detail further below.


=== Wire Format ===
=== Wire Format ===

Navigation menu