# Efficient Key Exchange Using Identity-Based Encryption in Multipath TCP Environment
## 2 Background Study  
### Multipath TCP (MPTCP) and Its Security Threats  
MPTCP [17; 26] is the most promising transport layer protocol in the era of Industry 4.0, which offers higher resiliency and efficient congestion control by allowing for data transmission through multiple TCP subflows by selecting the least congested subflows and diverting the traffic to another flow in case of subflow failure or high congestion on a particular subflow. Improvement in bandwidth, TCP friendliness, balanced congestion control, and fault tolerance are the key characteristics of MPTCP, which make it the best option to offer traffic aggregation at the TCP level [27]. As shown in Figure 2, the MPTCP is built on top of the TCP, in which the individual subflow of MPTCP can be considered as a separate TCP connection [27; 28; 29]. Each subflow has its congestion window and round-triptime. To distribute the data among multiple subflows efficiently, various packet scheduler options are available, such as default, round-robin, redundant, etc. but none of them are yet standardized. Many congestion control schemes are available to improve the overall performance, such as the linked increases algorithm (LIA) [30], opportunistic linked increases congestion control algorithm (OLIA) [31], weighted Vegas (wVegas) [32], etc., but LIA is the standard congestion control scheme of MPTCP [13]. MPTCP uses the TCP header option \"Kind\" to include the MPTCP-related data to make it compatible with TCP-aware middle-boxes and applications [17]. MPTCP uses various options in the TCP header such as MP_CAPABLE, MP_JOIN, MP_PRIO, ADD_ADDR, REMOVE_ADDR, etc., to perform various operations related to subflow [27; 33]. MPTCP uses two levels of data sequences: subflow level and connection level. Subflow-level sequence numbers are similar to traditional TCP sequence numbers, which depict the number of packets on particular subflows while connection-level sequence numbers depict the sequence number of packets distributed among multiple subflows. MP_CAPABLE [26] is used during the initial handshake process for connection establishment to indicate that the host supports the MPTCP connection. Similar to TCP, MPTCP hosts also exchange SYN, SYN+ACK, and ACK packets for initial connection establishment by exchanging the MP_CAPABLE option and flags along with security keys, which will be used in the future for authentication of end users to initiate subflows over the same  
Figure 2: MPTCP vs. TCP network stack. connection. During the initial three-way handshake, if one of the hosts does not support MPTCP, the connection is returned to the TCP. The MP_JOIN [26] option is available to add another subflow with the pre-established connection. This process follows the four-way handshake for adding the subflow by exchanging SYN, SYN+ACK, ACK, and ACK. During the SYN+ACK and first ACK, the HMAC of the keys exchanged during the initial handshake will be used for authentication. ADD_ADDR [26] is another option available with MPTCP use, which one can use to communicate with other hosts regarding the availability of a new interface. The host can also communicate the unavailability of any of the network interfaces during the lifecycle of the connection by using REMOVE_ADDR. MPTCP Linux kernel Version (v1) [17] supports the same options, but packet sequences are changed in some cases. In MPTCP Version (v1), the ADD_ADDR option carries a truncated HMAC for authentication. Figures 3-6 show the packet exchange scenario for connection establishment [26], adding a new subflow [26] and advertisement of new IP address [17,26]. These options of MPTCP make it vulnerable to various threats [34] by allowing an attacker to gain access to the MPTCP session. The session can be hijacked either by forging the keys communicated during the three-way handshake or by adding the forged address using ADD_ADDR packets or by using MP_JOIN packets on the communicating host.