3 ms·
> in fact one of the properties of good encryption is that output is indistinguishable from random noise Technically this is not correct, though your point abo
by throwawaymath 8y ago
> in fact one of the properties of good encryption is that output is indistinguishable from random noise
Technically this is not correct, though your point about high entropy nonetheless stands. Ciphertext indistinguishability (IND, and more generally computational indistinguishability) refers to the inability of a polynomial-time algorithm to differentiate between two different output streams of data, given some input stream of data. To be precise, it is sufficient for a ciphertext to achieve indistinguishability under an adaptive chosen ciphertext attack (IND-CCA2) if an attacker cannot distinguish which of two ciphertexts corresponds to a plaintext message with greater with 50% probability in polynomial time, even when they can arbitrarily decrypt ciphertexts of their choosing.
Academically speaking, distinguishability against a set of uniformly random bits is a nice model and a bar to strive for. In practice it's not necessary, and it's harder to achieve with public-key cryptography than secret key cryptography. AES's substitution permutation network should generally have output that appears uniform (except for special cases, like GCM). But public-key cryptosystems like RSA rely on so much algebraic structure to achieve their encryption that it's very regular to find some latent structure which clearly distinguishes ciphertext data from random data. This doesn't diminish the security, because you still can't distinguish between ciphertexts themselves in polynomial time. But from the perspective of attackers and onlookers, if it's not already obvious how a ciphertext was generated from context, it's usually not infeasible to figure it out by looking directly at the ciphertexts or their accompanying metadata. It is much harder to do this with hash functions.
There is not much research in cryptographically secure stenography because that sort of obscurity is usually not desirable except for very special cases. To combat the appearance of high entropy, I would use a specialized encoding algorithm that breaks the ciphertext into many short, variable-length fragments, then intersperses it into a commensurately larger corpus of randomly generated plaintext. Localized pockets of entropy would still be evident even if it's less "loud", so I'd then disguise them by putting them into e.g. very long URLs, which often have great length and pseudorandomly generated tokens.
With an actual research team and a few months I'm confident you could massage this plan into something pretty decently secure as long as the underlying cryptography wasn't too radical. The real question is why go through all the effort to impose secrecy on a platform that's clear antagonistic to it? If you're at the point of considering stenography for a direct messaging system, just message a redditor and ask them to chat with you on a different system for security.