2018-2019-1 20165202 20165210 20165214 实验二 固件程序设计
2018-2019-1 20165202 20165210 20165214 实验二 固件程序设计
一、实验内容
- 安装MDK,JLink驱动,运行uVision4,破解MDK
- KEIL-MDK 中添加Z32 SC-000芯片库,完成LED实验
- 完成UART发送与中断接收实验
- 理解国密算法标准SM1,SM2,SM3,SM4并用
gcc
和gcc-arm
编译 - 完成SM1加密实验
二、实验步骤
-
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
-
运行
exp2/软件资料/MDK4.74/.exe
安装MDK-ARM -
安装JLink
-
破解MDK4.74:复制CID到keil-MDK注册机中,Target选择ARM,点击generate生成LIC
-
将LIC复制到keil4中的LIC输入框,点击Add LIC,破解完成。
-
-
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
-
运行
exp2\软件资料\MDK-ARM-SC000\MDK-ARM_AddOn_SC000_Support.exe
安装SC000库
-
搭建Z32工程基础编程环境:建立
new uVision Project
,选择完安装路径后,弹出芯片库选择框,在下拉框中选择Generic SC000 Device Database
,在弹出框中点开ARM目录,选择SC000。 -
打开
实验1-LED 闪烁\Z32HUA.uvproj
以打开LED闪烁实验项目,编译项目生成实验1-LED 闪烁\bin\Z32HUA.bin
-
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
-
关闭Z32电源,再打开,下载完的程序自动运行,可以看到核心板上LED灯闪烁。
-
-
完成UART发送与中断接收实验
- 打开
实验 2-UART 发送与中断 接收\Z32HUA.uvproj
以打开UART 发送与中断 接收实验项目,编译项目生成实验 2-UART 发送与中断接收\bin\Z32HUA.bin
- 将实验箱接入电源,连接实验箱与电脑,用 9 针串口线将 Z32 模块的串口与电脑 USB 接口连接,打开Z32下载调试工具
软件资料\Z32下载调试工具\NZDownloadTool.exe
打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,显示1设备已连接后,点击浏览,选择\实验 2-UART 发送与中断接收\bin\Z32HUA.bin
,点击下载,绿色进度条加载完成后,程序下载成功 - 打开串口助手,设置相应参数。
- 关闭Z32电源,再打开,下载完的程序自动运行,在串口调试助手的字符串输入框输入字符串“abcdefgh”,然后点击发
送按钮。
- 打开
-
理解国密算法标准SM1,SM2,SM3,SM4并用
gcc
和gcc-arm
编译- SM1:对应密码学中分组密码算法,是由国家密码管理局编制的一种商用密码分组标准对称算法。算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片中,调用该算法时,需要通过加密芯片的接口进行调用。
- SM2:对应密码学中公钥密码算法RSA,是由国家密码管理局于2010年12月17日发布,全称为椭圆曲线算法,用于加解密及数字签名。
- SM3:对应密码学中摘要算法MD5,是中国国家密码管理局于2010年公布的中国商用密码杂凑算法标准,适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。
- SM4:对应密码学中分组密码算法DES,于2006年公布,用于无限局域网产品使用,这是我国第一次公布自己的商用密码算法。
-
完成SM1加密实验
- 打开
实验 8-SM1\Z32HUA.uvproj
以打开UART 发送与中断 接收实验项目,编译项目生成实验 8-SM1\bin\Z32HUA.bin
- 将实验箱接入电源,连接实验箱与电脑,用 9 针串口线将 Z32 模块的串口与电脑 USB 接口连接,打开Z32下载调试工具
软件资料\Z32下载调试工具\NZDownloadTool.exe
打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,显示1设备已连接后,点击浏览,选择\实验 8-SM1\bin\Z32HUA.bin
,点击下载,绿色进度条加载完成后,程序下载成功 - 打开串口助手,设置相应参数。
- 关闭Z32电源,再打开,下载完的程序自动运行,显示屏显示“SLE4428 实验!请插入 IC 卡.”。插入IC卡后:用户代码为:”,第四行显示用户代码“D27600000400”。再按下矩阵键盘的“A”键,屏幕 第一行显示提示“按-A 键校验密码”并在第二行显示两个字节的校验密码 “校验 0xFF,0xFF”。按下矩阵键盘的“A”键,屏幕第三行显示“校验成功”,第四行显示校验 剩余机会“剩余机会:8 次”。
- 按下矩阵键盘的“A”键,则屏幕第一行显示“加密解密实验”,第二、三行分别显示选项“1.加密”,“2.解密”。按“1”键选择加密,屏幕第一行显示“观看串口调试 助手”,第二行显示“A 键确认加密”。此时,串口调试助手显示原始数据和 加密密钥。按下“A”键确认加密后,屏幕第三行显示“加密完成”,第四行显示提示 “A 键存入 IC 卡”。串口调试助手显示加密后的数据。按“A”键,将加密数据存入 IC 卡,此时串口显示“已将数据写入 IC 卡”。 屏幕回到加密解密实验选择菜单。
- 下面进行解密实验。按“2”键选择解密实验后屏幕显示“观看串口调试助 手 A键读取IC卡数据”。按“A”键后,此时屏幕显示“读取成功 选择密钥解密:1.正确密钥 2.错 误密钥”。串口显示“读取的数据:为:0x7E 0xDC 0xA3 0x7B 0xBA 0x53 0x84 0xAC 0x0B 0x75 0x50 0x45 0x2E 0xEC 0x4F 0x4F”。按“1”键选择正确的密钥后,屏幕提示“A 键确认解密”,此时串口显示“将 使用以下密钥进行解密:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F”。按“A” 键确认解密后,屏幕提示“解密完成 A 键返回”,此时串口显示 “解密后的数据为:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F”。按“A”键返回加/解密选择菜单。
- 使用错误密钥解密:菜单中按“2”进行解密实验,用错误的秘钥解密。按“A”键后,此时屏幕显示“读取成功 选择密钥解密:1.正确密钥 2.错 误密钥”。串口显示“读取的数据:为:0x7E 0xDC 0xA3 0x7B 0xBA 0x53 0x84 0xAC 0x0B 0x75 0x50 0x45 0x2E 0xEC 0x4F 0x4F”。按“2”键选择错误的密钥后,屏幕提示“A 键确认解密”,此时串口显示“将 使用以下密钥进行解密:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00”。按“A” 键确认解密后,屏幕提示“解密完成 A 键返回”,此时串口显示 “解密后的数据为:0xB9 0x8C 0xB6 0x40 0xA2 0xD2 0x83 0xD0 0x64 0x6E 0x54 0x26 0x86 0x6D 0x5A 0xF5”。而正确的原始数据为:“0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F”,所 以解密失败。
- 打开
三、实验过程中遇到的问题和解决方案
- 问题1:电脑无法识别Z32
- 问题1解决方案:用实验箱开关代替Z32开关,进行两次开关后可正常识别
四、实验体会与总结
本次实验学习了新的知识点和命令
- 关于国密算法标准SM1,SM2,SM3,SM4
- 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。密钥长度和分组长度均为128位。
- SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
- SM2为非对称加密,基于ECC(椭圆曲线加解密)。该算法已公开。SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
- SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
- SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。