無線CAPWAP隧道加密方式

DTLS主要特性概述和實現分析
背景
    近年來出現了許多實用數據報傳輸的應用程序。這些應用包括實時視頻會議,internet電話和在線遊戲,比如Quack和Startcraft。這些應用都是延遲敏感的,並且使用了不可靠的數據報傳輸。TCP之上的應用可以用TLS來保證安全,但是TLS不能用來保證UDP的安全。Datagram TLS試圖在現存的TLS協議架構上提出擴展,使之支持UDP,即成爲TLS的一個支持數據報傳輸的版本。 
TLS簡介
    TLS是最爲廣泛部署的協議,它用來保障網絡安全通信。TLS用來保護Web 通信和email協議(諸如IMAP,POP)。TLS的主要優勢是它通過嚮應用層和網絡層之間(即OSI模型中的會話層)插入TLS來保證應用的安全。然而,TLS要求一個可靠的傳輸信道—典型的是TCP—因此不能用來保證數據報通信的安全。 
    當部署TLS的時候,大家還沒有充分認識到這個侷限性的嚴重程度,因爲當時大多數應用運行在TCP之上。即使今天也是這樣。然而情況正在改變。在過去幾年中,不斷增長的應用層協議,比如SIP  (session initial protocol),RTP (real time protocol), MGCP (the Media Gateway Control Protocol),還有許多遊戲協議都基於UDP傳輸而設計。 
    目前,這些應用的設計者面對着許多用來保證安全性的選擇,但卻無法令人滿意。首先,他們可以使用IPsec。然而,IPsec不適合於Client-Server應用模型,且難以同應用程序結合,因爲IPsec運行在系統內核。其次,他們自己設計一個特有的應用層安全協議。例如,SIP使用了S/MIME的一個變體來保證安全通信。將S/MIME嫁接到SIP中比使用TLS上的TCP版本的SIP變體更費勁。第三,可以把應用移植到TCP之上,然後使用TLS。不幸的是,許多這樣的應用依賴於UDP語義,當運行在諸如TCP之類的流協議上性能將無法令人接受。 
    DTLS是TLS的一個修改版本, 這樣函數能夠運行在數據報通信上,該方法有兩個主要優勢:首先,既然DTLS非常類似於TLS,可以重用以前的協議架構和實現方法。爲了便於展示,我們通過對OpenSSL庫的添加實現了DTLS。總共添加了7000行代碼,其中的60%從OpenSSL複製和粘貼。其次,既然DTLS向通用安全層提供了相似的接口,就易於調整協議來使用它。TLS的經驗顯示,這種易於調整性是擴大部署的關鍵。 
DTLS實現可靠傳輸方法
爲了支持消息丟失,重傳,分片,DTLS修改了TLS1.1握手報頭: 
struct { 
        HandshakeType msg_type; 
        uint24 length; 
        uint16 message_seq;                              // New field 
        uint24 fragment_offset;                          // New field 
        uint24 fragment_length;                          // New field 
        select (HandshakeType) { 
      case hello_request: HelloRequest; 
      case client_hello:  ClientHello; 
      case hello_verify_request: HelloVerifyRequest;     // New type 
      case server_hello:  ServerHello; 
      case certificate:Certificate; 
      case server_key_exchange: ServerKeyExchange; 
      case certificate_request: CertificateRequest; 
      case server_hello_done:ServerHelloDone; 
      case certificate_verify:  CertificateVerify; 
      case client_key_exchange: ClientKeyExchange; 
      case finished:Finished; 
       } body; 
      } Handshake; 
    每次握手中傳輸的第一條信息中,message_seq總是爲0。每產生一個新消息時,message_seq值按1遞增。當重傳一條信息時,使用相同的message_seq值。即,由message_seq保證傳輸可靠性。
在CAPWAP隧道中DTLS應用
wKiom1LcravzAuJ3AADqwTI7xf4927.jpg
spacer.gif
在UDP和Capwap隧道之間加入了DTLS的包頭,在報文末尾加入DTLS報尾;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章