密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)
文章目录
- SM1 对称密码
- SM2 椭圆曲线公钥密码算法
- SM3 杂凑算法
- SM4 对称算法
- 同态加密
- 密态计算和隐私计算
- 安全多方计算技术
- 安全多方计算的应用场景
- 对称加密算法
- 非对称加密算法(公钥加密)
- 参考文章
SM1、SM2、SM3和SM4
为了保障商用密码的安全性,国家密码局制定了一系列密码标准,包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC) 等。
SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法。
SM2、SM9是非对称算法。
SM3是哈希算法。
SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
国家密码局的密码标准列表 http://www.gmbz.org.cn/main/bzlb.html,此列表中可以找到一系列国密算法标准文档。
SM1 对称密码
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
在调用SM1的功能时,需要接入支持相应算法的硬件密码设备。软件需要按照**《智能IC卡及智能密码钥匙密码应用接口规范》**的接口规范调用算法,原则上可以支持所有提供该接口的国密硬件。
SM2 椭圆曲线公钥密码算法
SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。
SM2标准包括四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。
总则
数字签名算法
密钥交换协议
公钥加密算法
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于SM9算法。
在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。
数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。
SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也很自然)
国际的RSA算法和国产的SM2算法的主要特性对比如下:

SM3 杂凑算法
SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。
此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算示例见SM3标准。
SM4 对称算法
此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
同态加密
同态加密(Homomorphic Encryption)是指将原始数据经过同态加密后,对得到的密文进行特定的运算,然后将计算结果再进行同态解密后得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。
同态加密与一般加密方案的关注点不同,一般的加密方案关注的是数据存储安全,即我要给其他人发送信息或者存储信息,我需要对数据进行加密之后再发送和存储,这里我们只需要保证在数据传送和存储的过程中不被其他人窃听到即可,在这个过程中用户时不能对加密的结果做任何操作的,否则可能会导致解密失败
同态加密的关注点则是数据处理安全,同态加密提供了一种对加密数据进行处理的功能。也就是说其他人可以对加密后的数据进行处理,在这个过程中不会泄露任何原始的内容,在数据处理完成之后再进行解密,得到的正是对原始数据进行相同处理后的结果。
密态计算和隐私计算
随着国家对数据安全的重视,各企业告别数据明文时代,启程数据密态时代,根据专家判断,数据密态时代大致发展为三个阶段:计算密态化、大数据密态化以及数据要素密态化。考虑到目前大多数企业正在进行明文计算向密文计算转换的初始阶段,即:计算密态化。目前各行业在计算密态化阶段主要应用在较为基础和经典的场景,采用“隐私计算”的相关技术。
“隐私计算”一系列技术的提出,主要用于解决海量数据之间的安全流动,既需要保证数据发挥价值,又需要保护数据隐私安全,防止数据信息泄漏,隐私计算主要是指在数据全生命周期中,实现数据的“可用不可见”,兼顾数据流通与隐私保护两大方面,目前隐私计算想要实现的功能主要涵盖为两点:数据可用不可见,数据不动模型动。
隐私计算的技术主要分为3类:
以密码协议为底层基础的安全多方计算技术,其底层技术均为密码学相关原语技术,主要用于实现大数据分析、查询以及统计的功能函数。
以人工智能技术奠基的联邦学习技术,该类技术依托人工智能技术,主要用于机器学习的建模过程,并在其过程中,需要多次应用到安全多方计算的相关技术。
安全可信硬件技术。其核心思想主要是构建可信执行环境,在该安全环境中进行数据的计算,但是该类技术的安全性主要依赖于芯片硬件厂商。
安全多方计算技术
安全多方计算简介
安全多方计算作为隐私计算的核心技术,其主要功能简述为:在无可信第三方的前提下,多个计算节点在分布式计算环境中,各自输入数据,共同完成某个功能函数的计算,并不泄漏各个参与方的输入,并且所有参与方可以共享功能函数的输出函数值。
安全多方计算过程示意图如下上述过程中,各个参与方是将各自数据加密后再进行计算的,其中参与方在将数据分布式加密后再输入到功能函数的计算模块,充分保证明文的安全性。
安全多方计算本质上为功能函数的设计与计算结果的输出。在该过程,需要考虑到异地通讯部署计算节点的网络带宽问题,并且需要考虑待计算数据库的量级,以及功能函数计算时的性能和安全性。目前常用秘密共享、同态加密、不经意传输以及混淆电路这四类技术混合使用来完成多方计算函数的构造。其中秘密共享和同态加密技术将计算任务看作是函数;使用不经意传输构造的计算任务可以看作是查询功能;使用混淆电路构造的计算任务主要是电路的构造。上述四类技术在构造多方安全计算函数时,均有利弊,通常在构造时,混合使用上述几类技术。
秘密共享:该类技术本质为秘密分割,主要是将秘密值进行分割,分到若干个参与者手中,每个参与者只能得到其中的分片信息,只有满足门限阙值参与者的秘密才可以恢复整个秘密,常用门限秘密共享方案。
同态加密:分为有限同态加密和全同态加密,该类技术主要在密文域上进行数据运算,目前有限同态加密实现的功能有限,但是效率较优;全同态加密可以涵盖各类函数的计算实现,目前计算开销距离实际应用,仍需优化。
不经意传输:该类技术主要是指接收方和发送方之间以不经意的方式传输信息,可以做到发送者对于接受者的选择信息比特不知情,并且对于接收者而言,只能得到对应的选择信息,对于其他信息不知情。通过Beaver的去随机化技术,以及后期发展的不经意传输扩展技术,可以实现使用少量不经意传输来实现大量不经意传输的计算,安全性和效率较优。
混淆电路:混淆电路使用布尔电路以及算数电路等来实现函数的构造,将计算任务转为门电路的计算,具备很强的安全性,但效率较低。
安全多方计算技术主要基于各类底层密码学原语及协议,并且可以实现无可信第三方的可证安全性;底层技术大多为密码学技术。通用安全多方计算技术最早由图灵奖获得者华裔计算机科学家姚期智于1982年提出,经过30多年的发展变化,经历效率较优的专用安全多方计算算法时代,并且在2010年左右,各类安全多方计算的通用编译器的设计出炉,各类算法的改进以及硬件性能的稳定增长,使得安全多方计算具备更优的通用性。目前ABY3、MP-SPDZ、CrypTen、Obliv-C、TF-Encrypted MPC等安全多方计算的开源框架在科研以及产业界具备重要的意义,具备较强的借鉴意义。
ABY3 https://github.com/encryptogroup/ABY
MP-SPDZ https://github.com/data61/MP-SPDZ
CrypTen https://github.com/facebookresearch/CrypTen
Obliv-C https://github.com/samee/obliv-c
TF-Encrypted MPC https://github.com/tf-encrypted/tf-encrypted
安全多方计算作为隐私计算非常典型的技术工具,其可以达到“输入隐私性、计算正确性、去中心化”的特性,在数据融合场景以及数据资产化场景中,实现数据集的查询、统计分析、建模预测以及可信存储等功能,在6G技术兴起后,高带宽、低延时的网络特性使得安全多方计算的可信计算功能更显优势;并且安全多方计算技术可以利于实现数据的确权,保障数据所有者的权益,将数据交易的本质由数据所有权转换为数据使用权。安全多方计算技术不仅作为隐私计算的一类重要技术,该技术也被用在区块链领域,主要应用在隐私智能合约、密钥管理以及随机数生成等应用场景。
安全多方计算的开销依旧远大于明文计算,因此优化模型框架,提升算法效率以及正确率是目前研究者的重要工作任务。安全多方计算技术作为一类重要核心技术,依旧需要与可信硬件技术、联邦学习技术以及区块链技术进行合作,实现在可信环境中联合建模、统计分析,以及上链下链的一系列技术,共同保证完成数据安全,为隐私数据护航。随着目前算法的优化,可以做到支持更为复杂的运算任务,隐私计算技术将作为必备的技术,在数据的完整生命周期中,达到保护用户数据隐私保护的效果。
安全多方计算的应用场景
安全多方计算技术在一些特定的应用场景,可以实现计算逻辑,数据大小比较以及两方集合求交等场景,可以采用几种不同的密码学技术设计协议;针对通用的场景,理论上可以使用混淆电路、同态加密以及不经意传输协议实现各类计算,由于可扩展性质的限制,在产业界应用之前依旧需要优化。
安全多方计算技术主要用在需要秘密共享以及隐私保护的数据计算场景,主要包括可信交换、安全查询以及联合分析等。
数据可信交换
主要用于解决“数据孤岛”问题,适用于不同企业机构间实现数据的可信互通,通过使用安全多方计算技术,保证数据的安全性以及隐私性问题,降低数据信息交易的成本,为数据拥有方和需求方之间提供安全交互服务的网络技术。
数据安全查询
数据存储在云端服务器,出于合规要求,需要对数据分级并加密,用户在查询数据时,使用安全多方计算技术,保证数据查询方用户仅能得到自己需要的信息,密文状态下实现查询,本地用户解密,并且服务器端对于用户的查询的具体内容不知情,该类技术可以实现数据的安全查询,保障查询方用户与服务器的两方隐私。
数据联合分析
目前的企业以及各类机构的数据分析主要聚集在自己内部应用产生数据进行分析,属于传统数据分析种类,随着跨机构以及跨国公司的经营运转,需要对各类数据进行联合分析,安全多方计算技术可以用于改进传统的数据分析算法,创建多个节点,多方参与者之间可以进行数据源协同分析,保护数据以及各方参与者。
对称加密算法
DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法

非对称加密算法(公钥加密)
RSA、ElGamal、背包算法

参考文章
国密算法概述(SM1、SM2、SM3、SM4、SM7、SM9、ZUC ) https://blog.csdn.net/wang_jing_jing/article/details/121493025
国密算法概述 https://blog.csdn.net/lwzhang1101/article/details/78773700
密码学系列 - 国密算法SM1/SSF33 https://blog.csdn.net/wcc19840827/article/details/120827731
浅析数据安全之密态化计算 https://mp.weixin.qq.com/s/Ia9jojT8U5F990fws6FvBg
相关文章:
密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)
文章目录SM1 对称密码SM2 椭圆曲线公钥密码算法SM3 杂凑算法SM4 对称算法同态加密密态计算和隐私计算安全多方计算技术安全多方计算的应用场景对称加密算法非对称加密算法(公钥加密)参考文章SM1、SM2、SM3和SM4 为了保障商用密码的安全性,国家…...
保险行业中【内容行政系统】模块功能的实现
以下是一个基本的保险行业中的内容行政系统功能模块,包括对保单、理赔等方面的处理: 创建保单表创建理赔表创建保单查询视图创建理赔查询视图创建新保单更新保单状态创建理赔更新理赔状态-- 创建保单表 CREATE TABLE policies ( policy_id NUMBER PRIM…...
C语言入门知识——(7)VS2022的C语言基础调试
1、什么是bug 这个故事很多人都知道 1947年9月9日:第一个“Bug”被发现的时候:“1949年9月9日,我们晚上调试机器的时候,开着的窗户没有纱窗,机器闪烁的亮光几乎吸引来了世界上所有的虫子。果然机器故障了,…...
数据库可视化开发工具内容介绍
在现代化办公环境中,数据管理的重要性不言而喻。对于企业来说,将企业内部的数据做好规划和管理,可以给企业提升办公协作效率,为企业高层做出正确的经营决策奠定基础。本文主要给大家介绍的是数据化可视化开发工具的内容࿰…...
坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析
本文介绍了 TiDB 数据库的基于时间点的恢复(PiTR)特性,该特性允许用户将数据库恢复到特定时间点,从而避免丢失重要数据。文章首先介绍了 PiTR 技术的基本概念和工作原理,接着探讨了 TiDB 对 PiTR 的优化,包…...
【云原生】K8S中PV和PVC
前言 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。…...
24小时稳定性爆肝测试!国内外5款远程控制软件大盘点
本文目录前言一、ToDesk远程控制二、向日葵远程控制三、RayLink四、TeamViewer五、AnyDesk总结前言 不论你的职业是什么,从事互联网工作基本就离不开远程,从远程安装系统到远程搞设计,再到做服务器的调控,都需要靠远程来协助完成…...
【Java集合框架】篇三:List接口
1. List接口及主要实现类特点 List:有序、可重复(“动态”数组);因而常常使用List替换数组,因为List 的容量是动态的。 ArrayList:底层使用Object[]存储 线程不安全,添加、查找效率高 LinkedL…...
【算法经典题集】二分(持续更新~~~)
😽PREFACE🎁欢迎各位→点赞👍 收藏⭐ 评论📝📢系列专栏:算法经典题集🔊本专栏涉及到的知识点或者题目是算法专栏的补充与应用💪种一棵树最好是十年前其次是现在二分整数二分机器人…...
【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)
参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准: 1、工资范围在1-5000元之间的,包括5000元,适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的,包括8000元,适用个人所得税税率为3%; 3、工…...
【TypeScript】的上手学习指南!
目录TS简介TypeScript是什么?为什么要推荐使用TypeScript生态支持安装TypeScriptTS简介 TypeScript是什么? TypeScript官网 简介:TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计…...
红黑树(Insert())
文章目录红黑树代码红黑树性质红黑树vsAVL树红黑树的实现Insert()情况一:如果我插入的新节点时红色的情况二:叔叔是黑色或者不存在情况三: cur红,p为红,g为黑,u不存在或者为黑-双旋检查erase()红黑树vsAVL树红黑树的应用:红黑树 二叉搜索树 …...
MOV指令使用
mov用于数据传送。之后分为目的操作数和源操作数,目的操作数必须是通用寄存器或者内存单元:源操作数可以是具有相同数据宽度的通用寄存器或者内存单元,还可以是立即数。传送指令只影响目的操作数内容,不改变源操作数内容。 如&am…...
解释一下RecyclerView的适配器内部方法
RecyclerView的适配器(Adapter) 是一个连接数据模型和RecyclerView的桥梁,它在RecyclerView中提供了数据和布局之间的连接。下面是RecyclerView适配器中常用的几个方法的解释: 1.onCreateViewHolder(ViewGroup parent, int view…...
集合框架及背后的数据结构
1.介绍: Java 集合框架,又被称为容器是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。 其主要表现为将多个元素置于一个单元中,用于对这些元素进行快速、便捷的存储、检索 、管理 ,即平时我们俗称的增删查改…...
【强化学习】强化学习数学基础:蒙特卡洛方法
强化学习数学方法:蒙特卡洛方法举个例子举个例子1:投掷硬币The simplest MC-based RL algorithm举个例子2:Episode lengthUse data more efficientlyMC without exploring starts总结内容来源将value iteration和policy iteration方法称为mod…...
BI分析工具软件有哪些
最近发现很多人讨论BI数据分析,今天给大家全面介绍下BI数据分析相关的信息。首先给大家科普一下,什么是BI分析。 BI分析其实是指通过BI分析工具,对企业内部和外部的大量数据进行收集、整理、处理和分析,以提供有价值的洞察&#x…...
2023爱分析·RPA软件市场厂商评估报告:容智信息
目录 1. 研究范围定义 2. RPA软件市场分析 3. 厂商评估:容智信息 4. 入选证书 1. 研究范围定义 RPA即Robotic Process Automation(机器人流程自动化),是一种通过模拟人与软件系统的交互过程,实现由软件机器人…...
设计模式之七大原则(二)——里氏替换原则、依赖倒转原则
1.里氏替换原则 里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》)里提…...
数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊
本文为大家整理了墨天轮数据社区2023年2月发布的优质技术文章,主题涵盖Oracle、MySQL、PostgreSQL等数据库的环境搭建、故障处理等日常实践操作,以及概念梳理、常用脚本等总结记录,分享给大家:Oracle优质技术文章概念梳理&基础…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
