# SACT: A New Model of Covert Communication Based on SDN
## 3 Materials and Methods
### Watermark Conversion Analysis  
#### 3.1.1 Watermark Modulation Analysis  
Network watermarking is divided into non blind watermarking and blind watermarking [34]. The network watermark will be affected by many factors such as network fluctuation when it is transmitting. The robustness of network watermarking is the primary factor to be considered, and the encoding method of watermark information is the key to the robustness. According to Shannon theorem, we can reduce the error probability exponentially by increasing the code length when the channel capacity and transmission rate are fixed [35]. With the increase of code length, the complexity of encoding and decoding increases, as well as the time of encoding and decoding. Convolutional code is an error control channel coding with superior performance. The data encoding process is related to binary polynomial sliding [36]. Convolutional code encodes _m-bit_ information sequence into _n-bit_ information. The encoded _n-bit_ information is not only related to the _m-bit_ source information of this group but also to the bit information of the first _L-1_ group at other times. The length of \(L\) group code element information associated with the encoding process is called the constraint length of convolutional code. Convolutional code is usually represented by triples (_n_, \(m\), _L_), where \(n\) is the output bit information, \(m\) is the input bit information, \(L\) is the length or memory depth of the constraint code group, and the ratio of \(m\) to \(n\) is called the code rate of convolutional codes. The encoder structure of convolutional code is shown in Figure 1, \(L\) registers indicate that there are _L-level_ bits information. Each register can input \(m\) bits information, then there are _m_\({}^{*}\)_L_ bits information in total, and \(n\) bits information is output to modulator. The output information is not only related to the \(m\) input information of the current packet but also to the bit information of the previous _L-1_ group. The error correction ability of convolutional codes increases with the increase of \(L\), and the error rate decreases exponentially with the increase of _n_[36]. Figure 1: Structure of the convolutional code encoder. The original binary watermark information enters the encoder register through the input end in turn. Each encoding register stores a block of input data with an initial value of 0. As shown in Figure 2, there are three _Modulo-2_ Adders (equivalent to an Exclusive OR(XOR) gate) in the encoder, and the operation mode is _0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 0_. The addition operation is performed on _3-bit_ raw data. Then, the data in the register is sent to the next register \((x\to y,y\to z)\) and continue to the output to obtain the data to be transferred. According to Equation (1), the encoded convolutional code data is output at the output end. \[A=X+Z \tag{1}\] \[B=X+Y+Z\]  
The original watermark information is input to the encoder in sequence and the data stored in the three registers is the input values at different time points. Register \(X\) stores the current block symbol data, register \(Y\) stores the data of the previous cycle, and register \(Z\) stores the data of the previous cycle. Each group of information data of convolution expanded watermark are related to the past information data, retain memory effect, and improve the robustness of watermark information. The coding complexity can be expressed by the length of the coding constraint: \(n*L\), the time complexity is \(O(n^{2})\)[36]. After the convolutional code is applied to the network watermark coding, the anti-interference ability of the network watermark is improved. However, the length of the watermark information is multiplied by the convolutional code. The _L-Bits to N-Packets_ model is introduced [37] to solve the problem of channel capacity reduction caused by the introduction of convolutional code. The arrival delay between \(n\) packets is used to represent the _L-bit_ string in encoder.