# An Efficient and Secure Certificateless Aggregate Signature Scheme for Vehicular Ad hoc Networks
## 4 Proposed Scheme's Construction
(P_{\mathit{usr}},L_{ \mathit{usr}})\), and send \(PPK_{\mathit{usr}}\) to users through an open channel. Private Key Generation (PKKG): Upon receiving \(PPK_{\mathit{usr}}\), any participating user \(U_{\mathit{sr}}\) can recover \((P_{\mathit{usr}},L_{\mathit{usr}})\) as \((P_{\mathit{usr}},L_{\mathit{usr}})=D_{\mathit{K_{\mathit{usr}}}}(PPK_{ \mathit{usr}})\) and set \((F_{\mathit{usr}},L_{\mathit{usr}})\) as his public key and \((G_{\mathit{usr}},P_{\mathit{usr}})\) as his private key. Signature Generation (SIGG): This section will be run by the OBU using the following steps:  
* It selects \(T_{\mathit{OBU}}\) from \(F^{\mathit{ield}}{}_{p}\) and computes \(W_{\mathit{OBU}}=T_{\mathit{OBU}}.D\);
* It computes \(H_{\mathit{3 usr}}=H_{03}(EID_{\mathit{usr}},F_{\mathit{usr}},L_{\mathit{usr }},W_{\mathit{OBU}})\);
* It computes \(S_{\mathit{OBU}}=(T_{\mathit{OBU}}+H_{\mathit{3 usr}}(G_{\mathit{usr}}+P_{ \mathit{usr}}))\) and sends \((S_{\mathit{OBU}},W_{\mathit{OBU}})\) to the RSU. Signature Verifications (SIGV): This section will be run by the RSU using the following steps:  
* Computes \(H_{\mathit{3 usr}}=H_{03}(EID_{\mathit{usr}},F_{\mathit{usr}},L_{\mathit{usr }},W_{\mathit{OBU}})\) and \(H_{\mathit{2 usr}}=H_{02}\Big{(}EID_{\mathit{usr}},F_{\mathit{usr}},Dot_{ pb}\Big{)}\);
* Verifies if \(S_{\mathit{OBU}}.D-W_{\mathit{OBU}}=H_{\mathit{3 usr}}\Big{(}F_{\mathit{usr }}+L_{\mathit{usr}}+H_{\mathit{2 usr}}Dot_{pb}\Big{)}\), if it is satisfied. Aggregate Signature Generation and Verifications: This part is the same as performed in [29]. Adding New Device: If a new device wants to add itself to the network in our proposed scheme, it will first perform the following procedures: it can first select \(G_{\mathit{new}}\) from \(F^{\mathit{ield}}{}_{p}\), compute \(K_{\mathit{new}}=G_{\mathit{new}}.Dot_{pb}\), calculate \(EID_{\mathit{new}}=E_{\mathit{K_{\mathit{new}}}}. (ID_{\mathit{new}})\), compute \(F_{\mathit{new}}=G_{\mathit{new}}.D\), and send \((EID_{\mathit{new}},F_{\mathit{new}})\) to DoT through the internet. Upon receiving \((EID_{\mathit{new}},F_{\mathit{new}})\), DoT can compute \(K_{\mathit{new}}=F_{\mathit{new}}.Dot_{p}\), recover new device identity as \(ID_{\mathit{new}}=D_{\mathit{K_{\mathit{new}}}}. (EID_{\mathit{new}})\), compute \(H_{\mathit{1 new}}=H_{01}(K_{\mathit{new}})\), \(H_{\mathit{2 new}}=H_{02}\Big{(}EID_{\mathit{new}},F_{\mathit{new}},Dot_{pb} \Big{)}\), select \(I_{\mathit{new}}\) from \(F^{\mathit{ield}}{}_{p}\), compute \(P_{\mathit{new}}=J_{\mathit{new}}+Dot_{p}.H_{\mathit{2 new}}\), calculate \(L_{\mathit{new}}=J_{\mathit{new}}.D\), encrypt \(PPK_{\mathit{new}}=E_{\mathit{K_{\mathit{new}}}}(P_{\mathit{new}},L_{\mathit{ new}})\), and send \(PPK_{\mathit{new}}\) to new devices through an open channel. A new device then recovers \((P_{\mathit{new}},L_{\mathit{new}})\) as \((P_{\mathit{new}},L_{\mathit{new}})=D_{\mathit{K_{\mathit{new}}}}(PPK_{ \mathit{new}})\), sets \((F_{\mathit{new}},L_{\mathit{new}})\) as his public key, sets \((G_{\mathit{new}},P_{\mathit{new}})\) as his private key, and he can start communications with other devices if he wants. Correctness  
RSU will verify the signature if the following steps are satisfied.