码迷,mamicode.com
首页 > 其他好文 > 详细

加密解密原理,自建CA

时间:2015-06-19 21:42:30      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:openssl   自建ca   ca   加密解密原理   

目前数据的加密方式有3种:单向加密,对称加密,公钥加密(非对称加密),我们常见的加密算法有DES,MD5,SHA1...SHA512,RSA,都有各自不同的用处。简单介绍下这3中加密方式。

单向加密

通过某种Hash 函数对原始数据进行提取,提取得到一端固定长度的密文(不管文件有多大,密文长度不变),这段数据也常被称为数据指纹或特征码。

        特点:1)单向加密,只能由原始数据得到特征码,而不能由特征码逆向推出原始数据。

                  2)雪崩效应,原始数据微小的改变会导致特征码巨大的变化

        应用:常被应用于数字签名,验证数据的完整性,而没有被他人篡改过;

        常见的算法:MD5、SHA1、SHA256、SHA384、SHA512(特征码长度为512)


对称加密

加密和解密使用的是同一个秘钥

        特点:加密解密速度快(相对于非对称加密)

        应用:适合大数据的加密,一般服务器和客户端的回话都是采用这种加密方式的

        常见的算法:DES、3DES、AES、Blowfish(商业的).......

在通信过程中,由于双方采用的是同一个秘钥,这个秘钥在网络上的安全传输显得非常关键,若这个秘钥被他人破解,则接下来传输的数据也会被他人截获。常见的秘钥传输有两者方式:1)利用DH算法Diffie-Hellman)实现秘钥交换,2)通过对方的公钥对秘钥进行加密(只有对方的私钥才能解密)。


这里简单介绍一下DH算法,算法通过公共信道交换一个信息,然后建立一个可以用于在公共信道上安全通信的共享秘密(shared secret)。下面是关于这个算法最简单、最早突出的协议:使用一个素数p的整数模n乘法群以及其原根g。下面展示这个算法,绿色表示非秘密信息, 红色粗体表示秘密信息:

技术分享

1、爱丽丝与鲍伯协定使用 p=23以及base g=5.

2、爱丽丝选择一个秘密整数a=6, 计算A = ga mod p并发送给鲍伯

  • A = 56 mod 23 = 8.

3、鲍伯选择一个秘密整数b=15, 计算B = gb mod p并发送给爱丽丝

  • B = 515 mod 23 = 19.

4、爱丽丝计算s = B a mod p

  • 196 mod 23 = 2.

5、鲍伯计算s = A b mod p

  • 815 mod 23 = 2

爱丽丝鲍伯最终都得到了同样的值,因为在模p技术分享技术分享 相等。 注意ab 和 gab = gba mod p 是秘密的。 其他所有的值 – pgga mod p, 以及 gb mod p – 都可以在公共信道上传递。 一旦爱丽丝鲍伯得出了公共秘密,他们就可以把它用作对称密钥,以进行双方的加密通讯,因为这个密钥只有他们才能得到。 当然,为了使这个例子变得安全,必须使用非常大的ab 以及 p, 否则可以实验所有技术分享的可能取值(总共有最多22个这样的值, 就算ab很大也无济于事)。 如果 p 是一个至少 300 位的质数,并且ab至少有100位长, 那么即使使用全人类所有的计算资源和当今最好的算法也不可能从gpga mod p 中计算出 a。这个问题就是著名的离散对数问题。注意g则不需要很大, 并且在一般的实践中通常是2或者5。双方的计算结果相同,之后就用这个结果作为双方通信的对称加密秘钥

(注:以上关于DH算法的信息来自基维百科)


公钥加密(非对称加密)

非对称加密需要有两个密码:公钥和私钥,用私钥加密,只能由公钥解密,反之,用公钥加密,只能用私钥解密。私钥只有拥有者持有,公钥是公开的。先生成私钥,再从公钥中提取出私钥。

        特点:由于算法比较复杂,加密解密速度慢(非常慢),优点是通讯双方不需要事先进行秘钥交换,且秘钥方便管理

        应用:用于数字签名和秘要交换

        常见的算法:RSA(又可以做加密解密,也可以做身份认证), DSA(只做身份认证), EIGamal(商业的)

在通信过


加密解密过程
1)技术分享

将原始数据和加密后的特征码一并发给对方,对方接收到数据后,先用发送方的公钥解密特征码(能解密,既保证了数据的来源可靠性),再用相同的单向加密算法计算出特征码与解密得到的特征报进行比对(相同则保证了数据的完整性)。以上方式保证了数据的来源和完整性但是数据是明文传输的。这个往往用于软件包的发布。

2)技术分享

对方接收到数据以后先用自己的公钥,先用自己的私钥对对称秘钥进行解密,再用得到的对称密钥对秘文进行解密,剩下的第一种情况一致,这样就保证了数据在传输过程中的保密性。这里涉及到了全部的3种加密解密方式,但是有个问题,如何将自己的公钥安全地送到对方的手中。这个就需要CA来完成。


 CA(Certificate Authority

CA即为证书授权中心,被称为可信第三方(Trusted Third Party,简称TTP)。CA通过证书证实他人的公钥信息,证书上有CA的签名。

1)证书

证书内容包括证书持有者的主体名称,公钥,有效期,CA的签名.........,其中最重要的是主题名称和公钥,通讯时,通讯双方先通过CA的公钥去解密对方证书中的CA签名(可信度较高的CA的证书会被直接集成在操作系统当中),验证完证书之后(包括来源可靠性、完整性验证),提取出证书中的公钥和对方进行通信。下面就是X.509标准规定的证书格式,CA在签署证书时通过Hash算法对证书申请者提交的信息进行单向加密,得到特征码,再用自己的私钥对特征码进行加密,将加密得到的签名附在信息后面,这个整体即为证书:

技术分享

主体名称:拥有者的名称信息,用于主机的证书时,主体名称为主机名,用于个人时,是个人名称(这个很关键)

主体公钥:拥有者的公钥(由证书拥有者提供)


2)PKI(公钥基础设施)

PKI(Public Key Infrastructure),X.509标准将PKI定义为支持公开密钥管理并能支持认证、加密、完整性和可追究性服务的基础设施,PKI由下面几部分组成:

       1、签证机构(CA)

        2、注册机构(RA)

3、证书吊销列表(CRL)

4、证书存取库(用户过来检查证书吊销列表中的证书是否存在时的一种接口)

证书吊销列表保存了在有效期内但不再使用的证书,如某个证书持有者把私钥泄露了或某些原因不再使用证书,即可向CA提交申请,吊销该证书。


3)证书的验证

在双方通讯之前会先去验证证书:

    1、用CA的私钥验证通过证书的签名验证证书的有效性和来源可靠性(参考上面)

    2、通过主体名称验证验证证书持有者的真实性(若客户端与服务器,这个主体名称为主机名称,客户端请求的主机名和服务器持有的证书中的主体名称必须一致)

    3、查看证书是否在吊销列表上


加密解密原理,自建CA

标签:openssl   自建ca   ca   加密解密原理   

原文地址:http://ljbaby.blog.51cto.com/10002758/1663704

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!