Live data from Hacker News

Whitespace Steganography

darkside.com.au

1–10 of 21 posts

Re: Whitespace Steganography

#2
Earlier use of whitespace coding: http://www.templetons.com/tech/proletext.html

... Invisible formatting information is embedded in trailing spaces and tabs on the ends of lines in an ordinary looking document. In addition, "blank" lines contain spaces and tabs with hidden formatting meanings. Assuming typical 60 column lines, one can have over 300 different codings on the end of a line without going past 80 columns. (Far fewer are needed.) On a blank line, almost a billion codings are possible.

Documents with invisible formatting always start with a magic line, which begins with "" followed by version encoding. Thus documents can be spotted and formatted even without a Mime Content-Type header for this new text type. This otherwise useless combination of spaces and tabs on a blank line should virtually assure that random documents are not treated as formatted. ...

Re: Whitespace Steganography

#3
Whitespace is good, but with Unicode you can do even better by using invisible characters such as ZERO WIDTH SPACE (U+200B) and ZERO WIDTH JOINER (U+200D). I once made a proof of concept[1] using those two characters. It can converts arbitrary data into invisible text by using U+200B as bit 0 and U+200D as bit 1.

Most platforms (Twitter, Reddit, Hacker News) accepts those characters so you can paste invisible messages there. The illusion falls down as soon as you use a low-level text editor such as vim which marks exotic characters in a specific manner (by displaying their hexadecimal codepoint, as it happens). This is where whitespace can be more powerful, given its mainstream usage​‍​​‍‍‍‍​‍‍​‍​​​​​‍​‍‍​​​​‍​​​​​​‍‍​‍​​​​‍‍​​‍​‍​‍‍​‍‍​​​‍‍​‍‍​​​‍‍​‍‍‍‍​​‍​​​​​​‍‍‍​‍​​​‍‍​‍​​​​‍‍​​‍​‍​‍‍‍​​‍​​‍‍​​‍​‍​​‍​‍‍‍​​​‍​​​​​​‍​​​‍‍‍​‍‍​‍‍​​​‍‍​​​​‍​‍‍​​‍​​​​‍​​​​​​‍‍‍​‍​​​‍‍​‍‍‍‍​​‍​​​​​​‍‍‍​​‍‍​‍‍​​‍​‍​‍‍​​‍​‍​​‍​​​​​​‍‍‍​‍​​​‍‍​‍​​​​‍‍​​​​‍​‍‍‍​‍​​​​‍​​​​​​‍‍‍‍​​‍​‍‍​‍‍‍‍​‍‍‍​‍​‍​​‍​​​​​​‍‍‍​‍‍‍​‍‍​​‍​‍​‍‍‍​​‍​​‍‍​​‍​‍​​‍​​​​​​‍‍​​​‍‍​‍‍‍​‍​‍​‍‍‍​​‍​​‍‍​‍​​‍​‍‍​‍‍‍‍​‍‍‍​‍​‍​‍‍‍​​‍‍​​‍​​​​​​‍‍​​‍​‍​‍‍​‍‍‍​​‍‍​‍‍‍‍​‍‍‍​‍​‍​‍‍​​‍‍‍​‍‍​‍​​​​​‍​​​​​​‍‍‍​‍​​​‍‍​‍‍‍‍​​‍​​​​​​‍‍​​​​‍​‍‍​​​‍‍​‍‍​‍​​​​‍‍​‍​​‍​‍‍​​‍​‍​‍‍‍​‍‍​​‍‍​​‍​‍​​‍​​​​​​‍‍‍​​‍​​‍‍​​‍​‍​‍‍​​​​‍​‍‍​​‍​​​‍‍​‍​​‍​‍‍​‍‍‍​​‍‍​​‍‍‍​​‍​​​​​​‍‍‍​‍​​​‍‍​‍​​​​‍‍​‍​​‍​‍‍‍​​‍‍.

[1] https://github.com/foobuzz/ium

Re: Whitespace Steganography

#4
And it all falls apart if one is using a text editor which highlights trailing whitespace (like emacs).

The point of steganography is to hide that there is even a message; this fails at that.

Re: Whitespace Steganography

#5
post #3

Whitespace is good, but with Unicode you can do even better by using invisible characters such as ZERO WIDTH SPACE (U+200B) and ZERO WIDTH JOINER (U+200D). I once made a proof of concept[1] using those two characters. It can converts arbitrary data into invisible text by using U+200B as bit 0 and U+200D as bit 1. Most platforms (Twitter, Reddit, Hacker News) accepts those characters so you can paste invisible message…

This is slightly more recognisable though. One of the key things you're trying to achieve with steganography is for an adversary to not even notice you're trying to send a message, and ideally even if they suspect something you have plausible deniability (which may or may not be enough).

Steganography in the wild: https://www.youtube.com/watch?v=BgelmcOdS38

Re: Whitespace Steganography

#7
post #4

And it all falls apart if one is using a text editor which highlights trailing whitespace (like emacs). The point of steganography is to hide that there is even a message; this fails at that.

But if you saw that would you assume it's an attempt to hide a message? How often do you open up webpages in your editor and inspect the line endings?

All steganographic methods can be detected if you start actively looking for them. The point is it's very hard to know what to look for, especially if you come up with your own coding which you do not share publicly (off the top of my head: using commas and full-stops to encode a bitstream in tweets.)

Re: Whitespace Steganography

#8

If you want your Perl files to be invisible, Acme::Bleach hides all of your source code by encoding it as white space: http://www.perlmonks.org/?node_id=967004

A major problem with being a Perl developer is that nothing impresses me any more
Post reply on HN