数据加密方式:
1、对称加密
加密效率高
DES
3DES:
AES:支持不同长度的加密128 192 256 512
Blowfish
工具
openssl enc
gpg
2、公钥加密(非对称加密)
算法复杂,加密过程慢,通常用于实现密钥交换
加密和签名:RSA ELGmal
数字签名:DSA
3、单向加密
加密的过程是不可逆的,通常用于实现文件的摘要特征,保证文件完整性
MD5 128
SHA1 160
CRC-32
工具:
md5sum
sha1sum
openssl dgst
计算文件的校验码:
#md5sum FILE ==> #openssl dgst -md5 FILE
#sha1sum FILE ==> #openssl dgst -sha1 FILE
计算机网络中数据加密实现过程:
用户A给用户B发送加密文件:
1、用户A将文件用单向加密,生成文件的摘要特征码,用自己的私钥把特征码加密
2、A用户电脑随机生成对称密钥将文件和加密过的特征码一并加密
3、用B的公钥将对称密钥加密
4、将加密过的密钥和2过程中产生的文件一并发给B
用户B收到A的加密数据:
1、用自己私钥将文件解密 得到A的对称密钥
2、用对称密钥解密文件
3、用A的公钥解密特征码,并将文件单向加密也形成摘要特征码,两者比对,若一致,表示文件是A用户发送且未被篡改过
公钥是公开在网络中的 私要则是用户自己妥善保存的
这里有个问题就是A 和B的公钥如何在网络中传输并确定A的公钥就是A的 B的公钥就是B的
用户B可向具有公信力的第三方 CA(证书颁发机构)申请证书,证书内容包括:
一、证书的持有者的相关信息
二、CA的相关信息
三、证书的使用方法
四、公钥
CA会用私钥对证书的特征码加密 用户A和B需要进行数据加密传输是,会各自得到对方的证书,会用CA的公钥解密,并对比特征码,以实现证书的真实性,确定就是对方的证书,那么就可以得到对方的公钥 上述过程就可以进行
在Linux中颁发过程 ,因为是实验过程 所以需要自己创建个CA,此CA为自己颁发证书
CA服务器建立:
#cd /etc/pki/CA
#vim /etc/pki/tls/openssl.cnf
dir = ../../CA 替换成/etc/pki/CA 此目录为CA的工作目录
#openssl genrsa 1024>/private/cakey.pem //生成私钥
#chmod 600 cakey.pem
#openssl req -new -x504 -key /private/cakey.pem -out cacert.pem -days=365 //为自己颁发证书
需要为CA服务器建立目录和文件
#mkdir certs crl newcerts
#touch index.tst serial crlnumber
#echo 01>serial 处理证书请求的文件序列号 从01 开始
用户向CA请求
cd /etc/http
#openssl genrsa 1024 >httpd.key
#openssl req -new -key httpd.key -out httpd.csr //生成证书请求 会要求输入相关信息
#scp httpd.csr /CASERVERIPADD:/tmp //将httpd.csr文件cp到CA服务器中,递交请求
CA处理用户的证书请求
#openssl ca -in /tmp/httpd.csr -out httpd.crt //颁发证书