随着互联网络的快速发展,已经把现代社会和互联网完全融合在一起了,随之而来的各种消息途径都要经过互联网传播,各种商业机密以及个人保密信息都要在互联网传播,那么怎样保证信息的保密性成了IT界比较头疼的一件事,所以为了社会的需要就产生了对数据进行加密的一些算法,久而久之各种机密方式也随之诞生,所谓的加密方式分为三种:对称加密、公钥加密和单向加密,下面就来说一说各种加密方式。
一、三种加密方式概述
1.对称加密:
加密和解密方使用同一个密钥,用来解决数据机密性,但是密钥通过何种方式传递给对方不容易实现;
对称加密常见算法:
DES:Data Encryption Standard(数据加密标准),是56bit的
3DES:是DES的3倍;
AES:Advanced data Encryption Standard(高级数据加密标准),定长输出128bit;
AES256:定长输出256bit;
AES192:定长输出192bit;
AES512:定长输出512bit;
2.公钥加密:
密钥是成对出现的,分别为Secret key(私钥)和Public key(公钥),公钥加密必须使用与其相对应的私钥进行解密并且公钥是从私钥中提取出来的,有私钥可以知道公钥是什么,但是知道公钥是不能知道私钥的,公钥是公开的,而私钥是不公开的,但是公钥加密比对称加密慢3个数量级(1000倍),加密速度相当的慢,所以单独用此加密方式也比较困难;
公钥加密功能:
1、密钥交换密钥交换,也称为IKE:Internet Key Exchange 互联网密钥交换;
2、数字签名,用于身份验证,防抵赖;
公钥加密常见算法:
RSA:既能加密也能签名;
DSA:数据加密算法,只能用于签名;
3.单向加密:
不是真正来实现加密,而是用来提取数据特征码,验证数据完整性,它有雪崩效应((蝴蝶效应):源数据有一点点不同,结果大不相同)和定长输出(通过单向加密后的结果长度一样)的特征;
单向加密常见算法:
md5:Message Degist,由麻省理工学院人工智能实验室研发,固定定长输出128bit;
md5sum:计算文件md5格式的特征值;
sha1:Secure Hash Algorithm 1,固定定长输出160bit;
sha256:长度越长变化越大;
sha512: 长度越长变化越大;
数字证书:
包含证书拥有者信息及公钥还有CA的签名并且附加CRL(证书吊销列表);
CA(证书颁发机构):
对证书利用单向加密的算法提取证书数据的特征码,然后用自己的私钥加密特征码并附加在数据的尾部发送之;
CA分为公共CA和私有CA两类
二、Linux上常用的加解密工具
1、gpg
2、openssl
这里我们重点讲解openssl。
openssl 是多用途的加密组件,命令行工具,其可以实现对称加密算法、非对称加密算法、单向加密算法,制作CA等
它的配置文件路径:/etc/pki/tls/openssl.cnf
三、openssl加解密的常用命令
对称加密:
# 加密 openssl enc -des3 -a -salt -in /path/to/input_file -out /path/to/cipher_file #解密 openssl enc -d -des3 -a -salt -in /path/to/input_file -out /path/to/cipher_file (enc表示加密解密,-des3表示3DES对称加密算法,-salt表示自己加入杂质,-a表示ASCII码的输出,-d表示解密,-in表示从哪个文件读入,-out表示把加密以后的文件保存到哪 个文件中)
单向加密:
# openssl dgst [-md5|-md4|-md2|-sha|-mdc2|-ripemd160|-dss1] [-out filename] /path/to/somefile
查看openssl版本:
# openssl version
测试所有加密方式的速度:
# openssl speed
生成伪随机数:
# openssl rand -hex #
生成一对密钥,并保存在 cakey.pem文件中:
# openssl genrsa -out cakey.pem 2048
如果想查看公钥
# openssl rsa -in cakey.pem -pubout -text -noout
生成证书签署请求,保存为carcert.pem:
# openssl req -new -key cakey.pem -out carcert.pem
生成自签证书x509格式,保存为carcert.pem:
# openssl req -new -x509 -key cakey.pem -out cacert.pem
在子shell中执行,生成一对密钥,权限为600;
# (umask 077;openssl genrsa -out cakey.pem 2048)
四、使用openssl创建私有CA并实现数字证书签署
1.先在服务器端生成生成密钥对儿
这里服务器ip为172.16.251.34
[root@station34 ~]# cd /etc/pki/CA/ 先cd到CA目录
查看密钥
2.CA生成自签证书:
3.创建必要的文件
4.在用户机上生成密钥,生成证书签署请求
这里用户机ip为:172.16.251.71,这里以http服务为例
4.1先在/etc/httpd/下创建个文件夹
4.2.用户机生成密钥对
4.3 用户机生成证书签署请求
5.用户机将证书请求文件发往CA服务器,并签署
5.1 用户机将证书请求文件发往CA服务器
这里我们通过scp来传输:
5.2 服务器CA查看请求文件并签署
6.将签署完的文件发往用户机
用户机查看签署证书:
上述过程就是使用openssl创建私有CA并实现数字证书签署的过程,鉴于本人水平有限,错误在所难免,希望朋友们给予指点!