CIA三元组: 完整性,可用性,加密性
OSI安全体系结构
信息安全三方面: 安全攻击,安全机制,安全服务
安全威胁/攻击: 被动攻击(窃听\流量分析攻击), 主动攻击(对数据处理(阻断,拦截,篡改,伪造等))
安全机制实现安全服务,安全服务实现安全策略
互联网安全术语(约定) RFC4949
网络安全模型: 网络加密安全模型(参与者,信息通道,安全机制)和网络访问安全模型(攻击者,访问信道,安全机制,资源系统)(看PPT)
密码学基本概念
密码编码学+密码分析学(破解)
密码破解的攻击比较少
对称密钥加密算法
组成部分
分组加密(块加密)\流加密
对称加密算法:
DES\AES\3DES
安全性很大程度上取决于密钥长度
密码系统的两个基本要素是加密算法和密钥管理
Diffie-Hellman算法:
利用大素数求因数极其困难,保障安全性.
缺点: 中间人攻击: 对数据进行伪造,从而得到两个密钥,冒充B与A通信,冒充A与B通信
解决方法: 公钥证书,数字签名
对称密钥问题:
用户增加时,数量过多密钥管理复杂,脆弱性不支持身份认证非对称式加密方式
两个密钥:
公开密钥:用于加密消息,验证签名私有密钥:用于解密消息,数字签名公钥加密\解密慢
公钥算法(如RSA算法)应用: 加\解密 数字签名 密钥交换
消息认证: 对受到的消息进行验证,证明确实可信(来自声称的发送方), 并且没有被修改过(完整性).
三种方式: 消息加密(用整个消息的密文作为认证标识)
消息认证码MAC(用一个公开函数,加上一个密钥产生固定长度的值作为认证标识) HMAC(hash + MAC): 密钥填充 + 计算两遍散列值
散列函数(一个公开函数将任意长度的消息映射到一个固定长度的散列值,作为认证标识): 利用单向散列函数进行消息认证(对称加密, 公钥加密, 秘密值加密) 安全散列函数的特性: 无长度限制, 快速性, 单向性, 抗碰撞性, 雪崩性 针对生日攻击的安全条件, 消息摘要长度大于128比特.
数字签名可以实现消息认证,但是太复杂/太慢,所以用更快的消息认证(散列函数快)
身份认证: 口令脆弱性, 所以加入公开的salt值s(散列口令)
MAC是一种加盐的哈希函数
中间人攻击: 若通信双方没有任何先决条件,则一定可以有这种攻击(对策,加入先决条件) "挑战"码(使用随机数) 令牌协议: 挑战-相应协议 (双因素认证) 重放攻击: 记录当前的通信流量, 以后再发送. (对策: 增加时间戳保证通信的唯一性, 或者使用随机数避免重放攻击)单点登录(用户只认证一次) Kerberos实现了
密钥管理技术
基于对称加密的密钥管理 Kerberos
基于第三方的加密链路分发密钥, 密钥分发中心KDC 基于对成加密但是N个用户只需要N个密钥, 安全性却决于可信第三方, 双向验证. 适用于较小规模应用场景
KDC两个服务: Authentication Server认证服务(生成TGT票据许可票据), Ticket Granting Server票据授予服务(生成两个主体之间通信的票据)
ticket票据\Authenticator认证记录(使得TGT可多次使用+避免重放攻击)\Credentials凭证(一个ticket+密钥)
工作流程
AS_REQ, 用户像AS发送消息(包含时间戳),获取TGTAS_REP, AS返回时间戳+新的AS会话密钥+TGT+AS和TGS的共享密钥TFS_REQUEST, 用户像TGS发送消息(包含时间戳+会话密钥加密的认证记录),获取服务票据TGS_REP, TGS返回 TGS私钥加密的ticket+AS会话密钥加密的访问会话密钥AP_REQ, 用户向服务器发送消息(ticket+TGS会话密钥加密的认证记录)AP_REPLY, 需要双向认证时, 服务器向用户发送证明自己是用户期待服务器的消息不能解决密码猜测和拒绝访问(DoS)等攻击
基于非对称加密的密钥管理 PKI
树型结构,根CA为PAA(有自签名证书),对下面的CA签名,层层向下 基本组件: RA(把用户身份和它的密钥绑定起来) + CA(证书签发) + 证书库(保存证书,公开访问)
证书格式(公钥信息+签发人唯一标识符+个体唯一标识符+扩展域+签名)
认证: 数字签名
完整性: 数字签名+MAC(消息认证码)
保密性: 公钥分发随机密钥, 密钥加解密
不可否认(抗抵赖): 数字签名(发送方), 收条+数字签名(接收方)
访问控制 = 认证 + 授权
访问控制策略: 自主访问控制(DAC): 资源所有者规定规则 强制访问控制(MAC): 用户级别(军用) 基于角色的访问控制: 教师-学生(商用) 基于属性的访问控制: 基于用户\环境\被访问资源, 动态的(商用)
Lampson访问控制矩阵 访问控制列表(ACL), 访问能力列表(C-Lists) 混淆代理人问题: “我用python读写我没有权限的文件” 建立逐级授权机制, “继承”
基于角色的访问控制: RBAC模型 用户属于角色, 角色拥有权限 组 = 用户集, 角色 = 用户集 + 权限集 最小权限原则, 责任分离原则, 数据抽象规则
基于属性的访问控制: ABAC模型
隐蔽信道: 高级别向低级别透露信息.(比如通过文件的创建(1)和删除(0), ACK messages等) 降低隐蔽信道的容量
CAPTCHA验证码, 区分人和机器 reCAPTCHA验证码, 两个验证码(一个有GT, 若正确则认为另一个(无GT)也正确)
统一身份认证CAS(一种单点登陆SSO) CAS Client(代替用户请求), CAS Server(响应) 思想和过程类似于Kerberos OAuth(一种单点登陆SSO) 用第三方账号注册/登录其他网站等, 向第三方账号申请令牌, 之后都是用令牌认证身份.防火墙: 包过滤防火墙(工作在网络层)(过滤条件: IP地址, 端口, 标志位, 流向) 基于状态检测的包过滤防火墙(工作在传输层)(状态: TCP连接状态(在三次握手建立连接的过程中的状态)) 应用层网关(工作在应用层) 链路级网关(工作在传输层)
默认转发策略和默认丢弃策略
静态包过滤: 不检查数据区, 只检测地址区 例1: SMTP协议(只允许电子邮件流量出入): 服务器使用TCP, 端口25. 请求响应包限定端口, 协议; 响应包还要检查ACK,源端口号 例2: 子网包过滤规则(不允许另一个局域网访问, 但允许其中一个子网可以访问): 检查IP地址 例3: 基于telnet服务的防火墙规则: 服务器端口号固定(小), 客户端不固定(>1023) 例4: Ftp文件传输协议: 命令通道和数据通道分离. 规则较复杂. 简单快速但不够安全, 规则设置较难 IP地址欺骗攻击, 源路由攻击, 细小分段攻击状态检测防火墙: 增加状态state, 可以记忆TCP连接, 标志位 可以防止TCP ACK扫描攻击
应用层网关: 中继所有的应用, 有完整的应用层视图, 攻击者必须与网关交互.但兼容性不好,慢
链路级网关: SOCKS, 低开销
防火墙局限性: 加密旁路, 内部威胁, 无线网络, 恶意软件
防火墙网络结构: 防御(堡垒)主机结构, 3-Homed结构(含有非军事区DMZ/隔离区), 多层次结构(多层防火墙, 之间是非军事区DMZ, 成本高)
IDS与IPS的区别是什么?https://blog.csdn.net/chen3888015/article/details/79695190?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
蜜罐: 充当诱饵的脆弱系统, 得到攻击方的攻击手段. 低交互蜜罐\高交互蜜罐(更真实)\蜜网
应用层安全协议: HTTPS
Web安全
服务器端 SQL注入攻击 跨站域请求伪造CSRF 跨站脚本攻击XSS 客户端 会话劫持网络协议脆弱性 APR欺骗 IP欺骗 TCP会话劫持 拒绝服务攻击DOS: ICMP攻击+SYN洪泛攻击+Smurf攻击(放大攻击)