黃一平,孫健華,梁梓辰
(1.廣西師范大學電子工程學院,廣西桂林 541000;2.廣西師范大學計算機科學與工程學院,廣西桂林 541000)
由于大量數(shù)據(jù)存儲在租用的公有云,存在數(shù)據(jù)泄露風險且耗電量較高,該文使用MT7621 為核心,ESP07 模塊為從設備搭建個人私有云。MT7621 搭載OpenWRT 系統(tǒng)[1-6],并搭建FTP(File Transfer Protocol)服務器[7],使用Frp 技術(shù)進行內(nèi)網(wǎng)穿透[8-12]。該文使用了ESP07模塊設計了一鍵喚醒操作,在一段時間未使用MT7621 時,就讓MT7621 進入休眠狀態(tài),使用時,用戶可以點擊一鍵喚醒,重新喚醒MT7621,既節(jié)約能源,又可以很好地保證安全性。該文通過QT設計實現(xiàn)了桌面端的FTP 客戶端,并集成了128 位的AES(Advanced Encryption Standard)加密[13-17],可對Word文檔、文本文件、圖片、視頻等通過文件流加密的方式進行加密傳輸,從而保護文件安全。
該文依據(jù)MT7621 與ESP07 進行設計。MT7621作為核心設備使用時通電,不使用時則進入關(guān)閉狀態(tài),以保護數(shù)據(jù)無法被外部網(wǎng)絡訪問,ESP07 不斷電,通過手機或者電腦指令,進行一鍵喚醒操作。MT7621 搭載了Uboot 內(nèi)核、OpenWRT 系統(tǒng)、Nginx 認證界面、FTP 服務器,以保證數(shù)據(jù)的收發(fā),利用手機APP 或者電腦客戶端發(fā)送指令。ESP07 包含Airkiss技 術(shù)、MQTT(Message Queuing Telemetry Transport)一鍵喚醒、斷線重連功能,同樣是由APP 與電腦端發(fā)送指令進行控制,其整體設計如圖1 所示。

圖1 私有云整體設計
該文采用了多種技術(shù),其主要模塊的技術(shù)情況如表1 所示。

表1 主要模塊技術(shù)情況
OpenWRT 系統(tǒng)是Linux 系統(tǒng)的衍生版,是路由器的重要系統(tǒng),具有強大的網(wǎng)絡功能與豐富的板塊,可以自定義軟件與庫。該文設計的私有云系統(tǒng)可以作為路由器使用,也可以當終端設備使用,將路由器模式與終端模式結(jié)合起來,適應于多個場景。
該文依據(jù)所需要的功能,對OpenWRT 系統(tǒng)進行裁剪,包括支持2路USART、支持256 MB內(nèi)存和32 MB的NAND FLASH,以保持其更高的性能,并移植驅(qū)動文件,如MT7612 驅(qū)動等,移植對應的軟件,如vsftpd等,并編寫MakeFile 文件,使其編譯到固件當中,然后通過TFTP(Trivial File Transfer Protocol)的方式下載固件到MT7621 設備中。
FTP 基于TCP 協(xié)議的文件傳輸協(xié)議,采用客戶端/服務器模式,通過FTP 服務器進行文件的上傳與下載。FTP 協(xié)議可以很好地控制用戶數(shù)量,更好地分配寬帶,可以很方便地上傳與下載文件。該文就是依據(jù)FTP 進行數(shù)據(jù)傳輸,在Nginx 認證通過后,即可開啟FTP 服務。
由于FTP 服務器可以通過眾多軟件訪問,不利于軟件與硬盤的安全。為了實現(xiàn)安全訪問,該文設計了Nginx 認證,通過FCGI 接口返回信息,在重新登陸時都要連接Nginx 頁面,而FTP 的用戶名與密碼都放在代碼中打包,對于用戶來說,F(xiàn)TP 的用戶名和密碼是不可見的,從而更好地保護硬盤信息。Nginx 是一個輕量級的Web 服務器,占用內(nèi)存少,并發(fā)能力強,可以流暢運行在OpenWRT 系統(tǒng)。FCGI 是一個更高速的公共網(wǎng)關(guān)接口,有更高的性能。由于CGI解釋器的反復加載,其性能越來越差,F(xiàn)CGI 將其保持在內(nèi)存中,可以很大程度保持其性能。在有多人訪問私有云設備時,其登錄不會卡頓或者是服務器崩潰。
在OpenWRT 更新軟件包,并且在內(nèi)核中選中Nginx、FCGI,配置文件重新打包,系統(tǒng)啟動后可以使用shell命令啟動Nginx 與FCGI。
在IPv4 時代,IPv6 還沒有廣泛地被使用,僅僅通過IP 地址去訪問設備,目前無法實現(xiàn),針對此問題,該文設計了Frp 內(nèi)網(wǎng)穿透的方式訪問私有云,實現(xiàn)隨時隨地訪問私有云硬盤。內(nèi)網(wǎng)穿透,即NAT 穿透,其可以將私有地址轉(zhuǎn)換為合法的IP 地址,以完成重用地址,并且隱藏內(nèi)部的網(wǎng)絡結(jié)構(gòu)。外部主機要與內(nèi)網(wǎng)進行通信,需要由內(nèi)網(wǎng)中的主機發(fā)起連接,使得NAT 設備產(chǎn)生映射條目。
在服務器端配置Frps,如購買的阿里云主機,在客戶端配置Frpc,同時啟動兩者即可建立連接。在局域網(wǎng)開啟Frp 服務器之后,進行層級上傳,然后通過服務器進行中轉(zhuǎn),最后就可通過外網(wǎng)實現(xiàn)對Nginx與FTP 進行訪問。
私有云在STA 模式時,需要快速地接入網(wǎng)絡,傳統(tǒng)的AP 配網(wǎng)速度慢,操作繁瑣。Airkiss 可以直接將當前手機的網(wǎng)絡發(fā)送給私有云設備,實現(xiàn)配網(wǎng)操作。
具體配網(wǎng)過程如圖2 所示。

圖2 Airkiss配網(wǎng)過程
MT7621 設備此時為STA 模式,與手機在同一個網(wǎng)絡環(huán)境下,手機連接WiFi 網(wǎng)絡,MT7621 點擊按鍵,進入一鍵配網(wǎng)模式,手機啟動客戶端,點擊一鍵配網(wǎng),此時MT7621 即可連接到手機的網(wǎng)絡。
Airkiss 的基本配網(wǎng)技術(shù)如下:
1)MT7621 設備要處在混雜模式,此時無論MAC地址是否相同,處在混雜模式下的設備會把802.11格式的數(shù)據(jù)包全部接收過來。
2)MT7621 需要做到隨時進行信道切換,802.11有多個信道,需要時刻切換信道來接收數(shù)據(jù)包。檢測到有效數(shù)據(jù)包之后,要鎖定在此信道下。
3)利用數(shù)據(jù)幀的長度來承載有效信息。Airkiss使用UDP 廣播包作為載體,發(fā)送一些列的UDP 廣播包,每個廣播包都使用Length 進行編碼,接收方接收到UDP 包后,使用Airkiss 解析出對應的信息,完成配網(wǎng)過程。
MQTT 是一種基于發(fā)布與訂閱的輕量級通信協(xié)議,其可以利用極少的代碼和有限的帶寬,提供可靠的服務。MQTT 的控制報文以及內(nèi)嵌的應用數(shù)據(jù)可以提供良好的安全性。
為了保護移動硬盤的數(shù)據(jù)安全,使其更加節(jié)能,利用ESP07 模塊設計了一鍵喚醒操作,基于MQTT 協(xié)議,當私有云硬盤一段時間(這個時間可以由用戶自行設置)沒有工作時,硬盤電路將會自動進入休眠狀態(tài),此時MT7621斷電無法工作,當用戶使用時,點擊一鍵喚醒,MQTT 會發(fā)送信號使電路通電,喚醒MT7621 重新進行工作,此設計相當于設計了遠程開關(guān)機,保護了數(shù)據(jù)安全,如果用戶將MT7621 作為家庭路由器使用,這對于整個智能家居的安全都非常關(guān)鍵。
AES 算法以其速度快、內(nèi)存需求量低、靈活、易維護等特點廣泛用于數(shù)字簽名、文檔加密中。AES根據(jù)其密鑰不同,可以分為AES-128、AES-192 和AES-256。
一個密碼很難保證安全,也不利于用戶分享,所以該設計通過隨機產(chǎn)生密碼的方式生成密鑰,然后加密文件。如圖3 所示,將文件以文件流的形式打開,將文件流使用AES128 算法加密,由用戶設立獨立密碼,根據(jù)用戶設定的密碼產(chǎn)生AES 密鑰,可以保證AES 密鑰能夠根據(jù)用戶的意愿產(chǎn)生,將加密后的文件以不同的后綴命名,然后上傳到FTP 服務器中。這樣AES 密鑰與文件相分離,即使拿到了私有云硬盤,也需要破解AES 加密的文件,若侵入了電腦通過動態(tài)調(diào)試拿到密鑰,也很難再侵入到私有云硬盤,可以提供雙重保護,保護了文件的信息安全,并可由用戶選擇隨機生成密碼或者是固定密碼,隨機生成密碼對于用戶信息的存儲極其繁瑣,所以該設計將生成的隨機碼保存在電腦或手機上,通過文件名加密鑰的方式進行存儲,解密時可以通過用戶名查找密鑰進行解密。文件存儲與密鑰存儲相分離,必須兩個設備同時破解才能解密出源文件,通過該文設計的一鍵喚醒模式,整個設備大多時間都會處于休眠狀態(tài),可以很好地保證安全性。用戶也可以選擇不存儲密鑰,選擇其他方式保存密鑰,靈活的存儲方式,可以進一步提高安全性。

圖3 隨機碼加密文件上傳至服務器
私有云存儲設備外接USB3.0的普通U盤,對設計的服務器進行速度測試,電腦為i5-6200U@2.4 GHz,普通SSD 硬盤,外接USB 千兆網(wǎng)卡。其速度為傳輸文件的平均速度,并非理論上的速度,也不是傳輸?shù)姆逯怠F滠浖姹径紴镺penWRT19.07 系統(tǒng),測試軟件與方法完全相同。
MT7621 為千兆網(wǎng)卡,其傳輸速度比MT76x8 系列搭建的私有云系統(tǒng)有較大的提升,使用MT7621搭建私有云性價比更高一些,其速度對比如圖4所示。
MT7621 比MT76x8 在傳輸速度上有了很大的提升。如圖4(a)所示,AP 模式下,MT7621 的下載速度是MT76x8 傳輸速度的4.7 倍;如圖4(b)所示,上傳速度為2.6 倍;如圖4(c)所示,STA 模式下,MT7621 的傳輸速度是MT76x8 傳輸速度的2.3 倍;如圖4(d)所示,上傳速度為3.1 倍。
如圖4 所示,在模式的使用上,通過實際實驗可知,使用AP 模式會很大提升傳輸?shù)男剩ㄗh在固定場景中使用AP 模式傳輸,移動場景使用STA 模式傳輸。上傳時還是會受到不同介質(zhì)的影響,該實驗中使用的普通U 盤,讀寫速度已經(jīng)達到了很理想的狀態(tài),達到了該文的設計目標。使用HDD 硬盤或者SSD 硬盤效果會更好,該文是一個很好的參考方案。

圖4 MT7621與MT76x8速度對比
在外網(wǎng)進行訪問時,使用Frp 方式,則局限于購買的云服務器的帶寬和本身的傳輸速度,不同的云服務器的帶寬,結(jié)果不同,可按需購買云服務器的帶寬與流量。
當客戶端連接私有云的時間到達設定的閾值,就會斷開連接,此時MT7621 設備也會進入休眠狀態(tài),用戶使用客戶端再次點擊連接時就可以通過ESP07 模塊喚醒MT7621 設備,進行數(shù)據(jù)傳輸。在STA 模式下,直接使用微信小程序的Airkiss 進行配網(wǎng),簡單快捷,無需單獨應用程序。
加密文件的后綴名為fenc,此后綴名可以在代碼中進行設置,可以對加密與非加密文件進行分類,使用文件流加密,其加密前后的大小沒有發(fā)生變化,既不會占用更多空間,也不會在加密過程中造成文件損耗。
根據(jù)文獻[17]可知,AES 加密可以抵抗強力攻擊、Square 攻擊、差分密碼攻擊、代數(shù)攻擊等。使用AES 加密文件,有著較高的安全性,將加密文件存儲在私有云,將加密密鑰存儲在本地的電腦或者手機中,實現(xiàn)加密文件與加密密鑰分別存儲,保護文件的安全性。
該文以MT7621 搭載OpenWRT 系統(tǒng)并搭建FTP服務器實現(xiàn)文件的傳輸與存儲,在外網(wǎng)訪問時使用Frp 技術(shù),并支持AP 模式和STA 模式,適合于多場景需要,通過ESP07 模塊的MQTT 協(xié)議可以實現(xiàn)一鍵喚醒,私有云在不使用時,進入休眠狀態(tài),不僅節(jié)約能源,也可以很好地保證安全。在STA 模式當中,使用ESP07 模塊,可以實現(xiàn)一鍵配網(wǎng),方便用戶的使用。該文設計在掛載普通USB 設備的前提下,其AP模式上傳速度可以達到10 MB/s 左右,下載速度為18 MB/s 左右。進行內(nèi)網(wǎng)穿透后,可以隨時隨地訪問私有云存儲設備。通過QT 設計客戶端,方便使用,并且通過128 位的AES 進行加密,將密鑰與文件分別存儲,保證文件的安全性,通過多種測試分析方法,證明AES128 加密有著很高的安全性。該項目已經(jīng)進入市場測試階段,目前運行較為穩(wěn)定,對于相關(guān)人員有很好的參考借鑒意義,有較高的實用價值。