08.08.2013 Views

Chapter 3 Time-to-live Covert Channels - CAIA

Chapter 3 Time-to-live Covert Channels - CAIA

Chapter 3 Time-to-live Covert Channels - CAIA

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Algorithm 3.1 Outer marker code receiver algorithm<br />

CHAPTER 3. TIME-TO-LIVE COVERT CHANNELS<br />

function receive(bits)<br />

foreach bit in bits do<br />

recv_buffer = append(recv_buffer, bit)<br />

if sizeof(recv_buffer) ≥ sizeof(PREAMBLE) + MAX_OFFSET then<br />

foreach offset in 1...MAX_OFFSET do<br />

diff[offset] = difference(recv_block[offset], PREAMBLE)<br />

min_diff = min(diff)<br />

min_off = minarg(diff)<br />

if min_off = 0 and min_diff ≤ MAX_ERRORS and<br />

sizeof(recv_buffer) ≥ (EXPECTED_BLOCK_SIZE − ∆) then<br />

// return data block before preamble (if any)<br />

// remove bits from recv_buffer and continue<br />

Ratzer’s approach assumes that sender and receiver are synchronised at the beginning<br />

and approximate bit error rates are known <strong>to</strong> carry out the probabilistic re-synchronisation.<br />

The complexity of the algorithm is N 2 in time and space where N is the number of bits<br />

per block, although in practice one can often further limit the search space.<br />

Because of these limitations we developed a scheme that follows a slightly different<br />

approach. Our scheme does not necessitate an initial synchronisation of sender and re-<br />

ceiver (not always practical) or the prior knowledge of bit error rates (generally unknown).<br />

Furthermore, the complexity of our algorithm is only M 2 in time and M in space where<br />

M is the number of markers per block (usually M ≪ N).<br />

Our novel scheme is a hierarchical marker scheme that uses two layers of markers.<br />

The sender divides the covert data in<strong>to</strong> blocks. An outer marker, which acts as preamble,<br />

is sent prior <strong>to</strong> each block. The receiver detects the start of a block if the bit sequence<br />

received is similar <strong>to</strong> the preamble. The preamble must be long enough <strong>to</strong> differentiate<br />

between preambles with bit errors and block data. The sender algorithm is trivial and<br />

consists only of putting the preamble at the start of each block. Algorithm 3.1 shows the<br />

receiver algorithm for the outer marker code.<br />

The receiver appends every received bit <strong>to</strong> a temporary buffer. When there are enough<br />

bits in the buffer it computes the number of bits that differ between the received bit se-<br />

quence and the pre-defined preamble for a number of offsets. If a bit sequence is detected<br />

with a difference smaller than a pre-defined threshold, differences for larger offsets are<br />

higher and the <strong>to</strong>tal number of bits received so far is over a minimum expected size the<br />

receiver assumes a preamble has been found.<br />

The outer marker code enables the receiver <strong>to</strong> synchronise the start of blocks. The re-<br />

ceiver then also knows approximately how many deletions occurred in a block including<br />

the preamble. To detect the locations of the deletions inside the block an inner marker<br />

code is used. If very few preamble bits are incorrectly identified as data bits the receiver<br />

55

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!