《计算机网络:自顶向下方法》笔记8 计算机网络中的安全

笔记

第八章

安全通信需要具备机密性、报文完整性、端点鉴别、运行安全性

密码学的原则

这一部分解决了机密性的问题。

在对称密钥系统中,alice和bob的密钥相同且秘密;在公开密钥系统中,一个密钥全世界都知道,另一个密钥只有alice或bob知道(而不是两个都知道)

对称密钥密码体制

对于凯撒密码或者单码代替密码,攻击手段:

  • 唯密文攻击
  • 已知明文攻击:攻击者知道(明文,密文)的一些匹配的时候
  • 选择明文攻击:如果攻击者能让alice发送The quick brown fox jump over the lazy dog,那么加密方案就能完全破译。

多码代替密码:顾名思义,就是用多个单码代替密码,换着来。

块密码

要加密的报文处理为$k$比特的块,每块独立加密。

qwq

这是一个块密码的例子,密钥是8张排列表。

怎样使相同的明文的密文不同?可以引入随机性。通常使用密码块连接CBC的计数,具体思想是仅第一个报文发送一个随机值,然后让发送方和接收方用计算的编码块代替后续的随机数。

公开密钥加密

bob有全世界都知道的公钥和只有他自己知道的私钥。alice想跟bob取得联系,就先获得bob的全世界都知道的公钥然后用全世界都知道的加密算法加密发给bob,bob用全世界都知道的解密算法和只有他自己知道的私钥解密。

但是这样也许会出现选择明文攻击,攻击者对所有怀疑可能被发送的报文编码。还有此时无法验证发送者的身份。

RSA

RSA几乎成了公开密钥加密的代名词。

生成公钥私钥的步骤:

  • 选择两个大素数$p$和$q$
  • 计算$n=pq$和$z=(p-1)(q-1)$
  • 选择小于$n$且和$z$互质的$e$
  • 求一个$d$使得$ed\bmod z=1$
  • 公钥是$(n,e)$,私钥是$(n,d)$

明文$m$的加密值:$c=m^e\bmod n$

密文$c$的解密:$m=c^d\bmod n$

在应用中,rsa比较慢,通常和对称密钥密码结合做。比如alice设置一个会话密钥,用rsa这一套传给b,然后用会话密钥进行加密数据传输

RSA的工作原理

加密解密的结果是$(m^e\bmod n)^d \bmod n$也就是$m^{ed}\bmod n$,考虑欧拉降幂,$z=\varphi(n)=(p-1)(q-1)$,于是$m^{ed}\bmod n=m^{ed\bmod z}\bmod n=m\bmod n$。

你甚至可以发现先解密后加密结果一样。这个按上面的自己推一遍就好了。

rsa的安全性基于大数因式分解是困难的。

报文完整性和数字签名

这一部分解决报文完整性的问题。

密码散列函数

散列函数以$m$为输入,计算得到一个称为散列的固定长度字符串。

因特网检验和和CRC都是。因特网检验和显然是一个劣质的。

它还要求对于$x\not=y$,$H(x)\not=H(y)$。

广泛使用的MD5得到128比特的散列,SHA-1生成一个160比特的报文摘要。

为了报文完整性,alice和bob还要共享秘密$s$,鉴别密钥。

alice计算散列$H(m+s)$,它被称为报文鉴别码MAC,生成扩展报文$(m, H(m+s))$发给bob。bob得到扩展报文$(m, h)$,因为知道$s$,所以计算出$H(m+s)$,如果等于$h$,那么一切正常。

数字签名

这个签名应该是可以鉴别的,不可伪造的。bob为了签署一个文档,显然需要将一些独特的信息附加上来。

所以bob直接用私钥加密(回想rsa的工作原理这一部分,先解密后加密结果一样),这样如果用全世界都知道的bob的公钥解开了这个密文,那么就能知道这个是bob签署的了。

不过因为加密解密代价昂贵,没有必要完全签名数据。对报文的散列签名就可以了。

显然数字签名比MAC更高级。

公钥认证

将公钥和特定实体绑定由认证中心CA完成。

端点鉴别

这一部分解决端点鉴别的问题。

研究一个自己的鉴别协议:AP

ap1.0:我宣布我是alice,我就是alice。

ap2.0:alice有一个总是用于通信的周知网络地址(比如ip地址),bob可以检查报文的ip数据报源地址和alice的周知ip地址是否匹配。

ap3.0:使用秘密口令。嗅探数据分组存下来就破了。

ap3.1:用加密口令。回放攻击就破了。

ap4.0:使用不重数nonce。一个协议的生存周期中只使用一次的数。

  • alice发送“我是alice”
  • bob发送不重数$R$给alice
  • alice使用和bob共享的对称秘密密钥加密不重数,发给bob
  • bob解密收到的。如果等于,就鉴别了alice的身份。

安全电子邮件

我们需要什么?第一机密性,第二发送方鉴别,第三报文完整性,第四接收方鉴别。

机密性最直接的方式是对称密钥,然后是公开密钥密码。为了克服效率问题我们使用会话密钥。这个前面说过了。

要结合机密性、发送方鉴别和报文完整性的话,就把上面这套和数字签名和报文摘要加上。安全地分发公钥可以使用CA。

使TCP连接安全:SSL

安全套接字层ssl,ssl版本3的稍加修改版本是运输层安全性tls。

宏观描述

握手

bob要和alice创建一条tcp连接,验证alice是真的alice,发给alice主密钥,用这个主密钥生成ssl会话所需的所有对称密钥。

qwq

密钥导出

两边都根据主密钥生成四个密钥:

  • $E_B$,从bob到alice的会话加密密钥
  • $M_B$,从bob到alice的会话MAC密钥
  • $E_A$,从alice到bob的会话加密密钥
  • $M_A$,从alice到bob的会话MAC密钥

数据传输

ssl将数据流分割成记录,每个记录附加一个mac用于完整性检查,然后加密记录+mac。为了产生这个mac,bob将数据连同密钥$M_B$放入一个散列函数中。为了加密记录+mac这个包,bob使用会话加密密钥$E_B$。

序号可以防止重放攻击。

qwq

更完整的描述

其实,真正的握手是:

  • 客户发送支持的算法密码的列表和一个不重数。
  • 服务器选择对称算法、公钥算法和mac算法,连同证书和服务器不重数返回
  • 客户加密地发送前主密钥给服务端
  • 客户和服务器独立从前主密钥和不重数中计算出主密钥,划分出四个密钥。
  • 客户发送所有握手报文的mac
  • 服务器发送所有握手报文的mac

在ssl中,不重数用来防御连接重放,序号用于防御在会话中重放个别分组。

网络层安全性:IPsec和虚拟专用网

这个看不懂

使无线lan安全

WEP协议

  • 无线主机请求鉴别
  • 接入点以不重数响应请求
  • 无线主机用和接入点共享的密钥加密不重数
  • 接入点解密加密的不重数

802.11i协议更加安全,主要是靠鉴别服务器。

运行安全性:防火墙和入侵检测系统

防火墙的目标:

  • 从外部到内部or内部到外部所有流量都经过防火墙
  • 仅被授权的流量允许通过
  • 防火墙自身免于渗透

防火墙也分为三类:

传统的分组过滤器

例如,防止网络被跟踪路由,可以丢弃所有出ICMP TTL过期流量。

状态分组过滤器

这个在访问控制列表中包括了一个新栏“核对连接”。

应用程序网关

入侵检测系统

为了检测多种攻击类型,我们需要执行深度分组检查。常用入侵检测系统ids。

一个机构可能有多个ids传感器,划分为高度安全区域和低度安全区域,前者有分组过滤器、应用程序网关和ids系统,后者没有应用程序网关。

ids系统大致分为基于特征的系统和基于异常的系统。