Distributed Node Consensus Protocol
draft-ietf-homenet-dncp-01
The information below is for an old version of the document.
Document | Type |
This is an older version of an Internet-Draft that was ultimately published as RFC 7787.
|
|
---|---|---|---|
Authors | Markus Stenberg , Steven Barth | ||
Last updated | 2015-03-05 | ||
RFC stream | Internet Engineering Task Force (IETF) | ||
Formats | |||
Reviews | |||
Additional resources | Mailing list discussion | ||
Stream | WG state | WG Document | |
Document shepherd | (None) | ||
IESG | IESG state | Became RFC 7787 (Proposed Standard) | |
Consensus boilerplate | Unknown | ||
Telechat date | (None) | ||
Responsible AD | (None) | ||
Send notices to | (None) |
draft-ietf-homenet-dncp-01
Internet Engineering Task Force Gwerder Internet-Draft FHNW Intended status: Experimental September 9, 2019 Expires: March 12, 2020 MessageVortex Protocol draft-gwerder-messagevortexmain-03 Abstract The MessageVortex (referred to as Vortex) protocol achieves different degrees of anonymity, including sender, receiver, and third-party anonymity, by specifying messages embedded within existing transfer protocols, such as SMTP or XMPP, sent via peer nodes to one or more recipients. The protocol outperforms others by decoupling the transport from the final transmitter and receiver. No trust is placed into any infrastructure except for that of the sending and receiving parties of the message. The creator of the routing block has full control over the message flow. Routing nodes gain no non-obvious knowledge about the messages even when collaborating. While third-party anonymity is always achieved, the protocol also allows for either sender or receiver anonymity. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on March 12, 2020. Copyright Notice Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved. Gwerder Expires March 12, 2020 [Page 1] Internet-Draft MessageVortex Protocol September 2019 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 . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 1.2. Protocol Specification . . . . . . . . . . . . . . . . . 5 1.3. Number Specification . . . . . . . . . . . . . . . . . . 5 2. Entities Overview . . . . . . . . . . . . . . . . . . . . . . 5 2.1. Node . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1. Blocks . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2. NodeSpec . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2.1. NodeSpec for SMTP nodes . . . . . . . . . . . . . 6 2.1.2.2. NodeSpec for XMPP nodes . . . . . . . . . . . . . 6 2.2. Peer Partners . . . . . . . . . . . . . . . . . . . . . . 7 2.3. Encryption keys . . . . . . . . . . . . . . . . . . . . . 7 2.3.1. Identity Keys . . . . . . . . . . . . . . . . . . . . 7 2.3.2. Peer Key . . . . . . . . . . . . . . . . . . . . . . 7 2.3.3. Sender Key . . . . . . . . . . . . . . . . . . . . . 7 2.4. Vortex Message . . . . . . . . . . . . . . . . . . . . . 8 2.5. Message . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6. Key and MAC specifications and usage . . . . . . . . . . 9 2.6.1. Asymmetric Keys . . . . . . . . . . . . . . . . . . . 9 2.6.2. Symmetric Keys . . . . . . . . . . . . . . . . . . . 10 2.7. Transport Address . . . . . . . . . . . . . . . . . . . . 10 2.8. Identity . . . . . . . . . . . . . . . . . . . . . . . . 10 2.8.1. Peer Identity . . . . . . . . . . . . . . . . . . . . 10 2.8.2. Ephemeral Identity . . . . . . . . . . . . . . . . . 10 2.8.3. Official Identity . . . . . . . . . . . . . . . . . . 11 2.9. Workspace . . . . . . . . . . . . . . . . . . . . . . . . 11 2.10. Multi-use Reply Blocks . . . . . . . . . . . . . . . . . 11 3. Layer Overview . . . . . . . . . . . . . . . . . . . . . . . 11 3.1. Transport Layer . . . . . . . . . . . . . . . . . . . . . 12 3.2. Blending Layer . . . . . . . . . . . . . . . . . . . . . 12 3.3. Routing Layer . . . . . . . . . . . . . . . . . . . . . . 12 3.4. Accounting Layer . . . . . . . . . . . . . . . . . . . . 13 4. Vortex Message . . . . . . . . . . . . . . . . . . . . . . . 13 4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2. Message Prefix Block (MPREFIX) . . . . . . . . . . . . . 13 4.3. Inner Message Block . . . . . . . . . . . . . . . . . . . 14 Gwerder Expires March 12, 2020 [Page 2] Internet-Draft MessageVortex Protocol September 2019 4.3.1. Control Prefix Block . . . . . . . . . . . . . . . . 14 4.3.2. Control Blocks . . . . . . . . . . . . . . . . . . . 15 4.3.2.1. Header Block . . . . . . . . . . . . . . . . . . 15 4.3.2.2. Routing Block . . . . . . . . . . . . . . . . . . 15 4.3.3. Payload Block . . . . . . . . . . . . . . . . . . . . 16 5. General notes . . . . . . . . . . . . . . . . . . . . . . . . 16 5.1. Supported Symmetric Ciphers . . . . . . . . . . . . . . . 16 5.2. Supported Asymmetric Ciphers . . . . . . . . . . . . . . 16 5.3. Supported MACs . . . . . . . . . . . . . . . . . . . . . 16 5.4. Supported Paddings . . . . . . . . . . . . . . . . . . . 17 5.5. Supported Modes . . . . . . . . . . . . . . . . . . . . . 17 6. Blending . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.1. Blending in Attachments . . . . . . . . . . . . . . . . . 18 6.1.1. PLAIN embedding into attachments . . . . . . . . . . 18 6.1.2. F5 embedding into attachments . . . . . . . . . . . . 19 6.2. Blending into an SMTP layer . . . . . . . . . . . . . . . 19 6.3. Blending into an XMPP layer . . . . . . . . . . . . . . . 19 7. Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 7.1. Vortex Message Processing . . . . . . . . . . . . . . . . 20 7.1.1. Processing of incoming Vortex Messages . . . . . . . 20 7.1.2. Processing of Routing Blocks in the Workspace . . . . 22 7.1.3. Processing of Outgoing Vortex Messages . . . . . . . 23 7.2. Header Requests . . . . . . . . . . . . . . . . . . . . . 23 7.2.1. Request New Ephemeral Identity . . . . . . . . . . . 24 7.2.2. Request Message Quota . . . . . . . . . . . . . . . . 24 7.2.3. Request Increase of Message Quota . . . . . . . . . . 24 7.2.4. Request Transfer Quota . . . . . . . . . . . . . . . 25 7.2.5. Query Quota . . . . . . . . . . . . . . . . . . . . . 25 7.2.6. Request Capabilities . . . . . . . . . . . . . . . . 25 7.2.7. Request Nodes . . . . . . . . . . . . . . . . . . . . 25 7.2.8. Request Identity Replace . . . . . . . . . . . . . . 26 7.3. Special Blocks . . . . . . . . . . . . . . . . . . . . . 26 7.3.1. Error Block . . . . . . . . . . . . . . . . . . . . . 26 7.3.2. Requirement Block . . . . . . . . . . . . . . . . . . 26 7.3.2.1. Puzzle Requirement . . . . . . . . . . . . . . . 27 7.3.2.2. Payment Requirement . . . . . . . . . . . . . . . 27 7.4. Routing Operations . . . . . . . . . . . . . . . . . . . 27 7.4.1. Mapping Operation . . . . . . . . . . . . . . . . . . 28 7.4.2. Split and Merge Operations . . . . . . . . . . . . . 28 7.4.3. Encrypt and Decrypt Operations . . . . . . . . . . . 28 7.4.4. Add and Remove Redundancy Operations . . . . . . . . 28 7.4.4.1. Padding Operation . . . . . . . . . . . . . . . . 29 7.4.4.2. Apply Matrix . . . . . . . . . . . . . . . . . . 29 7.4.4.3. Encrypt Target Block . . . . . . . . . . . . . . 30 7.5. Processing of Vortex Messages . . . . . . . . . . . . . . 30 8. Accounting . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.1. Accounting Operations . . . . . . . . . . . . . . . . . . 30 8.1.1. Time-Based Garbage Collection . . . . . . . . . . . . 31 Gwerder Expires March 12, 2020 [Page 3] Internet-Draft MessageVortex Protocol September 2019 12. Security Considerations DNCP profiles may use multicast to indicate DNCP state changes and for keep-alive purposes. However, no actual data TLVs will be sent across that channel. Therefore an attacker may only learn hash values of the state within DNCP and may be able to trigger unicast synchronization attempts between nodes on a local link this way. A DNCP node should therefore rate-limit its reactions to multicast packets. When using DNCP to bootstrap a network, PKI based solutions may have issues when validating certificates due to potentially unavailable accurate time, or due to inability to use the network to either check Certifcate Revocation Lists or perform on-line validation. The Certificate-based trust consensus mechanism defined in this document allows for a consenting revocation, however in case of a compromised device the trust cache may be poisoned before the actual revocation happens allowing the distrusted device to rejoin the network using a different identity. Stopping such an attack might require physical intervention and flushing of the trust caches. 13. IANA Considerations IANA should set up a registry for DNCP TLV types, with the following initial contents: 0: Reserved (should not happen on wire) 1: Node connection 2: Request network state 3: Request node data 4-9: Reserved for DNCP profile use 10: Network state 11: Node state 12: Node data 13: Neighbor 14: Keep-alive interval 15: Custom Stenberg & Barth Expires September 6, 2015 [Page 24] Internet-Draft Distributed Node Consensus Protocol March 2015 16: Trust-Verdict 17-31: Reserved for future DNCP versions. 192-255: Reserved for per-implementation experimentation. The nodes using TLV types in this range SHOULD use e.g. Custom TLV to identify each other and therefore eliminate potential conflict caused by potential different use of same TLV numbers. For the rest of the values (32-191, 256-65535), policy of 'standards action' should be used. 14. References 14.1. Normative references [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, "The Trickle Algorithm", RFC 6206, March 2011. [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, January 2012. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008. 14.2. Informative references [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. Stevens, "Basic Socket Interface Extensions for IPv6", RFC 3493, February 2003. [RFC6234] Eastlake, D. and T. Hansen, "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, May 2011. Appendix A. Some Outstanding Issues Should better forms of combined messages be defined? e.g. allow sending both request-network-state, and currently set of known local state at same time in one message. Should some sort of fragmentation scheme be defined for the data? Currently, DNCP uses Merkle tree of depth 2 (node data -> node hash -> network hash). However, it essentially treats all TLVs published by a single node as a single chunk on the protocol level. Is that a Stenberg & Barth Expires September 6, 2015 [Page 25] Internet-Draft Distributed Node Consensus Protocol March 2015 scalability problem? Adding one more level to the tree might address this. Appendix B. Some Obvious Questions and Answers Q: Should there be nested container syntax that is actually self- describing? (i.e. type flag that indicates container, no body except sub-TLVs?) A: Not for now, but perhaps valid design.. TBD. Q: Add third case for multicast - 'medium' network state, which is 'long' one, but partial? A: Drops typical convergence on large networks 5->3 packets, at expense of some specification/implementation complexity. However, as anything else than short network state leaks information via multicast, it does not seem worth it as secure protocols probably want to prevent multicast sending of anything else than short network state in any case. Additionally, the long network state being complete set of nodes actually facilitates light-weight nodes that do not want to do graph-based pruning. So all in all, perhaps not worth it. Q: 32-bit connection id? A: Here, it would save 32 bits per neighbor if it was 16 bits (and less is not realistic). However, TLVs defined elsewhere would not seem to even gain that much on average. 32 bits is also used for ifindex in various operating systems, making for simpler implementation. Q: Why have topology information at all? A: It is an alternative to the more traditional seq#/TTL-based flooding schemes. In steady state, there is no need to e.g. re- publish every now and then. Appendix C. Changelog draft-ietf-homenet-dncp-01: o Fixed keep-alive semantics to consider unicast requests also updates of most recently consistent, and added proactive unicast request to ensure even inconsistent keep-alive messages eventually triggering consistency timestamp update. Stenberg & Barth Expires September 6, 2015 [Page 26] Internet-Draft Distributed Node Consensus Protocol March 2015 o Facilitated (simple) read-only clients by making Node Connection TLV optional if just using DNCP for read-only purposes. o Added text describing how to deal with "dense" networks, but left actual numbers and mechanics up to DNCP profiles and (local) configurations. draft-ietf-homenet-dncp-00: Split from pre-version of draft-ietf- homenet-hncp-03 generic parts. Changes that affect implementations: o TLVs were renumbered. o TLV length does not include header (=-4). This facilitates e.g. use of DHCPv6 option parsing libraries (same encoding), and reduces complexity (no need to handle error values of length less than 4). o Trickle is reset only when locally calculated network state hash is changes, not as remote different network state hash is seen. This prevents e.g. attacks by multicast with one multicast packet to force Trickle reset on every interface of every node on a link. o Instead of 'ping', use 'keep-alive' (optional) for dead peer detection. Different message used! Appendix D. Draft Source As usual, this draft is available at https://github.com/fingon/ietf- drafts/ in source format (with nice Makefile too). Feel free to send comments and/or pull requests if and when you have changes to it! Appendix E. Acknowledgements Thanks to Ole Troan, Pierre Pfister, Mark Baugher, Mark Townsley, Juliusz Chroboczek and Jiazi Yi for their contributions to the draft. Authors' Addresses Markus Stenberg Helsinki 00930 Finland Email: markus.stenberg@iki.fi Stenberg & Barth Expires September 6, 2015 [Page 27] Internet-Draft Distributed Node Consensus Protocol March 2015 Steven Barth Halle 06114 Germany Email: cyrus@openwrt.org Stenberg & Barth Expires September 6, 2015 [Page 28]