梁大偉
(江蘇警官學(xué)院 計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系,江蘇 南京 210031)
近年來,移動(dòng)智能終端在中國呈現(xiàn)爆發(fā)式的增長,搭載二維碼技術(shù)的相關(guān)應(yīng)用層出不窮,涉及到人們生活的方方面面。但在人們享受二維碼帶來便利的同時(shí),其本身所存在的信息安全問題也不容忽視,因二維碼使用不當(dāng)造成經(jīng)濟(jì)損失或者個(gè)人信息泄露的事件時(shí)有發(fā)生。
結(jié)合市面現(xiàn)有二維碼的使用方式,對(duì)二維碼生成、傳播、使用等環(huán)節(jié)進(jìn)行分析研究,以提高用戶端二維碼信息的安全性,給出各方面安全隱患的應(yīng)對(duì)策略。
在20世紀(jì)70年代,日本Denso Wave公司為了追蹤汽車零部件而設(shè)計(jì)了二維碼(two-dimensional bar code),它是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息[1]。根據(jù)編碼方式的不同,可分為堆疊式和矩陣式等。其中由于 QR二維碼具有(Quick-Response code)高密度、大容量、容錯(cuò)強(qiáng)、譯碼可靠等特點(diǎn),在移動(dòng)支付、信息交互、物流管理等方面被廣泛應(yīng)用。
QR碼是由若干個(gè)黑白方形模塊排列組成的正方形矩陣,分為編碼區(qū)域和功能圖形區(qū)域,黑色代表1,白色代表0,符號(hào)規(guī)格根據(jù)編碼數(shù)據(jù)量自適應(yīng)調(diào)整,支持?jǐn)?shù)字、字母、日文字(Shift JIS)、漢字(UTF-8、BIG5)等數(shù)據(jù)編碼方式[2]。
QR碼的通用結(jié)構(gòu)標(biāo)準(zhǔn)是由功能圖形(function patterns)和編碼區(qū)(encoding region)組成,其中功能圖形有空白區(qū)(quite zone)保證QR碼清晰可識(shí)別、定位標(biāo)識(shí)(finder pattern)協(xié)助掃描軟件定位并變換坐標(biāo)系、分隔符(separator)用于區(qū)分編碼區(qū)域和定位標(biāo)識(shí)、定時(shí)標(biāo)識(shí)(timing pattern)指示標(biāo)識(shí)密度和確定坐標(biāo)系、校正標(biāo)識(shí)(alignment pattern)進(jìn)一步校正坐標(biāo)系;編碼區(qū)有編碼區(qū)域(encoding region)標(biāo)識(shí)編碼數(shù)據(jù)、格式信息(format information)來存放容錯(cuò)級(jí)別等數(shù)據(jù)、版本信息(version information)、數(shù)據(jù)及容錯(cuò)字碼(data and error correction codewords)。
圖1 QR 碼的符號(hào)結(jié)構(gòu)[3]Fig.1 QR Code Symbolic structure[3]
ISO/IEC 18004中規(guī)定了QR碼使用四種標(biāo)準(zhǔn)編碼方式將數(shù)據(jù)信息轉(zhuǎn)換為二維碼圖形的通用編碼流程,通過硬件設(shè)備將圖形定位掃描后對(duì)圖形進(jìn)行逆轉(zhuǎn)還原成數(shù)據(jù)信息則為解碼。
圖2 數(shù)據(jù)“JSPI”編碼過程Fig.2 Coding process of data “JSPI”
首先對(duì)要編碼的數(shù)據(jù)進(jìn)行分析(data analysis),確定使用的 QR碼的版本信息、編碼方式等,對(duì)數(shù)據(jù)進(jìn)行編碼(data encoding),插入模式標(biāo)識(shí)碼和終止標(biāo)識(shí)符,加入填充字節(jié)來滿足標(biāo)準(zhǔn)的數(shù)據(jù)字碼數(shù)要求,計(jì)算容錯(cuò)碼(error correction coding),附在編碼數(shù)據(jù)后,組織數(shù)據(jù)(structure final message),將準(zhǔn)備好的數(shù)據(jù)切分后填充(module placement in matrix)到矩陣中,對(duì)數(shù)據(jù)進(jìn)行掩碼(data masking),使得二維碼圖形中的深色和淺色(黑色和白色)區(qū)域能夠比率最優(yōu)的分布,最后填入格式和版本信息(format and version information),完成整個(gè)編碼過程[4]。
QR碼包含多種獨(dú)特的符合特征,這些特征保證了通過硬件識(shí)別時(shí)快速的獨(dú)立定位性[5]。搜索 3個(gè)功能圖形和空白區(qū)后,QR碼得到定位,進(jìn)行圖像的預(yù)處理,由于條碼圖案損壞或者掃描傳輸錯(cuò)誤,運(yùn)用 RS糾錯(cuò)碼進(jìn)行糾錯(cuò)譯碼,最后將數(shù)據(jù)區(qū)得到的數(shù)據(jù)通過編碼的反向過程,得到被處理過的數(shù)據(jù),通過格式和版本信息的解析,最終還原原始數(shù)據(jù)[6]。
QR碼在信息傳遞方面的巨大優(yōu)勢使其在移動(dòng)智能端迅猛發(fā)展,但是其開源的性質(zhì)使得編解碼完全開放,導(dǎo)致了QR碼的安全隱患。據(jù)統(tǒng)計(jì),雖然47%的用戶對(duì)二維碼漏洞有清醒的認(rèn)識(shí),但2016年因?yàn)槎S碼問題出現(xiàn)的手機(jī)病毒危害仍達(dá)到了 13.2%[7]。
圖3 QR 碼染“毒”過程Fig.3 Poisoning process of QR code
(1)編碼方法簡單使得二維碼制作簡單。在對(duì)數(shù)據(jù)進(jìn)行編碼的過程中,將待編碼數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)流,加上終止符以表結(jié)束,最后將二進(jìn)制數(shù)據(jù)流序列按照每八位一個(gè)碼字進(jìn)行編碼,位數(shù)不足填零充滿。不法分子將 QR碼信息破解后隱藏手機(jī)病毒、收費(fèi)軟件、釣魚網(wǎng)站等非法鏈接,偽裝成公用二維碼傳播。
(2)用戶使用手機(jī)移動(dòng)端讀取二維碼信息缺少防范能力。普通解碼軟件無安全監(jiān)測能力,對(duì)解碼之后的數(shù)據(jù)中嵌入的非法信息無法識(shí)別,用戶掃碼后易中手機(jī)病毒或木馬,由于現(xiàn)在移動(dòng)端硬件配置和幾年前的個(gè)人電腦相差無幾,電腦端的安全問題在移動(dòng)端基本都可以重現(xiàn)。有的二維碼相關(guān)APP甚至自帶病毒,在后臺(tái)進(jìn)行木馬植入或信息劫持,嚴(yán)重危害信息安全。
日益增長的信息安全問題將會(huì)對(duì)二維碼進(jìn)一步發(fā)展帶來影響,針對(duì)二維碼各種應(yīng)用方式、當(dāng)前被攻擊的漏洞,對(duì)通用QR碼的算法設(shè)計(jì)也應(yīng)有所區(qū)別。
鑒于通用 QR碼在編解碼算法方面的弱點(diǎn),可以在編碼過程中加入額外的加密環(huán)節(jié),以實(shí)現(xiàn)信息安全。移動(dòng)手機(jī)端性能大幅提高,為 QR碼信息一次加密,甚至多次加密提供可能,同時(shí),根據(jù)應(yīng)用的實(shí)際需求和信息安全的要求,可以選擇硬件芯片加密,也可以選擇軟件加密;可以選擇傳統(tǒng)數(shù)據(jù)加密算法,也可以選擇對(duì)QR碼圖像進(jìn)行加密。
加密算法可以根據(jù)二維碼具體應(yīng)用的方法來選擇,針對(duì)信息泄露的的角度,在短時(shí)間信息交互時(shí)提高信息的保密性,例如票據(jù)信息的二維碼,可以采用序列密碼算法RC4等,提高偽隨機(jī)生成序列的隨機(jī)性和便利性,即使攻擊者利用 QR碼的譯碼原理和RC4算法的解密原理進(jìn)行破解,但由于無法確定加密者最終選定的參數(shù)值, 因此也無法破解出明文信息[8]。
當(dāng)二維碼信息傳遞處于網(wǎng)絡(luò)服務(wù)器端和移動(dòng)客戶端時(shí),可以采用公鑰密碼體制。以市面廣為流行的公共產(chǎn)品為例:初始信息為M,網(wǎng)絡(luò)服務(wù)器端產(chǎn)生私鑰SK,移動(dòng)客戶端擁有公鑰PK,加密產(chǎn)生的信息 C = ESK(M ),將C進(jìn)行QR碼編碼給予公共產(chǎn)品或服務(wù),用戶使用公鑰對(duì)掃描得到的CX進(jìn)行解碼,若解碼的結(jié)果正確則進(jìn)行服務(wù),確保了通訊過程中的信息安全[9]。
對(duì)于整個(gè) QR碼信息安全角度來說,信息編解碼的實(shí)現(xiàn)方式、運(yùn)算速度、安全性等方面決定了加密算法的選擇。由于 QR碼應(yīng)用的場合大多是移動(dòng)智能端、物聯(lián)網(wǎng)平臺(tái)等,系統(tǒng)硬件速度快,軟件實(shí)現(xiàn)簡單,數(shù)據(jù)傳輸方式大部分是電信服務(wù)商提供的4G網(wǎng)絡(luò),傳輸?shù)氖荎B級(jí)別的數(shù)據(jù),當(dāng)進(jìn)行客戶端登錄或者信息驗(yàn)證時(shí),對(duì)數(shù)據(jù)的安全性要求較高,綜合上述原因,比較適合 QR碼的算法在對(duì)稱加密算法中有AES,在非對(duì)稱算法中有ECC等,在特殊場合,增加數(shù)據(jù)的時(shí)效性也是一個(gè)較好的辦法[10-13]。
圖4 引入加密編碼過程Fig.4 Adding encryption encoding process
用戶時(shí)常會(huì)要單方面處理 QR碼,并沒有產(chǎn)品服務(wù)器端提供信息安全的保證。在這種情況下,為保證原始信息在傳輸過程中不被篡改,可以采用在數(shù)據(jù)編碼(data encoding)時(shí)后端加入hash值模塊的方法,通過解碼后的消息認(rèn)證碼是否匹配來確保信息安全[14]。
表1 常見適用QR碼加密算法比較Tab.1 Comparison of common application of QR code encryption algorithm
圖5 Hash 值解碼過程Fig.5 Hash decoding process
若用戶通過瀏覽器自帶軟件識(shí)別二維碼,可以通過瀏覽器廠商在用戶端建立黑白名單或者加載的特征庫,對(duì) QR碼解碼得到的數(shù)據(jù)信息或者鏈接進(jìn)行靜態(tài)和動(dòng)態(tài)特征檢測,在用戶掃描惡意二維碼后執(zhí)行惡意程序之前,給出相應(yīng)的提示信息,防止用戶信息泄露或者經(jīng)濟(jì)損失的可能。
安全解碼在技術(shù)面可以將使用的 QR碼作為明文,應(yīng)用圖像加密算法等算法,通過建立其與偽明文圖像的映射矩陣并將偽明文圖像嵌入載體圖像進(jìn)行傳輸,實(shí)現(xiàn)了密鑰和算法的密切結(jié)合,起到了單方面截獲算法或密鑰完全破解不出加密信息的作用,表明算法對(duì)不法分子具有較大的迷惑性的同時(shí)極大地增強(qiáng)了系統(tǒng)的安全性[15]。
二維碼市場快速發(fā)展的同時(shí)是標(biāo)準(zhǔn)的混亂和監(jiān)管的缺失,對(duì)應(yīng)解碼策略中在用戶端建立特征庫,引入互聯(lián)網(wǎng)端的第三方監(jiān)管能夠更好的攔截 QR碼攜帶的非法數(shù)據(jù)信息,增強(qiáng)其來源的可靠性。
第三方云平臺(tái)通過大數(shù)據(jù)分析產(chǎn)生的 QR碼解析數(shù)據(jù)進(jìn)行靜態(tài)特征和動(dòng)態(tài)特征分析,建立黑白名單數(shù)據(jù)庫,為用戶建立防火墻。在用戶和應(yīng)用提出申請后,提供解析結(jié)果和官方信息,屏蔽非法數(shù)據(jù)。
在技術(shù)層面通過算法更新和第三方認(rèn)證等加強(qiáng)信息安全的同時(shí),個(gè)人用戶方面也應(yīng)當(dāng)注意,提高二維碼使用的防范意識(shí),加強(qiáng)自身信息的保護(hù)意識(shí),不盲目掃描不明來源的二維碼,在進(jìn)行電子支付的時(shí)候尤其要提高警惕,以免遭受經(jīng)濟(jì)損失。
圖6 第三方二維碼交互Fig.6 Third party two-dimensional code interaction
近年來,隨著網(wǎng)絡(luò)購物和電子商務(wù)的發(fā)展,二維碼在電子支付、身份認(rèn)證、信息交互等領(lǐng)域被廣泛使用,給用戶帶來便利的同時(shí)也存在著嚴(yán)重的安全隱患。當(dāng)前社會(huì)上二維碼安全問題出現(xiàn)大多數(shù)都是由于誤掃,隨著用戶的警惕將大幅減少,但將QR碼破解后混入非法數(shù)據(jù)的方式將成為主流。因此,分析二維碼加密問題具有重要意義。本文介紹了QR碼的通用結(jié)構(gòu)和編解碼的原理,分析了其存在的安全問題,并從編碼的算法、解碼的安全性及第三方認(rèn)證角度提出了解決安全隱患的方法。
[1] BAIDU.COM.QR code[EB/OL] [2017-09-03]. http://baike.baidu.com/view/132241.htm.
[2] GB/T18284-2000, 快速響應(yīng)矩陣碼[S]. 北京:中國標(biāo)準(zhǔn)出版社, 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)張民, 鄭建立. 基于符號(hào)特征的QR碼識(shí)別算法[J]. 計(jì)算機(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)劉宏偉, 嚴(yán)妍. 快速響應(yīng)碼的識(shí)別和解碼[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2005, 26(6).
[7] 騰訊移動(dòng)安全實(shí)驗(yàn)室. 2016年手機(jī)安全報(bào)告[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)周文倩, 馬燕等. 應(yīng)用于QR碼信息加密的RC4改進(jìn)算法[J].計(jì)算機(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)屈衛(wèi)鋒, 徐越, 牛磊磊, 等. 光照不均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ī)械臂雅可比矩陣求逆方法[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碼在裝備管理信息系統(tǒng)中的應(yīng)用研究[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)張波, 劉佳, 韋穗. 一種基于分布式壓縮傳感的信源信道聯(lián)合編碼方法[J]. 新型工業(yè)化, 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].信息網(wǎng)絡(luò)安全, 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] 孫業(yè)強(qiáng), 王曉紅. 基于QR碼和矩陣映射的強(qiáng)魯棒性信息加密技術(shù)[J]. 包裝工程, 2017, 38(5).