Internet DRAFT - draft-crispin-srs
draft-crispin-srs
Network Working Group K. Crispin
INTERNET-DRAFT D. Crocker
<draft-crispin-srs-00.txt> R. Gaetano
Expires in six months S. Langenbach
November, 1998
Shared Registry System Protocol (SRSP)
STATUS OF THIS MEMO
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use
Internet-Drafts as reference material or to cite them other than
as "work in progress."
To view the entire list of current Internet-Drafts, please check
the "1id-abstracts.txt" listing contained in the Internet-Drafts
Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
(Northern Europe), ftp.nis.garr.it (Southern Europe),
munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or
ftp.isi.edu (US West Coast).
ABSTRACT
This specification describes a protocol for a Shared Registry
System (SRS) that allows multiple registrars to register domain
names within a single Top Level Domain (TLD). The protocol is
high-level, text-based, and can be used over many underlying
transport mechanisms, including email. The semantic content of
the protocol is expressed as a set of keyword-value pairs; the
semantics and structure of this content is, in this document,
loosely described as the "payload".
The protocol described herein is essentially identical to the SRS
version 1.5 protocol, specified by the CORE SRS RFP and developed
by Curt Meyer of Emergent Corporation.
TABLE OF CONTENTS
1. ARCHITECTURE FOR A SRS
1.1. Communications
1.1.1. Failure model
1.1.2. Transaction State
1.1.3. Trust
1.1.4. SRS multiplexing of email and wire protocol
1.1.5. Encapsulation
1.2. Disaster recovery
1.3. Administration
1.4. Database Publishing
1.4.1. Whois
1.4.2. Zone Files
1.4.3. Fielded data
2. SRS PROTOCOL
2.1. Generic Syntax
2.1.1. Character Set
2.1.2. Keyword-value Pairs
2.1.3. Overall Composition
2.2. Requests
2.2.1. Generic Fields
2.2.2. Operations-Specific Fields
2.3. Responses
2.3.1. Generic Fields
2.3.2. Response-specific fields
2.4. Error Conditions
2.4.1. Error categories
2.4.2. Specific errors
2.5. Notes
2.5.1. Field checking
2.5.2. Remove Contact
2.5.3. Policy Decisions
2.5.4. More sophisticated syntax
2.5.5. Host leaks
2.5.6. Handle namespace
3. SRS TRANSPORT
3.1. SRS over Email
3.1.1. Encapsulation and Exchange
3.1.2. Errors
3.1.3. Notes
3.2. SRS over TCP
Encapsulation and Exchange
3.2.1. Connection
3.2.2. Errors
4. SECURITY CONSIDERATIONS
4.1. Definitions
4.1.1. Contact
4.1.2. Key
4.1.3. Owner
4.1.4. PGP
4.1.5. Crypt
4.2. Key Management
4.2.1. Registrar Keys
4.2.2. Registry and Dispute Resolution Agency Keys
4.2.3. Master Key Compromise
4.2.4. Agent Key Compromise
4.3. Authentication Schemes
4.3.1. PGP Signatures
4.3.2. Crypt Authentication
4.4. Notes
5. ACKNOWLEDGEMENTS
6. AUTHORS' ADDRESSES
7. REFERENCES
8. FULL COPYRIGHT STATEMENT
1. ARCHITECTURE FOR A SRS
This section describes a reference architecture for a shared
domain name registry system. Explicit goals of this system
include having mutually distrustful registrars, simple transfer
by a domain holder between registrars, extensive use of public
key signatures for authentication and nonrepudiation, robustness
in the face of failure of any component, and ease of
implementation. Note that this reference model is based on the
actual CORE implementation, and is therefore more specific than
is necessary to describe the protocol.
Three entities is party to most SRS operations:
* Domain holders (the customers),
* Registrars (hereafter referred to as the client), and
* Shared Registry System (hereafter referred to as the SRS).
This reference architecture is mostly concerned with the
interaction between the registrar and the SRS. Communications,
billing, authentication, etc., between the domain holder and the
registrar are beyond the scope of this document, and are expected
to vary widely, given the variation in registrar business models.
1.1. Communications
A Shared Registry is assumed to be composed of three tiers of
machines: client machines, operated by the registrars, and
fronted and database machines, operated by the registry. The
split between fronted and database machines is motivated by
two factors -- performance and security/integrity of the
database. The fronted and the database could be the same
machine, especially with a small registry. The
front-end/database machine(s) are collectively referred to as
the SRS.
In a large installation both the fronted machines and the
database machines may be replicated for performance and
robustness, as well, with the front ends specialized for
secure network communications, and the database machines
specialized database engines.
The client machines interact only with the fronted machines,
and the database machines interact only with the front-ends
as well. The client <-> fronted protocol is the focus of
this document, and it is what we refer to as the "SRS
protocol".
1.1.1. Failure model
An end-to-end acknowledgement is generated by both the
SRS and the client when requests or replies are received.
This ack allows fault recovery to be very
straightforward.
All operations that modify state can be reissued benignly
given appropriate duplicate detection logic in the
database machines. Given this characteristic, a
communications failure at any point can be recovered by
the client retrying the operation in question.
1.1.2. Transaction State
All changes to the SRS initiated by a registrar are
uniquely identified by a transaction identifier generated
by the client. This transaction id will consist of a
registrar key, a date, and a serial number.
We assume that no state is maintained on the fronted
machines. All state is distributed between the database
servers, and the client machines. A recovery protocol is
used to synchronize the client and database server's idea
of a request's state. Digital signatures are used to
detect forged state changes.
1.1.3. Trust
All requests are signed by the issuing registrar. A
transfer request is optionally signed by the domain
holder. The registrar's public key was signed by the
registry, and this certificate was communicated to the
SRS when the registrar was entered into the system.
Each database object has a registrar of record; only that
registrar may issue changes to that object. A transfer
operation is the operation of changing the registrar of
record. A backend process notifies, via email, the
previous registrar of a transfer of an object to another
registrar. Each domain and host also has a set of
contacts, each of which may have an associated key. A
transfer request must be signed by one of these contacts.
All replies sent to a client contain the associated
request body. This reply body is itself signed by the
database server. This reply is a nonrepudiatable
certificate that the operation actually completed. The
SRS database logs all of these certificates. A wise
client would keep records of all signed reply bodies
indefinitely, as they are nonrepudiatable proof of a
completed transaction.
The SRS private key is stored on each of the database
servers, and is used to sign all replies, and sign the
zone files for each TLD. The database servers also
verify the signature on all requests.
The fronted machines simply route traffic to client
machines, send and receive email, and distribute signed
zone files. At all times, it is assumed that the fronted
machines have been compromised, and thus, all successful
attacks on the front-ends result in at most a denial of
service. Since the front-ends have little state, they
can be reloaded from a known-good root disk image, and
restarted. As the front-ends are likely to be
replicated, these restarts will probably not even be
noticed by clients.
1.1.4. SRS multiplexing of email and wire protocol
The SRS protocol is designed to support both interactive
and email-based clients. The fronted machines all may
receive email, and generate acknowledgement email
messages when the requests have been accepted by the
database server.
In the CORE implementation the fronted encapsulates the
email request into a wrapper identifying the reply to
address, and sends the request to the database. When the
database replies to the request, it then copies the
wrapper from the request, and sends the reply to the
fronted. The fronted strips the wrapper, and generates
and sends an email message from the reply.
Likewise in the CORE implementation, an interactive
request has a wrapper identifying which connection the
reply should be sent on. As the client will
automatically retrieve any undelivered replies if the
connected front-end fails, this wrapper is a hint,
allowing prompt notification in most cases.
1.1.5. Encapsulation
All messaging is human-readable, ASCII, using MIME
multipart message encapsulation and format. All messages
that do not have the exact expected number of parts are
discarded, as are all messages that do not verify
signatures.
1.1.5.1. Signatures
PGP signatures use SHA1/DSS signatures as generated
by pgp5.0 international. The signature is packaged
as the second part of a two part multipart signed
message. The signed message is the first part. The
mime parameters for the message must include
micalg=pgp-sha1 and
protocol=application/pgp-signature. Multiple
signatures, which are used to countersign transfer
requests, are simply implemented as nested signed
messages.
1.1.5.2. Replies
Replies, as distinct from acks, are formed as an SRS
signed message, consisting of a two part,
multipart/mixed MIME message. The first part is the
reply body, and the second is the request that this
reply responds to. All signatures in the request are
intact, and thus replies are a certificate,
nonrepudiatable in both directions.
1.2. Disaster recovery
Several failure modes are not recovered from automatically;
indeed, a gross accident could destroy both fronted machines
and database servers. Replicated state offsite is important
to recover from this class of disaster. Frequent backups of
the database servers set an upper bound to the amount of lost
state in the SRS. Daily delivery of backup media to offsite
storage will safeguard against data center destruction, and
allow a rebuild up to the point of the backup.
As clients have been sent nonrepudiatable certificates of
request completion, when a client connects to a resurrected
SRS, the SRS may request a replay of these certificates.
These will then be used to resync up to the instant of
failure. Any unacknowledged requests are re-sent by the
client as in the communications failure case. Geographically
colocated clients could be affected by the same disaster, and
in this case, data will be lost.
A future, related approach, has all these certificates being
sent to a set of geographically well-distributed sites. On
resurrection, these sites are queried for up-to-the-crash
certificates, which are replayed. The advantage of this is
that no certificates need be kept on the clients.
A final, expensive approach has the database itself
replicated, with automatic failover. Oracle has several
different mechanisms to support this option.
1.3. Administration
The SRS has an administrative interface, allowing full
database control from on-site only. Backups are online, not
interrupting database access, and zone file generation is
automatic, placing the zone files on the fronted machines for
distribution via BIND.
A TLD name server is refreshed frequently from a signed zone
file; if a signature does not verify, the zone file is not
loaded, and an alarm triggered, causing an expert to be
automatically paged.
1.4. Database Publishing
A periodic extract of all data is performed. This single
extract is used to generate whois information, new zone
files, and fielded data files.
1.4.1. Whois
As whois is a primitive interface, a read-only database
optimized for text searching is loaded onto the fronted
machine designated as the whois server.
1.4.2. Zone Files
A total count of rows is calculated at extract time for
each TLD. A generated zone file must have this many rows
contained within it. If this comparison fails, the zone
file is not signed or distributed. DNSSEC is expected to
be deployed during 1998, so complex signing will need to
be phased in.
1.4.3. Fielded data
Interested parties may download the entire database, or
changes since the last download, in a well-defined form,
to be documented.
2. SRS PROTOCOL
This section specifies the SRS Protocol "payload", or
request/reply semantic content, for each of the operations the
SRS will support. The transport and authentication related
"wrapper" portions of the protocol are described in later
sections.
2.1. Generic Syntax
One of the design goals of the SRS protocol and payload is to
allow the use of unauthenticated[DHC1] communications paths,
placing all responsibility for security on a well-controlled
database backend server. A variety of communications layers
can be used as transport for the identical payload, including
email. Thus, the payload is in a form suitable for manual
composition of this email by a human operator. The general
form of the payload is thus similar to any number of other
textual field-based protocols.
2.1.1. Character Set
The payload will be expressed in the 7-bit ASCII
character set. ASCII double-quotes ('"'), newlines, and
backslashes ('\') have special meaning as described in
2.2, and lack special meaning except in the specific
contexts described.
2.1.2. Keyword-value Pairs
A payload consists of successive keyword-value pairs,
expressed either as in 2.2.1 or 2.2.2.
2.1.2.1. Unquoted
A keyword-value pair may be expressed as follows:
KEYWORD lwsp ':' lwsp VALUE lwsp newline
Where KEYWORD consists of a sequence of printable,
non-whitespace ASCII characters excluding colon
(':'). VALUE consists of a sequence of printable
ASCII characters, including whitespace.
VALUE will be terminated by an ASCII newline, except
that a newline immediately preceded by a backslash
will not terminate VALUE, but will instead cause the
backslash-newline sequence to be ignored. Thus,
backslash-newline will cause the concatenation of
textual lines of payload into a single value (not
including the backslash-newlines themselves).
Whitespace ("lwsp") between the delimiting colon and
the first subsequent non-whitespace character will
not be considered a part of VALUE, nor will the
terminating newline, nor will whitespace immediately
preceding the terminating newline.
Note that a VALUE whose last character is backslash
may be expressed by the inclusion of one or more
whitespace characters between the backslash and the
terminating newline.
2.1.2.2. Quoted
Alternatively, if the first non-whitespace character
after the colon is an ASCII double-quote, the
keyword-value pair is taken to be expressed in quoted
form:
KEYWORD lwsp ":" lwsp "VALUE" lwsp newline
KEYWORD consists of a sequence of printable,
non-whitespace ASCII characters excluding colon.
VALUE is taken to be every character between the
initial double-quote and the next double-quote in the
payload, including whitespace and newlines, excluding
the double-quotes themselves.
However, if the initial double-quote is immediately
followed by another double-quote, VALUE is considered
to be unquoted as described in 2.2.1, except that the
two leading double-quotes will be taken as a single
double-quote character.
Note that the quoted form does not allow for the
expression of double quotes anywhere in VALUE. This
form is intended to permit the simple inclusion of
multi-line base-64 PGP signatures in payloads; as
base-64 encoding does not use the ASCII double-quote
character, this simple alternative will suffice.
2.1.3. Overall Composition
The term "field" shall be used hereinafter to refer to a
keyword-value pair, and a specific field may be referred
to by its keyword.
No two fields in the same request may contain the same
keyword.
Unless otherwise specified, field values may be up to 255
bytes in length. The entirety of a payload, with
attached signatures and encapsulations may not exceed
65536 bytes.
Any ill-formed payload in a request will result in the
failure of the request, resulting in the SRS sending an
appropriate error message.
2.1.3.1. Case Sensitivity
Keywords are not case-sensitive. Unless otherwise
specified, field values are case-sensitive -- case
information will be stored in the database as
supplied, and matching operations will be
case-sensitive.
2.1.3.2. Dates
All dates communicated to and from the SRS will be
UTC dates in the format
YYYYMMDD [HH:MM:SS]
where HH represents the hours on a 24-hour clock.
Dates without the HH:MM:SS portion shall be
considered to be midnight at the beginning of the
specified day.
2.1.3.3. Localization
It is expected that the Keywords specified herein
will eventually be translated to multiple human
languages, with appropriate changes in encapsulation.
However, character set will still be restricted as in
2.1 above.
2.2. Requests
This section documents the contents of the payload associated
with an SRS request.
2.2.1. Generic Fields
The following fields must appear IN ORDER as the first
fields in a payload.
2.2.1.1. Payload-Version
This field specifies the version of the SRS protocol
the remainder of the payload uses. The remainder of
the payload must be compliant with the corresponding
version of this document, and the client is expected
to be able to appropriately process any reply message
generated according to the same version of this
document.
The only currently defined value for this field is
the literal "1.0".
This field is mandatory.
2.2.1.2. Registrar-Id
The previously assigned identifier for this registrar
in the SRS. Among other things, this value will be
used to determine the type and key for cryptographic
verification of the request.
This field is generally the fully qualified domain
name of the registrar.
This field is mandatory.
2.2.1.3. Transaction-ID
This is a single printable word (no whitespace).
This field specifies the identifier to be used to
denote this transaction. This identifier must be
unique across all transactions submitted by a
particular registrar. The registrar may use any
policy to generate a transaction-ID. It is strongly
recommended that transaction-IDs begin with the
registrar-ID as defined in 3.1.2.
In the case of a transaction status inquiry, this
field should be the Transaction-ID submitted with the
request for which status is desired.
This field is mandatory for all operations. While
the initial implementation of the SRS will respond to
status and query requests synchronously, this allows
future implementations to respond asynchronously
without changes to the protocol.
2.2.1.4. Request-Type
This field specifies the request type. All values of
this field will be stored and treated as lower-case.
Currently defined values for this field are:
"create" lwsp "contact"
"create" lwsp "host"
"create" lwsp "domain"
"modify" lwsp "contact"
"modify" lwsp "host"
"modify" lwsp "domain"
"remove" lwsp "host"
"remove" lwsp "domain"
"transfer" lwsp "host"
"transfer" lwsp "domain"
"inquire" lwsp "domain"
"inquire" lwsp "contact"
"inquire" lwsp "host"
"renew" lwsp "domain"
"status" "query"
Note that we do not currently specify a "remove
contact" operation. This is to ease the tracking of
events associated with a domain; we don't potentially
have to go through history attempting to recreate
contact information as well as domain information.
This field is mandatory.
2.2.1.5. Signer-Handle
The handle of a pre-existing contact whose
authentication information is used to authenticate
the request.
This field must exist if and only if the request is
doubly signed (the other signature being that of the
registrar) as described in the SRS Architecture
Specification, or if the request is authenticated
using a stored secret.
A request will fail if one of the following occurs:
(1) It is required to be doubly signed by the SRS
Security Policies document, and is not.
(2) The value of this field is not a valid contact
who is authorized to authenticate this transaction
according to the SRS Security Policies document.
This check is made before the application of this
request.
(3) Authentication, performed according to the
information in the contact record associated with
this field, fails.
Note that if a request is doubly signed and one of 2
or 3 above fail, the request will fail even if it is
not required by the SRS Security Policies document to
be doubly signed.
2.2.1.6. Authenticating-Key
The secret key used to authenticate a request.
This field must only exist if the contact specified
in the mandatory Signer-Handle value uses Crypt
authentication.
2.2.2. Operations-Specific Fields
This section documents fields that are specific to each
possible value of the Request-Type field. Unless
otherwise specified, these fields may appear in any order
(after those specified in 3.1)
2.2.2.1. Create Contact
The create contact operation results in the creation
of a contact record in the SRS. In order to support
the potential exchange of TLD databases,
functionality to support user-specified handles is
included.
No checking is performed to prevent the creation of
duplicate contacts (with different handles).
Handle
A single printable word (no whitespace), not
beginning with '=', case-insensitive. All values
of this field will be stored and treated as upper
case.
This field is optional; if specified, an attempt
is made to create the contact with the specified
handle. If the specified handle already exists
in the database, the operation fails and no
contact information is created.
Name
A printable string (may include whitespace). The
name of the contact.
This field is mandatory.
Title
A printable string (may include whitespace). The
contact's title.
This field is optional.
Organization
A printable string (may include whitespace). The
organization to which the contact belongs.
This field is optional. (In particular, it is
clearly inapplicable to the nominative domain.)
Address-1,
Address-2,
City,
State,
Postal-Code,
Country
All of these fields are printable strings (may
include whitespace).
These contain the contact's postal address
information. No checking is performed to ensure
correctness or completeness of the address;
specification of an accurate address is strongly
encouraged, for obvious reasons. In particular,
unspecified country fields may not be assumed to
be the United States.
All of these fields are optional.
Email
A printable string (may include whitespace). The
contact's email address. No checking will be
performed to ensure its validity.
This field is mandatory.
Phone
A printable string (may include whitespace). The
contact's international telephone number. No
checking will be performed to ensure its
validity. Specification of a complete telephone
number, including country code, is strongly
encouraged; telephone numbers may not be assumed
to be in the United States.
This field is optional.
Auth-Type
This field specifies the type of authentication
to be performed in order to verify this contact's
digital signature. All values of this field will
be stored and treated as lower case. Currently
defined values are:
pgp5
crypt
none
This field is mandatory.
Auth-Key
A printable string of up to 1,023 characters (may
include whitespace). Specifies the key to be
used to verify the validity of a request to
change this contact. Its contents are dependent
on the value of the Auth-Type field.
This field is mandatory, unless the value of the
Auth-Type field is "none", in which case it must
not be specified.
Fax
A printable string (may include whitespace). The
contact's international fax telephone number. No
checking will be performed to ensure its
validity. Specification of a complete telephone
number, including country code, is strongly
encouraged; telephone numbers may not be assumed
to be in the United States.
This field is optional.
2.2.2.2. Create Host
The create host operation results in the creation of
a new host record in the SRS.
This operation may implicitly create contact records
and other information in the SRS. If these
operations fail for any reason, the entire operation
fails and no change is made to the SRS.
Handle
A single printable word (no whitespace), not
beginning with '=', case-insensitive. All values
of this field will be stored and treated as upper
case.
This field is optional; if specified, an attempt
is made to create the host with the specified
handle. If the specified handle already exists
in the database, the operation fails and no host
information is created.
IP-Address
This field is a list of 4-octet IP addresses for
the nameserver. IP addresses are expressed in
decimal-"dot" format; each of the four octets is
represented as decimal ASCII text, separated by
'.' (e.g., "140.174.2.181").
No verification is performed on this field beyond
syntactic correctness. In particular, no
duplicate checking is performed, so multiple host
records can exist for the same IP address. This
enables a user to administer several different
"sets" of domains on one nameserver if so
desired.
This field is mandatory.
Domain-Name
This field is a valid fully-qualified domain name
as specified in RFC 1034 et seq. It is taken to
be the domain name of this host. All values of
this field will be stored and treated as lower
case.
Contact Information
Each host must have contact information
associated with it. This contact may either be
supplied as the handle of a pre-existing contact,
or it may be created "implicitly" from
information supplied as part of the Create Host
operation.
The presence of valid contact information
supplied by one of these two methods is
mandatory; if an error occurs, the entire create
host operation fails and no changes are made to
the SRS.
Contact-Handle
The handle of a pre-existing contact generated by
the SRS. All values of this field will be stored
and treated as upper case.
This contact is associated with the host. If
this contact handle does not exist, the entire
create host operation fails and no changes are
made to the SRS.
Implicit Contact Creation
Contacts may be created implicitly by specifying
contact information in fields named by prepending
the string "Contact-" to the field names
specified in 3.2.1.2 -- 3.2.1.9.
Fields are mandatory and subject to validity
checking as specified in 3.2.1.2 -- 3.2.1.9. If
an error occurs during implicit contact creation,
the operation fails and no changes are made to
the SRS.
2.2.2.3. Create Domain
The create domain operation results in the creation
of a domain record in the SRS. This operation may
also implicitly create contact records and other
information in the SRS. If any of these operations
fail for any reason, the entire operation fails and
no change is made to the SRS.
TLD
This field specifies the top-level domain in
which the domain should be created. All values
of this field will be stored and treated as lower
case.
This field must match one of the top-level
domains being managed by this SRS; otherwise, the
operation fails.
This field is mandatory.
SLD
A valid second-level domain name, as defined in
RFC-1034 et seq. This field is not
case-sensitive, and will be mapped to lower case
for storage in the database. If both the TLD and
SLD fields match those attributes of a
preexisting domain record, the operation will
fail.
This field is mandatory.
Nameservers
Each domain has no fewer than two and no more
than twelve host records associated with it.
These hosts are expected to act as the domain's
nameservers.
This protocol supports both the use of
pre-existing hosts by handle and the implicit
creation of hosts by the specification of host
creation information in a domain creation
operation.
The nameservers for a domain are numbered
sequentially, starting from 1. Each of the
nameservers for the domain may be a pre-existing
host, referenced by handle, or an
implicitly-created host.
Each nameserver is handled identically. For the
purposes of the remainder of 3.2.3.3 and for
3.2.3.7, "<nsnum>" may be replaced with the
concatenation of "NS" (case-insensitive) and the
decimal ASCII representation of the sequential
number of the nameserver.
<nsnum>-Handle
The handle of a pre-existing host. If a host
with this handle does not already exist in the
SRS, the entire domain creation operation fails
and no changes are made to the SRS.
If this field is specified for a nameserver
number, implicit host creation may not be
specified for that nameserver.
This field is case-insensitive.
Implicit Host Creation
Hosts may be created implicitly by prepending the
string "<nsnum>-" to the fields specified in
3.2.2.2 -- 3.2.2.4. Implicit contact creation as
part of implicit host creation, as described in
3.2.2.4.2, is supported by prepending
"<nsnum>-Contact-" to the field names described
in 3.2.1.2 -- 3.2.1.9.
A linked contact specification is supported for
the host contact handle
("<nsnum>-Contact-Handle") as specified in
3.2.3.7. If an error occurs during this process,
the entire domain creation operation fails and no
changes are made to the SRS.
If implicit creation is used for a nameserver,
<nsnum>-Handle may not be specified for that
nameserver. Implicit host creation with a
user-supplied handle is not supported.
Contact Information
Each domain has exactly three contacts associated
with it: a technical contact, an administrative
contact, and a billing contact. Any two or more
of these may be the same contact. Each of the
three contact types is handled identically, so
for the purposes of the remainder of 3.2.3.4, the
string "<type>" may be replaced by one of
"Admin", "Tech", or "Billing".
As described below, contact information for each
contact type must either be specified as the
handle of a preexisting contact, or a contact
record must be implicitly created.
If any operation fails for any contact, the
entire domain creation operation fails, and no
changes are made to the SRS repository.
<type>-Contact-Handle
A single printable word (no whitespace),
case-insensitive.
If the value of this field begins with '=', the
value of the field is a linked contact
specification as described in 3.2.3.7. If the
value of this field does not begin with '=', the
value must be a pre-existing contact handle, in
which case the contact with that handle is
associated with the domain.
If the contact does not exist, the entire domain
creation fails. If <type>-Contact-Handle is
specified, implicit contact creation may not be
used for that contact type; specification of any
other contact information fields for that contact
type causes the operation to fail. This implies
that a specific contact handle may not be
requested as part of an implicit contact
creation.
Implicit Contact Creation
Contacts may be created implicitly by specifying
contact information in fields named by prepending
the string "<type>-Contact-" to the field names
specified in 3.2.1.2 -- 3.2.1.9.
If implicit contact creation is used for a
contact type, <type>-Contact-Handle may not be
specified for that contact type.
Fields are mandatory and subject to validity
checking as specified in 3.2.1.2 -- 3.2.1.9.
Status
This field specifies the status of the domain.
All values of this field will be stored and
treated as lower case. Currently defined values
are:
reserved
production
expired
hold
This field is mandatory. The semantic meanings
for these values are defined in the section
describing the Dispute Resolution Agent (DRA)
interface.
Linked Contact Specification
A domain creation operation can result in the
implicit creation of a number of contact records,
both as domain and host contacts. The SRS
supports the use of multiple instances of the
same implicitly created contact as part of a
domain creation; e.g., "Implicitly create a
contact as the domain technical contact, and also
use that contact as the domain administrative
contact and the host contact for nameserver
five."
This is accomplished by specifying contact
handles beginning in '=', followed by one of
"admin", "tech", "billing", "ns1", "ns2", "ns3",
... (case insensitive). When a contact handle
field is specified as one of these equivalences,
the contact whose type is the remainder of the
field value after the '=' is also used for the
specified contact.
For example, if the line "Admin-Contact-Handle:
=ns3" appears in a domain creation, whatever
contact is used as the host contact for the third
nameserver of the domain will also be used as the
administrative contact. Note that the actual
contact handle is stored in the SRS repository;
if the host contact for the third nameserver is
subsequently changed, the domain's administrative
contact will not be.
Circular references are, of course, not allowed.
Also note that "<nsnum>-Handle" (3.2.3.3.1) and
"<nsnum>-Contact-Handle" (3.2.3.3.2) are NOT
equivalent; the former is the handle of a host,
while the latter is the handle of the host's
contact.
Organization
The name of the Entity or Organization
registering the domain.
This field is mandatory.
2.2.2.4. Modify Contact
This operation is used to modify a contact record in
the SRS.
Handle
The value of this field must be a pre-existing
contact handle. This field is case-insensitive.
There is no facility for modifying a contact's
handle. All other information may be modified,
but the handle is considered unique and invariant
for the life of the contact.
This field is mandatory.
Contact Information
Any of the fields specified in 3.2.1.2 -- 3.2.1.9
may be specified here.
None of these fields are mandatory in the context
of a modify operation, except that Auth-Key must
be specified if Auth-Type is specified.
If specified, the value of a field is subject to
the same verification criteria as in 3.2.1, after
which its value replaces the previous value for
the specified attribute of the contact.
If any errors occur, the entire operation fails,
and no changes are made to the SRS repository.
2.2.2.5. Modify Host
This operation is used to modify a host record in the
SRS. It may also be used to implicitly create a new
contact record for the host as specified in
3.2.2.4.2.
Handle
This is the handle of a pre-existing host in the
SRS. This field is case insensitive.
This field is mandatory, and specifies the host
to be modified by this operation.
Host Information
Any of the fields described in 3.2.2.2 -- 3.2.2.4
may be specified here. Any or all of these
fields may be specified independently, except
that the specification of a contact handle and
the implicit creation of a new contact are
mutually exclusive as specified in 3.2.2.4.
The modification of a contact is not allowed in
the context of a host modification.
Specification of any Contact field as in
3.2.2.4.2 will be considered to be an attempt to
associate the host with a different,
newly-created contact of the specified type. The
problem of erroneous creation of new contacts due
to this is expected to be minimal, as most
requests that attempt to implicitly modify a
contact as part of a host modification will
likely be missing one or more of the fields
required for contact creation (such as
authentication information fields), causing the
entire host modification request to fail.
If any errors occur, the entire operation fails,
and no changes are made to the SRS repository.
2.2.2.6. Modify Domain
This operation is used to modify a domain record in
the SRS. It may also be used to implicitly create
new contacts or nameserver hosts for the domain, in
the manner specified in 3.2.3.
TLD, SLD
Both of these fields must match a pre-existing
domain in the SRS. These fields are
case-insensitive.
There is no facility for renaming a domain. All
other information may be modified, but the domain
name is considered unique and invariant for the
life of the domain. It is expected that a
"rename domain" be executed as a "create domain"
followed by a "remove domain".
These fields are mandatory.
Domain Information
Any of the fields specified in 3.2.3.3 -- 3.2.3.6
may be specified here. With the exceptions
documented below, any or all of these fields may
be specified independently. They will be subject
to the same verification checks as in 3.2.3, and
will then replace the old attributes of the
domain that correspond to these fields.
Implicit contact and host creation may be a part
of the domain modification operation, as
specified in 3.2.3.3.2 and 3.2.3.4.2, may be a
part of the modify domain operation.
If an error occurs, the entire domain
modification operation will fail and no changes
will be made to the SRS.
Fields may be specified independently as
described in 3.2.3.3 -- 3.2.3.6, according to the
following additional rules:
Nameservers Replaced as a List
The nameservers associated with a domain must be
replaced as a list. nameservers in a modify
domain operation must be specified sequentially
starting from 1, and the entire list of
nameservers for a domain will be replaced with
the list specified in the modify operation.
No Implicit Modification
The modification of a contact or host record
cannot be specified as an implicit part of a
domain modification request.
Specification of any explicit creation fields
from 3.2.3.3.2 or 3.2.3.4.2 will be considered to
be an attempt to associate the domain with a
different, newly-created object of the specified
type. The problem of erroneous creation of new
objects due to this is expected to be minimal, as
most requests that attempt to implicitly modify
an object as part of a domain modification will
likely be missing one or more of the fields
required for object creation, causing the entire
domain modification request to fail.
Linked Contact Specification
The linked contact specification described in
3.2.3.7 is allowed. Changes are made in order of
dependency, such that for a field entry of
"<type1>-Contact-Handle: =<type2>", the <type2>
contact would be updated before its transitive
assignment to the <type1> contact.
2.2.2.7. Remove Host
This operation removes a host from the SRS
repository. Removal of disused host records is
strongly encouraged.
Handle
A pre-existing host handle in the SRS, case
insensitive. This host is removed from the
repository.
This field is mandatory.
2.2.2.8. Remove Domain
This operation removes a domain record from the SRS
repository.
TLD, SLD
Both of these fields must match a pre-existing
domain in the SRS. These fields are
case-insensitive. Naturally, these fields
specify which domain to remove.
These fields are mandatory.
2.2.2.9. Transfer Contact
This operation transfers the registration function of
a contact from its previous registrar to the
requesting registrar.
Handle
A pre-existing contact handle in the SRS
repository, case insensitive. This contact will
be transferred to the requesting registrar.
This field is mandatory.
2.2.2.10. Transfer Host
This operation transfers the registration function of
a host from its previous registrar to the requesting
registrar.
Handle
A pre-existing host handle in the SRS repository,
case insensitive. This host will be transferred
to the requesting registrar.
This field is mandatory.
2.2.2.11. Transfer Domain
This operation transfers the registration function of
a domain from its previous registrar to the
requesting registrar.
TLD, SLD
Both of these fields must match a pre-existing
domain in the SRS. These fields are
case-insensitive. These fields specify which
domain to transfer.
These fields are mandatory.
2.2.2.12. Status
This operation allows a registrar to query the
database for the status of a transaction previously
submitted by that registrar. It is a request to the
SRS to resend the reply information of a transaction;
if the request has been completed, it will cause
another copy of the authenticated reply to the
transaction to be returned to the user.
Records of old transactions, and thus the information
required to reconstruct replies, are not guaranteed
to persist in the SRS database indefinitely. It is
anticipated that a registrar can determine the
completion of an old transaction by determining the
status of a domain through a mechanism such as whois.
This request is not valid for transaction IDs of
query requests.
The Transaction ID for which the reply is requested
is conveyed in the Transaction-ID field (3.1.3).
Since this operation is a solicitation for a resend
of a transaction reply, it does not have a
transaction ID of its own. Thus, the status
operation does not have any fields other than those
documented in 3.1.
2.2.2.13. Query
This operation allows a registrar to request a list
of its past requests that satisfy a Boolean
predicate. A list of all transaction ID's of
requests submitted by the querying registrar in the
SRS database's stored history that satisfy all of the
specified clauses is returned.
History records will not be preserved online in the
SRS database indefinitely. It is expected that a
registrar can deduce the results of a sufficiently
old transaction by a mechanism such as whois.
All of the fields documented in below are optional.
To be included in the returned list of transaction
ID's, a request must satisfy all predicates
specified.
Request-State
This field is a set of one or more
case-insensitive keywords separated by
whitespace. Requests whose state matches one of
the keywords as of the execution of the query
satisfy this clause.
Valid keywords are the request states listed in
4.2.2.1.
Submitted-Since
This field is a UTC date and time, as specified
in 2.3.2. Requests queued for processing after
the specified time satisfy this clause.
Submitted-Before
This field is a UTC date and time, as specified
in 2.3.2. Requests queued for processing before
the specified time satisfy this clause.
Completed-Since
This field is a UTC date and time, as specified
in 2.3.2. Requests whose processing completed
after the specified time satisfy this clause.
Completed-Before
This field is a UTC date and time, as specified
in 2.3.2. Requests whose processing completed
before the specified time satisfy this clause.
2.2.2.14. Domain Inquiry
Registrars may inquire all the SRS database state of
a domain. This is accomplished via the Inquire
Domain Request. This is a synchronous request.
TLD, SLD
Both of these fields must match a pre-existing
domain in the SRS. These fields are
case-insensitive and mandatory.
2.2.2.15. Contact Inquiry
Related to domain inquiry, registrars have the
ability to resolve contact handles to keyword-value
pairs defining that contact.
This is a synchronous request.
Handle
The value of this field must be a pre-existing
contact handle.
This field is case-insensitive and mandatory.
2.2.2.16. Host Inquiry
Related to the domain inquiry, registrars have the
ability to resolve host handles to keyword-value
pairs defining that host. A Contact-Handle keyword
is supplied by the registrar and the SRS replies
accordingly. This is a synchronous request.
Handle
This is the handle of a pre-existing host in the
SRS. This field is case-insensitive and
mandatory.
2.2.2.17. Renew Domain
This operation adds a system-defined interval to the
domain's expiration date in the SRS repository.
TLD, SLD
Both of these fields must match a pre-existing
domain in the SRS. These fields are
case-insensitive. Naturally, these fields
specify which domain to renew.
These fields are mandatory.
Any attempt to renew a domain outside of the
registries policy-defined threshold for renewal
will cause the request to fail.
2.3. Responses
This section documents the various fields that may appear in
the server's responses to an operation.
2.3.1. Generic Fields
The following fields appear in order in all responses.
2.3.1.1. Registrar-ID
This is the registrar ID supplied in the request that
elicited this response.
This field will not be supplied in the event of a
request parse error occurring before the registrar ID
could be determined. However, if the wireline
protocol is used to communicate with the SRS, such a
"short" reply will be synchronous as defined by the
wireline protocol.
2.3.1.2. Transaction-ID
This is the transaction ID supplied in the request
that elicited this response.
This field will not be supplied in the event of a
request parse error occurring before the transaction
ID could be determined. However, if the wireline
protocol is used to communicate with the SRS, such a
"short" reply will be synchronous as defined by the
wireline protocol.
2.3.1.3. Response-Type
This field designates the type of response.
Currently defined values are:
ack
reply
2.3.1.4. Resolver-Sequence
The sequence number of the resolution of this
request. Fully explained in the FAIRNESS
DESCRIPTION document.
2.3.2. Response-specific fields
This section documents fields that appear in specific
response types.
2.3.2.1. Ack
This is an acknowledgement of a request and a
confirmation that it has been queued for processing.
Estimated-Completion
This is a UTC date and time, as specified in
2.3.2. It represents an estimate by the SRS as
to the completion time of the request. It is by
no means a commitment.
This field may or may not be returned.
2.3.2.2. Reply
This is the reply to a request, returned by the SRS
either on completion of a request or in response to a
status request by the client.
Request-State
This describes the current state of the request
in the SRS server. Currently defined values are:
pending
in-process
succeeded
failed
The success or failure of the operation is
authoritatively described by the content of this
field, regardless of the content of any other
field in the reply (including the Error-Code
field).
This field will be returned for all replies.
Error-Code
This is the decimal ASCII representation of a
number between -2^31 and 2^31, exclusive, that
specifically describes any errors or exceptions
that occurred during request processing.
Defined values for this field are described in
section 5 of this document. Note that an error
code may be returned with any value of the
Request-State field.
This field will only be returned in the event of
an error or exception.
Error-Text
This is a single line of ASCII text that more
specifically describes any errors that occurred.
This field will only be returned if there is an
error or exception for which the SRS can supply
meaningful additional information.
Contact-Handle
This field is a single printable word (no
whitespace). It specifies the handle of a
contact that was created with a Create Contact
(3.2.1) request, or the new contact of a host,
either implicitly created or explicitly
referenced as part of a Create or Modify Host
operation (3.2.2 or 3.2.5).
This field is only returned for a successful
Create Contact or Create or Modify Host request.
Host-Handle
This field is a single printable word (no
whitespace). It specifies the handle of a host
that was created with a Create Host request
(3.2.2).
This field is only returned for a successful
Create Host request.
<type>-Contact-Handle
These fields are single printable words (no
whitespace). <type> can be one of:
admin
tech
billing
ns1
ns2
ns3
etc
These fields specify the handles of all contacts
newly associated with a domain, whether
implicitly created or explicitly referenced, as
part of a Create or Modify Domain request (3.2.3
or 3.2.6).
Each of these fields is returned in the event of
the successful association of a contact with a
domain for the corresponding contact type.
<nsnum>-Handle
These fields are single printable words (no
whitespace). <nsnum> is "NS" concatenated with
the ASCII representation of a nameserver's
ordinal number in a domain creation or
modification. They specify the handles of any
hosts that are newly associated with a domain,
whether implicitly created or explicitly
referenced, as part of a Create or Modify Domain
request.
Each of these fields is returned in the event of
the successful association of the specified host
with the domain.
Transaction-IDs
This field is a list of zero or more Transaction
ID's for requests that satisfy the predicate of a
Query request (3.2.13), separated by whitespace.
The length of the value of this field will exceed
neither 1,024 transaction ID's nor 30,000 octets.
To discourage the submission of large query
requests, query requests whose result set
violates the size restriction will fail without
returning any ID's.
This field will only be returned for a successful
query request.
Expiration-Date
This field is returned by a successful renew
domain request and denotes the new expiration
date.
2.4. Error Conditions
This section enumerates the error conditions that can be
returned in the Error-Code field. An error is expressed as
the ASCII representation of a positive decimal number less
than 2^31. The return of an error may not indicate the
failure of a request; the request-status field is the
authoritative indicator of a request's success or failure.
2.4.1. Error categories
SRS-generated error codes are six-digit positive decimal
numbers. They are divided into broad categories by their
leading two digits. The first digit describes the
severity of the error, while the second describes its
general category:
First digit (10^5):
1 - Informationals
2 - Warnings
3 - Transient errors
4 - Errors (typically causing operation failure)
Second digit (10^4):
1 - Transport errors
2 - Request syntax errors
3 - Request semantic errors
4 - Authentication errors
9 - SRS internal errors
2.4.2. Specific errors
[TBD]
2.5. Notes
2.5.1. Field checking
Arguably, statements of the form "the following checking
will not be performed" should not be a part of the
protocol specification, as they might be taken as a
guarantee that an incorrect field value will not cause an
operation to fail. Rather, they are intended as a
warning to the SRS client developer that the SRS server
will not necessarily perform these checks; no _guarantee_
is made that more extensive validity checking will not be
performed.
2.5.2. Remove Contact
Do we want to implement a "remove contact" operation?
Right now, we don't, in order to ease tracking of history
-- to reconstruct the sequence of events associated with
a domain, we don't have to reconstruct possibly defunct
contact information as well. Yes, this does mean the
contact table is growing monotonically...
2.5.3. Policy Decisions
Several items in this document reflect policy decisions
that must be made by the registry, and are specified for
discussion purposes only. Specifically:
Limits and defaults on domain expiration
date are registry policy decisions
Limits on the number of nameservers in a
domain
Do we want to only allow one handle per
nameserver IP address? It'd be easy to do...
2.5.4. More sophisticated syntax
A slightly more sophisticated grammar that expresses the
relationships between objects might be cleaner. For
example, this syntax doesn't express the nesting of
implicit host and contact creation very well.
2.5.5. Host leaks
When domains are deleted or hosts modified, it is not
clear that disused host records will be cleaned up in any
more than a small minority of cases.
2.5.6. Handle namespace
In order to ensure transferability of information between
SRS's, steps should be taken to ensure that the
namespaces each SRS uses for generated names are
disjoint.
3. SRS TRANSPORT
3.1. SRS over Email
This section of the document describes the details of the
transport of SRS payloads over email. It is assumed that the
reader is familiar with MIME messages and the use of PGP
within the MIME context. The SRS Payload Specification
defines what is contained within the email message itself.
All SRS communications are encapsulated within multipart MIME
messages. Each part of a multipart may in turn contain
another multi-part, as needed. The outermost layer is signed
by the originator of the message using PGP.
3.1.1. Encapsulation and Exchange
A single SRS request is contained within a single email
message.
3.1.1.1. Reply-To
Acks and Replies are sent to the Reply-To: RFC822
Header of the email request. If there is no
Reply-To:, From: is used.
3.1.1.2. Selecting a server
A destination email address is formed by taking the
TLD, appending .nic.info, and prepending reg@fe.
Thus, to register a name in .web, send email to
reg@fe.web.nic.info.
3.1.2. Errors
Three interesting failure modes exist: lost requests,
lost acks, and lost replies. Most of the error recovery
hinges on the idempotence of operations.
3.1.2.1. Lost Requests
[TBD]
3.1.2.2. Lost Acks
[TBD]
3.1.2.3. Lost Replies
[TBD]
3.1.3. Notes
Content-Encoding is currently totally ignored;
eventually, some localization may be possible.
3.2. SRS over TCP
A registrar may communicate with the SRS over a persistent
TCP connection.
Encapsulation and Exchange
A registrar sends a stream of MIME-encapsulated
independent requests over the connection, and reads
replies and acks on the reverse channel.
These requests differ from email-based MIME in that
nothing may follow the trailing delimiter of a message;
more specifically, the next thing immediately following a
ending boundary is the Content-Type of the next message.
This is because MIME encapsulation is used to detect the
boundaries of requests.
A request is outstanding while it has not been acked by
the SRS. If there is an outstanding request, another may
not be sent.
3.2.1. Connection
A connection is established on a well-known port on one
of a collection of fronted machines that serve
registrations for a TLD. These machines all have names
of the form: feXX.TLD.nic.info, where XX is a two digit
ASCII decimal number, and TLD is the appropriate Top
Level Domain.
It is guaranteed that XX starts at 00 and there are no
unresolved names between that and the highest numbered
host. This can be used to load balance as follows: look
up the IP address of each host in turn, starting at 00.
as soon as the first one fails, the total number of
fronted machines has been determined. Select one at
random, and attempt to connect to it. Repeat until a
connection is accepted.
The SRS operator can add fronted machines as needed,
without notifying any registrar. The SRS operator need
only update the TLD.nic.info zone when adding or deleting
machines.
3.2.2. Errors
Most server or client errors are handled by
disconnection, establishing known correction state,
querying the state of any pending request, reissuing lost
requests, and soliciting undelivered replies.
Disconnection
A server-initiated disconnection is indicative of a
fronted failure. Any unacked requests should be
resent to a new fronted connection. All pending
replies should be solicited by sending a query
followed by a status command for each completed
request.
A client-initiated disconnection may result in a
pending request being processed, with the ack being
dropped. The unknown state of the request should be
resolved by issuing a query operation against the
transaction id. If the operation is pending or
completed, the request should not be reissued.
4. SECURITY CONSIDERATIONS
This specification provides for database access and modification.
Affected data bases are an integral part of Internet
infrastructure. Hence, misbehavior or compromise of the protocol
or its operation can have considerable impact on Internet
operations.
Other discussions concerning trust and security occur elsewhere
in the specification.
This section provides mechanisms, to protect against these
dangers. In particular, this section specifies the SRS security
policies as they relate to authentication and object
modification.
4.1. Definitions
4.1.1. Contact
A contact is a person who is associated with one or more
objects in the SRS. Each contact has a unique contact
handle, assigned by the SRS; an authentication type, and
an Authentication key.
4.1.2. Key
A key is a pair of data objects, one kept secret by the
signer, and one widely published, including to the SRS.
Keys may be of several sizes, the larger keys more
difficult to crack, and more expensive in time to use.
It is suggested that default size (1024 DSS/2048
Diffie-Hellman) keys be used.
4.1.3. Owner
Every object in the SRS has a set of associated contacts.
Any of these contacts may initiate modification of the
object.
4.1.4. PGP
Pretty Good Privacy software, version 5.0i. This
software is resident outside of the United States, and
has no export issues. It is recommended that the SRS not
use PGP to encrypt, nor should it use the IDEA block
cypher. It is expected that each registrar would license
PGP5.0 from PGP incorporated or it's agents for
commercial use. When using PGP authentication, the
entire PGP public key is sent to the SRS and is stored
with the contact.
4.1.5. Crypt
The US National Bureau of Standards has defined a Data
Encryption Standard, DES. Unix systems have used a
uniform method of scrambling plaintext passwords into a
non-invertable hash using DES. This uniform method is
available both inside and outside the US, and so has no
export control issues.
When using Crypt authentication, user plaintext is
encrypted, as for unix crypt(3), using a salt of '00',
and the cyphertext is sent to the SRS and stored with the
contact.
Crypt style authentication is only valid for
non-registrar contacts.
4.2. Key Management
PGP has no notion of key certifying authorities. Public keys
are validated by a web of trust model.
4.2.1. Registrar Keys
The SRS requires each registrar to have a master key and
a set of agent keys. The master registrar key is
communicated to the SRS by the registry, and agent keys
are communicated to the SRS by the registrar using the
master key.
4.2.2. Registry and Dispute Resolution Agency Keys
Registries and Dispute Resolution Agencies have identical
key infrastructure to registrars. Both entities may
issue modify registrar requests to manipulate its set of
associated agent contacts. Special handles are defined
for these entities.
4.2.3. Master Key Compromise
It may occur that a registrar loses its master key, or
some person illicitly acquires the registrar's master
key. These are different cases, and have different
methods of recovery.
4.2.3.1. Lost Master Key
Typically, this is a lost passphrase. Without this
passphrase, the encrypted private key stored on the
registrar's machine can never be decrypted for use.
The registrar generates a new key, and communicates
it to the registry. The registry validates the new
key, to prevent human engineering, and sends A modify
contact request to the SRS, using the master contact
handle for that registrar. Operations proceed using
the new key. No database recovery is needed.
4.2.3.2. Stolen Master Key
A stolen key can be used to forge requests to the
SRS. When a stolen key is detected, a registrar
should immediately issue a modify contact request for
the master contact handle, setting the authentication
type to none. This will disable all further
operations on that registrar object until the
registrar is reactivated. The registrar notifies the
registry, and the registry notifies the SRS that a
registrar master key has been stolen. The SRS
operator will generate a report showing activity that
occurred using that key. All forged requests need to
be manually identified by the registrar, and the
requests need to be undone.
4.2.4. Agent Key Compromise
A registrar agent key may be lost or stolen as well.
4.2.4.1. Agent Key Loss
Agent contacts may be freely enabled and disabled by
the registrar without the registry's involvement.
The registrar should create a new contact, and set
that contact as a valid agent using a modify
registrar command.
4.2.4.2. Agent Key Theft
Stolen Agent keys should be immediately disabled
using a modify registrar command. The SRS operator
must be notified, and any illicit requests issued
using the stolen key must be rolled back, as for a
stolen master key.
4.2.4.3. User Key Compromise
If all user keys associated with a domain are lost,
the domain must be manually reauthenticated. This
can be achieved by using a variety of non-definitive
credentials to establish domain identity. Possession
of a registration certificate, a cancelled check to a
registrar, a copy successfully responding to the
email address in a contact, being located at the
listed phone number, faxing a drivers license to the
SRS, etc. When sufficiently authenticated, a domain
holder provides a new PGP5 key to the SRS, and the
SRS manually updates the relevant contact.
4.3. Authentication Schemes
4.3.1. PGP Signatures
Mime supports message authentication via its
multipart/signed data type. A cryptographic hash is made
of a message, and that hash is encrypted with the
signer's private key. The resulting signature is
packaged with the message. The SRS can detect both
message corruption and/or unauthorized requests using
this signature.
4.3.2. Crypt Authentication
A request using crypt authentication must have a valid
Signer-Handle value, and a Authenticating-Key value that
exactly matches the stored key.
A registrar should not store either the cleartext or the
cyphertext of the key, as this will allow the registrar
to forge requests for any objects protected by that
contact.
Similarly, a third party listening to the communication
between the user and the registrar can forge requests, so
a secure communications channel, such as SSL, should be
used if possible between the user and the registrar.
4.4. Notes
Mail-from authentication is not supported. Many attacks on
mail-from type authentication schemes are known, and offer no
serious security.
Crypt is basically registrar-based authentication.
5. ACKNOWLEDGEMENTS
This draft is heavily dependent on documentation provided by
Emergent Corporation as part of their contract with CORE. We
thank Curt Meyer and his colleagues at Emergent for the clear and
precise work they have done. ...
6. AUTHORS' ADDRESSES
K. Crispin
Songbird
6064 Skyfarm Drive
Castro Valley, CA 94552 USA
+1 510-886-7410
kent@songbird.com
D. Crocker
Brandenburg Consulting
675 Spruce Drive Sunnyvale, CA 94086 USA
+1 408 246 8253
dcrocker@brandenburg.com
R. Gaetano
roberto.gaetano@etsi.fr
S. Langenbach
svl@nrw.net
7. REFERENCES
...
8. FULL COPYRIGHT STATEMENT
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished
to others, and derivative works that comment on or otherwise
explain it or assist in its implementation may be prepared,
copied, published and distributed, in whole or in part, without
restriction of any kind, provided that the above copyright notice
and this paragraph are included on all such copies and derivative
works. However, this document itself may not be modified in any
way, such as by removing the copyright notice or references to
the Internet Society or other Internet organizations, except as
needed for the purpose of developing Internet standards in which
case the procedures for copyrights defined in the Internet
Standards process must be followed, or as required to translate
it into languages other than English.
The limited permissions granted above are perpetual and will not
be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on
an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE
OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE.
draft-crispin-srs-00-txt Shared Registry System Protocol November, 1998
Expires in six months