2021SC@SDUSC
1.项目描述
这是一个某公司委托的预研项目。
该公司主要产品之一是基于硬件芯片的加密卡/加密机。考虑到虽然当前政策倾向于批准基于硬件的加密设备,但是下一步可能会放开其他类型的实现形式,比如使用GPU加速运算的加密设备和服务,因此要预研使用CUDA/GPU加速的密码运算技术。
工作计划是在GMSSL(一个开源的密码算法和SSL库以支持国产密码SM系列算法为特色)中,使用GPU实现RSA、SM2等公钥算法。RSA的GPU实现可以参考libgpucrypto(一个使用CUDA的RSA开源实现项目)。具体工作需要改进libgpucrypto项目,并把改进成果应用到GMSSL中去。
本项目可以锻炼GPGPU编程能力,加深对密码原理和技术的了解,成果可以用在企业安全、云虚拟安全等环境。
GPU硬件使用NVIDIA GTX系列显卡,提供校园网上的远程访问和使用环境。
注1:如果不熟悉C而惯于使用Java,则可以把GMSSL换成OpenJDK,参考使用JCUDA(一个Java bindings for CUDA的开源实现)等实现。
注2:如果想做GPU相关,但是不想做密码技术,可以改题目内容为使用GPU的机器学习和/或大数据处理等等。可行性、具体内容另外讨论。
2.核心任务
使用cuda加速rsa或ecdsa/sm2,核心是加速计算X^Y mod Z。然后把rsa或sm2中需要计算X^Y mod Z的地方调用GPU计算。
3.核心代码
我负责分析的部分:
1、rsa,sm2,ecc算法的数学基础
2、gmssl中的rsa和sm2算法
3、libgpucrypto中的rsa算法
4、libgpucrypto中的cuda快速幂取模算法
5、ecdsa、ecc算法
本项目队友韦潇负责分析的核心代码是:
1.CUDA中SHA、AES、RSA在CPU和GPU性能对比以及线索分析
2.CUDA GPU中SM2算法设计
4.环境配置
在环境配置的过程中走了不少弯路,把这个曲折的过程分享出来
4.1需要的环境
linux上的cuda环境
4.2我的硬件环境
dell inspiron 7591
win10系统
bios版本:1.6
显卡型号:gtx1650
4.3 legecy u盘启动linux(失败)
失败原因:我的电脑不支持legecy启动
4.3.1 在vmware上安装ubuntu
新建虚拟机 选择典型(自定义应该也可以,感觉区别不大)
安装程序镜像文件
输入用户名密码
虚拟机名称和位置
分配磁盘空间
完成创建
4.3.2将ubuntu安装在
启动ubuntu虚拟机
选择中文在这里插入图片描述
选择暂时不连接wifi,也可连接wifi
选择安装第三方软件
选择其他选项
进入到下面自行分区界面后,可根据U盘大小可分出哪个是需要安装ubuntu系统的U盘,把提前分好的4个分区逐一通过减号删除,再点击删除分区后腾出的空闲重新新建,按照下表格重新新建号分区类别和格式(注意,要删除一个新建一个,逐个逐个来)
分区名称 | 分区类别 | 格式 | 大小 | 作用 |
---|---|---|---|---|
/ | 主分区 | ext4 | 尽量大一些,最好30G以上 | 根目录:用户存放个人资料,相当于D盘 |
/boot | 主分区 | ext4 | 建议1G以上 | Linux的内核及引导系统程序所需要的文件 |
swap | 逻辑分区 | 不需要 | 建议4G以上 | 运行内存 |
/home | 逻辑分区 | ext4 | 建议20G以上 | 系统盘:相当于C盘 |
修改后的分区
安装启动引导器的设备选择需要安装系统的U盘,然后点击“现在安装”