Table 2: Embedding capacities of floating-point attributes
in KML, where #(x) denotes the count of x.
Floating-point attrs. Capacity in digits
north, east, south, west,
longitude, latitude, #(Decimal places)
rotation −7
altitude, heading, range,
minAltitude, maxAltitude
tilt, roll, topFov, leftFov, #(Decimal places)
bottomFov, rightFov, near −1
the north attribute are exchanged, and the given digit
vector is v = (d
0
, . . . , d
13
) with d
2
to d
13
as decimal
places, we can replace the five digits d
8
to d
12
with
steganographic data. If a north vector contains the
maximum of 16 digits, we can replace at most eight
digits because there is always at least one integer digit
and seven decimal places remain untouched.
For coordinate values which are measured in de-
grees of longitude or latitude, not using the first six
decimal places means that the changes caused by em-
bedding amount to at most 10
−6
degrees. According
to the definition of a degree of longitude and latitude
(cf. (Cox, 1999)), this equals about 11 centimetres.
In contrast, embedding starting at, say, the fifth deci-
mal place would be clearly insecure with a maximum
deviation of over 11 metres (Fig. 2 was created with
that maximum deviation).
With all other values that either describe angles or
distances in metres, such as tilt or altitude, we use all
but the last decimal place. This choice is justified as
follows: Angles are used to position the camera view
that is coupled to an object. However, this relation-
ship is quite loose. For example, it does not make any
difference to a user whether the tilt towards an ob-
ject is 85.562 or 85.982 degrees, which, in terms of
longitude and latitude, would be critical for the posi-
tioning of the object. The same is true for the altitude
in which an object is positioned. If the user decides
not to have an object clamped to the ground automat-
ically and chooses an unusual altitude like 2501.45
metres, changes to the decimal places will be unsuspi-
cious as well. However, changing digits in the integer
part might easily result in violation of the intentions
the user had when setting up the original view, so we
recoiled from that.
5 IMPLEMENTATION AND
PERFORMANCE
We implemented a stegosystem that subsequently re-
places numerical geodata in one or more KML files
with steganographic data as described in the previ-
ous section. The user types in an arbitrary message
or selects a hidden-message file
2
. The message is
Huffman-encoded with a given probability distribu-
tion that is optimised for English texts. In a second
step, the message is encrypted with AES intoa cipher-
text of n · 16 bytes before it is turned into an integer
value.
To embed the integer that represents the message,
the selected cover files are parsed and searched for
vectors suitable for embedding in a predefined order.
Now the algorithm splits up the message into short
strings that fit into the insignificant parts of the digit
vectors and overwrites the original data. As the re-
ceiver must distinguish the embedded data from other
random numbers, the first five replaced digits con-
tain the encrypted hidden-message length. For hidden
communication, sender and receiver need to share a
secret key and the stego file that is output by our al-
gorithm.
The most important performance criterion for a
stegosystem is how much data can be embedded with-
out compromising security. We empirically tested
the embedding capacity for KML files with different
numbers of paths, where each vertex in a path is re-
presented by a coordinate triple of latitude, longitude
and altitude values, and randomly selected excerpts
from Wikipedia articles in English. Because the alti-
tude values are 0 by default, they did not provide any
capacity in our test. Table 3 shows the results.
Table 3: Experimental capacities for KML files with path
objects consisting of between 100 and 1000 coordinate
triples of latitude, longitude and altitude values. The mes-
sage size refers to the original, i. e. uncompressed and un-
encrypted plain text.
Coord. File Message Ratio
triples size size
100 4,892 bytes 990 bytes 0.202
200 8,723 bytes 2,089 bytes 0.239
300 12,531 bytes 3,007 bytes 0.240
400 16,278 bytes 4,085 bytes 0.251
500 20,137 bytes 5,084 bytes 0.252
600 23,969 bytes 6,297 bytes 0.263
700 27,886 bytes 7,034 bytes 0.252
800 31,731 bytes 7,879 bytes 0.279
900 35,607 bytes 8,534 bytes 0.248
1000 39,549 bytes 9,723 bytes 0.246
The embedding capacity, i. e., the ratio between
file and message size, varies between 0.20 and 0.27,
depending on the degree of compression that the
2
Currently, as this is a proof-of-concept implementation,
only 8-bit character sets are supported.
SECRYPT 2008 - International Conference on Security and Cryptography
384