# Efficient Security Scheme for Disaster Surveillance UAV Communication Networks
## 5 The Proposed Security Scheme
### Surveillance UAV Network Operation Phase
#### 5.2.1 Collecting the Area Information Procedure  
* _Collecting the Area Information_ At the beginning of the reading round, each drone \(D_{q}\) in the group \(G_{p}\) scans its subarea \(\mathbb{A}_{x}\), collects the required information, concatenates its secret ID \(D_{q}\) to the collected data \(v_{j}\) and inserting the data feature \(DF_{q}\), and then encrypts the result by the \(CS\) public key \((\bar{a}_{cs},\bar{p}_{cs})\): The message \(v_{w}=(v_{j}|D_{q}|DF_{q})\) is encoded to a polynomial \(\bar{v}_{w}\in R_{q}\). Error polynomials \(o_{1},o_{2},o_{3}\in R_{q}\) are generated from \(\lambda_{\sigma}\). Next, compute \[\delta_{1}\gets NTT(o_{1});\quad\delta_{2}\gets NTT(o_{2}).\] The encrypted message \((\bar{h},\bar{z})\) equals \[(\bar{h},\bar{z})\leftarrow(\bar{a}_{cs}*\delta_{1}+\delta_{2},\bar{p}_{cs}* \delta_{1}+NTT(o_{3}+\bar{v}_{w}).\] Then, \(D_{q}\) sends its message \((\bar{h},\bar{z})\) to the current cluster heads of the group; assume that there are two cluster heads \(D_{x}\) and \(D_{y}\) for the current readings round: \[D_{q}\xrightleftharpoons{\bar{h},\bar{z}}D_{x},\] \[D_{q}\xrightleftharpoons{\bar{h},\bar{z}}D_{y}.\] Each cluster head \(D_{x}\) and \(D_{y}\) concatenates all the received messages of the group: \[B=concat_{i}\left(\bar{h}_{i},\bar{z}_{i}\right),\] where \(i\) is the number of drones enrolled in the group during the current reading round. Then, \(D_{x}\) and \(D_{y}\) encrypt \(B\) by their session keys \(k_{x}\) and \(k_{z}\): \[\bar{B} =\mathbb{E}_{k_{x}}(B),\] \[\bar{B} =\mathbb{E}_{k_{y}}(B)\] before forwarding the result messages \(\bar{B}\), \(\bar{B}\) to the \(CS\) via different relay drones \(R\): \[D_{x}\xrightleftharpoons{\bar{B}}R_{j}\xrightleftharpoons{\bar{B}}CS,\]\[D_{y}\xrightarrow{\beta}R_{k}\xrightarrow{\beta}CS,\]  
where the relays \(R_{j}\) and \(R_{k}\) are drones flying towards the \(CS\).
* _Verifying the Collected Information_ When \(CS\) receives all the messages \(\mathbb{B}=(\bar{B_{1}},\bar{B_{1}},\bar{B_{2}},\bar{B_{2}},\ldots\bar{B_{n}}, \bar{B_{n}})\), where \(n\) is the number of the groups in the subarea \(\mathbb{A}_{\rtimes}\) (notice that each group sends two messages from two different cluster heads), it first decrypts and de-concatenates each message in \(\mathbb{B}\). For example, the messages \(\bar{B}\), \(\bar{B}\) that were sent by the cluster heads \(D_{x}\) and \(D_{y}\) in the group \(G_{p}\) are decrypted and then the resulted \(B\) is concatenated as: \[B =\mathbb{D}_{k_{x}}(\bar{B}),\] \[B =\mathbb{D}_{k_{y}}(\bar{B}),\] \[(\bar{h}_{i},\bar{z}_{i}) =deconcat(B).\] For each message \((\bar{h},\bar{z})\), \(CS\) decrypts: \[\bar{v}_{w}=INTT(\bar{h}*\bar{r}_{2 cs}+\bar{z})\in R_{q}\] using the inverse NTT. Then, the original message \(v_{w}=(v_{j}|D_{q})\) is recovered using a decoder. \(CS\) checks the drone's features: if the drone is flying within its assigned location \(LF_{q}\); in addition, \(CS\) checks the presence of the inserted \(DF_{q}\). Then, it verifies the validity of \(D_{q}\) before accepting the message \(v_{j}\) as an accurate reading. \(CS\) then compares between the received data from different drones (that assigned for the same task) and accepts the information from the majority; all drones of the groups \(\mathbb{G}\) in the subarea \(\mathbb{A}_{\rtimes}\) are expected to send similar readings to \(CS\). Figure 3 shows the main procedure for collecting the subarea information. Figure 3 demonstrates the Collecting the Area Information procedure.