# A Low-Overhead Message Authentication and Secure Message Dissemination Scheme for VANETs
## 3 Proposed Approach
### Proposed Method
The accept message contains a symmetric key \(K\) to be used for secure communication between the \(RSU\) and \(v\), and a timestamp \(ts\), encrypted using the public key \(PU_{v}\) of \(v\); it also attaches the certificate of the \(RSU\), signed by the \(DMV\) (\(Cert_{RSU}\)), and the signature of the \(RSU\) (\(SIG_{RSU}\)) to the message as follows:  
\[M_{1}=(RSU,PID_{v},(E(\"Accept\",K,ts),PU_{v}),Cert_{RSU},SIG_{RSU}),\]  
where  
\[SIG_{RSU}=E(H(\"Accept\",K,ts),PR_{RSU}).\]  
Upon receiving the above accept message from the \(RSU\), the vehicle uses the received \(ts\) to verify the freshness of the accept message. After that, it verifies the \(Cert_{RSU}\) and the signature of the \(RSU\). Algorithm 1 contains the algorithm illustrating the joining process of a vehicle \(v\) when \(v\) enters the region of an \(RSU\). ```
When a vehicle \(v\) enters the region covered by an \(RSU\): Verifies \(Cert_{RSU}\) received in the broadcasted message using \(PU_{DMV}\); Retrieves \(PU_{RSU}\) from the \(Cert_{RSU}\); Computes \(M_{1}=(``Join\",ts)\); Encrypts \(M_{1}\) using public key \(PU_{RSU}\) of \(RSU\); Sends \(M_{1}^{\prime}=(PID_{v},RSU,E(M_{1},PU_{RSU}),Cert_{v},SIG_{v})\) to the \(RSU\), where \(SIG_{v}=E(H(M_{1}),PR_{v})\) When the \(RSU\) receives \(M_{1}^{\prime}\) from \(v\): Decrypts \(M_{1}^{\prime}\) using \(PR_{RSU}\); Verifies \(Cert_{v}\) using \(PU_{DMV}\); Retrieves \(PU_{v}\) from \(Cert_{v}\); Verifies the signature using \(PU_{v}\); If verification succeeds {  Computes \(M_{2}=(``Accept\",K,ts)\); // \(M_{2}\) contains the acceptance message // for the joining message from \(v\); // \(K\) is the symmetric key to be used between \(v\) and \(RSU\); Encrypts \(M_{2}\) using public key \(PU_{v}\) of \(v\); Sends \(M_{2}^{\prime}=(RSU,PID_{v},E(M_{2},PU_{v}),Cert_{RSU},SIG_{RSU})\) to \(v\), where \(SIG_{RSU}=E(H(M_{2}),PR_{RSU})\); Else { Discards \(M2\); } When a vehicle \(v\) receives \(M_{2}^{\prime}\) from \(RSU\): Decrypts \(M_{2}^{\prime}\) using its private key \(PR_{v}\) to obtain \(M_{2}\); Verifies \(SIG_{RSU}\) using \(PU_{RSU}\); If verification succeeds {  Stores (\(M_{2}\));} Else { Discards \(M2\). } ```  
**Algorithm 1**When a vehicle \(v\) enters the region covered by an \(RSU\)
Next, we describe how an \(RSU\) selects Group Leaders in its region and informs them about being selected. **Informing selected vehicles as Group Leaders:** When a vehicle \(v\) enters the region covered by an \(RSU\), it sends a join message to the \(RSU\) after authenticating the \(RSU\). Then, the \(RSU\) authenticates \(v\) and sends an \"Accept\" message, which includes a symmetric key \(K\) to be used between \(v\) and the \(RSU\). Afterwards, the vehicle can send messages about sensed events to the \(RSU\), encrypting them using \(K\). If the \(RSU\) is not within the vehicle's transmission range, the messages are sent to the \(RSU\) using an underlying routing algorithm, as we mentioned earlier. Upon receiving \"join\" messages from vehicles in its region, an \(RSU\) can determine the number of vehicles in its region and their location. If the density of vehicles in the region of an \(RSU\) is low, the \(RSU\) does not need to select a \(GL\). If the density of vehicles in an \(RSU\)'s region is high, it divides its region into sub-regions and selects one vehicle from each sub-region as the Group Leader (\(GL\)). After selecting \(GL\)s, the \(RSU\) informs the selected vehicles (\(GL\)s) of their leadership and sends a proof-of-leadership message \(M_{1}=E((\mbox{``}Leader^{\prime},PU_{GL},ts),PR_{RSU})\). The \(RSU\) encrypts the \(M_{1}\) using a symmetric key \(K\), established between \(v\) and \(RSU\) when \(v\) entered the \(RSU\)'s region, attaches its signature (\(SIG_{RSU}\)) to the message, and sends the \(M^{\prime}_{1}\), where \(M^{\prime}_{1}=(RSU,PID_{v},E(M_{1},K),SIG_{RSU})\), and \(SIG_{RSU}=E(H(M_{1}),PR_{RSU})\).