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算法的主要特性对比如下:

![在这里插入图片描述](https://img-
blog.csdnimg.cn/f0bb937af9b24de8825d291ab7a85233.png#pic_center)

SM3 杂凑算法

SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的 数字签名和验证
消息认证码的生成与验证 以及 随机数的生成 ,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。

此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算示例见
SM3标准

SM4 对称算法

此算法是一个 分组算法 ,用于 无线局域网产品
。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

同态加密

同态加密(Homomorphic
Encryption)是指将原始数据经过同态加密后,对得到的密文进行特定的运算,然后将计算结果再进行同态解密后得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/0c38b0ab009d42c2848ffc6e79dffcaa.png#pic_center)

同态加密与一般加密方案的关注点不同,一般的加密方案关注的是数据存储安全,即我要给其他人发送信息或者存储信息,我需要对数据进行加密之后再发送和存储,这里我们只需要保证在数据传送和存储的过程中不被其他人窃听到即可,在这个过程中用户时不能对加密的结果做任何操作的,否则可能会导致解密失败

同态加密的关注点则是 数据处理安全
,同态加密提供了一种对加密数据进行处理的功能。也就是说其他人可以对加密后的数据进行处理,在这个过程中不会泄露任何原始的内容,在数据处理完成之后再进行解密,得到的正是对原始数据进行相同处理后的结果。

密态计算和隐私计算

随着国家对数据安全的重视,各企业告别数据明文时代,启程数据密态时代,根据专家判断,数据密态时代大致发展为三个阶段:
计算密态化、大数据密态化以及数据要素密态化 。考虑到目前大多数企业正在进行 明文计算密文计算 转换的初始阶段,即:
计算密态化 。目前各行业在计算密态化阶段主要应用在较为基础和经典的场景,采用“隐私计算”的相关技术。

“隐私计算”一系列技术的提出,主要用于解决海量数据之间的安全流动,既需要保证数据发挥价值,又需要保护数据隐私安全,防止数据信息泄漏,隐私计算主要是指在数据全生命周期中,实现数据的“可用不可见”,兼顾数据流通与隐私保护两大方面,目前隐私计算想要实现的功能主要涵盖为两点:
数据可用不可见,数据不动模型动

隐私计算的技术主要分为3类:

  • 以密码协议为底层基础的 安全多方计算技术 ,其底层技术均为密码学相关原语技术,主要用于实现大数据分析、查询以及统计的功能函数。

  • 以人工智能技术奠基的联邦学习技术,该类技术依托人工智能技术,主要用于机器学习的建模过程,并在其过程中,需要多次应用到 安全多方计算 的相关技术。

  • 安全可信硬件技术 。其核心思想主要是构建可信执行环境,在该安全环境中进行数据的计算,但是该类技术的安全性主要依赖于芯片硬件厂商。

安全多方计算技术

安全多方计算简介

安全多方计算作为隐私计算的核心技术
,其主要功能简述为:在无可信第三方的前提下,多个计算节点在分布式计算环境中,各自输入数据,共同完成某个功能函数的计算,并不泄漏各个参与方的输入,并且所有参与方可以共享功能函数的输出函数值。

安全多方计算过程示意图如下![在这里插入图片描述](https://img-
blog.csdnimg.cn/2d02531aa6544ec6a8ba0bbf8aa2ea13.png#pic_center)上述过程中,各个参与方是将各自数据加密后再进行计算的,其中参与方在将数据分布式加密后再输入到功能函数的计算模块,充分保证明文的安全性。

安全多方计算本质上为 功能函数的设计与计算结果的输出
。在该过程,需要考虑到异地通讯部署计算节点的网络带宽问题,并且需要考虑待计算数据库的量级,以及功能函数计算时的性能和安全性。
目前常用秘密共享、同态加密、不经意传输以及混淆电路这四类技术混合使用来完成多方计算函数的构造
。其中秘密共享和同态加密技术将计算任务看作是函数;使用不经意传输构造的计算任务可以看作是查询功能;使用混淆电路构造的计算任务主要是电路的构造。上述四类技术在构造多方安全计算函数时,均有利弊,通常在构造时,混合使用上述几类技术。

  • 秘密共享:该类技术本质为秘密分割,主要是将秘密值进行分割,分到若干个参与者手中,每个参与者只能得到其中的分片信息,只有满足门限阙值参与者的秘密才可以恢复整个秘密,常用门限秘密共享方案。

  • 同态加密:分为有限同态加密和全同态加密,该类技术主要在密文域上进行数据运算,目前 有限同态加密 实现的功能有限,但是效率较优; 全同态加密 可以涵盖各类函数的计算实现,目前计算开销距离实际应用,仍需优化。

  • 不经意传输:该类技术主要是指接收方和发送方之间以不经意的方式传输信息,可以做到发送者对于接受者的选择信息比特不知情,并且对于接收者而言,只能得到对应的选择信息,对于其他信息不知情。通过Beaver的去随机化技术,以及后期发展的不经意传输扩展技术,可以实现使用少量不经意传输来实现大量不经意传输的计算,安全性和效率较优。

  • 混淆电路:混淆电路使用布尔电路以及算数电路等来实现函数的构造,将计算任务转为门电路的计算,具备很强的安全性,但效率较低。

安全多方计算技术主要基于各类底层密码学原语及协议,并且可以实现无可信第三方的可证安全性;底层技术大多为密码学技术。 通用安全多方计算技术
最早由图灵奖获得者华裔计算机科学家姚期智于1982年提出,经过30多年的发展变化,经历效率较优的 专用安全多方计算
算法时代,并且在2010年左右,各类 安全多方计算的通用编译器
的设计出炉,各类算法的改进以及硬件性能的稳定增长,使得安全多方计算具备更优的通用性。目前 ABY3、MP-
SPDZ、CrypTen、Obliv-C、TF-Encrypted MPC等安全多方计算的开源框架
在科研以及产业界具备重要的意义,具备较强的借鉴意义。

安全多方计算作为隐私计算非常典型的技术工具,其可以达到“输入隐私性、计算正确性、去中心化”的特性,在数据融合场景以及数据资产化场景中,实现数据集的查询、统计分析、建模预测以及可信存储等功能,在6G技术兴起后,高带宽、低延时的网络特性使得安全多方计算的可信计算功能更显优势;并且安全多方计算技术可以利于实现数据的确权,保障数据所有者的权益,将数据交易的本质由数据所有权转换为数据使用权。安全多方计算技术不仅作为隐私计算的一类重要技术,该技术也被用在区块链领域,主要应用在隐私智能合约、密钥管理以及随机数生成等应用场景。

安全多方计算的开销依旧远大于明文计算,因此优化模型框架,提升算法效率以及正确率是目前研究者的重要工作任务。安全多方计算技术作为一类重要核心技术,依旧需要与可信硬件技术、联邦学习技术以及区块链技术进行合作,实现在可信环境中联合建模、统计分析,以及上链下链的一系列技术,共同保证完成数据安全,为隐私数据护航。随着目前算法的优化,可以做到支持更为复杂的运算任务,隐私计算技术将作为必备的技术,在数据的完整生命周期中,达到保护用户数据隐私保护的效果。

安全多方计算的应用场景

安全多方计算技术在一些特定的应用场景,可以实现计算逻辑,数据大小比较以及两方集合求交等场景,可以采用几种不同的密码学技术设计协议;针对通用的场景,理论上可以使用混淆电路、同态加密以及不经意传输协议实现各类计算,由于可扩展性质的限制,在产业界应用之前依旧需要优化。

安全多方计算技术主要 用在需要秘密共享以及隐私保护的数据计算场景 ,主要包括 可信交换、安全查询以及联合分析 等。

  • 数据可信交换

主要用于解决“数据孤岛”问题,适用于不同企业机构间实现数据的可信互通,通过使用安全多方计算技术,保证数据的安全性以及隐私性问题,降低数据信息交易的成本,为数据拥有方和需求方之间提供安全交互服务的网络技术。

  • 数据安全查询

数据存储在云端服务器,出于合规要求,需要对数据分级并加密,用户在查询数据时,使用安全多方计算技术,保证数据查询方用户仅能得到自己需要的信息,密文状态下实现查询,本地用户解密,并且服务器端对于用户的查询的具体内容不知情,该类技术可以实现数据的安全查询,保障查询方用户与服务器的两方隐私。

  • 数据联合分析

目前的企业以及各类机构的数据分析主要聚集在自己内部应用产生数据进行分析,属于传统数据分析种类,随着跨机构以及跨国公司的经营运转,需要对各类数据进行联合分析,安全多方计算技术可以用于改进传统的数据分析算法,创建多个节点,多方参与者之间可以进行数据源协同分析,保护数据以及各方参与者。

参考文章

国密算法概述(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

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐