非对称加密-公钥和私钥

公钥密码体制的核心思想是:加密和解密采用不同的密钥。这是公钥密码体制和传统的对称密码体制最大的区别。对于传统对称密码而言,密文的安全性完全依赖于 密钥的保密性,一旦密钥泄漏,将毫无保密性可言。但是公钥密码体制彻底改变了这一状况。在公钥密码体制中,公钥是公开的,只有私钥是需要保密的。知道公钥 和密码算法要推测出私钥在计算上是不可行的。这样,只要私钥是安全的,那么加密就是可信的。

显然,对称密码和公钥密码都需要保证密钥的安全,不同之处在于密钥的管理和分发上面。在对称密码中,必须要有一种可靠的手段将加密密钥(同时也是解密密 钥)告诉给解密方;而在公钥密码体制中,这是不需要的。解密方只需要保证自己的私钥的保密性即可,对于公钥,无论是对加密方而言还是对密码分析者而言都是 公开的,故无需考虑采用可靠的通道进行密码分发。这使得密钥管理和密钥分发的难度大大降低了。 


加密和解密:发送方利用接收方的公钥对要发送的明文进行加密,接受方利用自己的 
私钥进行解密,其中公钥和私钥匙相对的,任何一个作为公钥,则另一个 
就为私钥.但是因为非对称加密技术的速度比较慢,所以,一般采用对称 
加密技术加密明文,然后用非对称加密技术加密对称密钥,即数字信封 技术. 
签名和验证:发送方用特殊的hash算法,由明文中产生固定长度的摘要,然后利用 
自己的私钥对形成的摘要进行加密,这个过程就叫签名。接受方利用 
发送方的公钥解密被加密的摘要得到结果A,然后对明文也进行hash操 
作产生摘要B.最后,把A和B作比较。此方式既可以保证发送方的身份不 
可抵赖,又可以保证数据在传输过程中不会被篡改。




     首先要分清它们的概念:

加密和认证

  首先我们需要区分加密和认证这两个基本概念。

  加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容, 所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的 权限。其重点在于用户的真实性。两者的侧重点是不同的。

  公钥和私钥

  其次我们还要了解公钥和私钥的概念和作用。

  在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

  公钥私钥的原则:

一个公钥对应一个私钥。
密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
  非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。  

事例说明下:

例如:比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

Bob将他的公开密钥传送给Alice。
Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
Bob用他的私人密钥解密Alice的消息。
那么Bob怎么可以辨认Alice是不是真人还是冒充的.我们只要和上面的例子方法相反就可以了.


Alice用她的私人密钥对文件加密,从而对文件签名。
Alice将签名的文件传送给Bob。
Bob用Alice的公钥解密文件,从而验证签名。
通过例子大家应该有所了解吧!

1.加密算法概述

加密算法根据内容是否可以还原分为可逆加密和非可逆加密

可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密

所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。

非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。

此处,我们介绍一种非常具有代表性的非对称加密算法,RSA加密算法。RSA算法是1977年发明的,全称是RSA Public Key System,这个Public Key就是指的公共密钥。

 

2.密钥的计算获取过程 

密钥的计算过程为:首先选择两个质数p和q,令n=p*q。

令k=ϕ(n)=(p−1)(q−1),原理见4的分析

选择任意整数d,保证其与k互质

取整数e,使得[de]k=[1]k。也就是说de=kt+1,t为某一整数。

 

3.RSA加密算法的使用过程

同样以一个字符串来进行举例,例如要对字符串the art of programming进行加密,RSA算法会提供两个公钥e和n,其值为两个正整数,解密方持有一个私钥d,然后开始加密解密过程过程。

1.      首先根据一定的规整将字符串转换为正整数z,例如对应为0到36,转化后形成了一个整数序列。

2.      对于每个字符对应的正整数映射值z,计算其加密值M=(N^e)%n. 其中N^e表示N的e次方。

3.      解密方收到密文后开始解密,计算解密后的值为(M^d)%n,可在此得到正整数z。

4.      根据开始设定的公共转化规则,即可将z转化为对应的字符,获得明文。

 

4.RSA加密算法原理解析

下面分析其内在的数学原理,说到RSA加密算法就不得不说到欧拉定理。

欧拉定理(Euler’s theorem)是欧拉在证明费马小定理的过程中,发现的一个适用性更广的定理。
首先定义一个函数,叫做欧拉Phi函数,即ϕ(n),其中,n是一个正整数。
ϕ(n)=总数(从1到n−1,与n互质整数)
比如5,那么1,2,3,4,都与5互质。与5互质的数有4个。ϕ(5)=4
再比如6,与1,5互质,与2,3,4并不互质。因此,ϕ(6)=2
对于一个质数p来说,它和1, 2, 3, …, p – 1都互质,所以ϕ(p)=p−1。比如ϕ(7)=6,ϕ(11)=10

欧拉定理叙述如下:
欧拉定理:如果n是一个正整数,a是任意一个非0整数,且n和a互质。那么,a^ϕ(n)−1可以被n整除。

推论1:如果m和n是互质的正整数。那么,ϕ(mn)=ϕ(m)ϕ(n)

推论2:[ab]n=[[a]n[b]n]n 

证明:假设a和b除以n的余数为c1,c2。a和b可以写成a=nt1+c1,b=nt2+c2。那么,ab=n2t1t2+nt1c2+nt2c1+c1c2。因此ab除以n的余数为c1c2。即[ab]n=[a]n[b]n。

有以上定理后,由此可以推导出RSA算法的内在原理

根据欧拉定理,对于任意z,如果z与n互质,那么:
[z^ϕ(n)]n=[z^k]n=[1]n

因此,
[z^(de)]n=[z^(kt+1)]n=[z^(kt)*z]n=[z^kt]n*[z]n= [z]n   因为[z^k]n = [1]n
上面主要使用了de=kt+1以及推论2。也就是说:
[z^(de)]n=[z]n

根据2的推论,有
([z^e]n)^d=[z]n

即d个余数相乘,因为其乘积可能大于n,所以由[ab]n=[[a]n[b]n]n,例如令a和b都为5,n为3,可知该结论

故上式可描述为[([z^e]n)^d]n=[z]n=z,就是原数字乘方求余数,然后再乘方求余数后得到原来数字的过程,得证。

 

公开的加密方式,私有的解密方式。RSA安全的关键在于很难对一个大的整数进行因子分解。

 

5.RSA加密的缺点

1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
2)安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NP问题



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值