Frederick Gotham
unread,Mar 31, 2020, 2:50:46 PM3/31/20You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
I have triple-posted this to sci.crypt, comp.lang.c++, comp.lang.c. (I would have taken more flack for cross-posting).
I'm currently writing a paper on a cryptographic technique I have come up with. I hope to publish before the end of April.
When encrypting/decrypting a file of size from about 500 kB to 500 GB, I shall aim for my technique to be comparatively fast to the likes of Rijndael, Twofish, Serpent.
When encrypting/decrypting a small input, e.g. from 1 byte to 1 kB, my technique will be incredibly slow, as significant computation is required to load in the key and transform the first block. (The first block gets special treatment). If you had a million small files to encrypt separately, it would take thousands of times longer than if it were one large file.
It is the time taken to load in the key and transform the first block that shall make my technique far less susceptible to brute-forcing. I hear that the Blowfish algorithm was admired for this reason because loading in the key is as expensive as encrypting 4 kB of data.
Has anyone any thoughts on deliberately obfuscating the first step of an encryption algorithm, with the consequence of severe inefficiency when encrypting small files, but with the aim of making brute-forcing extremely time-consuming?
I'm coding my technique in C++ for multi-threaded high performance on modern PC's (and supercomputers). I've got an x86-64 machine with 20 cores to test this on.
Also I'm coding my technique single-threadedly in C for minimal ROM and RAM usage on microcontrollers. I won't be able to get it small enough for 8-bit microcontrollers, but a 32-Bit PIC should be more than powerful enough.