信息安全防护的目标
安全防护环节
安全攻击: STRIDE
安全设计基本原则
常用安全技术
加密算法和协议
对称加密:加密和解密使用同一个密钥
对称加密的特性:
对称加密的缺陷:
公钥加密:密钥是成对出现
非对称加密算法特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
非对称加密算法功能:
非对称加密算法缺点:密钥长,加密解密效率低下
非对称加密算法算法:
基于一对公钥/密钥对
实现加密:
实现数字签名:
结合签名和加密
分离签名
将任意数据缩小成固定大小的“指纹”
功能:数据完整性
常见算法
常用工具
对称加密:效率高、但无法确认数据来源
非对称加密:可以确定数据来源但效率低
Alice == Bob
其中Alice的公钥PubA,私钥PriA
其中Bob的公钥PubB,私钥PriB
(data) --> PubB{PriA[hash(data)]+data} == data’ ==>to Bob
–> PriB(data’)–>PubA{PriA[hash(data)]+data}
–> hash(data) == hash(data)? :确认数据是否被篡改
–> 安全通信
但是:使用Bob公钥加密数据若太大,则解密时间消耗比较长
综合hash、对称、非对称三种通信:
(data) —> hash(data)
–> PriA[hash(data)] + key(data) + PubB(key) ==data’ ==>to Bob
–> PriB(PubB(key))==key 提取非对称加密数据的钥匙
–> PubA([hash(data)])==hash(data)提取data的digest 并验证data来源
–> key(key(data))==data 提取data
–> hash(data)=? hash(data) 确认data传输过程未被修改
密钥交换:IKE( Internet Key Exchange )
方法一:公钥加密
方法二:DH (Deffie-Hellman):生成会话密钥
参看:
使用gpg实现对称加密
使用gpg工具实现公钥加密
PKI:Public Key Infrastructure
X.509:定义了证书的结构以及认证协议标准
证书类型:
获取证书两种方法:
使用证书授权机构
生成证书请求(csr)
将证书请求csr发送给CA
CA签名颁发证书
自签名的证书
自已签发自己的公钥
SSL:Secure Socket Layer,TLS: Transport Layer Security
功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
TLS(or SSL) 工作在应用层和传输层之间,对应用层数据进行加密。
OpenSSL:开源项目
openssl命令:
对称加密:
单向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum…
openssl dgst
dgst命令:
帮助:man dgst
MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现
网络通信中保证所传输数据的完整性机制
生成用户密码:
生成随机数:
公钥加密:
数字签名:
密钥交换:
生成密钥对儿:man genrsa
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS(umask 077; openssl genrsa –out test.key –des 2048)openssl rsa -in test.key –out test2.key 将加密key解密
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILEopenssl rsa –in test.key –pubout –out test.key.pub
随机数生成器:伪随机数字
base64编码:[ 字母 | 数组 | + | / ]
因为ASCII码128中具有不可见字符,使用文本工具打开将乱码,base64编码字符 可见,因此base64可以将二进制文件用可见字符表示。
一个字节: 8bit
ASCII 8bit
base64 6bit
base64编码编码与ascii编码转换:<>以ab、abc为例~]# echo -n ab|base64YWI=a ascii 97 b=98c=99
ascii 01100001 01100010
base64 011000 | 01 0110 | 001000 <不够6位末尾添0补足>Y | W | I =表示有用0补位~]# echo -n abc|base64YWJj
ascii 01100001 01100010 01100011
base64 011000 | 01 0110 | 001001 | 100011 Y | w | J | j因此输出要为完整的base64编码时,24的倍数字节即为3的倍数使用openssl生成随机数作口令:~]# openssl rand -base64 9<此处9表示9字节 72 bite >6ptxyuxOKs6L <因此对应base64位12字符>生成8位随机数做密码~]# openssl rand -base64 66qTJ19ag使用随机数8个字符串口令:~]# cat /dev/urandom | tr -dc '[[:alnum:]]' |head -c 8~]# openssl rand -base64 6
创建私有CA必须满足以下条件:
创建私有CA:
openssl配置文件/etc/pki/f详解:
#######################
[ ca ] 一台主机可以搭建多个CA,此处设置的是默认CA
default_ca = CA_default
#######################[ CA_default ] 定义默认CA的相关信息dir = /etc/pki/CA <默认CA相关数据的存放路径>
certs = $dir/certs <certs目录存放被颁发的证书>
crl_dir = $dir/crl <crl目录存放证书吊销列表>
database = $ <颁发的证书的索引数据库>默认在/etc/pki/CA目录下不存在,需要手动创建
new_certs_dir = $dir/newcerts <新证书存放路径>
certificate = $dir/cacert.pem <CA证书存放路径><根CA证书自签证明>
serial = $dir/serial <当前序列号><颁发的证书有序列号><当前编号表示下一个颁发的证书的编号><刚开始需要手动创建并指明初始编号>
crlnumber = $dir/crlnumber <证书吊销列表的编号>
crl = $dir/crl.pem <证书吊销列表存放路径>
private_key = $dir/private/cakey.pem <私钥存放路径>
...
#######################
##没有特别指定时的默认设置项
default_days = 365 <颁发证书的默认有效期>
default_crl_days= 30 <吊销列表有效期>
default_md = sha256 <hash值算法>
preserve = no #######################
# 需要遵守的策略 match,optional,supplied
policy = policy_match
# For the CA policy
[ policy_match ] <搭建CA需要提供的相关信息>
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
....[ policy_anything ] <另一个策略>
证书申请及签署步骤
创建私有CA:
生成自签证书的相关选项:
私有CA使用场景:企业内部使用与安全通信相关时,需要搭建私有CA;eg:https
===============================================
创建私有CA<创建CA主机>:~]# cd /etc/pki/CA/ <先进入/etc/pki/CA/此目录>
①CA的私钥文件:/etc/pki/CA/private/cakey.pemCA]#(umask 066; openssl genrsa -out private/cakey.pem -des 2048 ) -des <使用对称加密设置密码,防止私钥被盗用>
②生成自签名证书CA]# openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem填写相关信息::CN <国家>:BJ <省份>:BJ <城市>:xixi <组织/公司>:ops <部门>:ca.xixi<网站的哪个主机>
注意:创建CA时并没创建/etc/pki/和/etc/pki/CA/serial文件
因此CA此时直接给其他主机颁发证书会报错。③创建/etc/pki/ 颁发证书的索引文件CA]#
④创建/etc/pki/CA/serial 颁发证书的当前序号 (两个数字表示16进制)CA]# echo 0F > serial至此私有CA创建完成,可以给其他主机颁发证书。++++++++++++++++++++++++++++++++++++++++++++++++
当有主机向CA主机发来证书申请请求时:一、同意证书申请:
1)CA主机向请求证书颁发证书:颁发证书存放路径:/etc/pki/CA/CA]# openssl ca -in app.csr -out -days 100此时:/etc/pki/和/etc/pki/CA/serial 默认会添加记录
对应我此处使用的记录:CA]# V 191208123005Z 0F unknown /C=CN/ST=BJ/O=xixi/OU=ops/CN=app.xixiCA]# cat serial10 <OF当时设置的0F> 则下一个颁发的证书编号为10,16进制数字── certs
│ └──
├── newcerts <自动生成的拷贝文件放置于newcerts目录>
│ └── 0F.pem 2)将颁发的证书传给请求主机CA]# scp root@192.168.38.17:/data/app================================================此时另一主机某服务使用加密时向CA申请证书:①新建文件夹:/data/app --> 此处仅参考使用<对应于某一服务目录下的配置文件>~]# mkdir /data/app; cd /data/app<进入新建目录>
②生成对应服务的私钥文件 app]# (umask 077; openssl genrsa -out app.key 1024)
③生成证书申请文件<此文件为证书申请文件文件后缀一般为:filename.csr>app]# openssl req -new -key app.key -out app.csr填写相关信息::CN <国家>:BJ <省份>:BJ <城市>:xixi <组织/公司>:ops <部门>:app.xixi<网站的哪个主机><因为采取的默认policy_match策略需要保持三项相同>countryName = match <国家>stateOrProvinceName = match <省份>organizationName = match <组织/公司>
④将证书申请文件传给CA主机、等待CA主机颁发证书app]# scp app.csr root@192.168.38.7:/etc/pki/CA/##############################################
# 创建CA主机的脚本?
# CA主机给服务主机颁发证书脚本?
# 合并两个脚本至同一脚本中
本文发布于:2024-02-01 05:28:23,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170673650534223.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |