# Blind Spoofing GNSS Constellation Detection Using a Multi-Antenna Snapshot Receiver +
## 3 Single Detection  
Spoofing detection with an array of antennas has been proven successfully [11; 35; 36]. However, this requires a calibrated array, known array orientation, known receiver phase offsets, and a synchronized receiver. These methods are DOA based and estimate the direction to each satellite. As the snapshot concept aims to outsource the processing to the server, it implicitly shifts the cost of the system away from the receiver. However, all calibrations required for array processing would increase teh cost and complexity of the receivers. One solution to counteract high complexity and cost is to use blind array processing. Further, most array steering methods are also applied to conventional receivers where successive and recursive estimation on a continuous signal is available. A drawback of blind methods is that the detection is relative: a single signal originating from the wrong direction cannot be detected. However, if multiple signals originate from the same direction, they can be detected. Since a constellation of signals is usually spoofed, this would not be an issue in real-life scenarios. However, in the case of distributed spoofing attacks (i.e., multiple spoofing transmitters) [37], it would be significantly more difficult to detect. Fortunately, distributed attacks are rare, due to the associated difficulty [7; 37]. The spoofing detection algorithm presented in this article uses the array steering vector obtained in acquisition (see Section 2), as this information is already available and can be used. The array steering vector is tested for similarity by correlating each pair of vectors with each other. If the signals originate from the same direction, then they have similar vectors and have a high correlation value. The detector is based on this correlation value and implements a detection for each pair of array steering vectors. The detector implements a detection for each pair of steering vectors. Hence, a system of detections is developed. This makes the detection process more efficient. First, all the estimated array steering vectors \(\mathbf{b}_{n}\) are stacked in a matrix \(\mathbf{B}\):  
\[\mathbf{B}=\left[\mathbf{b}_{1},\mathbf{b}_{2},...,\mathbf{b}_{N_{\text{s}}} \right]\,, \tag{13}\]  
where \(\mathbf{b}_{n}\) is a column vector for the array steering vector for the \(n\)-th satellite. The constellation consists of a total of \(N_{\text{s}}\) satellites. \(\mathbf{B}\) is a number of elements \(N_{\text{e}}\) by the number of estimated steering vectors \(N_{\text{s}}\) sized matrix. The matrix is correlated to get a non-normalized correlation matrix \(\mathbf{C}\):  
\[\mathbf{C}=\mathbf{B}^{H}\times\mathbf{B}\,, \tag{14}\]  
where \((\cdot)^{H}\) is the Hermitian transpose of the signal and \"\(\times\)\" is a matrix multiplication. Each element in the matrix is equivalent to the dot product between each pair of steering vectors. \(\mathbf{C}\) is a \(N_{\text{s}}\) by Hermitian matrix. To normalize the matrix, the magnitude values of the auto-correlations need to be determined:  
\[\mathbf{c}=\sqrt{\text{diag}\left(\mathbf{C}\right)}\,, \tag{15}\]  
where \(\mathbf{c}\) is a column vector containing the magnitude values, and \(\text{diag}\left(\cdot\right)\) takes the diagonal of a matrix. The normalized correlation matrix \(\mathbf{C}_{\text{norm}}\) is calculated as:  
\[\mathbf{C}_{\text{norm}}=\Re\left\{\mathbf{C}\right\}\circ\left(\mathbf{c} \times\mathbf{c}^{\intercal}\right)^{\circ-1}\,, \tag{16}\]  
where \(\Re\left\{\cdot\right\}\) takes the real component of the correlation, \(\circ\) is the Hadamard product, and \((\cdot)^{\circ-1}\) is the Hadamard inverse.\(\mathbf{C}_{\text{norm}}\) is also an Hermitian matrix. Each element of this matrix has the form:  
\[C_{\text{norm}}(n,m)=\frac{\Re\left\{\mathbf{b}_{n}^{*}\cdot\mathbf{b}_{m} \right\}}{\left\|\mathbf{b}_{n}\right\|\left\|\mathbf{b}_{m}\right\|}=\cos \left(\xi_{n,m}\right)\,, \tag{17}\]  
where \(\left\|\mathbf{b}_{n}\right\|\) is the magnitude of the \(n\)-th beamforming vector.