I am looking for block cipher algorithms based on Feistel networks. The algorithm is required to not use data-dependent table lookups (or data-dependent rotations) or modular additions/multiplications.
I didn't wish to post an answer because I don't want invent any scheme that may cause security hole in somebody elses' system. But here I'll do a bit of illustration for you.
Because both Gimli and Keccak have large enough block size in their typical instantiation, we can simply put key in one half and cipher block data in another half (
zero-extend if needed repeat key bytes if needed, as is being done with ChaCha20 and Salsa ciphers):
Gimli: [ data 128 bits | key 128,192,256 bits ] 384 bits.
Invoke the permutation:
Gimli: [ Random....... | Bitstring........... ] 384 bits.
And bring it into the Feistal network:
[ Block half A | Block half B ] // Plaintext block. | | | Key V data:->[Permute]->[+] | | V V [ Block half A | Block half B'] | | V Key' | [+]<-[Permute]<-:data | | V V [ Block half A'| Block half B'] // Ciphertext block.
Possible ways to increase security:
Increase the number of rounds from 2 to higher,
Derive a key schedule for example by running the permutation in XOF sponge mode.