劉氫
(上海市國有資產(chǎn)信息中心 上海市 200000)
隨著單位信息化工作的持續(xù)開展,各類業(yè)務(wù)信息系統(tǒng)存儲了大量加密和非加密的基礎(chǔ)文件,要及時準確地獲取這些基礎(chǔ)數(shù)據(jù),并安全的與相關(guān)單位進行數(shù)據(jù)交換并不容易。如何科學(xué)有效地管理文件加解密工作是問題的關(guān)鍵所在。
本文提出的基于Yii2+springboot2 的文件加解密管理系統(tǒng),可以高效解決該問題,對相關(guān)單位企業(yè)有較高的參考價值。
傳統(tǒng)系統(tǒng)設(shè)計流程包括數(shù)據(jù)庫表設(shè)計,業(yè)務(wù)邏輯設(shè)計,前端界面設(shè)計,后端接口設(shè)計等,流程中每一步都需要消耗大量的時間與精力,同時還需要兼顧程序代碼的規(guī)范性,可讀性與可擴展性,這樣會導(dǎo)致研發(fā)成本過高[1]?,F(xiàn)代系統(tǒng)開發(fā)模式崇尚高效開發(fā),減少重復(fù)造輪子的工作,我們可以在成熟的開發(fā)框架上進行二次開發(fā)。Yii2 和springboot2 就是兩個成熟的開發(fā)框架。
Yii2 是一個高性能、安全、專業(yè)的全棧開源Web 開發(fā)框架,可以用于快速開發(fā)各種使用 PHP 語言構(gòu)建的中大型Web 應(yīng)用。Yii2 框架實現(xiàn)了MVC 設(shè)計模式,每個應(yīng)用都通過唯一的一個入口腳本web/index.php 文件接受Web 請求并創(chuàng)建控制器實例,該控制器實例創(chuàng)建相應(yīng)的動作實例,在該請求通過系統(tǒng)驗證之后,則執(zhí)行該動作實例[2]。Yii2 框架集成了用戶登錄系統(tǒng)及前端ui 系統(tǒng),并采用模塊化的集成方式,所以在該框架上進行開發(fā)可以專注于業(yè)務(wù)邏輯的設(shè)計。
Springboot2 也是一個非常優(yōu)秀的開發(fā)框架,其設(shè)計目的是用來簡化 web 應(yīng)用的初始搭建及開發(fā)過程。借助Springboot2 框架可以快速實現(xiàn)后端的接口開發(fā)。
單就文件加解密管理系統(tǒng)而言,我們可以只采用兩個開發(fā)框架中的任何一個,都可以實現(xiàn)所有功能,但是我們嘗試結(jié)合兩個框架的優(yōu)點,以期顯著提高開發(fā)效率和代碼質(zhì)量。系統(tǒng)整體設(shè)計圖結(jié)構(gòu)如圖1所示。
Yii2 框架的優(yōu)點之一在于Yii2 有自動生成前端頁面的gii 工具,Yii2 的視圖模塊可以通過gii 工具一鍵生成,極高的節(jié)省了前端設(shè)計和開發(fā)的時間,所以把涉及到文件管理的部分放在Yii2 框架里完成。而Springboot2 框架的優(yōu)點之一在于接口開發(fā)的快速,運用idea 工具生成springboot 項目文件之后,只需要在對應(yīng)的類下寫好相應(yīng)的路由和函數(shù)即可實現(xiàn)相關(guān)業(yè)務(wù)邏輯接口,同時考慮到j(luò)ava 版本的加解密算法庫比php 的加解密算法庫要更多更全面,所以把涉及到文件加解密的邏輯放在springboot2 框架下實現(xiàn)。
本系統(tǒng)運行環(huán)境搭建在Linux 操作系統(tǒng)上。因為Yii2 是基于php 語言的開發(fā)框架,而springboot2 是基于java 語言的開發(fā)框架,所以需要在Linux 上安裝php 和java 的執(zhí)行環(huán)境,同時需要安裝web 服務(wù)器來保證網(wǎng)絡(luò)能對外提供訪問服務(wù)。
最后選用xampp 集成環(huán)境作為系統(tǒng)運行的承載方式。XAMPP的名稱來自以下技術(shù)的組合:X(支持跨平臺)、Apache、MySQL或 MariaDB、PHP、Perl。XAMPP 是一個把 Apache 網(wǎng)頁服務(wù)器與PHP、Perl 腳本語言及 MariaDB 數(shù)據(jù)庫集合在一起的安裝包,允許用戶可以在虛擬機上方便的建立網(wǎng)頁服務(wù)器環(huán)境。同時,系統(tǒng)采用jdk1.8 來支撐java 應(yīng)用的執(zhí)行。
文件加解密管理系統(tǒng)的主要模塊包括:用戶管理模塊,文件管理模塊,文件加密模塊,文件解密模塊。其中,用戶管理模塊包括用戶注冊,登錄及權(quán)限管理;文件管理模塊包括文件上傳下載,文件crud(增刪改查),文件命名規(guī)范;文件加密模塊包括密鑰生成,對稱加密和非對稱公鑰加密;文件解密模塊包括獲取密鑰,對稱私鑰解密和非對稱私鑰解密。各模塊之間相互聯(lián)系,方便了在線管理文件加解密流程。如圖2所示。
圖1:系統(tǒng)整體設(shè)計圖
圖2:系統(tǒng)功能模塊
圖3:文件加解密流程圖
文件加解密管理系統(tǒng)的用戶管理模塊涉及到用戶注冊,用戶登錄,及用戶的權(quán)限管理。其中用戶注冊和登錄模塊為Yii2 框架自帶功能,用戶的權(quán)限管理模塊則是通過兼容Yii2 框架的Yii2-admin插件來實現(xiàn)。Yii2 的初始訪問權(quán)限只區(qū)分了游客和管理員,如果需要擴展訪問權(quán)限,需要自己編寫代碼配合Yii2 自帶的rbac 組件去實現(xiàn)權(quán)限管理,而Yii2-admin 是將rbac 的管理可視化,只需要在可視化界面上操作就能設(shè)置好權(quán)限管理規(guī)則,并在數(shù)據(jù)庫的規(guī)則表里生成相關(guān)記錄。
文件管理模塊包含文件的上傳下載功能,文件的增刪改查功能及文件命名規(guī)范管理功能。
通過Yii2 框架里自帶的 yiiwebUploadedFile 類,再結(jié)合前端小部件和對應(yīng)的模型類,就可以快速開發(fā)好安全的文件上傳功能。
文件下載則是通過訪問文件路徑實現(xiàn)直接下載。
文件的增刪改查主要是指文件路徑的增刪改查,文件管理模塊對應(yīng)的表名為file,Yii2 框架通過gii 工具,可以為file 表創(chuàng)建對應(yīng)的模型類,控制器類及對應(yīng)的視圖文件。
文件命名主要由五個部分構(gòu)成:
單位代碼_業(yè)務(wù)代碼_版本代碼_時間戳_32 位的唯一ID
其中時間戳由年月日和日期對應(yīng)的時間戳前6 位組合而成,32 位唯一ID 則通過生成通用唯一識別碼(UUID:Universally Unique Identifier)算法得出。
UUID 生成的基礎(chǔ)原理就是采用md5 函數(shù)生成密碼字符串,然后用substr 函數(shù)在里面截取對應(yīng)8-4-4-4-12 個字符,其中每個字符是 0-9 或 a-f 范圍內(nèi)的一個十六進制的數(shù)字,這樣就可以拼出一個32 位的uuid。
隨著時代的發(fā)展,信息安全已經(jīng)成為不容忽視的問題。單一的密碼體制越來越不能滿足信息安全領(lǐng)域的需求,混合密碼體制將成為研究的重要趨勢。數(shù)字信封是一種通過公鑰密碼算法加密并分發(fā)對稱密碼算法密鑰的混合加解密方法[3]。
文件加解密管理系統(tǒng)里也用到了數(shù)字信封技術(shù)。在對稱加密中,數(shù)據(jù)發(fā)送方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去。接收方收到密文后,若想解讀原文,則需要使用加密密鑰及相同算法的逆算法對密文進行解密,才能使其恢復(fù)成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進行加密和解密[4]。
對稱加密算法的優(yōu)點在于執(zhí)行速度快,缺點在于密鑰的傳輸安全及管理情況,一旦對稱加密算法所用的密鑰在傳輸過程中被盜,則傳輸信息的安全性就無法得到保障。為了解決傳輸過程中的數(shù)據(jù)安全問題,業(yè)界提出了非對稱加密算法。
非對稱加密算法中使用到兩個密鑰,一個是可以公開傳輸?shù)拿荑€,簡稱公鑰,一個是自己保存的私鑰。非對稱加密算法的基本原理是:由數(shù)據(jù)傳輸?shù)慕邮辗礁鶕?jù)特定的非對稱加密算法生成兩個密鑰,即公鑰和私鑰,然后把公鑰傳遞給數(shù)據(jù)傳輸?shù)陌l(fā)起方,數(shù)據(jù)傳輸?shù)陌l(fā)起方對要傳輸?shù)臄?shù)據(jù)用公鑰進行加密,數(shù)據(jù)接收方收到的是加密后的數(shù)據(jù),再用開始生成的私鑰對該數(shù)據(jù)進行解密,就得到了原始的裸數(shù)據(jù)。非對稱加密算法的缺點在于算法的復(fù)雜度高,從而使得加解密速度沒有對稱加密算法的執(zhí)行速度快。
數(shù)字信封技術(shù)綜合了對稱加密算法和非對稱加密算法的優(yōu)點。顧名思義,數(shù)字信封就相當于把一把鑰匙放在信封里,公開傳遞的是信封(公鑰),這樣保證了鑰匙(私鑰)的安全性。
文件加密模塊主要包括生成對稱加密需要的私鑰key1,然后對原始文件A 進行加密處理,得到對稱加密后的文件B;獲取非對稱加密所需要的公鑰C,然后對對稱加密需要的私鑰key1 進行加密,得到非對稱加密后的私鑰,即數(shù)字信封。
文件解密模塊主要包括獲取非對稱加密算法所需的私鑰D,然后對數(shù)字信封進行解密,獲取對稱加密算法所需的密鑰key1,最后對用key1 對文件B 進行解密,得到最后的原始文件A。
根據(jù)實際工作需要,設(shè)計與實現(xiàn)了基于Yii2+springboot2 的文件加解密管理系統(tǒng),將之前需要零散手工處理的加解密工作,系統(tǒng)化集成到系統(tǒng)里,有序管理文件的上傳下載及加解密工作,極大的提升了工作效率。
用戶管理模塊和文件管理模塊采用的Yii2 框架技術(shù),使整個系統(tǒng)的架構(gòu)符合高內(nèi)聚、低耦合的設(shè)計標準。
在文件加解密方面采用數(shù)字信封技術(shù)一方面解決了私鑰傳輸過程中的安全性問題,另一方面加解密算法執(zhí)行效率也可以得到提升。采用springboot2 實現(xiàn)數(shù)字信封技術(shù),可以很好的利用java 密碼庫完備的優(yōu)勢,同時也兼顧了密碼算法的擴展性。
采用兩種成熟框架結(jié)合的開發(fā)方式可以在確保完成工作需求,保障代碼質(zhì)量的前提下極大的提升開發(fā)效率,是值得推廣的一種開發(fā)模式。