I am a CUDA developer, I am assisting undergrad students in implementing AES on GPU.
They don’t have much knowledge about cryptography also this is the first time I am working on it. I have a few questions if anyone could answer them.
-
How do we implement the AES, I mean what should be the best DATA to encrypt and show speedup on GPU? Should we encrypt some CD? Or sensitive data such as Credit card numbers? In short, what should be our data source?
-
What mode of operation of AES in well suitable for GPU?
-
The students were asked about the Input bit stream rate, would anyone shed light on this one? Cause the way I thought was, it should be dependent on the data size. And that comparison can be drawn between GPU and CPU on the basis of datasize.
Thanks in advance.
I’m not really familiar with GPUs, so can’t really answer question 2. However, for the other two:
Point 1. AES doesn’t care what you encrypt, it’s just bits. Just find a large file, so that you can show statistically significant speedup. You won’t be able to prove much about the (possible) speedup of your implementation by encrypting a few bytes. Of course, that’s for “functional” speed, depending on how fast your implementation is, you might actually be limited by RAM or disk transfer speeds. So, you might as well just time how long it takes to encrypt data you generate on the fly (say like a counter), thereby ensuring that the data doesn’t need to be read from a disk/RAM.
Point 3. AES is a block cipher, the input size is fixed to 128 bits (16 bytes), nothing you can do to change that. The input data rate is going to depend purely on how fast your can process data.