2017-2018-1 20155225 20155229 实验二 固件程序设计
2017-2018-1 20155225 20155229 实验二 固件程序设计
实验目的
- 了解MDK原理,并学会破解。
- 学习GPIO原理,掌握Z32安全模块驱动LED的工作原理。
- 了解sm系列sm1、2、3、4国密算法,掌握各个算法的加解密算法。
- 学习串口通信原理,掌握SP3232芯片的使用方法。
实验步骤
固件程序设计-1-MDK
- 0. 注意不经老师允许不准烧写自己修改的代码
- 1. 两人(个别三人)一组
- 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
- 3. 提交破解程序中产生LIC的截图
- 4. 提交破解成功的截图
固件程序设计-2-LED
- 0. 注意不经老师允许不准烧写自己修改的代码
- 1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 3. 实验报告中分析代码
芯片库安装截图:
Led灯截图
代码分析:
固件程序设计-3-UART
- 0. 注意不经老师允许不准烧写自己修改的代码
- 1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 3. 实验报告中分析代码
代码分析:
主函数:
固件程序设计-4-国密算法
- 0. 网上搜集国密算法标准SM1,SM2,SM3,SM4
- 1. 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
- 2. 四个算法的用途?
- 3. 《密码学》课程中分别有哪些对应的算法?
- 4. 提交2,3两个问题的答案
- 5. 提交在Ubuntu中运行国密算法测试程序的截图
四个算法的用途:
- ①sm1:采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
- ②sm2:此算法就是ECC椭圆曲线密码机制
- ③sm3:此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
- ④sm4:此算法用于无线局域网产品。
对应的算法:
- sm1:分组密码算法
- sm2:ECC椭圆曲线密码
- sm3:杂凑算法
- sm4:分组算法
sm2
sm3
sm4
固件程序设计-5-SM1
- 0. 注意不经老师允许不准烧写自己修改的代码
- 1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 3. 实验报告中分析代码
代码分析:
实验中的问题及解决过程
问题一:
在做实验四,国密算法sm2时,编译出现以下问题:
上网查找资料后显示,需要安装
两个库
sudo apt-get remove openssl libssl-dev
sudo apt-get install openssl libssl-dev -y
接着,出现多个变量未定义的问题
在编译时添加参数-lssl -lcrypto
能解决
问题二:
在做国密算法sm4时,整个编译三个代码,一直不成功,出现以下错误
单独编译sms4时和单独运行sm4/sm4test时是成功的。
我觉得好像sms4代码没什么用,于是,我删除了sms4代码
学到的知识
对Z32应用程序的框架结构有了一定的了解,同时在学习国密sm1、2、3、4这四种算法的加解密算法时也了解了它们与国际上类似算法的不同之处。