PKI:Public Key Infrastructure :公钥基础设施 签证机构 CA 注册机构 RA 证书吊销列表 CRL,以便验证有些证书是过期的 证书存取库 X.509 :定义了证书的结构 以及认证协议标准 版本号 序列号 签名算法ID 号 发行者名称 有效期限 证书拥有者的名称:主体名称 主体公钥 CA的唯一标识 主体的唯一标识 扩展信息 发行者CA的签名 SSL:secure socker layer:安全的套接字层 TLS: 传输层安全 TLS 1.0 是 SSL 3.0的升级版 TLS 1.1 RFC 4346 TLS 1.2 增进了很多安全性,目前使用最多 TLS 1.3 应用层 + ssl/tls(api) 传输层 用到 ssl/tls 层就是安全的,不用就是不安全的。 http:文本编码 https:二进制编码的 三次握手,还有ssl握手,交换秘钥,认证,基于IP 地址实现 协议的分层设计: 1、最底层:基础算法源语的实现。aes rsa md5 2、向上一层:各种算法的实现 aes-128-cbc-pkcs7(cbc是里边的库) 3、再向上一层:组合算法实现的半成品 4、用各种组件拼装而成的各种成品密码学协议/软件 tls ssh OpenSSL: 开源项目 三个组件: openssl:多用途的命令行工具 libcrypto:公共加密库,实现了各种加密算法。直接调用 libssl:ssl层的实现,库,实现了ssl 和tls 如何建立连接:https 客户端 tcp会话的建立过程三次握手 服务器端 ssl的握手认证 s发送证书给c c要认证 证书, 1、证书发行者名称 CA 2、找道发行者的证书,从中提取公钥 3、如果能解密,CA认证通过 4、证书中的主体名称 www.ma.com 5、检查证书信息(加密解密特征码是否相同) 6、检查证书吊销列表,是否在其中。 openssl命令行工具: openssl version 程序版本号 标准命令,消息摘要命令,加密命令 标准命令: enc, ca, req, ... 对称加密 工具:openssl enc,gpg 算法:3des,aes,....具体 openssl --help查看 加密: openssl enc -e -des3 -a -salt -in /etc/fstab -out a.txt 就将文件加密了。 解密: openssl enc -d -des3 -a -salt -in a.txt -out /t/fatab 将加密文件恢复。 单向加密: 工具:md5sum,sha1sum, sha224sum, sha56sum, openssl dgst md5sum /etc/fastab openssl dgst -md5 /etc/fatab 不同工具,算法相同,一般结果一样。 openssl dgst -md5 -hex /file :默认就是16进制 MAC:message authentication code:消息认证吗,不验证谁发的。 ---单向加密的一种延伸,用于实现在网络中保证所传输的数据的完整性 机制: CBC-MAC: HMAC:使用md5或sha1 算法:用于集群之间相互信任 生成用户密码: passwd命令:sslpasswd openssl passwd -1 -salt 123456 : 1 表示md5, salt相同,获得的结果就相同的。 回车后,输入密码 如 jack $1$123455$h3XGOsZlrgCKrOGd0/Ma5/ :将jack加密成这样 生成随机数: openssl rand -base64 4 openssl rand -hex 4 ---4是字节 公钥加密: rsa,dsa,... 加密: 算法:Rsa, ELGmal 工具:gpg, openssl rsautl, dsa 数字签名: 算法:RSA , DSA, ELGmal 工具:openssl rsa, dsa # 一般不手动完成 秘钥交换: 算法:dh DSA:Digital Signature Algorithm DSS:数字签名标准 RSA: 生成秘钥对: 算法:genrsa, gendsa, gendh 私钥: openssl genrsa -out /tmp/a.orivate 2048 公钥:从私钥中获取 openssl rsa -in /tmp/a.orivate -puout (umask 077; openssl genrsa -out /tmp/a.orivate 2048 ) # 顺便修改权限 666 - 077 负数为0 # 加括号,表示在子shell中执行,不会影响当前的umask 随机数生成器: 软件生成的,都是有规律可循的,不是真正的随机。 /dev/random:仅从熵池返回随机数,随机数用尽,阻塞 /devurandom:从熵池返回随机数,随机数用尽,会利用该软件生成伪随机数,非阻塞