Internet DRAFT - draft-hewu-mptcp-trust

draft-hewu-mptcp-trust







Internet Engineering Task Force                                    H. Li
Internet-Draft                                                     Q. Wu
Intended status: Informational                                     B. Wu
Expires: May 1, 2020                                            Q. Zhang
                                                                 J. Zhou
                                                                  J. Liu
                                                     Tsinghua University
                                                        October 29, 2019


                Trusted Multipath-TCP (MPTCP) extension
                       draft-hewu-mptcp-trust-00

Abstract

   Multipath TCP (MPTCP) adds the capability of using multiple paths to
   a regular TCP session and is being deployed extensively.  Source
   Address Validation (SAV) technologies are proposed to prevent network
   nodes from spoofing others' IP addresses and thus improve the
   accountability of networks.  This document proposes a trusted MPTCP
   extension based on SAV, which enables MPTCP to work with SAV and thus
   improve the accountability of MPTCP connections.  This extension
   doesn't intend to replace the security solutions to resolving IP
   forged attacks, like Hash-based Message Authentication Code (HMAC),
   but to improve the accountability of them and the whole connection.

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 May 1, 2020.

Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.




Li, et al.                 Expires May 1, 2020                  [Page 1]

Internet-Draft           Trusted MPTCP extension            October 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  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Operation Overview  . . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Trusted Address notification  . . . . . . . . . . . . . .   3
     3.2.  Trusted Connection notification . . . . . . . . . . . . .   4
     3.3.  Control packets processing  . . . . . . . . . . . . . . .   5
   4.  ADD_ADDR extension  . . . . . . . . . . . . . . . . . . . . .   5
   5.  ADDR_TRUST option . . . . . . . . . . . . . . . . . . . . . .   6
   6.  Trusted Path Binding Table (TPBT) . . . . . . . . . . . . . .   6
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   7
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   10. Informative References  . . . . . . . . . . . . . . . . . . .   7
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   8

1.  Introduction

   Multipath TCP (MPTCP) [I-D.ietf-mptcp-rfc6824bis][RFC6824] adds the
   capability of using multiple paths to a regular TCP session and is
   being deployed extensively.  The main threats of MPTCP are described
   in [RFC6181], [RFC7430] and they are mainly caused by forged control
   packets sent by malicious hosts with forged IP addresses.  Source
   Address Validation (SAV) methods like Source Address Validation
   Architecture (SAVA) [RFC5210] and Source Address Validation
   Improvement (SAVI) [RFC7039] are developed to prevent nodes from
   spoofing others' IP addresses with finer-grained ingress filtering.

   This document proposes a SAV based MPTCP enhancement, which enables
   MPTCP to work with SAV and thus improve the accountability of MPTCP
   connections.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED","MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].



Li, et al.                 Expires May 1, 2020                  [Page 2]

Internet-Draft           Trusted MPTCP extension            October 2019


   This document uses the MPTCP terminology introduced in
   [I-D.ietf-mptcp-rfc6824bis] [RFC6824].

   SAV: Source Address Validation.

   SAVA: Source Address Validation Architecture, refer to [RFC5210].

   SAVI: Source Address Validation Improvement, refer to [RFC7039].

   Trusted Connection: A TCP connection which SAV is deployed on both
   hosts.

   HMAC: Hash-based Message Authentication Code, refer to [RFC2104].

   Trusted Address: IP address protected by SAV which means it can't be
   forged.

3.  Operation Overview

   This section specifies the behavior of source address validation
   based MPTCP enhancement.

   Note that this enhancement doesn't intend to replace the security
   solutions to resolving IP forged attacks, like Hash-based Message
   Authentication Code (HMAC), but to improve the accountability of them
   and the whole connection.  However, security-oriented operations
   which protect control packets from being forged like HMAC MAY be
   omitted if there is a trusted connection between the both hosts, for
   the accountability of the connection is guaranteed by SAV.  Other
   packets and their processing which are not mentioned in this document
   stay the same as related description in
   [I-D.ietf-mptcp-rfc6824bis][RFC6824].

3.1.  Trusted Address notification

   A Trust Flag is set in ADD_ADDR option to indicate the IP address is
   trusted or not.  After Host B receives an ADD_ADDR option, it MUST
   add the binding entry to Trusted Path Binding Table (TPBT, see
   section 6) and send a packet to Host A to indicate it has
   successfully received ADD_ADDR option.











Li, et al.                 Expires May 1, 2020                  [Page 3]

Internet-Draft           Trusted MPTCP extension            October 2019


         Host A                                  Host B
         ------                                  ------
         ADD_ADDR              ->
         [Echo-flag=0,
          IP-A2,
          IP-A2's Address ID,
          Trust-flag,
          HMAC of IP-A2 and TRUST FLAG]

                               <-                ADD_ADDR
                                                 [Echo-flag=1,
                                                  IP-A2,
                                                  IP-A2's Address ID,
                                                  Trust-flag]

                                 Figure 1

   HMAC-A = HMAC(Key=(Key-A+Key-B), Msg=(IP-A2+TRUST Flag))

   Note that if the ADD_ADDR option is transmitted through a trusted
   connection, the HMAC-A MAY be omitted.  If the HMAC is transmitted
   and it's incorrect, the ADD_ADDR packet MUST be silently discarded.

3.2.  Trusted Connection notification

   When a MPTCP subflow or an initial MPTCP flow is established, the
   trust flag of this flow MAY not be known by both hosts.  Examples as
   follows:

   (1) There is no ADD_ADDR option sent by each other before the initial
   MPTCP flow is established.

   (2) Host B starts initializing a subflow after receiving the ADD_ADDR
   option of Host A without sending its own ADD_ADDR option, when the
   subflow is established, Host A does not know the trust flag about
   this subflow if the Host A's address of this subflow is trusted.

   An ADDR_TRUST option is proposed to notify hosts the trust flag.
   After a subflow is established, if the host does not know the trust
   flag of this subflow, it will add an entry (Trust=False) with peer
   address to the TPBT, and send an ADDR_TRUST option to the peer to ask
   for the trust flag of the peer's corresponding address.  Once a host
   receives a ADDR_TRUST (E=0) packet and the HMAC is correct, it adds
   an entry(Trust=True) to the TPBT according the packet if it has not
   ever received an ADD_ADDR packet from this address.  Also, the host
   checks the trust flag of the local address of the connection
   corresponding to the peer address: if the address is trusted, the
   host will send a ADDR_TRUST(E=1) packet with local address and HMAC



Li, et al.                 Expires May 1, 2020                  [Page 4]

Internet-Draft           Trusted MPTCP extension            October 2019


   of two address, otherwise it does nothing.  The host sent the
   ADDR_TRUST(E=0) packet will set the corresponding trust flag to True
   if it receives the ADDR_TRUST(E=1) packet.

   Host A                                  Host B
   ------                                  ------
   ADDR_TRUST             ->
   [Echo-flag=0,
    IP-A,
    IP-A's Address ID,
    HMAC of IP-A]

                         <-                ADDR_TRUST
                                           [Echo-flag=1,
                                            IP-B,
                                            IP-B's Address ID,
                                            HMAC of IP-A and IP-B]

                                 Figure 2

   HMAC-A = HMAC(Key=(Key-A+Key-B), Msg=(IP-A))

   HMAC-B = HMAC(Key=(Key-A+Key-B), Msg=(IP-A+IP-B))

   Note that if the ADDR_TRUST option is transmitted through a trusted
   connection, the HMAC-A and HMAC-B MAY be omitted.  If the HMAC is
   transmitted and it's incorrect, the ADDR_TRUST packet MUST be
   silently discarded.

3.3.  Control packets processing

   Before sending a control packet, the sender MUST check the TPBT: if
   there is a Trusted Connection whose source address and destination
   address are both trusted, it sends the control packet via the Trusted
   Connection and other security-oriented operations are OPTIONAL; if
   there is no Trusted Connection, the processing is the same as
   [I-D.ietf-mptcp-rfc6824bis][RFC6824].

4.  ADD_ADDR extension

   The ADD_ADDR option on packets includes 4 bits of flags, 2 of which
   are currently reserved and MUST be set to zero by the sender.  The
   third bit, labeled "T", indicates the IP address is trusted(T=1) or
   not(T=0).  The final bit, labeled "E", is used to Guarantee the
   reliability: a receiver receiving a fresh ADD_ADDR option (where
   E=0), will send the same option back to the sender, but not including
   the HMAC, and with E=1.




Li, et al.                 Expires May 1, 2020                  [Page 5]

Internet-Draft           Trusted MPTCP extension            October 2019


   The format of ADD_ADDR option is shown in Figure 3.

                          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
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |     Length    |Subtype|   |T|E|  Address ID   |
     +---------------+---------------+-------+-------+---------------+
     |          Address (IPv4 - 4 octets / IPv6 - 16 octets)         |
     +-------------------------------+-------------------------------+
     |   Port (2 octets, optional)   |                               |
     +-------------------------------+                               |
     |        Truncated HMAC (8 octets, if length > 10 octets)       |
     |                               +-------------------------------+
     |                               |
     +-------------------------------+

             Figure 3: Add Address (ADD_ADDR) Option with HMAC

5.  ADDR_TRUST option

   The ADDR_TRUST option on packets includes 4 bits of flags, 3 of which
   are currently reserved and MUST be set to zero by the sender.  The
   final bit, labeled "E", used to guarantee the reliability, a receiver
   receiving a fresh ADDR_TRUST option (where E=0), will send the same
   option back to the sender, but with HMAC of both Address, and with
   E=1.

   The format of ADDR_TRUST option is shown in Figure 4.

                          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
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |     Length    |Subtype|     |E|  Address ID   |
     +---------------+---------------+-------+-------+---------------+
     |          Address (IPv4 - 4 octets / IPv6 - 16 octets)         |
     +-------------------------------+-------------------------------+
     |        Truncated HMAC (8 octets, if length > 10 octets)       |
     |                                                               |
     +-------------------------------+-------------------------------+

           Figure 4: Address Trust (ADDR_TRUST) Option with HMAC

6.  Trusted Path Binding Table (TPBT)

   The Trusted Path Binding Table, which is implemented at the terminal,
   is used to contain the bindings between the available sockets of peer
   and their trust flags.  This table uses "SubFlow" as the primary key
   which contains a "Sip" meaning the source IP address of the subflow



Li, et al.                 Expires May 1, 2020                  [Page 6]

Internet-Draft           Trusted MPTCP extension            October 2019


   and a "Dip" for the destination IP address.  Each entry in TPBT
   contains a "SipTrust" field representing whether the "Sip" is trusted
   and a "DipTrust" field for "Dip"; a Lifetime field is used to save
   the state of the life cycle and when the life cycle expires, the
   corresponding entry will be deleted; in addition, an Other field that
   is used to store other information or further extensions in the
   future.

   The following table is an example of TPBT.

        +---------------+----------+----------+----------+-------+
        | SubFlow       | SipTrust | DipTrust | Lifetime | Other |
        +---------------+----------+----------+----------+-------+
        | Sf(Sip1,Dip1) | True     | True     | 65535    | /     |
        | Sf(Sip1,Dip2) | True     | False    | 10000    | /     |
        | Sf(Sip2,Dip1) | False    | True     | 10000    | /     |
        | Sf(Sip2,Dip2) | False    | False    | 0        | /     |
        +---------------+----------+----------+----------+-------+

                        Table 1: An Example of TPBT

7.  Acknowledgements

8.  IANA Considerations

   This memo includes no request to IANA.

9.  Security Considerations

   Some considerations on man-in-the-middle attacks may be raised for
   this extension.  SAV methods like SAVI and SAVA are proposed to
   improve network accountability and thus defend attacks including man-
   in-the-middle attacks.  This document is proposed to allow MPTCP work
   with SAV, so man-in-the-middle will not be a problem if SAV is
   deployed extensively.

10.  Informative References

   [I-D.ietf-mptcp-rfc6824bis]
              Ford, A., Raiciu, C., Handley, M., Bonaventure, O., and C.
              Paasch, "TCP Extensions for Multipath Operation with
              Multiple Addresses", June 2019,
              <https://datatracker.ietf.org/doc/html/draft-ietf-mptcp-
              rfc6824bis-18>.







Li, et al.                 Expires May 1, 2020                  [Page 7]

Internet-Draft           Trusted MPTCP extension            October 2019


   [RFC2104]  Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
              Hashing for Message Authentication", RFC 2104,
              DOI 10.17487/RFC2104, February 1997,
              <https://www.rfc-editor.org/info/rfc2104>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC5210]  Wu, J., Bi, J., Li, X., Ren, G., Xu, K., and M. Williams,
              "A Source Address Validation Architecture (SAVA) Testbed
              and Deployment Experience", RFC 5210,
              DOI 10.17487/RFC5210, June 2008,
              <https://www.rfc-editor.org/info/rfc5210>.

   [RFC6181]  Bagnulo, M., "Threat Analysis for TCP Extensions for
              Multipath Operation with Multiple Addresses", RFC 6181,
              DOI 10.17487/RFC6181, March 2011,
              <https://www.rfc-editor.org/info/rfc6181>.

   [RFC6824]  Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
              "TCP Extensions for Multipath Operation with Multiple
              Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013,
              <https://www.rfc-editor.org/info/rfc6824>.

   [RFC7039]  Wu, J., Bi, J., Bagnulo, M., Baker, F., and C. Vogt, Ed.,
              "Source Address Validation Improvement (SAVI) Framework",
              RFC 7039, DOI 10.17487/RFC7039, October 2013,
              <https://www.rfc-editor.org/info/rfc7039>.

   [RFC7430]  Bagnulo, M., Paasch, C., Gont, F., Bonaventure, O., and C.
              Raiciu, "Analysis of Residual Threats and Possible Fixes
              for Multipath TCP (MPTCP)", RFC 7430,
              DOI 10.17487/RFC7430, July 2015,
              <https://www.rfc-editor.org/info/rfc7430>.

Authors' Addresses

   Hewu Li
   Tsinghua University
   Institute for Network Sciences and Cyberspace, Tsinghua University
   Beijing  100084
   China

   Email: lihewu@cernet.edu.cn





Li, et al.                 Expires May 1, 2020                  [Page 8]

Internet-Draft           Trusted MPTCP extension            October 2019


   Qian Wu
   Tsinghua University
   Institute for Network Sciences and Cyberspace, Tsinghua University
   Beijing  100084
   China

   Email: wuqian@cernet.edu.cn


   Boyang Wu
   Tsinghua University
   Institute for Network Sciences and Cyberspace, Tsinghua University
   Beijing  100084
   China

   Email: wuboyangyawn@hotmail.com


   Qi Zhang
   Tsinghua University
   Institute for Network Sciences and Cyberspace, Tsinghua University
   Beijing  100084
   China

   Email: qi-zhang19@mails.tsinghua.edu.cn


   Jiang Zhou
   Tsinghua University
   Institute for Network Sciences and Cyberspace, Tsinghua University
   Beijing  100084
   China

   Email: zhou-j17@mails.tsinghua.edu.cn


   Jun Liu
   Tsinghua University
   Institute for Network Sciences and Cyberspace, Tsinghua University
   Beijing  100084
   China

   Email: juneliu@tsinghua.edu.cn








Li, et al.                 Expires May 1, 2020                  [Page 9]