[Cryptography] Uses for novel or unusual kinds of cryptographic primitives
Ray Dillinger
bear at sonic.net
Mon Jul 14 15:22:41 EDT 2025
On 7/11/25 16:22, Pierre Abbat wrote:
> A friend of mine is trying to get me a grant for some ideas I have, including
> two ciphers and a hash function. They are a whole-message cipher, a keyed
> hash, and a self-synchronizing byte stream cipher. I'd like to include
> possible uses in the grant application.
>
> A whole-message cipher is like a block cipher, except that the block can be
> arbitrarily long.
First, you should know: grants are almost never awarded for proposed
ciphers, hashes, or cryptographic protocols.
Nothing you or I come up with will see any significant use or generate
any significant value anywhere until somebody well-known with lots of
cryptographic experience and prior successes in cracking things, spends
a good long time trying hard to crack it and comes up with no feasible
attacks.
These professionals are unlikely to examine a proposal coming from a
relatively unknown source. Such people are rare and the number of
proposed ciphers and hashes per year is more than a hundred times the
number they could reasonably investigate. They concentrate their efforts
mostly on things already in use, things developed by well-known people
with established history of developing secure things, or proposals which
have already been examined by other professionals and are now getting
more attention because some standards committee somewhere is considering
adopting them.
Honestly your best bet of getting your proposals a reasonably serious
evaluation is to find a university professor who is teaching a
cryptanalysis class. It is reasonable for such an instructor to give his
students a dozen proposals of unknown quality and award credit to
students for developing attacks on them. That said, cryptanalysis
courses and professors teaching them are also quite rare, and most are
taught without such a "practicum" project.
Second, constructing a _secure_ cipher is not too hard once basic
principles like the Feistel construction and nonlinearity are
understood. But it requires deep art to construct a secure cipher which
is also competitive in compute power, memory requirements, flexibility,
and speed. You need to evaluate your proposed ciphers and hashes and do
the easy work of comparing their merits on those other requirements.
Demonstrate that at least in some combination of requirements, they are
equal or superior, before attempting to occupy anyone's time and effort
in determining the much harder question of whether they provide
comparable security.
Third, I think most cryptographers implement a whole-message cipher at
some point. I certainly did, as an exercise. But the general consensus
is that conventional (block) ciphers are secure in practice, cheaper in
compute power (particularly memory and the burden of handling memory
securely), and more flexible in application because they can be used in
a pipeline or as a filter allowing decryption of blocks as they are
received instead of delaying decryption until the whole message is
complete and its length is known.
And it's easy to use an existing block cipher as a whole-message cipher
if needed; simply encrypt using CBC mode, take the mode state remaining
after the last block, and use it as the initialization vector (starting
CBC state) to re-encrypt the ciphertext from the start. Easy or not,
this "cipher doubling mode" is not used in practice, mostly due to the
above practical concerns. It is at least double the CPU requirement and
imposes an additional memory requirement the size of the whole message.
But if someone determines that they need a whole-message cipher, for any
reason, they will most likely use this cipher-doubling mode. So its
burdens in memory cost, compute power, etc, should be your baseline for
comparison when you're determining whether, even in the very obscure
case where someone wants a whole-message cipher, your proposal is
potentially superior to an off-the-shelf solution and therefore worth
someone's effort to actually evaluate its security.
> I've also invented a self-synchronizing byte stream cipher named Daphne. Most
> stream ciphers I've heard of, including pre-computer ones like Enigma, are
> synchronous ciphers: if a byte or letter gets corrupted in transmission, that
> byte or letter, and no other, will be corrupt on decrypting, and if a byte or
> letter is lost, the decryption produces garbage from then on.
First your characterization of stream ciphers is incorrect, or uses a
technical term incorrectly. One *garbled* character does not affect the
rest of the message; it simply results in one garbled character of
output. One *missing* character would affect the rest of the message
because after missing a character the sender and receiver are at
different points in the keystream.
Second, you're describing a well-known property of Synchronous Stream
Ciphers. That property is why Self-Synchronizing stream ciphers have
already been invented.
See https://en.wikipedia.org/wiki/Stream_cipher for relevant discussion.
Third, if you examine the existing solution provided in that
encyclopedia article, you'll see that this is essentially the use of the
CFB block cipher mode, applied to a block cipher whose "block" is one
character long. A missing character in a self-synchronizing stream
cipher results in two garbled characters at output.
Bear
---
"The time has come, the walrus said, to speak of many things: of shoes
and ships and sealing wax, and cabbages and kings. And why the sea is
boiling hot, and whether pigs have wings."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.metzdowd.com/pipermail/cryptography/attachments/20250714/f72af028/attachment.htm>
More information about the cryptography
mailing list