With the term GPU programming, I'm referring to highly parallelizable computing in general.
Lastly, I have built a bit of a background in cryptography. So I have started to wonder if/where GPU programming is applicable for cryptographic use. I am thinking that in most use cases it will offer little to no advantage because cryptographic algorithms from their are build around the concept of offering little to no advantage on parallelization cause this will probably need to consider alternative security models and also since on some occasions we want data dependencies to exist. For example in block ciphers or in stream ciphers (e.g. AES or Salsa), however parallelization it may offer a small advantage in cipher block chaining. But on the other hand, most modern processor architectures (e.g. x64 or ARMv8) has already built-in instructions for a round of AES or for some hash functions and they also have SIMD instructions which can help on some occasions. But let's not limit our scope, cryptography is not only about these schemes and these primitives. What about asymmetric cryptography primitives? And also what about the "newborn" fields like FHE, MPC, ZKP, or Lattice Based Cryptography?
To summarize :
- Do we want to allow/Have we allowed parallelization to enter the cryptographic field? If yes, will this need us to reconsider the security models?
- Which are the most common cryptographic primitives that are parallelizable by design?
- What about the "newborn" fields like FHE, MPC, ZKP, or Lattice Based Cryptography?