OpenSSL:
数据加密: SSL: Secure Socket Layer
NIST:
保密性:
数据保密性
隐私性
完整性:
数据完整性
系统完整性
可用性:
OSI: x.800
安全攻击:
被动攻击:监听
主动攻击:伪装、重放、消息篡改、拒绝服务
安全机制:
加密/解密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证
安全服务:
认证
访问控制
数据保密性
连接保密性
无连接保密性
选择域保密性
流量保密性
数据完整性
不可否认性
安全机制:PKI:public Key Infrastructure
密码算法和协议:
对称加密
公钥加密
单向加密
认证协议
加密算法和协议:
对称加密:加密和解密使用同一个密钥;
依赖于:算法和密钥;
安全性依赖于密钥,而非算法;
常见算法:
DES:Data Encryption Standard, 56bits
3DES:
AES: Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)
Blowfish
Twofish
IDEA
RC6
CAST5
特性:
1、加密、解密使用同一密钥;
2、将明文分隔成固定大小的块,逐个进行加密;
缺陷:
1、密钥过多;
2、密钥分发;
非对称加密:公钥加密
公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;
密钥对儿:私钥和公钥
私钥:secret key,仅允许个人使用;
公钥:public key,公开给所有获取;
用处:
身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;
密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;
数据加密:
算法:
RSA
DSA
ELGamal
特性:
1、密钥长度较大,例如512bits, 2048bits, 4096bits
2、加密解密分别使用密钥对儿中的密钥相对进行;
3、常用于数字签名和密钥交换;
单向加密:提出数据的特征码;
特性:
1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;
2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;
3、不可逆:
算法:
MD5:128bits定长输出;
SHA1:160bits定长输出;
SHA256
SHA384
SHA512:
CRC32
用处:
1、数据完整性;
密钥交换:IKE (Internet Key Exchange)
公钥加密
DH (Deffie-Hellman)
A:P,G
X
P^X%G
从B拿到:(P^Y%G)^X=P^XY%G
B:
公开:P,G
私有:Y
P^Y%G
从A拿到:(P^X%G)^Y=P^XY%G
一次加密通信过程(数字信封)
发送者:
1、使用单向加密算法提取生成数据的特征码;
2、使用自己的私钥加密特征码附加在数据后面;
3、生成用于对称加密的临时密钥;
4、用此临时密钥加密数据和已经使用私钥加密后的特征码;
5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;
接收方:
1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;
2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;
3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;
4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;
SSL:secure socket layer
sslv1, sslv2, sslv3,
IETF: tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3
数字证书:
CA:签证机构
功用:保证公钥信息安全分发;
数字证书的格式(x.509 v3):
版本号(version)
序列号(serial number):CA用于惟一标识此证书;
签名算法标志(Signature algorithm identifier)
发行者的名称:即CA自己的名称;
有效期:两个日期,起始日期和终止日期;
证书主体名称:证书拥有者自己的名字
证书主体公钥信息:证书拥有者自己的公钥;
发行商的惟一标识:
证书主体的惟一标识:
扩展信息:签名:CA对此证书的数字签名;
证书通常有两类用途:
用户证书
主机证书(httpd)
撤消证书:
PKI: Public Key Infrastructure
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:
openssl的组成部分:
libcrypto:加密、解密库文件;
libssl: ssl协议实现
openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
gpg: GNU Privarcy Guard,是pgp规范的实现;
openssl:
子命令分类:
标准命令
消息摘要命令
加密、解密相关的命令
加密文件(对称加密):
工具:openssl enc, gpg
算法:des, 3des, aes, blowfish, twofish, idea, cast5
enc工具:
(加密)# openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE
(解密)# openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE
单向加密:
算法:md5, sha1
工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum
语法:# openssl dgst -CIPHER /PATH/TO/SOMEFILE...
MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;
机制:CBC-MAC;
HMAC:使用md5或sha1算法
生成用户密码:
# openssl passwd -1 -salt 8bits随机数
生成随机数:
# openssl rand -hex|-base64 NUM
公钥加密:
工具:gpg, openssl rsautl
功能:
数字签名:RSA, DSA, ELGamal
DSA: Digital Signature Algorithm
DSS: Digital Signature Standard
密钥交换:公钥加密、DH
生成密钥对儿:
操作过程:生成私钥,从私钥中提取公钥;
# openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS
注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;
#(umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS)
从私钥中手动提取公钥:
# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
随机数生成器:
random, urandom
熵池:保存硬件中断产生的随机数
/dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;
/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;
X.509 v3数字证书的格式:
获取证书的方法:
向RA注册申请
建立私有CA:
OpenSSL
OpenCA
使用OpenSSL构建私有CA:
1、生成私钥;
2、生成自签署证书;
(1) 私钥用于签发证书时,向证书添加数字签名使用;
(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;
配置文件:/etc/pki/tls/openssl.cnf
工作目录:/etc/pki/CA/
建立私有CA:
1、生成私钥文件: /etc/pki/CA/private/cakey.pem
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、生成自签证书
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days #
-new: 生成新的证书签署请求;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
3、提供辅助文件
# touch /etc/pki/CA/index.txt
# echo 01 > /etc/pki/CA/serial
给节点发证书:
1、节点申请证书
在证书申请的主机上进行如下步骤:
(1) 生成私钥;
(2) 生成证书签署请求;
(3) 把请求发送给CA;
注意:
(a) 其中的subject信息部分,要与CA的保持一致;
(b) Common Name要使用此主机在通信真实使用名字;
2、CA签发证书
(1) 验正请求者信息
(2) 签署证书
# openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N
(3) 把签署好的证书发还给请求者
吊销证书:
1、获取吊销证书的序列号;
# openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject
2、实现证书吊销
(1) 吊销证书
# openssl ca -revoke /PATH/FROM/CRT_FILE
(2) 生成吊销证书的编号
echo 01 > /etc/pkie/CA/crlnumber
(3) 更新证书吊销列表
# openssl crl -gencrl -out THISCA.crl
OpenSSH
ssh: secure shell (22/tcp) <-- telnet (23/tcp), rcp, rlogin
服务器上安装telnet
7.1
6.7telnet
ssh protocol:v1, v2(目前)
两种方式的用户认证:基于口令;基于密钥
C/S
Server: sshd
Client:
Linux: ssh
Windows:
xshell
putty
securecrt
...
OpenSSH:
sshd: 服务器
ssh: 客户端
scp: 安全跨主机复制工具,基于ssh协议实现;
sftp
sshd: /etc/ssh/sshd_config
ssh: /etc/ssh/ssh_config
ssh命令行客户端:
ssh [options] [-l user] host [‘COMMAND‘] -p PORT
ssh [options] [user@]host [‘COMMAND‘] -p PORT
基于密钥认证:
在客户端生成一对密钥,私自己留存;公钥通过私密方式保存至要登录的远程服务某用户的家目录的专用于ssh通信的文件;
# ssh-keygen [-t rsa]
# ssh-copy-id -i ~/.ssh/id_rsa.put user@host
示例1:
示例2:
scp远程复制命令:
push: scp [-rp] /path/from/somefile user@host:/path/to/somewhere -P PORT
pull: scp [-rp] user@host:/path/from/somefile /path/to/somewhere -P PORT
-r:目录
-p:保持原来的权限
sshd服务器端的安全配置:
/etc/ssh/sshd_config
Port 22
Protocol 2
限制可登录用户:
PermitRootLogin : 是否允许管理员直接登录; no
AllowUsers user1 user2 ...白名单
AllowGroups grp1 grp2 ...白名单
DenyUsers user1 ...黑名单
DenyGroups grp1 ...黑名单
仅监听需要监听的IP地址:
ListenAddress 0.0.0.0
网络使用强密码策略:随机数openssl
认证出错次数:MaxAuthTries 6(一般3)
日志分析:/var/log/secure
原文:http://youenstudy.blog.51cto.com/6722910/1699861