您的位置:首页 > 运维架构 > Linux

加密和解密基础知识、linux上的私有CA实现方法、学习总结

2016-01-07 15:22 549 查看
加密和解密基础知识 简介:早期互联网,因为那时的电脑比较贵,用的人很少,当时的生产出的许多东西(如tcp、ftp、http等等)都没有考虑过安全的问题,直到出了安全问题时,人们才意识到安全的重要性,当时的”网景“公司专门为http研发了一种可被调用的安全模块,它位于应用层和传输层之间,只是占了半层,任何研发过程中调用它可以实现对数据加密和解密传输的安全性,用或不用都可以,这就叫做ssl,http调用ssl就变成了https,完成数据安全通信。 为了数据的保密性,我们不能被任何人截取你的数据、随意修改你的数据,设置数据的可用性:当你加密数据你必须能保证你要发送的人能解密能看。

ssl的工作流程:1.服务器认证阶段1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。2.用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
为了实现安全目标,需先了解以下攻击方式,安全技术等等: 一、互联网上有许多的不安全因素: 1、攻击类型 1)、威胁保密性攻击:许多不怀好意的人攻击你公司数据库,反而威胁你要拿钱,不拿钱它就发到互联网上,破坏你公司的信誉,数据窃听:当今有不少的通讯软件,不怀好意的他们会专门窃听你通讯过程中出现的数据,就会知道你发送了什么。
2)、威胁完整性的攻击:更改、伪装比如你在淘宝上买了一件东西,那些不怀好意的人伪装成你,把你购买的数量改了下,那就惨了。
3)、威胁可用性的攻击:拒绝服务拒绝服务攻击(dos)在网络上很无解,它只要把你的宽带占了,网站就无法别人访问了。 2、解决方案 安全技术(加密和解密)、服务(用于抵御攻击的服务,也即是为了实现上述安全目标而特地设计的安全服务)加密和解密:加密之前是明文,之后是密文,是基于一种算法转化成另外一种形式,这就是加密,解密就是把密文转化成明文

1)、加密和解密可分为: 传统加密方法:基于某种特定的规律,排列起来(比如用密码本解密等等)。 现代加密方法:现代块加密方法:我们不是把数据一个一个加密的,而是把 整个数据切割成一片一片,单独进行加密,前块与后块之间加密有一定的关系。 2)、用到的密钥算法和协议: 对称加密 公钥加密 单向加密 认证协议 对linux系统来说为了实现上述功能及服务,我们通常需要一些上述功能的解决方案,通常有两种,第一种是openssl(ssl),第二种是GPG(pgp),我们只说第一种, 3、加密算法和协议:1、对称加密:加密和解密使用同一个密钥,用户把数据加密发给别人,别人在用同样的密钥解密这就是对称加密 常见的对称加密算法有: DES:date encryption standard 3DES:triple DES AES:Advanced Encryption standard;(128bits,192bits,256bits,384bits) blowflsh twofile IDEA RC6 CAST5 特性: 1)、加密、解密使用同一个密钥 2)、将原始数据分隔成为固定大小的块,逐个进行加密 缺陷: 1)、密钥过多 :于同一个人传输数据都有可能会发生密钥一样的情况,安全将不复存在 2)、密钥分发困难 :如果访问网站的话,网站要给你发送密钥,传输过程中很难保证不被人窃取。
单向加密:对数据生成数据特征码,放在数据的后面 三、实现方法

1、公钥(非对称)加密:密钥分为公钥与私钥公钥:公钥从私钥中提取产生,公开给所有人,pubkey私钥:通过工具创建,使用者自己留存,必须保证其私密性:secret key特点:用公钥加密的数据,只能使用与之配对的私钥解密;反之亦然 用途:数字签名:主要在于让接受方确认发送方的身份密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方 公钥(非对称)加密技术是现代通信安全当中最为重要的加密技术之一,使早期互联网出现的问题得以解决

2、公钥(非对称)加密有两重作用: 1)、 私钥是留给自己,公钥所有人都可以得到,但是公钥和私钥都可以加密数据,因此有两种加密技术,第一种 例:比如有两个人相互通信A、B,A用B的公钥加密数据发送给B,B用自己的私钥解密,但是B不确认是不是A发给自己的, 2)、A用自己的私钥加密数据发送给B,B用A的公钥解密,能确认是A发来的,但中间如果有人窃取的话,任何人都能对其解密。 公钥(非对称)加密数据,速度太慢,一般把单向加密出来的特征码在进行公钥加密总结:例子: 如果两个人A、B进行通信 第一步:A先用单向加密,加密数据生成特征码 第二步:之后A用自己的私钥加密特征码生成数字签名 第三步:A在用一次性对称加密,加密整个数据 第四步:A拿B的公钥加密刚才的对称加密密码,并把全部发过去 第五步:接受到数据后B先用自己的私钥解密自己公钥加密的数据完成后得到对称加密密码 第六步:B用对称加密密码解密数据,之后用A的公钥解密A的私钥进行身份认证 第七步:B用单向加密,加密数据得出的特征码和接受过来的特征码进行比较数据的完整性,一样说明数据没被更改,反之亦然。 注意:这其中有个缺点:如果A向B索要公钥,此刻有中间人接受这个请求的话,中间人把自己的公钥发给A,在伪装成A向B索取公钥,如果B向A索要公钥;中间人把自己的公钥发给B,中间人会转发A和B相互通信的数据,也就是说A和B的通信过程中所有数据都被中间人看了一遍,这就需要第三方的认证证书CA。公钥加密常用算法:RSA(能实现加密也能实现解密)、DSA(只能实现加密不能实现解密)、ELGAMAL单向加密:即提出数据指纹;只能加密,不能解密特性:定长输出、雪崩效应功能:完整性常见的算法:md5:message digest 5,128bitssha1:secure hash Algorithm 1,160bits 3、密钥交换:IKE(internet key exchange) 1)、公钥加密 DH(deffie-hellman)公钥加密算法在网上传输容易被劫持了,一般我们都使用DH算法, 注意:我们说的是上面我们用的是公钥加密pki:公钥基础设施一共有4个组件组成签证机构:CA注册机构:RA证书吊销列表:CRL证书存取库
pki基础信息
2)、x509v3:定义了证书的结构以及认证协议标准版本号序列号签名算法ID发行者名称有效期限主体名称主体公钥发行者的唯一标识主体的唯一标识扩展 CA会把前面的内容使用单向加密生成发行者的签名,并用私钥把数字签名加密,附加在证书后面。 3)、总结: 假如A和B要相互通信,A收到B的证书,之后要验证证书的合法性: 第一步:要用CA的公钥去解密CA证书的数字签名, 第二步:使用单向加密加密数据出来的签名和原来的比较,看下是否一样,一样就表示证书的完整性可靠 第三步:检查证书的有效期限在不当前时间的范围之内,验证对方通信名称和CA上的主体名称是否相同, 第四步:检查证书是否被吊销了 第五步:检查通过之后A要把自己的证书发给B,B就开始检查验证A的证书的合法性 完成之后开下以下步骤:
第六步:A先用单向加密,加密数据生成特征码 第七步:之后A用自己的私钥加密特征码生成数字签名 第八步:A在用一次性对称加密,加密整个数据 第九步:A拿B的公钥加密刚才的对称加密密码,并把全部发过去 第十步:接受到数据后B先用自己的私钥解密自己公钥加密的数据完成后得到对称加密密码 第十一步:B用对称加密密码解密数据,之后用A的公钥解密A的私钥进行身份认证 第十二步:B用单向加密,加密数据得出的特征码和接受过来的特征码进行比较数据的完整性,一样说明数据没被更改,反之亦然。
四、SSL会话主要三步: 客户端向服务器端索要并验正证书; 双方协商生成“会话密钥”; 双方采用“会话密钥”进行加密通信; SSL Handshake Protocol: 第一阶段:ClientHello: 支持的协议版本,比如tls 1.2; 客户端生成一个随机数,稍后用户生成“会话密钥” 发送支持的加密算法,比如AES、3DES、RSA; 支持的压缩算法; 第二阶段:ServerHello 确认使用的加密通信协议版本,比如tls 1.2; 服务器端生成一个随机数,稍后用于生成“会话密钥” 确认使用的加密方法; 服务器证书; 第三阶段:
验正服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表) 发送以下信息给服务器端: 一个随机数; 编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送; 客户端握手结束通知; 第四阶段: 收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有到的“会话密钥”; 向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送; 服务端握手结束通知;

网景公司在1994年创造了ssl(secure sockets layer)因为ssl是商业版的,国际标准委员会仿照ssl研发tls(transport layer security),与ssl基本兼容 因为sslv3版出现漏洞,谷歌浏览器禁止使用ssl,现在基本上ssl处于废弃状态,现在使用最多的是tlstls协议简介:tls:安全传输层协议安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面,与具体的应用无关,所以,一般把TLS协议归为传输层安全协议。 tls的分层设计:1、最底层:基础算法原语的实现,aes,rsa,md52、向上一层:各种算法的实现3、在向上一层:组合算法实现的半成品4、用各种组件拼装而成的各种成品密码学协议软件上面这种好处是可以分别调用半成品,成品算法 linux私有CA的实现方法
一、openssl是开源的多用途工具: 1)、openssl由三部分组成: libencrpt库:用于实现加密解密的库 libssl库:用于实现ssl安全通信的库 openssl:多用途的命令行工具 2)、使用openssl实现对称加密:

对称加密: 工具:openssl enc gpg 支持的算法:3des,aes,blowfish,towfish例子:

3)、单向加密:

工具:openssl dgst或md5sum,sha1sum... dgst命令: 例子:


4)、生成用户密码:

工具:passwd,openssl passwd 例子:



5)、生成随机数:

工具:openssl rand openssl rand -hex NUM openssl rand -base64 例子:





6)、公钥加密: 加密解密 算法:RSA,ELGAMAL 工具:openssl rsautl,gpg 数字签名 算法:RSA,DSA,ELGAMAL 工具:openssl rsautl,gpg 密钥交换 算法:DH

7)、生成密钥: 例子: 把生成出来的密钥保存到/tmp/mm.private


提取公钥:

8)、linux系统上的随机数生成器: /dev/random:仅从熵池返回随机数;随机数用尽,阻塞 /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生产伪随机数,非阻塞伪随机数不安全: 当熵池中的随机数用完后可通过下面获取:
熵池中随机数的来源: 硬盘IO中断时间间隔; 键盘IO中断时间中断; 二、构建私有CA openssl命令: 配置文件:/etc/pki/tls/openssl.cnf 在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件即可 步骤: (1)生成私钥: /etc/pki/CA/private/cakey.pem

(2)生成自签证书

-new:生成新证书签署请求-x509:生成自签格式证书,专用与创建私有CA时-key:生成请求时用到的私有文件路径-out:生成的请求文件路径;如果自签操作将直接生产签署过的证书-days:证书 的有效时长,单位是day(3)为CA提供所需的目录及文件mkdir /etc/pki/CA/{certs,crl,newcerts}touch /etc/pki/CA/{serial,index.txt}echo 01 > /etc/pki/CA/serial 要用到证书进行安全通信的服务器,需要向CA请求签署证书 步骤:(1)用到证书的主机,生成私钥mkdir /etc/pki/CA/{certs,crl,newcerts}touch /etc/pki/CA/{serial,index.txt}echo 01 > /etc/pki/CA/serial例子:


(2)生成证书签属请求

(3)将请求通过可靠方式发送给CA主机(4)在CA主机上签署证书



点y确定即可
(5)、查看证书中的信息:openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject 三、吊销证书: 步骤:(1)客户端获取吊销的证书serial(在使用证书的主机执行)openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject(2)CA主机吊销证书先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致 吊销:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem其中的SERIAL要换成证书真正的序列号例子:

(3)生成吊销证书的吊销编号(第一次吊销证书时执行)echo 01 > /etc/pki/CA/crlnumber(4)更新证书吊销列表openss lca-gencrl-outthisca.crl查看crl文件:openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: