通信安全-加解密体系
2021-09-15 18:35:32 0 举报
AI智能生成
描述了网络通信安全体系,CA认证体系,基于openssl的加解密实现、CA证书签署等
作者其他创作
大纲/内容
保密性
完整性
可用性
三个目标
威胁保密性的攻击方式:窃听、通信量分析
威胁完整性的攻击方式:更改、伪装、重放
威胁可用性的攻击方式:拒绝服务
攻击方式
加解密:解决保密性和完整性
服务:认证机制、访问控制机制,解决可用性问题
解决方案
安全性概述
特性:1、加密、解密使用同一个密钥2、将原始数据分割成为固定大小的块,逐个进行加密
缺陷:1、密钥过多; 2、密钥分发困难
算法:DES: Data Encryption Standard,该加密方式已经寿终正寝了3DES:Triple DES ;AES: Advanced Encryption Standard;(128bits,192bits,256bits,384bits)BlowfishTwofishIDEARC6CASTS
对称加密
基本概念:密钥分为公钥与私钥,公钥:从私钥中提取产生,可公开给所有人,pubkey私钥:通过工具创建,使用者自己留存,必须保证其私密性,secret key
特点:用公钥加密的数据,只能使用与之配对的私钥解密,反之亦然;
数字签名(身份认证):主要用户让接收方确认发送方的身份
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
数据加密:不常用,因为此种方式加密效率太低,比对称加密要慢3个数量级
用途
算法:RSA、DSA、ELGamal
基于非对称密钥的通信过程:模拟A给B发送数据1、A首先对原始数据进行单向加密,比如常见的MD5算法,定长输出一个数据特征码2、A利用自己的私钥对特征码进行加密,并附加在数据后面3、A生成一个临时的对称密钥,对以上的整个数据进行加密4、A利用B的公钥加密第3步的对称密钥,附加在数据后面并将以上所有数据发送给B
其实以上有一个最大的漏洞,就是A怎么确认拿到B的公钥就一定是B的,会不会有人冒充B呢,此时就引入了CA
非对称加密
即提出数据指纹,只能加密,不能解密
特性:定长输出、雪崩效应
功能:校验数据的完整性
单向加密
1、公钥加密,通过公钥来加密对称密钥,并发送给对方
下面对DH算法做个简单的说明:A、B分别为两个用户;p,g为他们协商生成的随机数A:p,gB:p,gA:x -->p^x%g ==>B A: (p^y%g)^xB:y -->p^y%g ==>A B: (p^x%g)^y
2、DH(Deffie-Hellman)
其它IKE算法:RSA,DH(迪菲-赫尔曼),ECDH(椭圆曲线DH),ECDHE(临时椭圆曲线DH)
密钥交换IKE(Internet Key Exchange)
加密算法
签证机构CA
注册机构RA
证书吊销列表CRL
证书存取库
PKI公钥基础设施
概述:定义了证书的结构和认证的协议标准
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者的唯一标识
主体的唯一标识
扩展
发行者的签名
字段属性结构
X509
1、最底层:基础算法语言实现,aes,rsa,md5
2、向上一层:各种算法的实现
3、再向上一层:组合算法实现半成品
4、用各种组件拼装而成的各种成品密码学协议软件
分层设计
TLS
客户端向服务器端索要并验证证书;
双方协商生成“会话密钥”
双方采用“会话密钥”进行加密通信
SSL会话主要的三个步骤
第一阶段:ClientHello:支持的协议版本,比如TLS 1.2;客户端生成的一个随机数,稍后用户生成“会话密钥”支持的加密算法,比如AES,RSA支持的压缩算法
第二阶段:ServerHello确认使用的加密通信协议版本,比如TLS 1.2;服务器端生成一个随机数,稍后用于生成“会话密钥”确认使用的加密方法服务器证书;
第四阶段:收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所用到的“会话密钥”服务端握手结束通知
SSL Handshake Protocol的四个阶段
SSL
TLS/SSL
libcrypto/libssl:主要由开发者使用
openssl:多用途命令行工具
组件
消息摘要命令(dgst子命令)
加密命令(enc子命令)
命令分类
enc命令:加密:]# openssl enc -e -des3 -a -salt -in ./fstab -out ./fstab.ciphertext解密:]# openssl enc -d -des3 -a -salt -out ./fstab -in ./fstab.ciphertext
dgst命令: ~]# openssl dgst -md5 /PATH/TO/SOMEFILE
]# openssl passwd -1 -salt SALT
生成用户密码
工具:openssl rand
]# openssl rand -hex NUM 16进制编码方式]# openssl rand -base64 NUM base64编码方式
生成随机数
加密解密
数字签名
算法:DH
密钥交换
生成私钥:]# (umask 077; openssl genrsa -out /tmp/myprivate.key 2048)提出公钥:]# openssl rsa -in /tmp/myprivate.key -pubout
生成密钥对
公钥加密
通过openssl命令对几种加密算法的实现
OpenSSL
/dev/random:仅从熵池返回随机数,随机数用尽,阻塞
/dev/urandom:从熵池返回随机数,随机数用尽,会利用软件生成伪随机数,非阻塞
伪随机数不安全
硬盘IO中断时间间隔
键盘IO中断时间间隔
熵池中随机数的来源
Linux随机数生成器
公共CA
私有CA
分类
说明:在确认配置为CA服务器上生成一个自签名证书,并为CA提供所需的目录及文件即可
1)生成私钥:]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
2)生成自签名证书:]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650-new:生成新证书签署请求-x509:生成自签格式证书,专用于创建私有CA时;-key:生成请求时用到的私有文件路径(从私钥文件中提取公钥)-out:生成的请求文件路径,如果自签操作将直接生成签署过的证书-days:证书的有效时常,单位时day;
构建私有CA
说明:要用到证书进行安全通信的服务器,需要向CA请求签署证书:(以http为例)
1)用到证书的主机生成私钥]# mkdir /etc/httpd/ssl && cd /etc/httpd/ssl]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
2)生成证书签署请求]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 3650
3)将签署请求通过可靠方式发送给CA主机
4)在CA主机上签署证书]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 3650
查看证书中的信息]# openssl x509 -in /etc/pki/CA/certshttpd.crt -noout -serial -subject
签署证书
1)客户端获取要吊销的证书的serial(在使用证书的主机执行)
2)CA主机吊销证书先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致吊销:]# openssl ca -revoke /etc/pki/CA/netcerts/SERIAL.pem其中的SERIAL要换成证书真正的序列号
3)生成吊销证书的吊销编号(第一次吊销证书时才执行)]# echo 01 >/etc/pki/CA/crlnumber
4)更新证书吊销列表]# openssl ca -gencrl -out thisca.crl
查看crl文件:]# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
吊销证书
openssl
OpenCA
构建工具
linux系统下openssl配置文件:/etc/pki/tls/openssl.cnf
CA
通信安全
收藏
0 条评论
回复 删除
下一页