黃一平,孫健華,梁梓辰
(1.廣西師范大學(xué)電子工程學(xué)院,廣西桂林 541000;2.廣西師范大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西桂林 541000)
由于大量數(shù)據(jù)存儲(chǔ)在租用的公有云,存在數(shù)據(jù)泄露風(fēng)險(xiǎn)且耗電量較高,該文使用MT7621 為核心,ESP07 模塊為從設(shè)備搭建個(gè)人私有云。MT7621 搭載OpenWRT 系統(tǒng)[1-6],并搭建FTP(File Transfer Protocol)服務(wù)器[7],使用Frp 技術(shù)進(jìn)行內(nèi)網(wǎng)穿透[8-12]。該文使用了ESP07模塊設(shè)計(jì)了一鍵喚醒操作,在一段時(shí)間未使用MT7621 時(shí),就讓MT7621 進(jìn)入休眠狀態(tài),使用時(shí),用戶可以點(diǎn)擊一鍵喚醒,重新喚醒MT7621,既節(jié)約能源,又可以很好地保證安全性。該文通過(guò)QT設(shè)計(jì)實(shí)現(xiàn)了桌面端的FTP 客戶端,并集成了128 位的AES(Advanced Encryption Standard)加密[13-17],可對(duì)Word文檔、文本文件、圖片、視頻等通過(guò)文件流加密的方式進(jìn)行加密傳輸,從而保護(hù)文件安全。
該文依據(jù)MT7621 與ESP07 進(jìn)行設(shè)計(jì)。MT7621作為核心設(shè)備使用時(shí)通電,不使用時(shí)則進(jìn)入關(guān)閉狀態(tài),以保護(hù)數(shù)據(jù)無(wú)法被外部網(wǎng)絡(luò)訪問(wèn),ESP07 不斷電,通過(guò)手機(jī)或者電腦指令,進(jìn)行一鍵喚醒操作。MT7621 搭載了Uboot 內(nèi)核、OpenWRT 系統(tǒng)、Nginx 認(rèn)證界面、FTP 服務(wù)器,以保證數(shù)據(jù)的收發(fā),利用手機(jī)APP 或者電腦客戶端發(fā)送指令。ESP07 包含Airkiss技 術(shù)、MQTT(Message Queuing Telemetry Transport)一鍵喚醒、斷線重連功能,同樣是由APP 與電腦端發(fā)送指令進(jìn)行控制,其整體設(shè)計(jì)如圖1 所示。
圖1 私有云整體設(shè)計(jì)
該文采用了多種技術(shù),其主要模塊的技術(shù)情況如表1 所示。
表1 主要模塊技術(shù)情況
OpenWRT 系統(tǒng)是Linux 系統(tǒng)的衍生版,是路由器的重要系統(tǒng),具有強(qiáng)大的網(wǎng)絡(luò)功能與豐富的板塊,可以自定義軟件與庫(kù)。該文設(shè)計(jì)的私有云系統(tǒng)可以作為路由器使用,也可以當(dāng)終端設(shè)備使用,將路由器模式與終端模式結(jié)合起來(lái),適應(yīng)于多個(gè)場(chǎng)景。
該文依據(jù)所需要的功能,對(duì)OpenWRT 系統(tǒng)進(jìn)行裁剪,包括支持2路USART、支持256 MB內(nèi)存和32 MB的NAND FLASH,以保持其更高的性能,并移植驅(qū)動(dòng)文件,如MT7612 驅(qū)動(dòng)等,移植對(duì)應(yīng)的軟件,如vsftpd等,并編寫MakeFile 文件,使其編譯到固件當(dāng)中,然后通過(guò)TFTP(Trivial File Transfer Protocol)的方式下載固件到MT7621 設(shè)備中。
FTP 基于TCP 協(xié)議的文件傳輸協(xié)議,采用客戶端/服務(wù)器模式,通過(guò)FTP 服務(wù)器進(jìn)行文件的上傳與下載。FTP 協(xié)議可以很好地控制用戶數(shù)量,更好地分配寬帶,可以很方便地上傳與下載文件。該文就是依據(jù)FTP 進(jìn)行數(shù)據(jù)傳輸,在Nginx 認(rèn)證通過(guò)后,即可開啟FTP 服務(wù)。
由于FTP 服務(wù)器可以通過(guò)眾多軟件訪問(wèn),不利于軟件與硬盤的安全。為了實(shí)現(xiàn)安全訪問(wèn),該文設(shè)計(jì)了Nginx 認(rèn)證,通過(guò)FCGI 接口返回信息,在重新登陸時(shí)都要連接Nginx 頁(yè)面,而FTP 的用戶名與密碼都放在代碼中打包,對(duì)于用戶來(lái)說(shuō),F(xiàn)TP 的用戶名和密碼是不可見的,從而更好地保護(hù)硬盤信息。Nginx 是一個(gè)輕量級(jí)的Web 服務(wù)器,占用內(nèi)存少,并發(fā)能力強(qiáng),可以流暢運(yùn)行在OpenWRT 系統(tǒng)。FCGI 是一個(gè)更高速的公共網(wǎng)關(guān)接口,有更高的性能。由于CGI解釋器的反復(fù)加載,其性能越來(lái)越差,F(xiàn)CGI 將其保持在內(nèi)存中,可以很大程度保持其性能。在有多人訪問(wèn)私有云設(shè)備時(shí),其登錄不會(huì)卡頓或者是服務(wù)器崩潰。
在OpenWRT 更新軟件包,并且在內(nèi)核中選中Nginx、FCGI,配置文件重新打包,系統(tǒng)啟動(dòng)后可以使用shell命令啟動(dòng)Nginx 與FCGI。
在IPv4 時(shí)代,IPv6 還沒(méi)有廣泛地被使用,僅僅通過(guò)IP 地址去訪問(wèn)設(shè)備,目前無(wú)法實(shí)現(xiàn),針對(duì)此問(wèn)題,該文設(shè)計(jì)了Frp 內(nèi)網(wǎng)穿透的方式訪問(wèn)私有云,實(shí)現(xiàn)隨時(shí)隨地訪問(wèn)私有云硬盤。內(nèi)網(wǎng)穿透,即NAT 穿透,其可以將私有地址轉(zhuǎn)換為合法的IP 地址,以完成重用地址,并且隱藏內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu)。外部主機(jī)要與內(nèi)網(wǎng)進(jìn)行通信,需要由內(nèi)網(wǎng)中的主機(jī)發(fā)起連接,使得NAT 設(shè)備產(chǎn)生映射條目。
在服務(wù)器端配置Frps,如購(gòu)買的阿里云主機(jī),在客戶端配置Frpc,同時(shí)啟動(dòng)兩者即可建立連接。在局域網(wǎng)開啟Frp 服務(wù)器之后,進(jìn)行層級(jí)上傳,然后通過(guò)服務(wù)器進(jìn)行中轉(zhuǎn),最后就可通過(guò)外網(wǎng)實(shí)現(xiàn)對(duì)Nginx與FTP 進(jìn)行訪問(wèn)。
私有云在STA 模式時(shí),需要快速地接入網(wǎng)絡(luò),傳統(tǒng)的AP 配網(wǎng)速度慢,操作繁瑣。Airkiss 可以直接將當(dāng)前手機(jī)的網(wǎng)絡(luò)發(fā)送給私有云設(shè)備,實(shí)現(xiàn)配網(wǎng)操作。
具體配網(wǎng)過(guò)程如圖2 所示。
圖2 Airkiss配網(wǎng)過(guò)程
MT7621 設(shè)備此時(shí)為STA 模式,與手機(jī)在同一個(gè)網(wǎng)絡(luò)環(huán)境下,手機(jī)連接WiFi 網(wǎng)絡(luò),MT7621 點(diǎn)擊按鍵,進(jìn)入一鍵配網(wǎng)模式,手機(jī)啟動(dòng)客戶端,點(diǎn)擊一鍵配網(wǎng),此時(shí)MT7621 即可連接到手機(jī)的網(wǎng)絡(luò)。
Airkiss 的基本配網(wǎng)技術(shù)如下:
1)MT7621 設(shè)備要處在混雜模式,此時(shí)無(wú)論MAC地址是否相同,處在混雜模式下的設(shè)備會(huì)把802.11格式的數(shù)據(jù)包全部接收過(guò)來(lái)。
2)MT7621 需要做到隨時(shí)進(jìn)行信道切換,802.11有多個(gè)信道,需要時(shí)刻切換信道來(lái)接收數(shù)據(jù)包。檢測(cè)到有效數(shù)據(jù)包之后,要鎖定在此信道下。
3)利用數(shù)據(jù)幀的長(zhǎng)度來(lái)承載有效信息。Airkiss使用UDP 廣播包作為載體,發(fā)送一些列的UDP 廣播包,每個(gè)廣播包都使用Length 進(jìn)行編碼,接收方接收到UDP 包后,使用Airkiss 解析出對(duì)應(yīng)的信息,完成配網(wǎng)過(guò)程。
MQTT 是一種基于發(fā)布與訂閱的輕量級(jí)通信協(xié)議,其可以利用極少的代碼和有限的帶寬,提供可靠的服務(wù)。MQTT 的控制報(bào)文以及內(nèi)嵌的應(yīng)用數(shù)據(jù)可以提供良好的安全性。
為了保護(hù)移動(dòng)硬盤的數(shù)據(jù)安全,使其更加節(jié)能,利用ESP07 模塊設(shè)計(jì)了一鍵喚醒操作,基于MQTT 協(xié)議,當(dāng)私有云硬盤一段時(shí)間(這個(gè)時(shí)間可以由用戶自行設(shè)置)沒(méi)有工作時(shí),硬盤電路將會(huì)自動(dòng)進(jìn)入休眠狀態(tài),此時(shí)MT7621斷電無(wú)法工作,當(dāng)用戶使用時(shí),點(diǎn)擊一鍵喚醒,MQTT 會(huì)發(fā)送信號(hào)使電路通電,喚醒MT7621 重新進(jìn)行工作,此設(shè)計(jì)相當(dāng)于設(shè)計(jì)了遠(yuǎn)程開關(guān)機(jī),保護(hù)了數(shù)據(jù)安全,如果用戶將MT7621 作為家庭路由器使用,這對(duì)于整個(gè)智能家居的安全都非常關(guān)鍵。
AES 算法以其速度快、內(nèi)存需求量低、靈活、易維護(hù)等特點(diǎn)廣泛用于數(shù)字簽名、文檔加密中。AES根據(jù)其密鑰不同,可以分為AES-128、AES-192 和AES-256。
一個(gè)密碼很難保證安全,也不利于用戶分享,所以該設(shè)計(jì)通過(guò)隨機(jī)產(chǎn)生密碼的方式生成密鑰,然后加密文件。如圖3 所示,將文件以文件流的形式打開,將文件流使用AES128 算法加密,由用戶設(shè)立獨(dú)立密碼,根據(jù)用戶設(shè)定的密碼產(chǎn)生AES 密鑰,可以保證AES 密鑰能夠根據(jù)用戶的意愿產(chǎn)生,將加密后的文件以不同的后綴命名,然后上傳到FTP 服務(wù)器中。這樣AES 密鑰與文件相分離,即使拿到了私有云硬盤,也需要破解AES 加密的文件,若侵入了電腦通過(guò)動(dòng)態(tài)調(diào)試拿到密鑰,也很難再侵入到私有云硬盤,可以提供雙重保護(hù),保護(hù)了文件的信息安全,并可由用戶選擇隨機(jī)生成密碼或者是固定密碼,隨機(jī)生成密碼對(duì)于用戶信息的存儲(chǔ)極其繁瑣,所以該設(shè)計(jì)將生成的隨機(jī)碼保存在電腦或手機(jī)上,通過(guò)文件名加密鑰的方式進(jìn)行存儲(chǔ),解密時(shí)可以通過(guò)用戶名查找密鑰進(jìn)行解密。文件存儲(chǔ)與密鑰存儲(chǔ)相分離,必須兩個(gè)設(shè)備同時(shí)破解才能解密出源文件,通過(guò)該文設(shè)計(jì)的一鍵喚醒模式,整個(gè)設(shè)備大多時(shí)間都會(huì)處于休眠狀態(tài),可以很好地保證安全性。用戶也可以選擇不存儲(chǔ)密鑰,選擇其他方式保存密鑰,靈活的存儲(chǔ)方式,可以進(jìn)一步提高安全性。
圖3 隨機(jī)碼加密文件上傳至服務(wù)器
私有云存儲(chǔ)設(shè)備外接USB3.0的普通U盤,對(duì)設(shè)計(jì)的服務(wù)器進(jìn)行速度測(cè)試,電腦為i5-6200U@2.4 GHz,普通SSD 硬盤,外接USB 千兆網(wǎng)卡。其速度為傳輸文件的平均速度,并非理論上的速度,也不是傳輸?shù)姆逯?。其軟件版本都為OpenWRT19.07 系統(tǒng),測(cè)試軟件與方法完全相同。
MT7621 為千兆網(wǎng)卡,其傳輸速度比MT76x8 系列搭建的私有云系統(tǒng)有較大的提升,使用MT7621搭建私有云性價(jià)比更高一些,其速度對(duì)比如圖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 所示,在模式的使用上,通過(guò)實(shí)際實(shí)驗(yàn)可知,使用AP 模式會(huì)很大提升傳輸?shù)男?,建議在固定場(chǎng)景中使用AP 模式傳輸,移動(dòng)場(chǎng)景使用STA 模式傳輸。上傳時(shí)還是會(huì)受到不同介質(zhì)的影響,該實(shí)驗(yàn)中使用的普通U 盤,讀寫速度已經(jīng)達(dá)到了很理想的狀態(tài),達(dá)到了該文的設(shè)計(jì)目標(biāo)。使用HDD 硬盤或者SSD 硬盤效果會(huì)更好,該文是一個(gè)很好的參考方案。
圖4 MT7621與MT76x8速度對(duì)比
在外網(wǎng)進(jìn)行訪問(wèn)時(shí),使用Frp 方式,則局限于購(gòu)買的云服務(wù)器的帶寬和本身的傳輸速度,不同的云服務(wù)器的帶寬,結(jié)果不同,可按需購(gòu)買云服務(wù)器的帶寬與流量。
當(dāng)客戶端連接私有云的時(shí)間到達(dá)設(shè)定的閾值,就會(huì)斷開連接,此時(shí)MT7621 設(shè)備也會(huì)進(jìn)入休眠狀態(tài),用戶使用客戶端再次點(diǎn)擊連接時(shí)就可以通過(guò)ESP07 模塊喚醒MT7621 設(shè)備,進(jìn)行數(shù)據(jù)傳輸。在STA 模式下,直接使用微信小程序的Airkiss 進(jìn)行配網(wǎng),簡(jiǎn)單快捷,無(wú)需單獨(dú)應(yīng)用程序。
加密文件的后綴名為fenc,此后綴名可以在代碼中進(jìn)行設(shè)置,可以對(duì)加密與非加密文件進(jìn)行分類,使用文件流加密,其加密前后的大小沒(méi)有發(fā)生變化,既不會(huì)占用更多空間,也不會(huì)在加密過(guò)程中造成文件損耗。
根據(jù)文獻(xiàn)[17]可知,AES 加密可以抵抗強(qiáng)力攻擊、Square 攻擊、差分密碼攻擊、代數(shù)攻擊等。使用AES 加密文件,有著較高的安全性,將加密文件存儲(chǔ)在私有云,將加密密鑰存儲(chǔ)在本地的電腦或者手機(jī)中,實(shí)現(xiàn)加密文件與加密密鑰分別存儲(chǔ),保護(hù)文件的安全性。
該文以MT7621 搭載OpenWRT 系統(tǒng)并搭建FTP服務(wù)器實(shí)現(xiàn)文件的傳輸與存儲(chǔ),在外網(wǎng)訪問(wèn)時(shí)使用Frp 技術(shù),并支持AP 模式和STA 模式,適合于多場(chǎng)景需要,通過(guò)ESP07 模塊的MQTT 協(xié)議可以實(shí)現(xiàn)一鍵喚醒,私有云在不使用時(shí),進(jìn)入休眠狀態(tài),不僅節(jié)約能源,也可以很好地保證安全。在STA 模式當(dāng)中,使用ESP07 模塊,可以實(shí)現(xiàn)一鍵配網(wǎng),方便用戶的使用。該文設(shè)計(jì)在掛載普通USB 設(shè)備的前提下,其AP模式上傳速度可以達(dá)到10 MB/s 左右,下載速度為18 MB/s 左右。進(jìn)行內(nèi)網(wǎng)穿透后,可以隨時(shí)隨地訪問(wèn)私有云存儲(chǔ)設(shè)備。通過(guò)QT 設(shè)計(jì)客戶端,方便使用,并且通過(guò)128 位的AES 進(jìn)行加密,將密鑰與文件分別存儲(chǔ),保證文件的安全性,通過(guò)多種測(cè)試分析方法,證明AES128 加密有著很高的安全性。該項(xiàng)目已經(jīng)進(jìn)入市場(chǎng)測(cè)試階段,目前運(yùn)行較為穩(wěn)定,對(duì)于相關(guān)人員有很好的參考借鑒意義,有較高的實(shí)用價(jià)值。