梁大偉
(江蘇警官學院 計算機信息與網絡安全系,江蘇 南京 210031)
近年來,移動智能終端在中國呈現爆發式的增長,搭載二維碼技術的相關應用層出不窮,涉及到人們生活的方方面面。但在人們享受二維碼帶來便利的同時,其本身所存在的信息安全問題也不容忽視,因二維碼使用不當造成經濟損失或者個人信息泄露的事件時有發生。
結合市面現有二維碼的使用方式,對二維碼生成、傳播、使用等環節進行分析研究,以提高用戶端二維碼信息的安全性,給出各方面安全隱患的應對策略。
在20世紀70年代,日本Denso Wave公司為了追蹤汽車零部件而設計了二維碼(two-dimensional bar code),它是用某種特定的幾何圖形按一定規律在平面(二維方向)分布的黑白相間的圖形記錄數據符號信息[1]。根據編碼方式的不同,可分為堆疊式和矩陣式等。其中由于 QR二維碼具有(Quick-Response code)高密度、大容量、容錯強、譯碼可靠等特點,在移動支付、信息交互、物流管理等方面被廣泛應用。
QR碼是由若干個黑白方形模塊排列組成的正方形矩陣,分為編碼區域和功能圖形區域,黑色代表1,白色代表0,符號規格根據編碼數據量自適應調整,支持數字、字母、日文字(Shift JIS)、漢字(UTF-8、BIG5)等數據編碼方式[2]。
QR碼的通用結構標準是由功能圖形(function patterns)和編碼區(encoding region)組成,其中功能圖形有空白區(quite zone)保證QR碼清晰可識別、定位標識(finder pattern)協助掃描軟件定位并變換坐標系、分隔符(separator)用于區分編碼區域和定位標識、定時標識(timing pattern)指示標識密度和確定坐標系、校正標識(alignment pattern)進一步校正坐標系;編碼區有編碼區域(encoding region)標識編碼數據、格式信息(format information)來存放容錯級別等數據、版本信息(version information)、數據及容錯字碼(data and error correction codewords)。

圖1 QR 碼的符號結構[3]Fig.1 QR Code Symbolic structure[3]
ISO/IEC 18004中規定了QR碼使用四種標準編碼方式將數據信息轉換為二維碼圖形的通用編碼流程,通過硬件設備將圖形定位掃描后對圖形進行逆轉還原成數據信息則為解碼。

圖2 數據“JSPI”編碼過程Fig.2 Coding process of data “JSPI”
首先對要編碼的數據進行分析(data analysis),確定使用的 QR碼的版本信息、編碼方式等,對數據進行編碼(data encoding),插入模式標識碼和終止標識符,加入填充字節來滿足標準的數據字碼數要求,計算容錯碼(error correction coding),附在編碼數據后,組織數據(structure final message),將準備好的數據切分后填充(module placement in matrix)到矩陣中,對數據進行掩碼(data masking),使得二維碼圖形中的深色和淺色(黑色和白色)區域能夠比率最優的分布,最后填入格式和版本信息(format and version information),完成整個編碼過程[4]。
QR碼包含多種獨特的符合特征,這些特征保證了通過硬件識別時快速的獨立定位性[5]。搜索 3個功能圖形和空白區后,QR碼得到定位,進行圖像的預處理,由于條碼圖案損壞或者掃描傳輸錯誤,運用 RS糾錯碼進行糾錯譯碼,最后將數據區得到的數據通過編碼的反向過程,得到被處理過的數據,通過格式和版本信息的解析,最終還原原始數據[6]。
QR碼在信息傳遞方面的巨大優勢使其在移動智能端迅猛發展,但是其開源的性質使得編解碼完全開放,導致了QR碼的安全隱患。據統計,雖然47%的用戶對二維碼漏洞有清醒的認識,但2016年因為二維碼問題出現的手機病毒危害仍達到了 13.2%[7]。

圖3 QR 碼染“毒”過程Fig.3 Poisoning process of QR code
(1)編碼方法簡單使得二維碼制作簡單。在對數據進行編碼的過程中,將待編碼數據進行數據分析,轉化為二進制數據流,加上終止符以表結束,最后將二進制數據流序列按照每八位一個碼字進行編碼,位數不足填零充滿。不法分子將 QR碼信息破解后隱藏手機病毒、收費軟件、釣魚網站等非法鏈接,偽裝成公用二維碼傳播。
(2)用戶使用手機移動端讀取二維碼信息缺少防范能力。普通解碼軟件無安全監測能力,對解碼之后的數據中嵌入的非法信息無法識別,用戶掃碼后易中手機病毒或木馬,由于現在移動端硬件配置和幾年前的個人電腦相差無幾,電腦端的安全問題在移動端基本都可以重現。有的二維碼相關APP甚至自帶病毒,在后臺進行木馬植入或信息劫持,嚴重危害信息安全。
日益增長的信息安全問題將會對二維碼進一步發展帶來影響,針對二維碼各種應用方式、當前被攻擊的漏洞,對通用QR碼的算法設計也應有所區別。
鑒于通用 QR碼在編解碼算法方面的弱點,可以在編碼過程中加入額外的加密環節,以實現信息安全。移動手機端性能大幅提高,為 QR碼信息一次加密,甚至多次加密提供可能,同時,根據應用的實際需求和信息安全的要求,可以選擇硬件芯片加密,也可以選擇軟件加密;可以選擇傳統數據加密算法,也可以選擇對QR碼圖像進行加密。
加密算法可以根據二維碼具體應用的方法來選擇,針對信息泄露的的角度,在短時間信息交互時提高信息的保密性,例如票據信息的二維碼,可以采用序列密碼算法RC4等,提高偽隨機生成序列的隨機性和便利性,即使攻擊者利用 QR碼的譯碼原理和RC4算法的解密原理進行破解,但由于無法確定加密者最終選定的參數值, 因此也無法破解出明文信息[8]。
當二維碼信息傳遞處于網絡服務器端和移動客戶端時,可以采用公鑰密碼體制。以市面廣為流行的公共產品為例:初始信息為M,網絡服務器端產生私鑰SK,移動客戶端擁有公鑰PK,加密產生的信息 C = ESK(M ),將C進行QR碼編碼給予公共產品或服務,用戶使用公鑰對掃描得到的CX進行解碼,若解碼的結果正確則進行服務,確保了通訊過程中的信息安全[9]。
對于整個 QR碼信息安全角度來說,信息編解碼的實現方式、運算速度、安全性等方面決定了加密算法的選擇。由于 QR碼應用的場合大多是移動智能端、物聯網平臺等,系統硬件速度快,軟件實現簡單,數據傳輸方式大部分是電信服務商提供的4G網絡,傳輸的是KB級別的數據,當進行客戶端登錄或者信息驗證時,對數據的安全性要求較高,綜合上述原因,比較適合 QR碼的算法在對稱加密算法中有AES,在非對稱算法中有ECC等,在特殊場合,增加數據的時效性也是一個較好的辦法[10-13]。

圖4 引入加密編碼過程Fig.4 Adding encryption encoding process
用戶時常會要單方面處理 QR碼,并沒有產品服務器端提供信息安全的保證。在這種情況下,為保證原始信息在傳輸過程中不被篡改,可以采用在數據編碼(data encoding)時后端加入hash值模塊的方法,通過解碼后的消息認證碼是否匹配來確保信息安全[14]。

表1 常見適用QR碼加密算法比較Tab.1 Comparison of common application of QR code encryption algorithm

圖5 Hash 值解碼過程Fig.5 Hash decoding process
若用戶通過瀏覽器自帶軟件識別二維碼,可以通過瀏覽器廠商在用戶端建立黑白名單或者加載的特征庫,對 QR碼解碼得到的數據信息或者鏈接進行靜態和動態特征檢測,在用戶掃描惡意二維碼后執行惡意程序之前,給出相應的提示信息,防止用戶信息泄露或者經濟損失的可能。
安全解碼在技術面可以將使用的 QR碼作為明文,應用圖像加密算法等算法,通過建立其與偽明文圖像的映射矩陣并將偽明文圖像嵌入載體圖像進行傳輸,實現了密鑰和算法的密切結合,起到了單方面截獲算法或密鑰完全破解不出加密信息的作用,表明算法對不法分子具有較大的迷惑性的同時極大地增強了系統的安全性[15]。
二維碼市場快速發展的同時是標準的混亂和監管的缺失,對應解碼策略中在用戶端建立特征庫,引入互聯網端的第三方監管能夠更好的攔截 QR碼攜帶的非法數據信息,增強其來源的可靠性。
第三方云平臺通過大數據分析產生的 QR碼解析數據進行靜態特征和動態特征分析,建立黑白名單數據庫,為用戶建立防火墻。在用戶和應用提出申請后,提供解析結果和官方信息,屏蔽非法數據。
在技術層面通過算法更新和第三方認證等加強信息安全的同時,個人用戶方面也應當注意,提高二維碼使用的防范意識,加強自身信息的保護意識,不盲目掃描不明來源的二維碼,在進行電子支付的時候尤其要提高警惕,以免遭受經濟損失。

圖6 第三方二維碼交互Fig.6 Third party two-dimensional code interaction
近年來,隨著網絡購物和電子商務的發展,二維碼在電子支付、身份認證、信息交互等領域被廣泛使用,給用戶帶來便利的同時也存在著嚴重的安全隱患。當前社會上二維碼安全問題出現大多數都是由于誤掃,隨著用戶的警惕將大幅減少,但將QR碼破解后混入非法數據的方式將成為主流。因此,分析二維碼加密問題具有重要意義。本文介紹了QR碼的通用結構和編解碼的原理,分析了其存在的安全問題,并從編碼的算法、解碼的安全性及第三方認證角度提出了解決安全隱患的方法。
[1] BAIDU.COM.QR code[EB/OL] [2017-09-03]. http://baike.baidu.com/view/132241.htm.
[2] GB/T18284-2000, 快速響應矩陣碼[S]. 北京:中國標準出版社, 2000.
[3] ISO/IEC. ISO/IEC 18004-2015, Information Technology-Automatic Identification and Data Capture Techniques-QR Code 2005 Bar Code Symbology Specification[S]. Switzerland: ISO, 2015.
[4] Pavlidis T, Swartz J, Wang Y P. Information encoding with two-dimensional bar codes[J]. IEEE Computer, 1992, 27(6):18-27.
[5] ZhangMin, ZhenJianli. Recognition Algorithm of QR Code Based on Symbol Characteristic[J]. Computer Engineering,2011, 37(4). (in Chinese)張民, 鄭建立. 基于符號特征的QR碼識別算法[J]. 計算機工程, 2011, 37(4).
[6] Liu Hongwei, Yan Yan. Recognition and decoding of QR code[J].Computer Engineering and Design, 2005, 26(6). (in Chinese)劉宏偉, 嚴妍. 快速響應碼的識別和解碼[J]. 計算機工程與設計, 2005, 26(6).
[7] 騰訊移動安全實驗室. 2016年手機安全報告[R]. 2017.
[8] Zhou Wenqian,Ma Yan, etal. Improved RC4 Algorithm Applied in QR Code Information Encryption[J]. Computer Engineering, 2015, 41(8). (in Chinese)周文倩, 馬燕等. 應用于QR碼信息加密的RC4改進算法[J].計算機工程, 2015, 41(8).
[9] An Jiwan, Xu Kaihong. Design of Encryption Coding of Two-dimensional Code Based on RSA and Key[J]. Forest Engineering, 2014, 30(2): 125-129. (in Chinese)安吉旺, 徐凱宏. 基于RSA和密鑰的二維碼加密編碼的研究[J]. 森林工程, 2014, 30(2): 125-129.
[10] QU Wei-feng, XU Yue, NIU Lei-lei. A Study of an Efficient Method for the Processing of Uneven Illumination QR Code Images[J]. Computer Engineering & Software, 2015, 36(6):47-52. (in Chinese)屈衛鋒, 徐越, 牛磊磊, 等. 光照不均QR二維碼圖像的高效處理方法研究[J]. 軟件, 2015, 36(6): 47-52
[11] HAN Liang-liang, YE Ping, SUN Han-xu. A Jacobian Matrix Inversion Method for Redundant Robotic Manipulator Base on QR Decomposition[J]. Computer Engineering & Software,2013, 34(11): 64-66(in Chinese)韓亮亮, 葉平, 孫漢旭. 基于QR分解的冗余度機械臂雅可比矩陣求逆方法[J]. 軟件, 2013, 34(11): 64-66
[12] Hu Qi. Application and Research of QR Code in Equipment Management Information System[J]. Computer Engineering& Software, 2014, 35(8): 125-128(in Chinese)胡奇. QR碼在裝備管理信息系統中的應用研究[J]. 軟件,2014, 35(8): 125-128
[13] ZHANG Bo, LIU Jia, WEI Sui. Joint Source and Channel Coding based on Distributed Compressed Sensing[J]. The Journal of New Industrialization, 2011, 1(5): 10-15. (in Chinese)張波, 劉佳, 韋穗. 一種基于分布式壓縮傳感的信源信道聯合編碼方法[J]. 新型工業化, 2011, 1(5): 10-15.
[14] Lin Jiahua, Yang Yong, Ren Wei. Attacks in QR Code and Defending Countermeasures[J]. Netinfo Security, 2013(05).(in Chinese)林嘉華, 楊永, 任偉. QR二維碼的攻擊方法與防御措施[J].信息網絡安全, 2013(05)Sun Yeqiang, Wang Xiaohong. Information Encryption Technology with Strong Robustness Based on QR Code and Matrix Mapping[J]. Packaging Engineering, 2017, 38(5). (in Chinese)
[15] 孫業強, 王曉紅. 基于QR碼和矩陣映射的強魯棒性信息加密技術[J]. 包裝工程, 2017, 38(5).