base.txt | issue53.txt | |
---|---|---|
Skipping to change at page 2, line 38: | ||
5.3.3 Processing rules for senders . . . . . . . . . 21 | 5.3.3 Processing rules for senders . . . . . . . . . 21 | |
5.3.4 Processing rules for receivers . . . . . . . . 22 | 5.3.4 Processing rules for receivers . . . . . . . . 22 | |
6. Authorization Delegation Discovery . . . . . . . . . . . . . 25 | 6. Authorization Delegation Discovery . . . . . . . . . . . . . 25 | |
6.1 Certificate Format . . . . . . . . . . . . . . . . . .25 | 6.1 Certificate Format . . . . . . . . . . . . . . . . . .25 | |
6.1.1 Router Authorization Certificate Profile . . . 25 | 6.1.1 Router Authorization Certificate Profile . . . 25 | |
6.2 Certificate Transport . . . . . . . . . . . . . . . .28 | 6.2 Certificate Transport . . . . . . . . . . . . . . . .28 | |
6.2.1 Delegation Chain Solicitation Message Format . 28 | 6.2.1 Delegation Chain Solicitation Message Format . 28 | |
6.2.2 Delegation Chain Advertisement Message Format 30 | 6.2.2 Delegation Chain Advertisement Message Format 30 | |
6.2.3 Trust Anchor Option . . . . . . . . . . . . . 32 | 6.2.3 Trust Anchor Option . . . . . . . . . . . . . 32 | |
6.2.4 Certificate Option . . . . . . . . . . . . . . 34 | 6.2.4 Certificate Option . . . . . . . . . . . . . . 34 | |
6.2.5 Processing Rules for Routers . . . . . . . . . 34 | 6.2.5 Processing Rules for Routers . . . . . . . . . 35 | |
6.2.6 Processing Rules for Hosts . . . . . . . . . . 35 | 6.2.6 Processing Rules for Hosts . . . . . . . . . . 36 | |
7. Addressing . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 7. Addressing . . . . . . . . . . . . . . . . . . . . . . . . . 38 | |
7.1 CGA Addresses . . . . . . . . . . . . . . . . . . . .38 | 7.1 CGA Addresses . . . . . . . . . . . . . . . . . . . .38 | |
7.2 Redirect Addresses . . . . . . . . . . . . . . . . . .38 | 7.2 Redirect Addresses . . . . . . . . . . . . . . . . . .38 | |
7.3 Advertised Prefixes . . . . . . . . . . . . . . . . .38 | 7.3 Advertised Prefixes . . . . . . . . . . . . . . . . .38 | |
7.4 Limitations . . . . . . . . . . . . . . . . . . . . .39 | 7.4 Limitations . . . . . . . . . . . . . . . . . . . . .39 | |
8. Transition Issues . . . . . . . . . . . . . . . . . . . . . 41 | 8. Transition Issues . . . . . . . . . . . . . . . . . . . . . 41 | |
9. Security Considerations . . . . . . . . . . . . . . . . . . 43 | 9. Security Considerations . . . . . . . . . . . . . . . . . . 43 | |
9.1 Threats to the Local Link Not Covered by SEND . . . .43 | 9.1 Threats to the Local Link Not Covered by SEND . . . .43 | |
9.2 How SEND Counters Threats to NDP . . . . . . . . . . .43 | 9.2 How SEND Counters Threats to NDP . . . . . . . . . . .43 | |
9.2.1 Neighbor Solicitation/Advertisement Spoofing . 44 | 9.2.1 Neighbor Solicitation/Advertisement Spoofing . 44 | |
Skipping to change at page 4, line 22: | ||
Its functions include Neighbor Discovery (ND), Router Discovery (RD), | Its functions include Neighbor Discovery (ND), Router Discovery (RD), | |
Address Autoconfiguration, Address Resolution, Neighbor | Address Autoconfiguration, Address Resolution, Neighbor | |
Unreachability Detection (NUD), Duplicate Address Detection (DAD), | Unreachability Detection (NUD), Duplicate Address Detection (DAD), | |
and Redirection. | and Redirection. | |
Original NDP specifications called for the use of IPsec for | Original NDP specifications called for the use of IPsec for | |
protecting the NDP messages. However, the RFCs do not give detailed | protecting the NDP messages. However, the RFCs do not give detailed | |
instructions for using IPsec to secure NDP. It turns out that in | instructions for using IPsec to secure NDP. It turns out that in | |
this particular application, IPsec can only be used with a manual | this particular application, IPsec can only be used with a manual | |
configuration of security associations, due to chicken-and-egg | configuration of security associations, due to chicken-and-egg | |
problems in using IKE [21, 15]. Furthermore, the number of such | problems in using IKE [22, 16]. Furthermore, the number of such | |
manually configured security associations needed for protecting NDP | manually configured security associations needed for protecting NDP | |
can be very large [22], making that approach impractical for most | can be very large [23], making that approach impractical for most | |
purposes. | purposes. | |
This document is organized as follows. Section 4 describes the | This document is organized as follows. Section 4 describes the | |
overall approach to securing NDP. This approach involves the use of | overall approach to securing NDP. This approach involves the use of | |
new NDP options to carry public-key based signatures. A | new NDP options to carry public-key based signatures. A | |
zero-configuration mechanism is used for showing address ownership on | zero-configuration mechanism is used for showing address ownership on | |
individual nodes; routers are certified by a trust anchor [10]. The | individual nodes; routers are certified by a trust anchor [10]. The | |
formats, procedures, and cryptographic mechanisms for the | formats, procedures, and cryptographic mechanisms for the | |
zero-configuration mechanism are described in a related specification | zero-configuration mechanism are described in a related specification | |
[12]. | [13]. | |
The required new NDP options are discussed in Section 5. Section 6 | The required new NDP options are discussed in Section 5. Section 6 | |
describes the mechanism for distributing certificate chains to | describes the mechanism for distributing certificate chains to | |
establish an authorization delegation chain to a common trust anchor. | establish an authorization delegation chain to a common trust anchor. | |
Finally, Section 8 discusses the co-existence of secure and | Finally, Section 8 discusses the co-existence of secure and | |
non-secure NDP on the same link and Section 9 discusses security | non-secure NDP on the same link and Section 9 discusses security | |
considerations for Secure Neighbor Discovery. | considerations for Secure Neighbor Discovery. | |
1.1 Specification of Requirements | 1.1 Specification of Requirements | |
Skipping to change at page 5, line 14: | ||
2. Terms | 2. Terms | |
Authorization Delegation Discovery (ADD) | Authorization Delegation Discovery (ADD) | |
A process through which SEND nodes can acquire a certificate chain | A process through which SEND nodes can acquire a certificate chain | |
from a peer node to a trust anchor. | from a peer node to a trust anchor. | |
Cryptographically Generated Address (CGA) | Cryptographically Generated Address (CGA) | |
A technique [12] where the IPv6 address of a node is | A technique [13] where the IPv6 address of a node is | |
cryptographically generated using a one-way hash function from the | cryptographically generated using a one-way hash function from the | |
node's public key and some other parameters. | node's public key and some other parameters. | |
Duplicate Address Detection (DAD) | Duplicate Address Detection (DAD) | |
A mechanism that assures that two IPv6 nodes on the same link are | A mechanism that assures that two IPv6 nodes on the same link are | |
not using the same address. | not using the same address. | |
Neighbor Discovery Protocol (NDP) | Neighbor Discovery Protocol (NDP) | |
Skipping to change at page 7, line 37: | ||
to a better first-hop router, or to inform hosts that a | to a better first-hop router, or to inform hosts that a | |
destination is in fact a neighbor (i.e., on-link). Redirect is | destination is in fact a neighbor (i.e., on-link). Redirect is | |
specified in Section 8 of RFC 2461 [7]. | specified in Section 8 of RFC 2461 [7]. | |
o Address Autoconfiguration is used for automatically assigning | o Address Autoconfiguration is used for automatically assigning | |
addresses to a host [8]. This allows hosts to operate without | addresses to a host [8]. This allows hosts to operate without | |
explicit configuration related to IP connectivity. The default | explicit configuration related to IP connectivity. The default | |
autoconfiguration mechanism is stateless. To create IP addresses, | autoconfiguration mechanism is stateless. To create IP addresses, | |
the hosts use any prefix information delivered to them during | the hosts use any prefix information delivered to them during | |
Router Discovery, and then test the newly formed addresses for | Router Discovery, and then test the newly formed addresses for | |
uniqueness. A stateful mechanism, DHCPv6 [19], provides | uniqueness. A stateful mechanism, DHCPv6 [20], provides | |
additional autoconfiguration features. | additional autoconfiguration features. | |
o Duplicate Address Detection (DAD) is used for preventing address | o Duplicate Address Detection (DAD) is used for preventing address | |
collisions [8], for instance during Address Autoconfiguration. A | collisions [8], for instance during Address Autoconfiguration. A | |
node that intends to assign a new address to one of its interfaces | node that intends to assign a new address to one of its interfaces | |
first runs the DAD procedure to verify that there is no other node | first runs the DAD procedure to verify that there is no other node | |
using the same address. Since the rules forbid the use of an | using the same address. Since the rules forbid the use of an | |
address until it has been found unique, no higher layer traffic is | address until it has been found unique, no higher layer traffic is | |
possible until this procedure has been completed. Thus, | possible until this procedure has been completed. Thus, | |
preventing attacks against DAD can help ensure the availability of | preventing attacks against DAD can help ensure the availability of | |
Skipping to change at page 12, line 4: | ||
Length | Length | |
The length of the option (including the Type, Length, Collision | The length of the option (including the Type, Length, Collision | |
Cnt, Reserved, Modifier, Key Information, and Padding fields) in | Cnt, Reserved, Modifier, Key Information, and Padding fields) in | |
units of 8 octets. | units of 8 octets. | |
Collision Cnt | Collision Cnt | |
An 8-bit collision count, which can get values 0, 1 and 2. Its | An 8-bit collision count, which can get values 0, 1 and 2. Its | |
semantics are defined in [12]. | semantics are defined in [13]. | |
Reserved | Reserved | |
An 8-bit field reserved for future use. The value MUST be | An 8-bit field reserved for future use. The value MUST be | |
initialized to zero by the sender, and MUST be ignored by the | initialized to zero by the sender, and MUST be ignored by the | |
receiver. | receiver. | |
Modifier | Modifier | |
A random 128-bit number used in CGA generation. Its semantics are | A random 128-bit number used in CGA generation. Its semantics are | |
defined in [12]. | defined in [13]. | |
Key Information | Key Information | |
A variable length field containing the public key of the sender, | A variable length field containing the public key of the sender, | |
represented as an ASN.1 type SubjectPublicKeyInfo [10], encoded as | represented as an ASN.1 type SubjectPublicKeyInfo [10], encoded as | |
described in Section 4 of [12]. | described in Section 4 of [13]. | |
This specification requires that if both the CGA option and the | This specification requires that if both the CGA option and the | |
Signature option are present, then the publicKey field in the CGA | Signature option are present, then the publicKey field in the CGA | |
option MUST be the public key referred by the Key Hash field in | option MUST be the public key referred by the Key Hash field in | |
the Signature option. Packets received with two different keys | the Signature option. Packets received with two different keys | |
MUST be silently discarded. Note that a future extension may | MUST be silently discarded. Note that a future extension may | |
provide a mechanism which allows the owner of an address and the | provide a mechanism which allows the owner of an address and the | |
signer to be different parties. | signer to be different parties. | |
The length of the Key Information field is determined by the ASN.1 | The length of the Key Information field is determined by the ASN.1 | |
Skipping to change at page 13, line 7: | ||
The CGA option MUST be present in all Neighbor Solicitation and | The CGA option MUST be present in all Neighbor Solicitation and | |
Advertisement messages, and in Router Solicitation messages not sent | Advertisement messages, and in Router Solicitation messages not sent | |
with the unspecified source address. The CGA option MAY be present | with the unspecified source address. The CGA option MAY be present | |
in other messages. | in other messages. | |
A node sending a message using the CGA option MUST construct the | A node sending a message using the CGA option MUST construct the | |
message as follows. | message as follows. | |
The Modifier, Collision Cnt, and Key Information fields in the CGA | The Modifier, Collision Cnt, and Key Information fields in the CGA | |
option are filled in according to the rules presented above and in | option are filled in according to the rules presented above and in | |
[12]. The used public key is taken from configuration; typically | [13]. The used public key is taken from configuration; typically | |
from a data structure associated with the source address. The | from a data structure associated with the source address. The | |
address MUST be constructed as specified in Section 4 of [12]. | address MUST be constructed as specified in Section 4 of [13]. | |
Depending on the type of the message, this address appears in | Depending on the type of the message, this address appears in | |
different places: | different places: | |
Redirect | Redirect | |
The address MUST be the source address of the message. | The address MUST be the source address of the message. | |
Neighbor Solicitation | Neighbor Solicitation | |
The address MUST be the Target Address for solicitations sent for | The address MUST be the Target Address for solicitations sent for | |
Skipping to change at page 14, line 7: | ||
insecure messages. | insecure messages. | |
Router Solicitation messages without the CGA option MUST be also | Router Solicitation messages without the CGA option MUST be also | |
treated as insecure, unless the source address of the message is the | treated as insecure, unless the source address of the message is the | |
unspecified address. | unspecified address. | |
A message containing a CGA option MUST be checked as follows: | A message containing a CGA option MUST be checked as follows: | |
If the interface has been configured to use CGA, the receiving | If the interface has been configured to use CGA, the receiving | |
node MUST verify the source address of the packet using the | node MUST verify the source address of the packet using the | |
algorithm described in Section 5 of [12]. The inputs to the | algorithm described in Section 5 of [13]. The inputs to the | |
algorithm are the claimed address, as defined in the previous | algorithm are the claimed address, as defined in the previous | |
section, and the concatenation from left to right of the following | section, and the concatenation from left to right of the following | |
data: the contents of the 8-octet Modifier field, the 8-octet | data: the contents of the 8-octet Modifier field, the 8-octet | |
subnet-prefix part of the claimed address, the content of the | subnet-prefix part of the claimed address, the content of the | |
1-octet Collision Cnt field, and contents of the variable-length | 1-octet Collision Cnt field, and contents of the variable-length | |
Key Information Field. | Key Information Field. | |
If the CGA verification is successful, the recipient proceeds with | If the CGA verification is successful, the recipient proceeds with | |
the cryptographically more time consuming check of the signature. | the cryptographically more time consuming check of the signature. | |
Skipping to change at page 14, line 45: | ||
at least 2048 bits. Any implementation should follow prudent | at least 2048 bits. Any implementation should follow prudent | |
cryptographic practice in determining the appropriate key lengths. | cryptographic practice in determining the appropriate key lengths. | |
minSec | minSec | |
The minimum acceptable Sec value, if CGA verification is required. | The minimum acceptable Sec value, if CGA verification is required. | |
This parameter is intended to facilitate future extensions and | This parameter is intended to facilitate future extensions and | |
experimental work. Currently, the minSec value SHOULD always be | experimental work. Currently, the minSec value SHOULD always be | |
set to zero. | set to zero. | |
See Section 2 in [12]. | See Section 2 in [13]. | |
All nodes that support the sending of the CGA option MUST record the | All nodes that support the sending of the CGA option MUST record the | |
following configuration information: | following configuration information: | |
CGA parameters | CGA parameters | |
Any information required to construct CGAs, including the used Sec | Any information required to construct CGAs, including the used Sec | |
and Modifier values, and the CGA address itself. | and Modifier values, and the CGA address itself. | |
5.2 Signature Option | 5.2 Signature Option | |
Skipping to change at page 16, line 28: | ||
associate the signature to a particular key known by the receiver. | associate the signature to a particular key known by the receiver. | |
Such a key can be either stored in the certificate cache of the | Such a key can be either stored in the certificate cache of the | |
receiver, or be received in the CGA option in the same message. | receiver, or be received in the CGA option in the same message. | |
Digital Signature | Digital Signature | |
A variable length field contains a PKCS#1 signature constructed | A variable length field contains a PKCS#1 signature constructed | |
using the sender's private key, over the the following sequence of | using the sender's private key, over the the following sequence of | |
octets: | octets: | |
1. The 128-bit CGA Message Type tag [12] value for SEND, 0x086F | 1. The 128-bit CGA Message Type tag [13] value for SEND, 0x086F | |
CA5E 10B2 00C9 9C8C E001 6427 7C08. (The tag value has been | CA5E 10B2 00C9 9C8C E001 6427 7C08. (The tag value has been | |
generated randomly by the editor of this specification.). | generated randomly by the editor of this specification.). | |
2. The 128-bit Source Address field from the IP header. | 2. The 128-bit Source Address field from the IP header. | |
3. The 128-bit Destination Address field from the IP header. | 3. The 128-bit Destination Address field from the IP header. | |
4. The 32-bit ICMP header. | 4. The 32-bit ICMP header. | |
5. The NDP message header. | 5. The NDP message header. | |
6. All NDP options preceding the Signature option. | 6. All NDP options preceding the Signature option. | |
The signature value is computed with the RSASSA-PKCS1-v1_5 | The signature value is computed with the RSASSA-PKCS1-v1_5 | |
algorithm and SHA-1 hash as defined in [13]. | algorithm and SHA-1 hash as defined in [14]. | |
This field starts after the Key Hash field. The length of the | This field starts after the Key Hash field. The length of the | |
Digital Signature field is determined by the length of the | Digital Signature field is determined by the length of the | |
Signature option minus the length of the other fields (including | Signature option minus the length of the other fields (including | |
the variable length Pad field). | the variable length Pad field). | |
This variable length field contains padding, as many bytes as is | This variable length field contains padding, as many bytes as is | |
given by the Pad Length field. | given by the Pad Length field. | |
5.2.1 Processing Rules for Senders | 5.2.1 Processing Rules for Senders | |
Skipping to change at page 18, line 50: | ||
trust anchor | trust anchor | |
The authority of the sender is verified as described in Section | The authority of the sender is verified as described in Section | |
6.1. The sender may claim additional authorization through the | 6.1. The sender may claim additional authorization through the | |
use of CGAs, but that is neither required nor verified. | use of CGAs, but that is neither required nor verified. | |
CGA | CGA | |
The CGA property of the sender's address is verified as | The CGA property of the sender's address is verified as | |
described in [12]. The sender may claim additional authority | described in [13]. The sender may claim additional authority | |
through a trust anchor, but that is neither required nor | through a trust anchor, but that is neither required nor | |
verified. | verified. | |
trust anchor and CGA | trust anchor and CGA | |
Both the trust anchor and the CGA verification is required. | Both the trust anchor and the CGA verification is required. | |
trust anchor or CGA | trust anchor or CGA | |
Either the trust anchor or the CGA verification is required. | Either the trust anchor or the CGA verification is required. | |
Skipping to change at page 25, line 36: | ||
and routers to allow the host to learn a certificate chain with the | and routers to allow the host to learn a certificate chain with the | |
assistance of the router. | assistance of the router. | |
6.1 Certificate Format | 6.1 Certificate Format | |
The certificate chain of a router terminates in a Router | The certificate chain of a router terminates in a Router | |
Authorization Certificate that authorizes a specific IPv6 node to act | Authorization Certificate that authorizes a specific IPv6 node to act | |
as a router. Because authorization chains are not a common practice | as a router. Because authorization chains are not a common practice | |
in the Internet at the time this specification was written, the chain | in the Internet at the time this specification was written, the chain | |
MUST consist of standard Public Key Certificates (PKC, in the sense | MUST consist of standard Public Key Certificates (PKC, in the sense | |
of [18]). The certificate chain MUST start from the identity of a | of [19]). The certificate chain MUST start from the identity of a | |
trust anchor that is shared by the host and the router. This allows | trust anchor that is shared by the host and the router. This allows | |
the host to anchor trust for the router's public key in the trust | the host to anchor trust for the router's public key in the trust | |
anchor. Note that there MAY be multiple certificates issued by a | anchor. Note that there MAY be multiple certificates issued by a | |
single trust anchor. | single trust anchor. | |
6.1.1 Router Authorization Certificate Profile | 6.1.1 Router Authorization Certificate Profile | |
Router Authorization Certificates are X.509v3 certificates, as | Router Authorization Certificates are X.509v3 certificates, as | |
defined in RFC 3280 [10], and MUST contain at least one instance of | defined in RFC 3280 [10], and MUST contain at least one instance of | |
the X.509 extension for IP addresses, as defined in [11]. The parent | the X.509 extension for IP addresses, as defined in [12]. The parent | |
certificates in the certificate chain MUST contain one or more X.509 | certificates in the certificate chain MUST contain one or more X.509 | |
IP address extensions, back up to a trusted party (such as the user's | IP address extensions, back up to a trusted party (such as the user's | |
ISP) that configured the original IP address space block for the | ISP) that configured the original IP address space block for the | |
router in question, or delegated the right to do so for someone. The | router in question, or delegated the right to do so for someone. The | |
certificates for intermediate delegating authorities MUST contain | certificates for intermediate delegating authorities MUST contain | |
X.509 IP address extension(s) for subdelegations. The router's | X.509 IP address extension(s) for subdelegations. The router's | |
certificate is signed by the delegating authority for the prefixes | certificate is signed by the delegating authority for the prefixes | |
the router is authorized to to advertise. | the router is authorized to to advertise. | |
The X.509 IP address extension MUST contain at least one | The X.509 IP address extension MUST contain at least one | |
addressesOrRanges element. This element MUST contain an | addressesOrRanges element. This element MUST contain an | |
addressPrefix element with an IPv6 address prefix for a prefix the | addressPrefix element with an IPv6 address prefix for a prefix the | |
router or the intermediate entity is authorized to route. If the | router or the intermediate entity is authorized to route. If the | |
entity is allowed to route any prefix, the used IPv6 address prefix | entity is allowed to route any prefix, the used IPv6 address prefix | |
is the null prefix, ::/0. The addressFamily element of the | is the null prefix, ::/0. The addressFamily element of the | |
containing IPAddrBlocks sequence element MUST contain the IPv6 | containing IPAddrBlocks sequence element MUST contain the IPv6 | |
Address Family Identifier (0002), as specified in [11] for IPv6 | Address Family Identifier (0002), as specified in [12] for IPv6 | |
prefixes. Instead of an addressPrefix element, the addressesOrRange | prefixes. Instead of an addressPrefix element, the addressesOrRange | |
element MAY contain an addressRange element for a range of prefixes, | element MAY contain an addressRange element for a range of prefixes, | |
if more than one prefix is authorized. The X.509 IP address | if more than one prefix is authorized. The X.509 IP address | |
extension MAY contain additional IPv6 prefixes, expressed either as | extension MAY contain additional IPv6 prefixes, expressed either as | |
an addressPrefix or an addressRange. | an addressPrefix or an addressRange. | |
A SEND node receiving a Router Authorization Certificate MUST first | A SEND node receiving a Router Authorization Certificate MUST first | |
check whether the certificate's signature was generated by the | check whether the certificate's signature was generated by the | |
delegating authority. Then the client MUST check whether all the | delegating authority. Then the client MUST check whether all the | |
addressPrefix or addressRange entries in the router's certificate are | addressPrefix or addressRange entries in the router's certificate are | |
Skipping to change at page 33, line 51: | ||
DER encoded X.501 certificate Name, represented and encoded | DER encoded X.501 certificate Name, represented and encoded | |
exactly as in the matching X.509v3 trust anchor certificate. | exactly as in the matching X.509v3 trust anchor certificate. | |
When the Name Type field is set to 2, the Name field contains a | When the Name Type field is set to 2, the Name field contains a | |
Fully Qualified Domain Name of the trust anchor, for example, | Fully Qualified Domain Name of the trust anchor, for example, | |
"trustanchor.example.com". The name is stored as a string, in the | "trustanchor.example.com". The name is stored as a string, in the | |
"preferred name syntax" DNS format, as specified in RFC 1034 [1] | "preferred name syntax" DNS format, as specified in RFC 1034 [1] | |
Section 3.5. Additionally, the restrictions discussed in RFC 3280 | Section 3.5. Additionally, the restrictions discussed in RFC 3280 | |
[10] Section 4.2.1.7 apply. | [10] Section 4.2.1.7 apply. | |
In the FQDN case the Name field is an "IDN-unaware domain name | ||
slot" as defined in [11]. That is, it can contain only ASCII | ||
characters. An implementation MAY support internationalized | ||
domain names (IDNs) using the ToASCII operation; see [11] for more | ||
information. | ||
All systems MUST implement support the DER Encoded X.501 Name. | All systems MUST implement support the DER Encoded X.501 Name. | |
Implementations MAY support the FQDN name type. | Implementations MAY support the FQDN name type. | |
6.2.4 Certificate Option | 6.2.4 Certificate Option | |
The format of the certificate option is described in the following: | The format of the certificate option is described in the following: | |
0 1 2 3 | 0 1 2 3 | |
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
Skipping to change at page 38, line 10: | ||
solicitation, the host MAY prefer to process first those | solicitation, the host MAY prefer to process first those | |
advertisements with the same Identifier field value as in the | advertisements with the same Identifier field value as in the | |
solicitation. This makes Denial-of-Service attacks against the | solicitation. This makes Denial-of-Service attacks against the | |
mechanism harder (see Section 9.3). | mechanism harder (see Section 9.3). | |
7. Addressing | 7. Addressing | |
7.1 CGA Addresses | 7.1 CGA Addresses | |
Nodes that use stateless address autoconfiguration SHOULD generate a | Nodes that use stateless address autoconfiguration SHOULD generate a | |
new CGA as specified in Section 4 of [12] for each new | new CGA as specified in Section 4 of [13] for each new | |
autoconfiguration run. The nodes MAY continue to use the same public | autoconfiguration run. The nodes MAY continue to use the same public | |
key and modifier, and start the process from Step 4 of the generation | key and modifier, and start the process from Step 4 of the generation | |
algorithm. | algorithm. | |
By default, a SEND-enabled node SHOULD use only CGAs as its own | By default, a SEND-enabled node SHOULD use only CGAs as its own | |
addresses. Other types of addresses MAY be used in testing, | addresses. Other types of addresses MAY be used in testing, | |
diagnostics or other purposes. However, this document does not | diagnostics or other purposes. However, this document does not | |
describe how to choose between different types of addresses for | describe how to choose between different types of addresses for | |
different communications. A dynamic selection can be provided by an | different communications. A dynamic selection can be provided by an | |
API, such as the one defined in [23]. | API, such as the one defined in [24]. | |
7.2 Redirect Addresses | 7.2 Redirect Addresses | |
If the Target Address and Destination Address fields in the ICMP | If the Target Address and Destination Address fields in the ICMP | |
Redirect message are equal, then this message is used to inform hosts | Redirect message are equal, then this message is used to inform hosts | |
that a destination is in fact a neighbor. In this case the receiver | that a destination is in fact a neighbor. In this case the receiver | |
MUST verify that the given address falls within the range defined by | MUST verify that the given address falls within the range defined by | |
the router's certificate. Redirect messages failing this check MUST | the router's certificate. Redirect messages failing this check MUST | |
be silently discarded. | be silently discarded. | |
Skipping to change at page 39, line 39: | ||
This specification does not address the protection of NDP packets for | This specification does not address the protection of NDP packets for | |
nodes that are configured with a static address (e.g., PREFIX::1). | nodes that are configured with a static address (e.g., PREFIX::1). | |
Future certificate chain based authorization specifications are | Future certificate chain based authorization specifications are | |
needed for such nodes. | needed for such nodes. | |
It is outside the scope of this specification to describe the use of | It is outside the scope of this specification to describe the use of | |
trust anchor authorization between nodes with dynamically changing | trust anchor authorization between nodes with dynamically changing | |
addresses. Such dynamically changing addresses may be the result of | addresses. Such dynamically changing addresses may be the result of | |
stateful or stateless address autoconfiguration, or through the use | stateful or stateless address autoconfiguration, or through the use | |
of RFC 3041 [17] addresses. If the CGA method is not used, nodes | of RFC 3041 [18] addresses. If the CGA method is not used, nodes | |
would be required to exchange certificate chains that terminate in a | would be required to exchange certificate chains that terminate in a | |
certificate authorizing a node to use an IP address having a | certificate authorizing a node to use an IP address having a | |
particular interface identifier. This specification does not specify | particular interface identifier. This specification does not specify | |
the format of such certificates, since there are currently a few | the format of such certificates, since there are currently a few | |
cases where such certificates are required by the link layer and it | cases where such certificates are required by the link layer and it | |
is up to the link layer to provide certification for the interface | is up to the link layer to provide certification for the interface | |
identifier. This may be the subject of a future specification. It | identifier. This may be the subject of a future specification. It | |
is also outside the scope of this specification to describe how | is also outside the scope of this specification to describe how | |
stateful address autoconfiguration works with the CGA method. | stateful address autoconfiguration works with the CGA method. | |
Skipping to change at page 43, line 36: | ||
Even on a secure link layer, SEND does not require that the addresses | Even on a secure link layer, SEND does not require that the addresses | |
on the link layer and Neighbor Advertisements correspond to each | on the link layer and Neighbor Advertisements correspond to each | |
other. However, it is RECOMMENDED that such checks be performed | other. However, it is RECOMMENDED that such checks be performed | |
where this is possible on the given link layer technology. | where this is possible on the given link layer technology. | |
Prior to participating in Neighbor Discovery and Duplicate Address | Prior to participating in Neighbor Discovery and Duplicate Address | |
Detection, nodes must subscribe to the link-scoped All-Nodes | Detection, nodes must subscribe to the link-scoped All-Nodes | |
Multicast Group and the Solicited-Node Multicast Group for the | Multicast Group and the Solicited-Node Multicast Group for the | |
address that they are claiming for their addresses; RFC 2461 [7]. | address that they are claiming for their addresses; RFC 2461 [7]. | |
Subscribing to a multicast group requires that the nodes use MLD | Subscribing to a multicast group requires that the nodes use MLD | |
[16]. MLD contains no provision for security. An attacker could | [17]. MLD contains no provision for security. An attacker could | |
send an MLD Done message to unsubscribe a victim from the | send an MLD Done message to unsubscribe a victim from the | |
Solicited-Node Multicast address. However, the victim should be able | Solicited-Node Multicast address. However, the victim should be able | |
to detect such an attack because the router sends a | to detect such an attack because the router sends a | |
Multicast-Address-Specific Query to determine whether any listeners | Multicast-Address-Specific Query to determine whether any listeners | |
are still on the address, at which point the victim can respond to | are still on the address, at which point the victim can respond to | |
avoid being dropped from the group. This technique will work if the | avoid being dropped from the group. This technique will work if the | |
router on the link has not been compromised. Other attacks using MLD | router on the link has not been compromised. Other attacks using MLD | |
are possible, but they primarily lead to extraneous (but not | are possible, but they primarily lead to extraneous (but not | |
overwhelming) traffic. | overwhelming) traffic. | |
9.2 How SEND Counters Threats to NDP | 9.2 How SEND Counters Threats to NDP | |
The SEND protocol is designed to counter the threats to NDP, as | The SEND protocol is designed to counter the threats to NDP, as | |
outlined in [25]. The following subsections contain a regression of | outlined in [26]. The following subsections contain a regression of | |
the SEND protocol against the threats, to illustrate what aspects of | the SEND protocol against the threats, to illustrate what aspects of | |
the protocol counter each threat. | the protocol counter each threat. | |
9.2.1 Neighbor Solicitation/Advertisement Spoofing | 9.2.1 Neighbor Solicitation/Advertisement Spoofing | |
This threat is defined in Section 4.1.1 of [25]. The threat is that | This threat is defined in Section 4.1.1 of [26]. The threat is that | |
a spoofed message may cause a false entry in a node's Neighbor Cache. | a spoofed message may cause a false entry in a node's Neighbor Cache. | |
There are two cases: | There are two cases: | |
1. Entries made as a side effect of a Neighbor Solicitation or | 1. Entries made as a side effect of a Neighbor Solicitation or | |
Router Solicitation. A router receiving a Router Solicitation | Router Solicitation. A router receiving a Router Solicitation | |
with a Target Link-Layer Address extension and the IPv6 source | with a Target Link-Layer Address extension and the IPv6 source | |
address not equal to the unspecified address inserts an entry for | address not equal to the unspecified address inserts an entry for | |
the IPv6 address into its Neighbor Cache. Also, a node | the IPv6 address into its Neighbor Cache. Also, a node | |
performing Duplicate Address Detection (DAD) that receives a | performing Duplicate Address Detection (DAD) that receives a | |
Neighbor Solicitation for the same address regards the situation | Neighbor Solicitation for the same address regards the situation | |
Skipping to change at page 44, line 38: | ||
2. Entries made as a result of a Neighbor Advertisement message. | 2. Entries made as a result of a Neighbor Advertisement message. | |
SEND counters this threat by requiring the Signature and CGA | SEND counters this threat by requiring the Signature and CGA | |
options to be present in these advertisements. | options to be present in these advertisements. | |
See also Section 9.2.5, below, for discussion about replay protection | See also Section 9.2.5, below, for discussion about replay protection | |
and timestamps. | and timestamps. | |
9.2.2 Neighbor Unreachability Detection Failure | 9.2.2 Neighbor Unreachability Detection Failure | |
This attack is described in Section 4.1.2 of [25]. SEND counters | This attack is described in Section 4.1.2 of [26]. SEND counters | |
this attack by requiring a node responding to Neighbor Solicitations | this attack by requiring a node responding to Neighbor Solicitations | |
sent as NUD probes to include a Signature option and proof of | sent as NUD probes to include a Signature option and proof of | |
authorization to use the interface identifier in the address being | authorization to use the interface identifier in the address being | |
probed. If these prerequisites are not met, the node performing NUD | probed. If these prerequisites are not met, the node performing NUD | |
discards the responses. | discards the responses. | |
9.2.3 Duplicate Address Detection DoS Attack | 9.2.3 Duplicate Address Detection DoS Attack | |
This attack is described in Section 4.1.3 of [25]. SEND counters | This attack is described in Section 4.1.3 of [26]. SEND counters | |
this attack by requiring the Neighbor Advertisements sent as | this attack by requiring the Neighbor Advertisements sent as | |
responses to DAD to include a Signature option and proof of | responses to DAD to include a Signature option and proof of | |
authorization to use the interface identifier in the address being | authorization to use the interface identifier in the address being | |
tested. If these prerequisites are not met, the node performing DAD | tested. If these prerequisites are not met, the node performing DAD | |
discards the responses. | discards the responses. | |
When a SEND node is used on a link that also connects to non-SEND | When a SEND node is used on a link that also connects to non-SEND | |
nodes, the SEND node ignores any insecure Neighbor Solicitations or | nodes, the SEND node ignores any insecure Neighbor Solicitations or | |
Advertisements that may be send by the non-SEND nodes. This protects | Advertisements that may be send by the non-SEND nodes. This protects | |
the SEND node from DAD DoS attacks by non-SEND nodes or attackers | the SEND node from DAD DoS attacks by non-SEND nodes or attackers | |
simulating to non-SEND nodes, at the cost of a potential address | simulating to non-SEND nodes, at the cost of a potential address | |
collision between a SEND node and non-SEND node. The probability and | collision between a SEND node and non-SEND node. The probability and | |
effects of such an address collision are discussed in [12]. | effects of such an address collision are discussed in [13]. | |
9.2.4 Router Solicitation and Advertisement Attacks | 9.2.4 Router Solicitation and Advertisement Attacks | |
These attacks are described in Sections 4.2.1, 4.2.4, 4.2.5, 4.2.6, | These attacks are described in Sections 4.2.1, 4.2.4, 4.2.5, 4.2.6, | |
and 4.2.7 of [25]. SEND counters these attacks by requiring Router | and 4.2.7 of [26]. SEND counters these attacks by requiring Router | |
Advertisements to contain a Signature option, and that the signature | Advertisements to contain a Signature option, and that the signature | |
is calculated using the public key of a node that can prove its | is calculated using the public key of a node that can prove its | |
authorization to route the subnet prefixes contained in any Prefix | authorization to route the subnet prefixes contained in any Prefix | |
Information Options. The router proves its authorization by showing | Information Options. The router proves its authorization by showing | |
a certificate containing the specific prefix or the indication that | a certificate containing the specific prefix or the indication that | |
the router is allowed to route any prefix. A Router Advertisement | the router is allowed to route any prefix. A Router Advertisement | |
without these protections is discarded. | without these protections is discarded. | |
SEND does not protect against brute force attacks on the router, such | SEND does not protect against brute force attacks on the router, such | |
as DoS attacks, or compromise of the router, as described in Sections | as DoS attacks, or compromise of the router, as described in Sections | |
4.4.2 and 4.4.3 of [25]. | 4.4.2 and 4.4.3 of [26]. | |
9.2.5 Replay Attacks | 9.2.5 Replay Attacks | |
This attack is described in Section 4.3.1 of [25]. SEND protects | This attack is described in Section 4.3.1 of [26]. SEND protects | |
against attacks in Router Solicitation/Router Advertisement and | against attacks in Router Solicitation/Router Advertisement and | |
Neighbor Solicitation/Neighbor Advertisement transactions by | Neighbor Solicitation/Neighbor Advertisement transactions by | |
including a Nonce option in the solicitation and requiring the | including a Nonce option in the solicitation and requiring the | |
advertisement to include a matching option. Together with the | advertisement to include a matching option. Together with the | |
signatures this forms a challenge-response protocol. SEND protects | signatures this forms a challenge-response protocol. SEND protects | |
against attacks from unsolicited messages such as Neighbor | against attacks from unsolicited messages such as Neighbor | |
Advertisements, Router Advertisements, and Redirects by including a | Advertisements, Router Advertisements, and Redirects by including a | |
Timestamp option. A window of vulnerability for replay attacks | Timestamp option. A window of vulnerability for replay attacks | |
exists until the timestamp expires. | exists until the timestamp expires. | |
Skipping to change at page 46, line 7: | ||
containing the timestamp. The cached state allows the node to | containing the timestamp. The cached state allows the node to | |
protect itself against replayed messages. However, once the node | protect itself against replayed messages. However, once the node | |
flushes the state for whatever reason, an attacker can re-create the | flushes the state for whatever reason, an attacker can re-create the | |
state by replaying an old message while the timestamp is still valid. | state by replaying an old message while the timestamp is still valid. | |
Since most SEND nodes are likely to use fairly coarse grained | Since most SEND nodes are likely to use fairly coarse grained | |
timestamps, as explained in Section 5.3.1, this may affect some | timestamps, as explained in Section 5.3.1, this may affect some | |
nodes. | nodes. | |
9.2.6 Neighbor Discovery DoS Attack | 9.2.6 Neighbor Discovery DoS Attack | |
This attack is described in Section 4.3.2 of [25]. In this attack, | This attack is described in Section 4.3.2 of [26]. In this attack, | |
the attacker bombards the router with packets for fictitious | the attacker bombards the router with packets for fictitious | |
addresses on the link, causing the router to busy itself with | addresses on the link, causing the router to busy itself with | |
performing Neighbor Solicitations for addresses that do not exist. | performing Neighbor Solicitations for addresses that do not exist. | |
SEND does not address this threat because it can be addressed by | SEND does not address this threat because it can be addressed by | |
techniques such as rate limiting Neighbor Solicitations, restricting | techniques such as rate limiting Neighbor Solicitations, restricting | |
the amount of state reserved for unresolved solicitations, and clever | the amount of state reserved for unresolved solicitations, and clever | |
cache management. These are all techniques involved in implementing | cache management. These are all techniques involved in implementing | |
Neighbor Discovery on the router. | Neighbor Discovery on the router. | |
9.3 Attacks against SEND Itself | 9.3 Attacks against SEND Itself | |
The CGAs have a 59-bit hash value. The security of the CGA mechanism | The CGAs have a 59-bit hash value. The security of the CGA mechanism | |
has been discussed in [12]. | has been discussed in [13]. | |
Some Denial-of-Service attacks against NDP and SEND itself remain. | Some Denial-of-Service attacks against NDP and SEND itself remain. | |
For instance, an attacker may try to produce a very high number of | For instance, an attacker may try to produce a very high number of | |
packets that a victim host or router has to verify using asymmetric | packets that a victim host or router has to verify using asymmetric | |
methods. While safeguards are required to prevent an excessive use | methods. While safeguards are required to prevent an excessive use | |
of resources, this can still render SEND non-operational. | of resources, this can still render SEND non-operational. | |
When CGA protection is used, SEND deals with the DoS attacks using | When CGA protection is used, SEND deals with the DoS attacks using | |
the verification process described in Section 5.2.2. In this | the verification process described in Section 5.2.2. In this | |
process, a simple hash verification of the CGA property of the | process, a simple hash verification of the CGA property of the | |
Skipping to change at page 49, line 34: | ||
o The Timestamp option, described in Section 5.3.1. | o The Timestamp option, described in Section 5.3.1. | |
o The Nonce option, described in Section 5.3.2. | o The Nonce option, described in Section 5.3.2. | |
o The Trust Anchor option, described in Section 6.2.3. | o The Trust Anchor option, described in Section 6.2.3. | |
o The Certificate option, described in Section 6.2.4. | o The Certificate option, described in Section 6.2.4. | |
This document defines a new 128-bit value under the CGA Message Type | This document defines a new 128-bit value under the CGA Message Type | |
[12] namespace, 0x086F CA5E 10B2 00C9 9C8C E001 6427 7C08. | [13] namespace, 0x086F CA5E 10B2 00C9 9C8C E001 6427 7C08. | |
This document defines a new name space for the Name Type field in the | This document defines a new name space for the Name Type field in the | |
Trust Anchor option. Future values of this field can be allocated | Trust Anchor option. Future values of this field can be allocated | |
using Standards Action [6]. The current values for this field are: | using Standards Action [6]. The current values for this field are: | |
1 DER Encoded X.501 Name | 1 DER Encoded X.501 Name | |
2 FQDN | 2 FQDN | |
Another new name space is allocated for the Cert Type field in the | Another new name space is allocated for the Cert Type field in the | |
Skipping to change at page 50, line 40: | ||
Autoconfiguration", RFC 2462, December 1998. | Autoconfiguration", RFC 2462, December 1998. | |
[9] Conta, A. and S. Deering, "Internet Control Message Protocol | [9] Conta, A. and S. Deering, "Internet Control Message Protocol | |
(ICMPv6) for the Internet Protocol Version 6 (IPv6) | (ICMPv6) for the Internet Protocol Version 6 (IPv6) | |
Specification", RFC 2463, December 1998. | Specification", RFC 2463, December 1998. | |
[10] Housley, R., Polk, W., Ford, W. and D. Solo, "Internet X.509 | [10] Housley, R., Polk, W., Ford, W. and D. Solo, "Internet X.509 | |
Public Key Infrastructure Certificate and Certificate | Public Key Infrastructure Certificate and Certificate | |
Revocation List (CRL) Profile", RFC 3280, April 2002. | Revocation List (CRL) Profile", RFC 3280, April 2002. | |
[11] Lynn, C., Kent, S. and K. Seo, "X.509 Extensions for IP | [11] Faltstrom, P., Hoffman, P. and A. Costello, "Internationalizing | |
Domain Names in Applications (IDNA)", RFC 3490, March 2003. | ||
[12] Lynn, C., Kent, S. and K. Seo, "X.509 Extensions for IP | ||
Addresses and AS Identifiers", | Addresses and AS Identifiers", | |
draft-ietf-pkix-x509-ipaddr-as-extn-03 (work in progress), | draft-ietf-pkix-x509-ipaddr-as-extn-03 (work in progress), | |
September 2003. | September 2003. | |
[12] Aura, T., "Cryptographically Generated Addresses (CGA)", | [13] Aura, T., "Cryptographically Generated Addresses (CGA)", | |
draft-ietf-send-cga-03 (work in progress), December 2003. | draft-ietf-send-cga-03 (work in progress), December 2003. | |
[13] RSA Laboratories, "RSA Encryption Standard, Version 2.1", PKCS | [14] RSA Laboratories, "RSA Encryption Standard, Version 2.1", PKCS | |
1, November 2002. | 1, November 2002. | |
[14] National Institute of Standards and Technology, "Secure Hash | [15] National Institute of Standards and Technology, "Secure Hash | |
Standard", FIPS PUB 180-1, April 1995, <http:// | Standard", FIPS PUB 180-1, April 1995, <http:// | |
www.itl.nist.gov/fipspubs/fip180-1.htm>. | www.itl.nist.gov/fipspubs/fip180-1.htm>. | |
Informative References | Informative References | |
[15] Harkins, D. and D. Carrel, "The Internet Key Exchange (IKE)", | [16] Harkins, D. and D. Carrel, "The Internet Key Exchange (IKE)", | |
RFC 2409, November 1998. | RFC 2409, November 1998. | |
[16] Deering, S., Fenner, W. and B. Haberman, "Multicast Listener | [17] Deering, S., Fenner, W. and B. Haberman, "Multicast Listener | |
Discovery (MLD) for IPv6", RFC 2710, October 1999. | Discovery (MLD) for IPv6", RFC 2710, October 1999. | |
[17] Narten, T. and R. Draves, "Privacy Extensions for Stateless | [18] Narten, T. and R. Draves, "Privacy Extensions for Stateless | |
Address Autoconfiguration in IPv6", RFC 3041, January 2001. | Address Autoconfiguration in IPv6", RFC 3041, January 2001. | |
[18] Farrell, S. and R. Housley, "An Internet Attribute Certificate | [19] Farrell, S. and R. Housley, "An Internet Attribute Certificate | |
Profile for Authorization", RFC 3281, April 2002. | Profile for Authorization", RFC 3281, April 2002. | |
[19] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C. and M. | [20] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C. and M. | |
Carney, "Dynamic Host Configuration Protocol for IPv6 | Carney, "Dynamic Host Configuration Protocol for IPv6 | |
(DHCPv6)", RFC 3315, July 2003. | (DHCPv6)", RFC 3315, July 2003. | |
[20] Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6) | [21] Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6) | |
Addressing Architecture", RFC 3513, April 2003. | Addressing Architecture", RFC 3513, April 2003. | |
[21] Arkko, J., "Effects of ICMPv6 on IKE and IPsec Policies", | [22] Arkko, J., "Effects of ICMPv6 on IKE and IPsec Policies", | |
draft-arkko-icmpv6-ike-effects-02 (work in progress), March | draft-arkko-icmpv6-ike-effects-02 (work in progress), March | |
2003. | 2003. | |
[22] Arkko, J., "Manual SA Configuration for IPv6 Link Local | [23] Arkko, J., "Manual SA Configuration for IPv6 Link Local | |
Messages", draft-arkko-manual-icmpv6-sas-01 (work in progress), | Messages", draft-arkko-manual-icmpv6-sas-01 (work in progress), | |
June 2002. | June 2002. | |
[23] Nordmark, E., Chakrabarti, S. and J. Laganier, "IPv6 Socket API | [24] Nordmark, E., Chakrabarti, S. and J. Laganier, "IPv6 Socket API | |
for Address Selection", draft-chakrabarti-ipv6-addrselect-02 | for Address Selection", draft-chakrabarti-ipv6-addrselect-02 | |
(work in progress), October 2003. | (work in progress), October 2003. | |
[24] Kent, S., "IP Encapsulating Security Payload (ESP)", | [25] Kent, S., "IP Encapsulating Security Payload (ESP)", | |
draft-ietf-ipsec-esp-v3-06 (work in progress), July 2003. | draft-ietf-ipsec-esp-v3-06 (work in progress), July 2003. | |
[25] Nikander, P., Kempf, J. and E. Nordmark, "IPv6 Neighbor | [26] Nikander, P., Kempf, J. and E. Nordmark, "IPv6 Neighbor | |
Discovery trust models and threats", draft-ietf-send-psreq-04 | Discovery trust models and threats", draft-ietf-send-psreq-04 | |
(work in progress), October 2003. | (work in progress), October 2003. | |
[26] International Organization for Standardization, "The Directory | [27] International Organization for Standardization, "The Directory | |
- Authentication Framework", ISO Standard X.509, 2000. | - Authentication Framework", ISO Standard X.509, 2000. | |
[27] Institute of Electrical and Electronics Engineers, "Local and | [28] Institute of Electrical and Electronics Engineers, "Local and | |
Metropolitan Area Networks: Port-Based Network Access Control", | Metropolitan Area Networks: Port-Based Network Access Control", | |
IEEE Standard 802.1X, September 2001. | IEEE Standard 802.1X, September 2001. | |
Authors' Addresses | Authors' Addresses | |
Jari Arkko | Jari Arkko | |
Ericsson | Ericsson | |
Jorvas 02420 | Jorvas 02420 | |
Finland | Finland | |
End of changes. | ||
This html diff was produced by rfcdiff v0.42, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |