## 3 The Proposed Scheme
### Registration  
The first step is generating the system parameters, and then the registration is executed between the drone and IoD network participants (the other drones and the base station). We differentiate three participants: a _new drone_ (\(ND\)) asks for registration, the _base station_ (\(BS\)) manages the registration and communicates with the earlier _registered drones_ (\(D_{1},\ldots,D_{n}\)). The set of all binary strings of finite length is represented by \(\{0,1\}^{*}\). The concatenation of \(x\) and \(y\) strings is represented by \(x||y\). Before registering, the system generates all necessary parameters and keys. System parameters _par_ are given by \(par=(E,q,\textbf{n},P,Mac)\), where \(E,q,\textbf{n},P\) are the parameters of elliptic curve \(E\); \(Mac:\{0,1\}^{*}\rightarrow\{0,1\}^{*}\); \(\
u\in\mathbb{N}\) is a MAC function; and \(\
u\) is the size of the MAC value. System parameters are publicly known. To provide message authenticity between the base station and other drones, each drone possesses \(n\) symmetric keys (\(K_{B_{1}},\ldots,K_{B_{n}}\)). In addition, for symmetric keys, each participant generates a random value (\(s,s_{0},\ldots,s_{n}\in\mathbb{Z}_{\textbf{n}}^{*}\)) and then computes the public \(sP,s_{0}P,\ldots,s_{n}P\) which are elliptic curve points represented by a bitstring that is necessary for the key agreement. At the end of the registration, the new keys are generated by the elliptic curve Diffie-Hellman key exchange. The device has a PUF key (\(Pf_{K}\)) generated by the static random access memory (SRAM) or the cryptography module of the drone's main central processing unit (CPU). This physical fingerprint is unique to every CPU and memory protection unit (MPU). After the drone device has been manufactured, the PUF value is registered in the private blockchain, and it is accessed by base stations. \(Pf_{K}\) guarantees authenticity between the new drone and the base station. As the first registration step (Figure 2), the \(BS\) sends the list of the IoD network participants (\(ID_{i}\)), where \(i\in\{1,\ldots,n\}\) and applies the new drone's PUF key \(Pf_{K}\) to provide the list's integrity (\(MAC_{Pf_{K}}\) (\(ID_{1},\ldots,ID_{n}\))). The \(BS\) has access to the private blockchain; therefore, it knows the associated PUF key based on the \(ID_{ND}\) of the drone to be registered. The first step when starting the registration is to query it. \(ND\) creates a MAC message \(MAC_{Pf_{K}}(s_{0}P)\) using its \(Pf_{K}\) and the \(s_{0}P\) value, which is the element of the \(ND\) of the EC Diffie-Hellman key exchange, where \(s_{0}\in Z_{\textbf{n}}\) is chosen randomly and kept secret and sends it to the base station. The base station checks whether the \(ND\) message for the key exchange is valid. When \(BS\) checks the validity of the \(ND\) message, then as Figure 3 shows, \(BS\) computes new MAC values (\(MAC_{K_{B_{i}}}(s_{0}P)\)) using the earlier exchanged symmetric keys \(K_{B_{i}}\) (\(i\in\{1,\ldots,n\}\)) with the registered drones and broadcasts the key exchange value (\(s_{0}P\)) of the new drone. When the \(BS\) MAC values are received by drones \(D_{i}\), where \(i\in\{1,\ldots,n\}\), all \(D_{i}\) validate the \(BS\) message in parallel and calculate the new symmetric key for the new drone (\(K_{iD}\)). Each drone \(D_{i}\) creates the response (\(MAC_{K_{B_{i}}}(s_{i}P)\), \(MAC_{K_{D_{i}}}(s_{i}P)\)) and sends  
Figure 2: Request registration. them to the \(BS\). \(BS\) checks the correctness of the \(D_{i}\) messages and then also computes the symmetric key (\(K_{BND}\)) with the new drone. \begin{tabular}{l} check:\(MAC_{K_{B_{i}}}(s_{0}P)\) \\ \(K_{iD}=s_{i}\cdot s_{0}P\) \\ \(MAC_{K_{B_{i}}}(s_{i}P)\) \\ \(MAC_{K_{B_{i}}}(s_{i}P)\) \\ \end{tabular}  \\ \end{tabular} \\ \end{tabular}  
each drone's data take up only 18 bytes of storage, meaning even hundreds of drones would not take up 1 kilobyte of space.