我们先简单了解一下算法吧。
对称加密
加密和解密使用同一个密钥
常见对称加密算法(DES,3DES,BLOWFISH,WEOFISH,IDEA,RC6,CAT5)
非对称加密:
特性:
1、一对密钥私钥是自己生成的,公钥是从私钥中提取出来的,
加密数据双方可以互解。
2、密钥较长加密解密较慢不适用较大数据,常用于身份认证
密钥交换。
常见非对称加密算法:RSA,DSA
单项加密:
特性:
1、定长输出无论数据多大,加密输出的长度一样
2、原数据有微小改变,加密的密钥串将有巨大改变
3、破解难度较大,在现代计算机运算速率下很难破解
常用算法
MD5:128bits定长输出
SHA1:160bits定长输出
SHA256:定长输出
。。。。
这个算法我们经常会碰到的,比如我们的用户密码他就是用单项加密做的处理
可以看下/etc/shadow文件这个是我们的用户密码加密后存放的文件
下面我们以https服务通信服务来介绍一下一次加密通信的过程
请求者:
1、使用单向加密算法生成数据的特征码
2、使用自己的私钥加密特征码附加在数据的后面(后面我会介绍到如何用Openssl 生成私钥)
3、用对称加密生成临时密钥
4、用此临时密钥加密数据和已经加密的特征码
5、使用接收方的公钥加密对称加密生成的临时密钥、附加在对称加密后的数据后方
在后面我会将如何取得对方的CA和让对方的到自己CA
接收方:
1、使用自己的私钥解密对方用自己公钥加密密钥
2、获得对方用对称加密后的密钥,解密得到对方用对称加密的数据和特征码
3、使用发送方的公钥解密对方用私钥加密的特征码
4、使用同样的单项加密的算法计算数据的特征码,来和解密得到的特征码对比
下面我们来介绍一下CA吧
数字证书:(相信大家都听过吧,其实他就是让对方获取到我们公钥)
详细的来说他就是:
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(CertificateAuthority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。
***在这里有有朋友改问了接收方如何得到发送方的公钥呢!一般情况接收方不会要求客户端的证书。像银行这类的公司会给客户发一个U盾里面有用户的信息和自己的证书,这样就能表明用户的身份了。
下面我们来说说数字证书的格式
我们以(x.509 v3)为例
我们以私有CA为例说明一下如何建立
1、生成私钥文件: /etc/pki/CA/private/cakey.pem
openssl genrsa 生成私钥
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、生成自签证书:/etc/pki/CA/cacert.pem
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days
openssl req 生成证书
-new: 生成新的证书签署请求;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
3、提供辅助文件
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
那如果私钥丢了是多么可怕的事啊这我们就必须吊销证书了
吊销证书
opensslx509 -in /path/file -noout -serial subjeck
openssl ca-revoke /path/CAlnumber
3.生成吊销的证书编号
echo 01>/etc/pkie/CA/crlnumber
4.更新证书吊销列表
openssl crl-gencrl -out THISCA.crl