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

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

3天内不再提示

算法科普:非对称算法

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-09-05 21:07 次阅读

通过本文的阅读,你可以了解到以下知识:

什么是非对称加密算法

对称加密算法和非对称加密算法最本质的区别是什么?

常见的非对称算法哪些以及它们的特性和区别是什么?

非对称加密算法的应用场景有哪些?


非对称加密算法


世界万物都是平衡的,正如计算机的世界一样,有0的地方就一定有1;同样的,在算法理论上,既然有【对称加密算法】,那肯定就会有【非对称加密算法】。

非对称算法,顾名思义:算法的执行过程是不对称的,也就是说加解密双方的密钥是不对称的。在非对称算法的理论上,密钥有公钥和私钥之分:其中私钥是代表自己唯一身份的一组密钥标识,不同的非对称加密算法,采用不同的数学理论来标识这个“唯一性”,比如RSA算法,使用的是“很大的素数”这种方法来标识;通常来说,私钥是不对外公开的,就好比藏在自己心里的秘密一样,不能被外人知晓,否则,数据的加密就变得不可靠,存在密钥泄露的风险。与私钥对应的密钥叫公钥,公钥与私钥正好相反,它是允许对外公开的,也就是任何人都可以持有加密方的公钥信息。看到这里,很多童鞋开始疑问:既然密钥(公钥)都公开了,那加密还有什么用,谈何安全性可言?有这样疑问的童鞋,大概思路还停留在【对称加密算法】的基础上,等我详细讲解完【非对称加密算法】的加密和解密,你就一定明白到底是怎么一回事了。

非对称算法的加密和解密的特点是:一段数据明文经私钥加密后,则需要使用该私钥对应的公钥做解密;反之,一段数据明文经公钥加密后,则需要使用该公钥对应的私钥做解密;即【公钥加密对应私钥解密,私钥加密对应公钥解密】。使用公式表达如下:其他E表示加密,D表示解密,PriKey表示私钥,PubKey表示公钥,A、B分别表示通讯双方,P表示数据明文,C表示数据密文。

通讯方A 通讯方B

E(P) by PriKey[A] = C 对应 D(C) by PubKey[A] = P

E(P) by PubKey[B] = C 对应 D(C) by PriKey[B] = P

通过如上公式,我们可以很清晰的看到,通讯AB双方需要使用非对称算法加密通讯报文,必须想方设法获取到对方的公钥,这样整个加密的通道才能完全打通。而前面我们也说到了,自己的公钥一般都是公开的,允许任何人持有,只要保证自己的私钥是保密的即可,这就是SSL通讯的理论基础。在SSL通讯之前,通常会有通讯握手动作,这个握手动作就是为了取得对方可信任的公钥,至于如何保证自己取得的公钥就是对方的真实公钥,而不是非法监听报文的“中间人”的假公钥,这就是SSL双向认证要解决的核心问题。该部分的内容,后续会有更为详细的文章做更近一步的介绍。


对称加密算法与非对称加密算法的本质区别


通过上面对非对称算法的介绍,大家可以了解到非对称算法核心的部分就是:密钥分为公钥和私钥,私钥保密公钥公开,私钥加密的密文需要使用公钥解密,公钥加密的密文需要私钥解密。具体的非对称算法和对称算法的区别如下表所列:

算法 密钥类型 加密解密的特点
对称加密算法 通讯双方有且只有一个共同的密钥K 加密方使用密钥K加密,解密方使用密钥K解密
非对称加密算法 密钥有分私钥和公钥; 通讯双方分别持有自己的私钥和对方的公钥; 加密方使用自己的私钥加密数据,解密方使用对方的公钥解密数据; 加密方使用对方的公钥加密数据,解密方使用自己的私钥解密数据;

非对称加密算法的分类和对比


常见的非对称加密算法有RSA算法、SM2算法;前者是国际通用的算法,后者是国密算法的一种。

RSA算法

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。【摘自: 百度百科 RSA算法 】

RSA加密算法的密钥长度不像我们所认知的对称加密算法 ,它的密钥长度是可变的,一般用位来表示,常见的有1024位和2048位,甚至4096位。密钥的位数越长,理论上来说,解密的难度越大,加密的强度就越大。综合加密级别和使用的便利性,【RSA2048】是我们最常见的。当RSA的密钥位数确定了,那它的【模长】也就确定了,模长的值为密钥位数对应的字节数;计算公式如下,其实M为模长,B为密钥的长度:

M = (B + 7) / 8 当M等于1024位时,对应的模长为128字节;当M等于2048位时,对应的模长为256字节。

了解【模长】的概念之后,我们需要知道RSA算法执行加密解密操作时,基本的数据块长度。在RSA算法中,执行加密和解密操作,输入的数据块长度都必须等于模长,否则算法内部无法处理;即RSA密钥的长度不同,对应输入数据块的长度也是不同的,这一点与DES、AES等对称加密算法是完全不一样的。

假设我们有4个RSA接口

RSA_prikey_encrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pri_key);

RSA_prikey_decrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pri_key);

RSA_pubkey_encrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pub_key);

RSA_pubkey_decrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pub_key);

有趣的是,当我们有一段固定的数据in,分别输入RSA_pubkey_encrypt和RSA_pubkey_decrypt接口,得出的out居然是一样的!同样的在类似的私钥接口,也有类似的现象。经过这个实验,我么可以得出结论:根本没有所谓的公钥加密和公钥解密之分,公钥加密就是公钥解密,私钥加密也就是私钥解密;所以我们应该对公钥私钥、加密解密做个统一叫法,应该就是私钥运算和公钥运算。所以以上的接口应改为:

RSA_prikey_operation(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pri_key);

RSA_pubkey_operation(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pub_key);

SM2算法

SM2算法是国产的非对称算法,它的诞生就是为了取代RSA算法。SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小。SM2算法和RSA算法比较如下:

SM2 RSA
算法结构 基本椭圆曲线(ECC) 基于特殊的可逆模幂运算
计算复杂度 完全指数级 亚指数级
存储空间 192-256bit 2048-4096bit
秘钥生成速度 较RSA算法快百倍以上
解密加密速度 较快 一般

SM2算法与RSA算法类型,它也有公钥和私钥之分,它的密钥特点是私钥固定长度32字节,而公钥有x和y两个分量,每个分量都是32字节,总共是64字节。

在执行加密运算时,输入数据块的长度是变长的,而加密后的密文长度等于输入长度+96字节。

在执行签名运算时,输入数据块的长度也是变长的,但签名后的数据长度则固定为64字节。

限于篇幅原因,后续再写专门的文章来介绍SM2算法。


非对称加密算法的应用场景


值得注意的是,数据加解密的过程中,虽然公钥和私钥都可以用于加密,也都可以用于解密,并没有严格的限制;但是,在实际的应用中,通常有:

私钥加密,公钥解密:通常应用有签名、验签,即产生签名的一方使用自己的私钥对数据进行签名操作,而验签签名数据是否合法的一方使用签名方的公钥对签名数据进行验签;所以这里可以简单地认为,签名就是私钥加密,验签就是公钥解密。

公钥解密,私钥解密:通常应用在对数据的加密传输,即加密方使用解密方的公钥做加密动作,这样就意味着这段加密数据只有解密方一人能解开,因为解密方的私钥是不公开的,只有它自己知道,这样就可以很好地保证的加密数据的安全性。


此次关于非对称加密算法的介绍,就到此结束,如果需要学习更多有关非对称加密算法的知识,可以自行深入学习RSA算法和SM2算法的更多算法细节,相信你一定有更多的收获。后续会有详细介绍非对称算法在实际应用场景的文章,敬请关注,谢谢。

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

    关注

    5083

    文章

    19129

    浏览量

    305400
  • 算法
    +关注

    关注

    23

    文章

    4612

    浏览量

    92926
  • 加密算法
    +关注

    关注

    0

    文章

    216

    浏览量

    25549
  • 非对称算法
    +关注

    关注

    0

    文章

    1

    浏览量

    937
收藏 人收藏

    评论

    相关推荐

    Littelfuse推出TPSMB非对称TVS二极管系列

    Littelfuse宣布推出TPSMB非对称TVS二极管系列,这是首款上市的非对称瞬态电压抑制(TVS)二极管,专门用于保护汽车应用中的碳化硅(SiC)MOSFET栅极驱动器。 这一创新产品满足
    的头像 发表于 12-30 14:39 60次阅读

    深入解析ECC256椭圆曲线加密算法

    保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。1、常见加密算法常见加密算法可分为三类,对称加密算法
    的头像 发表于 12-26 16:32 24次阅读
    深入解析ECC256椭圆曲线加密<b class='flag-5'>算法</b>

    加密算法在网络安全中扮演什么角色?

    : 通过哈希函数和消息认证码(MAC),加密算法可以检测数据在传输过程中是否被篡改,确保数据的完整性。 提供身份验证 : 非对称加密算法和数字签名技术可以验证通信双方的身份,防止身份冒充攻击。 实现数据签名 : 数字签名使用
    的头像 发表于 12-17 16:00 80次阅读

    常见的加密算法有哪些?它们各自的优势是什么?

    常见的加密算法及其优势如下: AES(Advanced Encryption Standard): AES是一种对称加密算法,采用分组密码体制,支持128位、192位和256位密钥长度。AES的优势
    的头像 发表于 12-17 15:57 110次阅读

    恩智浦发布MIFAR DUOX,简化NFC安全应用

    恩智浦发布MIFARE DUOX,是同类产品中首款在单个非接触NFC芯片中结合非对称对称加密算法,它可以简化密钥管理和快速非对称认证流程,适用于电动汽车充电认证、安全汽车门禁以及其他
    的头像 发表于 12-09 09:19 421次阅读

    “双系统”出炉!瑞芯微RK3562J非对称AMP:Linux+RTOS/裸机

    本帖最后由 Tronlong创龙科技 于 2024-11-25 08:44 编辑 “非对称AMP”双系统 AMP(Asymmetric Multi-Processing),即非对称多处理架构
    发表于 11-21 16:44

    对称多处理器和非对称多处理器的区别

    多处理器(Symmetric Multi-Processing,简称SMP)和非对称多处理器(Asymmetric Multi-Processing,简称AMP)。这两种架构在设计理念、资源管理、任务分配和性能优化等方面存在显著差异。 对称多处理器(SMP) 定义
    的头像 发表于 10-10 15:58 930次阅读

    请问高频放大器用非对称电源供电会有什么影响?

    高频放大器用非对称电源供电会有什么影响?
    发表于 08-29 06:22

    OPA828运放非对称电源供电有什么好处吗?

    看到一些精密仪器的电路运放好像特意设计成非对称电源供电,比如+14v、-17v这种,请问运放非对称电源供电有什么好处吗?信号摆幅不超过正负7v
    发表于 08-01 06:48

    TL084能否采用-5V和+ 32V的非对称双电源供电呢?

    看手册双电源最高支持到+-20V,单电源是4.5V到40V。请问一下能否采用-5V和+ 32V的非对称双电源供电呢?
    发表于 07-29 06:50

    bp神经网络算法的基本流程包括哪些

    。 初始化网络参数 在BP神经网络算法中,首先需要初始化网络的参数,包括权重和偏置。权重是连接神经元之间的系数,偏置是神经元的阈值。权重和偏置的初始值通常设置为小的随机数,以避免对称性问题。 1.1 随机初始化权重 权重的初始化
    的头像 发表于 07-04 09:47 653次阅读

    单相降压转换器双非对称BG评估板数据手册

    电子发烧友网站提供《单相降压转换器双非对称BG评估板数据手册.rar》资料免费下载
    发表于 04-14 17:10 0次下载
    单相降压转换器双<b class='flag-5'>非对称</b>BG评估板数据手册

    单相降压转换器双非对称AG评估板数据手册

    电子发烧友网站提供《单相降压转换器双非对称AG评估板数据手册.rar》资料免费下载
    发表于 04-14 17:02 0次下载
    单相降压转换器双<b class='flag-5'>非对称</b>AG评估板数据手册

    G473使用TIM1非对称模式做移相,用TIM8Combined PWM模式做对角的移相与门输出,为什么时序不对?

    G473使用TIM1非对称模式做移相,用TIM8Combined PWM模式做对角的移相与门输出,为啥占空比对了时序不对?
    发表于 03-14 07:49

    为什么三相短路是对称故障?单相短路是非对称故障呢?

    为什么三相短路是对称故障?单相短路是非对称故障呢? 三相短路是对称故障,而单相短路是非对称故障,其根本原因在于电网中的相量关系和电压分布。 首先,
    的头像 发表于 02-18 11:41 4097次阅读