为甚么要加密?
不加密流量的易受攻击性
-
密码/数据嗅探
-
数据操作
-
验证操作
-
相当于邮寄明信片
不安全的传统协议
telnet,FTP,POP3等,不安全密码
http,smtp,nfs等,不安全信息
ldap,nis,rsh等,不安全验证
NIST(美国国家标准与技术研究院)定义的安全属性
保密性:
数据保密性
隐私性
完整性: 不可篡改
数据完整性
系统完整性
可用性
安全攻击 STRIDE
Spoofind 假冒
Tampering 篡改
Repudiation 否认
Information Disclosure 信息泄露
Denial of Service 拒绝服务
Elevation of Privilege 提升权限
安全机制:
加密,数字签名,访问控制,数据完整性,认证交换,流量填充,路由控制,公证
安全服务:
认证
访问控制
数据保密性
连接保密性
无连接保密性
选择域保密性
流量保密性
数据完整性
不可否认性
设计的基本原则
-
使用成熟的安全系统
-
以小人之心度输入数据
-
外部系统是不安全的
-
最小授权
-
减少外部接口
-
缺省使用安全模式
-
安全不是似是而非
-
从STRIDE思考
-
从入口处检查
-
从管理上保护好你的系统
安全算法:
常用的安全技术:
认证
授权
安全通信
审计
密码算法和协议
对称加密
公钥加密
单向加密
认证协议
Linux系统: openssl gpg(pgp协议的实现)
对称加密算法
对称加密 : 加密和解密使用同一个密钥
DES;3DES;AES;IDEA,RC6,CAST5,Blowfish,Twofish
特性:
加密,解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:
密钥过多
密钥分发
数据来源无法确认
非对称加密算法
公钥加密: 密钥是成对出现
公钥: 公开给所有人;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
密钥交换:
密钥交换: IKE (Internet Key Exchange)
公钥加密:DH(Deffie-Hellman)
DH:
1, A: a,p 协商生成公开的整数a,大素数p
B: a,p
2, A: 生成隐私数据 :x(x<p),计算得出 a^y%p ,发送给B
B: 生成隐私数据 :y,计算得出 a^y%p, 发送给A
3, A:计算得出 (a^y%p)^x = a^xy%p,生成为密钥
B:计算得出 (a^x%p)^y = a^xy%p, 生成为密钥
CA和证书
PKI: Public Key Infrastructure
签证机构:CA(Certificate Authority)
注册机构:RA
证书吊销列表:CRL
证书存取库:
X.509:定义了证书的结构以及认证协议标准
版本号 序列号 签名算法 颁发者 有效期限 主体名称 主体公钥 CRL分发点 扩展信息 发行者签名
证书的获取
证书类型:
证书授权机构的证书
服务器
用户证书
获取证书的两种方法
使用证书授权机构
生成签名请求csr
将csr发送给CA
从CA处接受签名
自签名的证书
自己签发自己的公钥
安全协议
SSL:Secure Socket Layer
功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体 系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶 段协商好的密钥进行安全通信。
Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
ChangeCipherSpec 协议:一条消息表明握手协议已经完成
Alert 协议:对握手协议中一些异常的错误提醒,分为fatal 和warning两个级别,fatal类型错误会直接中断SSL链接,而 warning级别的错误SSL链接仍可继续,只是会给出错误警告
Record 协议:包括对消息的分段、压缩、消息认证和完整性 保护、加密等
HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的 组合。HTTP over SSL”或“HTTP over TLS”,对http协议 的文本数据进行加密处理后,成为二进制形式传输