安全和加密:
NIST定义的安全属性:(美国国家标准与技术研究院)
保密性:
数据保密性
隐私性
完整性:不可篡改
数据完整性
系统完整性
高可用性: 五个9
安全攻击:STRIDE
Spoofing(假冒) Tampering (篡改) Repudiation (否认)
Information Disclosure (信息泄漏) Denial of Service(拒绝服务)
Elevation of Privilege (提升权限 )
安全机制:
加密,数字签名,访问控制,数据完整性
认证交换,流量填充,路由控制,公证
安全服务:
认证
访问控制
数据保密性
连接保密性
无连接保密性 UDP协议
选择域保密性
流量保密性
数据完整性
不可否认性
常用安全技术:
认证
授权
安全通信
审计
密码算法和协议:
对称加密
公钥加密
单向加密
认证协议
对称加密:加密和解密使用同一个密钥 (AES加密算法)
特性:
1 、加密、解密使用同一个密钥,效率高
2 、将原始数据分割成固定大小的块,逐个进行加密
缺陷:
1、密钥过多
2、密钥分发
3、数据来源无法确认
非对称加密:
公钥加密:密钥是成对出现
公钥:公开给所有人; public key
私钥:自己留存,必须保证其私密性; secret key
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给
对方
数据加密:适合加密较小数据
缺点:密钥长,加密解密效率低下
算法:
RSA (加密,数字签名),DSA (数字签名),ELGamal
实现加密:
• 接收者
生成公钥/ 密钥对:P 和S
公开公钥P ,保密密钥S
• 发送者
使用接收者的公钥来加密消息M
将P(M) 发送给接收者
• 接收者
使用密钥S来解密:M=S(P(M))
注意:使用对称加密文件,非对称加密公钥私钥
因为非对称加密耗时很长,公钥和私钥非常小容易解密
实现数字签名:
• 发送者
生成公钥/ 密钥对:P 和S
公开公钥P,保密密钥S
使用密钥S 来加密消息M
发送给接收者S(M)
• 接收者
使用发送者的公钥来解密M=P(S(M))
结合签名和加密
分离签名
单向散列:
任意数据缩小成固定大小的“指纹”
• 任意长度输入
• 固定长度输出
• 若修改数据,指纹也会改变(“不会产生冲突”)
• 无法从指纹中重新生成数据(“单向”)
功能:数据完整性
常见算式
md5: 128bits 、sha1: 160bits 、sha224、sha256 、sha384 、sha512
常用工具
• md5sum | sha1sum [ –check ] file #检查是否改变
• openssl 、gpg
• rpm -V #校验
PKI: Public Key Infrastructure 公共的秘钥加密体系
签证机构:CA (Certificate Authority) 证书颁发机构CA
注册机构:RA #申请注册机构RA
证书吊销列表:CRL #吊销列表后缀.crl
证书存取库 #证书的后缀.cer
X.509 :定义了证书的结构以及认证协议标准
版本号
序列号
签名算法
颁发者 #CA的名字
有效期限
主体名称 #用户名字
主体公钥
CRL 分发点
扩展信息
发行者签名
证书类型:
证书授权机构的证书
服务器
用户证书
获取证书两种方法:
• 使用证书授权机构
生成签名请求 csr 文件的后缀
将 csr 发送给CA
从 CA 处接收签名
• 自签名的证书
自已签发自己的公钥 #CA给自己签名颁发证书
安全协议:SSL 和 TLS(这是升级版) #当前使用TLS1.2版本
功能:机密性,认证,完整性,重放保护
两阶段协议;
握手阶段(协商阶段)
应用阶段
OpenSSL :开源项目
三个组件:
openssl : 多用途的命令行工具
libcrypto: 加密算法库,包openssl-libs提供
libssl : 加密模块应用库,实现了ssl 及tls
openssl 命令:
两种运行模式:交互模式和批处理模式
openssl version :程序版本号
标准命令、消息摘要命令、加密命令
标准命令:
enc, ca, req, …
对称加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc 命令:man enc # 对称加密
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
加密 加密算法 加盐 加密的文件 加密后输出的文件
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
单向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst
dgst 命令:man dgst #hash运算
openssl dgst -md5 [-hex 默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code ,单向加密的一种延伸应用,
用于实现网络通信中保证所传输数据的完整性机制
CBC-MAC
HMAC :使用md5 或sha1
生成用户密码:
passwd 命令:man sslpasswd
openssl passwd -1 -salt SALT( 最多8 位) #-1就是md5
openssl passwd -1 –salt centos
生成随机数:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字节数;-hex 时,每个字符4位,出现的字符数为NUM*2
公钥加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl (man rsautl) )
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA : Digital Signature Algorithm
DSS :Digital Signature Standard
RSA :
生成密钥对儿:man genrsa #rsa算法
生成私钥: #每次执行生成的私钥都不相同
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
指定多少字节2048
(umask 077; openssl genrsa -out key.pri –des 2048)
从私钥中提取出公钥: #公钥不能提取私钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
私钥 指定公钥名字
随机数生成器:伪随机数字 #尽量去客户端生成,不要在ssh生成
键盘和鼠标
块设备中断
/dev/random :仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom :从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,
搭建CA:
1.服务器:建立CA
2.客户端(比如websrv):生成申请csr
3.申请csr发送到CA
4.CA:审核,批准, 生成crt|cer后缀的文件
5.发送到客户端
6.应用配置 https
PKI :Public Key Infrastructure
CA
RA
CRL
证书存取库
建立私有CA:
OpenCA
openssl
证书申请及签署步骤:
1 、生成申请请求
2 、RA 核验
3 、CA 签署
4 、获取证书
vim /etc/pki/tls/openssl.cnf
dir = /etc/pki/CA # Where everything is kept
CA的根目录
certs = $dir/certs # Where the issued certs are kept
证书文件 颁发证书的目录,需要手动更新
database = $dir/index.txt # database index file.
数据库文件,数据会自动生成
serial = $dir/serial # The current serial number
下一个证书编号从几开始,需要手动指定
certificate = $dir/cacert.pem # The CA certificate
CA自己的证书签名路径
注意:index.txt文件和serial文件需要手动创建,否则后面会报错
搭建CA和申请证书:
创建私有CA:
openssl 的配置文件:/etc/pki/tls/openssl.cnf
三种策略 : 匹配、支持和可选
匹配指要求申请填写的信息跟CA 设置 信息必须一致,支持
指必须填写这项申请信息, 可选指可有可无
1 、创建所需要的文件
touch /etc/pki/CA/index.txt 生成证书索引数据库文件
echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号
2、 CA 自签证书
生成私钥 : cd /etc/pki/CA/
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
3.生成自签名证书
openssl req -new -x509 –key
/etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新证书签署请求
-x509: 专用于CA 生成自签证书
-key: 生成请求时用到的私钥文件
-days n :证书的有效期限
-out / PATH/TO/SOMECERTFILE : 证书的保存路径
颁发证书
• A 在需要使用证书的主机生成证书请求
给web 服务器生成私钥
(umask 066; openssl genrsa -out /etc/pki/tls/private/app.key 2048)
生成证书申请文件
openssl req -new -key /etc/pki/CA/app.key -out etc/pki/CA/test.csr
• B 将证书请求文件传输给CA
scp test.csr 172.18.12.11:/root
• C CA 签署证书,并将证书颁发给请求者
openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365
注意:默认国家,省,公司名称三项必须和CA 一致
签名完成后sz导入到电脑使用
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 /etc/pki/CA/crl/crl.pem
查看crl 文件:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
文件完整性的两种实施方式:
被安装的文件
• MD5 单向散列
• rpm -v package
发行的软件包文件
• GPG 公钥签名
• rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat* #导入公钥
• rpm –checksig pakage_file_name (or -K) #检查签名
使用gpg 实现对称加密:
对称加密file 文件
gpg -c file
ls file.gpg
在另一台主机上解密file
gpg -o file -d file.gpg #-o 指定解密后文件名字
使用gpg 工具实现公钥加密 #尽量在本机执行
在hostB 主机上用公钥加密,在hostA 主机上解密
在hostA 主机上生成公钥/ 私钥对
gpg –gen-key
在hostA 主机上查看公钥
gpg –list-keys
在hostA 主机上导出公钥到wang.pubkey
gpg -a –export -o wang.pubkey
从hostA 主机上复制公钥文件到需加密的B 主机上
scp wang.pubkey hostB:
在需加密数据的hostB 主机上生成公钥/ 私钥对
gpg –list-keys
gpg –gen-key
在hostB 主机上导入公钥
gpg –import wang.pubkey
gpg –list-keys
用从hostA 主机导入的公钥,加密hostB 主机的文件file, 生成file.gpg
gpg -e -r wangxiaochun file #后缀自动生成
file file.gpg
复制加密文件到hostA 主机
scp fstab.gpg hostA:
在hostA 主机解密文件
gpg -d file.gpg
gpg -o file -d file.gpg
删除公钥和私钥
gpg –delete-keys wangxiaochun
gpg –delete-secret-keys wangxiaochun
原创文章,作者:shewei,如若转载,请注明出处:http://www.178linux.com/73199