Given that I have two pieces of data:

  • A large piece of encrypted data.
  • A small, fixed-size piece of random data.

I want to be able to transmit both pieces of data together, but I don't want the second piece of data to be readily available to a third party, but easily retrievable at the other end, assuming they know how it was hidden. It can't be encrypted as well.

For each message both pieces of data will be different.

Given the above, and assuming that an attacker has the knowledge that the payload they receive actually has both the above pieces of data is there any way to do some form of analysis to determine what the small piece of data is?

  • 1
    It would help to edit the question to provide some more context, motivation and other background (see the faq), so we can help with the bigger picture you're trying to address.
    – nealmcb
    Apr 30 '11 at 0:52

If the intended receiver knows "how it was hidden", but not the attacker, then this means that there is a "secret convention", shared between the sender and receiver, and applied to the piece of random data which you want to keep confidential. Regardless of how you want to call it, this is encryption (both legally and mathematically, that's what you are doing). You would have better luck actually using a proper encryption algorithm rather than a custom game of hide-and-seek.

Possibly, you may want to have the software use by the receiver "know" where to seek for the random data, hardcoded in the executable. This is still encryption, with a hardcoded key embedded in the software (so really not very secure, because attackers tend to have a copy of the software, and to know how to reverse-engineer code). Still, using AES with a hardcoded key (if you do not want to bother the receiver with key or password management) would still fare better (not good, but better nonetheless) than mixing your random data at "discrete" emplacements.

For the question you actually asked, properly encrypted data is indistinguishable from random bytes -- otherwise, this would be felt as a weakness of the encryption system.


No, encrypted data is supposed to look completely random. so if you hide your random data in the encrypted data there's no way the attacker can say what is random or encrypted.

  • That was my gut feeling too, but I felt like I should check since sometimes these things have a funny way of breaking in ways you don't expect. Apr 29 '11 at 9:11
  • @Matthew Scharley What is the random data used for? Apr 29 '11 at 9:13
  • @WZeberaFFS: It's the key for synchronous encryption. I'm thinking of implementing a file format as an intellectual exercise. I'm not looking at keeping it away from anyone who seriously wants to break into it (CIA, or other TLA organisations), if someone wants to try every single seed to a CRNG to retrieve the key, then try decrypting a file, checking the result against a checksum... let them have at it. I just want to avoid trivial ways to break open the file in 10 minutes. Apr 29 '11 at 9:23
  • 1
    @Matthew Schnarley never send the password like that! Cant u have a predefined key at the receiver? Apr 29 '11 at 9:43
  • 2
    @Matthew Do NOT send the key in plaintext. EVER. :)
    – Steve
    Apr 29 '11 at 16:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.