1.加密解密基础:
数据在网络中传输过程中要保证三个要点:
(1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改。
(2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利用
(3)数据的可用性:保证授权用户能按需访问存取文件数据
2.常见的加密技术:
对称加密
公钥加密
单向加密
(1)对称加密:加密解密使用同一个密钥,将原始数据分割成固定大小的块,逐个进行加密
加密算法:
DES:data encryption standard (数据加密标准)
3DES: DES增强版
AES:advance encryption standard(高级加密标准)
(128bits,192,458,384,512bits)
(2)公钥加密:密钥是成对儿使用,用公钥加密,必须用与之配对的私钥解密,反之亦然。
公钥: 公开给所有人, pubkey
私钥, 自己留存,必须保证其私密性。secret key
加密算法:
RSA : 由麻省理工Ron Rivest、Adi Shamir、Leonard Adleman三人提出的加密算法,以三个名字首字母命名
DSA :Digital Signature Algorithm (数字签名算法)
(3)单向加密: 只能加密不能解密,提取数据特征码
加密算法:
md5:128bits
sha1:160bits
sha256
sha386
sha512
PKI :Public Key Infrastructrure (公钥基础设施)
PKI是一种规范,它是使用公开密钥技术和数字证书来确保系统信息安全,并负责验证数字证书持有者身份的一种体系。
组成:
签证机构: CA
注册机构: RA
证书吊销列表:CRL
证书存取库
CA是PKI的一个机构,专门负责证书的签署和颁发。
x.509:定义证书的结构及认证协议标准:
组成:
版本号:v1,v2,v3
序列号: 唯一标识号
签名算法ID:标识符
发行者名称:
有效期限
主体名称
主体公钥
发行者唯一标识
主体的唯一标识
扩展信息
发行者签名
SSL:Secure Socket layer(安全套接字层)
1995年由网景公司设计,发布SSL2.0版本,后推出3.0版本,1999年推出TLS1.0,相当于SSL3.0升级版,现在常用TLS1.2版本
分层设计:
1、最低层:基础算法原语的实现,aes, rsa, md5
2、向上一层:各种算法的实现
3、再向上一层:组合算法实现的半成品
4、用各种组件拼装而成的种种成品密码学协议/软件:tls, ssh
3.SSL/TLS的开源项目:Openssl
(1)openssl的三个组件:
openssl: 多用途的命令行工具;在公司内部实现私有证书的颁发从而验证其身份信息
libcrypto: 公共加密库;提供了各种加密函数
libssl: 库,实现了ssl及tls;
openssl命令:
enc, ca, dgst
对称加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
单向加密:
工具:md5sum, sha1sum, sha224sum, sha256sum,..., openssl dgst
dgst命令:
openssl dgst -md5 /PATH/TO/SOMEFILE
[[email protected] ~]# openssl dgst -md5 /tmp/fstab
MD5(/tmp/fstab)= 32402066bd3db486a37ac6bd26b201fb#md5加密
4.建立私有CA:
OpenCA
openssl
证书申请及签署步骤:
1、生成申请请求;
2、RA核验;
3、CA签署;
4、获取证书;
创建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.cnf
(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 -text|-subject|-serial
(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