| < draft-ietf-dprive-padding-policy-03.txt | draft-ietf-dprive-padding-policy-04.txt > | |||
|---|---|---|---|---|
| Network Working Group A. Mayrhofer | Network Working Group A. Mayrhofer | |||
| Internet-Draft nic.at GmbH | Internet-Draft nic.at GmbH | |||
| Intended status: Experimental January 17, 2018 | Intended status: Experimental February 6, 2018 | |||
| Expires: July 21, 2018 | Expires: August 10, 2018 | |||
| Padding Policy for EDNS(0) | Padding Policy for EDNS(0) | |||
| draft-ietf-dprive-padding-policy-03 | draft-ietf-dprive-padding-policy-04 | |||
| Abstract | Abstract | |||
| RFC 7830 specifies the EDNS(0) 'Padding' option, but does not specify | RFC 7830 specifies the EDNS(0) 'Padding' option, but does not specify | |||
| the actual padding length for specific applications. This memo lists | the actual padding length for specific applications. This memo lists | |||
| the possible options ("Padding Policies"), discusses implications of | the possible options ("Padding Policies"), discusses implications of | |||
| each of these options, and provides a recommended (experimental) | each of these options, and provides a recommended (experimental) | |||
| option. | option. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 34 ¶ | skipping to change at page 1, line 34 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 21, 2018. | This Internet-Draft will expire on August 10, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. General Guidance . . . . . . . . . . . . . . . . . . . . . . 3 | 3. General Guidance . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Padding Strategies . . . . . . . . . . . . . . . . . . . . . 3 | 4. Padding Strategies . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4.1. No Padding . . . . . . . . . . . . . . . . . . . . . . . 3 | 4.1. Block Length Padding . . . . . . . . . . . . . . . . . . 3 | |||
| 4.2. Fixed Length Padding . . . . . . . . . . . . . . . . . . 4 | 4.2. Maximal Length Padding ('The Full Monty') . . . . . . . . 4 | |||
| 4.3. Block Length Padding . . . . . . . . . . . . . . . . . . 4 | 4.3. Random Length Padding . . . . . . . . . . . . . . . . . . 4 | |||
| 4.4. Maximal Length Padding ('The Full Monty') . . . . . . . . 5 | 4.4. Random Block Length Padding . . . . . . . . . . . . . . . 5 | |||
| 4.5. Random Length Padding . . . . . . . . . . . . . . . . . . 5 | 5. Recommended Strategy . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.6. Random Block Length Padding . . . . . . . . . . . . . . . 6 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Recommended Strategy . . . . . . . . . . . . . . . . . . . . 6 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | ||||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | ||||
| 9. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 9. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 9.1. draft-ietf-dprive-padding-policy-03 . . . . . . . . . . . 8 | 9.1. draft-ietf-dprive-padding-policy-04 . . . . . . . . . . . 7 | |||
| 9.2. draft-ietf-dprive-padding-policy-02 . . . . . . . . . . . 8 | 9.2. draft-ietf-dprive-padding-policy-03 . . . . . . . . . . . 7 | |||
| 9.3. draft-ietf-dprive-padding-policy-01 . . . . . . . . . . . 8 | 9.3. draft-ietf-dprive-padding-policy-02 . . . . . . . . . . . 7 | |||
| 9.4. draft-ietf-dprive-padding-policy-00 . . . . . . . . . . . 8 | 9.4. draft-ietf-dprive-padding-policy-01 . . . . . . . . . . . 7 | |||
| 9.5. draft-mayrhofer-dprive-padding-profiles-00 . . . . . . . 8 | 9.5. draft-ietf-dprive-padding-policy-00 . . . . . . . . . . . 7 | |||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . 8 | 9.6. draft-mayrhofer-dprive-padding-profiles-00 . . . . . . . 8 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 8 | ||||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 8 | ||||
| Appendix A. Non-sensible Padding Policies . . . . . . . . . . . 8 | ||||
| A.1. No Padding . . . . . . . . . . . . . . . . . . . . . . . 8 | ||||
| A.2. Fixed Length Padding . . . . . . . . . . . . . . . . . . 9 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | ||||
| 1. Introduction | 1. Introduction | |||
| [RFC7830] specifies the Extensions Mechanisms for DNS (EDNS(0)) | [RFC7830] specifies the Extensions Mechanisms for DNS (EDNS(0)) | |||
| "Padding" option, which allows DNS clients and servers to | "Padding" option, which allows DNS clients and servers to | |||
| artificially increase the size of a DNS message by a variable number | artificially increase the size of a DNS message by a variable number | |||
| of bytes, hampering size-based correlation of encrypted DNS messages. | of bytes, hampering size-based correlation of encrypted DNS messages. | |||
| However, RFC 7830 deliberately does not specify the actual length of | However, RFC 7830 deliberately does not specify the actual length of | |||
| padding to be used. This memo discusses options regarding the actual | padding to be used. This memo discusses options regarding the actual | |||
| size of padding, lists advantages and disadvantages of each of these | size of padding, lists advantages and disadvantages of each of these | |||
| "Padding Strategies", and provides a recommended (experimental) | "Padding Strategies", and provides a recommended (experimental) | |||
| strategy. | strategy. | |||
| Padding DNS messages is useful only when transport is encrypted, | ||||
| using protocols such as DNS over Transport Layer Security [RFC7858], | ||||
| DNS over Datagram Transport Layer Security [RFC8094] or other | ||||
| encrypted DNS transports specified in the future. | ||||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| [RFC2119]. | [RFC2119]. | |||
| 3. General Guidance | 3. General Guidance | |||
| EDNS(0) options space: The maximum message length as dictated by | EDNS(0) options space: The maximum message length as dictated by | |||
| skipping to change at page 3, line 35 ¶ | skipping to change at page 3, line 42 ¶ | |||
| a "Block Length" padding strategy with a block length of 32 octets, | a "Block Length" padding strategy with a block length of 32 octets, | |||
| and a DNS message with a size of 59 octets, the message would be | and a DNS message with a size of 59 octets, the message would be | |||
| padded to 64 octets when transported over UDP. If that same message | padded to 64 octets when transported over UDP. If that same message | |||
| was transported over TCP, and the padding strategy would consider the | was transported over TCP, and the padding strategy would consider the | |||
| extra 2 octects of the length field (61 octets in total), the padded | extra 2 octects of the length field (61 octets in total), the padded | |||
| message would be 96 octets long (as the minimum length of the Padding | message would be 96 octets long (as the minimum length of the Padding | |||
| option is 4 octets). | option is 4 octets). | |||
| 4. Padding Strategies | 4. Padding Strategies | |||
| This section is a non-exhaustive list of possible strategies in | This section is a non-exhaustive list of sensible strategies in | |||
| choosing padding length. | choosing padding length. Note that, for completeness, Appendix A | |||
| contains two more (non-sensible) strategies. | ||||
| 4.1. No Padding | ||||
| In the "No Padding" policy, the EDNS(0) Padding option is not used, | ||||
| and the size of the final (actually, "non-padded") message obviously | ||||
| exactly matches the size of the unpadded message. Even though this | ||||
| "non-policy" seems redundant in this list, its properties must be | ||||
| considered for cases where just one of the parties (client or server) | ||||
| applies padding. | ||||
| Also, this "policy" is required when the remaining message size of | ||||
| the unpadded message does not allow for the Padding option to be | ||||
| included (less than 4 octets left). | ||||
| Advantages: This "policy" requires no additional resources on client, | ||||
| server and network side. | ||||
| Disadvantages: The original size of the message remains unchanged, | ||||
| hence this approach provides no additional confidentiality. | ||||
| "No Padding" MUST NOT be used unless message size disallows the use | ||||
| of Padding. | ||||
| 4.2. Fixed Length Padding | ||||
| In fixed length padding, a sender chooses to pad each message with a | ||||
| padding of constant length. | ||||
| Options: Actual length of padding | ||||
| Advantages: Since the padding is constant in length, this policy is | ||||
| very easy to implement, and at least ensures that the message length | ||||
| diverges from the length of the original packet (even only by a fixed | ||||
| value). | ||||
| Disadvantage: Obviously, the amount of padding is easily discoverable | ||||
| from a single unencrypted message, or by observing message patterns. | ||||
| When a public DNS server applies this policy, the length of the | ||||
| padding must be assumed to be public knowledge. Therefore, this | ||||
| policy is (almost) as useless as the "No Padding" option described | ||||
| above. | ||||
| "Fixed Length Padding" MUST NOT be used except for experimental | ||||
| applications. | ||||
| 4.3. Block Length Padding | 4.1. Block Length Padding | |||
| In Block Length Padding, a sender pads each message so that its | In Block Length Padding, a sender pads each message so that its | |||
| padded length is a multiple of a chosen block length. This creates a | padded length is a multiple of a chosen block length. This creates a | |||
| greatly reduced variety of message lengths. An implementor needs to | greatly reduced variety of message lengths. An implementor needs to | |||
| consider that even the zero-length EDNS(0) Padding Option increases | consider that even the zero-length EDNS(0) Padding Option increases | |||
| the length of the packet by 4 octets. | the length of the packet by 4 octets. | |||
| Options: Block Length - values between 16 and 128 octets for the | Options: Block Length - values between 16 and 128 octets for the | |||
| queries seem reasonable, responses will require larger block sizes | queries seem reasonable, responses will require larger block sizes | |||
| (see [dkg-padding-ndss] and Section 5 for a discussion). | (see [dkg-padding-ndss] and Section 5 for a discussion). | |||
| Very large block lengths will have confidentiality properties similar | Very large block lengths will have confidentiality properties similar | |||
| to the "Maximum Length Padding" strategy (Section 4.4), since almost | to the "Maximum Length Padding" strategy (Section 4.2), since almost | |||
| all messages will fit into a single block. In that case, reasonable | all messages will fit into a single block. In that case, reasonable | |||
| values may be 288 bytes for the query (the maximum size of a one- | values may be 288 bytes for the query (the maximum size of a one- | |||
| question query over TCP, without any EDNS(0) options), and the | question query over TCP, without any EDNS(0) options), and the | |||
| EDNS(0) buffer size of the server for the responses. | EDNS(0) buffer size of the server for the responses. | |||
| Advantages: This policy is reasonably easy to implement, reduces the | Advantages: This policy is reasonably easy to implement, reduces the | |||
| variety of message ("fingerprint") sizes significantly, and does not | variety of message ("fingerprint") sizes significantly, and does not | |||
| require a source of (pseudo) random numbers, since the padding length | require a source of (pseudo) random numbers, since the padding length | |||
| required can be derived from the actual (unpadded) message. | required can be derived from the actual (unpadded) message. | |||
| Disadvantage: Given an unpadded message and the block size of the | Disadvantage: Given an unpadded message and the block size of the | |||
| padding (which is assumed to be public knowledge once a server is | padding (which is assumed to be public knowledge once a server is | |||
| reachable), the size of a padded message can be predicted. | reachable), the size of a padded message can be predicted. | |||
| Therefore, minimum and maximum length of the unpadded message are | Therefore, minimum and maximum length of the unpadded message are | |||
| known. | known. | |||
| Block Length Padding is the currently RECOMMENDED strategy (see | Block Length Padding is the currently RECOMMENDED strategy (see | |||
| Section 5). | Section 5). | |||
| 4.4. Maximal Length Padding ('The Full Monty') | 4.2. Maximal Length Padding ('The Full Monty') | |||
| In Maximal Length Padding the sender pads every message to the | In Maximal Length Padding the sender pads every message to the | |||
| maximum size as allowed by protocol negotiations. | maximum size as allowed by protocol negotiations. | |||
| Advantages: Maximal Length Padding, when combined with encrypted | Advantages: Maximal Length Padding, when combined with encrypted | |||
| transport, provides the highest possible level of message size | transport, provides the highest possible level of message size | |||
| confidentiality. | confidentiality. | |||
| Disadvantages: Maximal Length Padding is wasteful, and requires | Disadvantages: Maximal Length Padding is wasteful, and requires | |||
| resources on the client, all intervening network and equipment, and | resources on the client, all intervening network and equipment, and | |||
| the server. | the server. | |||
| Maximal Length Padding is NOT RECOMMENDED. | Maximal Length Padding is NOT RECOMMENDED. | |||
| 4.5. Random Length Padding | 4.3. Random Length Padding | |||
| When using Random Length Padding, a sender pads each message with a | When using Random Length Padding, a sender pads each message with a | |||
| random amount of padding. Due to the size of the EDNS(0) Padding | random amount of padding. Due to the size of the EDNS(0) Padding | |||
| Option itself, each message size is hence increased by at least 4 | Option itself, each message size is hence increased by at least 4 | |||
| octets. The upper limit for pading is the maximum message size. | octets. The upper limit for pading is the maximum message size. | |||
| However, a client or server may choose to impose a lower maximum | However, a client or server may choose to impose a lower maximum | |||
| padding length. | padding length. | |||
| Options: Maximum and minimum padding length. | Options: Maximum and minimum padding length. | |||
| Advantages: Theoretically, this policy should create a natural | Advantages: Theoretically, this policy should create a natural | |||
| "distribution" of message sizes. | "distribution" of message sizes. | |||
| Disadvantage: This policy requires a good source of (pseudo) which | Disadvantage: This policy requires a good source of (pseudo) which | |||
| can keep up with the required message rates. Especially on busy | can keep up with the required message rates. Especially on busy | |||
| servers, this may be a significant hindrance. | servers, this may be a hindrance. | |||
| TODO: Recommendation - this is (at first glance) the best policy, but | According to the limited empirical data available, Random Length | |||
| requires significant effort | Padding performs slightly worse than Block Length Padding. | |||
| 4.6. Random Block Length Padding | 4.4. Random Block Length Padding | |||
| This policy combines Block Length Padding with a random component. | This policy combines Block Length Padding with a random component. | |||
| Specifically, a sender randomly chooses between a few block length | Specifically, a sender randomly chooses between a few block length | |||
| values and then applies Block Length Padding based on the chosen | values and then applies Block Length Padding based on the chosen | |||
| block length. The random selection of block length might even be | block length. The random selection of block length might even be | |||
| reasonably based on a "weak" source of randomness, such as the | reasonably based on a "weak" source of randomness, such as the | |||
| transction ID of the message. | transction ID of the message. | |||
| Options: Number of and the values for the set of Block Lengths, | Options: Number of and the values for the set of Block Lengths, | |||
| source of "randomness" | source of "randomness" | |||
| skipping to change at page 6, line 34 ¶ | skipping to change at page 5, line 43 ¶ | |||
| Disadvantage: Requires more implementation effort compared to simple | Disadvantage: Requires more implementation effort compared to simple | |||
| Block Length Padding | Block Length Padding | |||
| Random Block Length Padding (as other combinations of padding | Random Block Length Padding (as other combinations of padding | |||
| strategies) requires further empirical study. | strategies) requires further empirical study. | |||
| 5. Recommended Strategy | 5. Recommended Strategy | |||
| Based on empirical research performed by Daniel K. Gillmor | Based on empirical research performed by Daniel K. Gillmor | |||
| [dkg-padding-ndss], EDNS(0) Padding SHOULD be performed as follows: | [dkg-padding-ndss], EDNS Padding SHOULD be performed as follows: | |||
| (1) Clients SHOULD pad queries to the closest multiple of 128 | (1) Clients SHOULD pad queries to the closest multiple of 128 | |||
| octets. | octets. | |||
| (2) If a Server receives a query that includes the EDNS(0) Padding | (2) If a Server receives a query that includes the EDNS(0) Padding | |||
| Option, it MUST pad the corresponding response (See Section 4 of | Option, it MUST pad the corresponding response (See Section 4 of | |||
| [RFC7830]) and SHOULD pad the response to a multiple of 468 | RFC7830) and SHOULD pad the corresponding response to a multiple | |||
| octects. | of 468 octects. | |||
| Note that the recommendation above does apply only if DNS transport | ||||
| is encrypted (See Section 6 of RFC 7830). | ||||
| The empirical research cited above performed a simulation of padding, | The empirical research cited above performed a simulation of padding, | |||
| based on real-world DNS traffic captured on busy recursive resolvers | based on real-world DNS traffic captured on busy recursive resolvers | |||
| of a research network. The evaluation of the performance of | of a research network. The evaluation of the performance of | |||
| individual padding policies was based on a "cost to attacker" and | individual padding policies was based on a "cost to attacker" and | |||
| "cost to defender" function, where the "cost to attacker" was defined | "cost to defender" function, where the "cost to attacker" was defined | |||
| as the percentage of query/response pairs falling into the same size | as the percentage of query/response pairs falling into the same size | |||
| bucket, and "cost to defender" as the size factor between padded and | bucket, and "cost to defender" as the size factor between padded and | |||
| unpadded messages. Padding with a block size of 128 bytes on the | unpadded messages. Padding with a block size of 128 bytes on the | |||
| query side, and 468 bytes on the response side was considered the | query side, and 468 bytes on the response side was considered the | |||
| skipping to change at page 7, line 28 ¶ | skipping to change at page 6, line 41 ¶ | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document has no considerations for IANA. | This document has no considerations for IANA. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| The choice of the right padding policy (and the right parameters for | The choice of the right padding policy (and the right parameters for | |||
| the chosen policy) has a significant impact on the resilience of | the chosen policy) has a significant impact on the resilience of | |||
| encrypted DNS against size-based correlation attacks. Therefore, any | encrypted DNS against size-based correlation attacks. Therefore, any | |||
| implementor of EDNS(0) Padding must carefully consider the chosen | implementor of EDNS(0) Padding must carefully consider which policies | |||
| policy and its parameters. | to implement, the default policy chosen, which parameters to make | |||
| configurable, and the default parameter values. | ||||
| No matter how carefully a client selects their Padding policy, this | No matter how carefully a client selects their Padding policy, this | |||
| effort can be jeopardized if the server chooses to apply an | effort can be jeopardized if the server chooses to apply an | |||
| inffective Padding policy to the corresponding response packets. | inffective Padding policy to the corresponding response packets. | |||
| Therefore, a client applying Padding may want to choose a DNS server | Therefore, a client applying Padding may want to choose a DNS server | |||
| which does apply at least an equally effective Padding policy on | which does apply at least an equally effective Padding policy on | |||
| responses. | responses. | |||
| Note that even with encryption and padding, it might be trivial to | Note that even with encryption and padding, it might be trivial to | |||
| identify that the observed traffic is DNS. Also, padding does not | identify that the observed traffic is DNS. Also, padding does not | |||
| prevent information leak via other side channels (particularly timing | prevent information leak via other side channels (particularly timing | |||
| information). | information and number of query/response pairs). Counter-measures | |||
| against such other side channels could include injecting artificial | ||||
| "cover traffic" into the stream of DNS messages, or delaying DNS | ||||
| responses by a certain amount of jitter. Such strategies are out of | ||||
| scope of this document. Additionally, there is neither enough | ||||
| theoretic analysis nor experimental data available to recommend any | ||||
| such countermeasures. | ||||
| 9. Changes | 9. Changes | |||
| [Note to RFC Editors: This whole section is to be removed before | [Note to RFC Editors: This whole section is to be removed before | |||
| publication] | publication] | |||
| 9.1. draft-ietf-dprive-padding-policy-03 | 9.1. draft-ietf-dprive-padding-policy-04 | |||
| Changes based on WGLC: Changed implementor consideration text in | ||||
| Security Con section (Sara), moved "No Padding" and "Fixed Length | ||||
| Padding" to appendix (Stephane, Paul), Changed TODO in Random Padding | ||||
| to info from empirical study (Stephen), Added note to pad only if | ||||
| transport encrypted (Stephen), added intro text referencing to | ||||
| DNSoTLS and DNSoDTLS (Stephane), added text about timing/jitter to | ||||
| security considerations. | ||||
| 9.2. draft-ietf-dprive-padding-policy-03 | ||||
| Editorial changes in various spots. Added text about excluding TCP | Editorial changes in various spots. Added text about excluding TCP | |||
| length field, more security considerations, addressing Sara's other | length field, more security considerations, addressing Sara's other | |||
| feedback to -02. | feedback to -02. | |||
| 9.2. draft-ietf-dprive-padding-policy-02 | 9.3. draft-ietf-dprive-padding-policy-02 | |||
| Changed Document Status to Experimental, added "maximum length" | Changed Document Status to Experimental, added "maximum length" | |||
| padding policy, reworded "block length" policy, some editorial | padding policy, reworded "block length" policy, some editorial | |||
| changes. | changes. | |||
| 9.3. draft-ietf-dprive-padding-policy-01 | 9.4. draft-ietf-dprive-padding-policy-01 | |||
| Some (mostly editorial) changes to text. Added "Recommendation" | Some (mostly editorial) changes to text. Added "Recommendation" | |||
| section based on dkg's research. | section based on dkg's research. | |||
| 9.4. draft-ietf-dprive-padding-policy-00 | 9.5. draft-ietf-dprive-padding-policy-00 | |||
| Initial (mostly unmodified) WG version. Changed "Profile" to | Initial (mostly unmodified) WG version. Changed "Profile" to | |||
| "Policy" to avoid confusion with the (D)TLS profiles document. | "Policy" to avoid confusion with the (D)TLS profiles document. | |||
| 9.5. draft-mayrhofer-dprive-padding-profiles-00 | 9.6. draft-mayrhofer-dprive-padding-profiles-00 | |||
| Initial version | Initial version | |||
| 10. Normative References | 10. References | |||
| 10.1. Normative References | ||||
| [dkg-padding-ndss] | [dkg-padding-ndss] | |||
| Gillmor, D., "Empirical DNS Padding Policy", March 2017, | Gillmor, D., "Empirical DNS Padding Policy", March 2017, | |||
| <https://dns.cmrg.net/ | <https://dns.cmrg.net/ | |||
| ndss2017-dprive-empirical-DNS-traffic-size.pdf>. | ndss2017-dprive-empirical-DNS-traffic-size.pdf>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC7830] Mayrhofer, A., "The EDNS(0) Padding Option", RFC 7830, | [RFC7830] Mayrhofer, A., "The EDNS(0) Padding Option", RFC 7830, | |||
| DOI 10.17487/RFC7830, May 2016, | DOI 10.17487/RFC7830, May 2016, | |||
| <https://www.rfc-editor.org/info/rfc7830>. | <https://www.rfc-editor.org/info/rfc7830>. | |||
| 10.2. Informative References | ||||
| [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., | ||||
| and P. Hoffman, "Specification for DNS over Transport | ||||
| Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May | ||||
| 2016, <https://www.rfc-editor.org/info/rfc7858>. | ||||
| [RFC8094] Reddy, T., Wing, D., and P. Patil, "DNS over Datagram | ||||
| Transport Layer Security (DTLS)", RFC 8094, | ||||
| DOI 10.17487/RFC8094, February 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8094>. | ||||
| Appendix A. Non-sensible Padding Policies | ||||
| A.1. No Padding | ||||
| In the "No Padding" policy, the EDNS0 Padding option is not used, and | ||||
| the size of the final (actually, "non-padded") message obviously | ||||
| exactly matches the size of the unpadded message. Even though this | ||||
| "non-policy" seems redundant in this list, its properties must be | ||||
| considered for cases where just one of the parties (client or server) | ||||
| applies padding. | ||||
| Also, this "policy" is required when the remaining message size of | ||||
| the unpadded message does not allow for the Padding option to be | ||||
| included (less than 4 octets left). | ||||
| Advantages: This "policy" requires no additional resources on client, | ||||
| server and network side. | ||||
| Disadvantages: The original size of the message remains unchanged, | ||||
| hence this approach provides no additional confidentiality. | ||||
| "No Padding" MUST NOT be used unless message size disallows the use | ||||
| of Padding. | ||||
| A.2. Fixed Length Padding | ||||
| In fixed length padding, a sender chooses to pad each message with a | ||||
| padding of constant length. | ||||
| Options: Actual length of padding | ||||
| Advantages: Since the padding is constant in length, this policy is | ||||
| very easy to implement, and at least ensures that the message length | ||||
| diverges from the length of the original packet (even only by a fixed | ||||
| value) | ||||
| Disadvantage: Obviously, the amount of padding easily discoverable | ||||
| from a single unencrypted message, or by observing message patterns. | ||||
| When a public DNS server applies this policy, the length of the | ||||
| padding hence must be assumed to be public knowledge. Therefore, | ||||
| this policy is (almost) as useless as the "No Padding" option | ||||
| described above. | ||||
| "Fixed Length Padding" MUST NOT be used except for experimental | ||||
| applications. | ||||
| Author's Address | Author's Address | |||
| Alexander Mayrhofer | Alexander Mayrhofer | |||
| nic.at GmbH | nic.at GmbH | |||
| Karlsplatz 1/2/9 | Karlsplatz 1/2/9 | |||
| Vienna 1010 | Vienna 1010 | |||
| Austria | Austria | |||
| Email: alex.mayrhofer.ietf@gmail.com | Email: alex.mayrhofer.ietf@gmail.com | |||
| URI: http://edns0-padding.org/ | ||||
| End of changes. 28 change blocks. | ||||
| 88 lines changed or deleted | 135 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||