2007年5月7日星期一

VPN 基本運作原理

何謂 VPN ?

VPN(Virtual Private Network) 中文翻譯為「虛擬私有網路」,以下從網路上擷取 VPN 的定義進行說明:

原文說明:
A virtual private network (VPN) is a private communications network often used by companies or organizations, to communicate confidentially over a public network. VPN traffic can be carried over a public networking infrastructure (e.g. the Internet) on top of standard protocols, or over a service provider's private network with a defined Service Level Agreement (SLA) between the VPN customer and the VPN service provider. A VPN can send data e.g. voice, data or video, or a combination of these media, across secured and encrypted private channels between two points.
中文說明:
VPN 是利用 Internet IP 的技術,建立 Internet 上的加密通道 (Tunneling) 來架構網際網路上的虛擬內聯網路(VPN),IP網路的擴充性良好,所使用的加密技術是標準的 IPSEC (IP Security) 方式,IPSec 結合了加密(Encryption)、認證(Authentication)、密鑰管理 (Key Management)、數位檢定 (Digital Certification) 等安全標準,具有高度的保護能力。

VPN透過Internet傳送企業重要資料自然成為競爭對手覬覦的對象,因此,保障通訊安全即為建置VPN的首要考量。這裡的安全除了保證資訊的隱密 (Confidentiality),避免第三者「竊聽」到通訊內容,同時還須確保網路傳送內容不被篡改破壞,亦即所謂資料的一致性 (Integrity);另外就是資料來源的驗證(Authentication),確定資料並非來自網際網路上第三者所偽造。至少達成這三點,我們才能確保跨越開放式網際網路的VPN有如專線構成的封閉式內聯網路一樣安全。
而由上述的說明,可瞭解到 VPN 是希望透過價格低廉的 WAN 線路,以 Tunneling 的技術,加上特殊的安全、傳輸等附加機制後,可以破除地理限制,讓 Intranet、Extranet、Internet 都可以用類似區域網路的方式進行連結。


VPN 的優點

VPN 擁有相當多的使用上優點,例如:
  1. 使用 WAN 的線路作為基礎,破除地理因素
  2. 安全性高
  3. 使用與維護成本低
  4. 增加生產力
  5. 原理與使用操作上簡單、容易
  6. 增強企業合作伙伴間、或是與企業與用戶間的聯繫


相關安全機制

由於 VPN 是架構在現有的 WAN 上面,當然在安全性的部分要注意的地方可是相當多,一般來講,大概有以下幾種加強安全性的方式:

1、防火牆 Firewall

防火牆是個很普遍的概念,因此這邊就不多做說明了,除了可參考坊間的許多書籍外,以下再附上介紹防火牆概念的連結資訊:

2、加密 Encryption

加密的方式,大致有以下兩種:
  1. 對稱式加密 Symmetric-key encryption
  2. 非對稱式加密 Public-key encryption

上述兩種加密方式,在密碼學裡面都有詳細的探討,以下附上幾個連結供參考:

3、IPSec

IPSec 的部分其實蠻複雜的,可以閱讀以下兩篇文章,相信觀念會相當清楚:

IPSec 的特色在於其架構於網路層的安全機制,因此即使傳輸層 or 應用層的部分沒有安全機制的防護,IPSec 依然可以保護網路通訊的內容。


Tunneling

VPN 的運作原理即稱為 Tunneling

簡單來說,Tunneling 是一種用於在不同通訊協定間傳遞資料的方法,其運作的在於將資料封包視為另外一個封包中的 Data,並加上不同協定的控制訊息後,轉變為適用於另一種通訊協定的資料封包,進而達到讓資料封包在不同通訊協定間傳遞的目的。

以下用一張圖,來解釋原本的 packet 加上了 encrypt information 以及 tunnel information 後的樣子:


看見了嗎? 要進行 tunneling 的資料,必須額外加掛上一層一層的資訊,雖然安全性與便利性提升了,不過也造成網路傳輸的 overhead 很高,這是管理者必須注意到的地方。

在原本的資料封包中,即使內含的 IP Address 是區域網路的 IP,甚至是自訂的 Protocol,經過加入外層 header information 後,便可以標準的通訊協定進行傳輸,而接收封包的兩端,則必須具有解析封包的能力,因此又稱為 Tunneling Interface。

而 Tunneling 需要三種不同的協定來組合而成:
  1. Carrier Protocol
    用來在網際網路上傳遞封包用的協定
  2. Encapsulation Protocol
    用來包裝原本封包資料用的協定,例如:GRE、IPSec、PPTP、L2TP....etc
  3. Passenger Protocol
    原本封包資料所使用的協定

此外,Tunneling 還可以根據其協定實作的層級不同,分為以下三種:

1、實作於 OSI Layer 2

在 Layer 2 就將 packet 進行封裝有一個相當大的好處,即是此 tunnel 在兩端使用非 IP 的協定時依然可以進行傳輸(IP 屬於 Layer 3),雖然 IP 在 internet 上被廣泛使用,但不代表只有 IP 一種協定,例如 Netware 系統中所使用的 IPX。

在此模式下,若 vpn 兩端要進行傳輸,client 會產生一個虛擬的 Point-to-Point(點對點) 的裝置來與 server 連結,而實作 Layer 2 tunneling 的技術,目前有以下四種較為熱門,不但提供了加密的功能,也提供了使用者認證的機制:
  1. Point to Point Tunneling Protocol (PPTP)
    其為擴充功能後的 PPP 協定,由 Microsoft 所協助發展而成,當然在 Windows 下也直接支援,所建立的 tunnel 可以用來傳送 IP 以及 IPX 的封包,不過主要缺點在於傳輸雙方一次只能建立一個 tunnel
  2. Layer 2 Forwarding (L2F)
    由 Cisco 所發展而成,提供了比 PPTP 更多的功能,在傳輸上較有效率,也可同時產生多個 tunnel
  3. Layer 2 Tunneling Protocol (L2TP)
    廣為使用的協定,原因是因為此協定結合了 PPTP 以及 L2F 的優點,卻沒有其缺點,並可與其他安全機制進行結合
  4. Layer 2 Security Protocol (L2Sec)
    似乎是發展用來處理與 IPSec 相容性的問題

當然選擇使用的 tunneling 協定時,要考量的還有很多,例如:
  1. 支援的使用者認證機制是否廣泛
  2. 是否支援在不同的網路環境下運作,例如:NAT
  3. 是否支援 dial-up 模式以方便僅有動態 IP 的使用者
  4. 是否支援 PKI 安全機制
當然還可能有更多的考量,都是管理者在選擇 tunneling protocol 時,必須針對需求來謹慎考慮的!

2、實作於 OSI Layer 3

實作於 Layer 3 中最著名且最為廣泛使用的 tunneling 技術則是 IPSec 了,IPSec 在前面已經有提供網頁介紹,因此這邊不再贅述;不過 IPSec 所提供的功能相當的多,不過也因此產生了一個很主要的缺點,即是設定過於複雜,不過在許多硬體中都支援 IPSec。

而 IPSec 是如何建立 tunnel 來傳輸資料呢? 有以下兩種方式:
  1. Tunnel mode
    此種模式下,packet 進行傳輸前,會將整個 packet 加密後,再加上 tunnel information 後進行傳輸
  2. Transport mode
    此種模式下,僅針對 packet 中的 data 進行加密(並非整個 packet),再加上 tunnel information 後進行傳輸;這樣做的缺點,在於惡意人士可以知道 packet 實際傳送的 source 以及 destination 為何,不過相對所產生的 overhead 也小。

3、實作於 OSI Layer 4

當然,vpn tunnel 也可以建立於 application layer,而 TLS 以及 SSL 就是為了此目的而產生的。透過此種方式,就可以直接透過 browser 連線到已經實作 SSL 的 https 網站進行相關的認證手續,以便建立起vpn tunnel,此種方式已經被廣泛測試過了,是相當可靠的一種方式。


範例說明

為了瞭解 Carrier ProtocolEncapsulation ProtocolPassenger ProtocolTunnel InterfaceInternet 之間的關係,以下用一個實際的簡單範例進行說明:
  1. 假設使用者透過網路訂購一台電腦,廠商製造完成後,要將此台電腦(原本的資料封包)透過快遞業者送交到使用者手上
  2. 而快遞業者收到廠商委託後,將此台電腦進行裝箱打包(Passenger Protocol)進送貨專用的箱子(Encapsulation Protocol)裡,再來會被統一送至快遞業者的貨物運送中心(Entry Tunnel Interface)
  3. 接著快遞業者用送貨車(Carrier Protocol),行經高速公路、一般道路(Internet)後,送達至使用者家中 (Exit Tunnel Interface)
  4. 最後,使用者打開箱子(Encapsulation Protocol),並取出裡面的電腦(Passenger Protocol)開始使用
由上述的範例可知,其實 Tunneling 的原理僅僅就是如此而已。


參考資料
  1. Virtual private network
  2. How Virtual Private Networks Work
  3. VPN

沒有留言:

張貼留言