在互联网上,你不想你发送给别人的机密数据,被人给看到,或者被人窃取的话,那么你知道该怎么办麽,下面我来给你介绍一下用什么方法来解决这个问题咯!
一、首先我来说说加密和解密的基本分类:主要有对称加密和非对称加密(或者叫公钥加密),还有一个我们使用的最多的一个加密叫单向加密,下面我分别来介绍一下它们:
1)对称加密:加密和解密使用同一个密钥,依赖于算法和密钥,安全性依赖于密钥而非算法
常见的算法有:DES (Data Encryption standard, 56bits) ,3DES,AES,blowfish,twofish,IDEA,RC6
CAST5等等…
特点是:加密/解密使用同一个密钥;将明文分隔成固定大小的块,逐个进行加密;
缺点是:密钥过多,扣篮的传输无法保证其安全;
(2)非对称加密(公钥加密):密钥是成对的,有公钥和私钥;私钥,仅允许自己使用,公钥是可以公开给所有人获取的;使用公钥加密的数据,只能是与其配对的私钥进行解密;反之亦然;
用处:身份认证、密钥交换以及数据加密;
算法:RSA、DSA、ELGamal
RSA:算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
特性:密钥长度较大;加密解密分别使用密钥对中的密钥相对进行;常用于数字签名和密钥交换;
(3) 单向加密:提取数据的特征码;
特点:定长输出,无论原来的数据是多大级别,其加密结果长度一样;雪崩效应,原始数据的微小改变,将会导致结果的巨大改变;加密过程是不可逆的;
算法:MD5、SHA1、SHA256、SHA512 等等..
比如我们的/etc/shadow文件,这个文件是用来存放用户的密码的;第一个$后面是加密的算法$,第二个$后面是8bits杂质;第三个$后面才是真正的密码;CentOS 5是使用的MD5算法,CentOS6 、7 是使用的SHA512;
用处:数据的完整性; 一般网上交易都是使用这种方式的;
一次加密的通信过程:
发送者:
1、使用单向加密算法提取生成数据的特征码;
2、使用直接的私钥加密特征码附加在数据后面;
3、生成用于对称加密的临时密钥;
4、用此临时密钥加密数据和已经使用私钥加密后的特征码;
5、使用接收方的公钥加密此临时密钥,并附加在对称加密后的数据后方;
接收方:
1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;
2、使用对称密钥解密对称加密的数据和私钥加密的特征码密文;从而获得数据和特征码密文;
3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码
4、使用 与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;
二、下面我们来说说OpenSSL:
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。
SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
Openssl 的组成部分:
libcrypto:加密、解密库文件
libssl:ssl 协议实现
openssl:多用途命令行工具,每一种功能都使用专用的子命令来实现
加密文件(对称加密):
工具:openssl enc , gpg
算法:des,3des,aes,blowfish,twofish,idea,cast5
enc工具及加密格式:
# openssl enc -e -CIPHERNAME -a -salt-in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE
# openssl enc -d -CIPHERNAME -a -salt-in /PATH/TO/SOMECIPHERFILE -out /PATH/FROM/SOMEFILE
例子:
# openssl enc –e –des3 –a –salt –in fstab –out fstab.des3
然后输入两遍密码,这个文件就加密成功了;
# openssl enc –e –des3 -a -salt -in fstab.des3 -out fstab.new
解释:env为对称加密算法的固定使用格式 –e 要使用什么加密方式 -des3表示已des3的方式进行加密,-salt表示密码里面加入一些盐,-in 表示加密/解密的文件来源 -out表示加密/解密的文件输出,-d 表示解密
单向加密:
算法:md5 , sha1
工具:openssldgst,md5sum,sha1sum,sha224sum,sha256sum ,sha384sum,sha512sum
加密格式:
#openssl dgst -CIPHER /PATH/TO/SOMEFILE...
解释:dgst 为单向加密的固定格式:-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1表示使用的加密算法,-out表示加密的文件输出
三、最后我们来说说数字证书:
CA:签证机构
功用:保证公钥信息安全分发;
数字证书的格式(x.509 v3):
版本号(version)
序列号(serial number):CA用于唯一表示此证书;
签名算法标志(Signaturealgorithm identifier)
发行者的名称:即CA自己的名称;
有效期:两个日期,起始日期和终止日期;
证书主体名称:证书拥有者自己的名字
证书主体公钥信息:证书拥有者自己的公钥;
发行商的唯一标识;
证书主体的唯一标识:
扩展信息:
签名:CA对此证书的数字签名;
证书通常有两类用途:用户证书、主机证书(httpd)
撤销证书:
3.1 使用OpenSSL构建私有CA:
1)生成私钥;
2)生成自签署证书;
(a)私钥用于签发证书,向证书添加数字签名使用;
(b)证书:每个通信方都需要导入此证书至“受信任的证书颁发机构”;
配置文件:/etc/pki/tls/openssl.conf
工作目录:/etc/pki/CA
生成自签署证书:
查看证书:
生成自签证书:
其中req为表示创建证书的命令,-new表示创建一个新的证书,-x509表示创建证书的格式,-key创建私钥,-out证书的保存位置,-days表示证书的有效期限
提供必要的辅助文件:
#touch /etc/pki/CA/index.txt
# echo 01 > /etc/pki/CA/serial
2)用户申请证书:(以http为例)
# cd /etc/httpd/
# ls
# mkdir ssl
# cd ssl
生成用户私钥:
生成证书签署请求:(与上面生成证书相似)
证书颁发机构签署证书:
证书颁发机构将生成的crt证书回传给用户即可用户将证书放置在自己的证书服务的路径下;
撤销证书:
这就是在互联网上加密和解密的过程以及证书创建和撤销证书的过程咯!希望能让你有所明白咯!如果还是让你无法明白,那是本人知识浅显,希望加以谅解...
本文出自 “blue” 博客,请务必保留此出处http://sailove.blog.51cto.com/3215562/1637037
原文地址:http://sailove.blog.51cto.com/3215562/1637037