密码技术应该怎么用第九天!

SM4国密算法怎么玩?原理看不懂,但是急着用怎么办? 看到这篇文章的读者,估计都会急着想知道如何使用SM4国密算法的, 好吧,我们废话不多说,直接开门见山了。 关于加密算法的一些简单的理论知识,我直接附在下方了,可以自行查看。 阅读详情

   密码能力的构建,一个密码能力应该包含哪些算法,实现哪些能力,那种方式最经济实惠,以及为什么用些算法。

构建体系构建的两种模式

   我建议使用混合模式,主密钥分散得到次主密钥【业务密钥】,次主密钥【业务密钥】,保护随机生成的数据密钥。一个业务系统可以有多个【业务密钥】,业务密钥的变化不会业务系统的正常运行,适应于数量不大的【每天小于百万】数据加解密。根据密码算法的普遍性能,其瓶颈在于数据的传输,不在于算法性能。

   对于数据量非常大的业务系统,建议使用【数据密钥】进行本地加密,如果需要硬件密码模块保护数据密钥和次主密钥则可以使用本地的硬件密码设备,如果在同一网络内,则考虑直接使用数据密钥。

整体架构如下:

   说明一下,这个架构的软件部分,几台虚机,在某运营商接入了100+个业务系统,数据量都不小,没什么压力。

   注意如果采购硬件密码模块则必须要求原厂:提供符合《GMT 0018-2023 密码设备应用接口规范》的SDK;提供硬件密码模块的初始化工具,初始化一台设备后可以备份同步到其他设备中。我根据业务的要求选择密码模块,一般小于4000次/秒可以选择几百元的密码卡即可。密码卡是一般都是二级的密码模块,可以满足三级的密码要求。

对于密码能力的要求如下:

  1. 硬件密码模块全部损坏不会影响业务系统的运行
  2. 业务密钥的变更不影响业务系统的运行
  3. 由业务系统发起密钥变更,正常情况下不允许密码能力直接停用业务密钥
  4. 允许系统从软件加密更换到硬件密码模块加密,不需要业务系统变更
  5. 业务系统需要新的密码能力,开发时间控制在一周以内。
  6. 只提供符合业务要求的SDK,不给业务系统犯错的机会!

   根据《商用密码管理条例》需要外接国家认可的CA,如果需要本地验签可以使用签名验签服务器,本质上和密码机,密码卡是一样的。要求原厂提供符合《GMT 0018-2023 密码设备应用接口规范》的SDK;提供硬件密码模块的初始化工具,初始化一台设备后可以备份同步到其他设备中,这个非常重要,一些厂商会拒绝,这在采购条件就要明确要求!

我在之前给过等效产品的描述,再次强调一下,这个非常非常重要!

云密码机非必要不要使用,一个实体机虚拟出来N+个虚机是个什么情况。

密码工具箱,如果有些密码算法不再安全可以替换,这个非常重要!!!

1.密码工具箱

序号

算法名称

算法

说明

1

对称密码

SM1,SM4,SM7,ZUC,3DES,AES

2

公钥密码

SM2,SM9,RSA2048及以上

3

单向散列函数

SM3,SHA256,SHA384,SHA512

SHA1,MD5 已经不安全,非必要不再使用。

4

消息认证码

HMAC-SM3,MAC,HMAC-SHA256,CBC-MAC

CBC-MAC【SM4-CBC 取右边32个字符】,约定好长度的消息产生消息验证码,不建议使用。

5

数字签名

SM2(SM3(Random)) ,

RSA(SHA256(R))

6

伪随机数生成器

Random

2.初步简化

序号

算法名称

算法

说明

1

对称密码

SM4

2

公钥密码

SM2

可以用线下分发替代在线密钥分发

3

单向散列函数

SM3

4

消息认证码

HMAC-SM3

5

数字签名

SM2(SM3(Random))

不需要数据签名可以简化掉

6

伪随机数生成器

Random

原则:根据密码学常识去掉不公开的,去掉实现复杂的,去掉可以替代的,每个工具箱只剩下一个,如果不需要数字签名和密钥分发可以进一步简化

3.进一步简化算法

序号

算法名称

算法

说明

1

对称密码

SM4

2

单向散列函数

SM3

3

消息认证码

HMAC-SM3

4

伪随机数生成器

Random

4.细化算法模式

序号

算法名称

算法

说明

1

对称密码

SM4(FPE,CBC,GCM)

满足第三级密码应用基本要求

2

单向散列函数

SM3

3

消息认证码

HMAC-SM3

4

伪随机数生成器

Random

   FPE:保留格式加密,用于加密手机号,身份证,银行卡号等,最大好处是长度和字符集保持不变,对于以此作为数据库索引的字段非常重要,特别是数量比较大的时候,索引变动小,查询效率基本不会降低。

   CBC:分组链接模式,加密串行,解密并行,是密码机,密码卡,签名验签服务器等必须支持的算法。被大量使用,普遍验证过。

   GCM:是一种同时提供认证和加密功能的分组密码工作模式。它结合了 CTR(Counter,计数器模式)的高效加密特性和 GMAC(Galois Message Authentication Code)的认证特性。这种模式主要用于保障数据的机密性、完整性和认证性。最合适在系统间的接口定义中使用。使用Encrypt-then-MAC方式构建,只需要一个密钥。

在,密码技术应该怎么用第四天!-优快云博客

给出过样例可以参考。系统间接口定义中非常有优势,强烈建议使用此模式!

SM4_CBC+SM3 结合,提供文件加密的能力,直接对二进制进行加密。

参照:python 的sm4 算法,sm4_apply对str的操作,是对sm4_alg的封装_java 32位十六进制的sm4随机对称密钥-优快云博客

如果不喜欢此模式可以使用SM4_CBC+HMAC-SM3 自行构建密码能力保证:机密性、完整性和认证性。

   注意HMAC-SM3的数据源应该是包含所有数据的,数据源在做HMAC-SM3的时候要排序! HMAC-SM3使用的密钥和SM4_CBC的密钥是不同!除了多了一个密钥,非常好用!在对比多项数据是否完全相同的时候使用SM3更好用,还不需要密钥。

   举例如下【这个例子参考了15843实体鉴别的规范,这个可以为一个基础接口定义框架,加入其他业务参数,就可以了】:

mac的数据源为:

{'app_id': '10000', 'timestamp': '1736422377.553015', 'random': '71BC2F60AEADF363AC8ADF6C648BA6A7BA9405992DEEBD304128F17D221B83AD', 'encrypt_data': '8DD5E687BEB1560B44E63698D4F14D072FDDD265495822DA11EC980EF95E90F577ABEE6DD903E765B1E30DD4FC9388B4C8D8052D7141A1D523B49D20564647FFA5F18C96FB7B7A4AFCFD7D93D8D1E3D58EC05476E0800AA1EBC0FE92F9187AAC2EE2FB92D9DA3D52D62228F2A3F18B35131F38ECBBA347B7CE1D87AEFE700DF87F3C1810ACEFD400080297D4DE361457'}

生成的mac为

04A1ED002EACA95312071CCA52280363BA475E4D538CEC1D096ADC27418163A4

请求数据为:

{'app_id': '10000', 'timestamp': '1736422377.553015', 'random': '71BC2F60AEADF363AC8ADF6C648BA6A7BA9405992DEEBD304128F17D221B83AD', 'encrypt_data': '8DD5E687BEB1560B44E63698D4F14D072FDDD265495822DA11EC980EF95E90F577ABEE6DD903E765B1E30DD4FC9388B4C8D8052D7141A1D523B49D20564647FFA5F18C96FB7B7A4AFCFD7D93D8D1E3D58EC05476E0800AA1EBC0FE92F9187AAC2EE2FB92D9DA3D52D62228F2A3F18B35131F38ECBBA347B7CE1D87AEFE700DF87F3C1810ACEFD400080297D4DE361457', 'mac': '04A1ED002EACA95312071CCA52280363BA475E4D538CEC1D096ADC27418163A4'}

银联银行卡收单相关国密SM4计算MAC的算法-POS终端国密SM4计算MAC-银联国密SM4联机MAC计算 阅读详情

相关推荐

国密算法sm4 CBC模式加解密

一.什么是CBC模式? CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。 在CBC模式中,首先将明文分组与前一个密文分组进行异或运算,然后再进行加密。 异或运算: 异或,英文为exclusive OR,缩写成xor 异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符...

Mr.康的博客 2万+

SGD_SM4_CTR和SGD_SM4_OFB加密算法有什么区别?为什么可以用SGD_SM4_OFB加密数据,但是SGD_SM4_CTR加密的时候就报错。...

SGD_SM4_CTR和SGD_SM4_OFB都是基于SM4算法的加密算法。它们的主要区别在于它们使用的块加密模式不同: SGD_SM4_CTR使用的是计数器模式(CTR)。这种模式下,每个数据块都会使用一个不同的密钥来加密。 SGD_SM4_OFB使用的是输出反馈模式(OFB)。这种模式下,加密过程中只使用一个固定的密钥。 由于 SGD_SM4_CTR使用的是计数器模式,如果计数器出现错...

weixin_35750747的博客 1311

告别手动输入!用Access批量导入307种土壤数据到SWAT模型(附完整MDB操作流程)

本文详细介绍了如何利用Microsoft Access批量导入307种土壤数据到SWAT模型,显著提升数据录入效率。通过解析usersoil表结构、提供Access操作指南和VBA自动化脚本,帮助环境工程师避免手动输入错误,实现高效数据管理。文章还包含性能优化技巧和常见错误解决方案,是SWAT模型用户的实用指南。

weixin_28366053的博客 325

密码算法测试向量——Cipher MAC SM4

//分组密码算法的测试向量, 如CBC, CMAC等 typedef struct block_cipher_test_vector_st { char * inf; //测试向量的附加信息说明 int alg; //密码算法 int mod; //工作模式 int klen; //密钥字节长度 char * key; //密钥 int ivlen; ...

专注商用密码落地,方案与技术解析,分享密码技术与安全经验。 1万+

单细胞转录组上游分析完整流程(超详细)

本指南详细介绍单细胞转录组数据分析流程,从10xGenomics平台数据出发,使用CellRanger工具完成从原始FASTQ文件到基因表达矩阵的全过程。内容涵盖:1) 环境准备与参考基因组获取;2) 测试数据下载;3) 数据质量检测方法;4) CellRanger核心流程详解;5) 结果解读;6) 下游分析衔接。同时提供开源替代方案kallisto|bustools的使用说明,并解答常见问题。适合单细胞转录组分析初学者快速掌握标准分析流程。

Rita_rr的博客 1157

避坑指南:Win10安装Docker Desktop时Hyper-V报错的7种解决方案(2024最新版)

本文提供了2024年最新、最全面的Windows 10系统下Docker Desktop安装时Hyper-V报错的解决方案指南。文章深入剖析了Hyper-V与Docker的共生关系,并系统性地给出了从BIOS/UEFI设置、Windows功能启用、bcdedit命令修复到处理多虚拟化环境共存等7种核心解决方案,帮助开发者彻底解决安装困局,顺利部署容器化开发环境。

weixin_28840143的博客 529

【IC卡 国密SM4算法 密钥分散,加解密,MAC计算】

在这里记录一下工作中调查国密算法SM4过程中掌握的心得体会。

乐于助人 4666

UE4 - 河流流体插件Fluid Flux

Fluid Flux可以模拟一定区域内的流体效果,由于使用顶视图所Capture的Heightfield信息,所以只支持室外开阔场景,不支持洞穴等室内场景;

GT的虚幻引擎文档 6667

算法库使用示例

【代码】算法库使用示例。

weixin_44783692的博客 247

若依开源系统多数据源整合clickhouse数据库详细步骤

若依开源系统多数据源整合clickhouse数据库详细步骤

java之书-资源 897

使用 Fargate 在 AWS ECS 上运行 Spring Boot 应用程序

本文介绍了使用AWS Fargate支持的ECS部署SpringBoot应用的完整流程。主要内容包括:1)将SpringBoot应用打包为Docker镜像并推送至ECR;2)创建任务定义配置CPU、内存和网络等参数;3)设置ECS服务管理任务运行;4)配置负载均衡器分配流量;5)设计VPC网络和安全组规则确保安全访问;6)使用SSM参数存储管理敏感信息。整个过程实现了无服务器化部署,既保持了应用控制权,又免除了基础设施管理负担,是扩展Web服务的可靠方案。

介绍AWS Azure GCP devops Terraform 等技术 512

HASH 、MD、SHA、MAC、HMAC、SM3

本文主要讲述一些hash、摘要算法相关的概念,算法具体的实现将不会涉及。阅读完本文你将会了解HASH、MD、SHA、MAC、SM3这些术语的概念。

你好 7478

手把手教你学PCIE-- 热插拔电路设计与实现方案

PCIe热插拔(Hot-Plug)技术允许用户在系统运行时安全地插入或移除设备,而无需重启系统。本文将深入讲解热插拔电路的设计要点、关键器件选型及信号协议规范,涵盖机械结构、电气保护和电源管理三大核心模块。​。

MHD0815的博客 440

关于国密算法SM4的流程

关于国密算法SM4的流程       原来用于无线局域网的国密算法SMS4被定义为SM4作为密码行业标准发布。SM4是一个分组对称密钥算法,明文、密钥、密文都是16字节,加密和解密密钥相同。通过32次循环的非线性迭代轮函数来实现加密和解密。其中包括非线性变换S盒,以及由移位异或构成的线性变换。除了256字节的S盒之外,还定义了另外两组参数FK以及CK(具体数据参考密码局网站)。基本过程是首先把

supergame111的专栏 9880

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【1】SM4 CBC-MAC 机制

SM4 CBC-MAC 机制题目计算

司徒荆的博客 3280

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9...)

由于工作的需要,在过去的两年中学习、适配了很多算法,包括对称算法、非对称算法、国密算法、国际算法等。为了逼迫自己能够牢记并掌握这些算法的基本知识点,故本人写了一个关于算法的专栏(持续更新中。

KXue0703的博客 6109

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POS终端(国密算法), SM4解密主秘钥、POS终端MAC值、联机MAC值

下载主秘钥成功,会返回校验值与密文主秘钥数据; 现在目的是得到明文主秘钥,并校验值是否正确; 校验值:08EEDEC70D7C0682 密文主秘钥数据:89A4CA515B89220AAFA32D695D95A890 保护秘钥:B1F15C84DD6817B9 作为秘钥需转为16进制字符串:42314631354338344444363831374239 保护秘钥 + 密文数据 = 明文主秘钥 (解密) 明文主秘钥:376D90E7 945AA5CF DB4C07CC B3..

qq_30998053的博客 4488

商用密码产品(密码模块)-软固件安全

对于密码模块边界内的所有软件、固件,密码模块应当对其进行完整性保护,确保软件固件安全可靠,没有被未经授权的篡改,软固件完整性保护的技术应是基于密码技术。

qq_18394153的博客 2980

加密算法简单了解——HASH、MAC及一些加密模式

加密算法简单了解——HASH、MAC及一些加密模式hash算法MAC(消息验证码)算法hash与MAC对比MAC与对称加密算法组合的一些不同加密模式Encrypy-and-MAC(E&M)MAC-then-Encrypt(MtE)Encrypt-then-MAC(EtM) 主要从几篇文章中学到的:https://zhuanlan.zhihu.com/p/270949014 hash算法 将任意数据都转换成一个固定长度的字符串。通过哈希后的值几乎无法推导出原文(单向,不可逆)。而且两个不同的原文哈希后

weixin_42040046的博客 8510

RequestBody 解决获取参数为null

问题描述 前端json格式 "Data": [ { "Name": "Algorithm", "Type": "Raw", "Value": "SGD_SM4_CBC" }, { "Name": "PlainText", "Type": "Raw", "Value": "aGVsbG8gd29ybGQ=" } 后台Data的实体类 public class Data { Stri

qq_44859600的博客 3818

HMAC原理及SM3-HMAC实现

HMAC原理 一、定义 MAC(Message Authentication Code,消息认证码算法),MAC是含有密钥的散列函数算法,因此也MAC算法也通常被称为HMAC,其中HMAC中的H就是Hash的意思。使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-384、HMAC-SHA-512。 二、实现原理 实现原理图: 以摘要算法为MD5实现的HMAC为例(MD5将原文以64字节分组

weixin_42262180的博客 3万+

安全报文中的MAC计算方法

安全报文中的MAC计算方法 校验码(MAC)总是命令或命令响应数据域中最后一个数据元素。规定MAC的长度皆为4个字节。当命令的数据域中要求必须带MAC时,即命令安全报文传送,命令头中CLA字节的低半字节必须等于十六进制数字‘4’。 命令安全报文中的MAC是使用命令的所有元素(包括命令头和包含在命令数据域中的数据)来产生的。从而保证命令连同数据能够正确完整地传送,并对发送方进行认

lonet的专栏 9976

国密SM2/SM3算法

国密SM2/SM3算法

m0_56344192的博客 9623

SM4分组密码算法介绍

SM4无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位,SM4算法主要包含5种基本模式:ECB、CBC、CFB、OFB,CTR(后4种都是ECB算法模块衍生而来);与MAC结合还诞生了GCM,CCM等高级模式。CCM是CTR加密模式和CMAC认证算法的混合使用,常用在需要同时加密和认证的领域,比如WiFi安全中的WPE协议,它就使用了AES-CCM模式,所有SM4衍生的算法模式都基于SM4的基础轮函数。 SM4分组密码算法是一个迭代分组密码算法,由加解密算法和密钥扩展算法组成。SM.

leho666的博客 2万+

银联联机UTVT SM4 MAC算法

/** * SM4 mac计算 * 1.数据不为16的倍数,需要补0 * 2.将数据16个字节进行异或,再将异或的结果与下一个16个字节异或,一直到最后 * 3.将异或运算后的最后16个字节 转换成32 个HEXDECIMAL: * 4.取前16 个字节用MAK加密 * 5.将加密后的结果与后16 个字节异或 * 6.用异或的...

qq_31143595的博客 4186
上一篇: 密码技术应该怎么用第八天!
下一篇: 密码技术应该怎么用第十天!
CissSimkey
博客等级 码龄8年 312粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值