通过https连接的安全隧道的制作方法

文档序号:7679189阅读:1527来源:国知局
专利名称:通过https连接的安全隧道的制作方法
通过HTTPS连接的安全隧道 背景
计算机之间的通信造成了关于数据业务安全,在某些情况下甚至关于 端点计算机本身的漏洞点。多种技术可用于解决网络安全。存在用于保护
单个逻辑连接上的应用程序到应用程序通信的技术,如通常用于web浏览 器到web服务器超文本HTTP业务的安全套接字层(SSL)。存在通过保 护网络连接本身而非两应用程序之间的业务来保护端点之间的所有数据业 务的其它技术。其示例是若干形式的虚拟专用网络,如点对点隧道协议 (PPTP)和第二层隧道协议(L2TP) /网际协议安全(IPSec)。虚拟专用 网络在一端加密并在另一端解密来保护端点之间的所有业务免遭窃听和中 间人攻击。
然而,这些安全协议通常要求诸如IPSec证书等特殊设置,或使用往 往被企业级防火墙阻塞的不标准的端口。隧道业务可在阻塞通用路由封装 (GRE阻塞)的因特网服务提供商(ISP)处被阻塞。而隧道协议的另一不 方便之处是使用具有本地分配的IP地址的网络地址转换(NAT)。
另外,即使创建了安全信道,或例程超时或网络问题引起的较低级连 接中的中断也可以打断较高级应用程序连接。从这种服务中断中恢复通常 要求在重新连接网络后的应用程序到应用程序恢复。
概述
被设计为对NAT和现有网络安全措施友好的隧道协议使用通过超文 本传输协议安全(HTTPS)连接的安全隧道协议。与正常的HTTPS连接形 成对比,被指定为安全套接字隧道协议即SSTP的安全隧道协议以例如点对 点协议(PPP)等标准协议的方式来支持计算机和相关联的服务器之间的所 有网络业务。HTTPS实际上被所有防火墙和ISP接纳,并与NAT兼容。以 下描述的SSTP协议使用若干技术来向应用程序呈现全面的、标准的连接协 议,以便在无需修改或知晓底层连接的情况下使用。SSTP甚至用内核和用户模式之间的若干跨越来维护其它常见协议的性能特性。SSTP的另一方面 支持在客户机和服务器之间的cookie交换,从而在连接丢失的情况下允许 快速重新连接。该快速重新连接能力允许在应用程序知道任何中断之前重 新建立连接。
附图简述


图1是适用于实现本发明的计算机的简化的和代表性框图2是经由SSTP连接来连接的两个计算机的简化的和代表性框图3是支持SSTP连接的功能块的简化的和代表性框图;以及
图4是支持SSTP连接的一实施例的功能块的简化的和代表性框图。
详细描述
尽管下文阐明了众多不同实施例的详细描述,但是应当理解,该描述 的法律范围由本发明所附的权利要求书的言辞来限定。该详细描述应被解 释为仅是示例性的,且不描述每一可能的实施例,因为描述每一可能的实 施例即使不是不可能的也是不切实际的。可使用现有技术或在本申请提交 日之后开发的技术来实现众多替换实施例,而这仍落入权利要求书的范围 之内。
还应该理解,在本专利中,除非使用句子"如此处所用,术语'_'
特此被定义为意指……"或者类似句子来明确地定义一个术语,否则不管 是明确地还是含蓄地,都没有限制该术语意义超出其平常或普通意义的意 图,并且,这一术语不应该被解释为被限制在基于本专利的任何部分中(除 了权利要求书的语言之外)所做的任何陈述的范围中。就本专利所附的权 利要求书中所述的任何术语在本专利中以与单数意义相一致的方式来引用 而言,这是为简明起见而如此做的,仅仅是为了不使读者感到混淆,且这 类权利要求术语并不旨在隐含地或以其它方式限于该单数意义。最后,除 非一权利要求要素是通过叙述单词"装置"和功能而没有叙述任何结构来 定义的,否则任何权利要求要素的范围并不旨在基于35 U.S.C. §12第6段 的应用来解释。许多发明性功能和许多发明性原理最佳地使用或利用软件程序或指令 以及诸如专用IC等集成电路(IC)来实现。期望本领域的普通技术人员虽 然可能要进行大量的工作和由例如可用时间、现有技术以及经济问题促动 的许多设计选择,但是当受到此处所公开的概念和原理的指引时仍能够容 易地以最小的实验来生成这些软件指令和程序以及IC。因此,为了简明以 及最小化使根据本发明的原理和概念晦涩的任何风险,对这些软件和ic(如 果有的话)的进一步讨论将限于对于较佳实施例的原理和概念所必需的那 些讨论。
图1示出可以主存本发明各实施例的一个或多个的计算机110形式的 计算设备,且被详细讨论以提供后续讨论的上下文。
计算机110的组件可包括但不限于,处理单元120、系统存储器130 以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线 121。系统总线121可以是几种类型的总线结构中的任何一种,包括存储器 总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的 局部总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能 由计算机110访问的任何可用介质,而且包含易失性、非易失性介质以及 可移动和不可移动介质。作为示例而非局限,计算机可读介质可以包括计 算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可 读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现 的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但 不限于,RAM、 ROM、 EEPROM、闪存或其它存储器技术、CD-ROM、数 字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁 性存储设备、或能用于存储所需信息且可以由计算机iio访问的任何其它 介质。上述中任一组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介 质,如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入 /输出系统133 (BIOS)包括如在启动时帮助在计算机110内的元件之间传 输信息的基本例程,它通常储存在ROM131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在其上操作的数据和/或程序模块。作为示
例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136 和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机 存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取 或向其写入的硬盘驱动器140,从可移动、非易失性磁盘152中读取或向其 写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、 非易失性光盘156中读取或向其写入的光盘驱动器155。可以在示例性操作 环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括 但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固 态ROM等等。硬盘驱动器141通常由不可移动存储器接口,诸如接口 140 连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储 器接口,诸如接口 150连接至系统总线121。
上文讨论并在图1中示出的驱动器及其关联的计算机存储介质为计算 机系统110提供了计算机可读指令、数据结构、程序模块和其它数据的存 储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序 145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统 134、应用程序135、其它程序模块136和程序数据137相同,也可以与它 们不同。操作系统144、应用程序145、其它程序模块146和程序数据147 在这里被标注了不同的标号是为了说明至少它们是不同的副本。
计算机110可使用至一个或多个远程计算机,如远程计算机180的逻 辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、 路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于 计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备 181。图1中所示的逻辑连接包括局域网(LAN) 171和广域网(WAN) 173, 但也可以包括其它网络。这样的联网环境在办公室、企业范围计算机网络、 内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170 连接至LAN 171。当在WAN联网环境中使用时,计算机110通常包括调制解调器172 (电话、电缆、DSL等)或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以连接至系统总线121、网络接口 170或其它适当的机制。在网络化环境中,相对于计算机110所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非局限,图1示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
图2是经由SSTP连接来连接的两个计算机的简化的和代表性框图。第一计算机202,例如支持诸如邮件、web浏览、数据库访问等用户应用程序的客户机计算机,可以耦合到第二计算机204。在一示例性实施例中,第一计算机202在企业或机构防火墙或安全区的外面。第二计算机204可以是支持第一计算机20上的应用程序的客户机-服务器通信的服务器。然而,在许多实施例中,第二计算机204可以是专用于支持来自企业或机构服务器或安全区外面的计算机的业务的远程访问服务器。第二计算机204可以在所谓的'非军事化区'中,其用来帮助受保护网络和外面的尝试访问受保护网络的实体之间的安全接口。两个计算机202、 204可以经由网络206连接。应用程序208和由应用程序n 210表示的其它应用程序可以使用客户机网络接口 212来发送和接收数据。客户机网络接口 212可以向应用程序208、 210呈现通信API214。通信API的一个示例是点对点协议(PPP)。可以支持任何协议,只要两侧都同意该协议。客户机网络接口 212还包括用于耦合到网络206的HTTPS模块216。
在服务器侧,对应于客户机网络接口 212的服务器网络接口 218可以包括耦合到网络206的HTTPS模块220,且还可以包括对应于客户机网络接口通信API 214的通信API 224。通信API 224可以附加到主存应用程序226、 228、 230的一个或多个服务器上。在一实施例中,服务器应用程序之一可以包括认证服务器230。认证服务器230可被用来在会话开始期间认证客户机凭证,且还可以包括对作为建立HTTPS会话的一部分的SSL密钥交换的支持。第二计算机204和各应用程序服务器226、 228、 230之间的业务可以使用正常的IP/IP路由协议来路由。并且,客户机上的一示例性实施例和应用程序,如web浏览器,可以开始并与诸如ISP等网络连接。可以建立从客户机网络接口 212到服务器网络接口 218的连接,以建立SSTP隧道。SSTP隧道将在以下更详细讨论。在建立安全的SSTP隧道后,服务器网络接口 218可以使用例如PPP等同意的协议,来向一个或多个服务器应用程序226、 228、 230转发业务。在一示例性实施例中,例如在企业环境中,认证服务器230可被用来建立第一计算机202处的用户的身份。 一旦认证了用户,则用户可被授权访问一个或多个企业应用程序,如电子邮件、数据库访问、企业公告板等。
图3是支持SSTP连接的功能块的示例性框图,其示出了来自图2的第一或第二计算机202、 204的外出业务。通过SSTP协议的数据传输可以遵循三阶段过程安全会话建立、SSTP控制业务和SSTP数据业务。在安全会话建立期间,可以在客户机和服务器之间进行TCP连接,随后进行标准的SSL握手,包括Diffie-Hellman密钥交换。这建立了HTTPS会话。
一旦HTTPS会话就绪,则SSTP驱动程序(SSTPDVR)可以激活管理SSTP协议的状态机。PPP会话协商随后可以通过SSTP连接进行。在PPP会话就绪后,该信道为经由PPP协议的隧道应用程序业务做好准备。
在初始会话设置和安全协商完成后,应用程序302可以向诸如公知的Winsock接口等套接字接口 304发送数据。套接字接口 304可以将数据沿着协议栈向下传递到TCP/IP接口 306。 TCP/IP接口随后可以确定该分组是去往STTP隧道的,并将该数据路由到适当的协议层一在该实施例中是PPP模块308。 SSTP协议与诸如PPTP 310或L2TP 312等其它安全协议存在于同一层。PPP模块308执行PPP成帧,且封装将该数据传递到专用SSTP模块314。 SSTP模块314处理内核和用户模式之间的交互,执行专门的缓冲,并支持SSTP命令集。经处理的数据被发送到HTTPS模块316以供使用SSL来加密,并被发送回TCP/IP接口 306。但是这一次,TCP/IP接口306识别出该业务是标准HTTPS业务并将其路由到网络318。 HTTPS业务被广泛用于诸如因特网商务等事物,且一般不被ISP或防火墙阻塞。在与web代理一起使用时,HTTPS业务将被转发到适当的端口,如标准HTTPS端口 443 。通过使用SSTP协议的安全隧道的数据可以包括控制业务和数据业务。以下是用于控制和数据业务的示例性命令集及其对应的分组格式。
SSTP协议包括2类分组
- 控制分组(SCP-SSTP控制分组)
- 数据分组(SDP-SSTP数据分组)
顾名思义,控制分组将是某种信道专用控制消息,而数据分组承载来自更高层的数据。
SSTP协议具有基本头部,该头部是跨控制和数据消息共同的。
typedef BYTE SSTP—PACKET—TYPE, *PSSTP—PACKET—TYPE;#define SSTP—PACKET—TYPE—CONTROL ((BYTE)O)#defme SSTP—PACKET—TYPE—DATA ((BYTE)l)
#define SSTP—VERSION—1 ((BYTE)OxOOO 10000)
typedef struct _SSTP—LENGTH
USHORT Reserved : 4jUSHORT Length :12;} SSTP—LENGTH, *PSSTP—LENGTH;
typedef struct —SSTP—HEADER
BYTE Version;BYTE Reserved";BYTE ControlMessage:l;SSTP—LENGTH Length;union
SSTP—CONTROL_MES SAGE ControlMessage;BYTE Payload[O]
};
} SSTP—HEADER, *PSSTP—HEADER;Version (版本)-1字节
Control (控制)/Data (数据)-1字节,只有其最低有效位被使用。其余是保留(Reserved)位
Length (长度)-2字节-限为12位
0 8 1620 24 32
+--------+-----+---+ 一 +-----+ _ +-----+-----+-----+ —-
1 版本 I 保留IC |X I X|X I X| 长度 I...+--------+-----+---+—+-----+_ +-----+-----+-----+ --
Length字段是该SSTP分组的不包括SSTP—HEADER的长度。其不能超过4095字节。SSTP协议不应接受超过该限制的传输请求(来自更高层一在此情况下是PPP),因为否则SSTP协议将必须处理分段。
控制消息格式
如上所述,SSTP控制消息将在SSTP—HEADER之后呈现,假定PacketType (分组类型)是SSTP—PACKET—TYPE_CONTROL。控制消息将包括ControMessageType (控制消息类型)和形成完整的控制消息的多个属性-长度-值字段。控制消息类型定义如下typedef enum —SSTP—CONTROL—MESSAGE—TYPE
SSTP—MESSAGE—CONNECT—REQUEST,SSTP—MESSAGE—CONNECT—ACK,SSTP—MESSAGE一CONNECT—NACK,SSTP—MESSAGE—CAIX—CONNECTED,SSTP_MESSAGE—FAST—RECONNECT_REQUEST,SSTP—MESS AGE—FAST_RECONNECT—ACK,SSTP—MESSAGE—ECHO_REQUEST,SSTP_MESSAGE_ECHO_RESPONSE,SSTP—MESSAGE—DISCONNECT,SSTP—MESSAGE—DISCONNECT—ACK,SSTP—MESSAGE ABORT—CALL}SSTP—CONTROL—MESSAGE_TYPE,*PSSTP_CONTROL_MESSAGETYPE;
typedef struct —SSTP—CONTROL—MESSAGE
USHORT MessageType;USHORT NumAttributes;BYTE Attributes
;} SSTP—CONTROL—MESSAGE, *PSSTP_CONTROL—MESSAGE;
0 8 16 24 32
+----+----+----+----+----+----+----+----+ ——
1 消息类型 i 属性数量 I...
+----+----_^-----+----+----+----+----+----+ ——typedef struct —SSTP—CONTROL ATTRIBUTE
BYTE Reserved; 〃可被用于关于属性的元数据
BYTE Attributeld; SSTP—LENGTH AttributeLength;
BYTE Value[O]; 〃接下来的大小为AttributeLength的字节
} SSTP—CONTROL—ATTRIBUTE, *PSSTP—CONTROL—ATTRIBUTE;

+---
I
+ _ —
保留
8 16 .+----+----+----+ —
I属性ID I保留l
24
.—+----+ —
属性长度
32 —+---

—+----+----+——
typedef enum —SSTP—ATTRIBUTE
SSTP—ATTRIBUTE—SUPPORT—FAST—RECONNECT, SSTP—ATTRIBUTE—LINK—COOKIE, SSTP—ATTRIBUTE—COMPLETION_STATUS, SSTP—ATTRIBUTE—ENCAPSULATED—PROTOCOL—ID }SSTP—CTRL—MSG—ATTRIBUTE,*PSSTP—CTRL—MSG_ATTRIBUTE;
SSTP—ATTRIBUTE—SUPPORT—FAST_RECONNECT
这是无值属性且它的存在意味着客户机正在使用不可靠(如无线)介 质或代理在连接上有时间限制并将要求对快速重新连接(Fast-Reconnect) 的支持。在就这一点达成一致后,在HTTPS介质由于某种原因而停机时,客户机和服务器都将不清除该连接上下文并向更上层指示。连接信息在被 清除之前将被持久保存某一预定持续时间。如果未就这一点达成一致,则 在从底层介质检测到连接丢失时,该连接上下文将被立即清除。注意,只 有在底层介质经历TCP会话异常中止时,该连接上下文才将被维护以用于 快速重新连接。
该属性还在其中快速重新连接是不可能的实现之间提供兼容性。这将 防止在不支持的场景中不必要地持久保持连接上下文。
SSTP_ATTRIBUTE_LINK_COOKIE
该属性是将被用于快速重新连接场景的可任选属性。在客户机和服务 器都支持快速重新连接时,服务器将向客户机提供链路cookie作为 SSTP_MESSAGE_CONNECT—ACK的 一 部分。这是客户机将需要将其作为 向服务器的SSTP—MESSAGE—FAST—RECONNECT—REQUEST的一部分来 传递的cookie,来标识该呼叫需要相关联的上下文。
SSTP—ATTRIBUTE—COMPLETION—STATUS
这被用来指示请求的完成状态。在控制消息中这可以出现超过一次。
值是8字节大小并具有以下结构
typedef struct —SSTP—ATTRIB—VALUE—COMPLETION—STATUS
BYTE Reserved[3]; BYTE Attribld; DWORD Status; BYTE AttribValue
; } SSTP—ATTRIB_VALUE—COMPLETION—STATUS,
* P S STP ATTRIBVALUE—COMPLETION—STATUS;在NAK消息中,该属性将提供关于特定属性为何被拒绝的更多信息。
例如,服务器可以用 Attribld (属性 Id ) SSTP—ATTRIBUTE—SUPPORT—FAST_RECONNECT禾卩Status (状态) ERROR—NOT_SUPPORTED来响应,以指示该特征不被服务器支持。
如果原始属性具有服务器不遵守的某一特定值,该属性将具有被拒绝 的属性专用的、以AttribValue (属性值)开始的某一值。例如,如果客户 机正在协商具有值 A 、 B 和 C 的 SSTP—ATTRIBUTE—ENCAPSULATED—PROTOCOL—ID,如果服务器不接受 B&C,则其将发送2个具有保持未被接受的协议ID的USHORT的 AttribValue的COMPLETION—STATUS属性。如果万一被拒绝的属性值超 过64字节,则在NAK消息中,值大小将被截到64字节。
SSTPATTRIBUTE—ENCAPSULATED—PROTOCOL—ID 这指是将通过SSTf封装发送的协议&。在一给定 肖息中,可以有关 于要支持的所有各种协议ID的多个这种属性。
typedef enum —SSTP—ENCAPSULATED—PROTOCOL—ID
SSTP—PROTOCOLJD—PPP =1 } SSTP—ENCAPSULATED—PROTOCOL—ID
*PSSTP—ENCAPSULATED—PROTOCOL—ID;
SSTP_MESSAGE—CONNECT_REQUEST
在客户机尝试与服务器建立SSTP会话时,这将是被发出的第一个消 息。这具有以下属性
SSTP—ATTRIBUTE—SUPPORT—FAST—RECONNECT [可任选] SSTP ATTRIBUTE ENCAPSULATED PROTOCOL ID基于较早请求的结果,客户机能以关于各种属性(或不同属性集)的 不同值来重新发送该信息。存在预定义数量的参数重新协商,其后连接将 被异常中止。
SSTP—MESSAGE—CONNECT—ACK
这响应于连接请求来发送,且在服务器分配FAST—RECONNECT的情 况下,其将具有链路cookie 。否则,该消息将不具有任何 SSTP_ATTRIBUTE—LINK—COOKIE属性。
S STP—MES SAGE—CONNECT—NAK
这响应于连接请求来发送,且其将具有服务器不接受的各属性的列表。 响应于NAK,客户机必须发出具有它想要的所有属性及它们的值的新的 CONNECT一REQUEST。它不能只提供经调整的值。除非服务器正在确认, 否则其将不存储客户机所传递的属性值。
SSTPMESSAGE—CALL—CONNECTED
这将由客户机响应于SSTP—MESSAGE_CONNECT_ACK来发送以完 成与服务器的握手。这不具有与其相关联的任何属性。
SSTP—MESSAGE—FAST—RECONNECT—REQUEST
这将由客户机用来进行快速重新连接(如果其已经协商过了)。这将 具有表示现有链路cookie值的SSTP—ATTRIBUTE—LINK_COOKIE。
SSTP—MESSAGE—FAST—RECO丽ECT一ACK
这将由服务器在成功的快速重新连接的情况下向客户机发送。如果快 速重新连接未成功,则服务器将用ABORT (异常中止)请求使该连接异常 中止。SSTP_MESSAGE—ECHO_REQUEST
这是保活消息且其不具有任何相关联的属性。
SSTP—MESSAGE_ECHO_RESPONSE
这是响应于回送(echo)请求所发送的保活消息且其具有相关联的任 何属性。如果未从远程站点接收到该响应达3次重复,并且没有数据业务 流,则该连接将被异常中止。
SSTP—MESSAGE—DISCONNECT
这将由客户机/服务器的任一个来发送以启动断开连接。在发出断开连 接请求之后从服务器接收到的所有数据分组将被丢弃。这可任选地具有 SSTP—ATTRIBUTE—COMPLETION—STATUS。在向远程站点发出断开连接 请求后,本地站点应当等待断开连接超时或直到接收到断开连接ACK为 止。将不进行任何重新传输。
SSTP_MESSAGE—DISCONNECT—ACK
在从远程站点接收到SSTP—MESSAGE—DISCONNECT后,这将由客户 机或服务器发出。这将不具有任何属性。
S S TP—ME S S AGE—AB ORT一C ALL
这将在基本SSTP协商中存在失败时发出。其可能是无法找到连接请 求参数,或其可能是因为不能将快速重新连接cookie匹配到连接上下文而 引起的。这将具有SSTP—ATTRIBUTE—COMPLETION—STATUS来指示失 败原因。
数据消息格式
在ControlMessage位是OFF (关闭)时,净荷将表示所协商的协议数 据。注意,如上所述, 一个实施例只支持一个协议的净荷。然而,在另一 实施例中,SSTP信道协议可被用来路由不同种类协议的分组。图4是支持SSTP连接的一个实施例的功能块的简化的和代表性框图, 其示出了关于操作的用户和内核模式的功能块的关系。该图被用来更详细
地示出与SSTP协议相关联的控制和数据业务。
用户模式模块402支持所有用户应用程序且被限制为不能直接访问硬 件。内核模式模块404维持对所有硬件资源的控制,且是可以直接访问诸 如网络接口等硬件的唯一模块。在该说明性附图中,用户模式模块是应用 程序/套接字接口 406、远程访问连接管理器和PPP引擎408 (RASMAN)、 SSTP月艮务410 (SSTPSVC)禾口 HTTP/WinHTTP丰莫块412。
内核模式模块包括作为应用程序到硬件网络协议的定义的网络驱动程
序接口规范414 (NDIS)和HTTP/HTTPS系统文件416。 NDIS包括TCP/IP 模块418、广域网成帧模块420、 NDIS广域网模块422和SSTP驱动程序 424 (SSTPDRV)。图4的虚线指示跨模式连接,而实线指示模式内连接。 在操作中,在成功建立HTTPS会话(例如,TCP连接+ SSL握手)后, 诸如图2的第一计算机202等第一计算机处的SSTPSVC 410将与诸如图2 的第二计算机204等远程站点设置会话上下文。g卩,在SSL握手完成后, SSTPSVC 410将在HTTPS模块内触发上下文设置活动。在这完成后, SSTPDRV 424将随后通过HTTPS会话开始SSTP有限状态机。在该阶段期 间,只有SSTPDRV/SSTPSVC 410 424和HTTPS 416模块在交互。 一旦该 设置完成,将在NDISWAN422和SSTP会话之间创建绑定。远程访问连接 管理器(RASMAN) 408由NDISWAN通知SSTP会话,并通过SSTP连接 启动PPP协商。PPP有限状态机在RASMAN408中(在已加载的PPP模块 内)。PPP控制分组将直接从RASMAN 408传递到NDISWAN 422。 NDISWAN422将将其传递到SSTPDRV424。 SSTP驱动程序将该分组移交 给SSTPSVC 410,而SSTPSVC 410将其传递到HTTPS模块412。以正常 的方式,HTTPS模块412将该数据传递到TCP/IP模块418以通过网络路由。 只具有初始头部的未完成的PUT请求将被发送给远程服务器。服务器将立 即用PUT响应回复。PUT请求延续(作为实体本体)将形成客户机到服务 器数据业务且响应实体本体将是服务器到客户机数据业务。在交换头部之 后,则SSTP响应可供使用。只有在PPP协商完成之后,信道才为隧道应用程序业务做好准备。
在信道隧道(即,SSTP会话)准备好时,数据业务可以通过该链路来
承载。内核模式TCP/IP模块418接受来自用户模式中的应用程序和套接字 接口 406的数据分组形式的业务。TCP/IP模块418标识分组是通过SSTP 隧道来路由的,并将其移交给WAN映射模块420。 WAN映射模块420将 使该连接(SSTP)映射到正确的接口并将其传递到NDISWAN模块422。 这大致是图3的PPP模块308的等效方案。NDISWAN负责PPP成帧和压 縮。可以在该层的PPP模块处进行的任何加密都被关闭,因为其将是SSL 加密的。从该点处开始,操作序列将与以上控制业务相同。即,到RASMAN 408、 SSTPDRV 414、 SSTPSVC 410禾卩HTTPS模±央416。 一旦SSTP/PPP 封装的数据字节到达HTTPS模块,则HTTPS模块在进行SSL加密之后通 过TCP连接(默认端口 443)来发送该数据字节。所以,该分组再次从用 户模式HTTPS模块来到TCP/IP模块418,但路由将确定该业务要通过以太 网接口 (未示出)送出,而非像原始应用程序数据一样被送到WAN成帧 模块420。
SSTP达到诸如连接数量、连接时间和带宽等与其它隧道协议相似的性 能特性的目标可能要求优化来克服用户和内核模式之间的若干跨越。具体 地,在穿过SSTP协议的若干附加模块时,可以通过避免不必要的缓冲区复 制、分页、上下文切换和无序发送/接收来增加性能。另外,可以通过保证 其它协议有公平带宽可用,即SSTP隧道不失控来增加性能。
由于SSTPSVC 410负责发送/接收,所以其用于发送/接收的缓冲区在 用户模式中也是可用的。为避免缓冲区复制以及避免与用户模式缓冲区相 关联的任何分页操作,发送操作将是来自SSTPSVC的拉(PULL)操作, 而接收操作将是来自SSTPSVC的推(PUSH)。这将保证缓冲区可用于内 核模式SSTPDRV 424而不引起附加的上下文切换或分页操作。上下文切换 将通过使用将在用户模式线程的上下文中发生的快速I/O来减少。(快速 1/0涉及绕开I/0子系统并直接将数据复制到输出寄存器。)此外,为避免 给定隧道的无序发送/接收,发送和接收可被串行化。
在要将分组发送到远程端点时,在到达SSTPDRV 424时将采取以下动424时一样排队
如果SSTPDRV 424未在进行快速IO(FastIO)(由发送触发器(Send Trigger) IRP的存在/缺失来表示),其只是继续对分组进行排队
如果发送触发器IRP已在SSTPDRV 424中,则完成IRP以向用户
模式指示有分组要发送
用户模式将向其线程池排队工作项来从内核模式中拉出各字节。这 有2个优点 一 串行化,因为每一隧道只有一个工作项,并且第二 一 随处理器的数目縮放(因为来自不同隧道的工作项可以跨处理器来最 大可能限度地利用CPU资源)
在工作项执行时,其将进行快速10来取出各字节以发送,且对 HTTP层进行缓冲区排队来异步地进行发送操作,并用新缓冲区进行 取出直到快速IO返回0字节时为止。这减少了与使用1/0完成端口的 典型的异步完成相关联的上下文切换,并且内核处的缓冲区要求(对 于异步缓冲区)不再是必要条件。
如果达到MaxNumWorkerlterations (最大量工作重复),即使快速 IO正在进行,也要重新调度工作项以便下一可用工作项被执行。这将 允许公平的带宽可用性。
如果快速IO返回要发送0字节,则发送触发器IRP将被再次排队。 在接收数据时,HTTP层将向SSTPSRV 410指示所接收到的字节(通 过1/0完成端口或其它异步回叫机制)。以下操作序列可以发生
在从HTTP层412获得分组后,所接收到的缓冲区被在服务处排 队
如果要处理接收到的字节的工作项已在进行,则不需做什么事。 否则,将该工作项排队。
在该工作项中,继续进行快速IO请求来指示所接收到的字节。 SSTPDRV 424将自己应付对从快速IO例程接收到的字节的处理。这 提供串行化以及减少了上下文切换。
所接收到的帧将由NDIS层描绘并复制以呈现给更上层驱动程序层
如果指示给小型端口 ( miniport )的缓冲区的数量超过 MaxNumWorkerlterations,则重新排队该工作项。这又是为了避免失控 隧道,在失控隧道中, 一个隧道上的高数据传输降低带宽可用性或另 一隧道可用的处理时间。
另外,TCPNagle,即低级分组缓冲将被关闭,以允许立即发送和接收 操作。缓冲区大小可被选为足够大,以便TCP连接被利用到可能的最高速率。
尽管上文阐明了众多不同实施例的详细描述,但是应当理解,本专利 的法律范围由本专利所附的权利要求书的言辞来限定。该详细描述应被解 释为仅是示例性的,且不描述本发明的每一可能的实施例,因为描述每一 可能的实施例即使不是不可能的也是不切实际的。可使用现有技术或在本 专利提交日之后开发的技术来实现众多替换实施例,这仍将落入定义本发 明的权利要求书的范围之内。
由此,可在此处所描述和示出的技术和结构上作出许多修改和变化而 不脱离本发明的精神和范围。因此,应当理解,此处所描述的方法和装置 仅是说明性的,且不限制本发明的范围。
权利要求
1.一种支持本地和远程实体之间的安全通信的方法,包括在所述本地和远程实体之间建立会话;使用HTTPS端口在所述会话上建立加密通信层;使用所述HTTPS端口在所述本地和远程实体之间发送控制数据;使用所述HTTP端口在所述会话上创建标准协议管道;使用所述PPP协议管道通过所述HTTPS端口流传输经加密的数据传输。
2. 如权利要求1所述的方法,其特征在于,所述会话是TCP会话。
3. 如权利要求1所述的方法,其特征在于,所述加密通信层遵循安全 套接字层和传输层安全中的一个。
4. 如权利要求1所述的方法,其特征在于,所述标准协议管道是点对 点协议(PPP)连接。
5. 如权利要求4所述的方法,其特征在于,所述PPP协议是在远程访 问连接管理器服务中管理的。
6. 如权利要求1所述的方法,其特征在于,还包括使用密钥来加密数 据传输,所述密钥是在使用HTTPS端口在所述会话上建立所述加密通信层 时协商的。
7. 如权利要求1所述的方法,其特征在于,在所述本地和远程实体之 间发送控制数据包括共享表示所述客户机和服务器之间的会话连接数据的 cookie 0
8. 如权利要求6所述的方法,其特征在于,还包括在所述会话断开后 请求重新建立所述会话时,在所述本地和远程实体之间发送所述cookie。
9. 如权利要求1所述的方法,其特征在于,在所述本地和远程实体之 间发送控制数据包括支持用于管理以下之一的安全套接字隧道协议(SSTP):呼叫建立、以隧道传送任意协议、在传输中发生中断时的重新 连接服务、和缓冲区管理。
10. 如权利要求9所述的方法,其特征在于,支持所述SSTP协议包 括支持控制分组和数据分组共同的且包括控制/数据位和长度字段的SSTP头部,其中任一分组的净荷都小于4095字节。
11. 如权利要求9所述的方法,其特征在于,支持SSTP控制分组包 括支持控制消息,所述控制消息包括连接请求、包括链路cookie的连接确 认、连接否认、呼叫己连接、快速重新连接请求、快速重新连接确认、回 送请求、回送响应、断开连接、断开连接确认、和异常中止呼叫中的至少 一个。
12. —种支持通过HTTPS连接的与客户机进程的安全隧道的服务 器,包括用于支持使用公知协议的服务器侧连接的服务器模块; 用于支持与所述客户机的HTTPS连接的客户机模块; 用于支持与所述客户机进程的安全套接字隧道协议(SSTP)隧道的 SSTP模块,所述SSTP模块提供对快速重新连接的支持,所述快速重新连 接用于在维持安全协议连接的同时恢复断开的较低层连接。
13. 如权利要求12所述的服务器,其特征在于,所述断开的协议是 PPP连接,且所述安全协议连接是所述HTTPS连接。
14. 如权利要求12所述的服务器,其特征在于,所述SSTP模块提 供控制和数据分组,所述控制分组包括关于以下中的至少一个的消息连 接请求、包括链路cookie的连接确认、连接否认、呼叫已连接、快速重新 连接请求、快速重新连接确认、回送请求、回送响应、断开连接、断开连 接确认、和异常中止呼叫。
15. 如权利要求12所述的服务器,其特征在于,所述SSTP模块将 cookie传递给客户机进程以供在恢复所述断开的安全协议连接时使用。
16. 如权利要求15所述的服务器,其特征在于,所述cookie标识与 所述断开的安全协议连接相关联的会话。
17. —种支持客户机和服务器之间的安全通信的方法,包括 从内核模式TCP/IP模块处的应用程序接收数据; 将所述数据路由到映射模块并确定所述数据的连接映射; 将所述数据传递到网络数据接口 (NDIS)模块并使用公知协议准备所述数据;在用户模式HTTPS模块处加密所准备的数据以形成经加密的数据; 使用端口 443通过TCP连接从所述客户机向所述服务器发送所述经加 密的数据。
18. 如权利要求17所述的方法,其特征在于,还包括 经由所述内核模式中的、耦合到所述NDIS模块的安全协议驱动程序和用户模式中的、耦合到所述HTTPS模块的安全协议服务,将所述NDIS 模块接口到所述HTTPS模块。
19. 如权利要求18所述的方法,其特征在于,来自所述安全协议服 务的数据发送和接收操作使用快速IO来进行与所述安全协议驱动程序的内核模式数据传输,来避免上下文切换和分页。
20. 如权利要求17所述的方法,其特征在于,所述公知协议是点对点协议连接。
全文摘要
许多安全的隧道要求诸如L2TP和PPTP等需要特殊处理、授权或安全证书的协议。这通常使它们不能用在企业或机构网络和外面的、公共的网络之间。安全套接字隧道协议(SSTP)在内核和用户模式中添加驱动程序,以便通过常见的HTTPS端口来路由诸如PPP等标准协议业务。在网络中断的情况下,交换会话cookie允许快速重新连接底层的HTTPS连接而不影响更高层的应用程序。
文档编号H04L12/28GK101517979SQ200780035490
公开日2009年8月26日 申请日期2007年9月20日 优先权日2006年9月26日
发明者K·C·瓦尼亚拉詹, M·阿皮亚, S·贾殷, V·贾殷 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1