Linux Services and Security
OpenSSL
OpenSSH
dns:bind
web:http,httpd(apache),php,mariadb(mysql)
lamp
nginx(tengine),lnmp
file server: ftp,nfs,samba
dhcp,pxe
iptables
OpenSSL
NIST
保密性:数据保密性;隐私性
完整性:数据完整性;系统完整性
可用性
安全攻击:
被动攻击:窃听
主动攻击:伪装、重放、消息篡改、拒绝服务
安全机制:
加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制
安全服务:
认证
访问控制
数据保密性
连接保密性
无连接保密性
选择域保密性
流量保密性
数据完整性
不可否认性
密码算法和协议
对称加密
公钥加密(非对称加密)
单向加密
认证协议
Linux系统:Openssl ,gpg(pgp)
加密算法和协议:
对称加密:加密解密使用同一个秘钥
DES:Data Encrytion Standard,56位秘钥。但是在2003年被攻破
3DES:
AES:Advanced Encryption Standard(128bits,192bits,258,384,512bits)
Blowfish
Twofish
IDEA
RC6
CAST5
现在常用的3DES AES
特性:
1加密解密使用同一个秘钥
2将原始数据分割成固定大小的块,逐个进行加密
缺陷:
1秘钥过多
2秘钥分发
公钥加密:秘钥是成对出现
公钥:公开给所有人pubkey
私钥:自己留存,必须保证私密性secret key
特点:用公钥加密的数据,只能使用与之配对的私钥解密
数字签名:主要在于让接受方确认发送方身份 DSA RSA
秘钥交换 发送方用对方的公钥加密一个对称秘钥,并发送给对方
数据加密 RSA 但是极少有人用来数据加密,速度太慢
算法:RSA,DSA,ELGAMAL
单向加密:只能加密,不能解密;提供数据指纹
特性:定长输出、雪崩效应;
算法:
md5 128bits
sha1 160bits
sha224
sha256
sha384
sha512
功能:完整性
秘钥交换:IKE
公钥加密
DH (Deffie-Hallman) (眉眼算法)
A:p, g
B:p, g
A:x
-->p^x%g 给B
B:y
-->p^y%g 给A
A: p^y%g^x=p^xy%g
B: p^x%g^y=p^xy%g
所以公共部分就是秘钥
PKI:public key infrastructure
签证机构CA
注册机构RA
证书吊销列表CRL
证书存取库
X.509 定义了证书的结构以及认证协议标准
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者唯一标识
主体的唯一标识
扩展
发行者签名
SSL:Secure Socket Layer
安全套接字层
TSL: transport layer security
1.2用的最多目前,传输层安全
1995:SSL2.0 Netscape
1996: SSL3.0
1999: TLS1.0(传输层安全)
2006:TLS1.1 RFC4346
2008:TLS1.2 用得比较多
2015: TLS1.3
分层设计:
1最底层:基础算法原语的实现:aes,rsa,md5
2向上一层:各种算法的实现
aes-128-cbc-pkcs7
3再向上一层:组合算法实现的半成品
4用各种组件拼装而成的各种成品密码学协议/软件:tls,ssh
OpenSSL开源项目
三个组件
openssl 多用途的命令行工具
libcrypto:公共加密库
libssl库,实现了ssl和tls
openssl命令
openssl version 显示版本号
标准命令、消息摘要命令、加密命令
标准命令
enc,ca,req...
对称加密:
工具:openssl enc ,gpg
算法:3des,aes,blowfish,twofish
enc命令
eg: openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
加密
openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
输入密码 解密
-a 基于本文 -salt 加入杂质 -e 加密 -d 解密
其中 -des3 可以换为 openssl ? 中的那些加密方法
实现单向加密:
工具:md5sum ,sha1sum ,sha224sum , sha256sum ..., openssl dgst
dgst用法
openssl dgst -md5 /path/to/somefile
MAC: message authentication code 单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性
机制:
CBC-MAC
HMAC:使用md5或sha1算法
生成用户密码:
passwd
openssl passwd -1 -salt 12345678 -1(数字1表示md5)
生成随机数:
openssl rand -base64 4
openssl rand -hex 4 字符数为num*2 4*2=8
其中的4表示四个字节,不是长度
公钥加密
加密:
算法:RSA ELGamal
工具:gpg,openssl rsatul
数字签名
算法: RSA,DSAT ELGamal
秘钥交换
算法:dh
DSA:Digital Signature Algorithm
DSS: Digital Signature Standard
RSA:
生成秘钥对儿:
openssl genrsa -out rsakey.private 2048
生成了2048位的私钥,
公钥可以从私钥中获取
openssl rsa -in rsakey.private -pubout
还要把权限去掉
chmod og= rsakey.private og表示没有任何权限
(umask 077;openssl genrsa -out key.pri 2048)
随机数生成器:
熵池
/dev/random 仅从熵池返回随机数;随机数用尽,会发生阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数。