我是CUDA开发人员,我正协助本科学生在GPU上实施AES。 他们对密码学知之甚少,这也是我第一次开展这项工作。如果有人能回答,我有几个问题。
我们如何实现AES,我的意思是什么应该是加密和显示GPU加速的最佳数据?我们应该加密一些CD吗?还是敏感数据,如信用卡号码?简而言之,我们的数据源应该是什么?
AES的哪种操作模式非常适合GPU?
学生被问及输入比特流速率,有人会对这一点有所了解吗?因为我认为的方式,它应该取决于数据大小。并且可以在数据量的基础上在GPU和CPU之间进行比较。
提前致谢。
答案 0 :(得分:1)
我对GPU并不是很熟悉,所以无法真正回答问题2.但是,对于其他两个:
要点1. AES并不关心您加密的内容,它只是位。只需找到一个大文件,这样就可以显示统计上显着的加速。通过加密几个字节,您将无法充分证明实现(可能)加速。当然,这是“功能”速度,取决于您的实现速度,实际上可能受RAM或磁盘传输速度的限制。因此,您可能只需要花费多长时间来加密您即时生成的数据(比如计数器),从而确保不需要从磁盘/ RAM中读取数据。
要点3. AES是块密码,输入大小固定为128位(16字节),您无法改变它。输入数据速率将完全取决于您处理数据的速度。
答案 1 :(得分:0)
你不在乎:通常,大的东西,如iso或600MB的随机都很好
GPU使用并行化,因此您最好坚持使用ECB。否则,算法无法并行化
费率与数据大小无关:它的大小/处理时间。在cuda的情况下,你必须考虑转移到设备/进程/转回(内存复制远不是处理方面的小)=>除非你能够大规模并行化,否则你会浪费时间而不是获胜。