实验报告
密码引擎的设计与实现
密码引擎-1-OpenEuler-OpenSSL编译
- 下载最新的OpenSSL源码
- 用自己的8位学号建立一个文件夹,cd 你的学号,用pwd获得绝对路径
- 参考https://www.cnblogs.com/rocedu/p/5087623.html先在Ubuntu中完成OpenSSL编译安装,然后在OpenEuler中重现
![]()

密码引擎-2-OpenEuler-OpenSSL测试
在Ubuntu编写代码测试OpenSSL功能,包含Base64,SM2,SM3,SM4算法的调用,然后在OpenEuler中重现
提交代码链接和运行结果截图
sm2

sm3

sm4

密码引擎-3-电子钥匙功能测试
1 解压“龙脉密码钥匙驱动实例工具等”压缩包
2 在Ubuntu中运行 “龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\linux_mac”中例程,提交运行结果截图
3 加分项:运行“龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\windows”中例程,提交运行结果截图

密码引擎-商用密码算法实现1
参考https://weread.qq.com/web/reader/2fb3259071ef04932fbfd2ekc81322c012c81e728d9d180和网上资料,用C语言实现商用密码算法SM3,SM4,SM2
sm2

sm3

sm4

密码引擎-加密API研究
密码引擎API的主要标准和规范包括:
1 微软的Crypto API
2 RAS公司的PKCS#11标准
3 中国商用密码标准:GMT 0016-2012 智能密码钥匙密码应用接口规范,GMT 0018-2012密码设备应用接口规范等
研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代码链接。
内容:
0 查找各种标准的原始文档,研究学习(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)(5分)
1 总结这些API在编程中的使用方式(5分)
2 列出这些API包含的函数,进行分类,并总结它们的异同(10分)
3 以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口),把运行截图加入博客,并提供代码链接(10分)
参考博客:https://www.cnblogs.com/zym990901/p/14701963.html
实验一-密码引擎-加密API实现与测试
1 下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习 (5分)
2 实现GMT 0018-2012密码设备应用接口规范的接口函数,至少实现:
1)设备管理中的打开设备,关闭设备,获取设备信息,产生随机数(4分)
2)密钥管理导出 ECC 签名公钥;SDF_ExportSignPublicKey_ECC I.导出 ECC加密公钥∶SDF_ExportEncPublicKey_ECC J. 产生 ECC非对称密钥对并输出∶SDF_GenerateKeyPair_ECC
K. (6分)
3)非对称算法(至少支持SM2):外部密钥 ECC验证∶SDF_ExternalVerify_ECC ,内部密钥 ECC签名;SDF_InternalSign_ECC ,内部密钥 ECC验证∶SDF_InternalVerify_ECC 外部密钥 ECC加密∶SDF_ExternalEncrypt_ECC
(8分)
4)对称算法(至少支持SM4)∶SDF_Encrypt 对称解密∶SDF_Dccrypt 计算 MAC∶SDF_CalculateMAC(6分)
5)杂凑算法(至少支持SM3):· 杂凑运算初始化∶SDF_HashInit· 多包杂凑运算∶SDF_HashUpdate· 杂凑运算结束∶SDF_HashFinal(6分)
密钥管理要求(10分)
基于本标准设计、开发的密码设备在密钥管理方面,应满足以下要求; 1)设备密钥的使用不对应用系统开放; 2) 密钥必须用安全的方法产生并存储;
3) 在任何时间、任何情况下,除公钥外的密钥均不能以明文形式出现在密码设备外; 4) 密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取; 5) 密码设备内部存储的密钥应具备权限控制机制,防止非法使用和导出。
设备状态要求(5分)
基于本标准设计、开发的密码设备在设备状态方面,应满足以下要求; 1) 密码设备应具有初始和就绪两个状态;
2) 未安装设备密钥的密码设备应处干初始状态,已安装设备密钥的密码设备应处于就绪状态; 3) 在初始状态下,除可读取设备信息、设备密钥的生成或恢复操作外,不能执行任何操作,生成或恢复设备密钥后,密码设备处于就绪状态;
4) 在就绪状态下,除设备密钥的生成或恢复操作外,应能执行任何操作; 5) 在就绪状态下进行的密钥操作,设备操作员应经过密码设备的认证。
参考博客:https://www.cnblogs.com/zym990901/p/14701994.html
电子传输系统安全
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
浏览附件中的《Core.Software.Security.Security.at.the.Source.CN.软件安全.从源头开始》,《The.Security.Development.Lifecycle.CN.软件安全开发生命周期》两本图书,总结读书笔记,重点是SDLsecurity development lifecycle,安全开发生命周期),小组每人要提交一份自己的笔记(markdown文档,每人一份)
小组讨论电子公文传输系统,如何应用SDL对电子公文系统进行加团,给出一份加固计划书,其中重点要包含系统资源的分析,基于STRIDE模型的威胁分析以及基于DREAD模型的风险分析,人员分工,开发计划(每周至少提交一份进展报告),提交安全性设计方案(markdown文档,每组一份,不要发网上)
参考 《GMT 0007 2012 电子政务电子认证服务应用指南》, GMT 0054-2018 《信息系统密码应用基本要求》和 国家标准GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》提交一份系统安全性设计报告,重点是密码方案的应用(markdown文档,每组一份,不要发网上)
密码算法库:
龙脉uKey
Bouncy Castle(支持Java )(https://www.bouncycastle.org/latest_releases.html)
GMSSL 的API(支持Java,Go,PHP) http://gmssl.org/docs/docindex.html
OpenSSL
电子传输系统安全-进展1
见附件
电子传输系统安全-进展2
见附件
电子传输系统安全-验收
验收-1
0. 使用git从码云或github下载小组代码,提交过程截图
1. 在你的电脑上编译小组项目,提交 截图。
2. 在你的电脑上运行小组项目,提交 截图。







验收-2
1. 你们小组项目要保护的信息资产都有哪些数据?
2. 这些数据在数据库中的什么表中?提交数据库相关表的截图。
我们保护用户的密码
数据存在company库中的sys_user表中,这里面存放了用户的账户个人信息,包括用户id,用户名,密码,电话,邮箱,昵称,所属部门号,姓名等等

验收-3
1. 你们小组项目中为了保护数据资产用了什么密码算法?
2. 如果用到了对称算法,提交相关生成密钥和对数据加密的代码截图
3. 如果用到了非对称算法,提交相关生成密钥对和对数据加密,签名验签的代码截图
4. 如果用到了其他算法,提交相关的代码截图



浙公网安备 33010602011771号