Skip to main content

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]