[Cryptography] New White Paper: GhostLine - Information-Theoretically Secure Multi-Party Chat
Patrick Chkoreff
pc at fexl.com
Wed Sep 10 06:31:27 EDT 2025
On 9/8/25 5:17 PM, Magnus Ahltorp wrote:
> I don't know how serious your question is, but I'll answer it seriously.
I do have a serious question, but unfortunately the example I used
clouded it because it was of the form "Well, apart from this one fatal
vulnerability, how good is this?" That's not what I intended.
> Having no encryption in each step, and instead using a hash, ensures that a known-plaintext attack in any 256-bit block of the string will trivially disclose the rest of the string.
Yes, that's why I said this:
> I understand the higher risk of key compromise: namely, that if you know any one of the 256 bit blocks in the OTP sequence, you therefore know all the subsequent blocks to infinity. There are ways to mitigate that.
As you say, known-plaintext is one way to uncover a single 256-bit
block, and thus uncover all the subsequent blocks.
Indeed there are ways to mitigate that. Kristian gave one example:
> First sequence is x1, x2, …, generated as x_{i+1} = SHA-3-256(«0» || x_i), which is almost your sequence.
>
> Second sequence is y1, y2, …, generated as y_i = SHA-3-256(«1» || x_i), which is the actual pseudo-random sequence.
There the entire sequence is determined by the 256-bit quantity x1,
which serves as the shared secret key. The knowledge of any y[i], by
known plaintext or any other means, does not tell you anything about y[i+1].
You also mention OFB with key and IV, based on some fundamental block
encryption operation. That too is a way to produce an unguessable key
stream which is XORed with the plaintext -- and that key stream cannot
be easily compromised.
So, I understand that the simple hash chain I described is horribly
vulnerable to compromise. My deliberate over-simplification clouded the
true nature of my question.
My real question regards the suitability of using an unguessable key
stream that is generated by hashing ONLY -- given that it avoids the
possibility of compromise by knowing a single block. That is to say, no
AES or any other kind of block cipher is involved, just a plain XOR of a
purely hash-based key stream against the plaintext.
The second question is, how long can you "pull" on that one key stream,
treating it like an indefinitely long OTP where you have to keep your
last offset to avoid reusing key material?
Yes the entire thing hinges on a single 256-bit key, generated perhaps
by rolling 64 of those 16 sided dice. As we know, 2^256 is a literally
astronomically big number:
115792089237316195423570985008687907853269984665640564039457584007913129639936
I'm wondering, is it "safe" in some sense to just keep pulling on the
one key stream sequence indefinitely, even for petabytes of data?
-- Patrick
More information about the cryptography
mailing list