加密解密技术基础、PKI及创建私有CA
一、背景
随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障;因此就有了对数据的加密及解密。
二、安全的目标
1、目标:
信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息;如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取。
2、数据在网络中传输过程中要保证三个要点:
(1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改。
(2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利用
(3)数据的可用性:保证授权用户能按需访问存取文件数据
三、加密算法
1、背景:
加密在很早之前就已经存在。远在计算机还没问世之前世界上就已经出现了,例如中国古代
的虎符和信牌,或者矾书等。到现在为止密码或加密技术已经广泛应用在生活中的各种场景中,
尤其是在这个互联网时代中加密技术更是发展到了极致。
四、加密算法和协议
1、对称加密
(1)通信双方使用同一个密钥,将原始数据分割成固定大小的块,对数据进行逐个加密。这样就确保了就算是通信的信息被第三方知道,由于没有密钥也不能解密被加密的信息;这种加密方法确保了数据的安全性,但使用的密钥必须由安全的方式在两方之间传输。
(2)加密算法:
DES:data encryption standard (数据加密标准)
3DES: DES增强版
AES:advance encryption standard(高级加密标准)
(128bits,192,458,384,512bits)
(3)特性:
a.加密、解密使用同一个密钥;
b.将原始数据分割成为固定大小的块,逐个进行加密;
(4)缺陷:
a.密钥过多;
b.密钥分发困难;
2、公钥加密
(1)公钥加密也称非对称加密,密钥分为私钥(secret key)和公钥(pubkey)。其中公钥是从私钥中提取的。而且加密解密的方式是:公钥加密必须用与之对应的私钥来解密,反之亦然;一般私钥只有加密者本身具有,对应的公钥所有人都可以得到。公钥加密主要可以实现对身份的验证。例如,A用私钥加密一个文件要送给B,B接受到后只有用与A的私钥相对于的公钥解密,如果能解密则说明这个文件是A发送的。
(2)用途:
数字签名:主要在于让接收方确认发送方的身份;
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
数据加密;
(3)加密算法:
RSA : 由麻省理工Ron Rivest、Adi Shamir、Leonard Adleman三人提出的加密算法,以三个名字首字母命名
DSA :Digital Signature Algorithm (数字签名算法)
3、单向加密
(1)单向加密的特点是只能加密不能解密。而且这种加密算术也称为hash散列函数,这种算法会把不同长度的数据压缩成固定长度的一段字符。这种加密方法一般用来验证数据的完整性。发送方用单向加密加密数据后会得到一个特征码,接收方收到数据后也用同样的算法加密数据也得到一个特征码。把这两个特征码作比较如果相同则说明数据没有被改动过。
(2)特性:定长输出、雪崩效应;
(3)功能:完整性;
(4)算法:
md5:Message Digest 5, 128bits
sha1:Secure Hash Algorithm 1, 160bits,sha224, sha256, sha384, sha512
4、加密过程:
(1)使用单向加密算法加密明文数据,生成一个特征码。保证了数据的完整性。
(2)Bob用自己的私钥加密特征码,附在明文数据后面(使之成为一个新数据),保证了身份认证。(加密后的特征码称为数字签名)
(3)Bob利用对称加密算法(一次性密钥)对所有的数据加密。
(4)Bob再用Alice的公钥(通过可靠的手段获取,第三方认证机构CA)对生成的密钥进行加
密。
5、解密过程:
(1)使用Alice的私钥先解密获取密钥。
(2)用得到的密钥去解密加密了的数据和特征码。
(3)使用Bob的公钥去解密特征码,得到在Bob发送数据的特征码。
(4)Alice用同样的加密算法去计算数据的特征码
(5)再比较3,4步中的特征码是否一致。
三种算法结合,以实现可靠的通信(保证数据的完整性,私密性,用户认证)在上面的介绍中,虽然用到了众多加密算法,但公钥是在网络中传输,双方无法验证其可信度,则需要第三方权威认证机构(CA)才能保障
五、PKI基础内容
1、概念:
PKI是Public KeyInfrastructure的首字母缩写,翻译过来就是公钥基础设施;它是使用公开密钥技术和数字证书来确保系统信息安全,并负责验证数字证书持有者身份的一种体系。
2、常用的证书格式是 x509 格式,它包含有下面的信息:
(1)版本号(version)
(2)序列号(serial number),CA 用于唯一标志此证书
(3)签名算法标志(signatur algotithm ientifier)
(4)发行者的名称,即 CA 自己的名称
(5)有效期,起始日期和终止日期
(6)主体自己的公钥
(7)发行商的唯一标识
(8)整数主题的唯一标志
(9)扩展信息
(10)发行者的签名:CA 对此证书的数字签名
3、PKI的组成
(1)签证机构: CA (CA是PKI的一个机构,专门负责证书的签署和颁发。)
(2)注册机构: RA
(3)证书吊销列表:CRL
(4)证书存取库
4、CA基础内容
CA是PKI的核心,负责管理PKI结构下的所有用户的证书。通信双方认证对方身份必须要通过CA。
(1)CA种类:公共信任的CA,私有CA;
建立私有CA:
OpenCA
openssl
(2)证书申请及签署步骤:
(a) 生成申请请求;
(b)RA核验;
(c)CA签署;
(d)获取证书;
(3) openssl命令
配置文件:/etc/pki/tls/openssl.cnf
创建私有CA:
在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件即可;(CA只需要参与签证的过程中)
步骤:
(1)创建所需要的文件
~]#touch index.txt
~]# echo 01 > serial
(2) CA自签证书
~]#(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
~]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新证书签署请求;
-x509: 专用于CA生成自签证书;
-key: 生成请求时用到的私钥文件;
-days n:证书的有效期限;
-out /PATH/TO/SOMECERTFILE: 证书的保存路径;
(3) 发证
(a) 用到证书的主机生成证书请求;
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
(b) 把请求文件传输给CA;
(c) CA签署证书,并将证书发还给请求者;
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看证书中的信息:
~]#openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
(4) 吊销证书
步骤:
(a) 客户端获取要吊销的证书的serial
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
(b) CA
先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;
吊销证书:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
(c) 生成吊销证书的编号(第一次吊销一个证书)
# echo 01 > /etc/pki/CA/crlnumber
(d) 更新证书吊销列表
# openssl ca -gencrl -out thisca.crl
查看crl文件:
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text