# An Efficient and Secure Certificateless Aggregate Signature Scheme for Vehicular Ad hoc Networks
## 5 Security Analysis  
In this phase, with the help of Theorems 1 and 2, we are going to prove that the proposed aggregate signature scheme is unforgeable against Type 1 (\(FGR_{1}\)) and Type 2 (\(FGR_{2}\)) forgers. **Theorem 1**. : _Utilizing a non-negligible probability \(n_{\text{Ompb}}\), if Type 1 (\(FGR_{1}\)) forger wants to forge the proposed certifateless aggregate signature within a polynomial time successfully, then there will be a challenger (\(FCR\)) who can serve his services as a facilitator for solving the hyperelliptic curve discrete logarithm problem with the probability \(\left(1-\frac{1}{X}\right)\Big{(}\frac{n_{\text{Ompb}}}{X_{\text{Ompb}}} \Big{)}\Big{(}1-\frac{1}{Q_{\text{PRPKG}}+Q_{\text{SIGG}}+Q_{\text{SIGG}}+1} \Big{)}\), where \(Q_{\text{PRPKG}}\), \(Q_{\text{SIGG}}\), \(Q_{\text{SIGV}}\), \(X,n_{\text{Ompb}}\) and \(Q_{\text{H}_{\text{user}}}\);represent Partial Private Key Generation Query, Signature Generation Query, Signature Verifications Query, Natural Logarithm, Non-negligible Probability, and Hash Queries, respectively._  
Proof. : A facilitator called [PERSON] will solve the hyperelliptic curve discrete logarithm problem if he receives D, \(\text{HDLP}=\text{x. }D\) and his task will be to extract \(x\) from \(HDLP\). \(\square\)  
**Setup:** FCR calls the Setup algorithm in which it sends the param \(\text{PB}_{\text{frm}}\) to \(\text{FGR}_{1}\) and keeps private \(\text{Dot}_{\text{p}}\). **Query Phase:**\(\text{FGR}_{1}\) selects the identity \(\text{ID}_{\text{usri}}\) and FCR has no access to \(\text{ID}_{\text{usri}}\). Then, \(FCR\) selects the identity \(ID_{\text{usri}}\)\({}^{*}\) and performs the following queries with \(FGR_{1}\):  
**H\({}_{\text{01}}\)Query:** FCR initializes an empty list (\(\text{L}_{\text{H}_{\text{1 asr}}}\)). When \(FGR_{1}\) generates this query, \(FCR\) checks the tuple \((K_{\text{usr}},H_{\text{1 asr}})\) in \(L_{H_{\text{1 asr}}}\). If the value \(H_{\text{1 asr}}\) exists, then it sends \(H_{\text{1 asr}}\) to \(FGR_{1}\); otherwise, it randomly picks \(H_{\text{1 asr}}\) from \(F^{\text{ield}}\)\({}_{p}\), sends \(H_{\text{1 asr}}\) to \(FGR_{1}\) and updates \(L_{H_{\text{1 asr}}}\) with the value \(H_{\text{1 asr}}\). **H\({}_{\text{02}}\)Query:** FCR initializes an empty list (\(\text{L}_{\text{H}_{\text{2 asr}}}\)). When \(FGR_{1}\) generates this query, \(FCR\) checks the tuple \(\left(EID_{\text{usr}},F_{\text{usr}}, Dot_{\text{pb}}, H_{\text{2 asr}}\right)\) in \(L_{H_{\text{2 asr}}}\). If the value \(H_{\text{2 asr}}\) exists, then it sends \(H_{\text{2 asr}}\) to \(FGR_{1}\); otherwise, it randomly picks \(H_{\text{2 asr}}\) from \(F^{\text{ield}}\)\({}_{p}\), sends \(H_{\text{2 asr}}\) to \(FGR_{1}\) and updates \(L_{H_{\text{2 asr}}}\) with the value \(H_{\text{2 asr}}\). **H\({}_{\text{03}}\)Query:** FCR initializes an empty list (\(\text{L}_{\text{H}_{\text{3 asr}}}\)). When \(FGR_{1}\) generates this query, \(FCR\) checks the tuple \((EID_{\text{usr}},F_{\text{usr}}, L_{\text{usr}}, W_{\text{OBU}}, H_{\text{3 asr}})\) in \(L_{H_{\text{3 asr}}}\). If the value \(H_{\text{3 asr}}\) exists, then it sends \(H_{\text{3 asr}}\) to \(FGR_{1}\); otherwise, it randomly picks \(H_{\text{3 asr}}\) from \(F^{\text{ield}}\)\({}_{p}\), sends \(H_{\text{3 asr}}\) to \(FGR_{1}\) and updates \(L_{H_{\text{3 asr}}}\) with the value \(H_{\text{3 asr}}\). **Secret Value Generation (SVG) Query:** FCR initializes an empty list (\(\text{L}_{\text{SVG}}\)). When \(FGR_{1}\) generates this query, \(FCR\) checks the value \((G_{\text{usr}})\) in \(L_{\text{SVG}}\). If the value \(G_{\text{usr}}\) exists, then it sends \(G_{\text{usr}}\) to \(FGR_{1}\); otherwise, it randomly picks \(G_{\text{usr}}\) from \(F^{\text{ield}}\)\({}_{p}\), sends \(G_{\text{usr}}\) to \(FGR_{1}\) and updates \(L_{\text{SVG}}\) with the value \(G_{\text{usr}}\). **PRPKG Query:** FCR initializes an empty list (\(\text{L}_{\text{PRPKG}}\)). When \(FGR_{1}\) generates this query, \(FCR\) checks the value \((P_{\text{usr}})\) in \(L_{\text{PRPKG}}\).