這個章節將提出視覺加密概念與SIP 結合後的系統架構,運用於網路電話的安全傳 輸上,並且使用cIPSec 於 SIP 訊號傳輸上的保護。首先簡介系統架構並提出一些系統 的假設條件,接著介紹系統的使用流程以及詳細的訊號交換過程,最後介紹聲音封包分 割、重組的處理方法。
4.1 系統簡介與假設
本系統的基本架構承襲於 2.1.3.1 節所介紹的 SIP 架構,採用主從式(Client-server) 的架構,擁有的伺服器與用戶端種類也相同。為了能和現有的網路架構相容,對於原先 各個伺服器的功能與擺設位置做了一些改變,如下圖所示:
圖 34 系統架構圖
原先的 SIP 系統架構中,代理伺服器只擔任轉送封包的功能,並且可以與 register server 以及 redirect server 結合成一台伺服器。在我們的方法中,由於顧及目前所使用中 的路由器大多是使用Open Shortest Path First(OSPF)的路由通訊協定,若要全面改成採用 互斥多路徑路由的可能性不大而且所費太高,所以將SIP proxy server 獨立出來,並將 原先只有封包轉傳的功能加以擴充,這個部份將於下一小節介紹。
除了 SIP proxy server 的改變之外,此系統有一些使用的預設條件以及限制,於底 下一一列出:
z 區域網路(LAN)中的通話不提供安全保護的機制,此方法假設私人網路中的竊 聽攻擊不存在或是很少,安全性較高,所以對聲音做資料分割傳送的部份只有 在跨越不同的網路區域時,如圖 34 中,若是 SIP_Phone_1 與 SIP_Phone_2 建 立通話連線,因為不會透過外面的 SIP_Proxy_2,所以資料並不會被分割後傳 送。本方法處理的情形如圖 34 中 SIP_Phone_1 與 SIP_Phone_4 通話時,才會 在SIP_Proxy_2 與 SIP_Proxy_4 間使用資料分享的方法以確保安全。
z 假設任兩節點間存在兩條以上互斥的路徑,為了要讓兩個由同一個資料分割而
z 假設訊息穿越防火牆或是網路位置轉換器(Network Address Translator)時,有相 對應的解決方法,如UPD hole punching 等,如此一來可以不用考慮封包穿越 這些裝置時所產生的問題。
z 互斥多路徑路由(Disjoint multipath routing),將 3.4 節所介紹的互斥多路徑路由 演算法用於SIP proxy server 上,並且可以接收原本路由器的訊息,如此可以 在不必更動原本網路架構的情形下,達成多路徑傳送的目標。
z 資料分享(Data sharing)方法,將從使用者收到的聲音封包依照接下來章節(4.3) 提到的方法加以分割後傳送;接收端的SIP proxy server 則是將收到的兩個分 割的聲音封包加以組合成原本的封包,再傳送到目的端的主機撥放。
z 與傳統電話網路 PSTN 相連接的部份可以與原先的媒體閘道器(Media gateway) 結合,具有SIP proxy server 與 PSTN media gateway 的功能,如上一節圖 34 中 media gateway 的部份。
z 幫助管理一個區域內的 SIP user 資料,此處類似行動系統(Mobile system)中的 基地臺(Base Station, BS)的功能,幫忙紀錄通話時間以及使用者資料管理等,
並且協助user agent 認證與註冊的事宜。 訊,取出最短的兩條路徑後,分別寫入兩個分享封包(Share packet)的 IP 標頭中。如果在IP v4 的網路架構下,則放在 IP 標頭的 option 中;如果在 IP v6 的網路架構下,則放在 Hop by Hop 的擴充標頭(Extension header)中。
最後將封包依路徑送出,離開流程。
3. 檢查 RTP 封包的目的位置是否為該 SIP proxy server 所管轄的 SIP phone,
若是,則檢查暫存區是否存在另一個 share data,若存在,則組合後送給
SIP phone,若不存在,則置於暫存區中;若目的位置非所管轄的 SIP phone,則依據 IP 標頭中,option 欄(IP v4)或是 Hop by Hop 欄(IP v6)的資 料傳送到下一個目標去。
4. 如果步驟3 中,下一個目標與該 SIP proxy server 的連線已經中斷,則根 據該SIP proxy server 的路由資訊,與 RTP 標頭中 option 或 Hop by Hop 欄位比較後,取得一條互斥的路徑傳送。
圖 35 SIP 代理伺服器 RTP 封包處理流程圖
以上是針對SIP proxy server 在網路電話安全傳輸架構下,增加的功能與對封包處 理的介紹。接下來的小節,我們將依不同的 scenarios,分別介紹在 4.1 節圖 34 的架構 下,各種訊息與多媒體傳輸的情形。
4.3 系統流程與訊息交換
接下來我們就各種可能會發生的情形,分成不同的scenarios,一一介紹其中的訊息 交換與傳遞過程。在通訊建立訊息傳遞的部份,與原先SIP 訊息傳遞的順序相似,最大 的差異在於傳送媒體時的不同。
當一個 SIP phone 接上網路時,或是 SIP user agent software 被執行時,會先自動去 尋找附近的 proxy server,設定成自己的 proxy server,接下來透過 proxy server 轉送 register 的訊息到 register server 註冊,scenario 1 介紹圖 34 中 SIP_phone_1 開起並執行 register 的訊息流程說明。
Scenarios 1 – 使用者註冊流程(User register)
Step 1:SIP_phone_1 與 SIP_proxy_2 建立 cIPSec 的安全關聯 (Security Association) 後,送出REGISTER 的訊息到 SIP_proxy_2。
Step 2:SIP_proxy_2 收到 REGISTER 的訊息後,先暫存一些使用者資料後,與 SIP register server 建立 SA,並傳送 SIP_phone_1 的 REGISTER 訊息給 register server。
Step 3:當 Register server 通過認證並紀錄下 SIP_phone_1 的使用者資料以及所屬 的SIP_proxy_2 後,傳回 OK 訊息給 SIP_proxy_2。
Step 4:當 SIP_proxy_2 收到 OK 訊息後,將原先暫存的 SIP_phone_1 資料正式儲 存,以方便後來的通話建立,然後傳 OK 訊息給 SIP_phone_1,register 動作完成。
Step 5:此為選擇性(Optional)的部份,若要確保私人網路傳輸的安全,可以在 SIP phone 與 SIP proxy 之間使用簡單的加解密方法(XOR plaintext with key…),此時可溝通用來加密的金鑰,由通訊雙方決定是否需要這個步驟。
圖 36 場景一:使用者註冊訊息交換圖
Scenario 2 – 建立區域網路內的連線(Establish call in local area network)
在前一節(4.1)已經提過,在區域網路(Local Area Network)之間的 SIP call 不在本論 文運用的範圍內,這裡只概略的列出在 LAN 建立通話的訊息傳遞情形。圖 37 中藍色 線段使用的安全協定是由SIP phone 雙方自行決定。
Step 1:SIP_phone_1 想要打電話給 SIP_phone_2,但是不知道 SIP_phone_2 的確實 位置,所以送出需求(Request)訊息去尋問 SIP_phone_2 的位置。
Step 2:當 SIP_proxy_2 收到 SIP_phone_1 的需求(Request)後,會先去查詢本身的 紀錄表格,如果SIP_phone_2 的資料存在於 SIP_proxy_2 的紀錄中,則直 接回應SIP_phone_1。
Step 3:SIP_phone_1 收到 SIP_proxy_2 的資料後,回應 ACK 訊息給 SIP_proxy_2,
並且發出INVITE 訊息給 SIP_phone_2 建立連線。
圖 37 場景二:建立連線於區域網路的訊息交換圖
Scenario 3 – 建立跨越網路的連線(Establish call across network)
Step 1:和 scenario 2 的 step 1 相同,SIP_phone_1 想要與 SIP_phone_3 建立通話,
發出需求(Request)查詢 SIP_phone_3 的位置,SIP_proxy_2 收到後,因為 在自己的紀錄表格中查詢不到有關SIP_phone_3 的相關資料,所以將需求 轉向Register&Redirect_server 來詢問,Register&Redirect_server 查詢得到 結果後回傳給SIP_proxy_2 與 SIP_phone_1。
Step 2:SIP_phone_1 依據收到的結果對 SIP_phone_3 發出 INVITE 訊息,經過 SIP_phone_3 傳回 Ringing 與 OK 訊息後,通話正式建立,而 SIP_proxy_2 開始紀錄通話相關資訊。(圖中 Ringing 與 OK 訊息一般而言,會分成兩 次的訊息傳送,當收到INVITE 時發出 Ringing 訊息,當收話端拿起話筒 時才送出OK 訊息,此處為了繪圖方便才寫於同一個訊息上傳輸)
Step 3:通話開始後,當 SIP_proxy_2 從 SIP_phone_1 收到聲音封包後,會根據將 於下一節(4.3)提到的方法,將封包分割成兩份,再根據目前網路的狀況(由 路由器收到的資訊,加以整理後所得結果)在運用 3.4 節提到的互斥多路徑 演算法找出最短的兩條路徑(可經過其他的 SIP proxy server),分開傳送至
SIP_proxy_4,再由 SIP_proxy_4 將 封 包 重 組 回 原 先 的 封 包 , 傳 送 給 SIP_phone_3(如圖 39 所示)。
Step 4:通話期間,如果有其他訊息傳送,例如 SIP_phone_1 因為偵測到網路可用 頻寬減低,需要改變聲音編碼方式,則在訊息的傳送上,使用 cIPSec 來 保護訊息的安全。
Step 5:當通話結束時,由發話或收話的任一端發出 BYE 訊息,收到 BYE 訊息的 另一端則回應OK 訊息後,通話正式結束,此時 SIP_proxy_2 紀錄這通電 話的開始與結束時間,以方便之後電信公司查帳用與通聯紀錄查詢用。
圖 38 場景三:建立跨越網路連線的訊息交換圖
圖 39 資料分享用於聲音媒體傳送示意圖 Scenario 4 – 建立連線於 IP 網路與 PSTN 網路
這個scenario 的訊息傳遞的情形與 scenario 3 相似,不同的地方在於原本 scenario 3 的 step 3 中,與 SIP_proxy_4 溝通的 INVITE message 要轉傳送給 Media Gateway Controllers(MGCs),然後透過 MGC 來與 PSTN switch 溝通 call 的建立,並且保留 Media Gateways(MGs)上的資源給這通 call。
接下來傳送聲音封包的資料,一樣是由 SIP_proxy_2 將聲音封包分割,然後由 4.1 節圖 34 中的媒體閘道器扮演像 SIP proxy server 一樣的功能,將聲音封包組合回去,然 後在PSTN 網路上傳輸,如下圖所示:
圖 40 資料分享方法與 PSTN 網路溝通示意圖
以上是幾種可能的通話建立情形用於新SIP 架構上的訊息傳遞情形,至於如何對要 傳送的聲音資料作分割,將於下一節中介紹。
4.4 聲音封包分割方法
本章節介紹以視覺加密為基礎的資料分割方法,配合聲音編碼後的特性,發展出一 套適合VoIP 的資料分享(Data sharing)方法。底下以使用最廣泛的 G.711 聲音編碼方式 為例,介紹本論文使用的資料分割方法。
原本用於視覺加密的分割方式是為了要配合人類視覺的特性,所以需要將原先的資 料擴充為原來的四倍,靠著兩張資料的重疊才能讀出原本的資料(請見 3.3 節)。如果直 接運用在聲音資料的處理上,如此會產生原來資料的八倍大的空間,對於時間敏感度高 (Time sensitive)的 VoIP 來說不是很適合,再加上數位化的處理不需要視覺上的特性,所 以我們提出另一種分割的方式。
Original data Share data 1 Share data 2 Result = share data 1 ^ share data 2
0 0 0
0 1 1 0
1 0 1
1 0 1 1
針對VoIP 對時間的敏感度較高,所以我們希望將封包分割後能得到較小的成長幅 度,如果將聲音封包的每個位元都依照表 8 的方式分割,則會得到兩個與原封包大小 一樣的資料,則成長幅度為兩倍,在這裡我們希望針對不同聲音編碼方式,做不同的處 理,使用分割後封包大小的成長幅度較小。此處我們以G.711 的編碼方式為例,依照實 驗的結果後(見 5.1 節),可得到下圖中的資料分割方式,將原先給個樣本的前四個位元 依據表 8 的方式分割,使得資料成長幅度為原封包的 1.5 倍。(類似的方法亦可使用於 G.726 32Kbps 的編碼方式,只是將每個樣本分割的位元取前兩位)
圖 41 資料分享方法範例
上圖中紫色的部份由亂數取得,接著將紫色部份的四個位元與原先封包相對應的位
上圖中紫色的部份由亂數取得,接著將紫色部份的四個位元與原先封包相對應的位