summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8897.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8897.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8897.txt')
-rw-r--r--doc/rfc/rfc8897.txt559
1 files changed, 559 insertions, 0 deletions
diff --git a/doc/rfc/rfc8897.txt b/doc/rfc/rfc8897.txt
new file mode 100644
index 0000000..ecb1410
--- /dev/null
+++ b/doc/rfc/rfc8897.txt
@@ -0,0 +1,559 @@
+
+
+
+
+Internet Engineering Task Force (IETF) D. Ma
+Request for Comments: 8897 ZDNS
+Category: Informational S. Kent
+ISSN: 2070-1721 Independent
+ September 2020
+
+
+ Requirements for Resource Public Key Infrastructure (RPKI) Relying
+ Parties
+
+Abstract
+
+ This document provides a single reference point for requirements for
+ Relying Party (RP) software for use in the Resource Public Key
+ Infrastructure (RPKI). It cites requirements that appear in several
+ RPKI RFCs, making it easier for implementers to become aware of these
+ requirements. Over time, this RFC will be updated to reflect changes
+ to the requirements and guidance specified in the RFCs discussed
+ herein.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Not all documents
+ approved by the IESG are candidates for any level of Internet
+ Standard; see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8897.
+
+Copyright Notice
+
+ Copyright (c) 2020 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Fetching and Caching RPKI Repository Objects
+ 2.1. TAL Configuration and Processing
+ 2.2. Locating RPKI Objects Using Authority and Subject
+ Information Extensions
+ 2.3. Dealing with Key Rollover
+ 2.4. Dealing with Algorithm Transition
+ 2.5. Strategies for Efficient Cache Maintenance
+ 3. Certificate and CRL Processing
+ 3.1. Verifying Resource Certificate and Syntax
+ 3.2. Certificate Path Validation
+ 3.3. CRL Processing
+ 4. Processing RPKI Repository Signed Objects
+ 4.1. Basic Signed Object Syntax Checks
+ 4.2. Syntax and Validation for Each Type of Signed Object
+ 4.2.1. Manifest
+ 4.2.2. ROA
+ 4.2.3. Ghostbusters
+ 4.2.4. Verifying BGPsec Router Certificate
+ 4.3. How to Make Use of Manifest Data
+ 4.4. What To Do with Ghostbusters Information
+ 5. Distributing Validated Cache
+ 6. Local Control
+ 7. Security Considerations
+ 8. IANA Considerations
+ 9. References
+ 9.1. Normative References
+ 9.2. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ RPKI Relying Party (RP) software is used by network operators and
+ others to acquire and verify Internet Number Resource (INR) data
+ stored in the RPKI repository system. RPKI data, when verified,
+ allows an RP to verify assertions about which Autonomous Systems
+ (ASes) are authorized to originate routes for IP address prefixes.
+ RPKI data also establishes a binding between public keys and BGP
+ routers and indicates the AS numbers that each router is authorized
+ to represent.
+
+ The essential requirements imposed on RP software to support secure
+ Internet routing [RFC6480] are scattered throughout numerous
+ protocol-specific RFCs and Best Current Practice RFCs. The following
+ RFCs define these requirements:
+
+ RFC 6481 (Repository Structure)
+ RFC 6482 (ROA format)
+ RFC 6486 (Manifests)
+ RFC 6487 (Certificate and CRL profile)
+ RFC 6488 (RPKI Signed Objects)
+ RFC 6489 (Key Rollover)
+ RFC 6810 (RPKI to Router Protocol)
+ RFC 6916 (Algorithm Agility)
+ RFC 7935 (Algorithms)
+ RFC 8209 (Router Certificates)
+ RFC 8210 (RPKI to Router Protocol, Version 1)
+ RFC 8360 (Certificate Validation Procedure)
+ RFC 8630 (Trust Anchor Locator)
+
+ The distribution of RPKI RP requirements across these 13 documents
+ makes it hard for an implementer to be confident that he/she has
+ addressed all of these requirements. Additionally, good software
+ engineering practice may call for segmenting the RP system into
+ components with orthogonal functionalities so that those components
+ may be distributed. A taxonomy of the collected RP software
+ requirements can help clarify the role of the RP.
+
+ To consolidate RP software requirements in one document, with
+ pointers to all the relevant RFCs, this document outlines a set of
+ baseline requirements imposed on RPs and provides a single reference
+ point for requirements for RP software for use in the RPKI. The
+ requirements are organized into four groups:
+
+ * Fetching and Caching RPKI Repository Objects
+
+ * Processing Certificates and Certificate Revocation Lists (CRLs)
+
+ * Processing RPKI Repository Signed Objects
+
+ * Distributing Validated Cache of the RPKI Data
+
+ This document will be updated to reflect new or changed requirements
+ as these RFCs are updated or additional RFCs are written.
+
+2. Fetching and Caching RPKI Repository Objects
+
+ RP software uses synchronization mechanisms supported by targeted
+ repositories (e.g., [rsync] or RRDP [RFC8182]) to download RPKI
+ signed objects from the repository system in order to update a local
+ cache. These mechanisms download only those objects that have been
+ added or replaced with new versions since the time when the RP most
+ recently checked the repository. RP software validates the RPKI data
+ and uses it to generate authenticated data identifying which ASes are
+ authorized to originate routes for address prefixes and which routers
+ are authorized to sign BGP updates on behalf of specified ASes.
+
+2.1. TAL Configuration and Processing
+
+ In the RPKI, each RP chooses a set of trust anchors (TAs).
+ Consistent with the extant INR allocation hierarchy, the IANA and/or
+ the five Regional Internet Registries (RIRs) are obvious candidates
+ to be default TAs for the RP.
+
+ An RP does not retrieve TAs directly. A set of Trust Anchor Locators
+ (TALs) is used by RP software to retrieve and verify the authenticity
+ of each TA.
+
+ TAL configuration and processing are specified in Section 3 of
+ [RFC8630].
+
+2.2. Locating RPKI Objects Using Authority and Subject Information
+ Extensions
+
+ The RPKI repository system is a distributed one, consisting of
+ multiple repository instances. Each repository instance contains one
+ or more repository publication points. RP software discovers
+ publication points using the Subject Information Access (SIA) and the
+ Authority Information Access (AIA) extensions from (validated)
+ certificates.
+
+ Section 5 of [RFC6481] specifies how RP software locates all RPKI
+ objects by using the SIA and AIA extensions. Detailed specifications
+ of SIA and AIA extensions in a resource certificate are described in
+ Sections 4.8.8 and 4.8.7 of [RFC6487], respectively.
+
+2.3. Dealing with Key Rollover
+
+ RP software takes the key rollover period into account with regard to
+ its frequency of synchronization with the RPKI repository system.
+
+ RP software requirements for dealing with key rollover are described
+ in Section 3 of [RFC6489] and Section 3 of [RFC8634].
+
+2.4. Dealing with Algorithm Transition
+
+ The set of cryptographic algorithms used with the RPKI is expected to
+ change over time. Each RP is expected to be aware of the milestones
+ established for the algorithm transition and what actions are
+ required at every juncture.
+
+ RP software requirements for dealing with algorithm transition are
+ specified in Section 4 of [RFC6916].
+
+2.5. Strategies for Efficient Cache Maintenance
+
+ Each RP is expected to maintain a local cache of RPKI objects. The
+ cache needs to be brought up to date and made consistent with the
+ repository publication point data as frequently as allowed by
+ repository publication points and by locally selected RP processing
+ constraints.
+
+ The last paragraph of Section 5 of [RFC6481] provides guidance for
+ maintenance of a local cache.
+
+3. Certificate and CRL Processing
+
+ The RPKI makes use of X.509 certificates and CRLs, but it profiles
+ the standard formats described in [RFC6487]. The major change to the
+ profile established in [RFC5280] is the mandatory use of a new
+ extension in RPKI certificates, defined in [RFC3779].
+
+3.1. Verifying Resource Certificate and Syntax
+
+ Certificates in the RPKI are called resource certificates, and they
+ are required to conform to the profile described in [RFC6487]. An RP
+ is required to verify that a resource certificate adheres to the
+ profile established by Section 4 of [RFC6487]. This means that all
+ extensions mandated by Section 4.8 of [RFC6487] must be present and
+ the value of each extension must be within the range specified by
+ [RFC6487]. Moreover, any extension excluded by Section 4.8 of
+ [RFC6487] must be omitted.
+
+ Section 7.1 of [RFC6487] specifies the procedure that RP software
+ follows when verifying extensions described in [RFC3779].
+
+3.2. Certificate Path Validation
+
+ Initially, the INRs in the issuer's certificate are required to
+ encompass the INRs in the subject's certificate. This is one of the
+ necessary principles of certificate path validation in addition to
+ cryptographic verification (i.e., verification of the signature on
+ each certificate using the public key of the parent certificate).
+
+ Section 7.2 of [RFC6487] specifies the procedure that RP software
+ should follow to perform certificate path validation.
+
+ Certification Authorities (CAs) that want to reduce aspects of
+ operational fragility will migrate to the new OIDs [RFC8360],
+ informing RP software to use an alternative RPKI validation
+ algorithm. An RP is expected to support the amended procedure to
+ handle accidental overclaiming, which is described in Section 4 of
+ [RFC8360].
+
+3.3. CRL Processing
+
+ The CRL processing requirements imposed on CAs and RPs are described
+ in Section 5 of [RFC6487]. CRLs in the RPKI are tightly constrained;
+ only the AuthorityKeyIdentifier (Section 4.8.3 of [RFC6487]) and
+ CRLNumber (Section 5.2.3 of [RFC5280]) extensions are allowed, and
+ they are required to be present. No other CRL extensions are
+ allowed, and no CRLEntry extensions are permitted. RP software is
+ required to verify that these constraints have been met. Each CRL in
+ the RPKI must be verified using the public key from the certificate
+ of the CA that issued the CRL.
+
+ In the RPKI, RPs are expected to pay extra attention when dealing
+ with a CRL that is not consistent with the manifest associated with
+ the publication point associated with the CRL.
+
+ Processing of a CRL that is not consistent with a manifest is a
+ matter of local policy, as described in the fifth paragraph of
+ Section 6.6 of [RFC6486].
+
+4. Processing RPKI Repository Signed Objects
+
+4.1. Basic Signed Object Syntax Checks
+
+ Before an RP can use a signed object from the RPKI repository, RP
+ software is required to check the signed-object syntax.
+
+ Section 3 of [RFC6488] lists all the steps that RP software is
+ required to execute in order to validate the top-level syntax of a
+ repository signed object.
+
+ Note that these checks are necessary but not sufficient. Additional
+ validation checks must be performed based on the specific type of
+ signed object, as described in Section 4.2.
+
+4.2. Syntax and Validation for Each Type of Signed Object
+
+4.2.1. Manifest
+
+ To determine whether a manifest is valid, RP software is required to
+ perform manifest-specific checks in addition to the generic signed-
+ object checks specified in [RFC6488].
+
+ Specific checks for a manifest are described in Section 4 of
+ [RFC6486]. If any of these checks fail, indicating that the manifest
+ is invalid, then the manifest will be discarded, and RP software will
+ act as though no manifest were present.
+
+4.2.2. ROA
+
+ To validate a Route Origin Authorization (ROA), RP software is
+ required to perform all the checks specified in [RFC6488] as well as
+ additional, ROA-specific validation steps. The IP Address Delegation
+ extension [RFC3779] present in the end-entity (EE) certificate
+ (contained within the ROA) must encompass each of the IP address
+ prefix(es) in the ROA.
+
+ More details for ROA validation are specified in Section 4 of
+ [RFC6482].
+
+4.2.3. Ghostbusters
+
+ The Ghostbusters Record is optional; a publication point in the RPKI
+ can have zero or more associated Ghostbusters Records. If a CA has
+ at least one Ghostbusters Record, RP software is required to verify
+ that this Ghostbusters Record conforms to the syntax of signed
+ objects defined in [RFC6488].
+
+ The payload of this signed object is a (severely) profiled vCard. RP
+ software is required to verify that the payload of Ghostbusters
+ conforms to format as profiled in [RFC6493].
+
+4.2.4. Verifying BGPsec Router Certificate
+
+ A BGPsec Router Certificate is a resource certificate, so it is
+ required to comply with [RFC6487]. Additionally, the certificate
+ must contain an AS Identifier Delegation extension (Section 4.8.11 of
+ [RFC6487]) and must not contain an IP Address Delegation extension
+ (Section 4.8.10 of [RFC6487]). The validation procedure used for
+ BGPsec Router Certificates is analogous to the validation procedure
+ described in Section 7 of [RFC6487], but it uses the constraints
+ defined in Section 3 of [RFC8209].
+
+ Note that the cryptographic algorithms used by BGPsec routers are
+ found in [RFC8608]. Currently, the algorithms specified in [RFC8608]
+ and [RFC7935] are different. BGPsec RP software will need to support
+ algorithms that are used to validate BGPsec signatures as well as the
+ algorithms that are needed to validate signatures on BGPsec
+ certificates, RPKI CA certificates, and RPKI CRLs.
+
+4.3. How to Make Use of Manifest Data
+
+ For a given publication point, RP software ought to perform tests, as
+ specified in Section 6.1 of [RFC6486], to determine the state of the
+ manifest at the publication point. A manifest can be classified as
+ either valid or invalid, and a valid manifest is either current or
+ stale. An RP decides how to make use of a manifest based on its
+ state, according to local (RP) policy.
+
+ If there are valid objects in a publication point that are not
+ present on a manifest, [RFC6486] does not mandate specific RP
+ behavior with respect to such objects.
+
+ In the absence of a manifest, an RP is expected to accept all valid
+ signed objects present in the publication point (see Section 6.2 of
+ [RFC6486]). If a manifest is stale or invalid and an RP has no way
+ to acquire a more recent valid manifest, the RP is expected to
+ contact the repository manager via Ghostbusters Records and
+ thereafter make decisions according to local (RP) policy (see
+ Sections 6.3 and 6.4 of [RFC6486]).
+
+4.4. What To Do with Ghostbusters Information
+
+ RP software may encounter a stale manifest or CRL, or an expired CA
+ certificate or ROA at a publication point. An RP is expected to use
+ the information from the Ghostbusters Records to contact the
+ maintainer of the publication point where any stale/expired objects
+ were encountered. The intent here is to encourage the relevant CA
+ and/or repository manager to update the stale or expired objects.
+
+5. Distributing Validated Cache
+
+ On a periodic basis, BGP speakers within an AS request updated
+ validated origin AS data and router/ASN data from the (local)
+ validated cache of RPKI data. The RP may either transfer the
+ validated data to the BGP speakers directly, or it may transfer the
+ validated data to a cache server that is responsible for provisioning
+ such data to BGP speakers. The specifications of the protocol
+ designed to deliver validated cache data to a BGP Speaker are
+ provided in [RFC6810] and [RFC8210].
+
+6. Local Control
+
+ ISPs may want to establish a local view of exceptions to the RPKI
+ data in the form of local filters and additions. For instance, a
+ network operator might wish to make use of a local override
+ capability to protect routes from adverse actions [RFC8211]. The
+ mechanisms developed to provide this capability to network operators
+ are called Simplified Local Internet Number Resource Management with
+ the RPKI (SLURM). If an ISP wants to implement SLURM, its RP system
+ can follow the instruction specified in [RFC8416].
+
+7. Security Considerations
+
+ This document does not introduce any new security considerations; it
+ is a resource for implementers. The RP links the RPKI provisioning
+ side and the routing system, establishing a verified, local view of
+ global RPKI data to BGP speakers. The security of the RP is critical
+ for exchanging BGP messages. Each RP implementation is expected to
+ offer cache backup management to facilitate recovery from outages.
+ RP software should also support secure transport (e.g., IPsec
+ [RFC4301]) that can protect validated cache delivery in an unsafe
+ environment. This document highlights many validation actions
+ applied to RPKI signed objects, an essential element of secure
+ operation of RPKI security.
+
+8. IANA Considerations
+
+ This document has no IANA actions.
+
+9. References
+
+9.1. Normative References
+
+ [RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP
+ Addresses and AS Identifiers", RFC 3779,
+ DOI 10.17487/RFC3779, June 2004,
+ <https://www.rfc-editor.org/info/rfc3779>.
+
+ [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
+ Housley, R., and W. Polk, "Internet X.509 Public Key
+ Infrastructure Certificate and Certificate Revocation List
+ (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
+ <https://www.rfc-editor.org/info/rfc5280>.
+
+ [RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for
+ Resource Certificate Repository Structure", RFC 6481,
+ DOI 10.17487/RFC6481, February 2012,
+ <https://www.rfc-editor.org/info/rfc6481>.
+
+ [RFC6482] Lepinski, M., Kent, S., and D. Kong, "A Profile for Route
+ Origin Authorizations (ROAs)", RFC 6482,
+ DOI 10.17487/RFC6482, February 2012,
+ <https://www.rfc-editor.org/info/rfc6482>.
+
+ [RFC6486] Austein, R., Huston, G., Kent, S., and M. Lepinski,
+ "Manifests for the Resource Public Key Infrastructure
+ (RPKI)", RFC 6486, DOI 10.17487/RFC6486, February 2012,
+ <https://www.rfc-editor.org/info/rfc6486>.
+
+ [RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for
+ X.509 PKIX Resource Certificates", RFC 6487,
+ DOI 10.17487/RFC6487, February 2012,
+ <https://www.rfc-editor.org/info/rfc6487>.
+
+ [RFC6488] Lepinski, M., Chi, A., and S. Kent, "Signed Object
+ Template for the Resource Public Key Infrastructure
+ (RPKI)", RFC 6488, DOI 10.17487/RFC6488, February 2012,
+ <https://www.rfc-editor.org/info/rfc6488>.
+
+ [RFC6489] Huston, G., Michaelson, G., and S. Kent, "Certification
+ Authority (CA) Key Rollover in the Resource Public Key
+ Infrastructure (RPKI)", BCP 174, RFC 6489,
+ DOI 10.17487/RFC6489, February 2012,
+ <https://www.rfc-editor.org/info/rfc6489>.
+
+ [RFC6493] Bush, R., "The Resource Public Key Infrastructure (RPKI)
+ Ghostbusters Record", RFC 6493, DOI 10.17487/RFC6493,
+ February 2012, <https://www.rfc-editor.org/info/rfc6493>.
+
+ [RFC6810] Bush, R. and R. Austein, "The Resource Public Key
+ Infrastructure (RPKI) to Router Protocol", RFC 6810,
+ DOI 10.17487/RFC6810, January 2013,
+ <https://www.rfc-editor.org/info/rfc6810>.
+
+ [RFC6916] Gagliano, R., Kent, S., and S. Turner, "Algorithm Agility
+ Procedure for the Resource Public Key Infrastructure
+ (RPKI)", BCP 182, RFC 6916, DOI 10.17487/RFC6916, April
+ 2013, <https://www.rfc-editor.org/info/rfc6916>.
+
+ [RFC7935] Huston, G. and G. Michaelson, Ed., "The Profile for
+ Algorithms and Key Sizes for Use in the Resource Public
+ Key Infrastructure", RFC 7935, DOI 10.17487/RFC7935,
+ August 2016, <https://www.rfc-editor.org/info/rfc7935>.
+
+ [RFC8209] Reynolds, M., Turner, S., and S. Kent, "A Profile for
+ BGPsec Router Certificates, Certificate Revocation Lists,
+ and Certification Requests", RFC 8209,
+ DOI 10.17487/RFC8209, September 2017,
+ <https://www.rfc-editor.org/info/rfc8209>.
+
+ [RFC8210] Bush, R. and R. Austein, "The Resource Public Key
+ Infrastructure (RPKI) to Router Protocol, Version 1",
+ RFC 8210, DOI 10.17487/RFC8210, September 2017,
+ <https://www.rfc-editor.org/info/rfc8210>.
+
+ [RFC8360] Huston, G., Michaelson, G., Martinez, C., Bruijnzeels, T.,
+ Newton, A., and D. Shaw, "Resource Public Key
+ Infrastructure (RPKI) Validation Reconsidered", RFC 8360,
+ DOI 10.17487/RFC8360, April 2018,
+ <https://www.rfc-editor.org/info/rfc8360>.
+
+ [RFC8608] Turner, S. and O. Borchert, "BGPsec Algorithms, Key
+ Formats, and Signature Formats", RFC 8608,
+ DOI 10.17487/RFC8608, June 2019,
+ <https://www.rfc-editor.org/info/rfc8608>.
+
+ [RFC8630] Huston, G., Weiler, S., Michaelson, G., Kent, S., and T.
+ Bruijnzeels, "Resource Public Key Infrastructure (RPKI)
+ Trust Anchor Locator", RFC 8630, DOI 10.17487/RFC8630,
+ August 2019, <https://www.rfc-editor.org/info/rfc8630>.
+
+ [RFC8634] Weis, B., Gagliano, R., and K. Patel, "BGPsec Router
+ Certificate Rollover", BCP 224, RFC 8634,
+ DOI 10.17487/RFC8634, August 2019,
+ <https://www.rfc-editor.org/info/rfc8634>.
+
+9.2. Informative References
+
+ [RFC4301] Kent, S. and K. Seo, "Security Architecture for the
+ Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
+ December 2005, <https://www.rfc-editor.org/info/rfc4301>.
+
+ [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support
+ Secure Internet Routing", RFC 6480, DOI 10.17487/RFC6480,
+ February 2012, <https://www.rfc-editor.org/info/rfc6480>.
+
+ [RFC8182] Bruijnzeels, T., Muravskiy, O., Weber, B., and R. Austein,
+ "The RPKI Repository Delta Protocol (RRDP)", RFC 8182,
+ DOI 10.17487/RFC8182, July 2017,
+ <https://www.rfc-editor.org/info/rfc8182>.
+
+ [RFC8211] Kent, S. and D. Ma, "Adverse Actions by a Certification
+ Authority (CA) or Repository Manager in the Resource
+ Public Key Infrastructure (RPKI)", RFC 8211,
+ DOI 10.17487/RFC8211, September 2017,
+ <https://www.rfc-editor.org/info/rfc8211>.
+
+ [RFC8416] Ma, D., Mandelberg, D., and T. Bruijnzeels, "Simplified
+ Local Internet Number Resource Management with the RPKI
+ (SLURM)", RFC 8416, DOI 10.17487/RFC8416, August 2018,
+ <https://www.rfc-editor.org/info/rfc8416>.
+
+ [rsync] "rsync", <http://rsync.samba.org/>.
+
+Acknowledgements
+
+ The authors thank David Mandelberg, Wei Wang, Tim Bruijnzeels, George
+ Michaelson, and Oleg Muravskiy for their review, feedback, and
+ editorial assistance in preparing this document.
+
+Authors' Addresses
+
+ Di Ma
+ ZDNS
+ 4 South 4th St. Zhongguancun
+ Haidian
+ Beijing, 100190
+ China
+
+ Email: madi@zdns.cn
+
+
+ Stephen Kent
+ Independent
+
+ Email: kent@alum.mit.edu