密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)

news2024/11/25 14:26:21

文章目录

    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP#1 请求数据格式和响应数据格式

一. 简介概念Hyper Text Transfer Protocol (HTTP), 超文本传输协议, 规定了浏览器和服务器之间数据传输的规则HTTP协议特点1.基于TCP协议:面向连接,安全2.基于请求-响应模型的:一次请求对应一次响应3. HTTP协议是无状态的协议: 对于事务处理没有记忆能力, 每次请求…

JAVA中公平锁和非公平锁有什么区别?

从公平的角度来说,Java 中的锁总共可分为两类:公平锁和非公平锁。但公平锁和非公平锁有哪些区别? 正文 公平锁:每个线程获取锁的顺序是按照线程访问锁的先后顺序获取的,最前面的线程总是最先获取到锁。非公平锁:每个线程获取锁的顺序是随机的,并不会遵循先来先得的规则…

深眸科技|机器视觉提升制造性能,焕发传统企业智造新活力!

随着机器视觉技术的成熟与发展,其在工业制造中得到越来越广泛的应用。机器视觉在工业制造领域的应用朝着智能识别、智能检测、智能测量以及智能互联的完整智能体系方向发展。此外,快速变化的市场需求,不断涌入行业的竞争对手,让传…

操作系统真相还原_第8章:内存管理系统

文章目录8.1 Makefile 简介makefile基本语法make参数伪目标自定义变量与系统变量隐含规则自动化变量与模式规则8.2 实现assert断言操作系统代码编译、链接并写入磁盘启动bochs执行物理内存使用情况8.3 实现字符串操作函数操作系统代码编译、链接并写入磁盘启动bochs执行物理内存…

C++基础(一)—— C++概述、C++对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)

1. C概述1.1 c简介“c”中的来自于c语言中的递增运算符,该运算符将变量加1。c起初也叫”c withclsss”.通过名称表明,c是对C的扩展,因此c是c语言的超集,这意味着任何有效的c程序都是有效的c程序。c程序可以使用已有的c程序库。为什…

Halcon数据结构

1.HTuple类型 1、既可以表示的类型有int,double、float、string,既可以表示单个值; 2、可以是容器; 3、可以是数组,数组遍历时需要有下标,如:变量名称[下标] 图像数据类型 Byte:8…

药房管理系统;药库管理系统

第一,主要功能:  本系统集日常销售、药品进销存、会员积分、GSP管理等药店所需的所有功能于一体,实现店铺管理的全部自动化。第二、新功能:  增加了“按功能查询药品”的功能,使软件用户可以根据客户的症状推荐合适…

【进阶】2、搭建K8s集群【v1.23】

[toc] 一、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络…

编写SPI_Master驱动程序_老方法

编写SPI_Master驱动程序 文章目录编写SPI_Master驱动程序参考资料:一、 SPI驱动框架1.1 总体框架1.2 怎么编写SPI_Master驱动1.2.1 编写设备树1.2.2 编写驱动程序二、 编写程序2.1 数据传输流程2.2 写代码致谢参考资料: 内核头文件:include\…

数字IC手撕代码--联发科(总线访问仲裁)

题目描述当A、B两组的信号请求访问某个模块时,为了保证正确的访问,需要对这些信号进行仲裁。请用Verilog实现一个仲裁器,对两组请求信号进行仲后,要求:协议如图所示,请求方发送req(request&…

数据推荐 | 人体行为识别数据集

人体行为识别任务旨在通过对人体姿态进行分析,识别出人体的具体动作,为人体行为预测、突发事件处理、智能健身、智能看护等领域提供技术支持。 图片 图片 人体行为识别数据标注方式 人体行为数据通用的标注方式包括人体关键点标注和动作标签标注&#…

Spring Boot 整合分布式缓存 Memcached

Memcached是一个开源、高性能,将数据分布于内存中并使用key-value存储结构的缓存系统。它通过在内存中缓存数据来减少向数据库的频繁访问连接的次数,可以提高动态、数据库驱动之类网站的运行速度。 Memcached在使用是比较简单的,在操作上基本…

经典面试题:“从输入URL到展示出页面“这个过程发生了什么?

目录 🐳今日良言:在逆境中善待自己 🐇一、输入网址(URL) 🐇二、域名查询(DNS解析) 🐇三、建立TCP连接 🐇四、发送HTTP/HTTPS请求 🐇五、服务器响应请求 🐇六、浏览器解析渲染页面 &…

Simple_SSTI_2

Simple_SSTI_2前言一、python类的内置属性二、解题步骤1.查看当前目录2. 打开flag文件得到flag前言 要想做到这个题,先要了解SSTI_2模板注入详解 一、python类的内置属性 先看如下一段代码: class Restaurant:"""类"""def…

存储的本质-学习笔记

1 经典案例 1.1 数据的流动 一条用户注册数据流动到后端服务器,持久化保存到数据库中。 1.2 数据的持久化 校验数据的合法性修改内存写入存储介质2 存储&数据库简介 2.1 存储系统特点 性能敏感、容易受硬件影响、存储系统代码既“简单”又“复杂”。 2.2 数…

从0到1实现单机记账APP原理与细节uniApp内含源码 (二)

单机记账APP演示及源码 具体演示如下面视频所示。免费下载地址:点击进入 预览APP下载地址:http://8.142.10.182:8888/down/aWHWeGaEQE2W.apk (带宽很小所以下载速度慢) 由于资源已经通过了,页面的样式这里就不写了&am…

蓝桥杯单片机组省赛十二届第一场(关于矩阵,温度ds18b20,时间ds1302的学习,以及继电器等外设的综合利用)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、该题目如下二、使用步骤1.矩阵键盘实现2.温度传感器ds18b20的实现总结提示:以下是本篇文章正文内容,下面案例可供参考 一、该题目如下 分…

使用Containerd搭建K8s集群【v1.25】

[toc] 一、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止swap分区二、准备环境 角色IP…

重磅新品 / 酷炫展品 / 强大生态,广和通玩转 MWC Barcelona 2023

2月27日,2023世界移动通信大会(MWC Barcelona 2023)在西班牙巴塞罗那正式开幕。全球知名移动运营商、设备制造商、技术提供商、物联网企业齐聚一堂,以领先的技术、创新的场景、前瞻的洞察向全行业输送最新鲜的行业观点。作为全球领…

python的opencv操作记录13——区域生长及分水岭算法

文章目录图像区域基本算法——形态学运算腐蚀与膨胀开运算与闭运算opencv中的形态学运算距离计算——distanceTransform函数连通域连通的定义计算连通域——connectedComponents连通域实验基于区域的分割区域生长算法自定义一个最简单区域生长算法实现区域分割一般区域分割open…