0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【安全算法科普】对称算法

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-09-06 14:02 次阅读

笔者在学习和工作中,经常跟【算法】打交道;基于平时对【算法】的了解,特写此文来整理一下常见的算法。注意,此文不对算法的具体细节做深究,仅供基础入门学习。限于篇幅原因,本文先介绍【对称加密算法】。


对称加密算法


对称加密算法,顾名思义,就是算法的执行过程是对称的;用最简单的话说,就是加密方和解密方使用的密钥是一致的,只不过执行的过程是相反的,一方(A)对明文(P)使用密钥K1进行加密得到密文(C),另一方(B)对密文(C)使用密钥K2进行解密拿到明文(P'); 要想两者的明文P和P'相等,必须保证密钥K1等于K2,这就是对称加密算法的基本要求。

常见的对称算法有DES、TDES、AES、SM4、RC2/4等。

1. DES/TDES算法

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。【摘自:百度百科 https://baike.baidu.com/item/DES/210508】

DES算法,有以下特点:密钥长度适中、实现原理较为简单、加解密过程较为高效。通常我们见到的DES密钥长度为8字节,即64比特位,但是实际使用的密钥的有效位是56比特位,即每个字节的最高位(第8、16、24、32、40、48、56、64比特位)实际都是不参与算法加解密运算的,我们称之为校验位,它们存在的目的是使得每个密钥都有奇数个1。由此可知,有2组8字节不完全相同的密钥,加解密结果是一致的这种情况是可能存在的。

算法对数据做加解密,都是以一定长度的数据块作为输入的;并且,对称算法有个特点,输入数据块的长度一般等于密钥的长度;也就是说,在进行DES运算(加密或解密)时,输入的数据长度都必须是8字节。同时,在DES对称算法中,输出的数据长度等于输入的数据长度,即8字节输入8字节输出。至此,有的童鞋会问,如果我们要执行加密的数据远远不止8字节呢,应该怎么办?这个问题就已经涉及到加解密过程的数据分组问题了,常见的分组方式有ECB方式和CBC方式,后续会对这2种方式做更为详细的介绍。

TDES全称是Triple Data Encryption Standard,即我们常说的3DES;三重数据加密算法(TDEA,Triple Data Encryption Algorithm)。它是DES算法的加强版本。TDES的执行过程如下:其中C表示密文、P表示明文、E表示加密运算、D表示解密运算、Kx表示不同组别的密钥。

TDES加密过程为:C=Ek3(Dk2(Ek1(P)))

TDES解密过程为:P=Dk1(EK2(Dk3(C)))

由上可知,标准的TDES的密钥长度是24字节的,即K1-K2-K3;但在实际生产使用过程中,也常使用16字节长度的密钥,此时密钥的K3部分将由K1来充当,即K1-K2-K1,强制把16字节的密钥转换为24字节的密钥。另一方面,从TDES加解密的过程,我们也可以发现当K1=K2,使用TDES的效果与单DES的效果是一致的。

注意的是,前面说到对称算法加解密运算,输入数据长度一般等于密钥的长度,而TDES的密钥长度是24字节,但这并不意味着执行TDES加解密时,输入数据长度必须是24字节;相反,它的输入数据长度还是8字节,与DES运算的输入完全一样。这也就是为什么说TDES是DES的加强版。同样的8字节输入数据经DES运算和TDES运算,通常是不一样的,除非TDES的密钥满足K1=K2的关系。

2. AES算法

高级加密标准,全称是Advanced Encryption Standard,缩写:AES。在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。【摘自 百度百科 https://baike.baidu.com/item/aes/5903?fr=aladdin】它是一种不同于DES的另一类对称算法,加密的强度比DES高,破解的难度也较大,同时实现它的加解密运算难度也高一些。

由于它也是对称加密加密算法,所以前面对加密算法描述的特点它都有,不同的是,它的是密钥长度有3种可能值,16字节、24字节、32字节,分别对应的密钥强度为128比特位、192比特位和256比特位。执行加解密运算时,输入数据的长度为16字节(128比特位),且输出数据长度等于输入数据长度。

3. SM4算法

SM算法是国密算法,国密即国家密码局认定的国产密码算法。主要有SM1、SM2、SM3、SM4,其中SM1 为对称加密,其加密强度与AES相当,但该算法不公开,调用该算法时,需要通过特定的加密芯片接口进行调用;SM4为对称加密算法;SM3为信息摘要算法;SM2为非对称加密算法。后续的文章会对SM算法做更为详细的介绍。

SM4算法的特点是密钥长度和分组长度均为128位;虽然密钥长度跟DES类似,但加密强度却能与AES媲美;并且在国家信息安全战略的大背景下,国密算法的大力推广得到了越来越多的支持。像目前国内出厂很多涉及金融安全的终端产品,如POS机、ATM机、密钥键盘、金融交易后台、商业银行系统等等,都是强制要求必须支持国密相关算法,并且发售的机器或上线的系统都必须通过国家密码局授权的国密认证,拿到对应的国密认证证书,才能最终商用,这或许能成为SM算法大放异彩的一个契机,若干年后指不定街边的小小机器都在跑国密算法呢。

4. RC2、RC4算法

RC2是由著名密码学家Ron Rivest设计的一种传统对称分组加密算法,它可作为DES算法的建议替代算法。它的输入和输出都是64比特。密钥的长度是从1字节到128字节可变,但目前的实现是8字节(1998年)

RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ronald Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。

5.对称加密算法对比总结

中文名称/简称 密钥长度可能值 加解密数据块长度 资源消耗 运算速度 安全性
数据加密标准/DES 8字节 8字节 较快
3重数据加密标准/TDES 16字节、24字节 8字节
高级加密标准/AES 16字节、24字节、32字节 16字节
国密对称算法/SM4 16字节 16字节
RC算法(RC2) 目前使用是8字节 8字节
RC算法(RC4) 密钥长度可变 长度可变 快(快DES10倍)

经过以上分析和总结,相信大家对对称加解密算法都有了一个大概的认识,这里并没有很具体地讲到每个算法的实现细节,那些数学理论的东西应该是数学家去验证的东西,我们作为算法的使用者和推广者,只需要了解其大致的基本原理,重点需要熟知每种加密算法的特性,根据实际应用的不同场景、对加密要求、运行环境等因素综合考虑,实现并使用最优的加密算法,即可。

文中的观点仅代表博主之愚见,算法方面的描述,也可能有纰漏的地方,若有发现,也请读者帮忙指正。感激不尽。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4454

    浏览量

    90747
  • AES
    AES
    +关注

    关注

    0

    文章

    97

    浏览量

    33064
  • DES
    DES
    +关注

    关注

    0

    文章

    63

    浏览量

    48031
收藏 人收藏

    评论

    相关推荐

    算法科普:非对称算法

    对称算法,你了解多少呢?
    的头像 发表于 09-05 21:07 4016次阅读
    <b class='flag-5'>算法科普</b>:非<b class='flag-5'>对称</b><b class='flag-5'>算法</b>

    单片机处理非对称加密算法

    普通单片机可以处理非对称加密算法吗?速度如何?求大神解答
    发表于 09-17 12:38

    程序保护的话 是不是加密算法越复杂,安全性越好呢?

    我是一名技术人员,想问问程序保护的话 是不是加密算法越复杂 安全性越好呢?使用RSA或者ECC等非对称算法是不是可绝对保证安全呢?
    发表于 05-27 15:34

    RJMU401国密算法应用流程

    算法SM2进行摘要签名;b、 同时使用对称算法SM4的密钥对数据摘要进行加密并传输给安全模块;c、 使用同一个对称
    发表于 01-02 14:55

    对称性加密算法

    对称性加密算法对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称
    发表于 07-19 06:32

    对称加密算法是什么

    对称加密算法也叫私钥加密算法,其特征是收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。非对称加密算法也叫公钥加密
    发表于 07-22 07:09

    软件加密算法都有哪些,这些算法在哪些方面得到了应用

    伴随着人工智能、物联网时代的到来,数据应用变得频繁起来,数据安全应该如何保护?软件加密算法都有哪些,这些算法在哪些方面得到了应用?慢慢读下去,你会发现围绕在我们身边的“小密码”。对称
    发表于 12-21 07:04

    浅谈对称加密算法与非对称密钥加密算法

    什么是对称密钥密码体制?对称密钥密码体制的缺点是什么?非对称加密算法又是什么?非对称加密算法的缺
    发表于 12-23 06:05

    基于对称四阶互累积量的盲信号分离算法

    本文提出一种适用于非平稳随机过程的基于对称四阶互累积量及其时间特性的盲信号分离理论,并给出基于块的迭代学习算法和在线自适应学习算法。仿真实验表明,这些算法具有
    发表于 01-12 18:59 7次下载

    采用对称加密算法的机制 GB1584.2-1997

    采用对称加密算法的机制 GB1584.2-1997 本标准规定了用对称加密算法实现的实体鉴别机制,它适合于我国使用。
    发表于 04-17 14:51 15次下载

    对称加密算法有什么特点

    对称加密算法对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法
    发表于 12-10 09:54 2.3w次阅读

    算法科普:有趣的霍夫曼编码

    霍夫曼编码 ( Huffman coding ) 是一种可变长的前缀码。霍夫曼编码使用的算法是 David A. Huffman 还是在MIT 的学生时提出的,并且在 1952 年发表了名为
    的头像 发表于 03-14 19:24 3132次阅读

    一种基于热核的3D对称图形匹配算法

    对称混淆问题一直是图形匹配的难点之一,其中,特征点选取、对称点检测、初始匹配对最终匹配结果影响很大针对此问题提出了一种基于热核的3D对称图形匹配算法。在前期工作基础上,考虑测地线在
    发表于 04-27 10:51 9次下载
    一种基于热核的3D<b class='flag-5'>对称</b>图形匹配<b class='flag-5'>算法</b>

    基于热核的3D对称图形匹配算法及研究

    对称混淆问题一直是图形匹配的难点之一,其中,特征点选取、对称点检测、初始匹配对最终匹配结果影响很大针对此问题提出了一种基于热核的3D对称图形匹配算法。在前期工作基础上,考虑测地线在
    发表于 05-11 11:22 17次下载

    嵌入式的RSA非对称加密算法

    对称加密算法是应用较早的加密算法,数据发送方将明文和密钥经加密算法处理,使其变成密文发送出去;接收方收到密文后,使用和加密算法相同的密钥进行
    的头像 发表于 01-20 11:17 1434次阅读
    嵌入式的RSA非<b class='flag-5'>对称</b>加密<b class='flag-5'>算法</b>