The general concept of syndrome coding for steganography was introduced in Section 3.1. Within this section, we expand the basic principle in order to include approaches that minimize the embedding impact introduced during embedding and thus, increase the embedding efficiency. We describe the basic principles for finding the stego sequence b in order to make clear how the algorithms described in the following chapters work.
Recall the basic principle of syndrome coding, where the syndrome derived by multiplying the parity-check matrix Hk×n and the stego sequence b should be equal to the confidential message part emb (see Equation (3.2)):
s= Hk×n(a⊕ f)T = Hk×nbT = emb. (3.33) In order to achieve this goal, the cover sequence a has to be modified. Whenever the overall goal is to minimize the embedding impact, a sequence f, fulfilling Equation (3.33) has to be determined, that minimizes the introduced distortion:
f = argmin
f∈Fn2
dρ(a, a⊕ f). (3.34)
This approach however, requires an exhaustive search within the whole vector space. Based on the partitioning of the vector space in cosets as described in Section 3.3, it is possible to reduce the search space by searching only within the cosets.
Each coset C(s) is stored in a Look-up Table. For this approach, there are two different ways for finding an appropriate stego sequence.
First, the search for an appropriate sequence b can be carried out within C(emb). Note that all elements of coset C(emb) can be considered for em-bedding. However, to minimize the embedding impact, we look for sequence b according to:
b = argmin
b∈C(emb)
dρ(a, b). (3.35)
The second possibility for finding an appropriate stego sequence is to stick to the flipping pattern f: Note that the cover sequence a is related to a syndrome s∈ C(Hk×naT). The resulting stego sequence b after embedding, however, should lead to a syndrome s∈ C(emb). Thus, the sequence f, which will be added to a in order to achieve b has to be a sequence of cosetC(Hk×naT ⊕ emb) (according to Equation (3.18) in Section 3.3). In order to minimize the embedding impact, the sequence f out of all 2l sequences in cosetC(Hk×naT ⊕emb) has to be chosen according to:
f = argmin
f∈C(Hk×naT⊕emb)
dρ(a, a⊕ f). (3.36)
In this case, f = cL(Hk×naT⊕emb) is called a coset leader of coset C(Hk×naT⊕ emb).
A coset leader of cosetC(s) is defined as the optimal flipping pattern f to map the cover sequence a to a stego sequence b. Consequently, a coset leader can be seen as the sequence f that minimizes the overall embedding impact dρ(a, a⊕ f).
Generally, it is possible to find different sequences f ∈ C(s) as coset leaders, i. e., more than one sequence that minimizes the embedding impact.
For a distortion measure considering the number of changes, i. e., a uniform profile, the goal is to minimize the difference between a and b. Thus, a coset leader cL(s), added to a in order to obtain b, is simply the sequence with mini-mum Hamming weight. Note that w(cL(s)) ≤ R.
Considering the severity of changes, i. e., a general profile instead, requires to find a sequence that minimizes dρ(a, a⊕ f) based on the underlying profile of embedding impact ρ[1], ..., ρ[n]. A coset leader is therefore defined as a se-quence that minimizes the embedding impact. When assuming a general profile, the algorithms discussed in this thesis are based on Wet Paper Steganography.
Therefore, they exclude so-called wet elements from the embedding process. The dry elements are used for embedding, i. e., we assume ρ[Dry] = const. Thus, even for this profile, we find the sequence with minimum Hamming weight as coset leader.
Based on Equation (3.36), Galand and Kabatiansky [54] specified a stegano-graphic scheme: An (n, l) codeC with covering radius R can be used to construct an embedding scheme which is able to communicate n− l bits using at most R changes:
Emb(a, emb) = a⊕ cL(Hk×naT ⊕ emb) = b, Extr(b) = Hk×nbT, with
Extr(Emb(a, emb)) = Hk×n bT
= Hk×n aT ⊕ Hk×n cL(Hk×n aT ⊕ emb)T
= Hk×n aT ⊕ Hk×n aT ⊕ emb = emb.
(3.37)
Embedding by minimizing the embedding impact as described so far, includes an exhaustive search within cosets. In order to propose approaches to speed up the search for an appropriate flipping pattern f and thus, for an appropriate stego sequence b, Fridrich et al. states that embedding can be seen as a binary quan-tization problem [37]. This is true since the search for an appropriate sequence f can also be reformulated as the search of the closest codeword. Note that the search for the closest codeword, i. e., binary quantization, is a well known problem for which several solutions have been proposed.
The embedding process can be reformulated as follows. Given an arbitrary coset member fm ∈ C(emb), it is possible to define the coset C(emb) based on the code C:
C(emb) = {fm⊕ c, c ∈ C}
= fm⊕ C(0). (3.38)
The coset indeed includes all 2l sequences leading to syndrome emb, since adding 2l different codewords to fm will lead to 2l different sequences associated with syndrome s = emb:
Hk×n (fm⊕ c)T = Hk×n fmT ⊕ Hk×n cT = emb⊕ 0 = emb. (3.39) This coherence can also be used to determine the optimal sequence for embed-ding. In order to minimize the embedding impact, a member b of coset C(emb) has to be chosen, that is closest to a in metric dρ:
b = argmin
b∈C(emb)
dρ(a, b) (3.40)
According to Equation (3.38), we can express b as fm⊕ c with c ∈ C.
Thus, we have to determine the closest codeword [19], i. e., the codeword cemb
that minimizes the distortion between a⊕ fm and C:
cemb= argmin
c∈C
dρ(a, fm ⊕ c)
= argmin
c∈C
dρ(a⊕ fm, c). (3.41)
The stego sequence b can now be determined with b = fm ⊕ cemb, where fm
is a coset member of C(emb) and cemb ∈ C. This sequence is indeed a valid steganogram for emb since we find:
Hk×n(fm⊕ cemb)T = Hk×nfmT ⊕ Hk×n cembT = emb⊕ 0 = emb. (3.42)
a
b a⊕ fm
cemb
C(emb)
C(0)
fm
Figure 3.2.: Schematic Interpretation of the Embedding Process According to [19].
A schematic interpretation of the embedding process according to [19] can be found in Figure 3.2. The sender needs to find cemb that is closest to a⊕ fm. The embedding process can be interpreted as follows:
1. Shift the cover sequence a using an arbitrary coset member fm, 2. Find the closest codeword to a⊕ fm denoted as cemb,13 and 3. Shift cemb back into the coset C(emb).
13Note that in the binary case, i. e., in GF (2), a subtraction is equivalent to an addition modulo 2 (⊕).
The resulting stego sequence b ∈ C(emb) is closest to the cover sequence a.
While the coset member can be easily determined by searching for a sequence fm ∈ C(emb), the search for the closest codeword is equivalent to finding the coset leader, i. e., an NP-complete problem [4].