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

Linux的加密认证功能以及openssl详解

2014-02-13 22:32 253 查看
一、详细介绍加密、解密技术
现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密
这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域,而且所要完成的功能也是不同的,大家都知道,只要我们连上互联网,那么我们就相当于大门洞开,我们的一些隐私,跟其他人对话内容等都有可能会被人窃听,最常见的比如man in the middle(中间人),它主要是因为双方身份无法验证的时候回话被劫持造成的,就是说通信双方都以为是在跟对方交流,其实内容都可能已经被这个“中间人”修改过,一些重要的信息也被这个“中间人”所获得,这对于现在的电子商务来说是致命的,所有我们必须找到一种解决方案来解决这个问题

对称加密:指的是加密方和解密方使用的是同一个密钥
优点:加密解密的速度很快
缺点:如果两个从未通信过的用户要进行通信的时候,该如何把解密的密钥传输给对方呢(密钥仍然要在网络上传输,所以密钥还是可能会被“中间人”截获),这是对称加密最大的缺点;
常见的对称加密算法有:
DES:使用56位的密钥,2000年的时候被人破解了,所以现在基本不再使用
AES:高级加密标准,可以使用128,129,256三种长度密钥
其他的还有blowfish,Twofish和RC6,IDEA(商业算法),CAST5等

非对称加密:非对称加密方式解决了对称加密的缺陷,它的加密和解密密钥是不同的,比如对一组数字加密,我们可以用公钥对其加密,然后我们想要将其还原,就必须用私钥进行解密,公钥和私钥是配对使用的,常见的非对称加密算法有:
RSA:既可以用来加密解密,又可以用来实现用户认证 DSA:只能用来加密解密,所以使用范围没有RSA广非对称加密长度通常有512,1024,2048,4096位,最常用的就是2048位,长度固然可以增加安全性但是需要花费很长时间来进行加密/解密,和对称加密相比,加密/解密的时间差不多是对称加密的1000倍,所以我们通常用其作为用户认证,用对称加密来实现数据的加密/解密
单项加密:单向加密就是用来计算一段数据的特征码的,为了防止用户通过“暴力破解”的方式解密,所以单向加密一般具有“雪崩效应”就是说:只要被加密内容有一点点的不同,加密所得结果就会有很大的变化。单项加密还有一个特点就是无论被加密的内容多长/短,加密的结果(就是提取特征码)是定长的,用途:用于验证数据的完整性,常用的单项加密算法MD5:这种加密算法固定长度为128位SHA1:这种加密算法固定长度是160位
下图是帮助我们理解加密算法在Internet上的使用所作的说明:

解释如下,先说BOB和ALICE通信阶段黑框A:表示要传输的数据
黑框B:就是单项加密对这段数据提取的特征码,这段特征码同时运用了非对称加密,具体过程是用BOB的私钥加密,传输给ALICE,只要到达后ALICE能解密,表明对方确实是BOB。这一过程同时起到了用户认证和数据完整性的校验。黑框B又称为数字签名
红框A:这一阶段会生成一段很长的随机数(密钥)然后配合对称加密算法对黑框A和黑框B加密,但是我们如何把加密的密钥传输给ALICE呢?这就要用到红框B了
红框B:这一阶段是用ALICE的公钥加密这串随机数(对称加密阶段的密钥),ALICE接受到数据后如果能用自己私钥解密,那就证明接受者确实ALICE
加密过程:
第一步:用单向加密算法提取数据(黑框A)的特征值
第二步:用自己的私钥加密这段特征值形成黑框B
第三步:用对称加密算法,对黑框A和黑框B来加密,得到红框A
第四步:用ALICE的公钥来加密第三步所用的密钥,得到红框B
解密过程:
第一步:ALICE用自己的私钥解密红框B得到对称加密的密钥
第二步:用这个密钥解密红框A内容
第三步:用BOB的公钥解密黑框B,如果能成功,说明发送方确实是BOB,这就完成了身份验证(解密后会得到一串数据的特征值)
第四步:用同样的单项加密算法来对这段数据提取特征值,如果和第三步的特征值一样,说明这段数据是完整的,这就完成了数据完整性的校验
进行完上述内容厉害的读者会发现一个问题就是BOB和ALICE如何获得对方的公钥,或者说如何证明获得的公钥就是对方,这就需要引入另一方证书颁发机构CA,下面是对证书颁发机构跟BOB/ALICE之间的解释
黑框C:代表要颁发给BOB/ALICE的公钥,组织,地址等信息
黑框D:是对黑框C进行单向加密后得到的数字签名,然后用自己的私钥对其加密,传输给BOB和ALICE,拿着这个证书颁发机构的公钥(这些证书颁发机构的公钥一般已经被microsoft事先放在windows里面,当然其他操作系统也是一样的)的BOB和ALICE如果能对这个证书进行解密,说明这个证书颁发机构不是冒充的
红框E:表示颁发给BOB和ALICE的证书
二、openssl使用详解在讲述之前首先要知道openssl中有如下后缀名的文件

.key格式:私有的密钥
.crt格式:证书文件,certificate的缩写
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

常用证书协议
x509v3:IETF的证书标准
x.500:目录的标准
SCEP: 简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的
PKCS#7: 是封装数据的标准,可以放置证书和一些请求信息
PKCS#10: 用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据
PKCS#12: 用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx
openssl主要组成部分
对文件进行加密测试:

说明: openssl enc指定加密的类型,des3表示使用对称加密, -in指定要加密的文件,-e表示加密,-out指定加密后要保存的位置

对文件进行解密测试
说明: openssl enc指定加密的类型,des3表示对称加密,-in 表示加密后的文件, -d表示解密, -out表示解密后要保存的位置,实验中为当前目录

用单向加密算法获取文件的特征码
需要知道的是除了用上述命令获取文件的特征码之外,还可以通过md5sum fstal来获取,结果是相同的,
测试当前主机所支持的加密算法的速率的
计算密码值openssl passwd
生成RSA算法的私钥:

需要注意的是,私钥文件是至关重要的,不能让人们轻易的查看,因此我们可以对生成的私钥文件进行加密
对私钥进行加密,虽然相对比较安全,但是对用户也带来了一定的麻烦,因为用户每次使用私钥时都需要输入密码,因此对私钥文件权限的设置是非常必要的
需要注意的是:这里的umask设置权限一定要加上括号不然后面创建所有的文件都会变成此权限的,因为它是一直生效的;使用括号表示此命令在一个子shell中执行,完成子shell退出

从私钥文件中提出公钥:
三、讲述如何申请证书:
1)首先要生成一个私钥文件2)制作一个证书签署请求3)有CA负责签署证书
说明:openssl req 证书签署请求和证书生成工具,-key指定私钥文件的存放路径,-new指定证书申请,当前命令的后面可以加-days明确指定证书申请有效使用期限,-out 指定证书申请保存的位置通常以.csr结尾,要了解更多信息可以通过man req进行查看

详解自建CA过程:
首先查看解析配置文件
#cd/etc/pki/tls
#vimopenssl.cnf
列出了重要的一部分:
#cd/etc/pki/CA
进行证书签署:
原文出自:/article/4512908.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: