The order of reading bits in blocks Let's say I have a cryptographic algorithm that encrypts on 128-bit blocks and makes 20 rounds. Each round has its own keys (one of 72 keys per round). We read blocks before each round. But we're introducing the bit reading order. We can read from the most significant bit or the least significant bit. But in total we can read the bits before each round at 128! ways. We only need to define 20 random 128-element permutations.

But this increases the keys, you need to store these permutations. Is it a good idea?

For the safety of this algorithm there must be some order of bit reading, we can't always read them according to a typical binary number reading scheme.
But this increases the keys, you need to store these permutations. Is it a good idea?


I wouldn't think so; not so much from a subkey storage perspective, but from a performance perspective.

Storage could be do-able; $\log_2 128! \approx 716.16$; $20$ of these could be stored in $1791$ bytes, although it is likely that you wouldn't store them in a storage-minimal way, but instead in a format that makes it more efficient to perform the 20 permutations.

On the other hand, performance would look to be hideous.  There isn't an obvious way for software to permute 128 bits in a random fashion efficiently; picking each bit up, and depositing it in target position is unthinkably slow.  About the best I can think of would be to emulate a Batcher sort of the 128 bits (with appropriate masks to control when you swap and when you don't) - that's still likely to be slow (especially when you consider you need to do it 20 times).

As for hardware, well, by throwing a large number of gates at the problem, you could make it run reasonably fast - however, there are a lot of better ways to speed up other ciphers if you have a lot of gates at your disposal.

Why do I say performance is important?  Well, if you don't care about performance, it's easy to design things that are quite secure (e.g. 8-AES-256, using 8 independent keys); unless your design has some advantage over that, your cipher would appear to be pointless.