《计算机网络》笔记 - 网络安全
密码学简介
- 加密:明文经密钥为参数的函数变换,输出密文
- 密码编码学、密码分析学、密码术
- Kerckhoff原则:所有算法必须是公开的,只有密钥是保密的
- 含糊的安全性(security by obscurity):使算法保持秘密
- 工作因子:密码分析者面对的密钥的复杂性,对于穷举搜索,为密钥长度的指数量级
- 密码分析问题
- 只有密文
- 已知明文(有了一些相匹配的密文和明文)
- 选择明文(能够加密一些自己选择的明文)
置换密码
- 保留明文字符顺序,进行明文伪装
- 凯撒密码(单字母表置换)
- 字符频率猜测
转置密码
- 重新排序,不伪装明文
- 字符频率不变
一次一密
优点,不可能被破解;缺点,密钥数量限制、密钥流失、丢失字符。
- 量子密码系统:BB84协议
- 定义
- 直线基:垂直和水平滤波器
- 对角基:上述基旋转45度
- 0与1:每一组基任意分配两个偏振方向为0和1
- 过程
- A与B通信,T在监听
- A传送一次性密钥(长度略超过期望长度的2倍)给B,每一位随机选择一个基。
- B使用随机的基接收每一位;
- B告诉A自己使用的基。
- A告诉B哪些是正确的;
- A与B使用正确传输的位序作为密钥;
- 反监听
- 监听者的密钥不完整。监听者T,对于B基序列中能正确接收的部分,若T与B恰好使用相同的基,则T可以知道该位的密钥;否则T将丢失该位。可经过秘密放大进一步减少T知道的内容。
- 监听检测。T必须将A的内容转发给B,却不能正确告知B的哪些基是正确的;一位密钥错误相当与B眼中的一位传输错误;A与B使用前向纠错码进行纠错,发现错误率大大超过设备的期望;得知T的存在。
- 本质
- 光子遇到与自己偏振方向成45度的滤波器,会随机跳到其中一个且概率相等。
- 光子不可复制
基本的密码学原则
- 消息必须包含一定的冗余度:区分有效消息、检测信道
- 需要采取某种方法对抗重放攻击:新鲜度、时间戳
对称密钥算法
- 块密码:接受一个n位的明文块作为输入,利用密钥把它变换成n为的密文块
- P盒:转置操作,混淆
- S盒:置换操作,扩散
- 乘积密码:一系列的S盒和P盒叠加起来
DES(data encryption standard,数据加密标准)
- 明文按64位数据块的单元加密,生成64位密文,接受56位密钥,共19个步骤,16次迭代
- 三重DES:EDE(K1, K2, K1)模式,兼容了DES算法(只需让K1=K2)
AES(advanced encryption standard,高级加密标准)
- NIST(national institute of standards and technology,美国标准和技术委员会)在1997年1月发起了密码学竞赛,新标准称为AES,要求
- 必须是对称的快密码算法
- 公开所有设计
- 支持128位、192和256位密钥长度
- 软件、硬件实现都是可能的
- 算法必须是公有的
- Rijndael:与DES相同,仍使用置换和转置,多轮策略(轮数取决于密钥和块长度);另外,所有操作都涉及整个字节
密码算法的使用模式
AES和DES本质上都是置换和转置操作,同样的明文会得到同样的密文
- ECB模式(electronic code book mode,电子代码薄模式):分割明文,逐块加密。容易被替换某一块。
- 密码块链接模式:第一个块与随机IV(initialization vector,初始向量)异或,之后的明文块与前一密文块异或后加密,IV一起传输
- 密码反馈模式:逐字节加密,不必等64位数据块;密文只有一位偶然翻转,会波及到坏字节在寄存器中时的8个字节
- 流密码模式
- 过程:用一个密钥加密一个初始向量生成一个输出块,同样的密钥加密这个输出块产生第二个输出块,以此类推;然后将明文与该密钥流异或得到密文
- 优点:密钥流仅仅依赖于IV和密钥,不会受到传输错误的影响。
- 缺点:重复使用(密钥,IV)对,会产生同样的密钥流,会导致密文受到密钥流重用攻击(keystream resuse attack)
- 计数器模式:除密码薄模式以外的模式中,要想随机访问密文是不可能的
- 过程:初始向量加常数后进行加密,再与明文异或;每个新的数据块使初始向量递增1
- 优点:文件中任何地方的块都可以直接解密
- 缺点:重复使用(密钥,IV)对,会导致密文受到密钥流重用攻击
密码分析
- 差分密码分析(differential cryptanalysis):观察少量位差异的明文产生的密文,有些位模式可能比其他位模式更容易出现,这种现象可以导致概率攻击。可用于攻击任何一种块密码算法。
- 线性密码分析(linear cryptanalysis):将明文与密文特定位异或,应该一半为0一半为1,而加密过程会引入偏差,这样的偏差总可以降低工作量。只需2^43个已知密文就可以破解DES。
- 电子功率消耗分析:计算机高电压表示1,低电压表示0,减慢时钟,记录CPU功率
- 时间分析:if语句的then和else执行时间不同时,减慢时钟可以推断出轮密钥。
公开密钥算法
加密算法E与解密算法D满足:
- D(E(P)) = P
- 从E推断出D极其困难
- 用选择明文攻击不可能破解E
RSA
RSA算法建立在分解大素数的基础上,RSA分别为三位发现者名字的首字母
- 计算参数
- 选择两个大素数p、q(典型情况为1024位)
- 计算n=pq和z=(p-1)(q-1)
- 选择一个与z互素的数d
- 找到e使其满足e*d=1%z
- 加密
- 公钥对为(e, n)
- 将明文分块,每个明文P落在0<=P<n中
- 计算C=P^e(mod n)
- 解密
- 私钥对为(d, n)
- 计算P=C^d(mod n)
- 使用:所有人公开自己的加密密钥E,B给A发送Ea(P),A获得后进行解密P=DaEa(P)
其他的公开密钥算法
- 主要有两方面的算法
- 分解大数的困难度
- 以大素数为模来计算离散对数的困难度
- 背包算法:“根据给定的总重量找出可能的物品明细列表”被认为是计算上不可行的。该算法与其加强算法相继被S和R破解。
- 其他:计算离散对数的困难度、基于圆锥曲线
数字签名
数字签名应满足条件
- 接收方可以验证发送方所宣称的身份
- 发送方以后不能否认该消息的内容
- 接收方不可能编造这样的消息
对称密钥签名
选择一个中心权威机构BB,每个用户选择一个秘密密钥亲手交给BB。A发送A, Ka(B, Ra, t, P)给BB,BB将Kb(A, Ra, t, P, K_BB(A, t, P))给B
公开密钥数字签名
- 假设公开密钥算法不仅满足D(E(P))=P,还满足E(D(P))=P
- A向B发送 C=Eb(Da(P))
- B得到明文 P=Ea(Db(C))
消息摘要
- 特性
- 给定P,很容易计算MD(P)
- 给定MD(P),想得到P是不可能的
- 给定P的情况下,没有人能得到满足 MD(P')=MD(P) 的P'
- 输入明文即使只有1位变化,也会导致不同输出
- 加密摘要比明文快的多,可以加速数字签名算法
- MD5
- 将明文填补到448位
- 消息后追加其消息长度(64位整数),此时共512位
- 取出一个512字节的输入块,通过正弦函数与128位的缓冲区混合,每个输入块执行4轮
- 128位的缓冲区即为最终的消息摘要
- SHA-1(secure hash algorithm 1):同样按照512字节块处理数据,唯一不同的是生成160位的消息摘要
- 利用SHA-1和RSA对非保密的消息进行签名:Alice->明文P->SHA-1->P的散列值H->RSA(私钥Da)->签过名的散列值Da(H)->Bob
生日攻击
n个输入和k个可能的输出之间存在某种映射关系,公有n(n-1)/2个可能的输入对,若n(n-1)/2>k,则至少有一个匹配的机会是非常大的
公钥的管理
证书
CA(certification authority,证书权威机构),避免了24小时在线的密钥分发中心
- 生成证书
- Alice到CA,出示其公钥和身份,请求证明他的公钥
- CA给Alice一个证书,其中包括Alice的身份、CA的私钥对身份散列值的签名
- 证书验证
- Bob计算Alice身份的散列值,与CA的公钥应用在Alice证书的签名上得到的散列值进行比对,因Trudy无法得知CA的私钥,所以他不能对散列值正确地签名
- 证书格式标准 X.509:ITU1988年通过,采用OSI ASN.1(abstract syntax notation 1,抽象语法标记1)编码
PKI(public key infrastructure,公开密钥基础设施)
- 信任链(证书路径):分层的CA,顶级CA负责证明次级CA(又称RA,regional authority,区域权威机构),次级CA负责证明第三级CA,以此类推
- 信任锚:浏览器预先安装100多个根的公钥
- 目录(在哪里存放证书):用户自己存放、DNS服务器存放
- 撤销:CA定期发布CRL(certificate revocation list,证书撤销列表)
通信安全
IPSec
- RFC 2401、2402和2406,总是要求加密功能,但允许空算法
- IPSec是一个多服务、多算法和多粒度的框架
- 两种模式
- 传输模式:直接插在IP头的后面
- 隧道模式:整个IP分组封装到一个新的新的IP分组中,新分组具有全新的IP头
防火墙
防火墙包括两部分
- 分组过滤器(网络层):配置了某些额外功能的标准路由器,负责检查进入和出去的所有分组
- 应用网关(应用层):根据头、消息长度,甚至内容决定转发或丢弃
DoS(denial of service)攻击:向目标机器发送大量合法的分组,防火墙不能处理;DDoS(distributed denial of service)攻击:大量普通用户的机器被控制而进行DoS攻击
VPN(virtual private network,虚拟私有网络)
建立在公共网络上的层叠网络,可利用IPSec实现隧道,将任意两个办公室的流量聚集到一个支持认证和加密功能的SA上
无线网络安全
- 802.11安全性:WEP(wired equivalent privacy,相当于有线网络的保密性)为数据链路层安全协议,使用基于RC4的流密码算法
- 蓝牙安全性:物理层的调频机制提供了一定程度的安全性;设备预先建立好的共享的秘密密钥(passkey,总密钥);蓝牙的加密算法使用叫做E0的流密码,完整性控制使用SAFER+,两者都是对称密钥快密码算法
- WAP2.0安全性:它是基于IP的,可以使用IPSec;传输层可以使用TLS提供保护。
认证协议
基于共享秘密密钥的认证
- 质询-回应协议:容易受到反射攻击
建立一个共享密钥:Diffie-Hellman密钥交换协议
- 基于大素数分解的困难度,容易受到水桶队列攻击(又称中间人攻击)
使用密钥分发中心的认证协议
- 重放攻击
- Needham-Schroeder认证协议
使用Kerberos的认证协议
应用在许多实际系统中,如windows2000
使用公开密钥密码学的认证协议
电子邮件安全
PGP(pretty good privacy,相当好的隐私)
- PGP使用一个称为IDEA(international data encryption algorithm)的块密码算法来加密数据
- 私钥环:一个或多个本人的公-私钥对
- 公钥环:与当前用户进行通信的其他用户的公钥
PEM(privacy enhanced mail,增强隐私的邮件)
像PGP一样,每条消息都使用一次性密钥进行加密,密钥(被RSA或三重DES保护)也被包装到消息中
S/MIME(Secure/MIME,安全的MIME)
- IETF提出
Web 安全
安全的命名机制
- DNS欺骗
- 安全的DNS
- 自证明的名字
SSL(secure sockets layer,安全套接字层)
在两个套接字之间建立安全的连接,位于应用层与传输层之间
- 客户与服务器之间的参数协商
- 客户与服务器的双向认证
- 保密的通信
- 数据完整性保护
移动代码安全
- java applet安全:解释器将其封装到沙箱一边限制它的行为
- Active控件:代码签名,认证码
- JavaScript:没有正式的安全模型
- 病毒:具有繁殖能力,不断复制自己
社会问题
###隐私
- clipper chip(剪切芯片)
- key escrow(密钥托管)
- 电子边境基金会(electronic frontier foundation)
- 匿名邮件中继器(anonymous remailer)
- 翻译型的邮件中继器(cypherpunk remailer)
言论自由
- 信息隐藏学(steganography)
- 数字水印
### 版权
- 版权(copyright)是对IP(intellectual property,知识产权)的创造者的一种授权
- 合理使用原则(fair use doctrine)
- TCPA(trusted computing platform alliance,可信计算平台联盟)
本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://harttle.land/2014/05/03/computer-network-security.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。