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

加密学原理及openssl,私有CA搭建

时间:2015-09-16 01:01:02      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:私密性   secret   特征码   加密   pki   ca   

公钥加密:密钥是成对儿出现
    公钥:公开给所有人;pubkey
    私钥:自己留存,必须保证其私密性;secret key
    特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
实现:
    数字签名:主要在于让接收方确认发送方身份;用自己的私钥加密;
    密钥交换

    方式(IKE):

        ①.发送方用对方的公钥加密一个对称密钥,并发送给对方;

        ②.DH算法,不会在网络上发送秘钥,所以就算破解了也拿不到秘钥,想了解DH算法请google


安全通信过程解析:(假设A和B要安全传输数据,A要发送数据给B)

发送方A:

1.A用单向加密算法对实际数据做hash,并且用自己的私钥加密hash得到的特征码

2..A用随机对称密钥加密实际数据和刚刚hash得到的特征码,用B的公钥加密那个随机的对称密钥

3.将⑴用刚刚对称密钥加密的数据和特征码,⑵用B的公钥加密后的对称密钥发送给B

接收方B:

1.用自己的私钥解密得到发送方的随机对称密钥

2.用对称密钥解密数据得到以A的私钥加密了的特征码和实际数据

3.用A的公钥解密那个加密了的特征码

4.对实际数据做hash比对上面说的特征码实现了完整性校验


上面过程看似很完美,其实有个漏洞:

A如何拿到B的公钥呢?万一C假冒B告知A自己是B呢?同理B如何拿到A的公钥呢?

这时就需要用到CA了,CA是证书颁发机构,B会把自己的公钥发送给CA,让CA证明B就是B(会在发给B的证书(证书里内嵌了B的公钥)上面盖一个章,实现B的身份认证,这就是数字签名)


为了保证私钥丢了其他人也不能用,私钥需要加密,但是万一别人解密呢?

所以:CA机构需要有证书吊销列表(证书其实有有效期的),接受方每次都会查看证书是不是可信机构发的,而且会查看CA服务器上的证书吊销列表有没有发送方的这个证书,有的话就不可信

PKI: Public Key Infrastructure
    签证机构:CA
    注册机构:RA
    证书吊销列表:CRL
    证书存取库

证书格式:

X.509:定义了证书的结构以及认证协议标准
    版本号
    序列号
    签名算法ID
    发行者名称
    有效期限
    主体名称
    主体公钥
    发行者惟一标识
    主体的惟一标识
    扩展
    发行者签名

上面流程还是有漏洞,万一有人冒充CA呢?那么收到CA证书的人如何验证CA的可靠性呢?

这时,CA会用自己的私钥加密自己颁发给A或者B的证书的特征码,这时,就需要CA的公钥去解密得到特征码,此时就用到CA的证书了,CA自己给自己发证书,当A或者B收到CA颁发给自己的证书同时要验证CA的签名是否可靠(是不是可信CA),用什么方式验证呢?就是装系统时系统会内嵌所有可信CA公证机构的证书,会用系统内嵌的证书里提取出CA公钥,除非系统盗版

windows上自带的证书:

技术分享


SSL/TLS:在应用层和传输层之间加了半层

分层设计:
    1、最低层:基础算法原语的实现,aes, rsa, md5
    2、向上一层:各种算法的实现
    3、再向上一层:组合算法实现的半成品
    4、用各种组件拼装而成的种种成品密码学协议/软件:
        tls, ssh,

三个组件:
    openssl: 多用途的命令行工具;
    libcrypto: 公共加密库;
    libssl: 库,实现了ssl及tls;


linux上openssl命令使用:

1.enc命令:
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
openssl ?可以获取帮助

2.单向加密:
工具:md5sum, sha1sum, sha224sum, sha256sum,..., openssl dgst
dgst命令:openssl dgst -md5 /PATH/TO/SOMEFILE


MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;
机制:CBC-MAC    HMAC:使用md5或sha1算法

3.生成随机数:
openssl rand -base64|-hex NUM
NUM: 表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2;

4.生成密钥对儿:
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
# (umask 077; openssl genrsa -out key.pri 2048)
提取出公钥:
# openssl rsa -in /PATH/FROM/PRIVATEKEY.FILE -pubout(公钥可以从私钥中提取出来)


本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1695150

加密学原理及openssl,私有CA搭建

标签:私密性   secret   特征码   加密   pki   ca   

原文地址:http://leeyan.blog.51cto.com/8379003/1695150

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