# Securing IoT Data Using Steganography: A Practical Implementation Approach
## 3 Proposed Solution  
### Methodology  
The proposed IoT steganographic scheme hides data (payload) in a cover signal (\(s_{c}\)) to generate a stego signal (\(s_{s}\)), which is then sent over the IoT network. For audio cover signals such as speech and music, low frequencies are typically much more potent than high-frequency components. They exhibit better signal-to-noise (SNR) ratios and have higher energy, making them more tolerable for data embedding. To further attenuate the noise induced by hidden data and enhance the stego signal quality, we use the signal spectrum properties whereby noise values 13 dB less than the original signal spectrum (frequency mask) are inaudible for all frequencies [53]. Hence, data embedding is prioritized at lower frequencies, higher energy bins, and at least 13 dB under the frequency mask. To satisfy steganography system criteria in terms of the payload (hiding capacity), statistical undetectability, stego signal quality, and security of embedded data against intentional removal attempts, we used a multi-key combination described in Figure 4. The detailed rationale is explained in the following:  
* Payload: the hiding frequency band limit (\(FBL\)) is a key set to define where data will be hidden in each frequency frame. FBL is delimited by \(F_{HDmin}\) and \(F_{HDmax}\) representing, respectively, the lower and higher frequency bin values used for data hiding. Similar to the sliding window concept, FBL could be increased or decreased to control the embedding location and the payload capacity. Additionally, we used variable least significant bit (\(SLB\)) as a second key to increase the payload capacity. \(SLB\) represents the lower limit of the embedding locations at each frequency frame. * Stego signal quality: to increase the stego signal quality, we used only high-energy magnitude frequency bins for data hiding. For this, we defined a _threshold_ value that acts as a third key and sets the minimum energy required for a frequency bin to be elected for data embedding. A high _threshold_ value is expected to maintain good stego signal quality. Yet, there exists a trade-off between high _threshold_ values and the resulting payload capacity and stego signal quality. To ensure a good quality of the stego-audio signal, we also defined a distortion level (\(\Delta\)) as an additional key to model the upper limit of the embedding areas. As an example, if we set the frequency mask (\(\rho\)) to 13 dB, the expected SNR value between the cover and the stego signals is:  
\[SNR_{dB} =10 log\bigg{(}\frac{|S_{c}(m,k)|^{2}}{\Delta(m,k)^{2}}\bigg{)}\] \[=10 log\bigg{(}\frac{|S_{c}(m,k)|^{2}}{\alpha*|S_{c}(m,k)|^{2}} \bigg{)}\] \[=10 log(\alpha)^{-2}=2*(\rho)=26 dB\]  
The noise added by the embedded data can be modeled as the difference between the stego (\(s_{\rm{s}}\)) and cover signals (\(s_{\rm{c}}\)) such as: \(\Delta=s_{\rm{s}}-s_{\rm{c}}\), \(\Delta\) can also be represented as a factorization of the cover signal by \(\alpha\), where \(\Delta=\alpha*s_{\rm{c}}\). Hence, the value of \(\rho\) could be increased to enhance the \(SNR\) value. The \(\Delta\) value, on the other hand, has a dual effect on the stego signal: (1) preserving the statistical nature of the modified signal by shaping the noise created by the hidden data into an audio-like spectrum and (2) embedded data below \(\Delta\) preserve the stego signal quality. In addition to securing the embedded data locations, preserving the quality of the stego signal, increasing the payload and hidden data undetectability must be satisfied. Once the embedding locations are defined in the magnitude spectrum using the aforementioned keys, we created their replicas in the phase spectrum to hide our secret data. This is motivated by the following reasons:  
* Only a few bits in each selected frequency component are modified, which results in a smooth transition while preserving the phase continuity. This means a minimum overhead with low imperceptibility.