课程体验
【这不是信安的信息安全原理与数学基础】是指软工必修,计科选修课。
授课老师只有HTL,讲课还行,给分还行。教授的内容就是信安密码学入门,还是比较有用的。比较好玩的是有一节课老师迟到了40分钟,不过最后没影响进度。
上课不点名,但需要卷发言占平时分。
发言环节是每节课课前老师统一提问“上节课讲了什么”,占10min左右,举手的同学每个人回答一点就行,不能重复。点人的顺序是从前往后,从面向讲台的左侧到右侧,举手的基本都会给机会。
4个lab,文档清晰,不是很难。Wireshark装好学会用之后不要删,后面计网还要用。
授课老师使用中文授课,ppt与考试卷均为英文。
期末考试是闭卷,98上回忆卷的大题重复度挺高的。
回忆卷去CC98查看
笔记
1. 信安基本概念
1.1 安全系统与威胁
计算机安全的概念:
漏洞(Vulnerabilities):系统的薄弱处。
威胁(Threats):是否有可能造成损害的潜质。
攻击(Attacks):human/another system利用漏洞进行攻击。
控制、对抗措施(Control):对于漏洞的修复或移除的方式。
补充:
绝对安全不存在:不存在绝对安全的系统,任何系统都可能存在漏洞。
黑客动机:黑客攻击通常是为了获取某些“利益”,而非单纯追求刺激或挑战。
内部威胁:超过80%的攻击来自内部,内部员工因对系统更熟悉,攻击更容易成功。
内部用户定义:内部用户是对环境或系统有合法接触或联系的人,相比外部攻击者,他们有更多的机会和知识。
事件报告与实际发生:有报导的黑客事件比实际发生的少得多。
1.2 密码学发展
早期密码:
太公兵法:中国第一个密码。
豪密:中华人民共和国第一个密码。周总理使用,利用书本加密。
凯撒密码:最早的替换式密码,有25种可能的密钥。
- 每年必考凯撒密码破译,没难度,但是费时间
棒子密码:用棒子粗细作为密钥。
信息隐写术:将信息隐藏在头皮、蜡烛、鸡蛋、微点、电影等中,培根密码使用字体加密。
密码学演化:
第一次:科托夫原则(Kerckhoffs’ Principle),密码学从经验转向科学,强调加密算法公开,安全性依赖于密钥保密。
第二次:电子计算机出现,密码学从人工转向机器化和电子化,理论基础为香农信息论。
第三次:公钥密码学出现,允许双方在不共享密钥的情况下交换信息,RSA是最广泛使用的公钥密码算法。
第四次:因特网科技拓展了密码学的内涵和外延,应用从军事到民用再到个人,保护范围从简单协议到复杂网络协议。
Kerckhoff规则:
一个系统的安全性不是建立在算法保密上,而是建立在秘钥上
增强安全性:凡是难以改变而且长时间使用的东西都会被对手知道
算法本身不具有保密性,安全依赖与秘钥的保密
太公兵法没有密钥,不符合Kerkhoff原则
豪密难说,书换的话书本身是密钥
凯撒密码若每次移n位的n不确定则符合,定死3则不符合(但n只有25个空间比较小)
棍子:密钥是棍子
头皮/鸡蛋:没有密钥
1.3 计算机安全特征
相比纸质资料
无法区分original原件和copy件的区别
修改可以不留下任何痕迹
容易被彻底删除(easy to delete)
数字签名只依赖于二进制信息
安全特征
综合性:系统安全取决于最弱的一环。
过程性:安全是一个不断上升的螺旋式过程。
动态性:安全系统处于不断进步和更新中。
层次性:需要多层安全技术解决安全风险。
相对性:安全是相对的,不存在绝对安全。
1.4 计算机安全四要素
保密性(Confidentiality):防止数据被未授权查看。
完整性(Integrity):防止数据被非法修改。
可用性(Availability):确保资源可用。(比如银行卡里面的钱是否能取出来)
真实性(Authenticity):确保信息来源的真实性。
1.5 安全威胁类型
自然威胁:地震、火灾、洪水等。
物理威胁:错误使用、损坏等。
硬件/软件威胁:设计缺陷、后门、逻辑炸弹等。
介质威胁:硬盘损坏、误删除等。
泄露威胁:电磁泄露、屏幕监视等。
通信威胁:抓包、通信过程中的修改和伪造。
个人威胁:误操作、故意破坏和泄露。
1.6 安全攻击类型
被动攻击:难以探测,预防比探测更有效。
主动攻击:易探测,但难以预防,可以从攻击中恢复。
四种攻击类型:
中断(Interruption):使系统不可用,如硬件损坏、DOS攻击、remove a program or file。
- 攻击安全要素中的Availability。
截获(Interception):未授权获取数据,如窃听、抓包。
- 四者中唯一一个被动攻击的类型,很难被检测到,防范比检测更重要。
- 攻击安全要素中的Confidentiality。
修改(Modification):未授权篡改数据。
- 攻击安全要素中的Integrity。
伪造(Fabrication):插入虚假信息,如伪造IP、钓鱼。
- 攻击安全要素中的Authenticity。
- 利用数字签名等方式防止伪造。
1.7 对抗安全威胁
目标:
阻止:防止攻击违反安全策略。
检测:发现攻击行为。
恢复:修复系统,恢复正常运行。
安全服务:
认证:确保通信实体身份。
访问控制:阻止未认证用户访问。
数据保密性:防止数据窃听。
数据完整性:确保数据未被修改。
不可抵赖性:防止通信拒绝。
可用性:保证服务可用性。
管理与技术:对抗安全威胁三成靠技术,七成靠管理,人是安全问题的主要来源。
2. 密码学
2.1 基本概念
密码的基础部分:明文、密文、加密算法、解密算法。
字符含义:
plaintext:P
ciphertext:C
encryption method:E()
decryption method:D()
key:K
C = Ek(P)
P = DK(C)
明文、密文、密钥、加密解密算法关系:$C=Ek(P),P=Dk(C)$
加密方式:
替换:用其他字符替换原文字符。
位移:将字符位置移动。
2.2 古典密码
棍子密码:用棒子粗细作为密钥。
凯撒密码:字母替换,有25种密钥。
维吉尼亚密码:使用Vigenere方阵。
书密码:用书籍内容作为密钥。
2.3 机械密码
ENIGMA:齿轮机,多表替代加密算法,密钥是齿轮初始设置和接线板设置。
破解ENIGMA:通过获取机器、滥用密钥重复模式、Bombe机等方式破解。
2.4 计算机密码
对称密码学
对称密码学(Symmetric Cryptography):
块加密:将长bit流分成多个短bit节,逐节加密。
费斯托密码结构:现代对称密码算法基础,通过扩散和扰乱增加安全性。
DES算法:块大小64bits,密钥长度56bits,雪崩效应强,但如今56bits密钥不够安全。
三重DES:$C=EK_{3}(DK_{2}(EK_{1}(P)))$,向前兼容DES,密钥长度为56*3。
AES算法:块大小128bits,密钥长度128/192/256 bits,免疫已知攻击,全平台计算速度快。
操作模式:
ECB:简单加密(同样的明文数据加密结果相同),易被重放攻击,不能隐藏数据模式。
CBC:前一个加密块影响后续加密,产生雪崩效应。
流加密:用随机bit序列与明文异或得到密文。
密钥分配问题(Key Distribution Problem):
- 对称密码学:密钥共享是关键问题,通常通过KDC(Key Distribution Center,密钥分发中心)解决。
非对称密码学
非对称密码学: 又称公钥密码学(Public Key Cryptography)。基于数学函数,非对称加密,解决了密钥分配和数字签名问题。
公钥和私钥:攻击者无法从公钥得到私钥,通信双方无需提前共享私钥。
单向函数:计算容易,反向计算困难。
应用:解密/加密、数字签名、密钥交换。
算法:
Diffie-Hellman算法(DH算法):用于密钥协商,非加密算法。安全性依赖于离散对数问题,但无认证环节,易受中间人攻击。
单向函数: 计算大整数的整数次幂比较容易,但是计算离散对数很困难
密钥生成:A生成自己的秘钥 $X_a$,B生成自己的秘钥 $X_b$,原根 $g=2$ 或者 $3$ 或者 $5$(较小的数),再约定一个素数 $p$
计算密钥:A计算出KeyA = $g^{X_a} \ mod \ p$,B计算出KeyB = $g^{X_b} \ mod \ p$,将计算出的结果分别发给对方
计算密钥:B将拿到的A的传过来的数字KeyA,再进行$(KeyA)^{X_b} \ mod \ p$,同时A将拿到的B的传过来的数字KeyB,再进行$(KeyB)^{X_a} \ mod \ p$,这计算出的两个数字是相同的,由此交换得以确定了秘钥
RSA算法:一种广泛使用的非对称加密算法,它基于数论中的模运算和大整数分解的困难性。
单向函数:大质数乘法容易,质因数分解困难。
密钥生成:选择大质数p和q,计算$n=p*q$,选择e和d满足$e∗d≡1 \ mod\ (p−1)(q−1)$,(e,n)为公钥,d为私钥。
加密:$c=m^e \ mod \ n$。
解密:$m=c^d \ mod \ n$。
安全性:依赖于大数分解难度,但需注意私钥保护和数字签名防止中间人攻击。
椭圆曲线算法(Elliptic Curve Cryptography):一种基于椭圆曲线数学理论的公钥密码体系。
- 相比RSA,椭圆曲线算法在相同安全强度下,密钥长度更短,计算速度更快。
对称与非对称密码学比较:
对称密码学(Symmetric Cryptography):速度快、成本低,但密钥分配困难。
非对称密码学(Asymmetric Cryptography):解决了密钥分配问题,但速度慢、成本高。
实际应用:通常使用公钥密码学进行密钥交换,对称密码学进行加密解密。
3. 安全服务
3.1 数字签名
特点:
与签名文档绑定。
接收者可验证签名,其他人无法伪造。
签名者不可否认。
需第三方确认解决争端。
要求:
依赖于内容,防止修改。
使用发送者独有信息,防止否认和伪造。
认证和校验简单。
算法:
公钥密码学支持:DSS/DSA、RSA、椭圆曲线算法。
签名过程:A用私钥签名文档,B用A的公钥验证。
哈希函数:用于处理大文件签名,将文件哈希值签名,接收者验证哈希值一致性。
为什么需要单向哈希函数?
当文档比较长的时候,不能对整份文档签名(即直接对整份文档进行RSA,成本太高)。
但是依然要求一旦文档出现变化,签名就要失效。
所以解决办法是:对文档用单向hash函数缩小体积,之后对hash值进行签名以完成数字签名的要求。
单向哈希函数特点:
易计算。
难以反向计算。
难以寻找碰撞。
安全性:
原象攻击(Preimage Attack):给定哈希值,找到原文件。
第二原象攻击(Second Preimage Attack):给定文件,找到另一个哈希值相同的文件。
碰撞攻击(Collision Attack):寻找两个哈希值相同的文件。
消息验证码MAC
消息验证码(Message Authentication Code),又称消息认证码。
特点:
带密钥的哈希函数,用于确认消息完整性。
与数字签名区别:MAC需共享密钥,不提供不可否认服务;数字签名无需共享秘密,可被任何接收者确认,提供不可否认服务。
使用原因:MAC比数字签名更快,不可否认服务不总是必须的。
PGP
PGP(Pretty Good Privacy):
广泛用于数字签名、完整性校验、信息加密、数据压缩、邮件格式兼容。
多平台兼容,基于密码安全算法。
3.2 认证
基于:
你有什么(身份证、密码、密钥)。
你知道什么(密码、生日、预设问题答案)。
你在哪(IP地址)。
你是谁(生物认证、行为认证)。
基于密码的认证:
缺陷:密码传输易被窃听(vulnerable to eavesdropping),密码文件难保密,易被猜测。
安全性因素:密码输入频率、存储方式(哈希存储较安全)、传输过程(哈希后较安全)、修改过程、生命周期、显示保护、长度和格式、重新输入频率、错误尝试限制等。
实现方式:
明文存储:不安全。
哈希存储:较安全,但需防止字典攻击。
加盐(Salting):向密码添加随机盐后哈希存储,增加字典攻击难度。
隐密码(Shadow Passwords):将哈希密码存储在受限文件中,如Unix系统的
/etc/shadow
。
保护方法:使用复杂密码、定期检查安全性、使用安全工具、不同网站使用不同密码、不信任第三方密码管理软件、避免在不安全环境下登录。
生物认证:
优点:不易被盗窃、忘记或丢失。
缺点:设备和维护成本高、准确性问题、隐私问题。
错误率:
False Accept Rate(FAR):接收恶意用户。
False Reject Rate(FRR):拒绝合法用户。
等错误率(Equal Error Rate, EER):当两种错误率相等时的阈值。
风险:信息记录不符合要求、使用留存记录进行攻击。
网络认证:
协议版本:
Protocol v1.0:直接声明。
Protocol v2.0:声明+IP地址。
Protocol v3.0:声明+IP地址+密码。
Protocol v4.0:声明+IP地址+加密密码。
Protocol v5.0:挑战响应认证,使用共享密钥。
Protocol v6.0:使用挑战码和公钥。
KERBEROS:
目标:在分布式环境下,客户在服务器上安全获取服务,服务器限制授权用户访问并区分服务。
实现:基于传统加密,不使用公钥加密。
基本概念:
C:客户端。
AS:认证服务器。
TGS:票据授予服务器。
V:应用服务器。
IDc:用户标识。
IDv:服务器标识。
Pc:用户密码。
ADc:客户端网络地址。
Kv:AS与V共享密钥。
版本:
v4基础版:C访问AS获取访问V的票据,但需频繁输入密码,密码明文传输,票据泄露易受重放攻击。
v4改进版:引入TGS,C先获取TGS票据,再获取访问V的票据,减少密码输入频率,防止重放攻击,不传输明文密码。
v4最终版:依赖时间服务,需可信第三方。
v5:改进v4,支持多种算法,适用于多种网络地址,无lifetime限制,允许身份认证传输。
缺点:依赖时间、易受猜测攻击、密码存储问题。
3.3 授权
授权(Authorization):与访问控制基本相同,认证提供基本授权,授权用于更深层次控制。
三要素:
主体(Subject):可访问客体的实体,如用户、进程。
客体(Object):被访问的对象,如文件、程序、数据。
权限(Permission):主体访问客体的方式,如读、写、删除、运行等。
3.4 访问控制
安全访问控制:
主要功能:授权 (Authorization),撤销 (Revoke),检查 (Checker)
两个方面:制定政策 (make policy) 和执行政策 (execute policy)
安全访问控制原则:
模型固定,策略灵活:适当的安全策略是安全的核心。
授权管理:
MAC:访问完全基于主体和客体的安全等级,由管理员和创造者决定。
DAC:多种授权管理方法,如集中管理、分级管理、所有权管理、协同管理、分布式管理。
RBAC:提供类似自我管理策略的访问控制,管理权限分配是重要特性。
最小权限原则:即使用户被分配高级身份,也只在必要时赋予权限,以防止事故。
权力分立:将超级用户权利分配给不同特权用户,如系统管理员、安全管理员、审计管理员,彼此履行职责和约束。
模型
DAC
DAC(Discretionary Access Control,自主访问控制):
特性:根据主体身份和权限决定访问,特权主体可自主授予其他主体访问权。
缺陷:访问权限可能在信息传输中改变。
实现:
访问控制矩阵(Access Control Matrix):表示主体与客体的访问关系。
访问控制表(ACL)(Access Control List):为每个客体列出可访问的主体。
能力表(CL)(Capability List):为每个主体列出可访问的客体。
Unix OS 使用访问控制列表管理文件
MAC
MAC(Mandatory Access Control,强制访问控制):
**【注意区分】**这里又出现了MAC,之前MAC是消息认证码,这里是强制访问控制。在计算机网络领域MAC还有MAC地址的含义。
应用领域:军事等高安全需求领域。
安全等级:主体和客体被标记为不同安全等级,如绝密(Top Secret)、机密(Secret)、秘密(Confidential)、未分类(Unclassified)。
模型:
Bell-LaPadula模型:保证保密性,规则为“不读上”(主体只能读同级或低级对象)、“不写下”(主体只能写高级或同级对象)。
No Read Up:主体只能读同级或低级的对象
No Write Down:主体只能写高级或同级的对象
Biba模型:保证完整性,与Bell-LaPadula模型相反。
隐通道
隐通道(Covert Channel):
资源耗尽型隐通道(Resource Exhaustion Channel):用低级别进程申请资源成功与否来判断高层进程是否运行
负载感知型隐通道(Load Sensing Channel):用低级别进程执行需要高级别进程所需资源的任务,观察其完成速度确定高级别进程的运行情况
应对隐通道的方法:关闭或者降低通道速度;检测企图使用隐通道的进程;忍受他的存在
隐通道无法完全被避免:限制资源共享,例如资源共享仅可以发生在相同安全级别的进程之间;限制带宽 (bandwidth)
RBAC
RBAC(Role-Based Access Control,基于角色的访问控制):
背景:DAC安全性弱,MAC过于严格且不灵活,RBAC旨在减少管理负担。
特性:
职责分离:不同角色执行不同任务。
角色分层:角色之间有层级关系。
角色激活:用户根据需要激活角色。
用户成员资格约束:限制用户所属角色。
数据客体:
用户:系统使用者。
角色:用户所属角色,与操作权限相关。
客体:被访问的对象。
操作:可执行的操作。
许可:角色被赋予的权限。
优势:
授权管理简单:易于根据工作需求分类,实现最小权限原则。
便于任务分配:不同角色执行不同任务。
易于文件管理:文件可按角色分级管理。
实现:RBAC可用于实现DAC和MAC。
3. 互联网与安全
3.1 网络结构与攻击
(努力背吧,反正未来计网也要背)
网络结构
TCP/IP协议栈:
数据链路层:帧(ARP、PPP等)。
网络层:包(IP、ICMP等)。
传输层:段(TCP、UDP)。
应用层:信息(HTTP、FTP、DNS等)。
IP和TCP:
IP:负责数据传输。
TCP:负责源到目的的可靠性和流控制,通过滑动窗口控制流量,序列号和确认保证可靠性。
三次握手:建立TCP连接,确保双方准备好并分配资源。
常见端口:
21:FTP。
53:DNS。
80:HTTP。
443:HTTPS。
IP和UDP:
IP:提供路由,通过IP地址获取数据报。
UDP:用端口区分传输,无确认、流控制和消息继续保证。
DNS服务:
根服务器:负责顶级域名解析。
级联查询:本地DNS失败时,逐级向上查询至根服务器。
网络攻击
网络攻击:
窃听(Eavesdropping):许多传输未加密,如FTP、Telnet、HTTP,攻击者可通过混杂模式网络接口卡读取数据。
ARP欺骗(ARP Spoofing):
原理:攻击者发送假ARP数据包,误导流量至攻击者控制的地址。
应用:截获攻击、中间人攻击、DOS攻击。
IP欺骗(IP Spoofing):伪造源IP地址,隐藏发送方身份或冒充其他系统。
TCP SYN Flooding:
原理:攻击者伪造IP地址发送大量SYN请求,耗尽服务器资源,导致正常客户端无法连接。
防御方法:
随机删除:SYN队列满时随机删除请求,正常连接可快速重试。
SYN Cookies:服务器不存储状态,将socket信息存储在cookie中,客户端需返回cookie进行二次请求,服务器验证后建立连接。
TCP SYN Prediction Attack:
原理:攻击者预测TCP序列号,伪造数据包,可能引发TCP欺骗、连接劫持、重置等攻击。
防御方法:使用随机初始序列号(ISN)防止预测。
TCP拥塞控制(TCP Congestion Control):
原理:丢包意味着网络拥塞,TCP降低传输速度,直到不再丢包或速度降至0。
改进方法:增加ACK非对称验证,防止欺骗。
DNS欺骗(DNS Spoofing):
原理:修改DNS服务器或本地DNS缓存,将请求重定向至错误IP地址。
防御方法:使用DNSSEC(域名系统安全扩展),所有响应均经过认证,防止伪造。
IPSEC(IP Security):
功能:在IP层提供网络传输的加密和认证。
核心部分:
AH(认证头):提供数据完整性和认证服务。
ESP(封装安全载荷):提供安全性、保密性和认证服务。
SA(安全关联):定义加密和认证算法及参数,双向通信需两个SA。
操作模式:
传输模式:仅保护IP包内容,不保护IP头,适用于点对点传输。
隧道模式:加密整个IP包,隐藏原始IP数据包,适用于网络间VPN、主机到网络通信等。
优点:
增强防火墙/路由器安全性,保护边界数据。
对最终用户透明,应用程序无需特殊处理。
SSL/TLS(Secure Sockets Layer/Transport Layer Security):
概念:
SSL连接:临时点对点关系,与会话相关联。
SSL会话:客户端与服务器之间的关联,由握手协议创建,共享安全参数。
协议栈:
握手层:定义Handshake、Change Cipher Spec、Alert子协议,用于服务器和客户端相互认证、协商加密算法和密钥。
记录层:接收应用层数据,进行碎片化、压缩、MAC计算、加密,然后发送至传输层。
应用:广泛用于保护网络通信安全,如HTTPS。
3.2 恶意代码与攻击
恶意代码(Malicious Code):
木马(Trojan):具有公开和隐蔽目的的程序,可自我复制,难以检测。
病毒(Virus):
定义:将自身插入文件并执行操作的程序。
传播方式:通过感染其他文件传播,需启动文件被感染才会插入自身。
隐藏方法:通过跳转等方式隐藏在执行文件内,或通过加密、多态等方式躲避杀毒软件检测。
蠕虫(Worm):
定义:独立可运行程序,自我复制或自动传播至其他系统。
区别:与病毒不同,蠕虫是独立程序,木马不自我复制。
检测方法:杀毒软件通过代码匹配、行为检测(如修改注册表、浏览器主页等)识别恶意代码。
僵尸网络(Botnet):
定义:由大量受远程控制的僵尸系统组成的自治程序网络,主人不知情。
控制方式:通过IRC或P2P协议控制和升级。
攻击应用:作为DDOS攻击、垃圾邮件和点击欺诈等攻击的平台。
检测方法:
IRC检测:查找执行扫描的主机或高比例主机的IRC频道。
DNS检测:查找多次DNS查询但未收到自身查询结果的主机。
规避方法:使用加密和P2P技术避开检测。
DOS攻击(Denial of Service Attack):
目的:使受害者机器过载,拒绝为合法客户提供服务。
DDOS攻击:
原理:建立僵尸网络,多层架构控制僵尸机对受害者发起协同攻击。
特点:与DOS不同,DDOS攻击来自不同来源,流量来自真实请求,难以通过SYN Cookies等方法防御。
邮件欺骗(Email Spoofing):
原理:SMTP服务无认证,发件人可随意设置邮件来源地址。
目的:避免被邮件系统拉黑,减少垃圾邮件被拦截的概率。
对抗方法:
政策性对抗:制定和执行相关政策。
科技型对抗:使用过滤器、发件人校验、质询认证等技术手段。