173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

rsa非对称加密算法安全吗

keros@mark 2022-10-17 资讯中心

本篇文章给大家谈谈rsa非对称加密算法安全吗以及对应的知识点,希望对各位有所帮助。

本文目录一览

非对称加密算法 (RSA、DSA、ECC、DH)

非对称加密需要两个密钥:公钥(publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

非对称加密算法的保密性好,它消除了最终用户交换密钥的需要。但是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)。使用最广泛的是 RSA 算法,Elgamal 是另一种常用的非对称加密算法。

收信者是唯一能够解开加密信息的人,因此收信者手里的必须是私钥。发信者手里的是公钥,其它人知道公钥没有关系,因为其它人发来的信息对收信者没有意义。

客户端需要将认证标识传送给服务器,此认证标识 (可能是一个随机数) 其它客户端可以知道,因此需要用私钥加密,客户端保存的是私钥。服务器端保存的是公钥,其它服务器知道公钥没有关系,因为客户端不需要登录其它服务器。

数字签名是为了表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面。就像手写的签名一样,具有不可抵赖性和简洁性。

简洁性:对信息原文做哈希运算,得到消息摘要,信息越短加密的耗时越少。

不可抵赖性:信息拥有者要保证签名的唯一性,必须是唯一能够加密消息摘要的人,因此必须用私钥加密 (就像字迹他人无法学会一样),得到签名。如果用公钥,那每个人都可以伪造签名了。

问题起源:对1和3,发信者怎么知道从网上获取的公钥就是真的?没有遭受中间人攻击?

这样就需要第三方机构来保证公钥的合法性,这个第三方机构就是 CA (Certificate Authority),证书中心。

CA 用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。

信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用 CA给的公钥解出信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了。

RSA 是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

A 要把信息发给 B 为例,确定角色:A 为加密者,B 为解密者。首先由 B 随机确定一个 KEY,称之为私钥,将这个 KEY 始终保存在机器 B 中而不发出来;然后,由这个 KEY 计算出另一个 KEY,称之为公钥。这个公钥的特性是几乎不可能通过它自身计算出生成它的私钥。接下来通过网络把这个公钥传给 A,A 收到公钥后,利用公钥对信息加密,并把密文通过网络发送到 B,最后 B 利用已知的私钥,就能对密文进行解码了。以上就是 RSA 算法的工作流程。

由于进行的都是大数计算,使得 RSA 最快的情况也比 DES 慢上好几倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。RSA 的速度是对应同样安全级别的对称密码算法的1/1000左右。

比起 DES 和其它对称算法来说,RSA 要慢得多。实际上一般使用一种对称算法来加密信息,然后用 RSA 来加密比较短的公钥,然后将用 RSA 加密的公钥和用对称算法加密的消息发送给接收方。

这样一来对随机数的要求就更高了,尤其对产生对称密码的要求非常高,否则的话可以越过 RSA 来直接攻击对称密码。

和其它加密过程一样,对 RSA 来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡中间人攻击。假设 A 交给 B 一个公钥,并使 B 相信这是A 的公钥,并且 C 可以截下 A 和 B 之间的信息传递,那么 C 可以将自己的公钥传给 B,B 以为这是 A 的公钥。C 可以将所有 B 传递给 A 的消息截下来,将这个消息用自己的密钥解密,读这个消息,然后将这个消息再用 A 的公钥加密后传给 A。理论上 A 和 B 都不会发现 C 在偷听它们的消息,今天人们一般用数字认证来防止这样的攻击。

(1) 针对 RSA 最流行的攻击一般是基于大数因数分解。1999年,RSA-155 (512 bits) 被成功分解,花了五个月时间(约8000 MIPS 年)和224 CPU hours 在一台有3.2G 中央内存的 Cray C916计算机上完成。

RSA-158 表示如下:

2009年12月12日,编号为 RSA-768 (768 bits, 232 digits) 数也被成功分解。这一事件威胁了现通行的1024-bit 密钥的安全性,普遍认为用户应尽快升级到2048-bit 或以上。

RSA-768表示如下:

(2) 秀尔算法

量子计算里的秀尔算法能使穷举的效率大大的提高。由于 RSA 算法是基于大数分解 (无法抵抗穷举攻击),因此在未来量子计算能对 RSA 算法构成较大的威胁。一个拥有 N 量子位的量子计算机,每次可进行2^N 次运算,理论上讲,密钥为1024位长的 RSA 算法,用一台512量子比特位的量子计算机在1秒内即可破解。

DSA (Digital Signature Algorithm) 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 DSS (DigitalSignature Standard)。 DSA 是基于整数有限域离散对数难题的。

简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名,如果数据和签名不匹配则认为验证失败。数字签名的作用就是校验数据在传输过程中不被修改,数字签名,是单向加密的升级。

椭圆加密算法(ECC)是一种公钥加密算法,最初由 Koblitz 和 Miller 两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。

ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥 (比如 RSA),提供相当的或更高等级的安全。ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

ECC 被广泛认为是在给定密钥长度的情况下,最强大的非对称算法,因此在对带宽要求十分紧的连接中会十分有用。

比特币钱包公钥的生成使用了椭圆曲线算法,通过椭圆曲线乘法可以从私钥计算得到公钥, 这是不可逆转的过程。

Java 中 Chipher、Signature、KeyPairGenerator、KeyAgreement、SecretKey 均不支持 ECC 算法。

DH,全称为"Diffie-Hellman",它是一种确保共享 KEY 安全穿越不安全网络的方法,也就是常说的密钥一致协议。由公开密钥密码体制的奠基人 Diffie 和 Hellman 所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。也就是由甲方产出一对密钥 (公钥、私钥),乙方依照甲方公钥产生乙方密钥对 (公钥、私钥)。

以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥 (SecretKey) 对数据加密。这样,在互通了本地密钥 (SecretKey) 算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯。

具体例子可以移步到这篇文章: 非对称密码之DH密钥交换算法

参考:

非对称加密算法

如果要给世界上所有算法按重要程度排个序,那我觉得“公钥加密算法”一定是排在最前边的,因为它是现代计算机通信安全的基石,保证了加密数据的安全。

01 对称加密算法

在非对称加密出现以前,普遍使用的是对称加密算法。所谓对称加密,就是加密和解密是相反的操作,对数据进行解密,只要按加密的方式反向操作一遍就可以获得对应的原始数据了,举一个简单的例子,如果要对字符串"abc"进行加密,先获取它们的ANSCII码为:97 98 99;密钥为+2,加密后的数据就是:99 100 101,将密文数据发送出去。接收方收到数据后对数据进行解密,每个数据减2,就得到了原文。当然这只是一个非常简单的例子,真实的对称加密算法会做得非常复杂,但这已经能够说明问题了。

这样的加密方法有什么缺点呢?首先缺点一:密钥传递困难;想想看如果两个人,分别是Bob和Alice,Bob要给Alice发消息,那Bob就要把密钥通过某种方式告诉Alice,有什么可靠的途径呢?打电话、发邮件、写信...等等方式好像都不靠谱,都有被窃取的风险,也只有两人见面后当面交流这一种方式了;缺点二:密钥数量会随着通信人数的增加而急剧增加,密钥管理将会是一个非常困难的事情。

02 非对称加密算法

1976年,两位美国计算机学家,提出了Diffie-Hellman密钥交换算法。这个算法的提出了一种崭新的构思,可以在不直接传递密钥的情况下,完成解密。这个算法启发了其他科学家,让人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应的关系即可,这样就避免了直接传递密钥。这种新的加密模式就是“非对称加密算法”。

算法大致过程是这样的:

(1)乙方 生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。

(2)甲方获取乙方的公钥,然后用它对信息加密。

(3)乙方得到加密后的信息,用私钥解密。

如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

03 RSA非对称加密算法

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。

从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

公钥加密 - 私钥解密

只有私钥持有方可以正确解密,保证通信安全

私钥加密 - 公钥解密

所有人都可以正确解密,信息一定是公钥所对应的私钥持有者发出的,可以做签名

04 质数的前置知识

RSA的安全性是由大数的质因数分解保证的。下面是一些质数的性质:

1、任意两个质数构成素质关系,比如:11和17;

2、一个数是质数,另一个数只要不是前者的倍数,两者就构成素质关系,比如3和10;

3、如果两个数之中,较大的那个是质数,则两者构成互质关系,比如97和57;

4、1和任意一个自然数都是互质关系,比如1和99;

5、p是大于1的整数,则p和p-1构成互质关系,比如57和56;

6、p是大于1的奇数,则p和p-2构成互质关系,比如17和15

05 RSA密钥生成步骤

举个“栗子“,假如通信双方为Alice和Bob,Alice要怎么生成公钥和私钥呢?

St ep 1:随机选择两个不相等的质数p和q;

Alice选择了3和11。(实际情况中,选择的越大,就越难破解)

S tep 2 :计算p和q的乘积n;

n = 3*11 = 33,将33转化为二进制:100001,这个时候密钥长度就是6位。

Step 3 :计算n的欧拉函数φ(n);

因为n可以写为两个质数相乘的形式,欧拉函数对于可以写成两个质数形式有简单计算方式

φ(n) = (p-1)(q-1)

Step 4 :随机选择一个整数e,条件是1 e φ(n),且e与φ(n) 互质;

爱丽丝就在1到20之间,随机选择了3

Step 5 :计算e对于φ(n)的模反元素d

所谓模反元素,就是指有一个整数d,可以使得ed被φ(n)除的余数为1

Step 6 :将n和e封装成公钥,n和d封装成私钥;

在上面的例子中,n=33,e=3,d=7,所以公钥就是 (33,3),私钥就是(33, 7)。

密钥生成步骤中,一共出现了六个数字,分别为:

素质的两个数p和q,乘积n,欧拉函数φ(n),随机质数e,模反元素d

这六个数字之中,公钥用到了两个(n和e),其余四个数字都是不公开的,可以删除。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。

那么,有无可能在已知n和e的情况下,推导出d?

(1)ed 1 (mod φ(n))。只有知道e和φ(n),才能算出d。

(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。

(3)n=pq。只有将n因数分解,才能算出p和q。

结论是如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。

BUT!

大整数的因数分解,是一件非常困难的事情。目前,除了暴力破解,还没有发现别的有效方法。

维基百科这样写道:

"对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。

假如有人找到一种快速因数分解的算法,那么RSA的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有较短的RSA密钥才可能被暴力破解。到现在为止,世界上还没有任何可靠的攻击RSA算法的方式。

只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。"

06 RSA加密和解密过程

1、加密要用公钥(n,e)

假设鲍勃要向爱丽丝发送加密信息m,他就要用爱丽丝的公钥 (n,e) 对m进行加密。

所谓"加密",就是算出下式的c:

爱丽丝的公钥是 (33, 3),鲍勃的m假设是5,那么可以算出下面的等式:

于是,c等于26,鲍勃就把26发给了爱丽丝。

2、解密要用私钥(n,d)

爱丽丝拿到鲍勃发来的26以后,就用自己的私钥(33, 7) 进行解密。下面的等式一定成立(至于为什么一定成立,证明过程比较复杂,略):

也就是说,c的d次方除以n的余数为m。现在,c等于26,私钥是(33, 7),那么,爱丽丝算出:

因此,爱丽丝知道了鲍勃加密前的原文就是5。

至此,加密和解密的整个过程全部完成。整个过程可以看到,加密和解密使用不用的密钥,且不用担心密钥传递过程中的泄密问题,这一点上与对称加密有很大的不同。由于非对称加密要进行的计算步骤复杂,所以通常情况下,是两种算法混合使用的。

07 一些其它的

在Part 5的第五步,要求一定要解出二元一次方程的一对正整数解,如果不存在正整数解,这该怎么办?

扩展欧几里得算法给出了解答:

对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by;

第五步其实等价于:ed - kφ(n) = 1, e与φ(n)又互质,形式上完全与扩展欧几里得算法的一致,所以一定有整数解存在。

Reference:

对称加密、非对称加密、RSA(总结)

指的就是加、解密使用的同是一串密钥,所以被称做对称加密。对称加密只有一个密钥作为私钥。 常见的对称加密算法:DES,aes等。

指的是加、解密使用不同的密钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。反之,私钥加密的信息,只有公钥才能解密。 举个例子,你向某公司服务器请求公钥,服务器将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人才能对你的消息解密。与对称加密不同的是,公司服务器不需要将私钥通过网络发送出去,因此安全性大大提高。最常用的非对称加密算法:

对称加密相比非对称加密算法来说,加解密的效率要高得多、加密速度快。但是缺陷在于对于密钥的管理和分发上比较困难,不是非常安全,密钥管理负担很重。

安全性更高,公钥是公开的,密钥是自己保存的,不需要将私钥给别人。缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

安全肯定是非对称加密安全,但是效率比较慢,对称加密效率高,但是不安全。严谨一点的做法是混合起来使用,将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。实际工作中直接使用非对称加、解密其实也可以,因为我们平时一般请求的报文不会很大,加解密起来速度在可接受范围内,或者可以对敏感字段,比如密码、手机号、身份证号等进行分段加密,效率还可以。

RSA非对称加密图解和原理

特点 :算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。rsa非对称加密算法安全吗的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。

本文标签:rsa非对称加密算法安全吗

产品列表
产品封装
友情链接