能力验证与密评工具1——身份鉴别篇

网络与通信层身份鉴别
情景1:
2020年商用密码应用安全性评估能力验证题目-网络与通信层身份鉴别:“远程办公用户(A1)使用专用的SSL VPN客户端通过SSL VPN网关(C1)登录到单位内网。每次网络接入时,在用户和SSL VPN之间完成双向鉴别,同时通信数据在互联网流转时进行了机密性和完整性保护。”
在这里插入图片描述
图 1 远程用户(A1)与SSL VPN网关(C1)之间通信信道的TLCP报文
Ⅰ.使用工具:
①数字证书分析工具
②TLCP报文验签工具
Ⅱ.步骤:
①从Server Hello报文中导出SSL VPN的签名证书:可由公钥长度分析出证书对应的公钥是SM2证书、核对密钥用途、时间编码规则、CRL校验、起止日期等是否合规:涉及指标——D, A;
在这里插入图片描述
图 2 签名证书导出
在这里插入图片描述
图 3 SSL VPN签名证书分析
②TLCP协议的Server Key Exchange报文中有一个签名值:Sign{客户端随机数|| 服务端随机数 || 加密证书长度 || 加密证书值};作为鉴别数据。这个签名值是可以被验证的,我认为测评人员对该签名值进行验证,可以作为签名证书被正确、有效使用的主要证据;同时可以保护加密(用于密钥交换)证书的真实性,作为通信过程中重要数据传输测评单元的辅助证据。
该签名的构造结构如下:
在这里插入图片描述
图 4 TLCP签名构成结构
在这里插入图片描述
图 5 TLCP客户端随机数
在这里插入图片描述
图 6 TLCP服务端随机数、加密证书信息
将数据填入TLCP快速验签工具中,TLCP快速验签工具允许测评人员直接从加密扩展外壳中复制带04头和空格字段的公钥内容;
在这里插入图片描述
图 7 TLCP快速验签模块
该步骤涉及测评指标——D, A;
③2020应用方案中双向鉴别的SSL VPN.,在实际情况中使用的是单向鉴别;DAK指标应该判为:××× —— 0(一条通信信道视作一个测评对象)另外,关于这条的风险评估,应该是高风险;【这里可能存在的异议是:由通信信道报文抓包分析可得:客户端对服务端进行了身份鉴别且符合性为:√√√ 而服务端没有对客户端进行身份鉴别:×××,故量化评估得分为:—— 1 / 2 = 0.5(客户端与服务端相互鉴别视作两个对象)——我个人反对这种测评方法:因为1.双向鉴别本就是四级信息系统与三级信息系统之间的重要指标区别;2.网络与通信层面的测评对象是通信信道;】
④核对密码产品的商用密码认证证书:
在这里插入图片描述
图 8 题目背景
该步骤涉及指标:——K;
应用与数据层身份鉴别
情景1:
2020年商用密码应用安全性评估能力验证题目-应用与数据层身份鉴别:远程办公用户(A1)与分支机构用户(B1)都配发了智能密码钥匙(KA和KB),智能密码钥匙中存放了基于SM2算法的证书。用户登录应用前,都需要利用该智能密码钥匙,进行“口令+证书”的双因素身份鉴别后方能访问应用。
应用服务器(D1)调用签名验签服务器(D2)在用户登录时对用户的证书和签名进行验证。
Ⅰ.使用工具:
①数字证书分析工具
②证书链分析工具
③签名验证工具
④数据格式转换工具
Ⅱ.步骤:
测评对象远程办公用户A1:
①从测试用户1(远程办公用户A1)登录和操作过程中应用服务器和用户终端之间的通信数据中导出登录过程中使用的数字证书:C1.cer;
在这里插入图片描述
图 9 测试用户1与应用服务器通信报文-证书导出
在这里插入图片描述
图 10 测试用户1证书-用户与应用服务器通信报文导出
②从智能密码钥匙中导出远程办公用户A1的证书C11.cer、从测试用户1登录应用时签名验签服务器与应用服务器通信报文中导出C111.cer;核对C111.cer、C11.cer、C1.cer是否是同一张证书(主要核对证书序列号——不核对证书指纹的原因是);
在这里插入图片描述
图 11 应用服务器与签名验签服务器报文-证书导出
在这里插入图片描述
图 12 USBkey、应用服务器、签名眼验签服务器导出证书比对
该步骤涉及测评指标——D, A;
③导出远程办公用户A1的证书C11.cer所属的证书链,验证证书链签名的正确性、CRL合规性:
在这里插入图片描述
图 13 测试用户1证书链导出-USBKey
在这里插入图片描述
图 14 测试用户1证书链关系-加密扩展外壳演示
如上图:RSA证书通过Windows加密扩展外壳打开,可以自行关联验证证书链签名正确性以及证书撤销状态;题目中另一个测评对象:分支机构用户(B1)在登录应用系统时使用的是SM2证书,SM2证书链的签名正确性验证和CRL在线状态验证需要使用:证书链验证工具,见下图。
在这里插入图片描述
图 15 证书链验证工具载入SM2证书链
在这里插入图片描述
图 16 证书链验证工具分析SM2证书链
该步骤涉及测评指标——D, K;
④核查测试用户1登录过程中应用服务器的日志:
实施细则:
(1)从WireShark提取签名值:必须是字符串格式的Base64字符;
在这里插入图片描述
图 17 测试用户1与应用服务器通信报文签名值导出
(2)将提取到的Base64-字符串当作Base64格式输入到格式转换工具,输出Hex_Byte;
在这里插入图片描述
图 18 测试用户1与应用服务器通信报文签名值转换
(3)复制签名原文-Base64字符串,同时跟服务器日志中的原文信息做比对;
在这里插入图片描述
图 19 测试用户1与应用服务器通信报文签名原文导出
服务器日志中的原文值Hex_Bytes是:“c2131039a83419cda455efb11301e742f5e10ab386”;转为Base64的结果是:“whMQOag0Gc2kVe+xEwHnQvXhCrOG”,然而,报文中Base64字符串的内容是:“whMQOag0Gc2kVe+xEwHnQvXhCrOGu+Bg”,对应Hex_Bytes是“c2131039a83419cda455efb11301e742f5e10ab386bbe060”;下图做为对比:
在这里插入图片描述
图 20 应用服务器日志签名值与实际签名值比对
验签的时候需要使用客户端发往服务端报文内携带的Base64字符串(增加u+Bg部分的)。比对服务器日志Hex与客户端发包Base64转Hex的理由是,确定客户端收到了来自服务端正确的挑战值,从而对其进行签名、实现服务端对客户端的身份鉴别;
(4)用加密扩展外壳打开证书,复制证书中的公钥;
在这里插入图片描述
图 21 测试用户1身份鉴别签名验证:公钥提取
(5)将公钥、原文、签名值输入到验证器中;然而,这里有一件很意外的事情:
公钥:复制自Hex字节
签名值:接收为Base64字符串,进行Base64编码后作为Hex字节格式输入验证器;
原文:接收为Base64字符串,经验签测试,该字符串作为Base64被编码后的字节会导致验签失败;而将其直接作为ASCII / UTF-8编码为字节输入到验证器中,可以验证成功。
在这里插入图片描述
图 22 Base64没有编码情况下的RSA签名验证
(附:验证测试用户2的签名)
在这里插入图片描述
图 23 应用服务器为测试用户2生成的字节挑战值
在这里插入图片描述
图 24 测试用户2登录应用服务器身份鉴别-挑战应答签名值验签
同样的,测试用户2登录时的Base64字符串也应当直接当作字符串对待,而不是以Base64编码后将让字节进入验证器。
此步骤涉及测评指标:D, A;
报文中Base64格式如何看待、代入运算
在这里插入图片描述
在这里插入图片描述
总结下这个问题,比如我有一个Base64编码:“whMQOag0Gc2kVe+xEwHnQvXhCrOG”,其表示的意思是:C2131039a83419cda455efb11301e742f5e10ab386——21个Hex字节,Base64编码的意义在于使其对用户可见。
但是,“whMQOag0Gc2kVe+xEwHnQvXhCrOG”本身作为应用层字符串数据被传输出去的时候,即便被称为“Base64编码”,但其底层仍旧是一个字符对应一个字节的信息;本题中涉及大量应用层Base64编码字符串的传递、签名、加密、验证等信息。接收Base64编码的一方都没有将Base64字符串编码成其表示的字节进行运算,而是将其当作ACII字符串来对待,生成对应的签名、杂凑值等等。就比如这个:测试用户1登陆应用程序的挑战应答。
在这里插入图片描述
图 25 测试用户1登录应用身份鉴别-挑战应答签名验证
为何我认为此处可能存在问题?因为在用户行为不可否认性单元中,应用层http报文传递的Base64编码就被正确用于表示其对应的字节,并且这些字节可以被utf-8解码为用户操作行为信息:“2020-06-22 06:45:08:586 ceshiyonghu1 signs a contract.”(而不是上方遇到的那种直接当字符串用的情况)见下图:
签名值上面有一个键:data,将其Base64编码转换成utf-8格式,结果是:“2020-06-22 06:45:08:586 ceshiyonghu1 signs a contract.”这可能就是待验证的原文了
在这里插入图片描述
图 26 其他Base64内容格式转换示例

  • 27
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理器核、存储器模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中二病也要吃饭啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值