二維碼的應用發展得比較早。早在20世紀80年代開始,日本和韓國就有快餐店和便利店在宣傳單和優惠券上使用二維碼,后來又逐步發展到將二維碼作為電影和表演的入場券,觀眾只需在特定設備上掃碼即可進入。目前通過掃描加密二維碼進行登記、付費等的相關應用已經非常普遍了。
2008年北京奧運會以后,二維碼在我國開始普及,電影票、登機牌、火車票等都開始出現二維碼。特別是隨著支付寶和微信支付的普及,掃碼付款已經成為日常生活的一部分。
二維碼的安全保護一直是一個研究熱點。由于二維碼的數據內容與制作來源難以監管,編碼、譯碼過程完全開放,識讀軟件質量參差不齊,因此在缺乏統一管理規范的前提下,易造成二維碼信息泄露和信息涂改等安全威脅。
針對二維碼的攻擊方式呈現出了多樣性的特點,主要包括以下4類。
(1)誘導登錄惡意網站:攻擊者只需將偽造、詐騙或釣魚等惡意網站的網址鏈接制作成二維碼圖形,即可在誘導用戶掃碼登錄其網站后,獲取用戶輸入的個人敏感信息、金融賬號等。
(2)木馬植入:攻擊者將自動下載惡意軟件的命令編入二維碼,當用戶在缺少防護措施的情況下掃描該類二維碼時,用戶系統就會被悄悄植入木馬、蠕蟲或隱匿軟件,攻擊者在后臺就可以肆意破壞用戶文件、偷竊用戶信息,甚至遠程控制用戶、群發收費短信等。
(3)信息劫持:很多商家都提供掃碼支付等在線支付手段,因此網絡支付平臺會根據用戶訂單生成二維碼,以方便用戶掃描支付。若攻擊者劫持了商家與用戶之間的通信信息,并惡意修改訂單,那么將對用戶和商家造成直接的經濟損失。
(4)網頁(Web)攻擊:隨著手機瀏覽器功能的日趨成熟,用戶能夠通過手機輸入網站域名或提交Web表單。攻擊者利用Web頁面的漏洞,將非法SQL語句編入二維碼,當用戶使用手機掃描二維碼登錄Web頁面時,惡意SQL語句就會自動執行(SQL注入)。若數據庫防范機制脆弱,則會造成數據庫被侵入,進而導致更嚴重的危害。
除了基于密碼的安全二維碼方法外,還有基于信息隱藏的二維碼保護算法。該算法通過在二維碼中嵌入一些秘密信息,改變二維碼的形態,從而使攻擊者無法獲知其內容。嵌入的信息可以被正常提取以無損地恢復二維碼。
基于信息隱藏的二維碼保護算法將二維碼圖像分成若干小塊,將每個小塊掃描成一維序列后嵌入1 bit信息。二維碼圖像是一種二值圖像,連續像素具有同種顏色的概率很高。因此,針對每一行,不再直接對每個位置具有的像素進行編碼,而是對顏色變化的位置和從該位置開始的連續同種顏色的個數進行編碼。圖1所示的編碼結果為:
圖1 掃描后像素的編碼過程
算法的具體步驟如下。
第1步:將二維碼邊緣部分進行填充,使得二維碼圖像的像素長寬都為3的倍數,把二維碼分成互不重疊的3×3小塊。
第2步:將每個3×3小塊按照圖2所示從b1到b9的一順序掃描成維序列,并對該序列進行行程編碼,每個小塊編碼為
圖2 像素值掃描順序
第3步:選出第一個行程最長的編碼,將行程為奇數的表示為嵌入1,行程為偶數的表示為嵌入0。如果行程奇偶性與嵌入信息不符,則將行程值加1。
第4步:根據該圖像塊是否被修改過,對1 像素進行奇偶校驗,1 像素為偶數表示該塊未被修改過,1像素為奇數表示該塊被修改過,如須修改,則改變b9像素的值。
第5步:重復上述過程,直到所有分塊均被修改。
上述過程中,由于行程值為9的行程編碼修改后將越界,故其不作為嵌入塊。同時,最長行程包含b9像素值的編碼,由于其長度可能會發生變化,故其也不作為嵌入塊。
責編AJX
責編AJX
-
物聯網
+關注
關注
2873文章
41853瀏覽量
359387 -
二維碼
+關注
關注
7文章
375瀏覽量
26110 -
隱私保護
+關注
關注
0文章
296瀏覽量
16339
發布評論請先 登錄
相關推薦
評論