zoukankan      html  css  js  c++  java
  • 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-清理
    • 任务要求
      实验结束后,把实验室原来的网线插回,否则以后做实验的同学无法开机

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

    • 实验过程
  • 相关阅读:
    find-the-distance-from-a-3d-point-to-a-line-segment
    Distance Point to Line Segment
    Shortest distance between a point and a line segment
    Splitting and Merging--区域分裂与合并算法
    手写区域分裂合并算法
    free online editor
    SQL server ide
    online c++ compiler
    online sql editor
    Web-based SQL editor
  • 原文地址:https://www.cnblogs.com/20175201zc/p/11834620.html
Copyright © 2011-2022 走看看