班紹桓,韓英杰,樊永文,周清雷
(鄭州大學 信息工程學院,鄭州450001)
在常見的二維條形碼(2-dimensional bar code)中,日本Denso公司研制的QR碼已經廣泛應用于產品追溯[1]、宣傳營銷、社交、支付、訪問控制[2]、授權系統[3]等各個領域,已滲透到國民經濟和人們日常生活中.而早期火車票上的明文QR碼就曾被不法分子用來竊取旅客身份證等隱私信息,因此如何保證QR碼所攜帶信息的安全就顯得非常重要.
對QR碼信息加密的研究是一個非常有意義的課題,國內外已有不少專家學者取得了一些研究成果.Conde-Lagoa等[4]提出加密QR碼應用于電子票務的新模型,避免出現用戶隱私信息泄露問題.劉彥偉等[5]通過口令加密算法對QR碼中信息進行加密,增加了口令功能以保護信息安全.張雅奇等[6]用QR碼的部分敏感信息所對應哈希值替換原來的信息,利用Hash函數的單向性來保障通信過程中信息不被泄露.Barrera等[7]將QR碼作為“容器”,利用光學加密技術對QR碼信息進行保護,指出一條以光學加密為手段的QR碼信息保護新道路.周慶等[8]首次將Ising物理模型與QR碼加解密相結合,保證了QR碼的安全保密通訊.
面對技術的不斷升級,傳統的QR碼信息加密方法受到了前所未有的挑戰.針對該嚴峻事實,本文提出一種基于擬態安全防御的QR碼信息加密架構.該架構利用多個加解密執行體以及動態調度策略來增加架構整體的隨機性與動態性,并且在保證QR碼信息安全的同時保留QR碼的編碼特性和糾錯能力.
隨著移動互聯網的爆發式發展,中國QR碼的使用率在全球遙遙領先.目前,世界上90%的QR碼個人用戶在中國.QR碼與普通條形碼相比有支持中文字符、存儲密度大、數據存儲量高、糾錯能力強和多角度高速識別的特點[9].
QR碼的結構如圖1所示,其由功能圖形和數據編碼區域組成.功能圖形包括7部分:空白區、位置探測圖形、位置探測圖形分隔符、定位圖形、校正圖形、格式信息和版本信息.數據編碼區域包括2部分,數據碼字和糾錯碼字.

圖1 QR碼結構圖Fig.1 QR code structure diagram
QR碼的制作流程[9]分為7個步驟:1)數據分析:分析輸入的數據并選擇合適的編碼模式;2)數據編碼:按照所選編碼模式將數據轉為二進制流串;3)糾錯編碼:根據數據塊和糾錯等級計算每個數據塊的糾錯塊;4)碼字填充:數據塊和糾錯塊填充到數據編碼區,必要時加剩余位;5)布置功能圖形:將位置探測圖形、位置探測圖形分隔符、定位圖形和校正圖形放入QR碼的功能圖形區域;6)掩模:為編碼區域安排深色和淺色模塊;7)布置格式和版本信息:根據所選的版本和等級信息,生成二進制流填充到格式與版本信息區域.整個制作流程如圖2所示.

圖2 QR碼制作流程圖Fig.2 QR code production flow chart
QR碼的解碼為編碼的逆過程.由于QR碼解碼算法公開且QR碼編碼過程中并未對信息進行加密,使得未授權人員亦可使用公開的QR碼解碼軟件隨意讀取其中信息,因而具有信息泄露隱患.
擬態防御(Mimic Defense,MD)是由鄔江興院士提出的一種具有動態、多樣性和隨機性等特點的新型主動防御技術[10].該技術的基本原理是動態異構冗余(Dynamic Heterogeneous Redundancy,DHR)結構[11].動態異構冗余結構原理如圖3所示,首先,從異構元素池中選擇合適的構件元素來組

圖3 動態異構冗余結構Fig.3 Dynamic heterogeneous redundancy structure
成不同的異構執行體集;然后,動態調度模塊從這些異構執行體中選擇出奇數個執行體來處理由輸入代理分發的相同輸入信息;最后,表決模塊對所有處理結果進行表決以獲得最終的輸出,同時將這些執行體運行時所產生的信息反饋給調度模塊,而調度模塊根據反饋信息選擇新的執行體來替換當前執行體集.其中,如果執行體個數為一且去除表決模塊,擬態防御將退化為移動目標防御(Move Target Defense,MTD)[12].
目標防御的靜態性和確定性因擬態防御技術的異構執行體集、動態調度等機制而發生改變,從而破壞了攻擊對平臺、環境的可依賴性.同時擬態防御技術還利用多模裁決機制來面對未知的漏洞威脅.因此,擬態防御技術能夠大大降低對目標系統攻擊成功的概率.
到目前為止,基于動態異構冗余架構的擬態防御技術已經投入到廣泛的應用之中.仝青等[13]設計出一種擬態web服務器;王禛鵬等[14]提出一種基于擬態防御的DNS框架設計;馬海龍等[15]將擬態防御思想應用在了路由器上;扈紅超等[16]設計出一種擬態網絡操作系統.
針對現有QR碼信息加密方法的不足,本文以擬態防御技術的核心架構——動態異構冗余結構為模型,并結合相關安全技術構造出一種具有動態、異構和隨機等特點的新型QR碼信息加密架構.新架構能夠有效地提升QR碼的安全性.
M-QR碼架構由資源池和中心控制器組成.如圖4所示,資源池由若干運行不同加解密算法的加密資源池、解密資源池以及將加解密算法一一對應的映射表資源池構成,而資源池中異構冗余的構件又是實現擬態防御動態性和多樣性的重要前提.中心控制器由選調器、輸入代理和表決器組成.具體地,輸入代理下達分發指令,將輸入的信息分發給不同的在線執行體;選調器根據系統狀態信息動態選取若干執行體作為活躍執行體集;表決器負責對所有活躍執行體的響應結果進行一致性裁決,以確定最后的輸出結果,同時將反饋信息返回給選調器并更新系統狀態信息.

圖4 M-QR碼架構邏輯圖Fig.4 Logic diagram of M-QR code architecture
M-QR碼的生成流程與普通QR碼生成流程有所差異,現將其流程描述如下:
1)首先,選調器根據系統當前狀態從資源池中選取并初始化n個執行體集,每個執行體集包括一個加密執行體、一個解密執行體和一個映射表執行體.
2)用戶向中心控制器輸入原始信息.
3)輸入代理將用戶輸入的原始信息復制n份并分發給各個加密執行體.
4)加密執行體對原始信息進行加密處理并根據映射表
將加解密標識符加到處理后的密文當中.
5)把從步驟4)獲得的各個加密執行體的密文和狀態信息分別傳輸到相應的解密執行體上.
6)各個解密執行體將密文進行解密處理,并將密文、解密后的信息以及執行體狀態信息傳輸到表決器上.
7)表決器根據裁決算法對解密處理結果進行一致性判決:
(a)若所有解密后的信息全部一致,將根據多模表決算法選擇出一個最優的密文作為最后輸出并生成相應的M-QR碼,同時將反饋信息傳輸給選調器.
(b)若并非所有解密后的信息全都一致,則認定大多數一致的解密信息作為正確的結果;此時,依舊根據表決算法在正確結果中選擇出一個最優的密文作為最后輸出并生成相應的M-QR碼,同時將反饋信息傳輸給選調器.
8)選調器根據從表決器傳輸來的反饋信息和系統狀態信息進行新的調度以更新在線執行體集,之后便等待用戶的下一次輸入.
異構冗余的實現異構性指的是完成相同功能的兩個執行體結構有所不同,這種執行體間的差異性能夠保證同一攻擊不能對兩個執行體成功.冗余性即異構執行體的多樣化.對于M-QR碼架構來說,其異構冗余性可以由兩種方式來獲得:一種是利用在實際應用中軟件、操作系統、算法和硬件的多樣性直接獲得一定的異構性[13],如表1中的處理器層可以有Intel和AMD,操作系統層又能分為Windows和Linux兩大類,又有多種軟件和加密算法;另一種是人為異構,例如對于加解密算法之間的映射等不具備多樣性的數據,采用標簽化、隨機化的方式設計出映射表,使其內容具有人為的異構性.
表1 異構元素表
Table 1 Heterogeneous element

異構層異構元素腳本層映射表1、映射表2…加密算法層DES、3DES、AES…軟件層Pycharm、VisualStudio、VS Code…操作系統層Windows(Windows7、Windows10…),Linux(Ubuntu、CentOS…)處理器層Intel、AMD…
動態調度的實現動態性是一種主動防御手段,指的是在一定周期內輪換在線工作的執行體.增加在線異構執行體的數量(提高冗余性)能夠為動態性提供支撐的同時提升安全性,但過量的執行體勢必會增加系統的工程成本.在M-QR碼架構中,一方面,在經過一定的時間后,選調器動態地選擇一部分正常的異構執行體來替換在線執行體集(奇數個);另一方面,對于根據表決器傳輸的狀態信息判斷為異常的在線執行體,選調器會在一輪調度結束后將其從在線執行體集中剔除,并進行線下清洗或者加入到黑名單中,同時選擇新的執行體替換該異常執行體.實現動態調度部分的偽代碼如下:
Input:SE=(E1,E2,E3,…,En)//資源池中的執行體集
T//調度周期時長
stat_info//執行體狀態信息
Output:AE=(A1,A2,A3,…,Am)//新在線執行體
BENGIN:
//無異常執行體且在一個調度周期內不更新
if stat_info is normal and t return //有異常執行體則替換這些異常執行體 if stat_info is abnormal: for abnormal_E in stat_info: //隨機選擇新的執行體 replace_E=random_choice(SE) //替換掉異常執行體 exchage(abnormal_E,replace_E) //將異常執行體加入黑名單 blacklist(abnormal_E) //進入新調度周期且沒有正在運行,替換所有在線執行體 if t>T and stat_info is not running: for 0 to m://選擇新的m個執行體 new_AE.append(random_choice(SE)) AE=new_AE//替換所有在線執行體 return AE//返回新的執行體集 END 多模表決的實現表決器是活躍執行體輸出內容必須經過的一個模塊,該模塊對同一輪執行體的輸出進行裁決,選出最終的結果,表決的內容越豐富,攻擊的難度就越大.在M-QR碼架構中,任何一個加密算法執行體都有相對應的解密算法執行體,解密算法執行體向表決器傳輸對各個密文解密后的內容,對這些內容使用大數表決以排除出錯異常執行體的輸出.此外,為了盡量提高性能,除了使用大數表決外,還對所有正確輸出進行額外的表決,以期從所有正確輸出的內容中得到最佳結果.實現多模表決部分的偽代碼如下: Input:results=(R1,R2,R3,…,Rm)//所有執行體的返回結果 Output:final_R//最佳返回結果 feedback_info//反饋信息 BEGIN //返回結果的解密信息是否全部一致 same=consistent(results) //全部一致則選出最佳結果并返回 if same is True: final_R=best_choice(results)//選擇最佳結果 return final_R else: //大數表決 correct_value=marjority_voting(results) //依據大數表決結果將返回結果分成正確和異常兩類 correct_RS,abnormal_RS= split(results,correct_value) //從正確結果中選出最佳結果 final_R=best_choice(correct_RS) //異常結果中返回異常信息 for abnormal_R in abnormal_RS: feedback_info.append(abnormal_R.info) return final_R,feedback_info//返回最終結果和反饋信息 END 最后,M-QR碼架構還需要一些假設前提:1)對于一個輸入,整個架構必須有一個輸出與之對應;2)在異構執行體安全的情況下,對于同一輸入,加密異構執行體的輸出內容解密后應當相同;3)允許不同的加密算法有不同的運行時間;4)若執行體被不法分子成功攻擊,則被攻擊的執行體所輸出內容的解密信息與正常執行體不一致. 為了驗證M-QR碼的有效性,本文對其進行了多方面的仿真實驗測試.三模冗余為目前常見有效的易實現的架構[13],本節中提到的M-QR碼都是由三模冗余的M-QR碼架構生成,其中包括三對加解密執行體(DES加解密執行體、3DES加解密執行體、AES加解密執行體)和三個加解密算法映射表. 實驗環境為: 1)操作系統:Windows 10; 2)CPU:Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz 2.40 GHz; 3)運行內存:8.00GB; 4)實驗工具:PyCharm 2018.1.4; 5)編程語言:Python 3.6.2; 6)使用的第三方庫:qrcode(普通QR碼生成庫),pyzbar(普通QR碼識別庫); 為測試本文所提出的M-QR碼架構的有效性,采用短文本信息在QR碼的數字、字母+數字、字母+字符、字母+數字+字符、漢字5種模式下均做了相關實驗,利用本文提出的M-QR碼架構與普通QR碼識別方法進行對比,并記錄相應的識別時間.測試數據如下,圖5是漢字模式下“鄭州大學”信息的QR碼圖像,其中圖5(a)是普通QR碼,未經行加密操作,可以使用普通QR碼識別軟件獲取信息;圖5(b)為經過本文所提出架構加密后的M-QR碼,該QR碼只能通過專用的M-QR碼識別軟件才能正確識讀其中信息.表2為詳細測試數據. 從表2的數據可以得知:1)專用的M-QR碼識別軟件可以正確識別所有QR碼和M-QR碼,而普通的QR碼識別軟件只能正確識別非M-QR碼,對M-QR碼的識別正確率為0.由此可以得出M-QR碼具有很高的安全性,可以成功抵御二維碼軟件的未授權識讀.2)加密口令由用戶設定,簡單、靈活.3)對比圖5的兩個二維碼圖像本身,兩個圖像非常相似,說明M-QR碼并不會改變原有QR碼的圖像排列規則,因此M-QR碼具有與普通QR碼相同的糾錯能力. 表2 M-QR碼與QR碼識別測試 模 式明文內容是否加密口令(密碼)識別結果M-QR碼加解密軟件解碼內容時間(s)普通識別解碼內容數字123456是abcdef1234560.039928BbWLLUwSP+FC0I7+bFKwnatQ==否無1234560.003953123456字母+數字ZZU2019是abc123ZZU20190.040889Cbu+iFzN43LQpoL1W38cx6oQ==否無ZZU20190.004986ZZU2019字母+字符#zzu.??是zzuabc#zzu.??0.054821CcskUBs/PMDRPY6UcaQY+fOg==否無#zzu.??0.005984#zzu.??字母+數字+字符Z17@gs.?$是123abcZ17@gs.?$0.039896BciYEVRqvMgjbzmjCprmTk9A==否無Z17@gs.?$0.004984Z17@gs.?$漢字鄭州大學是test鄭州大學0.057508Aasbf1dw/xy/ndqjgWFe6EyQ==否無鄭州大學0.030918鄭州大學 圖5 QR碼與M-QR碼對比Fig.5 Comparison between QR code and M-QR code 配置三種實驗,第一種為普通QR碼生成方法(記作QR),該方法做對照實驗,不對其進行任何加密操作和入侵模擬.第二種為單加密算法QR碼生成方法(記作E-QR),其中使用單個加密算法對輸入信息進行加密,可看作對文獻[5]中提到的QR碼信息加密方法的模擬;此外,修改使用的加密算法代碼,模擬該系統被成功入侵,修改內容為在生成相應QR碼前篡改了所要加密的信息.第三種為M-QR碼生成工具(記作M-QR),即修改三個執行體中的一個執行體代碼來模擬入侵,同樣在被選中的執行體加密時篡改所要加密的信息.通過這三組實驗的輸出結果來分析M-QR碼的入侵容忍能力. 表3 實驗對象配置 實驗口令加密算法腳本入侵模擬QR無無無無E-QRzzu123DES無DES代碼被修改M-QRzzu123DES,3DES,AES異構化處理后的映射表DES代碼被修改 實驗對象的配置如表3所示,三個實驗對象輸入相同的明文(字符串“Intrusion Tolerance”);修改E-QR和M-QR中的DES加密算法代碼,使對任意輸入,該加密算法會篡改要加密的信息,即在原始明文的頭和尾分別加上字符串(包含空格)“bsh ”和“ zzu”. 表4 識別測試結果 實驗原始明文識別結果QRIntrusion ToleranceIntrusion ToleranceE-QRIntrusion Tolerancebsh Intrusion Tolerance zzuM-QRIntrusion ToleranceIntrusion Tolerance 三組實驗生成的二維碼圖像如圖6所示,圖6(a)使用普通的QR碼識別軟件進行識讀,圖6(b)使用與第二組實驗相對應的識別軟件進行識讀,圖6(c)使用M-QR碼專用識別軟件識讀,所得結果如表4所示.從表4可以看出,對于同一被成功入侵的DES加密算法,E-QR實驗對象所生成QR碼的最終識別結果受到影響,而由M-QR實驗對象所生成的M-QR碼的最終識別結果未受影響.因此,M-QR碼架構具有一定的入侵容忍能力. 圖6 入侵容忍實驗結果Fig.6 Resultsof Intrusion tolerance test QR碼所攜帶信息為原始明文信息,對應的生成架構不存在加密模塊,因此本文不對其進行抗攻擊性分析.參考文獻[11],本文也使用基于離散模型模擬M-QR碼生成架構的抗攻擊性.攻擊者的攻擊能力會隨著時間的推移而變強,我們用符號αi表示第i個周期內攻擊者的攻擊能力.參考文獻[11],我們將系統被攻擊者攻擊成功的概率隨時間變化關系作為攻擊者的攻擊能力,即: (1) 其中Ti是第i個周期的結束時間. 圖7 E-QR碼架構和M-QR碼架構抗攻擊性對比圖Fig.7 Anti-aggression comparison between architectureE-QR code and M-QR code 同時,假設攻擊者對執行體1、執行體2、執行體3攻擊成功的概率分別為p1、p2和p3。所以,在第i個周期內,E-QR碼生成架構被攻擊成功的概率(使用與執行體1相同的加密算法)可以表示為: Pi=αip1,i={1,2,…,n} (2) M-QR碼架構被攻擊成功的概率可以表示為: (3) 令p1=0.6,p2=0.7,p3=0.8,λ=0.5。如圖7所示,隨著時間的推移,M-QR碼的安全性一直高于傳統單一加密QR碼。 本文對生成QR碼、E-QR碼和M-QR碼的消耗時間進行理論對比分析,涉及到的符號如表5所示. 表5 符號定義 符號定義符號含義TprocessQR碼生成過程所耗時間Tencrypt加密處理過程所耗時間Tmax_encrypt多個加密處理過程中最長耗時Tsa選調器處理耗時(調度執行體)Tvoter表決器處理耗時 普通QR碼生成所耗時間為: TQR=Tprocess (4) 單加密QR碼生成所耗時間為: TE-QR=Tprocess+Tencrypt (5) M-QR碼生成所耗時間為: TM-QR=Tprocess+Tmax_encrypt+Tsa+Tvoter (6) 所以,QR碼生成相比,M-QR碼的生成過程額外增加耗時為: Taddition_1=Tmax_encrypt+Tsa+Tvoter (7) 與E-QR碼生成相比,M-QR碼的生成過程額外增加耗時為: Taddition_2≈Tsa+Tvoter (8) 為測試實際生成過程中增加的額外耗時,對在第4.3節中提到的三種實驗對象進行以下實驗:分別輸入長度為4、8、16字節的明文信息,記錄每個實驗對象生成QR碼所花費的時間,每組實驗對象運行10次求平均耗時.從圖8中可看出: 圖8 三種QR碼生成耗時對比圖Fig.8 Time-consuming comparison between threekinds of QR code 1)對三種實驗對象而言,每種輸入規模下M-QR碼的生成耗時都是最長,E-QR碼的生成耗時次之,QR碼的生成耗時最短,這也符合我們的理論分析;2)隨著輸入字符串長度的增加,三種實驗對象所生成QR碼的耗時也跟著增加;3)隨著輸入字符串長度的增加,M-QR碼生成耗時與普通QR碼生成耗時的差值Taddition_2也跟著增加,這是多模冗余結構附帶的必然代價. 對于本次實驗,M-QR碼在三種輸入長度下的平均額外增加耗時為分別為Taddition_1=0.07166、Taddition_2=0.01152(單位:秒).此外,由表2可知M-QR碼的識別比普通QR碼平均延時了0.182217秒左右.即M-QR的生成延時和識別延時都很低,因此我們認為M-QR碼可以達到實際應用的標準. 圖9 不同輸入規模下平均生成耗時Fig.9 Average time consumption under different input scales 從上述實驗得知M-QR碼的生成耗時隨著輸入字符串長度的增加而增加,為進一步判斷M-QR碼生成時間與其所要加密信息規模的關系,設置實驗如下:配置6組實驗對象,每組實驗對象中的原始明文字符長度分別為2、4、8、16、32、64,每組實驗運行10次并記錄其花費時間.每組的平均耗時如圖9所示,其中橫坐標為明文長度(單位為字節),縱坐標為運行時間(單位為秒).從圖中可以看出M-QR碼生成耗時的增長趨勢隨著輸入規模(明文長度)的增長逐漸放緩,但總體的生成耗時依然呈增加趨勢.參考文獻[10],可以采用只對關鍵信息進行判決或者以消息隊列為載體,按照FIFO規則進行判決等策略來提升時間性能. 本文針對QR碼存在的缺陷,提出了一種基于擬態防御思想的新型QR碼信息加密架構,該架構具有動態性、隨機性和不確定性,從而提高了M-QR碼架構的入侵容忍能力和抗攻擊性.通過實驗證明,普通QR碼識別軟件對本架構生成M-QR碼的正確識別率為0%,必須使用專用識別軟件并輸入正確口令才能獲取M-QR碼的真正信息,顯著提升了QR碼的安全性,具有很強的實用性. M-QR碼生成的時間開銷在面對大規模輸入時會變大是新架構的不足之處,因此,可以將優化調度算法和裁決策略作為接下來的研究重點,以期提升新架構的時間性能.4 仿真實驗
4.1 M-QR碼加解密性能
Table 2 Recognition test of M-QR code and QR code

4.2 入侵容忍能力
Table 3 Configuration of the devices under test
Table 4 Testingresultsofrecognition

4.3 抗攻擊性



4.4 時間性能
Table 5 Symbol definition


5 結 論