999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于socks5代理輕量級網絡流量加密研究

2017-07-04 06:54:56王永鑒孫光浩劉丹青
軟件 2017年5期

王永鑒,孫光浩,劉丹青

(天津工業大學 計算機科學與軟件學院,天津 300387)

基于socks5代理輕量級網絡流量加密研究

王永鑒,孫光浩,劉丹青

(天津工業大學 計算機科學與軟件學院,天津 300387)

隨著Internet的飛速發展,網絡環境日趨復雜,用戶面臨電子郵件被竊取、信息被篡改等威脅。因此,保護網絡流量日趨重要。本項目提出輕量級網絡流量加密解決方案,基于socks5[4]代理原理,通過對稱加密算法和TCP協議數據偽裝技術實現。本項目具有配置客戶端快速、訪問網絡安全性高、訪問行為隱蔽性高、用戶感知不明顯、需要配置低等優勢。預期成果可以用于郵件加密、隱私保護、公共WIFI安全等相關領域,市場前景廣闊。

socks5;TCP/IP協議;Epoll模型

0 引言

Socks[1]協議是網絡代理協議,它的設計初衷是為了支持應用穿越防火墻訪問外部網絡。Socks在協議棧的TCP層上運行,是介于傳輸層和應用層之間的中介層協議, 是為了讓使用TCP和UDP的客戶/服務器應用程序更方便安全地使用網絡防火墻所提供的服務而設計的。對于上層應用層協議來說,Socks[2]代理只是簡單地傳遞數據包,而不必關心是何種應用協議(比如 FTP,H TTP請求)。Socks協議的工作原理與應用代理相似,作為網絡邊界上的Socks 服務器接收客戶的請求,并代理外部的應用服務器,使得客戶與外部的聯系實質上是 Socks[5]客戶與 Socks 服務器之間的聯系;而外部的應用服務器所接受的請求是來自Socks服務器的外部接口,也就是說 Socks服務器對內部網絡的客戶來說是服務器,對外部網絡的應用服務器來說是客戶。

1 相關技術簡介

1.1 TCP/IP協議

TCP/IP參考模型是一個抽象的分層模型,這個模型中,所有的TCP/IP系列網絡協議都被歸類到4個抽象的“層”中。每一抽象層創建在低一層提供的服務上,并且為高一層提供服務。完成一些特定的任務需要眾多的協議協同工作,這些協議分布在參考模型的不同層中的,因此有時稱它們為一個協議棧。TCP/IP參考模型為TCP/IP協議棧訂身制作。其中IP協議只關心如何使得數據能夠跨越本地網絡邊界的問題,而不關心如何利用傳輸媒體,數據如何傳輸。整個TCP/IP協議棧則負責解決數據如何通過許許多多個點對點通路(一個點對點通路,也稱為一“跳”,1 hop)順利傳輸,由此不同的網絡成員能夠在許多“跳”的基礎上創建相互的數據通路。如想分析更普遍的網絡通信問題,ISO的OSI模型也能起更好的幫助作用。 因特網協議族是一組實現支持因特網和大多數商業網絡運行的協議棧的網絡傳輸協議。它有時也被稱為TCP/IP協議組,這個名稱來源于其中兩個最重要的協議:傳輸控制協議(TCP)和因特網協議(IP),它們也是最先定義的兩個協議。同許多其他協議一樣網絡傳輸協議也可以看作一個多層組合,每層解決數據傳輸中的一組問題并且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與用戶更為接近,所處理數據更為抽象,它們依賴于低層將數據轉換成最終能夠進行實體控制的形式。 網絡傳輸協議能夠大致匹配到一些廠商喜歡使用的固定7層的OSI模型。然而這些層并非都能夠很好地與基于ip的網絡對應(根據應用的設計和支持網絡的不同它們確實是涉及到不同的層)并且一些人認為試圖將因特網協議組對應到OSI會帶來混淆而不是有所幫助。

1.2 Socks5協議

RFC(request for comments)1928 文檔里面定義了 Socks5 協議[3]。該協議最初設計的目的是為了讓有權限的用戶可以穿過防火墻的限制,使用戶能夠訪問不能直接連接的資源。目前該協議的最高版本是 Socks5[4]。該協議在 1996 年被 IETF 確認為標準通信協議。目前,大量的網絡應用程序都支持Socks5[6]代理。由于 Socks5 實際上仍然對應了socket的操作,所以通過編程很容易實現讓不支持Socks5[7]協議的應用軟件也能通過 Socks5[8]服務器進行網絡通信,該通信過程對被代理的應用軟件透明。如Initex 公司開發的 Proxifier。因此,目前SOCKS 協議大多應用于突破網絡通信限制,提升網絡權限。由于通過 Socks5[9]可以代理任何基于socket 協議的應用軟件,因此服務端只是做轉發,并不知道客戶端使用數據的應用和具體的數據格式。通過對轉發數據的加密,可以保證客戶端數據網絡傳輸的安全。Socks5[10]代理協議的原理是客戶端先連到代理服務器,然后客戶端發送的所有TCP數據包請求都通過服務端轉發。對于接收端,認為所有的請求都來自代理服務器。代理服務器接收遠端發來的消息后,根據維護的客戶端列表,將數據轉發給不同的客戶。

Socks5[11]代理服務的工作流程如下:

①客戶端建立到代理服務器的 TCP 連接。②客戶端向代理服務器發送代理請求。

③代理服務接收代理客戶端應答,根據相應標記判斷是否允許代理。

④客戶端向代理服務器發送協商請求信息以及相關的端口信息。

⑤客戶端將數據發送到代理服務器并由代理服務器進行數據傳遞操作。

基于以上 Socks5 代理協議的特點,Socks5[12]代理協議非常適合無線局域網通過 Socks5 上網

1.3 Epoll模型簡介

epoll是Linux內核為處理大批量文件描述符而作了改進的poll,是Linux下多路復用IO接口select/poll的增強版本,它能顯著提高程序在大量并發連接中只有少量活躍的情況下的系統CPU利用率。另一原因就是獲取事件的時候,它無須遍歷整個被偵聽的描述符集,只要遍歷那些被內核IO事件異步喚醒而加入準備隊列的描述符集合就行了。epoll除了提供select/poll那種IO事件的水平觸發(Level Triggered)外,還提供了邊緣觸發(Edge Triggered),這就使得用戶空間程序有可能緩存IO狀態,減少系統調用,提高應用程序效率。

1.4 對稱密鑰加密算法

對稱密鑰加密(英語:Symmetric-key algorithm)又稱為對稱加密、私鑰加密、共享密鑰加密,是密碼學中的一類加密算法。這類算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單地相互推算的密鑰。實務上,這組密鑰成為在兩個或多個成員間的共同秘密,以便維持專屬的通訊聯系。與公開密鑰加密相比,要求雙方取得相同的密鑰是對稱密鑰加密的主要缺點之一。

常見的對稱加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。對稱加密的速度比公鑰加密快很多,在很多場合都需要對稱加密。RC5分組密碼算法是1994由麻薩諸塞技術研究所的Ronald L. Rivest教授發明的,并由RSA實驗室分析。它是參數可變的分組密碼算法,三個可變的參數是:分組大小、密鑰大小和加密輪數。在此算法中使用了三種運算:異或、加和循環。

2 應用場景

輕量級網絡流量加密系統屬于遠程訪問技術,簡單地說就是利用公用網絡架設專用網絡。例如某公司員工出差到外地,他想訪問企業內網的服務器資源,這種訪問就屬于遠程訪問。

在傳統的企業網絡配置中,要進行遠程訪問,傳統的方法是租用DDN(數字數據網)專線或幀中繼,這樣的通訊方案必然導致高昂的網絡通訊和維護費用。對于移動用戶(移動辦公人員)與遠端個人用戶而言,一般會通過撥號線路(Internet)進入企業的局域網,但這樣必然帶來安全上的隱患。

讓外地員工訪問到內網資源,利用該解決方法就是在內網中架設一臺socks5服務器。外地員工在當地連上互聯網后,通過互聯網連接socks5服務器,然后通過該服務器進入企業內網。為了保證數據安全,服務器和客戶機之間的通訊數據都進行了加密處理。有了數據加密,就可以認為數據是在一條專用的數據鏈路上進行安全傳輸,就如同專門架設了一個專用網絡一樣,但實際上VPN使用的是互聯網上的公用鏈路,其實質上就是利用加密技術在公網上封裝出一個數據通訊隧道。有了該技術,用戶無論是在外地出差還是在家中辦公,只要能上互聯網就能訪問內網資源。

3 實現過程

shadowsocks 是將原來 ssh 創建的 Socks5[13]協議拆開成 server 端和 client 端,所以下面這個原理圖基本上和利用 ssh tunnel 大致類似1、6)客戶端發出的請求基于 Socks5 協議跟 ss-local 端進行通訊,由于這個 ss-local 一般是本機或路由器或局域網的其他機器,不經過 GFW,所以解決了上面被GFW通過特征分析進行干擾的問題2、5) ss-local 和 ss-server 兩端通過多種可選的加密方法進行通訊,經過GFW的時候是常規的TCP包,沒有明顯的特征碼而且GFW也無法對通訊數據進行解密3、4)ss-server 將收到的加密數據進行解密,還原原來的請求,再發送到用戶需要訪問的服務,獲取響應原路返回。

圖1 Shadowsocks的實現過程Fig.1 hadowsocks the realization of the process

4 基本原理

shadowsocks的基本工作原理并不復雜。shadowsocks包括local和server兩個程序。local 運行在用戶自己的機器上,server 運行在墻外的服務器上。正常工作模式下,local 通常會監聽本地1080端口,提供socks v5協議接口。在用戶本機進程和local的1080端口建立TCP連接之后,首先會發送一個hello包,或者叫handshake 握手包。local 程序接收到這個包之后,進行簡單的包數據檢查之后就返回一個確認包。本機進程收到確認的包之后,會再發送一個請求包,包的主要內容就是目標服務的地址和端口號。local程序接收到請求包之后,會和server程序建立一個TCP連接,連接建立之后會把上面的目標服務的地址和端口號傳給server。這個連接是穿墻的關鍵,連接里面傳輸的數據都是經過加密的,最常用的就是aes-256-cfb。local程序會對請求包返回一個確認的包。然后本機進程就開始向local傳輸實際的數據,local接收到之后加密繼續傳給server。server接收到之后把數據解密出來,然后和目標服務建立TCP連接,并把解密后的數據發送出去。然后接收數據就是上述的反過來。

為了理解以上內容,強烈建議閱讀一下socks v5協議的RFC 1928。不長,一共才9頁,定義的包格式也很少。

圖2 Shadowsocks 的基本工作原理Fig.2 hadowsocks the basic working principle

4.1 shadowsocks

shadowsocks Python版本主要包括 Event loop、TCP Relay、UDP Relay和DNSResolver 這幾個模塊。我們主要介紹TCP的模式,UDP不做過多介紹。

shadowsocks 主要的工作流程就是先進行配置處理,然后針對每個需要監聽的端口建立一個TCP Relay和UDP Relay,并添加到eventloop里。然后啟動eventloop的循環。當eventloop接收到事件時,將事件分發,調用對應的handle_event進行處理。對于每個建立的客戶端發起的TCP連接,都會新建一個TCP Relay Handler 進行處理。

在這里,local和server 使用的是同一個 TCPRelay類,他們的處理流程都統一了起來。但是就是因為如此,代碼的理解上反而顯的不是那么清晰。

4.2 Eventloop

shadowsocks 最早期的版本是基于線程的模型處理并發連接的。由于種種原因,線程模型在頻繁建立連接、高并發的情況下效率并不高。現在的版本是基于eventloop的處理模型。shadowsocks里使用的eventloop是基于epoll模型的封裝,把 select和kqueue都封裝成了epoll模型的接口。

eventloop 最重要的方法run里的邏輯,就是典型的epoll處理方式。這里強烈建議去理解一下epoll的工作模型。這里很簡單,接收到event之后,調用對應的 handle_event方法進行處理。

4.3 TCPRelay

TCPRelay 里有個概念就是_server_socket,表示的是監聽端口的socket。然后看 TCPRelay 的handle_event邏輯就分為了兩塊,如果是 _server_ socket,那么就只有客戶端請求建立連接的事件,_ server_socket負責accept之后創建新的 TCPRelayHandler;如果不是,那么說明是客戶端連接的讀寫事件,直接分發到對應的TCPRelayHandler調用handle_event進行處理。

在tcprelay.py 這個文件最上方,有一段注釋是描述的客戶端連接建立的全部過程。

# as sslocal:

# stage 1 addr received from local, query DNS for remote

# stage 2 UDP assoc

# stage 3 DNS resolved, connect to remote

# stage 4 still connecting, more data from local received

# stage 5 remote connected, piping local and re-mote

# as ssserver:

# stage 0 just jump to stage 1

# stage 1 addr received from local, query DNS for remote

# stage 3 DNS resolved, connect to remote

# stage 4 still connecting, more data from local received

# stage 5 remote connected, piping local and remote

在 TCPRelayHandler 里,就是按照如下定義的stage 的流程運行的。

STAGE_INIT = 0

STAGE_ADDR = 1

STAGE_UDP_ASSOC = 2

STAGE_DNS = 3

STAGE_CONNECTING = 4

STAGE_STREAM = 5

STAGE_DESTROYED = -1

先看handle_event,里面的邏輯分成了remote_ sock和local_sock兩部分。先從local_sock開始。從客戶端建立TCP連接之后,TCPRelayHandler創建的時候,local_sock就存在了,由于是客戶端主動建立的連接,數據也都是客戶端先發起的,所以先從local_sock的可讀事件開始。記住,我們目前處于STAGE_INIT狀態。在進入_on_local_read之后,緊守著is_local和_stage兩個變量,就可以按照上面基本原理里面說的工作流程,將狀態機運行起來了。

eventloop模型比較讓人討厭的就是要不停的循環,然后進入各自的 handle_event 里去思考流程,比較麻煩

5 結論

基于Socks5[14]協議的輕量級網絡流量加密系統可適應不同客戶端,多種用戶需求,便于管理,代價低等優點。適合在不同終端中加密網絡流量。概括而言,本系統通過C/S(服務器/客戶端)架構,比傳統代理方式(PPTPL2TPIPSecOPENVPN等)更加輕量,拋棄了密鑰協商的過程,將需要加密的網絡流量數據偽裝為TCP協議數據,更不容易被阻斷,采取事先在服務器端設置好固定密鑰的方式來加密連接,同時可以自定義端口和支持遠程DNS解析,專為移動設備和無線網絡優化。

[1] Delfs, Hans & Knebl, Helmut. Symmetric-key encryption. Introduction to cryptography: principles and applications. Springer. 2007. ISBN 9783540492436.

[2] Mullen, Gary & Mummert, Carl. Finite fields and applications. American Mathematical Society. 2007: 112. ISBN 9780821844182.

[3] William Stallings. 操作系統——精髓與設計原理.: 530. ISBN 7-121-02196-X.

[4] Marcus Leech. SOCKS Protocol Version 5[S]. IETF RFC 1928, 1996.

[5] 俞定國,舒明磊,譚成翔. 基于 Socks5代理的移動SSL VPN系統研究與實現[J]. 計算機科學, 2011, 38(1): 119-122.

[6] 喻小光,陳維斌,潘孝銘. 一種基于SOCKS5的 Web 安全代理技術[J]. 華僑大學學報: 自然科學版,2007,28(3): 268-271.

[7] 孫偉平. 有關幾種網絡代理協議的探討[J]. 微計算機信息, 2006, (12): 167-169.

[8] 梁海, 范輝. Socks5協議實現防火墻穿透[J]. 現代計算機(專業版), 2004, (11): 25-29+65.

[9] 劉洪柱. 一種基于SOCKS5協議的代理服務器的設計和實現[J]. 大眾科技, 2004, (04): 68-69.

[10] 林心愉. 解決Socks5代理服務器因進程過多而無法運行的問題[J]. 計算機時代, 2001, (03): 3.

[11] 閆鵬. Socks 5點述代理服務[J]. 微電腦世界, 2001, (04): 94-95.

[12] 畢保祥, 肖德寶. SOCKS5的身份認證機構[J]. 計算機應用, 2000, (07): 38-40.

[13] 范雄飛, 汪霖. 基于LSP的SOCKS5代理客戶端設計[J]. 湖南工業大學學報, 2009, (05): 102-105.

[14] 陳靜. 基于SOCKS5協議的專用網絡文件傳輸的設計與實現[J]. 大眾科技, 2009, (09): 33-34.

Research on Lightweight Network Traffic Encryption Based on socks5 Proxy

WANG Yong-jian, SUN Guang-hao, LIU Dan-qing
(School of Computer Science and Software, Tianjin Polytechnic University, Tianjin 300387, China)

With the rapid development of the Internet, the network environment is becoming increasingly complex, users face e-mail theft, information tampering and other threats. As a result, protecting network traffic is becoming increasingly important. The project proposed lightweight network traffic encryption solution, based on socks5[4]proxy principle, through the symmetric encryption algorithm and TCP protocol data disguise technology to achieve. This project has the advantages of fast client configuration, high access network security, high concealment behavior, lack of user perception, and low configuration. Expected results can be used for mail encryption, privacy protection, public WIFI security and other related fields, the market prospect is broad.

Socks5; TCP/IP protocol; Epoll model

SOCKS hello

from local, send hello to local

TP391.41

A

10.3969/j.issn.1003-6970.2017.05.022

本文著錄格式:王永鑒,孫光浩,劉丹青. 基于socks5代理輕量級網絡流量加密研究[J]. 軟件,2017,38(5):107-111

主站蜘蛛池模板: 噜噜噜久久| 亚洲AV无码久久天堂| 久久综合色天堂av| 无码精品国产dvd在线观看9久| 久久精品人人做人人综合试看| 丰满人妻久久中文字幕| 69综合网| 亚洲六月丁香六月婷婷蜜芽| 欧美怡红院视频一区二区三区| 欧美日韩专区| 成人免费一级片| 日本在线免费网站| 成人夜夜嗨| 亚洲第一成年人网站| 国产精品永久不卡免费视频| 日韩一级毛一欧美一国产| 色有码无码视频| 国产在线欧美| 国产色婷婷视频在线观看| 91小视频在线播放| 日韩毛片免费视频| 中文字幕1区2区| 精品99在线观看| 最新国产精品第1页| 噜噜噜综合亚洲| 青青操视频在线| 国产精品亚洲综合久久小说| 99久久人妻精品免费二区| 久久99热这里只有精品免费看| 91麻豆精品国产91久久久久| 免费观看无遮挡www的小视频| 亚洲欧美综合精品久久成人网| 成人小视频在线观看免费| 日本成人在线不卡视频| 欧美一级高清片欧美国产欧美| 少妇极品熟妇人妻专区视频| 在线va视频| 亚洲不卡影院| 永久天堂网Av| 狠狠五月天中文字幕| 欧美福利在线播放| 久无码久无码av无码| 欧美日韩成人在线观看| 五月丁香伊人啪啪手机免费观看| 国产a v无码专区亚洲av| 2021最新国产精品网站| 特级精品毛片免费观看| 国产精品视频免费网站| 国产午夜一级毛片| 国产免费高清无需播放器| 久久黄色一级片| 亚洲精品欧美日本中文字幕 | 久久黄色一级视频| 国产美女丝袜高潮| 美女高潮全身流白浆福利区| 国产一区二区三区精品久久呦| 亚洲一区毛片| 国产免费一级精品视频| 国产精品天干天干在线观看| 国产剧情一区二区| 亚洲人成在线精品| 久久久久国色AV免费观看性色| 久久婷婷五月综合色一区二区| 亚洲精品自拍区在线观看| 99精品高清在线播放| 波多野结衣二区| 国产免费精彩视频| 国产91视频观看| 日本在线欧美在线| 狠狠色噜噜狠狠狠狠色综合久| 在线观看av永久| 国产成人夜色91| 狠狠色丁香婷婷综合| 伊人91在线| 欧美另类视频一区二区三区| 欧美一区福利| 国产69囗曝护士吞精在线视频| 成人精品区| 国产欧美精品午夜在线播放| 四虎在线高清无码| 在线播放精品一区二区啪视频| 国产精品高清国产三级囯产AV|