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

数据加密和OpenSSL

2015-04-23 20:40 190 查看
数据加密: SSL: Secure Socket Layer安全的套接字层Openssl:ssl在Linux上实现的一个软件,开源的例:使用了ssl协议就不在是原来的协议了http(80) --> ssl --> https (443)


NIST定义数据安全性的基本法则:保密性:数据保密性隐私性完整性:数据完整性系统完整性可用性: 安全攻击:被动攻击:监听主动攻击:伪装、重放、消息篡改、拒绝服务安全机制:加密/解密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证安全服务:认证访问控制数据保密性连接保密性无连接保密性选择域保密性流量保密性数据完整性不可否认性 密码算法和协议:对称加密公钥加密[非对称加密 ]单向加密认证协议 对称加密:加密和解密使用同一个密钥;将一种数据流结合加密秘钥输出成另一种数据流; 常见算法:DES:Data EncryptionStandard, 56bits3DES:AES:Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)BlowfishTwofishIDEARC6CAST5 特性:1、加密、解密使用同一密钥;2、将明文分隔成固定大小的块,逐个进行加密;3、依赖于:算法和密钥; 安全性依赖于密钥,而非算法; 缺陷:1、密钥过多;2、密钥分发不便; 非对称加密:公钥加密分为私钥和公钥,私钥仅给个人使用,公钥是给所有人公开获取的。常用算法:RSA、DSA(只能实现数据签名) 私钥:secret key,仅允许个人使用;公钥:public key,公开给所有获取; 公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然; 用处:1.身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;2. 密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;3. 数据加密:但加密时间长,一般不用于数据加密 特性:1、密钥长度较大,例如512bits, 2048bits,4096bits2、加密解密分别使用密钥对儿中的密钥相对进行;3、常用于数据签名和密钥交换; 单向加密:提出数据的特征码; 用于数据完整性校验 特性:1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;3、不可逆: 算法:MD5:128bits定长输出;SHA1:160bits定长输出;SHA256SHA384SHA512: 一次加密通信过程发送者:1、使用单向加密算法提取生成数据的特征码;2、使用自己的私钥加密特征码附加在数据后面;3、生成一个用于对称加密的临时密钥;4、用此临时密钥加密数据和已经使用私钥加密后的特征码;5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方; 接收方:1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;2、使用对称密钥解密对称加密的数据和私钥加密的特征码密文;从而获得数据和特征码密文;3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;
数字证书:CA:签证机构功用:保证通信方公钥信息安全分发; 数字证书的格式(x.509 v3):版本号(version)序列号(serial number):CA用于惟一标识此证书;签名算法标志(Signature algorithm identifier)发行者的名称:即CA自己的名称;有效期:两个日期,起始日期和终止日期;证书主体名称:证书拥有者自己的名字证书主体公钥信息:证书拥有者自己的公钥;发行商的惟一标识:证书主体的惟一标识:扩展信息:签名:CA对此证书的数字签名; 证书通常有两类用途:用户证书主机证书(httpd) 撤消证书:当私钥丢失时 PKI: Public KeyInfrastructure 公钥基础设施签证机构:CA注册机构:RA证书吊销列表:CRL证书存取库: openssl的组成部分:libcrypto:加密、解密库文件;libssl: ssl协议实现openssl:多用途命令行工具,每种功能都使用专用的子命令来实现 openssl:子命令分类:标准命令消息摘要命令加密、解密相关的命令

加密文件(对称加密):工具:openssl enc, gpg算法:des, 3des, aes, blowfish, twofish, idea, cast5 enc工具:加密:# openssl enc -e -加密算法 -a -salt -in 要加密的文件 -out 加密后输出的文件例: -e -des3 表示指定加密方法为des3 -a表示要用ASCII格式输出你的内容 -salt 加杂质 -in 加密哪个文件 -out 加密后输出成哪个文件

解密:# openssl enc -d -解密算法 -a -salt -in要解密的文件 -out 解密后输出的文件例:opensslenc -d -des3 -a -salt -in fstab.drs3 -out fstab2-d -des3 表示用什么算法解密 -a 表示要用ASCII格式输出你的内容 -salt 加杂质 -in 解密哪个文件 -out 解密后输出成哪个文件 单向加密:算法:md5, sha1工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum,sha512sum # openssl dgst -加密算法 文件名例:提取fstab文件的特征码,会输出到屏幕

生成用户密码:# openssl passwd -1 -salt 8位随机数[做为杂质]例:-1 指定MD5算法

生成随机数:# openssl rand -hex[16进制]|-base64[文本格式] NUM例:openssl rand -hex 4 随机数生成器:任何随机数都是从这两个中取得 random,urandom 熵池:保存硬件中断产生的随机数 /dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数; 生成密钥对儿:操作过程:生成私钥,从私钥中提取公钥;# openssl genrsa -out 生成的私钥文件 密钥长度[1024 20484096]例:

注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;因为私钥应该仅属主可以查看,所以权限应为400或600#(umask277; openssl genrsa -out 生成的私钥文件密钥长度[10242048 4096])例:

从私钥中手动提取公钥:# openssl rsa -in 生成的私钥文件 -pubout

X.509 v3数字证书的格式:

证书撤销链:

获取证书的方法:向RA注册申请建立私有CA:OpenSSLOpenCA 使用OpenSSL构建私有CA: 1、生成私钥:私钥用于签发证书时,向证书添加数字签名使用2、生成自签署证书:每个通信方都导入此证书至“受信任的证书颁发机构” 配置文件:/etc/pki/tls/openssl.cnf



工作目录:/etc/pki/CA/ 建立私有CA:1、生成私钥文件:/etc/pki/CA/private/cakey.pem #(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 2、生成自签证书 #openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days # -new: 生成新的证书签署请求;-key:私钥文件路径,用于提取公钥;-days N: 证书有效时长,单位为“天”;-out:输出文件保存位置;-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

3、提供辅助文件# touch /etc/pki/CA/index.txt [即索引文件]#echo 01 > /etc/pki/CA/serial 给节点发证书:1、节点申请证书在证书申请的主机上进行如下步骤:(1) 生成私钥;# (umask 077; openssl genrsa -out 私钥位数[1024])(2) 生成证书签署请求;openssl req -new key 私钥 -out 请求.csr# openssl req -new -key httpd.key -out httpd.csr-days #

注意:(a) 其中的subject信息部分,要与CA的保持一致;(b) Common Name要使用此主机在通信真实使用名字; (3) 把请求发送给CA;2、CA签发证书(1) 验正请求者信息(2) 签署证书# openssl ca -in 请求.csr -out 证书.crt -days N

(3) 把签署好的证书发还给请求者 吊销证书:1、获取吊销证书的序列号;# openssl x509 -in 证书.crt -noout-serial -subject 2、实现证书吊销(0) 确保与index.txt中的序列号一致 (1) 吊销证书# openssl ca -revoke 证书.crt (2) 生成吊销证书的编号echo 数字[原有吊销+1] >/etc/pkie/CA/crlnumberecho 01 >/etc/pkie/CA/crlnumber (3) 更新证书吊销列表# openssl crl -gencrl -out 正在使用的吊销链文件.crl
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenSSL 数据加密