数据加密方式有三种:

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

gpgpgp

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 md5test加密

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、证书的持有者的相关信息

2CA的相关的信息

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 吊销证书的命令。