20175201 20175215 20175229 实验二 固件程序设计

  • 任务一 固件程序设计-1-MDK

  • 任务要求
    0. 注意不经老师允许不准烧写自己修改的代码
    1. 三人一组
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
    3. 提交破解程序中产生LIC的截图
    4. 提交破解成功的截图

  • 实验过程
    运行mdk474.exe,安装MDK-ARM;
    安装ULINK驱动;
    以管理员身份运行Keil uVision4,点击File->License Management,复制CID;
    运行Keil-MDK注册机,在CID中粘贴CID,在Target中选择ARM,生成LIC;

将注册机生成的LIC复制粘贴到keil4的“New License ID Code(LIC)”一栏中,点击“ADD LIC”,破解完成。
image.png

  • 任务二 固件程序设计-2-LED

  • 任务要求
    0. 注意不经老师允许不准烧写自己修改的代码
    1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
    3. 实验报告中分析代码

  • 实验过程
    运行MDK-ARM_AddOn_SC000_Support.exe文件,安装SCOOO库;
    用管理员身份打keil uVision4 MDK,点击Project->New uVision Project,选择安装路径文件夹;
    在芯片库选择框选择库Generic SC000 Device Database,点开ARM目录,选择SCOOO;
    image.png

image.png

打开Z32.uvproj工程文件并编译;
连接电脑和实验箱,打开NZDownloadTool文件,按住核心板上的Reboot按键,开两次电源,识别z32芯片,并下载Z32HUA.bin文件;
下载成功后,开关电源,就可以看到LED灯L2闪烁。

image.png
image.png

  • 代码分析
    主函数:

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

  • 任务要求
    0. 注意不经老师允许不准烧写自己修改的代码
    1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
    3. 实验报告中分析代码

  • 实验过程
    打开Z32HUA.uvproj,并编译;

下载生成的bin文件,并连接电脑和实验箱;

打开sscom42即串口调试助手,进行配置,串口号选择COM10,选择波特率为115200,选择校验位为Even,勾选“发送新行”和“打开串口”;

关闭电源再打开,程序自动运行,可以在串口调试助手看到实验现象。

image.png
image.png

  • 代码分析
    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-国密算法

  • 任务要求
    0. 网上搜集国密算法标准SM1,SM2,SM3,SM4
    1. 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
    2. 四个算法的用途?
    3. 《密码学》课程中分别有哪些对应的算法?
    4. 提交2,3两个问题的答案
    5. 提交在Ubuntu中运行国密算法测试程序的截图

  • 实验过程
    用途:SM1、SM2、SM3、SM4算法,从固件安全和数据安全两个维度,为数据存储安全建立了一道坚实的保护墙。将自主研发的国家商用密码算法应用到数据存储安全,是顺应了国产化需求的,也是实现数据安全自主可控道路上重要的一步。

对应算法:

SM1 算法未公开
SM2 算法ECC
SM3 算法MD5
SM4 算法DES

在Ubuntu中运行国密算法测试程序:

学习补充:
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

  • 任务五 固件程序设计-5-SM1

  • 任务要求
    0. 注意不经老师允许不准烧写自己修改的代码
    1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
    3. 实验报告中分析代码

  • 实验过程
    打开Z32HUA.uvproj文件并编译;
    将生成的.bin文件下载到实验箱,连接电脑与实验箱;
    打开sscom42即串口助手,完成相关配置后,关闭再打开实验箱电源开关,
    按照提示插入SLE4428 IC卡;
    按A键进行校验,校验成功后选择加密和解密;
    按1选择加密,再按A确认加密,在串口助手上可以看到观察明文、秘钥和密文;
    再按A键,将加密数据存入IC卡中;
    按2选择解密,选择正确秘钥后,再按A键确认解密,串口助手上可以看到解密后的信息;
    再按A键返回菜单。

03edfaf1416e3cb800b5196ebe56754.jpg
e18066b584e3ac94adb8ad9ac50c698.jpg
98ede6707c10747031d0c501d258181.jpg
bba343a6d7652302bc2043fc94a7d0b.jpg
719d812424ed4fac6c48b72ffaa6ead.jpg
11cd9c1d6d95a423912b42b40978955.png
622d294916423bf267bf0eb9f7114a7.png

  • 代码分析
    主函数:

系统初始化;
判断按键,返回 boot 条件;
初始化IC卡插入检测IO口GPIO6;
B:

按下A键,显示屏第一行“加密解试验”,第二、三行分别示“ 1. 加密”“ 2. 解密”两个选项。
加密:

SM1初始化;
进行SM1加密;
关闭SM1加密安全模块;
解密:

SM1初始化;
进行SM1解密;
关闭SM1加密安全模块;

  • 任务六 固件程序设计-6-清理
  • 任务要求
    实验结束后,把实验室原来的网线插回,否则以后做实验的同学无法开机

只有用实验室机器的小组做
提交你们小组使用的计算机的编号照片
提交插好网线的照片
提交盖好后盖的照片

  • 实验过程
posted @ 2019-11-11 14:40  20175201张驰  阅读(158)  评论(0编辑  收藏  举报