所谓的数据加密,就是把明文的数据用算法加密为密文,然后进行存放或传输,保证其安全性。
数据加密方式:
1,对称加密
加密方和解密方共用一个密钥,用算法加密后会产生一个密码,用于对此数据解密。对称加密的速度非常快,适用于加密大容量的数据。
通常用的加密算法有:
DES:支持64位的密钥长度
3DES:用DES加密三次
AES:DES的替代者,支持128,256,512位密钥长度的加密
2,公钥加密
用算法加密数据后,会产生一对密钥,一个是公钥,一个是私钥。公钥加密的数据只有私钥才能解,而私钥加密的数据只有对应的公钥才能解。但是,公钥机制加密的速度是非常慢的,它不用于加密大容量的数据,一只用于密钥交换,即对用对称加密算法生成的密码进行加密。
常用的加密算法:RSA,DSA,ElGamal
3,单项加密
用单项加密算法对数据加密后,会生成一个数据的特征码,这个特征码用于唯一标识这段数据。
主要应用就是数字签名和验证数据的完整性。
常见的算法有:MD5:定长输出128位;SHA1:定长输出160位;CRC-32
而通常一个安全的数据传输过程,要包括以上三种加密方式:
发送方准备好自己要发送的数据后,用单项加密算法获得一个特征码。然后发送方用自己的私钥对特征码进行加密,把加密过的特征码放在用对称加密算法加密过的数据前面,然后发送方再用接收方的公钥对数据的密码进行加密,最后发送给接收方。接收方,用自己的私钥可以对加密的数据密码进行解密,有了数据密码就可以对数据进行解密了,接收方再用发送方的公钥对数据的特征码进行解密,如果能解密,就说明这段数据是发送方发的,也就实现了数字签名,然后接受方再把数据用单项加密算法计算出一个特征码,用这个特征码和发送方发过来的特征码进行比对,如果相同,就说明这段数据是完整的,没有被修改,这就实现了数据完整性的检验。
这其中有一个问题?数据的私钥自己存放,但是数据的公钥要发送给对方,这个通过什么来实现呢?
这就用到了CA(certificate authority)即电子商务认证中心。它是负责发放和管理数字证书的权威机构,作为第三方存在。CA在发证书的时候,会通过实地调查申请者,确定申请者身份后,才会发证。CA证书发行的时候,也要进行数字签名,用CA的私钥加密,用于唯一标识这个CA组织。
而CA证书中通常包含的内容为:
1,证书持有者的相关信息
2,公钥
3,CA的相关信息
4,证书的使用方法
而怎么计算文件的特征码呢?
md5sum filename
用md5计算这个文件的校验码
sha1sum filename
用sha1计算这个文件的校验码
openssl dgst -md5 filename
openssl dgst -sha1 filename
指定算法对文件进行校验码计算
下面我们来说一下Linux中实现加密的工具openssl:
openssl有三个重要的库文件:
1,libcrypto
加密库,提供加密机制,实现通用的加密
2,libssl
保证协议并附加安全机制,如认证安全和传输安全等,并支持传输层安全套接字协议ssl/tls
3,openssl
多目标的通用加密,可以生成x.509格式证书,并可以建立一个本地的CA.
openssl的命令用法:
openssl version
查看openssl的版本
openssl cipers
显示所有常用的算法
openssl speed md5
对算法的加密速度进行测试
openssl ?
显示openssl可用的指令
openssl ca
用于创建CA
openssl crl
用于创建证书吊销列表
openssl passwd
用于生成一个经过加密的密码
openssl genrsa 1024 > mykey.pri
用于生成经过RSA加密的私钥,并放在mykey.pri这个文件中
openssl rsa -in mykey.pri -pubout -out mykey.pub
从私钥信息中提取公钥,保存至mykey.pub这个文件
openssl rsa -in mykey.pri -des3 -out mykey.cipher
对私钥进行3DES加密存放至mykey.cipher文件
openssl rsa -in mykey.cipher -out mykey.sec
解密这个文件至mykey.sec这个文件
制作本地的CA:
/etc/pki/CA目录,就是CA默认的工作目录
/etc/pki/tls/openssl.conf 是openssl的配置文件
/etc/pki/CA/private 存放我们自己建的CA的私钥
cd /etc/pki/tls
vi openssl.conf
找到[ CA_default ]行:
把"dir = ../../CA"改为"dir = /etc/pki/CA,即把我们CA的工作目录使用绝对路径来定义
cd /etc/pki/CA
(umask 077; openssl genrsa 2018 > private/cakey.pem)
创建这个文件,并直接更改它的权限;文件的名字是固定的,配置文件中定义好的,cakey.pem是用于存放CA自己的私钥,CA虽然是授权的发证单位,但自己也要有私钥来实现数字签名,来区分不同的CA
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
会自动提取到公钥,创建cacet.pem这个证书,这个证书是CA本身的证书,格式为x509。以后CA就可以给别人发证了。
req:申请证书
-new:表示是新发的申请
-x509:指定我们的CA证书的格式
-key:指定一个私钥文件
-out:从我们知道的私钥中提取公钥信息,并保存至cacert.pem文件中
-days:指定证书的有效期
命令执行之后会出现这些信息让填入:
数据加密和CA的创建
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.heiqu.com/88702f219f2e0015d2cf272d2377198e.html