# Direct Spread Spectrum Technology for Data Hiding in Audio +
## 3 Materials and Methods
### Used Chip Codes  
In this article, various methods for generating chip codes were considered, and their influence on the characteristics of a steganosystem was studied. Specifically, we explored five different ways to generate spreading sequences.  
1. Spread sequences from [21; 40]  
In the basic works [21; 40] on Spread Spectrum Steganography, a nonlinear rule for the formation of chip codes \(s=(s_{1},s_{2},\ldots,s_{k})\) was used. In particular, each chip \(s_{i,j}\) was formed as a realization of a random variable distributed according to the standard normal law.  
For this, the rule was proposed:  
\[s_{i,j}=\left\{\begin{array}{l}\Phi^{-1}(u_{i,j}),\ m_{i}=-1;\\ \Phi^{-1}(u_{i,j}),\ m_{i}=1,\end{array}\right. \tag{10}\]  
where  
\[u_{i,j}=\left\{\begin{array}{l}u_{i,j}+0.5,\ u_{i}<0.5;\\ u_{i,j}-0.5,\ u_{i}\geq 0.5,\end{array}\right.\]  
* \(u_{i,j}\)-implementation of a random variable uniformly distributed over the interval \([0,1]\);
* \(\Phi^{-1}\)--inverse cumulative distribution function for a standard Gaussian random variable.  
In our experiments, we used chip codes of length \(n=1024\) generated according to rule (10).  
Spreading sequences with a Gaussian chip distribution (10) were also studied by us earlier in relation to cover images in [23; 24]. We are expanding our research to the case of audio containers now.  
2. Chip codes from random numbers uniformly distributed over the interval \([-1,1]\)  
We also implemented the formation of spreading sequences of length \(n=1024\) from random numbers uniformly distributed over the interval \([-1,1]\). Each chip \(s_{i,j}\) is formed randomly with equal probability and independently of other values.  
3. Chip codes from normally distributed random numbers  
This method of forming spreading sequences of length \(n=1024\) consists in generating normally distributed random numbers. In fact, the second and third methods are very similar. Each chip \(s_{i,j}\) is randomly formed. The second method uses a uniform distribution on the interval \([-1,1]\), and the third one uses a standard normal distribution. The third method is also similar to the first, but the rule for generating chip codes is somewhat different.  
4. Binary chip codes generated by a pseudo-random bit generator The simplest, in our opinion, is the formation of individual chips using a pseudo-random bit generator. We converted the generated bits to polar form and formed spreading sequences of length \(n=1024\).  
5. Walsh-Hadamard spreading sequences  
These are discrete sequences of length \(n=2^{w}\), \(w=1,2,\ldots\), which can be formed as rows (or columns) of the Hadamard matrix \(H_{n}\) of order \(n=2^{w}\):  
\[H_{2^{w}}=\left[\begin{array}{cc}H_{2^{w-1}}&H_{2^{w-1}}\\ H_{2^{w-1}}&-H_{2^{w-1}}\end{array}\right],\;H_{1}=[1]. \tag{11}\]  
For example, for \(n=4\), we have four chip codes:  
\[\begin{array}{l}s_{1}=(1,1,1,1),\\ s_{2}=(1,-1,1,-1),\\ s_{3}=(1,1,-1,-1),\\ s_{4}=(1,-1,-1,1).\end{array}\]  
In our experiments, we used spreading sequences with a length of \(n=2^{10}=1024\). Therefore, we recursively generated \(H_{1024}\) according to rule (11) and formed \(s=(s_{1},s_{2},\ldots,s_{k=1024})\) as a set of strings \(H_{1024}\).  
The Walsh-Hadamard sequences form an orthogonal system, i.e.,  
\[\forall i\
eq j:\rho(s_{i},s_{j})=0\]  
which is in good agreement with (2).  
Nevertheless, the main disadvantage of such chip codes should be pointed out. The number of different orthogonal sequences of length \(n\) cannot exceed \(n\). Therefore, to hide a large number of bits in the same container, this generation method may not be sufficient.