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

Linux之加密解密基础、openssl及CA基础应用

2015-09-22 21:42 841 查看
Linux之加密解密基础、openssl及CA基础应用

加密解密基础简介
数据在网络中传输过程中要保证三个要点:
(1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改
(2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利
(3)数据的可用性:保证授权用户能按需访问存取文件数据
因此加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法
解密:将密文转换成能够直接阅读的文字(即明文)的过程称为解密

常见加密类型: 对称加密、公钥加密、单向加密
(1)对称加密:加密和解密同一个密钥,依赖于算法和密钥。
特性:加密、解密使用同一密钥;将明文分隔成固定大小的块,逐个进行加密
缺点:密钥过多、密钥分发
常见的加密算法:DES、3DES(DES增强版)、AES(加密位数128bits、192bits、458bits、384bits、512bits)
大致的实现原理如下图:



(2)公钥加密:有两个不同的密钥:私钥(private key)和公钥(public key),使用公钥加密的数据只能由对应的私钥解密
特性: 密钥长度较大;加密解密分别使用密钥对儿中的密钥相对进行;常用于数字签名和密钥交换
常见加密算法:RSA 、 DSA(数字签名算法)
大致的实现原理如下图:



(3)单向加密:只能加密不能解密,提取数据特征码
特性:输入一样,输出必然相同;输入的微小改变,会造成结果的巨大变化;无法根据特征码还原原来的数据;定场输出
常见加密算法:MD1,MD5,SHA1,SHA512,CRC-32
大致的实现原理:单向加密通常用于验证数据的完整性,在数据发送之前,对数据进行单向加密得出特征码,然后接受者再次对接收的数据使用同样的单向加密,如果得到的特征码相同,则说明数据是完整的。因此单纯的使用单向加密,无法保证数据被篡改,因此还需要借助其他加密算法(如数字签名)。

以上加密的各种算法只是对文件进行了加密,如何保证在网络上进行安全的传输,而不被窃听,篡改等?
这里先阐述一次加密传输原理过程:
发送端:
1)、使用单向加密算法提取生成数据的特征码
2)、使用自己的私钥加密特征码附加在数据后面
3)、生成用于对称加密的临时密钥
4)、用此临时密钥加密数据和已经使用私钥加密后的特征码
5)、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方

接收端:
1)、使用自己的私钥解密加密的临时密钥;从而获得对称密钥
2)、使用对称密钥解密对称加密的数据和私钥加密的特征码密文;从而获得数据和特征码密文
3)、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码
4)、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较
阐述中提到的公钥,用来加密/验章用;私钥是用来解密/签章。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

随着传统模式开始走向电子化和网络化,网络传输迫切需要解决真实身份、数据完整性、机密性、准确性、不可否认性,引入了基于加密技术的数字签名。
PKI(Public Key Infrastructure)是使用公开密钥密码技术来提供和实施安全服务的基础设施,主要组成部分有:认证中心(CA )、注册中心(RA)、密钥管理中心(KMC)、证书发布;其中CA(Certificate Authority)系统是PKI体系的核心,主要实现数字证书的发放和密钥管理等功能。数字证书由权威公正的CA中心签发,是网络用户的***明。使用数字证书,结合数字签名、数字信封等密码技术,可以实现对网上用户的身份认证,保障网上信息传送的真实性、完整性、保密性和不可否认性。数字证书目前已广泛应用于安全电子邮件、网上商城、网上办公、网上签约、网上银行、网上证券、网上税务

等行业和业务领域。
数字证书:数字证书为实现双方安全通信提供了电子认证。在因特网、公司内部网或外部网中,使用数字证书实现身份识别和电子信息加密。数字证书中含有密钥对(公钥和私钥)所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证
证书格式是 x509 格式,主要内容有:
版本号(version)
序列号(serial number),CA 用于唯一标志此证书
签名算法标志(signatur algotithm ientifier)
发行者的名称,即 CA 自己的名称
有效期,起始日期和终止日期
整数主题明还曾,整数拥有者自己的公钥
发行商的唯一标识
整数主题的唯一标志
扩展信息
签名:CA 对此证书的数字签名

SSL:Secure Socket layer(安全套接字层)
1995年由网景公司设计,发布SSL2.0版本,后推出3.0版本,1999年推出TLS1.0,相当于SSL3.0升级版,现在常用TLS1.2版本
分层设计:
1)、最低层:基础算法原语的实现,aes, rsa, md5
2)、向上一层:各种算法的实现
3)、再向上一层:组合算法实现的半成品
4)、用各种组件拼装而成的种种成品密码学协议/软件:tls, ssh

openssl应用
OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH。

OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。主要组成部分:libcrypto(通用功能密码算法库)、libssl(SSL协议库,用于实现TLS/SSL的功能)、OpenSSL多功能命令行工具(能够实现生成密钥、创建数字证书、手动加密解密数据)
openssl命令常见参数选项:
-e:指定为加密,可以不写默认为加密。
-des3:指定算法算法
-salt:默认设置,生成一段字符串放在密码最前面进行加密,提高解密难度。
-a:基于base64处理数据。加密结果进行base64编码处理
-in:读取那个文件进行加密
-out:输出到那里
-d:指定为解密
练习:
1)、用3des 加密/tmp/fstab ,存放于/var/目录中



2)、解密var/fstab,并存放为/var/fstab.new



3)、提取tmp/fstab特征码



openssl私有CA应用
私有 CA 先要生产 CA 自己的证书,CA的家目录是在/etc/pki/CA,各个目录保存的内容为:
certs:签发的证书存放的地方
private:存放CA的私钥(很重要)
crl:吊销的证书存放的地方
newcerts:签发新证书存放的地方
serial:签发证书的序列号(需创建),serial 起始序列号需要指定
index.txt:数据库的索引文件(需创建)
crlnumber:吊销证书的序列号(需创建)
CA证书的路径在 /etc/pki/tls/openssl.conf 中配置, 在 [ CA_default ] 选项下
dir = /etc/pki/CA #工作目录
certs = $dir/certs #客户端证书保存目录
crl_dir = $dir/crl #证书吊销列表的位置
database= $dir/index.txt #证书发证记录数据库
new_certs_dir = $dir/newcerts #新生成证书存放目录
certificate = $dir/cacert.pem #CA的证书文件
serial= $dir/serial #签发证书的序列号,一般从01开始
crlnumber= $dir/crlnumber #帧数吊销列表的序列号
crl= $dir/crl.pem #证书吊销列表文件
private_key= $dir/private/cakey.pem #CA的私钥文件
RANDFILE = $dir/private/.rand #随机数生产文件,会自动创建
default_days= 365 #默认签发有效期
建立私有CA
1)、在/etc/pki/CA/private生成CA私钥文件



注:-out为输出私钥的位置 ;2048为密钥的长度
2)、在/etc/pki/CA目录下生成自签署证书



注:-new 为生成新的证书,会要求用户填写相关的信息;–x509通常用于自签署证书,生成测试证书或用于CA自签署;–key私钥位置;–days申请的天数(默认30天);-out生成位置
3)、创建所需文件:serial序列号文件、index.txt索引文件、crlnumber文件



4)、假设给http服务器(192.168.2.10)发放证书,其位置为/etc/httpd/ssl,ssl自己创建文件夹,在http上申请证书生成私钥





5)、在CA上给http服务器签署证书(需要书拷贝到CA服务器上,任意位置这里放在/tmp/临时目录下),并回传给http服务器








本文出自 “一万小时定律” 博客,请务必保留此出处http://daisywei.blog.51cto.com/7837970/1697246
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: