概念
PKI: Public Key Infrastructure
证书撤销列表CRL 这个很重要,保证安全性
证书格式 : x.509,pkcs12 ….
x.509:
公钥及其有效期限
证书的合法拥有者
证书该如何被使用
CA的信息(如颁发机构等)
CA签名的校验码
PKI:TLS/SSL/openGPG :使用的是x.509
TLS/SSL:
SSL: SSL: Secure Socket Layer 版本SSLv1(#) SSLv2 TLSv3
网络上进行安全传输,使用https:443(和http协议不同)
在链路层和应用层”间“加上SSL功能,如传输给http的数据经过SSL进行加密变成了https;SSL由于不完全开放,所以出现了TLS
TLS: TLS的v1版本类似SSL的v3版本
Transport Layer Security
在http进行访问时,实现三次握手
而在https进行访问时,先互相协商建立SSL/TLS协议(以此为例)
然后服务器发送证书给客户端,然后客户端进行验证证书的完整性,进行协商加密机制然后发送给服务器,然后进行通信;
加密方式种类
对称加密:
DES(Data Encrption Standard):源于IBM公司DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。
3DES:http://baike.baidu.com/view/350958.htm
AES:高级加密标准,使用128位的秘钥,有256位,512,默认是128位,位数长意味运行速度慢;(目前用的多),这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
Blowfish:BlowFish是一个容易使用的文件和文件夹加密软件,只要用鼠标把文件或文件夹拖到加密的文档地方。单项加密:
MD4
MD5 (128位)
SHA1 (160位)
SHA192 SHA256 SHA384
CRC-32(循环冗余校验码)(这个提供校验功能,不实现加密,意味着不提供安全性)公钥加密 (核心功能: 加密/签名)
身份验证(数字签名)
数据加密
密钥交换常用的加密算法:
RSA:加密,签名http://baike.baidu.com/view/10613.htm?fromtitle=RSA&fromid=210678&type=syn
DSA:签名
ELGamal(商业的,只做了解)实现加密的工具:
openssl
gpg
OpenSSL
OpenSSL:SSL的开源实现,三部分组成:
1. libcrypto:加密库
2. libssl :TLS/SSL的实现 基于会话的,实现了身份认证、数据机密性和会话的TLS/SSL库;
3. openssl :多用途命令行工具,并可以实现CA的功能
openssl help显示所有子命令(命令help虽然错误,但可显示所有子命令)
如speed,可以实现对当前主机各类加密速度的小测试,如:
1 | #openssl speed des |
对称加密举例:
- 例子一:
1 | openssl enc -des3 -salt -a -in inittab -out inittab.des3 |
- 例子二:
1 | echo "Hello,Linux" | openssl enc -base64 -des |
关于对文件和目录进行加密可参考:
链接
单向加密举例:
如进行验证:
1 | openssl dgst -md5 inittab |
当然也可以用md5sum inittab
1 | openssl dgst -sha1 inittab |
rsautl:实现rsa加密解密的工具
rand:伪随机数生成器
1 | #openssl rand -base64 100(100位) |
-base64:使用base64进行编码,默认输出的是二进制
关于sort的功能:
1 | sort是用来搅混密码的,防止被破解,如果想看sort往加密结果中添加什么,如: |
##openssl实现私有CA
openssl实现私有CA
- 先生成一对密钥
1 | openssl genrsa -out /path/ number(位数)生成私钥 |
- 生成自签署证书
1 | openssl req -new -x509 -key server1024.key -out server.crt -days 365 |
- 使其生效,需要编辑/etc/pki/tls/openssl.cnf
1 | [ca] |
生成自签证书的一个完整的步骤
1 | cd /etc/pki/CA |
更多可参考这个:
http://www.cnblogs.com/AloneSword/p/3809002.html
http://www.2cto.com/os/201108/99753.html
但是为了为了两个初次通信的用户能彼此知道对方的公钥,采用了IKE(internet key exchange)机制,这样两个用户在internet上传输数据的时候就知道彼此的公钥,然后使用对方的公钥来解密发来的加密的数据,而如何在通信的过程中来确定对方的身份,这就需要借助PKI(公钥基础设施),也就是说通过第三方来出示证明,在这里也就是使用证书机制来验证用户的信息,通常一个证书中存放着通信人的公钥。所以接下来就从加密开始,然后到颁发证书,最终实现验证的实验过程。
openssl支持的加密算法:
3 Standard commands
4 asn1parse ca ciphers cms
5 crl crl2pkcs7 dgst dh
6 dhparam dsa dsaparam ec
7 ecparam enc engine errstr
8 gendh gendsa genpkey genrsa
9 nseq ocsp passwd pkcs12
10 pkcs7 pkcs8 pkey pkeyparam
11 pkeyutl prime rand req
12 rsa rsautl s_client s_server
13 s_time sess_id smime speed
14 spkac ts verify version
15 x509
17 Message Digest commands 消息摘要命令(see thedgst' command for more details) 18 md2 md4 md5 rmd160 19 sha sha1 21 Cipher commands密码命令 (see the
enc’ command for more details)
22 aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
23 aes-256-cbc aes-256-ecb base64 bf
24 bf-cbc bf-cfb bf-ecb bf-ofb
25 camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
26 camellia-256-cbc camellia-256-ecb cast cast-cbc
27 cast5-cbc cast5-cfb cast5-ecb cast5-ofb
28 des des-cbc des-cfb des-ecb
29 des-ede des-ede-cbc des-ede-cfb des-ede-ofb
30 des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
31 des-ofb des3 desx idea
32 idea-cbc idea-cfb idea-ecb idea-ofb
33 rc2 rc2-40-cbc rc2-64-cbc rc2-cbc
34 rc2-cfb rc2-ecb rc2-ofb rc4
35 rc4-40 seed seed-cbc seed-cfb
36 seed-ecb seed-ofb zlib