我理解的国密知识与加密过程
基本概念
入门说明见:https://wenku.baidu.com/view/68fe53966c175f0e7cd137fe.html?from=search。
理解与收获:
公钥只能用私钥去解,私钥只能用公钥去解;
证书机构,建立公钥和个人对应关系的数据库;这个关系,作为个人身份证,是证书,关系形成的字符串是证书里的签名;其它人根据目的人找到其证书中的公钥,然后加密信息发给该人;
公钥与私钥的加密解密作用:https://www.zhihu.com/question/25912483
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
国密算法
SM1指的是国家密码管理局编制的一种商用密码分组标准对称算法。该算法是国家密码管理部门审批的 SM1 分组密码算法 , 分组长度和密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片中。
在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。
SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
SM4算法:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。
理解:SM1用于密钥分发的数据加密;SM2是签名;SM3是防篡改;SM4是普通数据加密。
更丰富的算法理解:
和上面有所重复,是另一个时期自己的学习记录。
SM1-SM4算法简介:https://www.cnblogs.com/zhangshitong/p/8057845.html。https://www.cnblogs.com/wangpin336/p/11049536.html
对称加密与非对称加密的对比:https://blog.csdn.net/qq_41718455/article/details/81162983
对称加密和非对称加密区别: 1、对称加密速度快,安全性没有非对称加密安全
2、非对称加密安全性更高,但是效率没有对称加密快
3、非对称加密加密程度有限制,(密钥长度是1024,值能加密117个字符,需要分段
加密,分段解密)
SM1对称密码
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
SM2椭圆曲线公钥密码算法
SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。SM2算法在很多方面都优于RSA算法。
要求“自2011年3月1日期,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用SM2算法。
SM3杂凑算法
SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
SM4对称算法
此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
不同算法特性,是这些算法的应用不同,如:非对称加解密算法的效率要比对称加解密要低的多。所以SSL在握手过程中使用非对称密码算法来协商密钥,实际使用对称加解密的方法对http内容加密传输。
对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。
加密的实现
国密SM4算法Verilog实现:https://www.iteye.com/resource/qq_25426903-10906897
国密算法芯片用户手册:http://www.termsun.com.cn/chip.html#_Toc414547702
SM4加密:https://blog.csdn.net/omfalio1101/article/details/80384986?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
加解密的过程
可以参照阿里的云数据保护:
https://developer.aliyun.com/article/672622?spm=a2c6h.13813017.0.dArticle738638.53877df64zI3J0
从上面文档可以看到:传输加密采用VPN和HTTPS;文件加密,是另一层的事;密钥管理是一个事;登录、鉴权又是一个事情。
阿里云的全链路加密能力。全链路加密顾名思义是指针对数据加密在传输链路,以及计算和存储节点提供对应的业界高级别加密能力。传输加密主要依赖SSL/TLS加密并提供AES256强度的加密保护。计算节点中阿里云在2017年即开始提供芯片级SGX加密计算环境(在提供SGX能力的云厂商中,阿里云为亚洲第一、世界第二提供此能力的厂商)。在存储加密环节,阿里云不但能提供高强度(AES256)的数据落盘加密能力,更通过密钥管理服务(KMS)提供用户自带密钥(BYOK)功能。联合KMS密钥管理,阿里云可以为用户提供全链路的数据加密保护。
加密流程学习:
加密流程:https://blog.csdn.net/qq_36261535/article/details/100882271
S32G的硬加速支持:AES(MAX 256)\SHA-1SHA-2;RSA(MAX 4096);
https://blog.csdn.net/shw372029857/article/details/52687906,ssl加解密过程,https用的,必看。
根据blog文档,加密流程:
图1、数据加密传输、数据完整性及签名认证流程
- 传输信道中的数据都采用SM4分组加密算法,保证数据传输时数据的机密性;
- 使用散列算法SM3保证数据的完整性,以防止数据在传输的过程中被篡改;
- 使用非对称算法SM2的私钥签名来保证数据的不可抵赖性,确保数据是从某一个确定的车载用户端发出;
- 具体流程如下:
- 用户数据使用SM3进行散列运算得到数据摘要,再使用非对称算法SM2进行摘要签名;
- 同时使用对称算法SM4的密钥对数据摘要进行加密并传输给安全模块;
- 使用同一个对称算法SM4密钥对用户数据进行加密,并将加密后的密文传输给监控端;
- 监控端收到数据密文后,使用对应的密钥进行对称算法SM4解密,并使用散列算法对解密后的数据进行运算得到数据摘要1;
- 监控端对收到的摘要签名进行对称算法SM4解密,再经过非对称算法解密得到最初的数据摘要2;
- 对比数据摘要1和数据摘要2,若两者相等则认为传输数据具备完整性;否则认为数据出错;
从上面流程,可以看到数据加密以及防篡改的机制;同时,理解SM2还提供了密钥管理、以及用户签名。
HTTPS加密
https加密原理:https://www.jianshu.com/p/cf2f86bc597a
SSL/TLS协议提供的服务主要有:
1、认证用户和服务器,确保数据发送到正确的客户机和服务器;
2、加密数据以防止数据中途被窃取;
3、维护数据的完整性,确保数据在传输过程中不被改变。
SSL安全机制
1、身份验证机制
基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
2、数据传输的机密性
利用对称密钥算法对传输的数据进行加密。
3、消息完整性验证
消息传输过程中使用MAC算法来检验消息的完整性。
我理解https,由软件协议栈处理,硬件不需要参与,并且针对https进行硬件加密是另外一种分支应用了https://easy.zhetao.com/easy-https-lets-encrypt-html-CPU。
https与vpn的关系
VPN加密
https://www.jiamisoft.com/blog/565-vpnjiami.html
什么是ssl vpn:
https://www.solves.com.cn/it/wl/zs/2019-11-08/7571.html
就是通过https会话,里面再封装一个ip帧,通过服务器转发。不需要专用
iPSec VPN与SSL VPN具体有什么区别?
https://blog.csdn.net/Tianlujunr/article/details/82384303,加密比较的
自己整理的表(未完成):
加密方式 |
数据加密 |
防篡改 |
签名 |
密钥 |
|
https |
SSL握手协议与变化协议; 服务器发送证书,含签名与公钥;客户端向ca服务器认证该证书。 双方发送随机数,产生Master Secret |
||||
ssl vpn |
|||||
ipsec vpn |
U盾的工作原理
百度有解释,比较简单和清楚:https://zhidao.baidu.com/question/568512992.html。
更详细的U盾介绍,在:https://www.sohu.com/a/226373290_384968,全面,可以了解。
市场上见到U盾按照硬件芯片不同可以分为使用智能卡芯片的和不使用智能卡芯片两种,按照CPU是否内置加密算法又可以分为带算法和不带算法的U盾。一般我们把不带加密算法的称为存储型U盾,带加密算法的称为加密型U盾。存储型的U盾由于其硬件功能的限制,仅能实现简单的数据摘要算法,对于PKI中广泛使用的对称和非对称加密算法只能通过运行在PC上的中间件来实现,这样在加密和签名运算中用户的密钥就会出现在内存中,有可能被技术高超的黑客获取。
信息加密,最牛的一家公司:https://cn.mellanox.com/solutions/security。
我理解的国密知识与加密过程相关推荐
- 国密SM2前端加密,Java后台解密问题
背景:要实现请求参数加密的功能,使用的是国密SM2算法,前端向后台发送请求获取公钥,将请求加密发送到后台,后台用对应的私钥进行解密 问题:前端进行加密的请求,后台无法进行解析 解决方案:(此处所用的类 ...
- c++国密算法SM2加密解密demo
c++国密算法SM2加密解密 一.代码 一.代码 封装加密.解密接口: 加密接口: Encrpt_SM2() 解密接口:Decrypt_SM2() 加密解密结果可以和nodejs的模块sm-crypt ...
- C#国密SM4 CBC加密解密
** C#国密SM4 CBC加密解密 在你得项目nuget引用程序集:KYSharp.SM 安装 2.0 版本,里面才有sm4的加密 ** static void Main(string[] args ...
- 详解国密SM2的加密和解密
在上一篇文章<解读国密非对称加密算法SM2>介绍了国密非对称算法SM2,在文章中说到,如果现有的网络库中已经实现ECC算法,只需加入SM2命名曲线的参数即可.这对于ECDHE密钥协商和EC ...
- 国密sm2 js加密后台解密,sm3 js、后台加密,sm4 后台加密
公司最近进行安全问题修改,所以要用国密系列的sm2,sm3,sm4,这些加密都用在登录模块,因此作为菜鸟的我,从网上找了一堆资料,整理修改后形成符合项目的加密,需要的可以自己去查看相关代码和jar包: ...
- (三)--Openssl 实现国密算法(加密和解密)
上一次讲了产生密钥,这次我们讲一下加密解密的实现. 先说一下加密解密的流程,一下这些内容都是从国密局发布的国密标准文档里面摘录出来的.大家可以去国密局的网站上自己下载. 下列符号适用于本部分. A,B ...
- 国密算法--Openssl 实现国密算法(加密和解密)
上一次讲了产生密钥,这次我们讲一下加密解密的实现. 先说一下加密解密的流程,一下这些内容都是从国密局发布的国密标准文档里面摘录出来的.大家可以去国密局的网站上自己下载. 下列符号适用于本部分. A,B ...
- 国密算法SM4加密,数据加密存储加密
很多国企项目针对等保分保测评要求很高 加密算法 也是要符合国家密码局认定.针对 这个问题 公司决定使用SM4. 算法介绍: 无 无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无 ...
- 国密算法SM2加密解密
一.依赖包 <!-- hutool的 SM2 加密--><dependency><groupId>org.bouncycastle</groupId>& ...
最新文章
- 使用Kettle抽取数据时,出现中文乱码问题解决方案
- pte模拟考试_【PTE懒人攻略】如何在7天内通过PTE考试
- C++输入输出类的层次
- AS插件-Android Layout ID Converter
- [转]Sql Server 分页存储过程
- mysql创建存储时覆盖_总结到位的MySQL 的覆盖索引与回表
- css对各个浏览器兼容技巧
- (转)正则表达式在ORACLE中的使用
- 对Chrome自动发送邮件插件的改进
- ArcGIS制图中参考比例尺
- 2020年精选网络性能监控系统
- ios vue 添加本地音乐_VUE怎么添加音乐 本地音乐添加教程
- 如何轻松理解Android中的Surface概念
- VR和AR只是入门,真正的元宇宙远不止于此
- 已知三角形三边长求面积java_已知三角形三点坐标求三角形面积.java
- 高等数学:第五章 定积分(4) 定积分的换元法
- (NDIS5.0)协议驱动Ndisprot源码解读
- keepalived+lvs结合nginx压力测试实践
- 什么是交换机?描述一下工作过程?交换机基本功能、交换机是如何转发数据包的,什么是三层交换机?和二层交换机有什么区别?三层交换机是否可以代替路由器?为什么?
- VMware ESXi安装NVIDIA GPU显卡硬件驱动和配置vGPU