2019-2020-1 20175306 20175309 20175326 实验二 固件程序设计
实验步骤
1-MDK
- 参考云班课资源中“信息安全系统实验箱指导书.pdf”第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身份运行uVision4,破解MDK(破解程序中target一定选ARM)
File->License Management...->复制CID码->粘贴并选择“ARM”后再复制产生的LIC->将其粘贴回License Management的LIC框中->破解成功 提交破解程序中产生LIC的截图:
提交破解成功的截图
注意一定要用管理员身份运行uVision4,不然真的会失败!!!认真看好老师的任务细节!!
2-LED
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 代码分析
主函数:
-SystemInit ()
系统初始化;
if(0 == GPIO_GetVal(0))
{
BtApiBack(0x55555555, 0xAAAAAAAA);
}
判断按键,返回 boot 条件,确认是否进行程序下载;GPIO_PuPdSel(0,0);
GPIO_InOutSet(0,0);
设置 GPIO0 状态为上拉输出;while(1)
{
delay(100);
GPIO_SetVal(0,0); //输出低电平,点亮 LED
delay(100);
GPIO_SetVal(0,1); //输出高电平,熄灭 LED
}
进入循环程序, LED 灯间隔 100ms 闪烁。3-UART
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 代码分析
void UART_Irq Service(void) 是进行串口中断服务;
void UART_BrpSet(UINT16 set)是进行波特率设置;
void UART_Init(void) 是进行串口初始化;
void UART_SendByte(UINT8 dat) 是用于发送单字节;
void UART_SendString(UINT8 * str) 是用于发送字符串;
void uart_SendString(UINT8 buf[],length) 是用于发送某一长度的字符串;
void UART_SendNum(INT32 num) 是用于发送单个十进制整数;
void UART_SendHex(UINT8 dat) 是用于发送单个十六进制整数;
UINT8 UART_GetByte(*data) 是用于接收单字节;
void UART_Receive(UINT8 *receive, len) 是用于接收多字节;
4-国密算法
SM3杂凑算法:
SM3密码杂凑(哈希、散列)算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
对应MD5算法
运行截图
- SM4对称算法:
此算法采用非线性迭代结构,是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。
对应3DES算法
运行截图
- 代码来源:>https://blog.csdn.net/andylau00j/article/details/54427395
- 我们又查找了一些关于这两个算法的其他资料
SM3算法有消息填充、分块、迭代压缩三个步骤:
SM4
1.基本运算:SM4密码算法使用模2加和循环移位作为基本运算。
2.基本密码部件:SM4密码算法使用了S盒、非线性变换τ、线性变换部件L、合成变换T基本密码部件。
3.轮函数:SM4密码算法采用对基本轮函数进行迭代的结构。利用上述基本密码部件,便可构成轮函数。SM4密码算法的轮函数是一种以字为处理单位的密码函数。
4.加密算法:SM4密码算法是一个分组算法。数据分组长度为128比特,密钥长度为128比特。加密算法采用32轮迭代结构,每轮使用一个轮密钥。
5.解密算法:SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密铝的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
6.密钥扩展算法:SM4密码算法使用128位的加密密钥,并采用32轮法代加密结构,每一轮加密使用一个32位的轮密钥,共使用32个轮密钥。因此需要使用密钥扩展算法,从加密密钥产生出32个轮密钥。
7.SM4的安全性:SM4密码算法经过我国专业密码机构的充分分析测试,可以抵抗差分攻击、线性攻击等现有攻击,因此是安全的。
5-SM1
参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
连接与下载成功
剩下的步骤将用图片一张一张演示
按照提示插入SLE4428 IC卡;
按A键进行校验,校验成功后选择加密和解密;
按1选择加密,再按A确认加密,在串口助手上可以看到观察明文、秘钥和密文;
再按A键,将加密数据存入IC卡中;
按2选择解密,选择正确秘钥后,再按A键确认解密,串口助手上可以看到解密后的信息;
再按A键返回菜单。
- 代码分析
主函数:
- 系统初始化;
- 判断按键,返回 boot 条件;
初始化IC卡插入检测IO口GPIO6;
B:按下A键,显示屏第一行“加密解试验”,第二、三行分别示“ 1. 加密”“ 2. 解密”两个选项。
加密:- SM1初始化;
- 进行SM1加密;
关闭SM1加密安全模块;
解密:- SM1初始化;
- 进行SM1解密;
关闭SM1加密安全模块;
实验体会:由于本次实验是第二次实验,所以小组成员更有默契,配合起来也得心应手,在做实验的过程中也分工明确,可以让我们更快更好的完成实验。但是还是遇到了一些问题,首先就是试验箱等硬件问题,都通过更换和调试解决。其次就是在使用软件进行编译实验等问题,注意在使用软件时要用管理员身份运行。最后通过我们共同的努力顺利完成本次实验!!!