2019-2020-1 20175313 20175328 20175329 实验二 固件程序设计
一、实验内容
(1)MDK
- 安装MDK,JLink驱动,用系统管理员身份运行uVision4
- 在“File”中选择“License Management”,在弹出的对话框中复制 CID,然后运行keil-MDK注册机,将CID 粘贴进去,产生LIC
- 将产生的LTC粘贴到“License Management”对话框中,开始破解
(2)LED
- KEIL-MDK 中添加 Z32 SC-000芯片库
- 在“Project”中选择“New uVision”以新建工程,在弹出的安装路径窗口中选择安装路径文件夹,并为工程命名,在芯片库选择框中选择库“Generic SC000 Device Database”,在“ARM” 结构目录中选择“SC000”,点击 OK,搭建完成
- 打开并编译“Z32开发指南\实验1-LED闪烁”目录的工程文件,产生后缀名为.bin 的可执行代码
- 将实验箱接入电源,用USB公对公线将实验箱的USB接口连接到电脑的USB接口上,打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,
- 当“NZDownloadTool”对话框中出现“1设备已连接”时,在“设备选择”中显示芯片型号,在“确认下载”一栏的“浏览”,选择Z32HUA.bin文件的文件路径,然后点击下载
- LED灯闪烁情况
- 代码分析:
- 1.系统初始化,中断设置使能所有
- 2.判断按键,返回boot条件,确认是否进行程序下载
- 3.设置 GPIO0 状态为上拉输出
- 4.进入循环程序,LED 灯间隔 100ms 闪烁
(3)UART
- KEIL-MDK 中添加 Z32 SC-000芯片库
- 打开并编译“Z32开发指南\实验8-SM1”目录的工程文件,产生后缀名为.bin 的可执行代码
- 将实验箱接入电源,用USB公对公线将实验箱的USB接口连接到电脑的USB接口上,打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别
- 当“NZDownloadTool”对话框中出现“1设备已连接”时,在“设备选择”中显示芯片型号,在“确认下载”一栏的“浏览”,选择Z32HUA.bin文件的文件路径,然后点击下载
- sscom接受和发送情况
- 代码分析:
- 1.系统初始化,中断设置,使能所有中断
- 判断按键,返回boot条件,确认是否进行程序下载
- 初始化Uart,使能Uart接口,配置Uart中断并使能
- 先发送单个字符“A”,换行,再发送字符串“Welcome to Z32HUA!”,换行,发送数字串“1234567890”,换行,再发送 16位数“0x AA”,换行
- 进入while循环程序,等待串口中断到来并判断数据是否接收完毕,若中断到来,转入执行串口中断服务程序,待接收数据完毕,Z32将数据发回串口助手
(4)国密算法
- 网上搜集国密算法标准SM1,SM2,SM3,SM4
- 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
- 四个算法的用途?
- 《密码学》课程中分别有哪些对应的算法?
SM1:对称加密。
- 其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
- 对应算法:AES
SM2:非对称加密。
- 由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
- 对应算法:ECC
- 编译运行截图:
SM3:消息摘要。
- SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。
- 对应算法:MD5、SHA-1
- 编译运行截图:
SM4:对称加密。
- 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
- 对应算法:DES
- 编译运行截图:
(5)SM1
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 实验报告中分析代码
- 打开并编译“Z32开发指南\实验8-SM1”目录的工程文件,产生后缀名为.bin 的可执行代码
- 将实验箱接入电源,用USB公对公线将实验箱的USB接口连接到电脑的USB接口上,打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别
- 插入IC卡
- 加密后使用正确密钥解密
- 加密后使用错误密钥解密
二、实验过程中遇到的问题及其解决方法
- 问题1:在对SM2的源代码进行编译时出现致命错误。
- 解决方法1:原因是ubuntu下缺少了部分组件,输入命令
sudo apt-get install libssl-dev
- 问题2:编译SM4源代码时,出现"collect2:ld返回1"
- 解决方法2:查看Linux编译时出现的错误提示,发现多了一个sms4.c文件,于是将其移除。
- 问题3:未使用系统管理员身份运行uVision4,导致无法获得密钥。
- 解决方法3:使用管理员身份重新进行如上操作,运行成功截图:
三、心得体会
- 有了上一次的教训,这次的实验我们提前进行的充分的预习,所以完成的较为迅速。中途也出现过一些问题,我们也都一同解决了。
- 三人组队,真的是"组队",没有那种一人单干的感觉。"臭皮匠们"已经逐渐踏上诸葛亮的道路了。