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

linux 命令详解 十一

2012-03-23 11:28 197 查看
现在如今个人以及公司对自己的数据以及隐私越来越关注,之前美国斯诺登事件的爆出,又将通讯安全话题引发激烈的讨论。下面我们就来说下linux中的加密解密,以及通讯过程中如何确保通讯的安全。常见的加密方法有三种:对称加密、单向加密、非对称加密,下面简单说下这三种加密方式。对称加密:加密和解密使用同一个密钥;依赖于算法和密钥;安全性依赖于密钥,而非算法常见算法有DES:Data Encryption Standard, 56bits、3DES、AES: Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)、Blowfish、Twofish、IDEA、RC6、CAST5。此些算法都有由数学家们通过精心计算得到。 特性:1、加密、解密使用同一密钥;2、将明文分隔成固定大小的块,逐个进行加密; 缺陷: 1、密钥过多; 2、密钥分发;
非对称加密:公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;有公钥和私钥的密钥对,私钥:secret key,仅允许个人使用,公钥:public key,公开给所有获取;私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份,与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方,对方得到自己公钥加密的数据以及发送者的私钥。通常的算法有RSA、DSA、ELGamal,主要的特征有:1、密钥长度较大,例如512bits,
2048bits, 4096bits,2、加密解密分别使用密钥对儿中的密钥相对进行,3、常用于数据签名和密钥交换
单向加密:通过提出数据的特征码获得,它的特性为:1、密钥长度较大,例如512bits,
2048bits, 4096bits;2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;3、不可逆;通常的算法有:MD5(128bits定长输出)、SHA1(160bits定长输出)、SHA256(160bits定长输出)、SHA256(256bits定长输出)、SHA512(128bits定长输出)等。 在一次加密通信过程的过程如下。 发送者: 1、使用单向加密算法提取生成数据的特征码; 2、使用自己的私钥加密特征码附加在数据后面; 3、生成用于对称加密的临时密钥; 4、用此临时密钥加密数据和已经使用私钥加密后的特征码; 5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方; 接收方: 1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥; 2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文; 3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码; 4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;此过程比较繁琐,故通常的使用者不会手动每次去操作此过程,因此产生了SSL,SSL:secure socket
layer(即获取到对方服务器的CA证书,得到对方的公钥,生成私钥,然后发送给服务器端,服务器发送数据给请求方,请求方有服务器端的公钥,可以解密,这样就能形成联系),通常证书主要有两类,主机证书以及用户证书,用户证书包含主机证书将自己的私钥形成的公钥,以及CA证书等信息。CA:CA证书的发证机构为具有公信力的机构,一般网站会购买一个CA证书用于认证,保证公钥信息的安全分发;数字证书的格式(x.509 v3): 版本号(version) 序列号(serial number):CA用于惟一标识此证书; 签名算法标志(Signature algorithm identifier) 发行者的名称:即CA自己的名称; 有效期:两个日期,起始日期和终止日期; 证书主体名称:证书拥有者自己的名字 证书主体公钥信息:证书拥有者自己的公钥; 发行商的惟一标识: 证书主体的惟一标识: 扩展信息: 签名:CA对此证书的数字签名;openssl是基于ssl开发的,在linux上使用,openssl的组成部分:libcrypto(加密、解密库文件)、libssl( ssl协议实现)、openssl(多用途命令行工具,每种功能都使用专用的子命令来实现)。下面首先来说下openssl的一些加密指令:
openssl:子命令分类:标准命令、消息摘要命令、加密、解密相关的命令 加密文件(对称加密):工具:openssl enc, gpg算法:des, 3des, aes, blowfish, twofish, idea, cast5enc工具:#
openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out
/PATH/TO/SOMECIPHERFI 例openssl enc -e -des3 -a -salt -in path -out path.de3 #
openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out
/PATH/TO/SOMEFILE例openssl enc -d -des3 -a -salt -in path.de3 -out path.22 单向加密:算法:md5, sha1工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum,
sha512sum # openssl dgst -CIPHER(算法如md5) /PATH/TO/SOMEFILE... 或者
md5sum /PATH/TO/SOMEFILE 例如: [root@localhost tmp2]# openssl dgst -md5 lib MD5(lib)= 8fcd1d3f02caeebfa22c649471a57b28 [root@localhost tmp2]# md5sum lib 8fcd1d3f02caeebfa22c649471a57b28
lib MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性; 机制: CBC-MAC HMAC:使用md5或sha1算法 生成用户密码: # openssl passwd -1 -salt 8bits -salt是加在密码前面,用于加强加密 生成随机数: # openssl rand -hex|-base64 NUM -hex是16位 -base64生成字母和数字 随机数生成器: random,
urandom 熵池:保存硬件中断产生的随机数 /dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;
下面说下我们平时工作会遇到的在自己公司建立私有的CA,以及发证、签证的过程;
使用OpenSSL构建私有CA的过程为主机在服务器生成私钥,然后生成自己证书文件;(1) 私钥用于签发证书时,向证书添加数字签名使用;(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;配置文件(默认CA的配置文件):/etc/pki/tls/openssl.cnf工作目录:/etc/pki/CA/[root@localhost
CA]# lscerts crl
newcerts privatecerts证书文件存放 crl 吊销列表newcerts 新证书文件private 私钥存放位置 建立私有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 (01表示第一个) 给节点发证书:1、节点申请证书在证书申请的主机上进行如下步骤:(1) 生成私钥;(umask 077; openssl genrsa -out httpy.key
1024)(2) 生成证书签署请求; openssl req
-new -key /etc/http.key -out /etc/httpd/http.csr (3) 把请求发送给CA; 注意:(a) 其中的subject信息部分,要与CA的保持一致;(b) Common Name要使用此主机在通信真实使用名字; 2、CA签发证书(1) 验正请求者信息(2) 签署证书# httpopenssl ca -in
/PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N(3) 把签署好的证书发还给请求者 吊销证书:1、获取吊销证书的序列号;#
openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject 2、实现证书吊销(1) 吊销证书#
openssl ca -revoke /PATH/FROM/CRT_FILE (2) 生成吊销证书的编号echo
01 > /etc/pkie/CA/crlnumber (3) 更新证书吊销列表#
openssl crl -gencrl -out THISCA.cr
小结下,在公司的服务器中很有可能会用到私有CA,以保证通信的安全性。本文出自 “LinuxNew” 博客,请务必保留此出处http://jimchen.blog.51cto.com/10026955/1637181
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: