数据加密和CA的创建

所谓的数据加密,就是把明文的数据用算法加密为密文,然后进行存放或传输,保证其安全性。
    数据加密方式:
    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