码迷,mamicode.com
首页 > 编程语言 > 详细

加密类型及其算法

时间:2015-09-19 06:24:07      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:创建私有ca

别人可以得到我们的加密转换规则,但是不知道密钥是什么,你仍然能够将密文转换为明文!


近些年来比较流行的:

      对称加密:加密解密用的同一个密码

      单向加密:提取数据特征码,输入一样,输出必然相同 

      非对称加密算法:公钥私钥


IKE:密钥交换简写

离散对数原理剖析:  (单向加密)

        A:生成 x     B:生成 y

        A:g^x%p --> B    A把g的x次方对p取模 传给B

        B: g^y%p --> A    B把g的y次方对p取模 传给A

    我们在互联网上传递了4个数字: 

    四个数字分别是         g 、p、 g^x%p、g^y%p

    拿到数字后 A:(g^y%p)^x=g^yx%p

               B:(g^x%p)^y=g^xy%p 分别取自己手中数字的平方,结果相同

这就是著名的Diffie-Hellman算法


那么问题又来了,你俩交换数字的时候,怎么确认是对方发的

所以又催生了

      非对称加密算法:

            公钥:p   公钥是私钥中提取出来的,是公开的

            私钥:s

 

   我拿着你的公钥去加密,只有你的私钥能解密 ;

   公钥加密加密速度太慢,所以通常用它来进行身份验证

         用自己的私钥加密,可以实现身份验证


PKI:定义了CA与其跟CA之间的对应关系,及CA的证书吊销列表

咱们有两种PKI: (TLS ;OpenGPG)

证书权威机构:

        CA:

 x509:

     公钥及有效期限

     证书的合法拥有者

     证书该如何使用

     CA的信息

     CA签名的校验码

 

网上著名的协议TLS/SSL 就是用的x509的证书

              TLS:传输层安全 类似于SSL都是加密机制

OpenGPG 也是一种证书管理机制 


OSI七层模型:

        物理层

        数据链路层

        网络层

        传输层

        会话层

        表示层

        应用层

三次握手后,协商使用哪种协议 是SSL  还是TLS

  1、server将自己的证书发给客户端

  2、客户端验证证书是不是我信赖的机构所颁发的,如果是才信任

  3、验证这个证书是不是完整的,如果是就拿着这个证书的公钥去使用

  4、客户端生成一个对称密钥,通过server端的公钥加密以后传给server

  5、server端拿着这个密码加密数据发给客户端    

                          这是SSL会话的建立过程

  然后协商双方之间的加密算法,因为对称加密的加密算法也有很多种。


     对称加密:常用算法

            DES算法

            3DES 

            AES:高级加密算法

            Blowfish:也是一种对称加密算法

      单向加密:常用算法

            MD4

            MD5

            SH1

            SHA192,SHA256,SHA512 越大速度越慢

            CRC-32:循环冗余校验码 (不是加密算法,是一种校验码机制)

      公钥加密:(加密/签名)

            身份认证

            数据加密

            密钥交换 

      公钥加密:常用算法

             RSA:加密;签名

             DSA:签名  美国国家安全局公开使用

             ElGamal:商业算法


linux上实现对称加密:

    OpenSSL:SSL的开源实现

       组成:

         libcrypto:通用加密库

         libssl:TLS/SSL的协议的实现;基于会话的实现了身份认证,数据机密性和会话完整性的库

         openssl:多用途的命令行工具,还可以模拟实现私有证书颁发机构

    OpenSSL的配置文件:/etc/pki/tls/openssl.cnf 用于将openssl工作成私有CA时用

    

加密实例: 将inittab这个文件用des3的加密算法加点盐,保存到当前目录叫inittab.des3

          openssl enc -des3 -salt -a -in inittab -out inittab.des3 会让你输入密码

解密实例:openssl enc -des3 -d -salt -a -in  inittab.des3 -out inittab              

如何查看特征码:md5sum +file /  sha查看各种sum

基于Openssl提取特征码: openssl -dgst -sha inittab


重点:OpenSSL创建私有CA

     在公司实现https服务器,就必须要先给web服务器发一个证书

1、生成一对密钥,把公钥做成证书

2、生成自签署证书

   

   genrsa:生成一个私钥 

站在CA目录上执行

 一:openssl genrsa 2048 > private/cakey.pem 使用rsa算法生成私钥保存为cakey.pem这个名

     或者:(umask 077; openssl genrsa -out /private/cakey.pem 1024) 使生成的文件权限为600


   提取公钥

 二:openssl rsa -in server.key -putout  将server.key里的公钥提取出来,一般不需要手动


    req生成自签署证书( 指定密钥文件是cakey.pem 保存在cacert.pem 指定有效期限为一年)

站在CA目录上执行

 三:openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 365

     CN;Hebei;Zhengzhou;Renfang;Yunwei;ca.mageedu.com;caadmin@mageedu.com

     自签署证书做好了  可以用这句话查看openssl x509 -text -in server.crt

   现在CA准备好了

 四:vim /etc/pki/tls/openssl.cnf  编辑CA的配置文件

    修改:dir    =/etc/pki/CA

           CA中还必须包含下面的几行命名的目录

           在下面 还可以设置默认的个人信息,以后就不用重复填写了    

五:私钥应该保存在/etc/pki/CA/private目录下叫做cakey.pem

六:在CA下创建 mkdir certs newcerts crl 

七、还要准备两个文件:touch index.txt  touch serial ;echo 01 > serial

八、在另外一台服务器上mkdir /etc/httpd

                      cd /etc/httpd;  mkdir ssl/  ;  cd ssl/

九、这台服务器需要申请生成私钥 (umask 077; openssl genrsa -out httpd.key 1024 )

十、还在ssl目录下 进行证书签署请求

        openssl req -new -key httpd.key -out httpd.csr

        下面填写的城市  公司 部门  一定要和CA一致

十一、因为在一台服务器,签署证书就不用远程发送;下面是ca签发的过程

    openssl ca -in httpd.csr -out httpd.crt -days 365     

十二:当前目录下就会有一个httpd.crt的证书

十三:回到CA  cd /etc/pki/CA;   cat index.txt 会有一个01号 因为前面咱们echo进去了一个01


.crt是证书 .csr是请求 .key是生成密钥


这个过程需要背过;而且要能把当前主机做成CA的过程用脚本实现,包括修改配置文件


附加知识点 生成测试用户:cd /etc/pki/tls/certs/

                         make httpd.pem 他会自动帮你生成私钥 让你填写各种信息

                         在certs目录下就会生成一个httpd.pem (私钥也在里面,但是正式环境不能这么玩)  根据后缀的不同自动确定是什么文件 Makefile文件中有定义      

加密类型及其算法

标签:创建私有ca

原文地址:http://10183596.blog.51cto.com/10173596/1696148

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