信息安全原理¶
Review¶
Concepts Outline¶
-
Computer Security
-
Cryptography
-
Authorization and Access Control
-
Network Security
Computer Security¶
Basic Knowledge¶
- Kerckhoffs Principle:即使密码系统的任何细节已为人悉知,只要密匙(key,又称密钥或密钥)未泄漏,它也应是安全的。
- 凡是难于改变且长时间使用的东西只能假设对手会知道
- 没有理由认为==加密算法本身具有好的保密性==
- 安全依赖于密钥的保密而不依赖于算法的保密
- Elements of Computer Security (分析的框架)
- Confidentiality: 保密性
- Integrity: 完整性
- Availability: 可用性
- Authenticity: 真实性(不可否认性)
- Concepts of Computer Security
- Asset: 资产
- Threat: 威胁
- Vulnerability: 漏洞
- Risk: 风险
- Ways of Security Attacks
- Interruption
- Interception
- Modification
- Fabrication
- Passive & Active Attack (被动 & 主动 攻击)
- Passive: Interception (截获、窃听)
难以发现,容易阻止
- Active: Other
容易发现,难以防止
Cryptography (1): Classical & Symmetric Cryptography¶
- Fundamentals
- plaintext
- ciphertext
- encryption
- algorithm
- Principle of Classical Cipher & Crack
- Caesar's ,Vigenere Square
- Frequency Analysis, Kasiski Test
- Enigma Principle
- Symmetric Key Cryptography
- Fundamentals
- Fiestel Structure
- DES / 3 DES / AES
Cryptography (2): Asymmetric Key Cryptography¶
-
Fundamentals
-
Difference between Symmetric & Asymmetric
- 公开密钥密码学依赖于数学函数,不依赖替代和置换
- 公开密钥密码学是非对称的,使用两个独立密钥,又称“非对称加密算法”
- 发送端和接收端在不共享密钥的前提下交换大量信息
- Functions
- Encryption
- Signature
- Key Exchange
- The One-Way Functions
- Diffie–Hellman (D-H) Algorithms
- RSA Algorithms
Cryptography (3): Pros & Cons¶
- Symmetric Key:
- Pros: Cheap, Fast
- Cons: Key distribution is a problem
- Public Key:
- Pros: Solve the problem of key distribution
- Cons: Expensive, Slow
- In application:
- Use Public Key Cryptography (e.g. RSA) to distribute keys
- Use Symmetric Key Cryptography (e.g. DES) for encryption and decryption
Cryptography (4): Digital Signature & MAC¶
- Features
- Bind to document
- 接收者可以验证,但任何人不能伪造
- 签署者不可否认
- 第三方可以验证
- 绑定时间、日期等
- One-Way Hash Function
- 对短文本的签署代替对长文本的签署
- Message Authentication Code (MAC: 消息认证码)
- 保证数据完整性
- 数字签名太贵,需要一个更便宜的方式
Authentication and Authorization (1)¶
- 解决
- 你是谁
- 你能干什么
- Implementation
- 有什么
- 知道什么
- 在哪里
- 你是什么 (Personal Characteristics)
- Password
- Storage & Choice & Protection
- Dictionary Attack
- Salt Cipher
Authentication and Authorization (2)¶
- Concepts
- Subject
- Object
- Privilege
- Access Control Model
- DAC
- MAC
- Bell-Lapadula Principle
- Covert Channel
- RBAC
- Role
- Core Principle
- 略
Network Security¶
- Common Attacks
- Sniffing, ARP Spoofing, IP Spoofing
- TCP SYN Flooding (IMPORTANT!!!)
- Attack & WHY & Prevent
- TCP SYN Prediction, TCP Congestion Control
- DNS Spoofing
- IPSEC
- Authentication Header (AH)
- Encapsulating Security Payloads (ESP)
- Security Associations (SA)
- Mode
- Transport Mode: 点到点
- Tunnel Mode: VPN
- TLS / SSL
- SSL Connection
- SSL Session
- SSL / TLS Protocol
- Malicious Code
- Virus
- Worm
- Trojan Horse
- Defenses of Malicious Code
- Botnet
- Form
- Attack
- DDoS
Chapter 0: Course Introduction¶
[[IS.0.1.Course Introduction.pdf]]
-
Absent - 10%
-
Homework - 40%
-
Final - 50%
-
YOU WILL NEVER ACHIEVE A PERFECT SECURE SYSTEM!!!!!
-
Trade off: Cost & Benefit
- Privacy
- Availability
- Dependability
- Speed
- Money
- New Features
- Profitability
-
Perfectly secure system doesn't exist.
-
Hackers hack for Money.
-
Most attacks are from INSIDERS!!
-
Reported hacking events are less than they happened.
Chapter 0: History, Connotations and Concepts¶
[[IS.0.2.Information Security.pdf]]
History and Evolution of Information Security¶
-
Meaning in History: Encryption
-
First Cipher in China: 太公兵法
- 用“符”的长短表示战况
- 阴书:将书信分为三份,由三人持有,在王将之间传递
-
First Cipher in CCP: 豪密
-
Caesar Cipher: Substitution, Key: 偏移量
-
Scytale Cipher (棍子密码): Transposition, Key: 棍子的直径
-
First Evolution: The Kerckhoff's Principle
- "A cryptosystem should be secure even if everything about the system, except the key, is public knowledge." 即使密码系统的任何细节已为人悉知,只要密匙(key,又称密钥或密钥)未泄漏,它也应是安全的。
- 意味着密码学从史前时代进化到经典时代,从经验进化到了科学。
- Second Evolution: Electronic Computer
- 计算机在二战时为了破解 ENIGMA而出现。
- 加速了加密和解密。
- 理论基础(香农 - 信息论)
- “A mathematical theory of communication,” 1948
- “Communication theory of secrecy systems,” 1949
- 现代密码的紧迫性:DES
- Third Evolution: Public Key Ciphers
- 密码学的新方向
- 使交换大量信息同时避免共享密钥成为可能
- 应用最广泛的算法:RSA
- Fourth Evolution: Internet? AI?
Objectives and Properties of Information Security¶
- 安全始终是商业、外交、军事以及其他人类活动的关键。然而,“基于计算机的信息安全”与传统的“基于纸张的信息安全”有所不同。
Concepts of Computer Security, Attack and Anti-Attack¶
- Three Elements
- Confidentiality 保密性
- Can others see your data?
- Integrity 完整性
- Can your data be illegally changed?
- Available 可用性
- Will the resource be accessible?
- (Authenticity 真实性 / Non-Repudiation 不可否认性)
- Concepts of Computer Security
- Assets 资产
- Threat 威胁
- Vulnerability 漏洞
- Risk 风险 (\(Risk= Asset + Threat + Vulnerability\))
- Types of Threats
- By Method:
- Natural
- Physical
- Hard / Software
- Media
- Leak
- Communication
- Personal
- Meant / Unmeant
- Un~
- careless
- ~
- outsider
- insider
- Types of Security Attack
- Interruption 中断
- Interception 窃听
- Modification 修改
- Fabrication 伪造
![[SecurityAttack.png]]
- Passive Attack
- Interception
- Difficult to detect, easy to prevent
- Active~
- Others
- Easy to detect, difficult to prevent
- Against Threats - Goal
- Prevention
- Detection
- Recovery
- Against Threats - Methods
- Policies & Mechanisms
- Security Service
- Authentication
- Access Control
- Data Confidentiality
- Data Integrity
- Non-Repudiation
- Availability
- Against Threats - Issues
- Operational
- Cost - Benefit
- Risk
- Laws & Customs
- Human
- Management
- Insiders
Chapter 1: Concepts and History of Cryptography¶
[[IS.1.1.Fundamentals and History of Cryptography.pdf]]
Fundamentals of Cryptography¶
- Secret Writing
- Cryptography
- Substitution
- Code (Replace Words)
- Cipher (Replace Letters)
- Transposition
- Steganography
- Terms
- plaintext
- ciphertext
- encryption
- decryption
- key
- \(C = E_K(P)\)
- \(P = D_K(C)\)
History of Cryptography¶
Classic Ciphers¶
-
Stick Cipher
-
Ancient Greek Cipher
-
Caesar Cipher
-
Queen Mary's Cipher
- letters -> symbols
- Decipher Method: Frequency Analysis
不一定在任何情况有用:需要文本长度较长
- Against Frequency Analysis: Vigenère
![[VigenereSquare.png]]
密钥为一个比明文短很多的字符串,如“CATCATCATCAT”,类似 Caesar,但每个字母的偏移量不同,C 偏移 2,A 偏移 0,T 偏移 19,用密钥对全文加密。
- Cracking Vigenère:
1. 确定密钥长度:Using Kasiski Test
2. 根据密钥长度将密文分块,每块进行 Frequency Analysis
Machine Ciphers¶
- Rotor Machine, ENIGMA
![[ENIGMA.png]]
- 键盘->接线板->棘轮1->棘轮2->棘轮3->反射器
->棘轮3->棘轮2->棘轮1->接线板->灯盘(亮起)
-
三个棘轮:\(26\times 26 \times 26 = 17576\)
-
棘轮之间的序列数:\(A_3^3=6\)
-
接线板的排列:视情况而定,德军交换了6对字母 \(C_{26}^{12} \times \frac{12!}{6!2^6}\)
-
Algorithm
- 机器的物理结构
- 三个棘轮
- 不可变,难改
- Key
- 棘轮的初始设置,包括棘轮序列和每个棘轮的初始位置
- 接线板连法
- 可变,易改
- Crack Enigma
Computer Ciphers¶
-
算法丰富性增加
-
加密和解密的速度大幅增加
-
对称密钥加密算法
-
非对称密钥加密算法
Chapter 1: Symmetric / Asymmetric Key Cryptography¶
Symmetric Key Cryptography¶
-
shared / secret key cryptography
-
加密和解密使用相同密钥
-
密钥唯一确定
-
发送和接收双方共享密钥
Model of Secret Key Cryptography¶
-
Plaintext->Encryption (Using Key) ->Ciphertext
-
Ciphertext->Decryption(Using Key)->Plaintext
-
Block Cipher 分块加密
将明文分为若干个块,逐个加密,块之间没有依赖
Feistel Cipher¶
- Causing Avalanche Effect (雪崩效应)
- Diffusion 扩散——使得密文的统计特性与明文之间的关系尽量复杂
- Confusion 扰乱——使得密文的统计特性与加密密钥之间的关系尽量复杂
![[FeistelCipher.png]]
-
Diffusion: 迭代地交换明文的左右两半
-
Confusion: Round Function \(F\)
DES Algorithm¶
-
Data Encryption Standard -> DES
-
用长度为 56 bits 的密钥对大小为 64 bits 的块进行加密
-
强烈的雪崩效应
-
只能用暴力法破解
-
56位的密钥对于信息时代来说已经太短
![[RoundsInDES.png]]![[SingleRoundInDES.png]]
- Triple DES: 密钥 \(K_1, K_2, K_3\) 加密,解密,再加密
$$
C=E_{K_3}[D_{K_2}[E_{K_1}[P]]]
$$
Key size: \(56\times 3 = 168\)
- Other Symmetric Key Cryptography
- IDEA
- Blowfish Algorithm
- \(RC_5\)
New International Encryption Standard——AES¶
- Advanced Encryption Standard
- Block Size: 128 bits
- Key Size: 128 / 192 / 256 bits
- 对目前已知所有攻击免疫
- 每个阶段运行得很快
- 设计简单
- Mode of Operation
- Electronic Codebook (ECB)
- Cipher-Block Chaining (CBC)
- Propagating ~ (PCBC)
- Output Feedback (OFB)
- Counter (CTR)
ECB¶
- For block ciphers of a long digital sequence
![[ECB.png]]
-
通过构建 codebook 攻击
-
重放
-
对于图像的加密并不好(像素之间的差异仍然能显著表示图像特征)
CBC¶
![[CBC.png]]
-
抑制重放攻击和 codebook 构建
-
IV: Initialization Vector - Used only once
Stream Cipher¶
![[StreamCipher.png]]![[StreamCipherStream.png]]
-
密钥分配问题
-
保证不了保密性
Public Key Cryptography¶
- 要求
- 不希望其他人收到自己发送的消息
- 防止接收者抄袭
Model of Public Key Cryptosystem¶
For Secrecy¶
![[PubKeyModel.png]]
-
发送者用对方公钥加密,接收者用自己私钥解密
-
确保信息不会被他人得知(私钥只有自己持有)
For Authentication¶
![[PubKeyForAuthen.png]]
-
发送者用自己私钥加密,接收者用发送者的公钥解密
-
有认证发送者身份的作用
Principle¶
-
生成密钥对的过程应当简单
-
发送者加密的过程应当简单
-
接收者解密的过程应当简单
-
难以通过公钥推出私钥
-
难以通过公钥和密文推出明文
-
明文和密文可交换(加密和解密是对称的)
Diffie-Hellman Algorithm¶
- 计算一个整数的幂对一个质数的余数很简单,但反过来,即计算离散对数非常难
![[DHAllgorithm.png]]
-
一般选择 300 位的 p 和 100 位的 a, b,以增大爆破的难度
-
g 不必很大,一般选择 2, 3, 5
-
由于缺少认证环节,容易遭受中间人攻击
![[DHManIntheMiddel.png]]
RSA Algorithm¶
- 单向函数:大质数乘法(做乘法容易,大合数的质因数分解很难)
Process¶
-
选择两个素数 \(p\) 和 \(q\)(至少 100 位),将 \(p\) 和 \(q\) 相乘:\(n = p \times q\)
-
找出两个数字 \(e\) 和 \(d\),使得: \(e\) 和 \((p-1)(q-1)\) 互质,而且\(1 < e\), \(d < (p-1)(q-1)\),且 \(e \times d \equiv 1 (mod(p-1)(q-1))\)
-
\((e,n)\) 作为公钥,\(d\) 作为私钥
e.g.
Alice 将明文 \(m\)(\(m\) 必须小于 \(n\))加密到 \(c\) 并发送给 Bob:
首先,找到 Bob 的公钥 \((e, n)\),并计算:\(c=m^e\ mod\ n\)
向 Bob 发送密码 \(c\)
Bob 接收密码 \(c\),解密并获取明文 \(m\)
使用私钥 \(d\) 计算:\(m=c^d\ mod\ n\)
- 安全性
- 私钥 d 保护得很好
- 难以爆破
- 难以从公钥算出私钥
- 一种可行的攻击
- 冒充接收者给发送者发新的公钥
- Symmetric Key:
- Pros: Cheap, Fast
- Cons: Key distribution is a problem
- Public Key:
- Pros: Solve the problem of key distribution
- Cons: Expensive, Slow
- In application:
- Use Public Key Cryptography (e.g. RSA) to distribute keys
- Use Symmetric Key Cryptography (e.g. DES) for encryption and decryption
Chapter 2: Digital Signature¶
[[IS.2.1.Digital Signature, One-Way Hash & MAC.pdf]]
-
密码学:信息的保密(不让其他人看到)
-
加密解密不能避免欺诈(Encryption / decryption can't prevent deception)
-
对称密钥密码学中,密钥是对称的,无法进行身份认证
-
公开密钥密码学最重要的点是:秘密(私钥)是不共享的
Example: 网站向用户证明网站的身份——给出用户指定的关键词(网上银行)
- 日常生活中如何解决身份认证问题?
- 做一些需要监管者或组织许可的事情——如何证明已经获得了许可?
- 信任链
—— 签名(Signature)
数字签名的特征和要求:¶
-
签名是可信的,可认为签名者认真阅读了并签署
-
不可伪造
-
不能复用
-
不能更改所签署的内容
-
不能否认签名
-
签名和时间绑定
-
法律上可被验证
-
不能在数字文档上签名
-
与身份,文档,日期和时间等绑定
-
第三方可以确认签名
-
要求:
- 与被签署的消息绑定
- 与签署者挂钩,不可伪造(unique information)
- 不可否认
- 快速生成、确认
- 计算上不可伪装
- 能够被存储(远小于原始文档)
-
Digital Signature Algorithm
-
数字签名标准:DSS (Digital Signature Standard)
-
RSA (互联网的基础)
![[Digital Signature Workflow.png]]
- Signature (上图):
- Sender: using his private key (解密).
- Receiver: verifies using the sender's public key (加密).
- Encryption (另一个步骤):
- Sender: encrypts using the receiver's public key.
- Receiver: decrypts using his private key.
- 用什么?——能拿到什么(自己的私钥和对方的公钥)
RSA Signature¶
- 问题:
- 文档长度受限(块加密下签名次数增加,速度变慢)
- 解决:单项哈希函数(One-Way Hash Algorithm)
Chapter 2: One-Way Hash Algorithm¶
- 不签署文档,得到文档的哈希值,对哈希值进行签署
原先将签名和文档绑定,现在将签名和哈希值绑定,然后将哈希值和文档绑定。
-
哈希:让查找变快
-
难点:让所有文档的哈希值都不一样(理论上做不到 - 抽屉原理)
-
One-Way Hash Algorithm:
将输入文档哈希到一个大约 100 bit 的输出值
-
Input: \(m\) -- binary string of arbitrary length
-
Output: \(H(m)\) -- binary string of length \(L\)
-
MD5: \(L=128\)
-
SHA-1: \(L=160\)
要求:¶
-
易于计算
-
难以反算
-
难以碰撞(两个文档的哈希值相同)
MD5 Algorithm¶
- Padding
将输入字符串填充为 512 bits 的倍数。
先填一个 1,再补 0 到 512 - 64 位,再将文档长度补在最后 64 位。
- Hashing
递归处理 128 位的字符串。每次循环过以下过程 16 次:
![[Hashing-MD5.png]]
![[Hashing Functions.png]]
- ![[Addition.png]]:Addition(\(mod\ 2^{32}\))
- ![[Shiftleft_s.png]]: shift left \(s\) bit
- \(M_i\): 512 位的 32 位子串(顺序进入)
- \(K_i\): 每一轮变化的常数
Security¶
- Preimage Attack (给哈希值找原文) (更难)
- Preimage Resistance
- Second-Preimage Resistance (已知一个可操作的文档和哈希值,找哈希值相同的文档)
-
Collision Attack (找有相同哈希值的文档)
-
Long Plain Text Signature
![[LongPlaintext Signaure.png]]
Chapter 2: MAC (Message Authentication Code)¶
- 又称加密哈希函数(做消息完整性的认证)
![[MAC.png]]
- 仍然需要共享密钥
Hash-Based MAC (HMAC)¶
-
\(H(\cdot)\): One-Way Hashing Function
-
\(K\): Key (Pad "0" 直到 Key 长度与 H 输入长度相同)
-
\(m\): Message
-
\(||\): Connect
-
\(\oplus\): Xor
-
\(opad\): outer padding (A certain constant, e.g. 0x5c5c5c5c5c5c....)
-
\(ipad\): inner padding (A certain constant, e.g. 0x363636363636...)
$$
HMAC(K,m) = H((K \oplus opad) || H((K \oplus ipad) || m))
$$
CBC-MAC¶
-
将消息 \(m\) 分为 \(x\) 份,每份的长度与 \(E(\cdot)\) 的输入长度相同
-
\(k\): Key
![[CBC-MAC.png]]
MAC & Digital Signature Diff¶
-
MAC 有共享的 Key
-
数字签名没有
-
MAC 保证文档没被修改
-
数字签名保证与签署人和文档绑定
![[MACwtihCryptography.png]]
Chapter 2: PGP ( Pretty Good Privacy)¶
![[PGP.png]]
Chapter 2: Authentication (身份认证)¶
[[IS.2.2.Authentication and Access Control.pdf]]
Concept¶
- 如何证明身份:
- 有什么(证件、手机、钥匙……)——容易丢
- 知道什么(密码、生日、ID……)——丢不掉但容易忘
- 在哪 (IP Address)
- 是什么
- 生物特征
- 行为特征
基于密码的身份认证¶
- 使用者:
- 数据库存储用户的密码
- 问题:
- 传输过程中能否被看到
- 存储是否安全
- 是否容易猜出
- 系统如何检查密码
- 影响密码系统安全性的因素:
- 输密码的频率的限制
- 密码存储方式(明文 / 哈希)(考虑 Insider 的攻击)
- 在网络上传输的内容(明文 / 哈希)
- 更改密码的过程
- 密码的生命周期(需要修改密码的频率)
- Other:
- 密码在屏幕上显示 "*"
- 定义密码的长度和格式
- 一段时间后重新输入密码
实现——早期¶
- 存 hash,比较hash后的内容
- Early Unix Password
- 用 DES 作单向哈希函数
- 加密 Null,截取 Password 前八位
- 运行 DES 25 次
- 问题
- 实际上人们往往选用特定单词,可用的密码数量受限
- 密码存储在文件 /etc/password 中,能够直接读取
传统字典攻击¶
- 密码存在 /etc/password ,能够读取
- 字典攻击:可以事先将每个单词运行 25 次 DES,与密码进行比对
- 脱库后破解所用时间很短
解决 1: Salting¶
在hash好的内容前加入salt(当密码事先设置好时,随机从密码中选择),将salt+password一起hash后拼接在 salt 之后进行存储。
![[salt.png]]
针对字典攻击,攻击者需要尝试的密码组合大大增加(同种密码,不同salt)
解决 2:Shadow Password¶
不再放在全局可读的文件,而是放在管理员可读的文件 etc/shadow。
加入密码的过期时间
Common Mistakes¶
-
不改默认密码
-
使用“password”
-
用人名
-
所有场合用一个密码
-
使用别人可能知道的
-
使用键盘拷贝粘贴
-
把密码写在物理的地方(贴纸、Excel……)
-
轻易将密码给自称管理者的系统
Biometric / Behaviometric Authentication¶
-
优点:不会丢、忘
-
缺点:比对、维持的代价,精度,隐私
Error Rate of Biometric Authentication¶
-
False Accept Rate
-
True Reject Rate
Other Biometrics¶
-
Face Recognition
-
Fingerprints
-
Iris Scanning
-
Hand Geometry
-
Voice, Ear Shape, Vein(静脉) Pattern, Face Temperature
-
Brain & Heart Signals
Biometric Considerations¶
- 将某种指标作为生物特征时需要考虑的因素
- Universality (大家都有)
- Uniqueness
- Permanence
- Collectability
- Performance (精度、速度等)
- Acceptability (公众接受程度)
- Circumvention (规避:混淆认证系统的难度)
Passwords Disappear Soon ?¶
-
密码仍然重要,短时间内难以被替代
-
容易记,容易部署
Network Authentication¶
-
在网上如何证明自己是个人而不是其他?
-
我是谁
-
IP + 我是谁 (能被伪造)
-
IP + 密码 + 我是谁
-
加密密码 + IP + 我是谁
-
加密密码无法解决重放攻击(Replay)
Challenge Response Authentication¶
为了防止重放攻击:
-
接收者返回一个随机数,发送者将该数加密(两人都知道加密方式)后发给接收者,由接收者确认
-
公开密钥密码学:发送者用自己的私钥做签名或者对方的公钥做加密,由接收者确认
-
另外可以加时间戳
KERBEROS¶
-
希望在一处完成安全管理,并能够在多处使用(在一处注册用户,能够在其他很多服务器上登录)
-
Goal:
- Safety
- Reliability
- Transparency
- Scalability
KERBEROS v4 —— 最简单的认证协议¶
-
类比为一个卖票的协议,票和用户绑定
-
Concepts
- C: client
- AS: Authentication Server
- TGS: Ticket Granting Server
- V: Application Server
- IDc: User's Identifier on C
- IDv: Identifier on V
- Pc: Password on C
- ADc: Network Address of C
- Kv: Shared Key between AS and V
- Procedure
1. C -> AS : IDc || Pc || IDv (我是谁+我的密码+我要访问谁)
2. AS -> C : Ticket ( Ticket = E(Kv, [IDc || ADc || IDv]) ) (用与 V 共享的密钥加密)
3. C -> V : IDc || Ticket (V 确认加密结果,判断 Ticket 真伪)
- 问题:
- 每次都需要买票
- 需要 C 明文发出密码
- 偷到票后可以伪装 C
Improved Protocol:¶
![[Improved KERBEROS.png]]
-
无需传输明文
-
减少密码输入的频率
-
通过设置生命周期减少重放的威胁
-
问题:
- 生命周期设置
- 票使用者如何证明是票的提供者
- V 如何向用户自证
Final:¶
![[Final KERNEROS.png]]
Analysis¶
-
需要一个安全的时间服务器(实际上办到的难度很大)
-
需要可信任的第三方
-
票
-
票授权服务器
-
时间戳
Authorization (Access Control 访问控制)¶
-
You are permitted to do what you are trying to do. (Do deeper control)
-
Three Elements
- Subject
- Object
- Privilege
- Secure Access Control - Functions
- Authorization
- Revoke
- Checker
- Secure Access Control - Stages
- Make Policy
- Execute Policy
- Secure Access Control - Model
- DAC (Discretionary Access Control,自主访问控制)
- MAC (Mandatory Access Control,强制访问控制)
- RBAC (Role-Based Access Control,基于角色的访问控制)
DAC¶
-
根据主体的特征和授权访问做决策
-
Discretionary: 主体可以将自己权限的一部分授权给他人
-
Access Control Matrix:
- Access Control List:每个对象都与允许访问它的主体列表相关(Object: Subject -> Subject -> ...)
- Capability List:每个主体都与其可以访问的对象列表相关(Subject: Object -> Object -> ...)
Unix OS of DAC¶
-
将用户分为三类:文件主人,和主人同类的人,其他用户
-
三种许可:Read(Read, r), Write(Write, w), Execute(Execute, x)
-
用 9 位储存权限表:
- 1-3:owner's permission
- 4-6:group members' permission
- 7-9:others' permission
- RWX:111(7)
- RX:101(5)
- R:100(4)
- 授权基于文件所有者的意志
MAC¶
-
军事相关领域
-
所有主体和客体都被标记为不同的安全级别
- 绝密 (TS)
- 秘密(S)
- 机密(C)
- 无密级(U)
- Bell-LaPadula Model: Ensure Confidentiality
- Simple Security Property (No Read Up):主体只能对等级小于等于他的客体进行读
- * Property (No Write Down):主体只能对等于大于等于他的客体进行写
- 不惜破坏文件的完整性,也要保证文件的保密性
- Biba Model: Ensure Integrity
- No Read Down
- No Write Up
- 保证完整性
Trojan Horse & MAC¶
- DAC:
- 可以通过木马将高安全级别的文件偷到低安全级别的文件中,然后读取
![[DAC Horse.png]]
- MAC:
- 通过 No Write Down 保证安全性
![[MAC Horse.png]]
- 访问控制“模型”不是“策略”
Covert Channel(隐通道) & MAC¶
-
在不被系统设计者预期或允许的路径中,用来在主体之间秘密传递信息
-
绕过了正常的安全策略(如访问控制),从系统中偷偷建立通信链路。
-
能够实现在低安全级别访问高安全级别的数据的效果(不是真实访问到了数据)
Resource Exhaustion Channel¶
-
bit = 1 -> 申请 1GB 内存
-
bit = 0 -> 申请 0 GB 内存
-
低级别:申请 1GB 内存,成功则 bit = 1, 反之 bit = 0
Load Sensing Channel¶
-
bit = 1 -> 循环
-
bit = 0 -> sleep
-
能快速完成则 bit = 0
解决隐通道¶
-
关闭通道
-
检测使用通道的意图
-
容忍
-
无法被消除!
- 限制共享资源
- 限制带宽,如引入噪声等
Standard of MAC¶
- 从高到低:A B C D
RBAC¶
-
DAC 太弱,MAC 太强
-
每个访问权限和每个用户都与角色相关
-
特点
- 责任划分
- 角色层级
- 角色激活
- 用户 / 角色成员限制
- Basic Data Elements:
- users
- roles
- objects
- operations
- permissions
-
ROLES:既和用户关联,又和权限相关
-
GROUP:只和用户关联
-
用户和角色多对多
-
Sessions: 用户和被激活角色之间的映射
- 能做到权限在同一用户的分离
Advantages¶
-
Easy for Authorization Management
-
略
Principle of Security Access Control¶
略
Chapter 3: TCP / IP Protocol (协议) Stack¶
[[IS.3.1.IP Security.pdf]]
Internet Structure¶
![[Internet Structure.png]]
-
use TCP / IP protocol stack to route (路由) and connect
-
use BGP (Border Gateway Protocol) for router discovery (路由器发现)
-
use DNS (Domain Name System) to find the IP address
TCP / IP Protocol Stack¶
![[TCPIPstack.png]]
-
Application layer —— HTTP, SMTP, FTP, TELNET, DNS, …
-
Transport layer—— TCP, UDP
-
Network layer —— IP, ICMP, BGP, OSPF, IGMP
-
Data link layer —— ARP, RARP, Ethernet, HDLC, PPP
-
每一个 hop 数据链入层的链入方式可以不同
Data Format¶
![[DataFormatTCP.png]]
-
每往下一层就打一个该层标签
-
TCP 保证分割的数据的顺序不出错
-
IP 保证数据传入和传输的地址
IP (Internet Protocol)¶
-
Connectionless
-
Using numeric addresses for routing
- several hops
ICMP (Control Message Protocol)¶
- 提供网络操作的反馈
- 超时
- 未达
- 参数问题
- 重定向到更好的网关
- 可达性测试
- 消息传输延迟
- 错误报告、拥塞控制、可达性等。
IP & TCP / UDP¶
-
IP: 最快地发包
-
TCP: 对可靠性和源到目的地的流控制负责
-
滑动窗口 (flow control)(受到乱序包时用窗口进行缓存,直到一个连续子列的包装满窗口)—— 实现 flow control
-
sequencing numbers and acknowledgement(哪个包开始没正常收到,发送重发请求)—— 实现 reliability
-
synchronization——略
在此过程中双方都需要维护状态
![[IPheader.png]]
-
source / destination IP address
-
8-bit Protocol:说明时 TCP / UDP
-
TTL: 包在互联网上的存在时间,防止过多包存在
-
通过以下方式实现可靠性 (reliability) 和流量控制 (flow control):
1. 滑动窗口(流量控制)
2. 序号和确认(可靠性)
3. 同步(建立虚拟电路)
UDP¶
-
多了端口号(port):将到 IP 地址的流量按端口分开
-
没有 TCP 的 acknowledgement, flow control, message continuation(消息延续)
TCP 包结构¶
![[TCPpackageStru.png]]![[TCPheader.png]]
Synchronization / 3-way Handshake¶
![[3-handshake.png]]
-
前两次:A 确认 B 是活着的
-
后一次:B 确认 A 是活着的
DNS¶
-
将域名映射位为数字的 IP 地址
-
多层次的询问,因此不需要在根域名处注册
-
每一个 DNS 服务器都可以进行缓存
-
缓存可能导致安全问题
Chapter 3: TCP / IS Security Issues¶
Sniffing 嗅探攻击¶
-
看到传输的数据内容,攻击保密性
-
许多传输的数据是不加密的
- FTP, Telnet, ....
-
Promiscuous mode network interface card: 可以读取所有数据
-
嗅探工具:
- Tcpdump / libpcap
- Wireshark
ARP Spoofing (ARP 伪装攻击)¶
-
also: ARP Poisoning (ARP 投毒攻击)
-
ARP: IP Address -> MAC
-
OS 通过 ARP Cache 实现 ARP,但缓存的更新策略不同
投毒攻击一定和缓存等有关
-
IP 地址没错,接受该 IP 地址的人变了
-
可以用于:
- 中间人攻击
- 拒绝服务攻击
-
计算机维护一个ARP表:IP 和 MAC的对应关系
-
交换机维护MAC表:MAC 和 光纤接口的对应关系,计算机通过告诉交换机接收者的 MAC 选择数据流向何处
-
过程:(H1,H2,H3 连接到交换机 S1 上,H3 是黑客)
1. 当 H1 发送 ARP 请求去寻找 H2 的 MAC,S1 广播这个 ARP 框架,H3 知道了 H1 的MAC。
2. H2 接受了请求,但由于不知道 H1 的MAC 无法直接回复 H1,所以通过交换机广播找到 H1 的 MAC,则 H3 知道了 H2 的MAC
3. H3 伪装成 H1,并向 H2 发送 ARP 回复,H2 更新 ARP 表
4. H1 ping H2,回复被发送到了 H3
IP Spoofing (IP 伪装攻击)¶
-
所有包都是基于目的 IP 来找到包发送的目标
-
需要回复时需要源 IP 地址(将原来的包的源 IP 和目的 IP 调换)
-
源 IP 被 Spoof 后,回包被引导到了另一个地址
-
垃圾邮件的发件人一定是伪装 IP 地址 ((
Example: IP Smurf
伪装受害者 IP 向网关发送 ping 请求,等同于向局域网所有主机发送 ping 请求,回复流会将受害者主机撑爆
TCP SYN Flooding¶
-
拒绝服务攻击
-
洪水攻击
-
TCP 三次握手
-
第一次握手,Server 会先创建一个线程,然后存储一些数据,做一些准备,发起第二次握手后等待,第三次握手后正常连接
-
Client 不以连接为目的,一直以伪造的 IP 发送请求,让 Server 不断为接收到的请求分配资源,直到内存不足,将其撑爆后就无法接受正常用户
-
攻击者不怎么消耗资源,被攻击者消耗大量资源的不对称性
-
最经典的 DOS 攻击
-
DOS: 利用服务漏洞,利用不对称性
-
DDOS: 利用互联网上的大量僵尸组织,对某一台设备发起攻击,不对称性和DOS相反
Prevent TCP SYN Flooding¶
-
Way 1: Random Delete: 请求队列满后随机删除一个 (大概率会删去攻击连接)
-
Way 2: SYN Cookies: 服务器端默认不做资源分配,除非收到了至少两次
第二次握手回复一个 Cookie(一般是一个哈希函数,客户端伪造不出,仅短时间内可以重用),第三次握手客户端回复 cookie,服务器重新计算并作对比,一致则建立连接。
复用了原有的 TCP 协议,仅仅要求服务器多计算两次哈希值。
TCP SYN Prediction Attack¶
- 在TCP 传输时更改部分序列号,伪装TCP连接
TCP Congestion Control¶
- 君子协议
- 发包时如果发生冲突,所有人速度减半,直到不冲突
- 如果不冲突,慢慢往上加,知道冲突
DNS Spoofing¶
- 污染 DNS Server 的缓存,使得攻击者引导用户访问攻击者引导的网站
Chapter 3: IPSEC: IP Layer Security Mechanisms¶
-
对所有网络包在 IP 层进行安全加密认证、
-
保证安全性和完整性
-
IPSEC 的三个核心组成:
- Authentication Headers (AH,验证头)
- Encapsulating Security Payloads (ESP,载荷安全性封装)
- Security Associations (SA,安全关联)
AH¶
- 为IP数据包提供数据完整性和认证服务,可选提供防重放
![[AH.png]]
-
Next Header(8bit):AH 之后的下一个标头类型。
-
Payload Len(8 位):AH 的长度(32 位减去 2)。
对于 AH 数据长度 = 96 位(3 个字),加上 3 个字固定磁头。有效载荷长度字段将为 4。
-
Reserved (16bit): 备份。
-
Security Parameters Index (32bit):与这些 IP 数据包相关的 SA 索引。
-
Sequence Number (32bit): 单调递增的计数器,以防止重放攻击。
-
Integrity Check Value, ICV: 包含 MAC 或完整性检查值(ICV)。
ESP¶
- 提供安全性、机密性和身份验证服务(可选)
![[ESP.png]]
-
Security Parameters Index, SPI (32bit):与数据包相关的SA索引。
-
Sequence Number(32bit): 单调递增的计数器,以防止重放攻击。
-
Payload data:原始 IP 包。
-
Padding(0-255 bit)/Pad Length(8 bit):有关填充的信息。
-
Next Header(8bit):ESP 之后的下一个 Header 类型描述。
-
Integrity Check Value,ICV:包含完整性检查值 (ICV)。
SA¶
-
定义安全参数和密钥协商
-
将参数信息,算法信息存在安全关联中
-
三个独特参数:
- Security Parameter Index: 与 SA 关联的位字符串。
- IP Destination Address: SA 的目标地址
- Security Protocol Identifier: 指定 AH 或 ESP
- SA 是一组安全参数,支持与另一个实体共享信息。
Model of Operation¶
-
Transport Mode
-
Tunnel Mode
![[IPHeaderStructure.png]]
-
IP header:源 IP,目标 IP等
-
TCP:序列号、端口号等
-
传输模式:将TCP和Data加上消息认证码(AH)防止其被篡改,但无法保证 IP header 中的内容
-
隧道模式:将原包所有内容加上 AH ,形成一个新的 IP header (快递外面裹了一层快递)
-
IP v6:
- Transport mode: 加入 ESP header,仍然只保护IP header 之后的内容
![[IPv6Trans.png]]
- Tunnel Mode:
![[IPv6Tunn.png]]
- 是否支持算法的写法:
![[AlgorithmSupport.png]]
- Algorithms
![[AlgorithmRFC.png]]
Advantage of IPSEC¶
- 可以在防火墙内部实现和执行
只有出去的包需要加密。将加密的负担从服务器转移到路由器上。
- 缺点:是IP层的协议。只能实现出去的包全加密或全不加密,无法确认哪些加密,哪些不加密。
Chapter 3: SSL / TLS: TCP Layer Security¶
-
解决 IP 层协议无法解决的问题。
-
运用更为广泛
-
TLS: Transport Layer Security
- Predecessor: SSL (Secure Socket Layer)
- Concepts:
- Connection 连接
点对点关系,与Session绑定
- Session 会话
客户端和服务器端的关联,在建立Connection之前先通过握手协议创建Session,定义连接所共享的安全参数和密码等
SSL / TLS Protocol Stack¶
![[SSLTLSProtocolStack.png]]
-
传输层和应用层中间的,一般归结为传输层
-
Handshake Layer
- Handshake Sub Protocol
- Change Cipher Spec Sub Protocol
- Alert Sub Protocol
- Record Layer:额外的包装层,对消息的接收、压缩、加密
- Receive Message
- Block
- Compress
- Calculate MAC
- Encryption
Handshake Protocol¶
- 四次握手
1. 互相 say hello(支持版本号,ID等)
2. server 发送证书,密钥交换请求,证书请求
3. client 交换密钥,证书传递,认证server证书
4. 互相改变密码标准(change cipher spec),完成密钥交换协议
Record Protocol¶
- Steps
1. 分块
消息数据分段为 214 (16384) 字节块大小或更小。
2. 压缩(Optional)
它必须是无损压缩;如果数据增加,则增加的长度不超过 1024 字节。
3. 计算 MAC 消息认证码
用共享密钥 MAC_write_secret。
4. 加密
5. 加上 SSL Record Header
Advantages¶
- 每一个应用都可以选择协议类型,实现部分加密
Chapter 3: Malicious Code: Trojans, Viruses and Worms (恶意代码)¶
- Malicious Logic: 导致站点安全策略被违反的指令集
Trojan Horse (木马)¶
- 具有显式目标(overt purpose)和隐式目标(covert purpose)
Replicating Trojan Horse¶
- Also Called: Propagating Trojan Horse
- Hard to Detect
- 可以用编译器引入木马
Thompson's Compiler¶
- 修改编译器使得在编译 login 时自动加入一段恶意行为,使之可以接受任意代码,然后将编译器的源代码删去,留下二进制编译器
Compiler¶
- 让编译器在编译正常编译器的源代码时生成恶意编译器,由恶意编译器生成的恶意可执行代码在执行的时候仍然可以加入恶意代码
Trojan Concealing----Rootkit¶
-
一组木马程序
-
隐身
-
更改常用的系统指令,任务管理器等不显示木马进程,将记录过滤掉
-
所有管理手段都可能失效
Detect & Remove Trojan¶
- 各种方法
- 基于行为的检测
- 基于信号
- 。。。
- 杀毒软件不可能轻易杀掉病毒
- 重启 / 重装
Computer Virus¶
-
插入文件中,并做出一些行为
-
最早的核心特点是寄生(依赖于其他进程存在)
-
Insertion Phase (MUST)
-
Execution Phase
Boot Sector Infectors¶
- 寄生在系统引导区(在出现OS之前就能够被感染,通常对OS影响较大)
Executable Infectors¶
![[EXEVirus.png]]
-
Header 标准头部:定义可执行程序大致的信息
-
程序代码(Header 之后)
-
OS先读头,确定第一行指令在哪
-
病毒代码插入头部和程序代码之间,OS读完Header后在原处(如图中第100)开始执行,即开始执行病毒代码,之后可执行代码依然可以被执行
Means of Attaching:¶
Overwriting¶
-
病毒代替部分程序
-
执行完病毒后程序坏掉,无法继续执行
-
最简单
-
容易被检测
at the Beginning¶
-
加在程序之前
-
容易被检测
Beginning and End¶
-
部分在前,部分在后
-
由于是二进制文件所以容易实现
-
前后部分可以互相跳转
-
比覆盖和加在前部较难检测
Intersperse¶
-
前部只加一条跳转,跳转到后部的病毒主体
-
后部执行完后跳转到前部
-
较难检测
Companions¶
略
Multipartite Viruses¶
- 多态:存在于多个地方
TSR Viruses¶
-
驻留病毒
-
杀掉后自动重启
Stealth Viruses¶
略
Encrypted Viruses¶
- 病毒加密之后,难以被完全杀尽
![[EncryptVirus.png]]
-
Deciphering Key 随机生成
-
病毒程序化变种(加壳)
-
检测方法:找 deciphering routine 的特征(一般程序不会有这种损失效率的特征)
其他变种:Virus Emulation¶
- 不断加密
![[VirusEmulation.png]]
Polymorphic Viruses¶
- 加入无意义代码(random code),不对结果产生影响,但是让病毒完全不同
Worm¶
-
三者都有恶意的特点
-
三者不同(原义)
- 病毒:不是独立存在,依赖宿主。直接感染宿主上的程序
- 木马:隐身。不强调自传播性,不用自我复制
- 蠕虫:跟病毒有点像。独立程序。不断将自己拷贝到目标电脑(Target Systems)上。
- 蠕虫在电脑间的传播是非常严重的
Morris Worm¶
-
第一个蠕虫
-
目的是测试互联网有多大
-
通过自己电脑找邻居电脑,不断外扩传播,本身就是蠕虫的特征
-
蠕虫传播一定基于系统漏洞
Code Red 1¶
-
v1:针对 IIS Server,作用是一段时间修改主页
-
v2:代码几乎相同,修复了随机生成 IP 时的一些 bug
Code Red 2¶
略
Nimda¶
-
直接将硬盘中数据删除
-
创新传播方式:通过 Email 服务器漏洞
-
放在附件里面,只要受到附件,客户端就会被攻击
Slammer¶
-
利用 SQL Server 的缓冲区溢出漏洞
-
放在 UDP 包中,所以传播非常快 (UDP 特点,随意发包无限制)
-
无法通过 IP 地址找到中毒的主机
Blaster and Welchia / Nachia¶
-
Blaster:利用Windows XP 中 RPC Server 的漏洞
-
所有蠕虫都通过 Scan 来找到 IP 并入侵
-
Nachia:略
Other Type of Mal. Code:¶
Rabbits, Bacteria¶
略
Logic Bombs¶
Defenses of Mal.Code¶
- 创造病毒很简单,但检测很难==(没有算法能检测所有的病毒)==
Theory of Detection¶
-
Signature-Based Anti-Virus
-
Always Battle with the Attacker
Virus Analysis¶
-
慢:发现病毒后反编译
-
体力劳动
病毒太多了
Immune System Architecture¶
- 新病毒发给病毒分析中心
-
Signature Extraction at VAC¶
Defenses Means:¶
Distinguish between Data, Instructions¶
-
大部分恶意代码是因为数据和指令没有有效区分
-
SQL 注入
Clear Distinction between Data and Executable¶
Example: LOCK
Example: Duff & UNIX
Limit Objects Accessible to Processes¶
Limiting Accessibility¶
Application of Principle of Least Privilege¶
Guardians, Watchdogs¶
Sandbox / Virtual Machine¶
Inhibit Sharing 禁止共享¶
Use Multilevel Security Mechanisms¶
Detect Altering of Files¶
Anti-Virus Programs¶
Detect Actions beyond Specifications¶
\(N\)-Version Programming¶
Proof-Carrying Code¶
Analysis Statistical Characteristics¶
Detecting Statistical Changes¶
Summary¶
- 如何判断用户所要求的不是用户想要的?
Botnets, DDos and SPAM¶
Botnets (僵尸网络)¶
-
一个人控制的机器有限
-
根据指令做出动作
-
通常非常大量的僵尸系统
-
不知道自己变成僵尸网络
-
有新的蠕虫后用僵尸网络攻击会更好
Building¶
Typical Infection Path¶
-
找到漏洞
-
在受害者主机上下载 Shellcode
-
安装 Actual Bot,别人发现不了
-
关掉机器的防火墙和杀毒软件
-
加入一个IRC聊天频道(其中只有僵尸主人能够发指令),随时听取指令
Botnet Propagation¶
-
不断进化
-
扫描寻找新的 IP
-
主动 Botnet 管理
Reproduction and Development of Botnet¶
Denial of Service (DoS) Redux¶
Distributed Denial of Service (DDoS)¶
-
分级控制
-
DOS:
目标:使受害计算机不堪重负并拒绝为其合法客户端提供服务。
DoS 经常利用网络协议
- Smurf:ICMP 回显请求以欺骗受害者的地址为源广播地址
- Ping of death:有效负载大于 64K 的 ICMP 数据包崩溃旧版本的 Windows
- SYN flood:来自欺骗地址的“打开 TCP 连接”请求
- UDP flood: 通过发送数千个虚假的 UDP 数据包来耗尽带宽
- DDOS:
- 建立一个僵尸的僵尸网络
多层架构:使用一些僵尸作为“主人”来控制其他僵尸
- 命令僵尸对受害者发起协同攻击
- 不需要欺骗,因为没有必要为了保护一台僵 尸机器来使用欺骗,比起伪造 IP 地址,可能获取一台新 的僵尸机要快得多。
- 即使在发生 SYN 泛滥的情况下,SYN cookies 也无济于事,因为 DDOS 引发的 SYN flood 不同于 DOS,每台僵尸机都是在正常访问服务器的,不会被 SYN cookie 影响。
Detecting Botnets¶
SPAM¶
Email Spam¶
- 垃圾邮件
Email Spoofing¶
-
经济利益驱动
-
容易制造,容易发出
-
早期服务器有大量错误配置
-
收信人身份验证问题
Open Relays¶
Anti-SPAM by Techniques¶
-
Filter 过滤器
-
Sender Verification 发件人认证
-
Challenge Authentication 质询认证