李娜娜 吳響 胡俊峰
摘要:JSON傳輸?shù)臄?shù)據(jù)攜帶敏感或隱私的數(shù)據(jù)時,容易被非法分子抓包截取,提高了軟件潛在風險。目前一些開源的JSON數(shù)據(jù)加密算法加密的效果并不理想,傳輸速度也受限。該文對現(xiàn)有的加密方法進行了改進,以提供一種更高效快捷的JSON數(shù)據(jù)包的動態(tài)無損加密方法。
關鍵詞:JSON;云端管控;通信協(xié)議;數(shù)據(jù)加密
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2017)33-0049-02
1 背景
JSON是一種輕量級的數(shù)據(jù)交換格式。它基于ECMAScript的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結構使得 JSON 成為理想的數(shù)據(jù)交換語言[1]。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡傳輸效率。所以JSON常取代XML用來在服務器和客戶端之前傳輸數(shù)據(jù)。但當傳輸?shù)臄?shù)據(jù)攜帶敏感或隱私的數(shù)據(jù)時,容易被非法分子抓包截取,大大提高了軟件潛在風險[2]。
針對以上問題,出現(xiàn)了一些JSON數(shù)據(jù)的加密算法[3,4]。目前一些開源的JSON數(shù)據(jù)加密算法適合加密要求不高的軟件,若被不法分子截取到很容易分析出數(shù)據(jù),因此加密的效果并不理想,同時加密后的數(shù)據(jù)大小變大,降低了帶寬資源利用率,傳輸速度受限。
為了克服上述現(xiàn)有技術的缺點,本研究在吸取了一些開源加密的優(yōu)點的同時,對現(xiàn)有的加密方法進行了改進。旨在提供一種更高效快捷的JSON數(shù)據(jù)包的動態(tài)無損加密方法。
本研究將方法抽象成客戶端、服務器、數(shù)據(jù)加密中心、數(shù)據(jù)解密SDK四個部分,每個部分各司其職,便于代碼的實現(xiàn)和維護。本研究有效提高了客戶端和服務器直接通信時通信數(shù)據(jù)包的安全性,適用于對隱私數(shù)據(jù)要求高的軟件。
2 技術方案
本研究是以如下技術方案實現(xiàn)的:將方法抽象成客戶端、服務器、數(shù)據(jù)加密中心、數(shù)據(jù)解密SDK四個部分,每個部分各司其職,明確分工,便于代碼的實現(xiàn)和維護。具體分為JSON數(shù)據(jù)包加密和數(shù)據(jù)包解密兩個流程:
1) JSON數(shù)據(jù)包加密包括如下步驟:
①客戶端根據(jù)業(yè)務需要發(fā)送GET/POST請求到服務器;
②服務器接受請求、處理請求并生成待發(fā)送的響應數(shù)據(jù),將待發(fā)送的響應數(shù)據(jù)組裝成JSON數(shù)據(jù)包,發(fā)送到數(shù)據(jù)加密中心進行二次處理;
③數(shù)據(jù)加密中心將對生產(chǎn)的JSON數(shù)據(jù)包進行格式檢查,確保生成的JSON數(shù)據(jù)包格式正確;若格式正確則對響應數(shù)據(jù)進行加密,并將加密的key和value記錄到數(shù)據(jù)庫,以供解密SDK工具包解密使用。否則返回錯誤信息,并重新執(zhí)行步驟②。
④服務器返回最終處理后的JSON數(shù)據(jù)包到客戶端。
2) JSON數(shù)據(jù)包解密包括如下步驟:
①客戶端收到響應的JSON數(shù)據(jù)包后,將對接收的JSON數(shù)據(jù)包進行格式檢查,以防止數(shù)據(jù)在傳輸過程或其他環(huán)節(jié)出現(xiàn)數(shù)據(jù)丟失的問題,若格式正確則執(zhí)行步驟②,否則返回錯誤信息;
②客戶端調(diào)用數(shù)據(jù)解密SDK對響應數(shù)據(jù)進行解密,數(shù)據(jù)解密SDK會查詢服務器的數(shù)據(jù)字典來解密JSON數(shù)據(jù)包,將解密后的數(shù)據(jù)結果返回給客戶端,以供客戶端業(yè)務使用。
與現(xiàn)有技術方案相比,本研究的有益效果是:
①集成了已有技術方案的優(yōu)點;
②對現(xiàn)有的方法進行了改進,在加密效果和數(shù)據(jù)傳輸效率上取平衡,在保證不增加數(shù)據(jù)大小的前提下提高加密效果,減少帶寬、流量等網(wǎng)絡資源。
3 具體實施方式
3.1 基于云端管控的JSON數(shù)據(jù)包加密解密方法
如圖1所示,本文涉及的基于云端管控的JSON數(shù)據(jù)包加密解密方法主要包括四個部分:客戶端、服務器、數(shù)據(jù)加密中心、數(shù)據(jù)解密SDK。首先,客戶端根據(jù)業(yè)務需要發(fā)送GET/POST請求到服務器;其次,服務器接受請求、處理請求并生成待發(fā)送的響應數(shù)據(jù),將待發(fā)送的響應數(shù)據(jù)發(fā)送到數(shù)據(jù)加密中心進行二次處理;再次,數(shù)據(jù)加密中心對響應數(shù)據(jù)進行加密,并將加密的key和value記錄到數(shù)據(jù)庫,以供數(shù)據(jù)解密SDK工具包解密使用;從次,服務器將處理后的響應數(shù)據(jù)發(fā)送到客戶端,客戶端調(diào)用數(shù)據(jù)解密SDK對響應數(shù)據(jù)進行解密;最后數(shù)據(jù)解密SDK會查詢服務器的數(shù)據(jù)字典來解密JSON數(shù)據(jù)包,將解密后的數(shù)據(jù)結果返回給客戶端,以供客戶端業(yè)務使用。
3.2 JSON數(shù)據(jù)包加密工作流程
如圖2所示, JSON數(shù)據(jù)包加密工作流程具體如下:
1) 客戶端根據(jù)業(yè)務需要發(fā)送GET/POST請求到服務器。
2) 服務器接受請求、處理請求并生成待發(fā)送的響應數(shù)據(jù),將待發(fā)送的響應數(shù)據(jù)組裝成JSON數(shù)據(jù)包,發(fā)送到數(shù)據(jù)加密中心進行二次處理。
3) 數(shù)據(jù)加密中心將對生產(chǎn)的JSON數(shù)據(jù)包進行格式檢查,確保生成的JSON數(shù)據(jù)包格式正確;若格式正確則對響應數(shù)據(jù)進行加密,并將加密的key和value記錄到數(shù)據(jù)庫,以供數(shù)據(jù)解密SDK工具包解密使用。否則返回錯誤信息,并重新執(zhí)行步驟2)。
4) 服務器返回最終處理后的JSON數(shù)據(jù)包到客戶端。
圖2 JSON數(shù)據(jù)包加密工作流程圖
3.3 JSON數(shù)據(jù)包解密工作流程
如圖3所示, JSON數(shù)據(jù)包解密工作流程具體如下:
1) 客戶端收到響應的JSON數(shù)據(jù)包后,將對接收的JSON數(shù)據(jù)包進行格式檢查,以防止數(shù)據(jù)在傳輸過程或其他環(huán)節(jié)出現(xiàn)數(shù)據(jù)丟失的問題,若格式正確則執(zhí)行步驟2),否則返回錯誤信息。
2) 客戶端調(diào)用數(shù)據(jù)解密SDK對響應數(shù)據(jù)進行解密,數(shù)據(jù)解密SDK會查詢服務器的數(shù)據(jù)字典來解密JSON數(shù)據(jù)包,將解密后的數(shù)據(jù)結果返回給客戶端,以供客戶端業(yè)務使用。
3.4 數(shù)據(jù)解密SDK的工作流程
如圖4所示,數(shù)據(jù)解密SDK的工作流程具體如下:
1) 收到客戶端調(diào)用的指令和待解密的JSON數(shù)據(jù)包。
2) 數(shù)據(jù)解密SDK提取待加密的JSON數(shù)據(jù)包中的key和value,查詢服務器的數(shù)據(jù)字典將被替換的key和value值恢復,將恢復后的JSON數(shù)據(jù)包返回給客戶端,以供客戶端業(yè)務使用。
4 結束語
本研究方法集成了已有技術方案的優(yōu)點;有效解決了加密后JSON數(shù)據(jù)變大的這種情況,對現(xiàn)有的算法進行了改進,在加密效果和數(shù)據(jù)傳輸效率上取平衡,在保證不增加數(shù)據(jù)大小的前提下提高加密效果,減少帶寬、流量等網(wǎng)絡資源。
參考文獻:
[1] 李錚. 基于反射機制實現(xiàn)Java對象向Json數(shù)據(jù)的轉換[J]. 承德石油高等??茖W校學報, 2010, 12 (1):36-39.
[2] 李超. 大數(shù)據(jù)環(huán)境下隱私保護的研究現(xiàn)狀分析[J]. 電腦知識與技術, 2016, 12(6X):29-31.
[3] 馬世歡. 基于IBC的JSON數(shù)據(jù)安全傳輸研究[J]. 安徽電子信息職業(yè)技術學院學報, 2015(2):34-36.
[4] 方耀耀. 一種基于樹形結構的Sql結果集向Json數(shù)據(jù)的轉換算法[J]. 電子測試, 2016(2):51-53.