1、Comment l1: 全文页面设置:上2cm,下 2cm,左 2.5cm,右 1.5cm。带装订线左 0.5cm。Comment l2: 格式请参照毕业论文。务必文章中前后格式保持一致。苏州大学本科生毕业设计(外文文献译文)1MSE协议攻击1 引言2004年,CacheLogic 公司(现名 Velocix)根据一项六个月的调查指出,BitTorrent(以下简称 BT)流量约占 Internet总流量的 33%1。尽量各项调查得出的结论之间存在一定差异,但不可否认的是,BT 的应用已经越来越广泛。BT的大规模应用给网络性能带来了一定的负面影响。因此,一些 ISP已经开始对BT进行限速。为了
2、应对这一情况,BT 客户端的开发者设计了 MSE协议,其主要目的是对数据流提供混淆功能,其次提供一定的保密和认证功能 2。BT客户端的开发者并没有基于已知的公有协议(例如 IPSec) ,而是完全重新设计了MSE协议。本文描述了 MSE协议的大量漏洞,利用这些漏洞可以完全恢复出密钥和导致种子指纹的泄露。我们把这种攻击应用到不同平台下的各种客户端。结果显示,MSE 协议具有大量漏洞,且协议本身有许多细节之处仍待完善。2 BitTorrent协议BitTorrent协议的设计目的是在网络上高效地传输大型文件。当需要分发大型文件时,将之分解为文件块,并由多个节点提供下载,以减轻网络中单个节点的成本和
3、负载。当使用 BitTorrent协议下载文件时,几乎将同时开始上传文件块。BT网络由四个部分组成:下载者、做种者、Web 服务器和 Tracker服务器。在使用BT协议共享某个文件之前,必须先创建一个种子文件。这个种子文件包含了需要下载的共享文件中各个文件块的信息,包括 Tracker信息、共享的文件块总数、所有文件块的哈希值等基本信息。当下载完成后,可以利用这些哈希值来验证文件的完整性。此外,文件中还包含一个用其它部分的元数据计算得到的哈希值 InfoHash。InfoHash值可以用来确定某个特定的种子文件。除了将种子文件分发给用户下载外,还必须将文件信息报告给Tracker服务器。 T
4、racker服务器的工作是跟踪记录所有做种者的信息,并保持下载者之间的相互通信。当用户使用 BT协议下载文件时,首先从 Web服务器上下载种子文件。文件可以通过多种方式下载,一般为 HTTP或 HTTPS。下载完成后,BT 客户端联系 Tracker服务器并获取正在为此文件做种的节点列表。获得节点列表后,客户端将每次连接一个节点来下载它提供的某个文件块。在一个(或多个)文件块下载完成后,客户端可以使用种子文件中的相关信息来验证文件的完苏州大学本科生毕业设计(外文文献译文)2整性。与传统下载方式相比,使用 BT 协议下载能获得更高速率的原因是它从多个节点下载文件。传统 Web 下载通过单个 TC
5、P 连接从单个服务器下载文件,而 BT 网络中的所有节点只是通过多个 TCP 连接上传很小的文件块。另外,HTTP 采用顺序方式下载文件,而BT 则下载随机序列的文件块。图 1 BitTorrent 运行过程2.1 Torrent 握手我们简要地描述一下 BitTorrent 协议的握手过程 3。它是 MSE 的上层协议。握手是客户端之间传输的第一个消息,用来确定两个客户端之间确实正在共享相同的文件。握手消息有(49+PStr)字节长度,依次由以下域组成: PStrLen:1 字节。表示 PStr 域的长度。 PStr:PStrLen 个字节。表示协议标识符,对 BT 协议来说,为字符串“Bi
6、tTorrent protocol”且 PStrLen=19。 Reserved: 8 字节。初始值为全零,用来修改协议行为。 InfoHash:20 字节。元文件中 info 部分的 SHA1 哈希值,是种子文件的唯一标识。 PeerID:20 字节。客户端唯一的字符串标识。实际应用中,用两个字节表示客户端软件,四个字节表示其版本,其余为随机值。如果正在做种的客户端收到一个含有不同 InfoHash 值的握手信息,则将放弃此连接。苏州大学本科生毕业设计(外文文献译文)33 MSE 协议MSE 协议的主要目的是在 BT 协议的下层完成封装,对数据流提供混淆功能,以此来防止窃听者识别出正在使用的
7、协议。最近,一些 ISP 开始监控用户数据流,在某些情况下甚至对使用 BT 客户端的用户进行限速已经成为了人们热议的话题。除了数据混淆之外,MSE 协议的第二个目的是在一定程度上为相互通信的节点提供保密和认证功能。显然,这将使用加密原语。 :基数。在 MSE 协议中, ,生成 ,其中 768 位安全素数 。g2g*pZ21pq , :Diffie-Hellman 指数, MSE 协议推荐使用 160 位随机值。ab :协商后的 Diffie-Hellman 密钥。 。SSbaabg :0-512 字节的随机填充值。PdA, B :哈希函数 SHA-1,输出值为 20 字节。含字母的字符串用 表
8、示。H :弱共享密钥。对于 BT 协议,Skey = InfoHash ,20 字节。key :RC4 加密。对于 A,密钥为 ;对于 B,密钥为 。EHkey,S HkeyB, S :协商后的加密方式:明文传输或延续上述加密方式。 :用于同步的认证常数(Verification Constant) ,目前为 8 字节的 0x00。VC :支持的加密原语,用 4 字节表示。目前,0x01 表示明文传输,0x02 表ryptoPvide示 RC4 加密。支持上述方式与 XOR 混用。 :已选择的加密原语,用 4 字节表示,取值范围与上述相同。tSlc :填充 0-512 字节零值。a, D :初
9、始载荷。对于 BT 协议,A 为 BT 握手过程的一部分。IA1. B: ,Padg2. b3. :Hreq1, Sre2, ky Hreq3, SEVC, ryptoPvide, lnaC, C,lnIE4. A :V, yptolc, nPadD, , Pald tm5. BPaldrm图 2 MSE 协议握手过程BT 协议的握手过程如图 2 所示。由于存在预共享的密文,协议没有采用任何标准的密钥认证交互过程 5-7,而是使用 Diffie-Hellman 密钥交换协议 4来生成会话密钥。此外,在密钥交换过程中,弱共享密钥在一定程度上提供了认证功能。种子文件中的 InfoHash值用来生成
10、这个弱共享密钥,因此,这个值与 P2P 网络中的预共享密钥的内容类似。Diffie-Hellman 密钥协商完成后,其余的握手过程使用 RC4 加密 8。数据包前面的1024 字节将被丢弃以防止文献9,10中提到的攻击,并且对那些不参与下载的节点进行了数据保密。RC4 密钥基于 Diffie-Hellman 密钥和弱共享密钥,因此,传统的中间人攻击无法实现。载荷可以用 RC4 加密或明文传输。载荷传输方式在消息 3 和消息 4 中协商。消苏州大学本科生毕业设计(外文文献译文)4息 3 中,连接发起者在 CryptoProvide 中提供传输方式,接收者在 CryptoSelect 中选择希望的
11、传输方式。MSE 协议并非为 BT 设计,而是一个通用的载荷传输协议。因此,当寻找 MSE 协议的漏洞时,必须考虑传输的载荷内容。MSE 协议的漏洞不应该与 BT 有任何联系。3.1 MSE 协议与安全P2P 网络(例如 BT)与其它网络(例如 GSM、WLAN)具有不同的安全目标。P2P网络的驱动力是开放、分布式和互联。BT 协议的作者 Bram Cohen 是反对采用 MSE 协议的,因为他认为这将造成客户端之间的不兼容问题。我们直接引用 MSE 协议 2来描述它的设计方法:MSE 协议的主要目的是提供载荷和协议的混淆,以及有限地防止中间人攻击和端口扫描(通过一个弱共享秘密来完成握手) ,
12、而不是节点的认证和数据完整性的验证。因此,协议并不提供针对已知连接信息(例如 IP、端口、共享密钥、载荷协议)的攻击保护。我们考虑 MSE 协议能够防止何种类型的攻击。显然,载荷协议是 BT Peer Wire( TCP)协议。要实施攻击,必须假设攻击者已经知道或者可以获得目标连接的详细信息,例如 IP、端口等。因此,从逻辑上来看,最有可能的攻击情形是,攻击者并不知道共享密钥。由于共享密钥与一般认为的共享密钥之间存在很大差异,因此我们称之为“弱共享密钥 ”。这样,将文件的 InfoHash 值作为弱共享密钥,也就意味着如果知道正在下载的种子文件,攻击者就能够以任何形式进行攻击。MSE 协议并不
13、能防止此类情况下的攻击。因此,本文假定的情形是,攻击者并不知道弱共享密钥。Tracker 的数据可以通过SSL 传输,因此,这种假设是不无道理的。我们攻击的目标应该是那些表面看似安全的、启用 MSE 协议保护的、使用 BT 协议进行传输的数据。我们并未以任何形式攻击 MSE 协议的数据混淆部分。我们考虑的攻击能够恢复出载荷部分的内容。对于大规模应用于 ISP 以对 BT 进行限速,这种攻击是无效的。这种攻击方法只能针对某个特定用户。例如,执法机关可能需要了解用户正在传输的数据。而用户理所应当地认为,MSE 协议能够防止这种攻击。4 MSE 协议漏洞本节中,我们描述了 MSE 协议的几个主要漏洞
14、,与具体客户端的实现无关。第 5 节中,我们将这些攻击应用于不同的 BT 客户端。苏州大学本科生毕业设计(外文文献译文)54.1 消息认证的缺失由于在 MSE 协议握手过程中没有任何消息认证机制,攻击者可以自由修改消息的任何部分而不被察觉。用 RC4 加密算法产生流密钥使得攻击者对消息做出一定修改后,能解密并恢复成明文。下面,我们来说明攻击者如何通过修改 MSE 协议的握手消息来使加密降级成明文,并由此导致弱共享密钥(SKey,InfoHash)的恢复。图 3 降低 MSE 加密级别RC4 流密钥通过对伪随机字节序列与明文进行异或(XOR)运算生成密文。如图 3所示,攻击仅需对密文中 Cryp
15、toProvide 域的各位(bit)通过异或运算进行翻转即可完成。实际操作中,为了能够修改 CryptoProvide 域,攻击者必须与 MSE 协议握手过程同步,并定位到 CryptoProvide 值(如图 2,消息 3) ,以使客户端降低加密级别。由于握手过程中消息通常在单独的数据包中发送,因此,攻击者很容易与握手同步。当攻击者定位到正确的消息后,由于 CryptoProvide 域之前的所有域的长度均为已知值,查找 CryptoProvide域就十分容易了。随后,攻击者可以根据需要使用异或运算进行相应改变,就能够使加密等级从 RC4 降至明文传输。需要最高安全等级的客户端仅将 Cry
16、ptoProvide 域置为0x02 并发送数据包,含义是它只支持 RC4 加密。但攻击者很容易通过少量尝试,即可修改 CryptoProvide 并达到降低加密级别的目的。在收到 CryptoProvide 域仅为 plaintext 的数据包后, B 的响应数据包格式如图 2 消息4 所示。消息中的最后一部分是明文传输的载荷,即 2.1 节中描述的 B 的 BT 协议握手消息的一部分,其中包含了弱共享密钥(SKey,InfoHash) 。恢复弱共享密钥后,攻击者就能了解正在传输的种子文件的相关信息,并能运用传统的中间人攻击方法,恢复出节点之间正在传输的数据包内容。当然,B 完全有可能拒绝明
17、文传输。由于 MSE 协议并未提供任何类型的消息完整性检查,因此,如果在需要加密的情况下选择了使用明文传输,那么是否放弃此连接完全由客户端 B 的实现方式来决定。对于各种客户端的实现得出的不同结论将在第 5 节中描述。我们注意到上述按位翻转的方法也可应用于图 2 消息 4 中的 CryptoProvide 域。但是由于 B 在消息 4 中的最后部分已经选择了加密方法,当 A 收到消息时,显然正在等待 B苏州大学本科生毕业设计(外文文献译文)6部分的 BT 协议握手信息。在这种情况下,上述攻击并不容易实现。要防止此类攻击十分容易。协议应该在某种程度上实现完整性检查。可以通过使用消息认证码(Mes
18、sage Authentication Codes,MAC)或循环冗余校验码(Cyclic Redundancy Check,CRC )等方法实现 11。由于协议使用了(弱)共享密钥,实现基于MAC 的方法非常容易。例如在 WEP12中同时使用 RC4 密文和循环冗余校验码 CRC-32。4.2 密钥流的泄露在 MSE 协议握手过程中,很多域占用相当多的字节数,却仅表示一个或少数几个参数。通常来说,这样做并不会导致严重的问题。其实,零值的变长填充字节将导致大量密钥流泄露。然而,除非密钥流被重用,否则这似乎也没有太大问题。下面,我们描述一种利用密钥流重用时的零值填充序列进行攻击的方法。当两次下载
19、相同种子时,考虑 MSE 协议握手过程中(如图 2 消息 3)的两个值,我们把它们分别定义为 和 ,它们使用了相同的密钥流。PadC 的长度为 0 到 512 字节的1c2随机值,因此,在所有可能性中,总有一个 的长度大于另一个;不失一般性地假设 大ic 1c于 ,我们分别将 PadC 的长度值定义为 和 。MSE 协议对 PadC 和 PadD 描述如下:2c j“当前版本中仅用于填充,应该置零。 ”我们通过图 4 来检查 的结构。我们可以从消息的ic初始部分看到,根据各个域中使用的固定值,我们恢复了密钥流的许多字节 ,特别需要b注意的是,当 时, 的值。在各种情况下,我们都能通过与固定的已
20、知密ji141jib钥流字节序列进行异或运算,从 中恢复出 IA( Initial payload) 。由于 IA 中包含了 A 部2c分的 BT 协议握手信息,因此,只要满足条件 (见 2.1 节) ,我们就能从中恢复48ji出弱共享密钥(SKey,InfoHash) 。在两次会话中使用此方法就有很高的成功率,也可重复进行任意次实验以获取所需的结果。图 4 MSE 密钥流重用攻击强制密钥流重用 利用如图 4 的攻击方法,攻击者扮演 B 的角色,因此,需要使用某些方法强制重用密钥流。由于强制重用密钥流的唯一方法是重用相同的 RC4 密钥,上述攻击方法似乎没有很高的实用性。上面,我们假设在 MS
21、E 协议的两次握手过程中使用了相同的种子文件,重用密钥流的唯一方法就是两次运行过程中的 D-H 密钥 S 相同。我们给出两个例子来说明攻击者如何做到这一点;在不同 BT 客户端上实现上述攻击得出的苏州大学本科生毕业设计(外文文献译文)7结果将在第 5 节中描述。利用平凡子群重用密钥流 当 为安全素数时, 的唯一子群为平凡子群,21pq*pZ即集合1的秩为 1,集合 -1,1的秩为 2。通过将公钥分别作为 或 指数 13,D-H 密钥2q就能成为这些平凡子群之一的元素。以下通过一个简单实例说明上述攻击的方法。A 尝试与 B 建立连接;攻击者在 A 与 B 之间,且扮演 B 的角色,在收到消息 1
22、 之后,回复响应数据包,置公钥值为 1,随后记录 A 发出的消息 3 并放弃连接。不论 A 是否相同,再进行一次相同的过程。在两次 MSE 协议握手过程中,D-H 密钥 均相同,因此,图 4S所示的攻击很容易实现。与 MSE 协议不同,大多数协议明确申明需要验证公钥,例如,无线 USB 协会发布的协议 14。利用离散对数重用密钥流 如果我们能够计算出 D-H 密钥协商过程中所发送公钥的离散对数,也能够强制重用密钥流。例如,A 发送 ,攻击者发送 ,记1modagp1modbgp录下 A 发送的消息 3 并放弃连接。随后,A 将发送 。假设攻击者能够计算出2和 。第一次会话中,协商得 D-H 密
23、钥 。为了在第二次会话中强制重用1a2 1Sab密钥流,攻击者选择 满足条件: 。在第二次会话过程中,攻击2b12od rabg者发送 ,协商得到密钥 。这样,密钥流被重用了。教材中关2modbgp1gp于计算离散对数的示例对于给定的客户端来说很容易实现,即使用朴素的伪随机数生成算法例如,用一个 32 位值作为种子或基于系统时钟或 CPU 计数器重复做种。4.3 种子指纹泄漏由于 MSE 协议使用弱共享密钥 SKey 作为加密密钥的一部分,因此,相互通信的节点必须具有协商密钥的能力。客户端并发为许多种子做种,因此,在 MSE 协议中使用哪一个 SKey 颇为有趣。当连接初始化时,节点可能使用同
24、一个 SKey,做种者并不知道下载者正在使用的密钥。在目前的实现中,客户端通过图 2 消息 3 中 SKey 的哈希值告诉做种者使用的密钥。我们把它定义为种子指纹。只要知道协商得到的 D-H 密钥 S,中间人(攻击者)就能通过异或运算得到这个指纹。由于在哈希值中没有加入随机数,因此,对于每个种子来说,种子指纹都是唯一的。一个较好的比喻是,将进行过 salt 运算的哈希散列密码(例如经典的 UNIX 密码认证)与未进行 salt 运算的哈希散列密码相比较。指纹泄露可能导致恢复出 SKey 和/或正在下载的文件信息。由于 SKey 存在于种子文件中,而种子文件是通过普通的 Web 服务器分发给客户
25、端,因此,当攻击者看到 SKey的哈希值之后,完全可以通过 Internet 浏览种子文件并离线计算出它们的哈希值。攻击者完全有可能找到它所看到的种子指纹。如果种子文件是随机下载的,则称之为穷举攻击法;如果攻击者利用种子列表来检查种子指纹,则可称之为字典攻击。在这些情况下,苏州大学本科生毕业设计(外文文献译文)8密钥空间非常有限,并且所有密钥都是通过 Internet 分发的。例如,对于一个种子网站的管理员来说,获取种子文件是非常容易的。只需要通过简单的 SQL 查询,就能生成网站上所有种子的指纹信息(甚至发布列表) 。在每次会话中,对哈希值增加一个随机量虽然能够阻止这种攻击(会严重影响做种客
26、户端的性能) ,但是仍然无法有效防止对哈希值的在线计算。这种泄露还将造成以下安全问题。即使攻击者不能直接知道正在下载的种子文件,但由于 SKey(种子指纹)对于每个种子文件是唯一的,攻击者也能了解两个不同的客户端是否正在下载相同的种子。图 5 种子指纹泄漏图 1 和图 5 描述了上述情况。图 1 中,客户端正在从多个做种者处下载文件块。由于对所有这些做种者来说,InfoHash 值是相同的,而这个 InfoHash 值通过消息3a、3b、3c 发送,因此,攻击者能够知道这些连接都在下载同一个文件。另一种情况是如图 5 所示的两个相互独立的群。如果攻击者至少站在同时在两个群中共享和下载一个文件块
27、的一对节点之间,那么,通过对比种子指纹,就能知道它们是否正在下载同一个文件。5 客户端实现的漏洞由于我们对真实的客户端如何处理上述安全问题感兴趣,我们实现了自己的客户端。在 MSE 协议中,它同时充当客户端和服务器的角色。这样做的原因是,许多 BT 客户端都是闭源的;即使对于开源客户端,理解它们的实现也相当困难。通过实现特定的客户端,我们能够完全控制并清楚了解不同的客户端如何实现 MSE 协议。下面,我们列出一些测试的客户端。苏州大学本科生毕业设计(外文文献译文)95.1 流行的客户端20062007 年, Digital Music News 进行了一项关于 BT 客户端的秘密调查 15,数
28、据来自自愿使用一个在线病毒扫描网站的用户,共有 170 万台 PC 参与。结果表明,至少在Windows 平台下,Torrent 占据最大的市场份额。结果如表 1 所示。表 1 BitTorrent 客户端的市场份额下面列出我们测试的客户端。从列表中可以看出,不同 MSE 选项的支持程度相差很大。BitTorrent 6.0.2 (Build 8388). Windows 平台,闭源, “官方”BT 客户端。通过“选项”“参数设定”“BitTorrent ”,有三个协议加密选项。传出连接:禁用、启用、强制。另外,有一个“ 允许传入旧式连接 ”的复选框。Torrent 1.7.7 (Build
29、8179). Windows 平台,闭源。通过“选项”“参数设定”“BitTorrent” ,有三个协议加密选项。传出连接:禁用、启用、强制。另外,有一个“允许传入旧式连接 ”的复选框。BitComet 0.99. Windows 平台,闭源。通过“选项”“高级”“连接” ,有三个协议加密选项:自动检测、总是、禁用。Azureus 3.0.5.0. 多平台,Java ,开源。通过“工具”“选项”“连接”“传输加密” ,有两个最小加密等级选项:Plain、RC4。选项“ 请求加密传输”启用或禁用 MSE。另外,有两个复选框来选择允许传入和/或传出非加密连接,还有支持加密端口的 Tracker扩展
30、。KTorrent 2.1. Linux 平台,C/C+ ,开源。通过“设置”“配置 KTorrent”“常规”“加密” ,有两个选项分别为“使用协议加密 ”和“允许非加密连接”。5.2 测试结果攻击结果总结如表 2。下面我们说明各种攻击的详细情况。表 2 客户端弱点客户端 加密降级 密钥流重用 平凡子群 密钥流重用 离散对数 SKey 恢复 指纹泄露BitTorrent 苏州大学本科生毕业设计(外文文献译文)10Torrent BitComet Azureus KTorrent 加密降级 我们从两个不同方向测试了这些客户端。我们的客户端分别扮演 A(发起连接,客户端)和 B(接受连接,服务器
31、端)的角色。在两种场景中,接受测试的客户端设置为仅允许加密连接(例如,RC4) 。我们的客户端只提供或选择 plaintext(忽略另一方的 CryptoProvide 域) 。尽管正如前面提到的那样,在这种情况下,使用 MAC 就能方便地防止此类攻击。但是,根据 MSE 协议,这种情况将由客户端决定是否放弃连接。我们发现,Torrent 和 BitTorrent 是有漏洞的。我们暂时无法区分“传出连接”选项下“ 协议加密”中, “启用” 与“ 强制” 两个选项。KTorrent、Azureus 和 BitComet 都拒绝选择不支持的加密方式,因此没有发现漏洞。利用平凡子群重用密钥流 为了测
32、试此漏洞,我们向被测试的客户端发送了三个不同的值:1、p-1、0。如果 MSE 协议握手成功,那么就有可能通过子群的闭合性来强制重用密钥流。由于 MSE 协议并未规定当收到这些值后是否放弃连接,那么,这就完全由不同客户端的实现来决定(因此,根据 MSE 协议,这些值是完全合法的,但是很有可能客户端已经预见了此类攻击) 。许多封装好的加密类或包都能自动实现对此类公钥的认证,而且,一旦客户端采取一定措施就完全能够减小发生此类攻击的可能性。我们检查了仅有的两个开源客户端。在 KTorrent 中,MSE 协议的公钥生成部分是由一个 BigInteger 的类来完成的,因此可以认为是有漏洞的。有漏洞的
33、客户端有 Torrent、BitTorrent 和KTorrent,但是, Azureus 和 BitComet 都放弃了连接。利用离散对数重用密钥流 上面提到,仅有两个客户端是开源的。对于此类攻击,我们只检查了这两个客户端。Azureus 使用了封装的 Java 方法实现随机数生成算法,因此我们没有尝试关于计算离散对数的任何攻击。KTorrent 使用标准 C 语言函数 srand()来为伪随机数生成器(Pseudo-Random Number Generator,PRNG )做种。种子由当前系统时钟提供,且每经十次调用后重置。函数 srand 将提供的种子当作 32 位整数进行计算,因此,
34、所以值的熵的总和为 ;如图 6,漏洞用粗斜体表示。攻击者很容易离线计32510算出所有值,或者通过当前时间猜测种子值来进行更智能化的攻击。苏州大学本科生毕业设计(外文文献译文)11BigInt BigInt : random()Static Uint32 rnd = 0;if (rnd % 10 =0) /reset every 10 callsTimeStamp now = bt : GetCurrentTime ( ); / seeding on system timeSrand ( now ); /32-bit seedrnd = 0;rnd +;Uint8 tmp 20;for ( U
35、nit32 i = 0; i 20; i + )tmp i = ( Unit8 ) rand ( ) % 0x100;return BigInt : fromBuffer ( tmp, 20 );图 6 KTorrent 2.2.7 中随机数生成函数( bitint.cpp)种子指纹泄露 由于此漏洞是 MSE 协议本身引起的,因此,任何实现 MSE 协议的客户端显然都有此漏洞。6 结束语近年来,Internet 用户对于 BitTorrent 协议用于内容传输颇有兴趣,从而占据了大部分网络流量。MSE 协议针对此类数据提供了混淆功能,并为节点间提供一定的保密和认证功能。本文中,我们提出了 MS
36、E 协议的一系列重要漏洞。我们强调,对于 ISP 来说,这些漏洞并不能帮助他们限制网络上 BT 应用的带宽,但 ISP 能对特定目标进行有效攻击,或者被执法机关用于还原看似加密的数据。我们已经说明了 MSE 协议并不能对特定目标的攻击提供有效保护。我们对 MSE 协议至少提出三点改进意见:1. 对消息增加消息认证码(Message Authentication Codes,MAC) ;2. 若公钥(如 )不满足 ,则放弃连接;AK1modAp3. 去除或随机化加密填充部分,尤其是 PadC 和 PadD。针对种子指纹泄露的解决方案需要进行更深入的研究,需要考虑效率、实用性、安全性等因素。总体而言,MSE 协议很好地实现了数据混淆功能。除了数据混淆之外,用户希望获得如认证、保密等其他功能。然而,由于存在本文提到的攻击,这些功能的实现不能依赖于 MSE 协议。