数据加密方式有三种:
1、对称加密
2、公钥加密
3、单向加密
加密:由明文转换为密文
基于:加密算法
1、对称加密:
加密方和解密方使用同一个密钥
2、公钥加密
生成一对密钥
public key
Secret Key
公钥加密的时间比较慢
可实现密钥交换
3、单向加密:获取数据的特征码
1、定长输出
2、不可逆性
3、雪崩效应
数据传输过程中的 保密性、身份验证、完整性都得到保证的过程
发送方加密:
一段数据用单向加密的方式计算数据生成一段特征码,再用自己的私钥加密特征码放在数据的后面,再用对称加密的方式加密把生成一段密码放在数据的后面,最后再用接收方的公钥加密一次,发送出去。
接收方解密:
先用自己的私钥解密,得到对称加密方式的密码,再用发送方的公钥解密,如果能解密说明是发送方,并得到特征码,最后用相同的单向加密算法计算数据得到特征码并与之前发送的特征码作比较是否相同如果相同说明是数据完整
以上数据传输过程中的 保密性、身份验证、完整性都得了保证
CA:证书颁发机构
PKI :Public Key Infrastructure 公钥基础设施。其中最重要是CA
1、加密算法:
对称加密算法名称:
DES:
3DES:
AES:高级加密算法
Blowfish
2、公钥加密:
RSA,ELGamal 加密和签名
DSA :只能签名
3、单向加密
MD5 : 长度是128
SHA1:长度是160
CRC-32 是循环校验码
在linux上常用的工具:
openssl enc
openssl dgst
gpg(pgp)
md5sum
sha1sum
其中openssl:是多种加密工具,也可以作为简单的本地CA使用
openssl version 版本
openssl speed :测试加密速率
用openssl对文件加密 :
#openssl enc -des3 -salt -a -in inittab -out inittab.des3
解密:
#openssl enc -d -des3 -salt -a -in initab.des3 -out test
生成随机数的方式有两种:
1、/dev/random
2、/dev/urandom
随机数的来源
熵池
伪随机数来源于软件生成后保持在熵池的
来源于 keyboard and mouse events
block device interrupts -->保持到熵池
/dev/urandom:
来源于熵池和伪随机数生成器
用命令:#openssl rand 实现取得随机数
#openssl rand -base64 123
#openssl base64 编码 可以对字符串进行编码:
md5sum test 用md5为test加密
用shalsum md5 可以计算md5的校验码
shalsum test 可以计算一段文字的校验码
openssl dgst -sha1 test 也用于校验
在公钥加密中openssl 用于生成密钥
#openssl genrsa 2048(加密长度) > SECRT.FILE(位数)生成公钥,生成私钥,并保存
在文件中只显示私钥
而公钥就在私钥中
#openssl rsa -in FILE -pubout FILE1 提取公钥的命令
#(umask 077 openssl genrsa 22048 > SECRT.FILE)可以直接修改权限为只读
#openssl genrsa -des3 -out SECRT.FILE 1024 加密存放
加密私钥:
openssl rsa -in FILE ides3 -out FILES加密FILE文件并保存在FILES中
解密:
openssl rsa -in FILES -out FILEO 解密后文件保存在FILEO中
用openssl 生成CA
CA的内容:
1、证书的持有者的相关信息
2、CA的相关的信息
3、证书的使用方法
4、公钥
服务器与客户端之间传递公钥的过程及加密传输:
1、客户端向服务端发送请求
2、服务端向客户端发送证书
3、客户用服务的公钥解密签名验证身份,并用同样的单向加密验证校验码
如果相同,客户端生成一个密码则用服务器的公钥加密发给服务器,以后的数据传输就用这个密码加密
创建CA
CA放在/etc/pki/
编辑配置文件:
#vim /etc/pki/tls/openssl.cnf
把dir = /../../CA改成dir =/etc/pli/CA
退出
cd /etc/pki/CA/
生成自己的私钥:
#(umask 077;openssl genrsa 2048 > private/cakey.pem)
给自己发证:(即申请又发证)
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3656
会出现一些提示分别输入:
CN
HeNan
ZZ
magedu
tech
www.magedu.com
ca@magedu.com
CA 的工作目录:
#cd /etc/pki/CA
创建目录:
#mkdir certs crl newcerts
创建文件:
#touch index.txt serial
输入01到文件serial中
#echo 01 > serial
此时CA创建完成
向上面生成的CA申请证书
#mkdir /etc/httpd
#cd /etc/httpd
#mkdir ssl
#cd ssl/
(生成一对密钥)
#(umsak 077; openssl genrsa 1024 > httpd.key)
申请请求
#openssl req -new -key httpd.key -out httpd.csr
把生成的httpd.csr 发送到服务器上
#scp httpd.csr 172.16.35.2:/tmp
在服务器上
#openssl ca -in httpd.csr -out httd.crt
最后是服务器是否签发。
#openssl ca -revoke http.crt 吊销证书的命令。
本文转自 ZhouLS 51CTO博客,原文链接:http://blog.51cto.com/zhou123/799983