# Efficient Key Exchange Using Identity-Based Encryption in Multipath TCP Environment
## 4 Proposed Work: Secure Key Exchange Model for MPTCP (SKEXMTCP) Using Identity-Based Encryption  
The current version of MPTCP suffers from security weaknesses such as ADD_ADDR vulnerability, SYN MP_JOIN vulnerability, eavesdropper in the initial handshake, etc., which lead to dangerous security attacks, such as man-in-the-middle attacks, DoS attacks, and session hijacking attack, which threaten the confidentiality, integrity, and availability of data over the connection. To prevent the communication over MPTCP from ADDR_ADDR attack and eavesdroppers in the initial handshake, the SKEXMTCP is proposed here. The SKEXMTCP uses the identity-based encryption scheme to exchange secret keys, which will be used to exchange the security parameters for MPTCP during the initial handshake. This will provide security against an eavesdropper in the initial handshake, which leads to the prevention of an ADD_ADDR attack as well. IBE uses a Private Key Generator (PKG), a third-party authority, which provides the private keys to the communicating hosts based on their identity (i.e., email id, IP address, etc.). Here, the IP address and port of the communicating host will be used as a public parameter to generate the private keys for the sender and receiver. The proposed solution contains two modules: (i) Private Key Generation (SKG_SKEXMTCP); (ii) use of key pairs to exchange session keys during the initial handshake (MPC_SKEXMTCP). In the Key Generation (SKG_SKEXMPTCP) module, considering that host [PERSON] and host [PERSON] are communicating with each other with IP addresses IP Alice and IP Bob using MPTCP, here, IP Alice and IPBob will be used as public parameters by PKG to generate private keys for [PERSON] and [PERSON]. These private keys will be used in the MPC_SKEXMTCP module to exchange the keys during the initial handshake by encrypting them using IBE. The communicating host will be authenticated by using the IP address and port combination digitally signed by the host at the PKG. Table 4 shows the terms used for the algorithm. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Term** & **Significance/ Meaning** & **Generation** \\ \hline \(\text{PU}_{\text{Alice}}\) & Public key of [PERSON] & IP address of the Alice will be used as a Public Key. \\ \(\text{PR}_{\text{Alice}\_\text{Master}}\) & Shared key used to generate the private key of [PERSON] & Generated by PKG and shared with [PERSON]. \\ \(\text{PR}_{\text{[PERSON]}}\) & Private Key of [PERSON] & It can be generated by using PR\({}_{\text{[PERSON]}\_\text{Master}}\) and \(\text{PU}_{\text{[PERSON]}}\). \\ \(\text{PU}_{\text{Bob}}\) & Public key of [PERSON] & IP address of the [PERSON] will be used as a Public Key. \\ \(\text{PR}_{\text{Bob}\_\text{master}}\) & Shared key used to generate the private key of [PERSON] & The key will be generated by PKG and shared with [PERSON]. \\ \(\text{PR}_{\text{Bob}}\) & Private Key of [PERSON] & It can be generated by using PR\({}_{\text{Bob}\_\text{Master}}\) and \(\text{PU}_{\text{Bob}}\). \\ \(\text{ID}_{\text{[PERSON]}}\) & ID used as a Public key of [PERSON] & IP\({}_{\text{[PERSON]}}\) + \(\text{Port}_{\text{[PERSON]}}\) Combination. \\ \(\text{ID}_{\text{[PERSON]}}\) & ID used as a Public key of [PERSON] & IP\({}_{\text{[PERSON]}}\) + \(\text{Port}_{\text{[PERSON]}}\) Combination. \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Terms used in SKEXMTCP. * Host [PERSON] sends request to PKG with IPAlice and PortAlice as a parameter by authenticating itself using a digitally signed IP address and port combination. * PKG calculates the share of [PERSON] PRAlice_master, and it will be sent back to [PERSON]. * [PERSON] can calculate the private key PRAlice from the PRAlice_master. PRAlice = Generate (PRAlice_master, IDAlice). The messages encrypted by PUAlice can be decrypted using PRAlice. **Step 2. Host B Key Generation**  
* Here, public key of [PERSON] PUBob = IDBob. It can be used by sender to encrypt the messages for [PERSON].