2019-2020信息安全系统设计基础 20175306 20175309 20175326 实验二 固件程序设计
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加密安全模块;