Skip to main content
. 2024 Jul 10;26(7):590. doi: 10.3390/e26070590
Protocol 1 CPPA-SM2
  • System Initialization

For TA:
1: Use λ to generate two large prime numbers p and q.
2: Randomly select sZq and calculates Ppub=sG.
3: Choose five one-way hash functions Hi={0,1}Zq*,i=1,2,3,4,5.
4: Publish param={p,q,E(Fp),G,G,Zq*,Ppub,H1,H2,H3,H4,H5}.
  • Registration

For each vehicle:
1: Vi randomly selects xiZq*, calculates Xi=xiG and send (RIDi,Xi) to TA.
2: Upon receiving (RIDi,Xi), TA calculates hi=H1(Xi||Ppub), yi=shi, Yi=yiG and randomly selects skiZq*. Then, TA sends yi, Yi and ski to Vi.
3: Vi sets (Xi,Yi), (xi,yi) and ski.
For each RSU:
1: RSUj sends IDRSUj to TA.
2: TA generates a pair of public and private keys (skRSUj,pkRSUj) and sends them to RSUj.
3. RSUj sets (skRSUj,pkRSUj).
For TA:
1: Calculate θ=i=1nski, ai=θ/ski, bi=(ai)1modski and set ci=aibi, u=i=1nci.
2: Randomly pick a group key KZq* and calculate the group public key β=Ku and Dpub=KG.
3: Sign β, Dpub and the K’s valid period TK using its private key skTA and broadcast the information {β,Dpub,SIGskTA(β||Dpub||TK)} to vehicles and RSUs in Cn.
  • Message Sign

For each vehicle:
1: Vi trains the global model Wglobalt using its local dataset Di to obtain the local model parameters Wit.
2: Vi randomly selects ciZq* to generate a pseudo identity PIDi=(PIDi,1,PIDi,2), where PIDi,1=ciG and PIDi,2=RIDiH2(ciPpub).
3: Vi calculates Zi=H3(lenPIDi,2||PIDi,2||a||b||G||Xi), φi=H4(PIDi,1||Ti) and sgki=yi+ZiK+xiφi.
4: Vi randomly selects kiZq*, calculates Ki=kiG=(x1,y1) ei=H5(Zi||Wit|Ti), ri=ei+x1modq and si=(1+sgki)1(kirisgki)modq.
5. Vi obtains the signature σ it=(ri,si) of Wit and sends messages {W it,σ it,(Xi,Yi),PIDi,Ti} to the nearby RSUj.
  • Message Verification

For each RSU:
1: Upon receiving the messages {W it,σ it,(Xi,Yi),PIDi,Ti} from Vi, RSUj first checks the validity of timestamp. If ΔTTaTi, where Ta represents the arrival time, continues; otherwise, discards.
2: RSUj calculates Zi=H3(lenPIDi,2||PIDi,2||a||b||G||Xi), ei=H5(Zi||Wit||Ti), φi=H4(PIDi,1||Ti), ti=ri+simodq and K i=(x1,y1)=siG+ti[Yi+ZiDpub+φiXi].
3: RSUj checks the equality of R=ei+x1=ri for authentication and validity.
4: RSUj uses the FedAvg algorithm to locally aggregate the verified local model parameters {W 1t,W 2t,,W nt}, producing a local aggregation result WRSUjtFedAvg(Wit,n).
5: RSUj signs this result with its private key and sends messages {WRSUjt,SIGskRSUj(WRSUjt)} to CS.
For CS:
1: CS performs a global aggregation on the verified local aggregation results {WRSU1t,WRSU2t,,WRSUmt} to obtain the global model Wglobalt+1FedAvg(WRSUjt,m).
2: CS signs the global model with its private key and sends messages {Wglobalt+1,SIGskCS(Wglobalt+1)} to the vehicles within the communication group via RSUs.
  • Group Member Management

Trace:
1: TA uses the system’s master private key s to recover the vehicle’s true identity RIDi=PIDi,2H2(sPIDi,1).
Revoke:
1. TA first removes ci related to Vi from u by computing u=uci.
2: TA randomly selects a new group key KZq*, calculates new group public keys β=Ku and Dpub=KG, and broadcasts the updated information {β,Dpub,SIGskTA(β||Dpub||TK)} to vehicles and RSUs in Cn.
Add:
1. TA randomly selects a new group key KZq* and calculates θ=θfi, ai=θ/fi, bi=(ai)1modski, ci=a ib i and u=i=1nci.
2. TA computes new group public keys β=Ku and Dpub=KG, and broadcasts the updated information {β,Dpub,SIGskTA(β||Dpub||TK)} in Cn.