[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# Re: really undetectable crypto made somewhat practical

```> I'm on FCPUNX instead of regular Cypherpunks, so please
> excuse me if I'm a little behind the thread.
>
Few on the cypherpunk list replied to my post, so you didn't miss
anything important.

> Instead of hashing just the word in an effort to get stego
> bits, you could hash a key along with the word. In order to
> get the intended hash you would need to know the key. Since
> you're probably hashing a whole block of 512 bits (or
> whatever's specified in the algorithm) appending a key
> should not affect the speed of the system. I'm certain
> that this would increase the security, possibly enough
> that you wouldn't need to use a regular encryption
> algorithm (but I wouldn't bet on it).
>

I like your suggestion, although not for the reason you suggested it
(although your use is a good idea, too). The use of keyed hashes solves
one of the problems I saw with my scheme.  The main problem I saw with my
scheme was that it might be possible to detect that an innocuous message
was conveying a hidden encrypted message by analyzing the statistical
properties of the relevant hash bits.

Problem:

If the words in a message are chosen so some of their hash bits (say, 4
bits per hash) combine to form an encrypted message, then those combined
hash bits would be suspiciously cryptographically random, whereas the
combined hash bits of a message that was not created for the purpose of
conveying an encrypted message would not necessarily be cryptographically
random.  It is conceivable that a program could be written that uses
this difference to test if a message is conveying a hidden encrypted
message.

Solution:

Rather than using an unkeyed hash, which gives Eve the ability to
generate the relevant block of combined hash bits and test them for
certain properties, use a keyed hash.  Since Eve does not know the key
used to hash the words in the message, she will not be able to generate
the relevant block of combined hash bits and will not be able to perform
meaningful analysis of the properties of those bits.

Further analysis:

By hashing words and then using only the first 4 hash bits, what you are
really doing is sorting all words into 16 groups.  Group 0 consists of
all words whose first four hash bits are 0000, group 1 consists of all
words whose first four hash bits are 0001, ..., group 15 consists of all
words whose first four hash bits are 1111.

If a message is constructed by selecting words so their first 4 hash
bits combine to form an encrypted message, then, if the message is long
enough or you send enough messages, you will probably select words
"evenly" from each of the 16 word groups.  However, I can think of no
reason to assume the distribution of group selections would be "even" for
normal messages.  Maybe, by some weird fluke, normal messages are mostly
constructed from words in groups 1, 3, 4, 9, and 14, for example.

By using a keyed hash, your not stuck using a fixed set of word groups.
A different hash key will sort the words into different groups.  Hash
keys effectively prevent Eve from knowing which words in your message
came from which groups, thus preventing her from determining if words
were chosen "evenly" from each group.

[email protected]

```