KR20090058526A - 보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버 - Google Patents

보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버 Download PDF

Info

Publication number
KR20090058526A
KR20090058526A KR1020097005676A KR20097005676A KR20090058526A KR 20090058526 A KR20090058526 A KR 20090058526A KR 1020097005676 A KR1020097005676 A KR 1020097005676A KR 20097005676 A KR20097005676 A KR 20097005676A KR 20090058526 A KR20090058526 A KR 20090058526A
Authority
KR
South Korea
Prior art keywords
protocol
sstp
data
module
connection
Prior art date
Application number
KR1020097005676A
Other languages
English (en)
Other versions
KR101458231B1 (ko
Inventor
비카스 자인
마단 아피아
카디르벨 촉칼링감 반니아라잔
사미르 자인
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20090058526A publication Critical patent/KR20090058526A/ko
Application granted granted Critical
Publication of KR101458231B1 publication Critical patent/KR101458231B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

많은 보안 터널은 특수한 취급, 권한 부여 또는 보안 인증서를 요하는 프로토콜(L2TP 및 PPTP 등)을 필요로 한다. 이것은 종종 회사 또는 정부 기관 네트워크와 외부의 공중 네트워크 사이에서 사용하기 위해 이들을 제거한다. SSTP(secure socket tunnel protocol)는 통상의 HTTPS 포트를 통해 PPP 등의 표준 프로토콜 트래픽을 라우팅하기 위해 커널 모드 및 사용자 모드 둘다에서 드라이버를 추가한다. 네트워크 중단의 경우에, 세션 쿠키의 교환은 상위 레벨 애플리케이션에 영향을 주지 않고 하부의 HTTPS 접속의 신속한 재접속을 가능하게 해준다.
HTTPS 접속, 보안 터널, PPP, 세션 쿠키, 커널 모드, 사용자 모드

Description

보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버{SECURE TUNNEL OVER HTTPS CONNECTION}
컴퓨터들 간의 통신은 데이터 트래픽, 어떤 경우에, 심지어 종단점 컴퓨터 자체의 보안과 관련하여 취약점을 야기한다. 네트워크 보안을 해결하기 위해 많은 기법들이 이용가능하다. 웹 브라우저-웹 서버간 하이퍼텍스트 HTTP 트래픽에 종종 사용되는 SSL(secure socket layer)과 같은 단일의 논리적 접속을 통해 애플리케이션간 통신(application-to-application communication)을 보호하는 기법들이 있다. 2개의 애플리케이션 간의 트래픽보다는 네트워크 접속 자체를 보호함으로써 종단점들 간의 모든 데이터 트래픽을 보호하는 다른 기법들이 있다. 이것의 예로는 PPTP(Point-to-Point Tunneling Protocol) 및 L2TP(Layer Two Tunneling Protocol)/IPSec(Internet Protocol Security) 등의 몇가지 형태의 가상 사설망(virtual private network)이 있다. 가상 사설망은 종단점들 간의 모든 트래픽을 수신(listening) 및 중간자(man-in-the-middle) 공격으로부터 보호하기 위해 한쪽 단부에서는 암호화를 하고 다른쪽 단부에서는 복호화를 한다.
그렇지만, 이러한 보안 프로토콜은 종종 IPSec 인증서 등의 특수한 설정을 필요로 하거나 회사 레벨의 방화벽에 의해 차단되는 경향이 있는 표준의 포트를 사용하지 않는다. 터널링 트래픽은 GRE(Generic Routing Encapsulation)를 차단하 는(GRE 차단을 하는) ISP(Internet Service Provider)에서 차단될 수 있다. 터널링 프로토콜의 또다른 불편함은 로컬적으로 할당된 IP 주소를 사용한 네트워크 주소 변환(NAT)을 사용하는 것이다.
그에 부가하여, 보안 채널이 생성될 때에도, 루틴 타임아웃 또는 네트워크 문제로 인한 하위 레벨 접속의 중단이 상위 레벨 애플리케이션 접속을 좌절시킬 수 있다. 이러한 서비스 중단으로부터의 복구는 종종 네트워크의 재접속 이후에 애플리케이션간 복구를 필요로 한다.
NAT 및 기존의 네트워크 보안 대책에 친숙하도록 설계된 터널링 프로토콜은 HTTPS(hypertext transport protocol secure) 접속을 통한 보안 터널링 프로토콜을 사용한다. 보통의 HTTPS 접속과 달리, SSTP(secure socket tunneling protocol)라고 하는 보안 터널링 프로토콜은 표준 프로토콜(예를 들어, PPP(point-to-point protocol))의 방식으로 컴퓨터와 관련 서버 간의 모든 네트워크 트래픽을 지원한다. HTTPS는 거의 모든 방화벽 및 ISP에서 채택되고 있으며 NAT와 호환된다. 이하에 기술되는 SSTP 프로토콜은 하부의 접속에 대한 수정 또는 그에 대한 정보 없이 사용할 애플리케이션에 완전한 표준 접속 프로토콜을 제공하는 몇가지 기법들을 사용한다. SSTP는 커널 모드와 사용자 모드 간의 몇번의 전환에도 다른 통상의 프로토콜의 성능 특성을 유지한다. SSTP의 다른 측면은 클라이언트와 서버 간의 쿠키의 교환을 지원하여, 접속이 중단된 경우 신속한 재접속을 가능하게 해준다. 이러한 신속한 재접속 특징은 애플리케이션이 중단을 인식하기 전에 접속이 재설정될 수 있게 해준다.
도 1은 본 발명을 구현하는 데 적합한 컴퓨터를 간략화하여 나타낸 블록도.
도 2는 SSTP 접속을 통해 연결되어 있는 2대의 컴퓨터를 간략화하여 나타낸 블록도.
도 3은 SSTP 접속을 지원하는 기능 블록들을 간략화하여 나타낸 블록도.
도 4는 SSTP 접속의 일 실시예를 지원하는 기능 블록들을 간략화하여 나타낸 블록도.
이하에서 많은 서로 다른 실시예들에 대한 상세한 설명을 기술하고 있지만, 이 설명의 법적 범위가 본 명세서의 끝에 첨부되어 있는 청구항의 기재에 의해 정의된다는 것을 잘 알 것이다. 이 상세한 설명은 단지 예시적인 것으로 해석되어야 하며 모든 실시예를 기술한다는 것이 불가능하지는 않더라도 비현실적이기 때문에 모든 실시예를 기술하고 있지는 않다. 많은 대안의 실시예들이 현재의 기술 또는 본 특허의 출원일 이후에 개발되는 기술을 사용하여 구현될 수 있지만, 이들도 여전히 청구항들의 범위 내에 속한다.
또한, 어떤 용어가 본 특허에서 문장 "본 명세서에서 사용되는 바와 같이, 용어 ' '은 ...을 의미하는 것으로 정의된다" 또는 유사한 문장을 사용하여 명백히 정의되어 있지 않는 한, 그 용어의 의미를 그의 보통의 또는 통상적인 의미를 넘어서 명시적으로 또는 암시적으로 제한하려는 어떤 의도도 없으며 이러한 용어가 (청구항의 기재 이외의) 본 특허의 임의의 부분에서의 서술에 기초하여 범위를 제한하는 것으로 해석되어서는 안된다는 것을 잘 알 것이다. 본 특허의 끝에 있는 청구항에서 서술된 용어가 본 특허에서 일관성있게 하나의 의미로 언급되고 있는 경우, 명료함을 위해 읽는 사람을 혼란시키지 않도록 하기 위해서만 그렇게 한 것이며, 이러한 청구항 용어를 암시적으로 또는 다른 방식으로 그 하나의 의미로 제한하려는 의도는 없다. 마지막으로, 청구항 요소가 구조에 대한 서술이 없이 단어 "수단" 및 기능을 서술함으로써 정의되지 않는 한, 미국 특허법 제112조 제6항의 적용에 기초하여 청구항 요소의 범위가 해석되어서는 안된다.
본 발명의 기능들 중 다수 및 본 발명의 원리들 중 다수는 소프트웨어 프로그램 또는 명령어 및 집적 회로(IC)(ASIC 등)로 가장 잘 구현된다. 당업자라면 아마도 상당한 노력 및, 예를 들어, 이용가능한 시간, 현재의 기술, 및 경제적 고려사항이 동기가 된 많은 설계 선택사항에도 불구하고, 본 명세서에 기술된 개념들 및 원리들의 도움을 받을 때, 최소한의 실험으로 이러한 소프트웨어 명령어 및 프로그램 및 IC를 용이하게 제작할 수 있을 것으로 예상된다. 따라서, 본 발명에 따른 원리들 및 개념들을 불명료하게 할 위험을 최소화하고 또 간결하도록 하기 위해, 이러한 소프트웨어 및 IC에 대한 추가의 설명이 있는 경우, 이들 설명은 양호한 실시예의 원리들 및 개념들과 관련하여 필수적인 것으로 제한될 것이다.
도 1은 본 발명의 실시예들 중 하나 이상을 호스팅할 수 있는 컴퓨터(110) 형태의 컴퓨팅 장치를 나타낸 것으로서, 차후의 설명을 위한 배경을 제공하기 위해 이에 대해 상세히 논의한다.
컴퓨터(110)의 컴포넌트들로는 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 다양한 시스템 컴포넌트를 처리 장치(120)에 연결시키는 시스템 버스(121)가 있을 수 있지만, 이에 한정되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 및 각종의 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 어느 것이라도 될 수 있다.
컴퓨터(110)는 통상적으로 각종의 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 이용가능한 매체라면 어느 것이라도 될 수 있고 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 둘다를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체로는 컴퓨터 저장 매체 및 통신 매체가 있을 수 있다. 컴퓨터 저장 매체로는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체가 있다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이에 한정되지 않는다. 상기한 것들 중 임의의 것의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모 리(RAM)(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에 컴퓨터(110) 내의 구성요소들 간의 정보의 전송을 돕는 기본적인 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)에 의해 즉각 액세스가능하고 및/또는 처리 장치(120)에 의해 현재 처리되고 있는 데이터 및/또는 프로그램 모듈을 포함하고 있다. 제한이 아닌 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 나타내고 있다.
컴퓨터(110)는 또한 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체로부터 판독을 하거나 그에 기록을 하는 하드 디스크 드라이브(140), 이동식·비휘발성 자기 디스크(152)로부터 판독을 하거나 그에 기록을 하는 자기 디스크 드라이브(151), 및 CD ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)로부터 판독을 하거나 그에 기록을 하는 광 디스크 드라이브(155)를 예시하고 있다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고상 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)는 통상적으로 인터넷 등의 WAN(173)을 통해 통신을 설정하는 모뎀(172)(전화, 케이블, DSL, 기타) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 시스템 버스(121), 네트워크 인터페이스(170), 또는 기타 적절한 메카니즘에 연결될 수 있다. 네트워크화된 환경에서, 컴퓨터(110)와 관련하여 도시된 프로그램 모듈 또는 그의 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 제한이 아닌 예로서, 도 1은 원격 애플리케이션 프로그램(185)을 메모리 장치(181)에 존재하는 것으로 도시하고 있다. 도시된 네트워크 접속이 예시적인 것이며 컴퓨터들 간에 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 잘 알 것이다.
도 2는 SSTP 접속을 통해 연결된 2대의 컴퓨터를 간략화하여 나타낸 블록도이다. 제1 컴퓨터(202)(예를 들어, 메일, 웹 브라우징, 데이터베이스 액세스, 기타 등등의 사용자 애플리케이션을 지원하는 클라이언트 컴퓨터)가 제2 컴퓨터(204)에 연결되어 있을 수 있다. 예시적인 실시예에서, 제1 컴퓨터(202)는 회사 또는 정부 기관 방화벽 또는 보안 구역 밖에 있다. 제2 컴퓨터(204)는 제1 컴퓨터(202) 상의 애플리케이션들에 대한 클라이언트-서버 통신을 지원하는 서버일 수 있다. 그렇지만, 많은 실시예들에서, 제2 컴퓨터(204)는 회사 또는 정부 기관 방화벽 또는 보안 구역 밖의 컴퓨터로부터의 트래픽을 지원하는 데 전용된 원격 액세스 서버일 수 있다. 제2 컴퓨터(204)는 보호된 네트워크와 이 보호된 네트워크에 액세스하려고 하는 외부 개체들 사이의 인터페이스를 보호하는 데 도움을 주기 위해 사용 되는 소위 "비무장 지대(demilitarized zone)"에 있을 수 있다. 2대의 컴퓨터(202, 204)는 네트워크(206)를 통해 연결되어 있을 수 있다. 애플리케이션(208) 및 애플리케이션 n(210)으로 표현된 기타 애플리케이션들은 클라이언트 네트워크 인터페이스(212)를 사용하여 데이터를 전송 및 수신할 수 있다. 클라이언트 네트워크 인터페이스(212)는 애플리케이션(208, 210)에 통신 API(214)를 제공할 수 있다. 통신 API의 일례가 PPP(point-to-point protocol)이다. 양측이 프로토콜에 합의를 하는 한, 어느 프로토콜이라도 지원될 수 있다. 클라이언트 네트워크 인터페이스(212)는 또한 네트워크(206)에 연결하기 위한 HTTPS 모듈(216)도 포함하고 있다.
서버측에서, 클라이언트 네트워크 인터페이스(212)에 대응하는 서버 네트워크 인터페이스(218)는 네트워크(206)에 연결된 HTTPS 모듈(220)을 포함하고 있을 수 있으며 또한 클라이언트 네트워크 인터페이스 통신 API(214)에 대응하는 통신 API(224)를 포함하고 있을 수 있다. 통신 API(224)는 애플리케이션(226, 228, 230)을 호스팅하는 하나 이상의 서버에 연결될 수 있다. 일 실시예에서, 서버 애플리케이션들 중 하나는 인증 서버(authentication server)(230)를 포함할 수 있다. 인증 서버(230)는 세션 시작 동안에 클라이언트 자격 증명을 인증하는 데 사용될 수 있고, 또한 HTTPS 세션의 설정의 일부로서 SSL 키 교환에 대한 지원을 포함할 수 있다. 제2 컴퓨터(204)와 여러가지 애플리케이션 서버(226, 228, 230) 간의 트래픽은 통상의 IP/IPv6 라우팅 프로토콜을 사용하여 라우팅될 수 있다.
일 실시예에서, 웹 브라우저 등의 클라이언트 상의 애플리케이션이 기동되어 ISP 등의 네트워크와 접속을 할 수 있다. SSTP 터널을 설정하기 위해 클라이언트 네트워크 인터페이스(212)로부터 서버 네트워크 인터페이스(218)로 접속이 설정될 수 있다. SSTP 터널에 대해서는 이하에서 더 상세히 논의한다. 보안 SSTP 터널을 설정한 후에, 서버 네트워크 인터페이스(218)는 합의된 프로토콜(예를 들어, PPP)을 사용하여 서버 애플리케이션(226, 228, 230) 중 하나 이상에 트래픽을 전달할 수 있다. 예시적인 일 실시예에서, 예를 들어, 회사 환경에서, 인증 서버(230)는 제1 컴퓨터(202)에 있는 사용자의 신원을 확인하는 데 사용될 수 있다. 사용자가 인증된 경우, 사용자는 이메일, 데이터베이스 액세스, 회사 게시판, 기타 등등의 하나 이상의 회사 애플리케이션에의 액세스를 허가받을 수 있다.
도 3은 도 2의 제1 또는 제2 컴퓨터(202, 204) 중 어느 하나로부터의 아웃바운드 트래픽(outbound traffic)을 설명하는, SSTP 접속을 지원하는 기능 블록들의 예시적인 블록도이다. SSTP 프로토콜을 통한 데이터 전송은 3 단계 프로세스, 즉 보안 세션 설정, SSTP 제어 트래픽 및 SSTP 데이터 트래픽을 따를 수 있다. 보안 세션 설정 동안에, 클라이언트와 서버 간에 TCP 접속이 행해질 수 있고 이어서 Diffie-Hellman 키 교환을 포함한 표준의 SSL 핸드쉐이크가 있게 된다. 이것이 HTTPS 세션을 설정한다.
HTTPS 세션이 안정되면, SSTP 드라이버(SSTPDVR)는 SSTP 프로토콜을 관리하는 상태 기계를 활성화시킬 수 있다. 이어서, SSTP 접속을 통해 PPP 세션 협상이 행해질 수 있다. PPP 세션이 안정된 후에, 채널은 PPP 프로토콜을 통해 애플리케이션 트래픽을 터널링할 준비가 된다.
초기 세션 설정 및 보안 협상이 완료된 후에, 애플리케이션(302)은 소켓 인터페이스(304)(공지의 Winsock 인터페이스 등)로 데이터를 전송할 수 있다. 소켓 인터페이스(304)는 데이터를 프로토콜 스택의 아래쪽으로 TCP/IP 인터페이스(306)까지 전달할 수 있다. 그러면, TCP/IP 인터페이스는 패킷이 SSTP 터널로 보내져야 하는지를 판정하고 데이터를 적절한 프로토콜 계층(이 실시예에서, PPP 모듈(308))으로 라우팅할 수 있다. SSTP 프로토콜은 PPTP(310) 또는 L2TP(312) 등의 다른 보안 프로토콜과 동일한 레벨에 존재한다. PPP 모듈(308)은 PPP 프레이밍 및 캡슐화를 수행하고 데이터를 전용의 SSTP 모듈(314)로 전달한다. SSTP 모듈(314)은 커널 모드와 사용자 모드 간의 상호작용을 처리하고, 특수한 버퍼링을 수행하며, SSTP 명령 세트(command set)를 지원한다. 처리된 데이터는 SSL을 사용한 암호화를 위해 HTTPS 모듈(316)로 전송되고 다시 TCP/IP 인터페이스(306)로 전송된다. 이 때까지, TCP/IP 인터페이스(306)는 트래픽을 표준의 HTTPS 트래픽으로 인식하여 이 트래픽을 네트워크(318)로 라우팅한다. HTTPS 트래픽은 인터넷 상거래 등에 널리 사용되고 있으며 통상적으로 ISP 또는 방화벽에 의해 차단되지 않는다. 웹 프록시에서 사용될 때, HTTPS 트래픽은 적절한 포트(표준의 HTTPS 포트(443) 등)로 포워드된다.
SSTP 프로토콜을 사용한 보안 터널을 통한 데이터는 제어 트래픽 및 데이터 트래픽을 포함할 수 있다. 제어 및 데이터 트래픽에 대한 예시적인 명령 세트 및 그의 대응하는 패킷 형식은 다음과 같다.
SSTP 프로토콜은 2가지 유형의 패킷으로 이루어져 있다.
- 제어 패킷(SCP - SSTP 제어 패킷)
- 데이터 패킷(SDP - SSTP 데이터 패킷)
그 이름이 암시하듯이, 제어 패킷은 어떤 채널 관련 제어 메시지이고, 데이터 패킷은 상위 계층으로부터의 데이터를 운반한다.
SSTP 프로토콜은 제어 및 데이터 메시지 둘다에 걸쳐 공통인 주 헤더(primary header)를 갖는다.
Figure 112009016724317-PCT00001
Figure 112009016724317-PCT00002
Figure 112009016724317-PCT00003
Version - 1 바이트
Control/Data - 1 바이트이며 최하위 비트만이 사용됨. 나머지는 예약된 비트임.
Length - 2 바이트 - 12 비트로 제한됨
Figure 112009016724317-PCT00004
Length 필드는 SSTP_HEADER를 제외한 SSTP 패킷의 길이이다. 이는 4095 바이트를 초과할 수 없다. SSTP 프로토콜은 이 제한을 초과하는 [상위 계층(이 경우에 PPP)으로부터의] 전송 요청을 수락해서는 안되는데, 그 이유는 그렇지 않은 경우 SSTP 프로토콜이 단편화(fragmentation)를 처리해야만 하기 때문이다.
제어 메시지 형식
SSTP 제어 메시지는, 상기한 바와 같이, PacketType이 SSTP_PACKET_TYPE_CONTROL인 경우, SSTP_HEADER 이후에 존재한다. 제어 메시지는 ControlMessageType 및 전체 제어 메시지를 형성하는 다수의 속성-길이-값 필드로 이루어져 있다. 제어 메시지 유형은 다음과 같이 정의된다.
Figure 112009016724317-PCT00005
Figure 112009016724317-PCT00006
Figure 112009016724317-PCT00007
Figure 112009016724317-PCT00008
Figure 112009016724317-PCT00009
Figure 112009016724317-PCT00010
SSTP_ATTRIBUTE_SUPPORT_FAST_RECONNECT
이것은 값이 없는 속성(no-value attribute)으로서, 이것의 존재는 클라이언트가 (무선과 같은) 신뢰할 수 없는 매체를 사용하고 있거나 프록시가 접속에 관한 시간 제한을 가지고 있어 고속-재접속에 대한 지원을 필요로 한다는 것을 의미한다. 이것이 협상될 때, 클라이언트 및 서버 둘다는 접속 컨텍스트(connection context)를 소거하지 않고 HTTPS 매체가 어떤 이유로 고장나는 때를 상위 계층들에 알려준다. 이 접속 정보는 소거되기 전에 어떤 미리 정의된 기간 동안 존속된다. 이것이 협상되지 않는 경우, 접속 컨텍스트는 하부의 매체로부터 접속의 단절을 검출할 시에 즉각 소거된다. 유의할 점은 하부의 매체가 TCP 세션의 강제 종료(Abort)를 당한 경우에만 고속 재접속을 위해 접속 컨텍스트가 유지된다는 것이다.
이 속성은 또한 고속-재접속이 가능하지 않은 구현들 간의 호환성을 제공한다. 이것은 지원되지 않는 시나리오에서 접속 컨텍스트의 불필요한 존속을 방지한다.
SSTP_ATTRIBUTE_LINK_COOKIE
이 속성은 고속 재접속 시나리오에서 사용되는 선택적인 속성이다. 클라이언트 및 서버 둘다가 고속 재접속을 지원하는 경우, 서버는 SSTP_MESSAGE_CONNECT_ACK의 일부로서 클라이언트에게 링크 쿠키를 제공한다. 이것은 클라이언트가 이 호와 연관될 필요가 있는 컨텍스트를 확인하기 위해 서버에 대한 SSTP_MESSAGE_FAST_RECONNECT_REQUEST의 일부로서 전달해야 하는 쿠키이다.
SSTP_ATTRIBUTE_COMPLETION_STATUS
이것은 요청의 완료 상태를 나타내는 데 사용된다. 이것은 제어 메시지에 2번 이상 나타날 수 있다. 값은 8 바이트 크기이며, 이하의 구조를 갖는다.
Figure 112009016724317-PCT00011
NAK 메시지에서, 이 속성은 특정의 속성이 거부되는 이유에 관한 더 많은 정보를 제공한다.
예를 들어, 서버는 이 기능이 서버에 의해 지원되지 않는다는 것을 나타내기 위해 SSTP_ATTRIBUTE_SUPPORT_FAST_RECONNECT의 AttribId 및 ERROR_NOT_SUPPORTED의 Status로 응답할 수 있다.
원래의 속성이 서버가 준수하지 않는 어떤 특정의 값을 갖는 경우에, 이 속성은 AttribValue으로 시작하는 거부되는 속성에 특유한 어떤 값을 갖는다. 예를 들어, 클라이언트가 값 A, B 및 C를 갖는 SSTP_ATTRIBUTE_ENCAPSULATED_PROTOCOL_ID에 대해 협상하고 있는 경우, 서버가 B 및 C를 수락하지 않는다면, 클라이언트는 수락되지 않는 프로토콜 ID의 USHORT를 보유하는 AttribValue를 갖는 2 COMPLETION STATUS 속성을 전송한다. 거부되는 속성 값이 64 바이트를 초과하는 경우, NAK 메시지에서 값 크기가 64 바이트로 절단된다.
SSTP_ATTRIBUTE_ENCAPSULATED_PROTOCOL_ID
이것은 SSTP 캡슐화를 통해 전송되는 프로토콜 ID를 지정한다. 주어진 메시지에, 지원되는 다양한 프로토콜 ID 모두에 대해 이 속성이 다수 있을 수 있다.
Figure 112009016724317-PCT00012
SSTP_MESSAGE_CONNECT_REQUEST
클라이언트가 서버와 SSTP 세션을 설정하려고 할 때, 이것은 송출되는 첫번째 메시지가 된다. 이것은 이하의 속성들을 갖는다.
SSTP_ATTRIBUTE_SUPPORT_FAST_RECONNECT [선택적]
SSTP_ATTRIBUTE_ENCAPSULATED_PROTOCOL_ID
클라이언트는 이전의 요청의 결과에 기초하여 다양한 속성들(또는 서로 다른 일련의 속성들)에 대해 서로 다른 값을 갖는 이 메시지를 재전송할 수 있다. 미리 정의된 횟수의 파라미터 재협상이 있으며, 그 후에 접속이 강제 종료된다.
SSTP_MESSAGE_CONNECT_ACK
이것은 접속 요청에 응답하여 전송되고, FAST_RECONNECT가 서버에 의해 할당된 경우에 링크 쿠키를 갖는다. 그렇지 않은 경우, 이 메시지는 어떤 속성도 갖지 않는다: SSTP_ATTRIBUTE_LINK_COOKIE
SSTP_MESSAGE_CONNECT_NAK
이것은 접속 요청에 응답하여 전송되고, 서버에 의해 수락되지 않는 속성들 의 리스트를 갖는다. NAK에 응답하여, 클라이언트는 그가 원하는 모든 속성 및 그 속성의 값을 갖는 새로운 CONNECT_REQUEST을 송출해야만 한다. 클라이언트는 조정된 값만 제공하지 못할 뿐이다. 서버가 ACK하지 않는 한, 서버는 클라이언트에 의해 전달된 속성값들을 저장하지 않는다.
SSTP_MESSAGE_CALL_CONNECTED
이것은 SSTP_MESSAGE_CONNECT_ACK에 응답하여 서버와의 핸드쉐이크를 완료하기 위해 클라이언트에 의해 전송된다. 이것은 어떤 관련 속성도 갖지 않는다.
SSTP_MESSAGE_FAST_RECONNECT_REQUEST
이것은 (고속 재접속이 이미 협상된 경우) 고속 재접속을 하기 위해 클라이언트에 의해 사용된다. 이것은 기존의 링크 쿠키값을 나타내는 SSTP_ATTRIBUTE_LINK_COOKIE를 갖는다.
SSTP_MESSAGE_FAST_RECONNECT_ACK
이것은 고속 재접속이 성공한 경우 서버에 의해 클라이언트에게 전송된다. 고속 재접속이 성공하지 못한 경우, 서버는 ABORT 요청을 사용하여 접속을 강제 종료시킨다.
SSTP_MESSAGE_ECHO_REQUEST
이것은 연결-유지 메시지(keep-alive message)이며, 어떤 관련 속성도 갖지 않는다.
SSTP_MESSAGE_ECHO_RESPONSE
이것은 에코 요청(echo request)에 응답하여 전송되는 연결-유지 메시지이 며, 어떤 관련 속성도 갖지 않는다. 응답이 원격 사이트로부터 수신되지 않고 데이터 트래픽 흐름이 없는 경우, 접속이 강제 종료된다.
SSTP_MESSAGE_DISCONNECT
이것은 접속해제(disconnect)를 개시하기 위해 클라이언트/서버 중 어느 하나에 의해 전송된다. 접속해제 요청이 전송된 후에 서버로부터 수신된 모든 데이터 패킷은 폐기된다. 이것은 선택적으로 SSTP_ATTRIBUTE_COMPLETION_STATUS를 가질 수 있다. 접속해제 요청이 원격 사이트로 전송된 후에, 로컬 사이트는 접속해제 타임아웃을 기다리거나 접속해제 ACK가 수신될 때까지 기다려야 한다. 어떤 재전송도 행해지지 않는다.
SSTP_MESSAGE_DISCONNECT_ACK
이것은 원격 사이트로부터 SSTP_MESSAGE_DISCONNECT를 수신한 후에 클라이언트 또는 서버 중 어느 하나에 의해 전송된다. 이것은 어떤 속성도 갖지 않는다.
SSTP_MESSAGE_ABORT_CALL
이것은 기본적인 SSTP 협상이 실패할 때마다 전송된다. 이는 접속 요청 파라미터에 관하여 수렴이 되지 못한 것일 수 있거나, 고속 재접속 쿠키를 접속 컨텍스트와 매칭시키지 못한 것으로 인한 것일 수 있다. 이것은 실패의 이유를 나타내기 위해 SSTP_ATTRIBUTE_COMPLETION_STATUS를 갖는다.
데이터 메시지 형식
ControlMessage 비트가 OFF일 때, 페이로드는 협상된 프로토콜 데이터를 나타낸다. 유의할 점은, 상기한 바와 같이, 일 실시예가 하나의 프로토콜의 페이로 드만을 지원한다는 것이다. 그렇지만, 다른 실시예에서, SSTP 채널 프로토콜은 이종 프로토콜(heterogeneous protocol)의 패킷을 라우팅하는 데 사용될 수 있다.
도 4는 사용자 동작 모드 및 커널 동작 모드와 관련하여 기능 블록들의 관계를 나타내는 SSTP 접속의 일 실시예를 지원하는 기능 블록들을 간략화하여 나타낸 블록도이다. 동 도면은 SSTP 프로토콜과 연관된 제어 및 데이터 트래픽을 보다 상세히 나타내는 데 사용된다.
사용자 모드 모듈(402)은 모든 사용자 애플리케이션을 지원하고 하드웨어에 직접 액세스하지 못하도록 제한된다. 커널 모드 모듈(404)은 모든 하드웨어 자원에 대한 제어를 유지하고 네트워크 인터페이스 등의 하드웨어에 직접 액세스하는 유일한 모듈이다. 이 예시적인 도면에서, 사용자 모드 모듈은 애플리케이션/소켓 인터페이스(406), 원격 액세스 접속 관리자 및 PPP 엔진(RASMAN)(408), SSTP 서비스(SSTPSVC)(410), 및 HTTP/WinHTTP 모듈(412)이다.
커널 모드 모듈은 애플리케이션-하드웨어간 네트워크 프로토콜의 정의인 네트워크 드라이버 인터페이스 규격(network driver interface specification, NDIS)(414) 및 HTTP/HTTPS 시스템 파일(416)을 포함한다. NDIS는 TCP/IP 모듈(418), 원거리 통신망 프레이밍 모듈(420), NDIS 원거리 통신망 모듈(422), 및 SSTP 드라이버(SSTPDRV)(424)를 포함한다. 도 4의 점선은 트랜스-모드 접속(trans-mode connection)을 나타내는 반면, 실선은 모드 내에서의 접속을 나타낸다.
동작을 설명하면, HTTPS 세션이 성공적으로 설정된(예를 들어, TCP 접속 + SSL 핸드쉐이크) 후에, 제1 컴퓨터(예를 들어, 도 2의 제1 컴퓨터(202))에서의 SSTPSVC(410)는 원격 사이트(예를 들어, 도 2의 제2 컴퓨터(204))와 세션 컨텍스트를 설정한다. 즉, SSL 핸드쉐이크가 행해진 후에, SSTPSVC(410)는 HTTPS 모듈 내에서 컨텍스트 설정 동작을 트리거한다. 이것이 행해진 후에, SSTPDRV(424)는 HTTPS 세션을 통해 SSTP 유한 상태 기계를 기동시킨다. 이 단계 동안에, SSTPDRV/SSTPSVC(410, 424) 및 HTTPS(416) 모듈만이 상호작용하고 있다. 이 설정이 완료되면, NDISWAN(422)와 SSTP 세션 간에 바인딩이 생성된다. 원격 액세스 접속 관리자(RASMAN)(408)는 NDISWAN에 의해 SSTP 세션을 통지받고 SSTP 접속을 통해 PPP 협상을 개시한다. PPP 유한 상태 기계는 RASMAN(408) 내에(로드된 PPP 모듈 내에) 있다. PPP 제어 패킷은 RASMAN(408)에서 NDISWAN(422)로 직접 전달된다. NDISWAN(422)는 이를 SSTPDRV(424)로 전달한다. SSTP 드라이버는 이 패킷을 SSTPSVC(410)에 넘기고 SSTPSVC(410)는 HTTPS 모듈(412)로 전달한다. 통상의 방식에서, HTTPS 모듈(412)은 이 데이터를 네트워크를 통해 라우팅하기 위해 TCP/IP 모듈(418)로 전달한다. 처음의 헤더만이 원격 서버로 전송된 보류 중인 PUT 요청이 있게 된다. 서버는 PUT 응답으로 즉각 답신을 한다. (엔터티 보디로서의) PUT 요청 계속(PUT request continuation)은 클라이언트에서 서버로의 데이터 트래픽을 형성하고, 응답 엔터티 보디(response entity body)는 서버에서 클라이언트로의 데이터 트래픽이 된다. 헤더가 교환된 후에, SSTP 프로토콜이 사용가능하다. PPP 협상이 완료된 후에만, 채널이 애플리케이션 트래픽을 터널링할 준비가 되어 있다.
채널링 터널(즉, SSTP 세션)이 준비된 경우, 데이터 트래픽이 링크를 통해 전달될 수 있다. 커널 모드의 TCP/IP 모듈(418)은 사용자 모드에 있는 애플리케이션 및 소켓 인터페이스(406)로부터 데이터 패킷의 형태로 트래픽을 받는다. TCP/IP 모듈(418)은 패킷이 SSTP 터널을 통해 라우팅될 것임을 식별하고 그 패킷을 WAN 매핑 모듈(420)에 넘겨준다. WAN 매핑 모듈(420)은 올바른 인터페이스에의 접속(SSTP) 매핑을 받아서 이를 NDISWAN 모듈(422)에 전달한다. 이것은 대체로 도 3의 PPP 모듈(308)과 동등한 것이다. NDISWAN은 PPP 프레이밍 및 압축을 책임지고 있다. SSL 암호화되기 때문에 이 계층에서의 PPP 모듈에서 행해질 수 있는 암호화는 비활성화된다. 이 시점에서부터, 동작들의 시퀀스는 상기의 제어 트래픽과 동일하게 된다, 즉 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)가 버퍼를 이용할 수 있게 해준다. 사용자 모드 쓰레드와 관련하여 행해지는 Fast I/O를 사용함으로써 컨텍스트 전환이 감소된다. (Fast I/O는 I/O 서브시스템을 우회하는 것 및 출력 레지스터에 직접 데이터를 복사하는 것을 포함한다.) 게다가, 주어진 터널에 대해 무순서 전송/수신을 피하기 위해, 전송 및 수신이 직렬화될 수 있다.
패킷이 원격 종단점으로 전송될 때, SSTPDRV(424)에 도달하면, 이하의 조치들이 취해질 수 있다.
Figure 112009016724317-PCT00013
NDIS 패킷이 SSTPDRV(424)에 그대로 큐잉된다.
Figure 112009016724317-PCT00014
SDTPDRV(424)가 아직 고속 I/O를 진행하고 있지 않은 경우(Send Trigger IRP 존재 여부로 표시됨), 패킷을 계속 큐잉하기만 한다.
Figure 112009016724317-PCT00015
Send trigger IRP가 이미 SSTPDRV(424)에 있는 경우, 사용자 모드에 전송할 패킷이 있음을 알려주기 위해 IRP를 완료한다.
Figure 112009016724317-PCT00016
사용자 모드는 커널 모드로부터 바이트를 PULL하기 위해 그의 쓰레드 풀(thread pool)에 작업 항목을 큐잉한다. 이것은 2가지 이점이 있다.
Figure 112009016724317-PCT00017
터널마다 단지 하나의 작업 항목이 있는 것처럼 직렬화
Figure 112009016724317-PCT00018
프로세서의 수로 스케일링(서로 다른 터널로부터의 작업 항목들이 CPU 자원을 최상으로 이용하기 위해 프로세서들에 걸쳐 있을 수 있기 때문임)
Figure 112009016724317-PCT00019
작업 항목이 실행될 때, 전송할 바이트를 페치하기 위해 FastIO를 수행하고 전송 동작을 비동기로 수행하기 위해 HTTP 계층을 사용하여 버퍼를 큐잉하며 FastIO가 0 바이트를 반환할 때까지 새로운 버퍼로 페치를 계속한다. 이것은 I/O 완료 포트를 사용하는 통상적인 비동기 완료와 연관된 컨텍스트 전환을 감소시키며, 또한 (비동기 버퍼에 대한) 커널에서의 버퍼 요건이 더 이상 요구되지 않는다.
Figure 112009016724317-PCT00020
MaxNumWorkerIterations에 도달되면, FastIO가 진행되고 있을지라도, 그 다음 이용가능한 작업 항목이 실행되도록 하기 위해 작업 항목을 재스케쥴링한다. 이것은 공정한 대역폭 이용가능성을 가능하게 해준다.
Figure 112009016724317-PCT00021
FastIO가 전송될 0 바이트를 반환하는 경우, Send trigger IRP는 또다시 큐잉된다.
데이터를 수신할 때, HTTP 계층은 (I/O 완료 포트 또는 다른 비동기 콜백 메카니즘을 통해) 수신된 바이트를 SSTPSRV(410)에 알려준다. 이하의 동작 시퀀스가 일어날 수 있다.
Figure 112009016724317-PCT00022
수신된 버퍼는 HTTP 계층(412)으로부터 패킷을 받은 후에 서비스에 큐잉된다.
Figure 112009016724317-PCT00023
수신된 바이트를 처리할 작업 항목이 이미 진행 중인 경우, 아무 것도 할 필요가 없다. 그렇지 않은 경우, 작업 항목을 큐잉한다.
Figure 112009016724317-PCT00024
작업 항목에서, 수신된 바이트를 알려주기 위해 FastIO 요청을 계속한다. SSTPDRV(424)는 FastIO 루틴 자체로부터 수신된 바이트를 처리한다. 이것은 직렬화를 제공함은 물론 컨텍스트 전환을 감소시키다.
Figure 112009016724317-PCT00025
수신된 프레임은 상부 드라이버 계층으로 제공되기 위해 NDIS 계층에 의해 구분되고 복사된다.
Figure 112009016724317-PCT00026
미니포트(miniport)에 통지되는 버퍼의 수가 MaxNumWorkerlterations를 초과하는 경우, 작업 항목을 재큐잉한다. 다시 말하면, 이것은 한 터널을 통한 고속 데이터 전송은 다른 터널이 이용가능한 대역폭 이용가능성 또는 처리 시간을 감소시키는 폭주 터널(run-away tunnel)을 피하기 위한 것이다.
그에 부가하여, 즉각적인 전송 및 수신 동작을 가능하게 해주기 위해 TCP Nagle, 즉 하위 레벨 패킷 버퍼링이 비활성화된다. TCP 접속이 최고 레이트로 이용되도록 버퍼 크기가 충분히 크게 선택될 수 있다.
이상에서 본 발명의 많은 서로 다른 실시예들에 대해 상세히 기술하고 있지만, 본 발명의 범위가 본 특허의 끝에 첨부된 청구항의 기재에 의해 정의된다는 것을 잘 알 것이다. 이 상세한 설명은 단지 예시적인 것으로 해석되어야 하고 모든 가능한 실시예들을 기술하는 것이 불가능하지는 않지만 비현실적이기 때문에 본 발명의 모든 실시예들을 기술하지 않는다. 많은 대안의 실시예들이 현재의 기술 또는 본 특허의 출원일 이후에 개발된 기술을 사용하여 구현될 수 있지만, 이들도 여전히 본 발명을 정의하는 청구항의 범위 내에 속한다.
따라서, 본 발명의 정신 및 범위를 벗어나지 않고 본 명세서에 기술되고 도 시된 기법 및 구조에 많은 수정 및 변형이 행해질 수 있다. 그에 따라, 본 명세서에 기술된 방법 및 장치가 단지 예시적인 것이며 본 발명의 범위를 제한하지 않는다는 것을 잘 알 것이다.

Claims (20)

  1. 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법으로서,
    상기 로컬 개체와 상기 원격 개체 간의 세션을 설정하는 단계,
    HTTPS 포트를 사용하여 상기 세션을 통해 암호화된 통신 계층을 설정하는 단계,
    상기 HTTPS 포트를 사용하여 상기 로컬 개체와 상기 원격 개체 간에 제어 데이터를 전송하는 단계,
    상기 HTTPS 포트를 사용하여 상기 세션을 통해 표준 프로토콜 파이프를 생성하는 단계, 및
    상기 HTTPS 포트를 통해 PPP 프로토콜 파이프를 사용하여 암호화된 데이터 전송을 스트리밍하는 단계를 포함하는, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  2. 제1항에 있어서, 상기 세션은 TCP 세션인 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  3. 제1항에 있어서, 상기 암호화된 통신 계층은 보안 소켓 계층 및 전송 계층 보안 중 하나를 따르는 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  4. 제1항에 있어서, 상기 표준 프로토콜 파이프는 PPP(point-to-point protocol) 접속인 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  5. 제4항에 있어서, 상기 PPP 프로토콜은 원격 액세스 접속 관리자 서비스에서 관리되는 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  6. 제1항에 있어서, HTTPS 포트를 사용하여 상기 세션을 통해 상기 암호화된 통신 계층을 설정할 때 협상된 키를 사용하여 데이터 전송을 암호화하는 단계를 더 포함하는, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  7. 제1항에 있어서, 상기 로컬 개체와 상기 원격 개체 간에 제어 데이터를 전송하는 상기 단계는,
    클라이언트와 서버 간에 세션 접속 데이터를 나타내는 쿠키를 공유하는 단계를 포함하는 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  8. 제6항에 있어서, 상기 세션이 중단된 후에 상기 세션의 재설정을 요청할 때 상기 로컬 개체와 상기 원격 개체 간에 상기 쿠키를 전송하는 단계를 더 포함하는, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  9. 제1항에 있어서, 상기 로컬 개체와 상기 원격 개체 간에 제어 데이터를 전송하는 상기 단계는,
    호 설정(call establishment), 임의의 프로토콜의 터널링, 전송 중단이 일어날 때의 재접속 서비스, 및 버퍼 관리 중 하나를 관리하는 SSTP를 지원하는 단계를 포함하는 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  10. 제9항에 있어서, 상기 SSTP 프로토콜을 지원하는 단계는,
    제어 패킷 및 데이터 패킷 둘다에 공통인 SSTP 헤더를 지원하는 단계 및
    제어/데이터 비트 및 길이 필드를 포함시키는 단계를 포함하며,
    어느 한 패킷의 페이로드가 4095 바이트보다 작은 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  11. 제9항에 있어서, 상기 SSTP 제어 패킷을 지원하는 단계는,
    connect_request, 링크 쿠키를 포함하는 connect_ack, connect_nack, call_connected, fast_reconnect_request, fast_reconnect_ack, echo_request, echo_response, disconnect, disconnect_ack, 및 abort_call 중 적어도 하나를 포함하는 제어 메시지를 지원하는 단계를 포함하는 것인, 로컬 개체와 원격 개체 간의 보안 통신을 지원하는 방법.
  12. HTTPS 접속을 통해 클라이언트 프로세스와의 보안 터널링을 지원하는 서버로 서,
    공지의 프로토콜을 사용하여 서버측 접속을 지원하는 서버 모듈,
    상기 클라이언트와의 상기 HTTPS 접속을 지원하는 클라이언트 모듈, 및
    상기 클라이언트 프로세스와의 SSTP 터널을 지원하는 SSTP(secure socket tunneling protocol) 모듈을 포함하며,
    상기 SSTP 모듈은 보안 프로토콜 접속을 유지하면서 중단된 하위 계층 접속을 복구하기 위해 고속 재접속에 대한 지원을 제공하는 것인, HTTPS 접속을 통해 클라이언트 프로세스와의 보안 터널링을 지원하는 서버.
  13. 제12항에 있어서, 상기 중단된 프로토콜은 PPP 접속이고,
    상기 보안 프로토콜 접속은 상기 HTTPS 접속인 것인, HTTPS 접속을 통해 클라이언트 프로세스와의 보안 터널링을 지원하는 서버.
  14. 제12항에 있어서, 상기 SSTP 모듈은 제어 및 데이터 패킷을 제공하고,
    상기 제어 패킷은 connect_request, 링크 쿠키를 포함하는 connect_ack, connect_nack, call_connected, fast_reconnect_request, fast_reconnect_ack, echo_request, echo_response, disconnect, disconnect_ack, 및 abort_call 중 적어도 하나에 대한 메시지를 포함하는 것인, HTTPS 접속을 통해 클라이언트 프로세스와의 보안 터널링을 지원하는 서버.
  15. 제12항에 있어서, 상기 SSTP 모듈은 상기 중단된 보안 프로토콜 접속을 복구하는 데 사용하기 위해 상기 클라이언트 프로세스로 쿠키를 전달하는 것인, HTTPS 접속을 통해 클라이언트 프로세스와의 보안 터널링을 지원하는 서버.
  16. 제15항에 있어서, 상기 쿠키는 상기 중단된 보안 프로토콜 접속과 연관된 세션을 식별해주는 것인, HTTPS 접속을 통해 클라이언트 프로세스와의 보안 터널링을 지원하는 서버.
  17. 클라이언트와 서버 간의 보안 통신을 지원하는 방법으로서,
    커널 모드 TCP/IP 모듈에서 애플리케이션으로부터 데이터를 수신하는 단계,
    상기 데이터를 매핑 모듈로 라우팅하여 이 데이터에 대한 접속 매핑을 결정하는 단계,
    상기 데이터를 네트워크 데이터 인터페이스(NDIS) 모듈로 전달하고 공지의 프로토콜을 사용하여 상기 데이터를 준비하는 단계,
    사용자 모드 HTTPS 모듈에서 상기 준비된 데이터를 암호화하여 암호화된 데이터를 형성하는 단계, 및
    포트(443)를 사용하여 TCP 접속을 통해 상기 클라이언트로부터 상기 서버로 상기 암호화된 데이터를 전송하는 단계를 포함하는, 클라이언트와 서버 간의 보안 통신을 지원하는 방법.
  18. 제17항에 있어서, 상기 NDIS 모듈에 연결된 상기 커널 모드에 있는 보안 프로토콜 드라이버 및 상기 HTTPS 모듈에 연결된 상기 사용자 모드에 있는 보안 프로토콜 서비스를 통해 상기 NDIS 모듈을 상기 HTTPS 모듈과 인터페이스시키는 단계를 더 포함하는, 클라이언트와 서버 간의 보안 통신을 지원하는 방법.
  19. 제18항에 있어서, 상기 보안 프로토콜 서비스로부터 데이터 전송 및 수신 동작은 컨텍스트 전환 및 페이징을 피하기 위해 상기 보안 프로토콜 드라이버에 의한 커널 모드 데이터 전송에 FastIO를 사용하는 것인, 클라이언트와 서버 간의 보안 통신을 지원하는 방법.
  20. 제17항에 있어서, 상기 공지의 프로토콜은 PPP(point-to-point protocol) 접속인 것인, 클라이언트와 서버 간의 보안 통신을 지원하는 방법.
KR1020097005676A 2006-09-26 2007-09-20 보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버 KR101458231B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN2123DE2006 2006-09-26
IN2123/DEL/2006 2006-09-26
US11/561,947 US8086845B2 (en) 2006-09-26 2006-11-21 Secure tunnel over HTTPS connection
US11/561,947 2006-11-21
PCT/US2007/079007 WO2008039682A2 (en) 2006-09-26 2007-09-20 Secure tunnel over https connection

Publications (2)

Publication Number Publication Date
KR20090058526A true KR20090058526A (ko) 2009-06-09
KR101458231B1 KR101458231B1 (ko) 2014-11-04

Family

ID=39226418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097005676A KR101458231B1 (ko) 2006-09-26 2007-09-20 보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버

Country Status (4)

Country Link
US (2) US8086845B2 (ko)
KR (1) KR101458231B1 (ko)
CN (1) CN101517979B (ko)
WO (1) WO2008039682A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8086845B2 (en) 2006-09-26 2011-12-27 Microsoft Corporation Secure tunnel over HTTPS connection
US8782772B2 (en) * 2007-09-28 2014-07-15 Microsoft Corporation Multi-session secure tunnel
US8613072B2 (en) * 2009-02-26 2013-12-17 Microsoft Corporation Redirection of secure data connection requests
US8504818B2 (en) * 2010-04-15 2013-08-06 Microsoft Corporation Method and system for reliable protocol tunneling over HTTP
US8458786B1 (en) * 2010-08-13 2013-06-04 Zscaler, Inc. Automated dynamic tunnel management
CN102457539A (zh) * 2010-10-19 2012-05-16 英业达集团(天津)电子技术有限公司 文件服务器的管理方法
CN103176987A (zh) * 2011-12-21 2013-06-26 中国电信股份有限公司 一种数据库访问控制方法和装置
EP2907272B1 (en) * 2012-10-10 2016-11-30 Nokia Solutions and Networks Oy Peer revival detection
US20140258511A1 (en) * 2013-03-11 2014-09-11 Bluebox Security Inc. Methods and Apparatus for Reestablishing Secure Network Communications
US9826018B1 (en) * 2013-03-15 2017-11-21 Google Inc. Facilitating secure web browsing on untrusted networks
CN104243228A (zh) * 2013-06-07 2014-12-24 金琥 基于会话及http协议标准检测http隧道数据的方法
FR3042623B1 (fr) * 2015-10-16 2018-03-16 Outpost 24 France Procede de detection de vulnerabilites dans un serveur virtuel de production d'un systeme informatique virtuel ou en nuage
EP3240234A1 (de) * 2016-04-25 2017-11-01 Siemens Aktiengesellschaft Verfahren zur konfiguration einer tunnel-verbindung für ein automatisierungs-netzwerk
CN106330867A (zh) * 2016-08-12 2017-01-11 武汉奥浦信息技术有限公司 一种以太网中解析https数据的方法
US10148615B2 (en) * 2016-10-20 2018-12-04 Oracle International Corporation Client side telecommunications tunnel persistence
US10594732B2 (en) * 2016-11-08 2020-03-17 Ca, Inc. Selective traffic blockage
CN108881130B (zh) * 2017-05-16 2021-07-30 中国移动通信集团重庆有限公司 会话控制信息的安全控制方法和装置
CN107465752B (zh) * 2017-08-22 2021-02-05 苏州浪潮智能科技有限公司 一种连接管理方法及装置
KR101875093B1 (ko) * 2018-02-23 2018-07-05 주식회사 컴트루테크놀로지 HTTPs 패킷분석 처리성능 향상 시스템
CN110191041B (zh) * 2019-05-05 2021-03-23 杭州迪普科技股份有限公司 局域网的设备的管理方法和装置
CN110619071B (zh) * 2019-08-06 2022-08-05 微梦创科网络科技(中国)有限公司 一种帐号的访问安全监测和处理方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745884A (en) 1996-10-21 1998-04-28 Mobile Area Networks, Inc. System and method for billing data grade network use on a per connection basis
US6104716A (en) 1997-03-28 2000-08-15 International Business Machines Corporation Method and apparatus for lightweight secure communication tunneling over the internet
US6574661B1 (en) 1997-09-26 2003-06-03 Mci Communications Corporation Integrated proxy interface for web based telecommunication toll-free network management using a network manager for downloading a call routing tree to client
US7155740B2 (en) 2000-07-13 2006-12-26 Lucent Technologies Inc. Method and apparatus for robust NAT interoperation with IPSEC'S IKE and ESP tunnel mode
US6816462B1 (en) 2000-08-02 2004-11-09 International Business Machines Corporation System and method to determine connectivity of a VPN secure tunnel
US7055028B2 (en) * 2000-10-10 2006-05-30 Juniper Networks, Inc. HTTP multiplexor/demultiplexor system for use in secure transactions
US20020136226A1 (en) * 2001-03-26 2002-09-26 Bluesocket, Inc. Methods and systems for enabling seamless roaming of mobile devices among wireless networks
US20030065919A1 (en) 2001-04-18 2003-04-03 Albert Roy David Method and system for identifying a replay attack by an access device to a computer system
US6988147B2 (en) 2001-05-31 2006-01-17 Openwave Systems Inc. Method of establishing a secure tunnel through a proxy server between a user device and a secure server
US7398552B2 (en) 2002-01-28 2008-07-08 Hughes Network Systems, Llc Method and system for integrating performance enhancing functions in a virtual private network (VPN)
US20030191843A1 (en) 2002-04-04 2003-10-09 Joel Balissat Secure network connection for devices on a private network
US20040184425A1 (en) 2003-03-17 2004-09-23 Inventec Appliances Corp. Method for accessing data from a company over the internet by cellular phone
US7624438B2 (en) * 2003-08-20 2009-11-24 Eric White System and method for providing a secure connection between networked computers
US7346925B2 (en) 2003-12-11 2008-03-18 Microsoft Corporation Firewall tunneling and security service
CN1707997B (zh) * 2004-06-11 2010-04-21 宏碁股份有限公司 应用https通讯协议的客户服务架构及其方法
US8086845B2 (en) 2006-09-26 2011-12-27 Microsoft Corporation Secure tunnel over HTTPS connection

Also Published As

Publication number Publication date
WO2008039682A3 (en) 2008-05-15
WO2008039682A2 (en) 2008-04-03
US20120089828A1 (en) 2012-04-12
US8086845B2 (en) 2011-12-27
US8370623B2 (en) 2013-02-05
KR101458231B1 (ko) 2014-11-04
CN101517979A (zh) 2009-08-26
US20080077788A1 (en) 2008-03-27
CN101517979B (zh) 2012-05-30

Similar Documents

Publication Publication Date Title
KR101458231B1 (ko) 보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버
EP1622334B1 (en) Server device, method for controlling a server device, and method for establishing a connection using the server device
JP4245838B2 (ja) セキュアクライアントサーバトランザクションを管理するための方法及びシステム
EP3605976A1 (en) Message sending method and network device
US7398552B2 (en) Method and system for integrating performance enhancing functions in a virtual private network (VPN)
US7643416B2 (en) Method and system for adaptively applying performance enhancing functions
US8976798B2 (en) Method and system for communicating over a segmented virtual private network (VPN)
US8351333B2 (en) Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements
US8724656B2 (en) Methods and devices for transmitting data between storage area networks
US8782772B2 (en) Multi-session secure tunnel
US8925068B2 (en) Method for preventing denial of service attacks using transmission control protocol state transition
US20030217149A1 (en) Method and apparatus for tunneling TCP/IP over HTTP and HTTPS
US20030172264A1 (en) Method and system for providing security in performance enhanced network
KR19980070104A (ko) 전송 제어 프로토콜 글루를 통한 세션 및 전송 계층 프록시 개선 방법
JP2017118545A5 (ko)
JP6444988B2 (ja) Httpを利用する通信システム
WO2004068811A2 (en) Methods and devices for transmitting data between storage area networks
CN115801236A (zh) 一种加密代理方法、加密代理模块、代理设备及存储介质
US20070288645A1 (en) Method and System for Persistent and Reliable Data Transmission
US7738493B2 (en) Methods and devices for transmitting data between storage area networks

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant