## 3 Development of an Imitation-Resistant Zero-Knowledge Authentication Protocol Based on an MPPC
However, they also have a significant disadvantage that does not allow for their application in satellite IoV. This is the use of public and secret keys for authentication in ZKAP. In this case, the public keys must be stored in the OBU's memory of the vehicles. Secret keys should be delivered on board the satellite RSUs. In this case, under an effective attack on the key exchange (interception of the secret key during its delivery on board the spacecraft), ZKAP will lose its cryptographic strength. As a result, destructive actions on the part of a rogue satellite will have a sufficiently high success rate and lead to a decrease in the cybersecurity of the entire IoV system. The keyless ZKAP, which is given in [65], is devoid of this drawback. Its advantages include one round of authentication without using secret and public keys. However, this protocol has another drawback. To ensure the high imitation resistance of the protocol, all computations are performed on a large modulus \(S\). This leads to an increase in the time cost of the authentication procedure. So, when a rogue satellite authenticates, it has a longer time interval during which it can guess the correct response to the request from the verifier. As a result, the probability that this rogue satellite will be allowed to access the communication channel increases. This leads to a decrease in IoV's cybersecurity. This disadvantage can be eliminated if we implement computations using modular polyalphabetic polynomial codes. The choice of MPPC for the implementation of ZKAP is caused by the fact that codes of the residue number system have a redundancy which negatively affects the hardware and corrective abilities of the code. Thus, when using the number \(p=17\) as the base, the largest residue is 16. This is the only five-bit residue. The remaining 15 options from \(10001_{2}=17\) to \(11111_{2}=31\) are not involved. This disadvantage is not present in MPPC. To provide cryptographic strength not lower than in [65], it is necessary to represent a prime number \(S\) as a polynomial \(S(x)\). Then, a tuple of irreducible polynomials \(m_{1}(x),\ m_{2}(x),\ \ldots,\ m_{k}(x)\) is chosen. Then, the operating range is defined using (3). Moreover, the following condition should be satisfied:  
\[\text{deg}M_{k}(x)>\text{deg}S(x). \tag{6}\]  
The developed ZKAP based on MPPC consists of two stages. The preliminary stage of the protocol is required to obtain secret parameters from the Certificate Authority (CA). Such parameters are a set of \(k\) irreducible polynomials, \(K\) (the secret key of the satellite RSU), the number \(D\) used to generate the session key \(D(n)\) and the number \(L\) used to generate the verification argument \(L(n)\) of the session key reuse, where \(n\) is the authentication session number:  
\[ \begin{array}{l}CA\to SRSU:\ \{m_{1}(x),\ldots,\ m_{k}(x),\ x,\ K,\ D,\ L\}\\ CA\to OBU:\ \{m_{1}(x),\ldots,\ m_{k}(x),\ x\}\end{array}  \tag{7}\]  
where \(x\) is a generator for the multiplicative group. The first part of the operational stage of the authentication protocol contains the following steps. Step 1.1 of the developed authentication protocol is devoted to the computation of \(D(n)\) and \(L(n)\). For this purpose, a pseudorandom function generator is used, which is based on the method presented in [66]:  
\[D_{i}(n)=\left|x^{\frac{1}{D(n-1)+k}}\right|_{M_{k}(x)},\ L_{i}(n)=\left|x^{ \frac{1}{L(n-1)+k}}\right|_{M_{k}(x)}, \tag{8}\]  
where \(M_{k}(x)\) is the operating range of the code. \(K\), \(D(n)\) and \(L(n)\) are then split into blocks:  
\[K=(K_{1}||\ldots||\,K_{k}),\ D(n)=(D_{1}(n),\,\ldots,\,D_{k}(n)),\ L(n)=(L_{1}(n),\, \ldots,\,L_{k}(n)), \tag{9}\]  
where \(\log_{2}K_{i}<\text{deg}m_{i}(x)\); and \(i=1,\ldots,k\). At Step 1.2 of the protocol, the true digest of the satellite RSU is computed. The computations are performed in parallel on the MPPC bases. \(x\) is chosen as the generator. \[SRSU:\ U_{i}^{n}(x)=x^{K_{i}}x^{D_{i}(n)}x^{L_{i}(n)}\text{mod}m_{i}(x), \tag{10}\]  
where \(i=1,\ldots,k\).