信息安全原理
这里只能写一些重要的点子和概念¶
- The Kerckhoffs' Principle 科切夫原则:密码学从经验转为科学
- 增强安全性:凡是长时间不改变的东西,都会被disclosed
- 加密算法不具有保密性,安全性只依赖于密钥的保密性
-
密码的强度必须在对手已知算法的前提下进行定义
-
Public Key Cipher 公钥密码学
- 在双方不分享任何密钥的情况下交换大量信息
-
算法:RSA
-
计算机安全的三要素:confidential 保密性、integrity 完整性、availablity 可用性、authentic 真实性
-
计算机安全概念:assets,threat,vulnerable,risk
-
安全攻击类型
- Interruption 中断:使系统毁坏或不可用;攻击“可用性”;易检测
- 中断方式:硬件损坏、传输链损坏、引入噪声、摧毁路由、DOS 攻击
- Intereption 截断:攻击“保密性”,未授权用户获取对数据的访问,难以检测,无法完全避免
- 截取方式:窃听(eavesdropping)、链路监控(link monitoring)、抓包、黑入
- Modification 修改:未授权用户获取对数据的访问和纂改,攻击“完整性”
- 修改方式:修改数据库记录、黑入、通信延迟、修改硬件
- 通过数字水印和其他技术可以避免
- Fabrication 伪造:未授权用户向系统中插入虚假实体并伪装自己为授权用户,攻击“真实性”
- 伪造方式:向数据库插入记录、伪造 IP、钓鱼
-
安全攻击类型:
- 被动攻击:目标截取,难以探测,预防比探测更有效
- 主动攻击:目标中断、修改和伪造,易探测,难以预防,可以从攻击中恢复
-
对抗安全威胁
-
目标:阻止、检测、恢复
- 安全服务:认证、访问控制、数据保密性(防止数据窃听)、数据完整性(确保发送到认证用户未经修改)、不可拒(阻止来自任何实体的通信拒绝)、可用性(保证服务自身的可用性)
-
人的问题是安全问题的主要来源
-
密码学概念
plaintext | P = D(C) | 明文 | Ciphertext | C = E(P) | 密文 |
---|---|---|---|---|---|
encryption | E( ) | 加密算法 | decryption | D( ) | 解密算法 |
substitution | 置换 | transposition | 位移 | ||
public key | 公钥 | private key | 密钥 |
-
攻击者生成自己的密钥对,攻击者冒充 B 告诉 A 自己的新公钥,此后攻击者就可以用自己的私钥解密了(电子签名解决)
-
对称密码学Symmetric Key Ciphers与非对称密码学Asymmetric Key Ciphers
-
对称密码学主要是置换和位移,非对称密码学主要是一对公钥和密钥,公钥公开用来加密,密钥保密用来解密。
- 对称密码学快且便宜,缺点是密钥分配问题,非对称密码学解决密钥分配问题,但贵且慢
- 在生产生活中使用公钥密码学来进行密钥交换,使用对称密码学来进行加密解密
-
两个误解:
- 公钥加密更安全x。两者都真正依赖于密钥的长度和解密的计算量,不能比。
- 公钥加密使常规加密过时x。实际中因为公钥加密开销较大,因此更多的用于密钥管理和数字签名而非直接的加密解密。
-
Symmetric Key Ciphers 对称密钥加密算法(共享/保密密钥加密算法)
-
block cipher 块加密:将明文划分为 n 个块,每块单独加密,几块之间互相无关系,加密结果是关于n输入bits和k密钥bits的函数。
-
Feistal Cipher Structure:使用块加密
- Diffusion 扩散:使密文的统计特征与明文间的关系尽量复杂
- Confusion 扰乱:使密文的统计特征与密钥间的关系尽量复杂
- 扩散:迭代交换左右两半;扰乱:更大的block、密钥、轮数、生成算法复杂度、round function复杂度
-
DES 算法
- 用 64bit 加密,用 56bit 的密钥
- 特点
- strong avalanche effect 雪崩效应,输出受输入的影响巨大
- 只能用暴力破解攻击
- 在互联网时代56bit的密钥不够安全
- Triple DES
- 加密K1,解密K2,加密K3
- C = E[D[E[P]]]
- 三次后key=56*3=168bit size
- 让 K1=K2 或 K2=K3 ,等价于 DES 算法
-
AES 算法
- 块大小 128bits,密钥长度 128/192/256bits
- 免疫所有已知攻击immune to all known attacks
- 在所有平台上都计算快
- 设计简单
-
ECB
攻击者可以通过猜测对应的C和P来搭建codebook
-
CBC
由于基于内存的链接,相同的输入明文Pi=Pk不会导致相同的输出代码 - ECB 与 CBC: - ECB 对于同样的明文块会加密成同样的密文,因此不能很好的隐藏数据模式 - CBC 上一个块的结果会影响下一个快 - stream cipher 流加密 - 用随机 bit 序列和 P 异或得到 C - 密钥分配问题 - 根据科托夫原则,密钥十分重要 - 对称密码学要求密钥共享 - 共享方法: - A选一个,物理传送给B - 第三方选择后物理传送给 A 和 B - A和B提前商量好 - A和B有加密连接到C,C传给AB加密连接 - 通常的解决方式 KDC - 对称密码学存在的问题:密钥分配问题
-
公钥密码学/非对称密码学
-
公钥密码学基于数学函数
-
有两个独立密钥,因而叫非对称密码学
-
允许双方在交换信息时不共享任何密钥,解决了密钥分配问题
-
公钥密码学保证秘密通信,解决了数字签名问题
-
秘密通信:B 用 A 的公钥加密,发送给A,A 用自己的密钥解密;B 用自己的密钥加密,发送给A, A 用 B 的公钥验证
-
公钥密码学的关键是寻找一个单向函数:容易计算结果但难以反向计算
-
公钥密码学
- DH 算法:原根和离散对数
-
g 是 p 的原根, a 是A 的离散对数(以g为底p为模)
-
计算大整数的整数次幂求模是很容易的,但反向求出离散对数是十分难的
-
a,g,p的选择:
- p 小则很容易被爆破
- 一般用三百位的 p,一百位的 a 和 b
- g 一般 2,3,5 都可以
-
DH 算法没有认证环节,很容易受到中间人攻击
-
DH 公钥密钥
-
RSA算法:large primes multiplication
-
单向函数:大质数乘法非常容易,但大和书的质因子分解很难
-
数学理论依据:
- fai(P):1~p-1范围内能整除p的数的个数。
- 如果p是质数,fai(p)=p-1
- 如果p和q互质,那么fai(pq) = fai(p)*fai(q)
-
如果p和q都是质数,那么fai(pq) = (p-1)(q-1)
-
费马小定理:如果p是质数,对任意a,a^p≡a(mod p),a^(p-1)≡1(mod p), a^fai(p)≡1(mod p)
-
密钥对生成和解密加密的过程
- B 生成密钥对,把公钥发送给 A
- 找两个一百位以上的大质数p,q相乘得大合数n
-
找两个数 e,d 满足
- e与d互质,并且小于(p-1)(q-1)
- e*d 模 (p-1)(q-1) 余1
-
发送(e,n)作为公钥,保留d作为密钥
-
A加密明文m变成c,m必须小于n,传送给 B
- 找到 B 的公钥(e,n),计算c=m^e mod n
-
把c发送给 B
-
B 收到c,解密
- 使用私钥计算 m=c^d mod n
-
principle
- requirements:
- n = pq, fai(n) = (p-1)(q-1)
-
ed ≡ 1 (mod (p-1)(q-1))
-
encryption
-
c = m^e mod n
-
decryption
- m = c^d mod n
-
examples
-
算法安全性
- 攻击场景
- 攻击者可以得到 c, e, n,要获得 m 的方式:
- 得到 B 的私钥 d
- m 是 1 到 n 的数字,爆破
- 尝试从 e,n中计算出 d
- 攻击者生成自己的 密钥对
- 冒充B 告诉 A 自己的新公钥,此后攻击者就可以用自己的私钥解密了。
-
怎么克制
- 在 A 给 B 发密文前核对 B 的公钥
- A 要确认拿到的时候B 的公钥
- 除了B 没人能给 A 发验证
- 消息完整性问题
-
A 和 B 必须避免 B 的公钥被攻击者伪造,因此我们使用数字签名。
-
密码学可以进行两者之间的 秘密通信,但加密解密不能防止伪造欺骗(deceiving),无法做身份认证
-
digital signature 数字签名
-
数字签名系统的要求:
- 可以与签名文档绑定
- 接收者可以验证签名,其他人无法伪造签名
- 签名者不可否认签名
- 签名必须有第三方确认以解决争端
- 作者、时间戳都是签名的内容
-
数字签名的算法 workflow
- 公钥密码学可以支持数字签名
- A 用私钥签名文档,发送给 B, B 用 A 的公钥验证签名
- 公钥密码学签名的问题:文档很长的时候签名也会特别长
-
单向哈希函数
- 不直接签名文档,先计算文档的哈希值,任何签名哈希值
- 单项哈希算法使一个文档hash成大约 100 位的输出
- Input:m, Output: H(m) (size L)
- MD5: L = 128bits
-
SHA-1: L = 160bits
-
要求:计算简单、难以逆向计算、很暗发生collision
- MD5 Algorithm
-
Padding
- MD5 处理长度为512bits的段,因此要将输入的字符串扩展到16个32位
- pad的操作方式:
- pad a bit “1”
- pad “0” 直到离512位填充满还差64bit
- 将原始字符串的长度填充到最后64位
-
Hashing
- 初始化4个128位标准幻数(固定值
- 每一组512位数据作为M输入到程序中用来更新四个标准幻数,指导结束(递归
- 最终结果为四个更新过的标准幻数
-
对 MD5 的攻击
-
原象Preimage:最难的攻击
- 给定哈希值,找到源文件
-
第二原象second-Preimage
- 给定文件,找出另一个与源文件哈希值相同的文件
-
碰撞collision
- 寻找两个哈希值相同的文件
-
大文件的签名过程
- 源文件通过单项哈希函数得到哈希值
- 哈希值通过 A 的私钥加密
- 哈希值和明文文件传送给 B
- B 用 A 的公钥解密签名得到哈希值 1
- B 用同样的哈希函数算出传来的明文文件的哈希值2
- 对比哈希值 1 和 2 是否相同
-
MAC: Message Authentication Code:用于检测对消息的纂改
-
HMAC:基于哈希的消息认证码
- 定义
-
当使用不同哈希函数的时候就可以construct不同的 HMAC 算法
-
HMAC 比单项哈希更不容易出现collision,HMAC-MD5 和 HMAC-SHA1足够安全
-
CBC-MAC:cipher block chaining MAC
- 算法描述
-
MAC 与 Digital Signature的区别
- MAC
- 双方要共享一个秘密 MAC 算法的密钥
- 所有能验证的人也可以生成 MAC,不提供“undeniable”(不可否认)服务
- 数字签名
- 收发双方不需要共享任何秘密信息
- 可以被有公钥的任何接收者确认
- 提供不可否认服务
- 不是总用数字签名?
- MAC快
- 不可否认服务不是总必须的
-
PGP
-
多平台兼容
- 基于密码安全算法
-
被广泛使用在数字签名、完整性校验、信息加密、数据压缩、邮件格式兼容
-
Authentication 认证: who are you
-
怎么认证
-
mainly discuss:
- 认证技术:password and biometric authentication密码和生物特征认证
- 认证协议:Challenge-Response Authentication and KERBEROS质询响应身份认证和KERBEROS
-
password-based authentication 基于密码的认证
- 特点
- 系统保存一个用户和用户密码的对应文件
- 当密码从用户传递到系统的时候容易被窃听
- 用户和密码的文件很难保持secret
-
简易好记忆的密码很容易被猜到
-
早期的 unix 密码
-
使用 DES 作为哈希函数,但是存储在一个所有用户都可以读的文件里,有很大隐患
-
dictionary attack 字典攻击
- 可行性:很多密码都来自于一个小字典 Password file/etc/passwd is world-readable
-
算出字典里每一个哈希值,然后对照密码文件里有没有这个哈希值
-
Upgrading Phase1:Salting加盐
- 向用户密码添加随机的盐,再做哈希存储起来
- 没加盐的时候,一轮字典就能搞定所有密码条目
-
加盐后,一轮字典只能搞定一个密码条目,攻击者必须对一个密码条目尝试全部的盐(仍可以进行字典攻击!)
-
Upgrading Phase2: shadow password隐密码
- 哈希密码不存储在之前的文件里,在etc/shadow 文件里,只有 system administrator(root) 用户可以访问
-
添加了密码的有效日期
-
保护密码的方式
- 采用数字+字符,使用随机密码
- 密码安全性检查
- 防止特洛伊,使用安全登录工具
- 不同网站上使用不同的站点,可以同类网站使用相同的密码
- 不要相信任何第三方的记住密码软件
-
不要再公共场所和不可信的网路环境下登录重要账号
-
其他改进方式
- 加入生物识别,敲击键盘的力度等
- 图形密码,增加可记忆的密码长度
-
生物认证
- 物理特征:
-
手写识别、指纹认证、面部识别、DNA
-
不会被偷窃、丢失或遗忘
- 缺点
-
设备花费高、对比算法的安全性、政策问题、伪造问题
-
错位率
- False accept rate:接受了未授权用户
- False reject rate:拒绝了授权用户
-
增加接受阈值会增加错误接受率并降低错误拒绝率
- 如果错误接受率和错误拒绝率相等,叫做等错误率equal error rate
- 不同情况下对两者的概率有不同要求
-
生物信息的风险
- 信息记录可能不符合要求
- 可以通过使用留存的记录进行攻击,比如别处搞来的旧指纹
-
网络认证 network authentication
-
challenge response authentication
-
challenge code:Ra number R will be used once in a lifetime
-
KERBERROS
-
在分布式的情况下,服务器限制授权用户的访问,区分每种用户需要的服务
-
V4
- 概念
C client AS Authentication Server(stores user’s password) TGS Ticket Granting Server V Application Server IDc User's Identifirer on C IDv Identifier of V Pc Password on C ADc Network Address of C Kv Shared key between AS and V -
the simplest
- problem
- 用户需要不停地输入password
- 一个服务器在不同的时候需要不同的新的ticket
- 要求一个新的服务器就需要新的ticket
- 密码用明文传输,容易被偷
- 一旦ticket被偷,就可以重放攻击
-
improved
-
添加了 TGS:ticket granting server(授权)
- improvement
- 不需要用明文传输密码
- 减少密码重新输入的次数
- 通过设置寿命来减少充放攻击的威胁
-
problem
- 寿命设置:太短会增加密码重新输入的次数;太长会增加重放攻击的危险
-
Final
-
Analysis
-
ticket:AS的认证结果和会话key可安全传递,ticket重复使用降低成本
- TGS:减少password的使用频率,减轻AS的负担,提高效率
-
Timestamp:防止重放攻击
-
weakness:
-
时间依赖:时间同步困难,且攻击者可以误导系统时间
- 猜测攻击:容易因弱口令受到攻击,不提供对密码进一步保护
- 密钥不能存储在typical computer system
-
-
authorization 授权
-
授权 = 控制访问 access control
-
授权:
- 认证提供基本的授权
- 认证提供基本的校验用户身份的功能
- 授权再更深的控制中被需要
-
授权的三要素
- subject主体:可以访问客户的实体,必须用户和进程等
- object对象:可以被访问的东西,比如文件、程序、数据
- privilege权限:主体可以访问客体的方法,包括读写删除运行
-
安全访问控制
- 主要功能:授权authorization,撤销revoke,检查checkr
- 两个方面:制定政策make policy和执行政策execute policy
-
Secure Access Control Model
-
DAC: Discretionary Access Control 自主访问控制
-
特点
- 根据主体的身份和访问权限做出决定
- 自主选择意味着具有某种特权的主题可以自动将其访问权的子集授予其他主体
- 缺陷:访问允许可能在信息传输中发生改变
- 访问控制矩阵
- 访问控制表:每个对象都添加了一个详细列表以访问其主体 access control list
- 能力表:每个主体添加一个详细列表以访问其对象 capability list
-
example
- Unix OS
- 用户三类:User(u), Group(g), Other(o)
- 许可三类:Read(r), Write(w), Execute(x)
- 使用9bits来表示一个文件的访问控制表:
- 1-3 bit:user's permission
- 4-6 bit: group member's perimission
- 7-9 bit: other's permission
-
MAC: Mandatory Access Control 强制访问控制
-
强制访问控制了秘级
-
Bell-LaPadula Model:ensure confidentidity(机密性)
- no read up: 只能读取同级或低级的对象
- no write down:只能写高级或同级的对象
-
Trojan horse 木马
- B 不能读取 G 文件,A 可以读写 F 且写 G,但 B 想要盗取 F 文件
- B 在一个 good 程序中植入Trojan horse
- A 运行 good 程序,A 在读 F 的时候将 F 的内容写在 G 中,B 就可以读 F
- 使用 security label,A 不能向 G 中写入,木马会失效
-
convert channel 隐秘通道:使用系统资源进行通信而不会注意到主体的通道
- 资源耗尽型隐通道 resource exhaustion channel
- 如:给与1024mb 的动态分配内存
- 高级progress:bit = 1,申请1024mb;bit = 0,不申请
- 低级progress:申请1024mb,如果申成功bit = 1,否则bit = 0
- 用低级进程申请资源成功与否来判断高层进程是否运行
- 负载感知型隐通道Loading sensing channel
- 高级progress:bit = 1 进入计算循环;bit = 0,睡觉
- 低级progress:不知道就算要求时就执行任务,如果完成迅速则bit = 0,否则 bit = 1
- 低级进程执行一个需要高级进程所需的资源的任务,观察其完成速度确定高级进程的运行情况
- 应对隐通道的方式coping with convert channels
- 在确认隐通道后
- 关闭或降低通道速度
- 检测企图使用隐通道的进程
- 忍受他的存在
- 隐通道无法完全被避免
- 限制资源共享,如让资源共享只发生在相同的安全层级的进程之间
- 限制带宽
-
MAC 的标准——orange book
-
RBAC: Role-based Access Control 基于角色的访问控制
-
DAC 安全性太弱,MAC 太强不够灵活,管理工作量都很大
- RBAC 主要为了减少管理人员工作量
- RBAC 为每一个用户授予一系列不同的角色
- 特性:职能分离、角色分层、角色激活、用户成员资格约束
- 概念:
- 五个基本数据客体:用户users,角色roles,客体objects,操作operations,许可permission
- 核心概念
- 角色
- 一组用户的每个角色都与相关操作相关,用户所属角色有权执行这些操作
- 角色和组的区别
- 组group:一系列用户
- 角色role:一群用户+一群操作许可
- 关系:多对多,用户被赋予特定的角色,角色被赋予特定的许可
- 会话sessions:匹配用户和激活的角色
- hierarchy RBAC model:role hierarchy 角色继承
- constraint RBAC model
- SSD:用户角色分配的约束关系,一个用户不能同时分配两个 SSD 角色
- DSD:不同时间不同权限
- 优势
- 容易授权管理
- 根据工作需要进行促进分类,如通过财务人员的角色区分公司财务部门和非财务部门员工的公司财务许可
- 轻松实现最小权限,即使用户被分配为高级身份也只有在必要时才有权限,以防止事故发生
- 方便实现任务分配
- 易于进行文件分级管理,文件本身分为不同的角色,由用户的不同角色来拥有
- RBAC 可以用来实现DAC 和MAC
- 安全访问控制的原则
- 授权管理
- MAC:基于安全级别,管理员分配级别
- 主体的安全级别由安全系统管理员赋予
- 客体的安全级别由创造他的主题所决定
- DAC:多种授权管理方法
- centralized:集中管理,管理员授权和未经授权的对象访问者
- hierarchical:分级管理,中央管理员将管理职责分配给实际进行集中管理的其他管理员
- ownership:所有权管理,对象的所有者授权和未经授权的对象访问者
- collaborative:协同管理,特殊资源的访问不是单个用户决定的,而是由共享用户的合作授权决定的
- distributed:分布式管理,对象的所有者可以授权其他用户进行管理的权限
- RBAC:提供许多类似于自我管理策略的访问控制。
- 管理权限的授权是 RBAC 的重要特性,在 DAC 和 MAC 中没有
- 缩小用户权限:按照权力分立,将超级用户原有的权力分配给三种特权用户
- 系统管理员:系统维护、用户管理、软件安装
- 安全管理员:安全规则配置、安全策略管理、其他功能
- 审计管理员:检查审计记录、监视系统安全性、其他功能
- 每个特权用户彼此履行职责和约束。
- 基本约束:在一类用户眼中,其他两类用户拥有的权限与普通用户完全相同没有特别的权力
- 安全访问控制的核心原则
- 最小权限minimize rights:即使用户被分配为高级身份,也只有在必要时才有权限,以防事故的发生
- 权力分立(同上三种特权用户)
-
-
IP Security
-
网络结构
- TCP/IP 协议栈去做路由和连接
- BGP 去做路由器发现
- DNS 去做域名解析找 IP
-
TCP/IP 协议栈
- IP:Internet Protocol
- 无连接的,不可靠的
- 需要用数字地址来寻找,经常在路线中跳好几次才能找到
- ICMP:Control Message Protocol
- 对网络操作做出反馈
- UDP:User Datagram Protocol
- IP 提供路由,UDP 按照端口分割流量,只保证最低限度
- TCP:Transmission Control Protocol
- 负责可靠性和流量控制
- Sender:数据分段,序列号附在包上
- Receiver:正确顺序组合包,丢失数据重新发送
- 连接状态在双方保持
- TCP 会重发所有没收到的包支持终端用户的虚拟连接
- TCP 的优势是提供了段的确认接收
- DNS:Domain Name Service
- 将域名映射到数字 IP 地址上
-
三次握手
- 序列号用于跟踪包,确保没有丢包
- ISNs 初始序列号在 TCP 连接建立的时候使用
- 两端必须在彼此的初始 TCP 序列号 ISN 上同步,才能建立连接
- 交换ISNs 初始序列号是为了保证丢失的数据包可以重新发送
-
ack码 = 收到的seq码 + 1 用来确认是否是这两个 host 通信用(最初ack = 0)
-
TCP 常用端口号:21 FTP, 53 DNS, 80 HTTP
-
DNS 服务:
- DNS 根服务器负责最高级域名解析
- 当本地 DNS 挂掉,他会找他的授权服务器去问
- 如果一直挂,会通过级联询问一直到跟服务器
-
security issues of TCP/IP
-
sniffing 窃听
- 许多传输是不加密的
- ftp 和 telnet 明文串密码
-
许多 web 应用使用 http协议,没有加密
-
混杂模式promiscuous mode 网络接口卡可以读取所有数据
-
ARP 欺骗/病毒spoofing/poisoning
- ARP 是无状态的,ARP: IP->MAC, RARP: MAC->IP
- ARP 以以太网解析协议
- (ARP 欺骗的工作原理是由攻击者发送假的 APR 数据包到网络上,尤其是送到网关上。其主要目的是要让送至特定的 IP 地址的流量被错误送到攻击者所取代的地方。)
- 操作系统使用arp缓存来实现arp,一些操作系统只接受第一个响应包
- 伪造一个 ICMP 数据包让受害机器发起 ARP 请求,再发送伪造的ARP 响应
- ARP 欺骗可用来发起:
- intercepted attack拦截
- man-in-the-middle-attack中间人
- denical of service attack拒绝服务
-
IP Spoofing
- 攻击者将一台计算机的 IP 地址修改为其他主机的地址伪装其他机器
-
TCP SYN Flooding
-
攻击者在伪造IP 地址的同时发送大量请求,被攻击的主机需要为每个请求分配资源,一旦资源耗尽,客户端就无法正常连接
-
最经典的 DOS 攻击:发起者不消耗资源,接收方必须为每个请求创建线程;非对称攻击
-
prevent
-
random delete
- 如果 SYN 队列满了,随机删除一个
- 因为正常的连接很快就会结束
- 就算被删除也会重新发起访问,所以不会有很大影响
-
STN cookies:服务器至少从一个客户端收到 2 条消息才进入存储状态(非对称的资源分配Asymmetric)
- 服务器在socket information( IP ,端口和服务器和客户端)存在 cookie中,然后把cookies发回去
- 客户端必须把这个cookie 和第二条消息再发回到服务器做二次请求,然后服务器重新计算cookie校验再发送回客户端,只有校验成功才会连接
-
TCP SYN 预测攻击
-
序列号如果被攻击者预测,那么就能伪造包发送给接收方,按照伪造出来的序列号拼出来满足攻击者目的的包
- TCP SYN 预测攻击是很多攻击的源头:TCP spoofing欺骗, TCP connection hijacking连接劫持xx, TCP reset重置
-
对抗方法
- 选择一个随机的(非0)ISN 去抵抗预测
-
TCP 阻塞控制 Congestion
-
丢包意味着阻塞,TCP协议要求发送方
- 二分速度指导不发生丢包或者速度降至 0
- 如果丢包停止,传输速度将缓慢增加
-
解决方式
- 添加 ack nonces(nonce在密码学中表示使用一次的随机数),在ack 返回时加上 nonce 来证明他不是一个欺骗
-
DNS 欺骗
-
修改 DNS 服务器 或者本地 DNS 服务器,一般是修改dns缓存数据库,重新定向页面请求到错误的 IP地址,导致访问到了错误的服务器
-
基本的域欺骗pharming
-
对抗 DNS 欺骗:DNSSEC
-
欺骗发生的原因:DNS 请求和响应都是未经认证的,导致攻击者可以伪造 DNS 信息
-
DNSSEC
- 所有响应都是认证的
- 既不用于提供加密服务,也不用来面对 DOC 攻击
-
IPSEC
-
IPSEC 支持在 IP 曾的所有网络传输的加密和认证
- IPV6 必须支持 IPSEC, IPV4 是可以选择的
-
三个核心
- 验证头,AH
- 载荷安全性封装,ESP
- 安全关联,SA
-
authentication header 验证头 AH
- 为 IP 包提供数据完整性和认证服务,也可以选择性的提供反重现攻击
- 下一个header的类型+payload长度+保留+IP数据包相关SA的索引+计数器+ICV(完整性验证)
-
Encapsulating Security Payloads 载荷安全性封装 ESP
- 提供安全、保密和验证服务(可选
-
Security Associations 安全关联 SA
- 为单项发送-接收定义了一系列算法和参数用于加密认证(双向通信要创建 2 个 SA)
- 一个 SA 由 3 个常量唯一确定
- SPI security parameter index 安全参数索引
- IP 目标地址
-
安全协议标识,确定是 AH 还是 ESP
-
SA 是一组逻辑安全参数,可以将信息共享给另一个实体
-
IPSEC 的操作模式
-
IPSEC 可以用再 P2P 或者网络隧道传输
- 传输模式
- 传输模式只保护 IP 包内容而不保护 IP 头
- 由于 IP 头未被修改,所有路由过程不会受到影响。传输层和应用层的数据都受到保护
-
一般用在 P2P 传输
-
隧道模式
- 隧道模式会加密整个 IP 包,原始IP 数据包将被隐藏到一个新的IP 数据包中,并且将附加一个新的 IP 标头
- 通常用于保护网络和网络之间的VPN,主机到网络通信以及点对点的通信
-
IPSEC 的优势
-
IPSEC 可以增强和实现防火墙/路由器
- 所有通过边界的数据包都将得到安全性增强
- 受防火墙保护的主机不需要处理安全问题
-
IPSEC 对最终用户是透明的
- 构建在 IPSEC 网络上的应用程序无需做任何特殊的事情
- 自动保证保密性和完整性
-
SSL TLS 概念 secure socket layer 和 transport layer security
-
目标:为 TCP 提供可靠的端到端安全服务,以提供机密性、完整性和身份验证服务
-
SSL 连接 SSL connection
- 连接是提供适当类型服务的传输
- SSL 连接是点对点pointtopoint的关系。连接是临时的,每个连接都与一个会话相关联。
-
SSL 会话 SSL session
- SSL 会话是客户端与服务器之间的关联。会话由握手协议创建。会话定义由一组连接共享的密码安全参数
- 避免昂贵的谈判价格来提供每个连接的安全参数
-
SSL TLS 协议栈
-
SSL&TLS 处在传输层和应用层之间,自身也被分为两层
- handshake layer握手层,定义了三个子协议
- record layer记录层,接收并加密来自应用层的信息,任何发给传输层
-
握手层——SSL中最复杂的部分
-
使服务器和客户端互相验证
-
协商加密算法,MAC 算法和加密密钥
-
在应用程序数据传输之前执行握手协议
-
过程中:
-
建立安全谈判
-
服务器认证和密钥交换
-
客户端认证和密钥交换
-
结束
-
-
记录层
- 过程:
- 碎片化
- 压缩(optimal
- MAC计算
- 加密
- 加入 SSL记录头
-
-
恶意代码Malicious code
-
导致违反网站安全策略的一组指令
-
type
-
Trojan Horse 特洛伊木马
- 同时具有overt公开目的(用户已知)和covert隐私目的(用户未知)的程序叫做木马
- 特洛伊木马可以复制自身 replicate,很难检测
- 例如:
- Thompson's Compiler:
- 修改编译器,是指在用户登录时接受一个a fixed password固定密码,攻击者通过固定密码可以访问所有用户
- 如果想要通过检查编译器源代码防止,可以攻击编译编译器的代码
- 所以再多的源代码级验证都不能保护,拥有源代码能有所帮助,但不能完全保护
- Trojan concealing(隐藏)——rootkit
- Rootkit 是一组特洛伊木马程序的二进制可执行代码,主要特点是隐身
- Virus 病毒
- 将自身插入一个或多个文件并执行某些操作的程序
- 插入阶段insertion phases:将自身插入到一个文件中
- 执行阶段execution phase:perform一些行动(可能是不好的行动)
- 插入阶段必须存在,执行阶段不总是进行
- 只有在未被感染的情况下Lehigh病毒会自己插入根文件中
- types
- Boot sector intectors:将自己插入磁盘引导扇区boot sector的病毒
- executable intectors:将自己插入可执行程序的病毒
- overwritting:替换部分程序
- at the beginning:加在开头
- beginning and end:包住目标程序
- intersperse:集中到程序中
- companions:call with it
- multipartite viruses
- 可以感染引导扇区或可执行程序
- 通常由两部分组成:boot sector infector,exe infector
- TSR virus:terminate and stay resident
- 应用程序结束后再内存中保持活动状态
- stealth virus:隐藏文件感染的病毒
- encrypted virus:除了一个小的deciphering routine解密程序外均被加密的病毒
- 现在通过签名检测病毒很困难,因为大多数病毒都是加密的
- 对抗:从代码的未加密部分选择签名
- 存在的问题:只能确定存在病毒但不能鉴别是哪一种,无法杀毒;攻击者恶意模拟解密,进一步分析解密后的代码
- polyborphic virus多态病毒
- 每次复制都会改变形态
-
Worm 蠕虫
-
三种恶意代码的比较
-
detenses of Mal. code 恶意代码的抵御
-
不存在算法可以检测所有可能的恶意代码,担忧基于签名的防病毒方法
-
Botnets 僵尸网络
-
能够按指令行事的自主程序网络
- 通常是一大组可以远程控制的僵尸系统typically large
- 机器的主任不知道他们已经被控制了
- 通过 IRC 或者 P2P 进行控制和升级Controlled and upgraded via IRC or P2P
-
作为多种攻击的平台
- DDOS
- 垃圾邮件和点击欺诈 spam and click fraud
- 为新的蠕虫做准备
-
propagation 僵尸网络传播
-
每个bot都可以扫描IP 空间以寻找新的受害者
- 自动
- 根据command,prefix前缀
-
主动僵尸网络管理:检测无响应bot和超级bot
-
僵尸网络战争的证据:通过多个IRC 链接的DOS服务器
-
DOS 攻击
-
压倒受害者及其并拒绝为其合法客户提供服务
-
DDOS 攻击
-
建立一个僵尸网络
- 多层架构:使用一些僵尸作为主任来控制其他僵尸
-
命令僵尸对受害者发起协同攻击
-
不需要欺骗:
-
因为没有必要为了保护一台僵尸机器来使用欺骗,比起伪造 IP 地址,获取一台新的僵尸机器可能会快很多
-
即使在发生 SYN 泛滥的情况下,SYN cookies也无济于事:
-
DDOS 引发的 SYN flood 不同于DOS,每台僵尸机都是在正常访问服务器的,不会被 SYN cookie 影响
- 通过来自不同来源的数千台机器的流量抵达受害者
-
-
僵尸网络的检测
-
僵尸机通过IRC 和 DNS 进行检测
- IRC 向僵尸发出命令
- DNS 寻找主人,主人查看僵尸是否已经被列入黑名单
-
IRC/DNS 活动在网络非常明显
- 寻找执行扫描的主机和具有高百分比此类主机的IRC频道
- 寻找提出很多 DNS 查询但很少有关于他自己查询的主机
-
使用加密和 R2R 轻松规避
-
-
SPAM ——发送大量未经请求的电子邮件或短信公告
- 原因:商业利益、制造/发送简单、大量错误配置
- email spoofing:伪造电子邮件头部信息,让收信人认为来源可信
- open relays:SMTP relay 将邮件转发到目的地,open relay未经授权,允许任何人发送邮件
- 垃圾邮件发送者隐藏来源:防止被列入黑名单
-
使用 botnets 发送垃圾邮件可以隐藏真实 IP 和服务器,使黑名单无法有效阻止
-
对抗垃圾邮件:过滤器、发件人验证、challenge authentication