首页 > 代码库 > 加密解密过程

加密解密过程

1,首先来说说有关加密解密有关的信息

信息安全标准NIST(National Institute of Standards and Technology)美国国家标准与技术研究院

openssl有CIA

C:保密性:

          数据保密性

          隐私性

A:完整性:

          数据完整性

          系统完整性

I:可用性

真实性:一个实体是真实的,可被验证的。

可追溯性:一旦被攻击,能够追溯攻击源在哪

2,OSI规定的X.800

    1)安全攻击:

                             被动攻击:窃听

                             主动攻击:1,伪装 2,重播 3,消息修改 4,拒绝攻击等

     2)安全服务:认证

                               访问控制

                                数据保密性:

                                                     连接保密性

                                                     无连接保密性

                           选择域保密性

                           流量保密性

                数据完整性

                不可否认性

  3)安全机制:

            加密

            数字签名

            访问控制

            数据完整性

            认证交换

            流量填充

            路由控制

            公证

  4)密码算法和协议

            对称加密:

                      DES

                      3DES

                      AES

                      Blowfish

                      Towfish

                      IDEA

                      RC6

                      CST5

             特点:

                  1,加密,解密使用同一口令

                  2,将明文分割成固定块大小,逐个进行加密

             缺点:

                  1,秘钥过多

                  2,秘钥传输:

                              秘钥交换,身份验证,数据完整性

             公钥加密

                    常用算法:RSA,DSA,EIGAMAL

                    秘钥:public key ,secret key 

                    p/s

             单项加密:

                      定长输出:无论你输入的数据是多长,输出的结果都是一样长度

                      雪崩效应:输入的数据有一点点不同,结果会有巨大不同,主要目的在防暴力                                                                   破解

                            MD5:message digest,输出结果固定长度128bit

                            SHA1:secure hash algorithm安全的哈希算法,输出结果固定长度160bit

单向加密就是去计算一段数据的特征值,加密过程是不可逆的,是去计算一段数据的特征码,是独一无二的,用于对数据完整性的校验,无论你输入的数据是多长,输出的结果都是一样长度。


2,加密解密的过程

假设还是小黑和小白通信,双方都希望在数据的发送过程中,既能实现用户身份验证,

又能实现数据加密,还能实现数据的完整性,那该怎么办呢?

现在小黑在发送数据前,先将数据用单向加密,计算出特征值,然后再用私钥解密将特征值加密

接下来会再用产生一个一次性的密码,用小白的公钥将这个密码加密然后放在数据后,最后再用对称加密

将全部加密,这时就是密文了,到了小白那里以后,小白先用自己的私钥拿到那个密码,然后再用那个

密码解密,获得数据的特征值,然后再用单向解密计算出一个特征值,如果这两个值相同,则说明

数据完好,以上过程就实现了三重验证


以下是图解过程

wKiom1Pd3U6xAHJtAAJExwnyTkY403.jpg


3,CA

CA标准X.509又: 

             版本号

                          证书序列号

                          算法参数

                          发行者名称

                          有效期限

                          主体名称 

                          公钥信息

                          发行者ID

                          主体ID

                           扩展

                           CA签名

CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。在SET交易中,CA不仅对持卡人、商户发放证书,还要对获款的银行、网关发放证书。

CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。

CA 也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。


验证过程用 对应小黑CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的,然后解密出一段特征码;小白在用单项加密计算小黑的证书特征码;两个特征码一致,证书是完好无缺的;然后再去验证该证书是不是小黑的,如果验证通过了,才确认是小黑的证书;然后再去看该证书是不是在有效期和吊销列表内。

4,ssl

SSL介于应用层和TCP层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。还有一种是应用层数据直接传递给传输层,不走SSL层。

如图:

wKiom1Pd5i2QnTV3AAGvvGYZtsI299.jpg



Https通信

wKioL1Pd6D-w0qdAAACWJlHaZIg479.png

   HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行三次握手,在握手过程中将确立双方加密传输数据的密码信息。

    1. 客户端发起HTTPS请求

      用户在浏览器里输入一个https网址,然后连接到server的某一端口。

  2. 服务端的配置

  这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

  3. 传送证书

  这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。(详情请往上看3,CA。)

  4. 客户端解析证书

  这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  5. 传送加密信息

  这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务段解密信息

  服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息

  这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

  8. 客户端解密信息

  客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

    

                           

本文出自 “Linux” 博客,谢绝转载!