当前位置:首页 » 密码管理 » 不对称加密原理

不对称加密原理

发布时间: 2023-06-16 13:08:02

A. 非对称加密和对称加密的区别

非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下:

1、加密和解密过程不同

对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。

2、加密解密速度不同

对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。

3、传输的安全性不同

对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。

非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。

B. 图文彻底搞懂非对称加密(公钥密钥)

前文详细讲解了对称加密及算法原理。那么是不是对称加密就万无一失了呢?对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥。你可以能会提出疑问:既然要加、解密,当然双方都要持有密钥,这有什么问题呢?别急,我们继续往下看。

我们先看一个例子,小明和小红要进行通信,但是不想被其他人知道通信的内容,所以双方决定采用对称加密的方式。他们做了下面的事情:

1、双方商定了加密和解密的算法

2、双方确定密钥

3、通信过程中采用这个密钥进行加密和解密

这是不是一个看似完美的方案?但其中有一个步骤存在漏洞!

问题出在步骤2:双方确定密钥!

你肯定会问,双方不确定密钥,后面的加、解密怎么做?

问题在于确定下来的密钥如何让双方都知道。密钥在传递过程中也是可能被盗取的!这里引出了一个经典问题:密钥配送问题。

小明和小红在商定密钥的过程中肯定会多次沟通密钥是什么。即使单方一次确定下来,也要发给对方。加密是为了保证信息传输的安全,但密钥本身也是信息,密钥的传输安全又该如何保证呢?难不成还要为密钥的传输再做一次加密?这样不就陷入了死循环?

你是不是在想,密钥即使被盗取,不还有加密算法保证信息安全吗?如果你真的有这个想法,那么赶紧复习一下上一篇文章讲的杜绝隐蔽式安全性。任何算法最终都会被破译,所以不能依赖算法的复杂度来保证安全。

小明和小红现在左右为难,想加密就要给对方发密钥,但发密钥又不能保证密钥的安全。他们应该怎么办呢?

有如下几种解决密钥配送问题的方案:

非对称加密也称为公钥密码。我更愿意用非对称加密这种叫法。因为可以体现出加密和解密使用不同的密钥。

对称加密中,我们只需要一个密钥,通信双方同时持有。而非对称加密需要4个密钥。通信双方各自准备一对公钥和私钥。其中公钥是公开的,由信息接受方提供给信息发送方。公钥用来对信息加密。私钥由信息接受方保留,用来解密。既然公钥是公开的,就不存在保密问题。也就是说非对称加密完全不存在密钥配送问题!你看,是不是完美解决了密钥配送问题?

回到刚才的例子,小明和下红经过研究发现非对称加密能解决他们通信的安全问题,于是做了下面的事情:

1、小明确定了自己的私钥 mPrivateKey,公钥 mPublicKey。自己保留私钥,将公钥mPublicKey发给了小红

2、小红确定了自己的私钥 hPrivateKey,公钥 hPublicKey。自己保留私钥,将公钥 hPublicKey 发给了小明

3、小明发送信息 “周六早10点soho T1楼下见”,并且用小红的公钥 hPublicKey 进行加密。

4、小红收到信息后用自己的私钥 hPrivateKey 进行解密。然后回复 “收到,不要迟到” 并用小明的公钥mPublicKey加密。

5、小明收到信息后用自己的私钥 mPrivateKey 进行解密。读取信息后心里暗想:还提醒我不迟到?每次迟到的都是你吧?

以上过程是一次完整的request和response。通过这个例子我们梳理出一次信息传输的非对称加、解密过程:

1、消息接收方准备好公钥和私钥

2、私钥接收方自己留存、公钥发布给消息发送方

3、消息发送方使用接收方公钥对消息进行加密

4、消息接收方用自己的私钥对消息解密

公钥只能用做数据加密。公钥加密的数据,只能用对应的私钥才能解密。这是非对称加密的核心概念。

下面我用一个更为形象的例子来帮助大家理解。

我有下图这样一个信箱。

由于我只想接收我期望与之通信的朋友信件。于是我在投递口加了一把锁,这把锁的钥匙(公钥)我可以复制n份,发给我想接受其信件的人。只有这些人可以用这把钥匙打开寄信口,把信件投入。

相信通过这个例子,可以帮助大家彻底理解公钥和私钥的概念。

RSA 是现在使用最为广泛的非对称加密算法,本节我们来简单介绍 RSA 加解密的过程。

RSA 加解密算法其实很简单:

密文=明文^E mod N

明文=密文^D mod N

RSA 算法并不会像对称加密一样,用玩魔方的方式来打乱原始信息。RSA 加、解密中使用了是同样的数 N。公钥是公开的,意味着 N 也是公开的。所以私钥也可以认为只是 D。

我们接下来看一看 N、E、D 是如何计算的。

1、求 N

首先需要准备两个很大质数 a 和 b。太小容易破解,太大计算成本太高。我们可以用 512 bit 的数字,安全性要求高的可以使用 1024,2048 bit。

N=a*b

2、求 L

L 只是生成密钥对过程中产生的数,并不参与加解密。L 是 (a-1) 和 (b-1) 的最小公倍数

3、求 E(公钥)

E 有两个限制:

1<E<

E和L的最大公约数为1

第一个条件限制了 E 的取值范围,第二个条件是为了保证有与 E 对应的解密时用到的 D。

4、求 D(私钥)

D 也有两个限制条件:

1<D<L

E*D mod L = 1

第二个条件确保密文解密时能够成功得到原来的明文。

由于原理涉及很多数学知识,这里就不展开细讲,我们只需要了解这个过程中用到这几个数字及公式。这是理解RSA 安全性的基础。

由于 N 在公钥中是公开的,那么只需要破解 D,就可以解密得到明文。

在实际使用场景中,质数 a,b 一般至少1024 bit,那么 N 的长度在 2048 bit 以上。D 的长度和 N 接近。以现在计算机的算力,暴力破解 D 是非常困难的。

公钥是公开的,也就是说 E 和 N 是公开的,那么是否可以通过 E 和 N 推断出 D 呢?

E*D mod L = 1

想要推算出 D 就需要先推算出 L。L 是 (a-1) 和 (b-1) 的最小公倍数。想知道 L 就需要知道质数 a 和 b。破解者并不知道这两个质数,想要破解也只能通过暴力破解。这和直接破解 D 的难度是一样的。

等等,N 是公开的,而 N = a*b。那么是否可以对 N 进行质因数分解求得 a 和 b 呢?好在人类还未发现高效进行质因数分解的方法,因此可以认为做质因数分解非常困难。

但是一旦某一天发现了快速做质因数分解的算法,那么 RSA 就不再安全

我们可以看出大质数 a 和 b 在 RSA 算法中的重要性。保证 a 和 b 的安全也就确保了 RSA 算法的安全性。a 和 b 是通过伪随机生成器生成的。一旦伪随机数生成器的算法有问题,导致随机性很差或者可以被推断出来。那么 RSA 的安全性将被彻底破坏。

中间人攻击指的是在通信双方的通道上,混入攻击者。他对接收方伪装成发送者,对放送放伪装成接收者。

他监听到双方发送公钥时,偷偷将消息篡改,发送自己的公钥给双方。然后自己则保存下来双方的公钥。

如此操作后,双方加密使用的都是攻击者的公钥,那么后面所有的通信,攻击者都可以在拦截后进行解密,并且篡改信息内容再用接收方公钥加密。而接收方拿到的将会是篡改后的信息。实际上,发送和接收方都是在和中间人通信。

要防范中间人,我们需要使用公钥证书。这部分内容在下一篇文章里会做介绍。

和对称加密相比较,非对称加密有如下特点:

1、非对称加密解决了密码配送问题

2、非对称加密的处理速度只有对称加密的几百分之一。不适合对很长的消息做加密。

3、1024 bit 的 RSA不应该在被新的应用使用。至少要 2048 bit 的 RSA。

RSA 解决了密码配送问题,但是效率更低。所以有些时候,根据需求可能会配合使用对称和非对称加密,形成混合密码系统,各取所长。

最后提醒大家,RSA 还可以用于签名,但要注意是私钥签名,公钥验签。发信方用自己的私钥签名,收信方用对方公钥验签。关于签名,后面的文章会再详细讲解。

C. 密码学基础(三):非对称加密(RSA算法原理)

加密和解密使用的是两个不同的秘钥,这种算法叫做非对称加密。非对称加密又称为公钥加密,RSA只是公钥加密的一种。

现实生活中有签名,互联网中也存在签名。签名的作用有两个,一个是身份验证,一个是数据完整性验证。数字签名通过摘要算法来确保接收到的数据没有被篡改,再通过签名者的私钥加密,只能使用对应的公钥解密,以此来保证身份的一致性。

数字证书是将个人信息和数字签名放到一起,经由CA机构的私钥加密之后生成。当然,不经过CA机构,由自己完成签名的证书称为自签名证书。CA机构作为互联网密码体系中的基础机构,拥有相当高级的安全防范能力,所有的证书体系中的基本假设或者前提就是CA机构的私钥不被窃取,一旦 CA J机构出事,整个信息链将不再安全。

CA证书的生成过程如下:

证书参与信息传递完成加密和解密的过程如下:

互质关系:互质是公约数只有1的两个整数,1和1互质,13和13就不互质了。
欧拉函数:表示任意给定正整数 n,在小于等于n的正整数之中,有多少个与 n 构成互质关系,其表达式为:

其中,若P为质数,则其表达式可以简写为:

情况一:φ(1)=1
1和任何数都互质,所以φ(1)=1;

情况二:n 是质数, φ(n)=n-1
因为 n 是质数,所以和小于自己的所有数都是互质关系,所以φ(n)=n-1;

情况三:如果 n 是质数的某一个次方,即 n = p^k ( p 为质数,k 为大于等于1的整数),则φ(n)=(p-1)p^(k-1)
因为 p 为质数,所以除了 p 的倍数之外,小于 n 的所有数都是 n 的质数;

情况四:如果 n 可以分解成两个互质的整数之积,n = p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)

情况五:基于情况四,如果 p1 和 p2 都是质数,且 n=p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)

而 RSA 算法的基本原理就是欧拉函数中的第五种情况,即: φ(n)=(p1-1)(p2-1);

如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得 ab-1 被 n 整除,或者说ab被n除的余数是1。这时,b就叫做a的“模反元素”。欧拉定理可以用来证明模反元素必然存在。

可以看到,a的 φ(n)-1 次方,就是a对模数n的模反元素。

n=p x q = 3233,3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。

在实际使用中,一般场景下选择1024位长度的数字,更高安全要求的场景下,选择2048位的数字,这里作为演示,选取p=61和q=53;

因为n、p、q都为质数,所以φ(n) = (p-1)(q-1)=60×52= 3120

注意,这里是和φ(n) 互互质而不是n!假设选择的值是17,即 e=17;

模反元素就是指有一个整数 d,可以使得 ed 被 φ(n) 除的余数为1。表示为:(ed-1)=φ(n) y --> 17d=3120y+1,算出一组解为(2753,15),即 d=2753,y=-15,也就是(17 2753-1)/3120=15。

注意,这里不能选择3119,否则公私钥相同??

公钥:(n,e)=(3233,2753)
私钥:(n,d)=(3233,17)

公钥是公开的,也就是说m=p*q=3233是公开的,那么怎么求e被?e是通过模反函数求得,17d=3120y+1,e是公开的等于17,这时候想要求d就要知道3120,也就是φ(n),也就是φ(3233),说白了,3233是公开的,你能对3233进行因数分解,你就能知道d,也就能破解私钥。

正常情况下,3233我们可以因数分解为61*53,但是对于很大的数字,人类只能通过枚举的方法来因数分解,所以RSA安全性的本质就是:对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。

人类已经分解的最大整数是:

这个人类已经分解的最大整数为232个十进制位,768个二进制位,比它更大的因数分解,还没有被报道过,因此目前被破解的最长RSA密钥就是768位。所以实际使用中的1024位秘钥基本安全,2048位秘钥绝对安全。

网上有个段子:

已经得出公私钥的组成:
公钥:(n,e)=(3233,2753)
私钥:(n,d)=(3233,17)
加密的过程就是

解密过程如下:

其中 m 是要被加密的数字,c 是加密之后输出的结果,且 m < n ,其中解密过程一定成立可以证明的,这里省略证明过程。

总而言之,RSA的加密就是使用模反函数对数字进行加密和求解过程,在实际使用中因为 m < n必须成立,所以就有两种加密方法:

对称加密存在虽然快速,但是存在致命的缺点就是秘钥需要传递。非对称加密虽然不需要传递秘钥就可以完成加密和解密,但是其致命缺点是速度不够快,不能用于高频率,高容量的加密场景。所以才有了两者的互补关系,在传递对称加密的秘钥时采用非对称加密,完成秘钥传送之后采用对称加密,如此就可以完美互补。

D. 对称加密和非对称加密的区别

对称加密的加密和解密密钥都是一样的。而非对称加密的加密和解密密钥是不一样的。它们的算法也是不同的。
l
对称加密算法
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有des、idea和aes。
传统的des由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。1997年rsa数据安全公司发起了一项“des挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56位密钥des算法加密的密文。即des加密算法在计算机速度提升后的今天被认为是不安全的。
aes是美国联邦政府采用的商业及政府数据加密标准,预计将在未来几十年里代替des在各个领域中得到广泛应用。aes提供128位密钥,因此,128位aes的加密强度是56位des加密强度的1021倍还多。假设可以制造一部可以在1秒内破解des密码的机器,那么使用这台机器破解一个128位aes密码需要大约149亿万年的时间。(更深一步比较而言,宇宙一般被认为存在了还不到200亿年)因此可以预计,美国国家标准局倡导的aes即将作为新标准取代des。
l
不对称加密算法
不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有rsa算法和美国国家标准局提出的dsa。以不对称加密算法为基础的加密技术应用非常广泛。

E. 什么是非对称加密

它是和对称加密相对应的。

对称加密是比较原始的加密手段,它的特点就是加密的密码和解密的密码是同一个,比如说压缩软件就是,即你在压缩包上加的密码是什么,解密的密码也必须是这个。很显然,对称加密的好处是简单快捷,坏处是保密性不佳,你得告诉对方这个密码才行,即中间必须存在一个双方交流密码的过程,这就产生了被人窃去的危险——别人要是窃去了这个密码,那信息也就暴露了。

非对称加密则是,想要加密一个文件,需要生出两个密码,一个公开密码,一个私人密码。比如说你想让对方给你发涉密文件,你就用非对称加密工具生出公私两个密码,然后把公开密码发给他,对方就用这个公开密码对要传来的文档进行加密,然后把这个用公开密码加密的文件发给你,你就可以用你的私人密码进行解密。对方或别人仅仅知道公开密码,无法就此逆推出私人密码,所以能够保证私人密码的安全性,也就保证了传输过程的保密性,涉密文件不会就此被人解密(别人偷去无用,因为没有私人密码,无法解开)。这就是非对称加密在涉密文件传输的应用。

如果把上边这个过程反过来,非对称加密则会实现另一种用途,电子签名。比如说你发了一份文件,别人怎么会知道这个文件就是你发的,而不是别人冒用你的身份发的呢?就算有你的亲笔签名,可架不住有笔迹摹仿高手呢。这种时候,你就可以用你的私有密码对这份公开的文件进行加密,然后再把公开密码随同公布。如果别人用你公布的公开密码能够对此文件进行解密,如此便可以就此验证出加密者就是你本人,它的安全性很高,其保密性比真正的笔迹更要安全。

非对称应用的这两个过程可以各简缩成四个字,就是传输涉密文件时,“(用密码)加私(人密码)”,电子签名(验明发文者正身)时,是“(人密码)加公(开密码)”。

可以看出,非对称加密的好处就是保密性好,因为中间不需要双方交流私人密码的过程——只需要交流公开密码,而这个公开密码第三方偷去了没用(无法就它推导出私人密码),不好处也很明显,就是过程相对复杂,解密效率不及对称式的。

嗯,非对称加密对比对称加密,还有一个明显的不同点,即加密者自己无法解密。对方得到公开密码后,用它对文件进行加密后,这个加密后的文件,对方虽然是生成者,可他自己也没法解密。这一点和对称加密截然不同。

所以,要是需要双方或多方交流重要、敏感的信息,还是用非对称加密为宜。但若是自个儿保密用的,或是文件密级不是那么高的,综合看来大概用对称加密更好。

F. 非对称加密的加密原则是

非对称加密原则如下:

公钥私钥的使用原则

①每一个公钥都对应一个私钥。

②密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

③如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

④如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

非对称密钥密码的主要应用就是公钥加密和公钥认证。

G. 加密的原理什么

加密有两种方式:对称密钥加密和非对称密钥加密:
1. 对称密钥加密原理
在加密传输中最初是采用对称密钥方式,也就是加密和解密都用相同的密钥。
2. 非对称密钥加密原理 正因为对称密钥加密方法也不是很安全,于是想到了一种称之为“非对称密钥”加密(也称公钥加密)方法。所谓非对称密钥加密是指加密和解密用不同的密钥,其中一个称之为公钥,可以对外公开,通常用于数据加密,另一个相对称之为私钥,是不能对外公布的,通常用于数据解密。而且公/私钥必须成对使用,也就是用其中一个密钥加密的数据只能由与其配对的另一个密钥进行解密。这样用公钥加密的数据即使被人非法截取了,因为他没有与之配对的私钥(私钥仅发送方自己拥有),也不能对数据进行解密,确保了数据的安全。

H. 什么是非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

热点内容
分治算法java 发布:2025-02-04 23:41:15 浏览:591
安卓app点进去就闪退怎么回事 发布:2025-02-04 23:36:56 浏览:779
宏按键编程 发布:2025-02-04 23:05:11 浏览:904
微信隐形密码在哪里设置 发布:2025-02-04 23:05:01 浏览:866
android的补间动画 发布:2025-02-04 23:03:42 浏览:414
焦虑解压方式 发布:2025-02-04 23:01:18 浏览:210
php保存txt 发布:2025-02-04 22:55:20 浏览:287
安卓哪个国家免费用 发布:2025-02-04 22:39:54 浏览:64
电脑配置低但想玩小偷模拟器怎么办 发布:2025-02-04 22:39:03 浏览:238
最快脚本语言 发布:2025-02-04 22:27:23 浏览:530