鈕佳超,李林森
(上海交通大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,上海200240)
近年來,彩碼標(biāo)簽作為一種新型的物聯(lián)網(wǎng)感知技術(shù)正在快速發(fā)展[1]。彩碼標(biāo)簽由幾種可見光形成的矩形彩色色塊組成,具有識別效率高、定位精確的獨特優(yōu)勢[2],現(xiàn)被廣泛應(yīng)用于電子票證、商品防偽、身份識別等領(lǐng)域。其安全性能問題逐漸凸顯出來,主要包括篡改攻擊、空中接口攻擊、結(jié)構(gòu)攻擊和移動終端攻擊等攻擊威脅[3],其中的篡改攻擊對物聯(lián)網(wǎng)系統(tǒng)造成極大的威脅。對此,本文提出了一種基于校驗信息隱藏的彩碼抗篡改攻擊方法,該方法通過對彩碼色塊的寬度進(jìn)行適量的變動來嵌入校驗信息,從而識別彩碼是否被篡改。最終,進(jìn)行信息隱藏后的彩碼標(biāo)簽具備了安全性高、容易提取、結(jié)構(gòu)簡單等優(yōu)點。文中針對提出的隱藏技術(shù)進(jìn)行了仿真,其結(jié)果表明本方法具有可行性,能夠識別彩碼標(biāo)簽的篡改攻擊。
彩碼標(biāo)簽是一種無芯片極簡三維結(jié)構(gòu),由彩色色塊排列構(gòu)成,具有橫向、縱向及色彩3個維度[4]。圖1為彩碼的結(jié)構(gòu),主要包括三部分:(a)定位色塊(b)標(biāo)志色塊(c)數(shù)據(jù)色塊。定位色塊為位于(1,1)的紅色色塊、(1,6)的黃色色塊、(3,1)的藍(lán)色色塊;起始標(biāo)志為位于(1,2)的黃色色塊、(1,3)的黃色色塊、(1,4)的紅色色塊;結(jié)束標(biāo)志為位于(3,4)的藍(lán)色色塊、(3,5)的藍(lán)色色塊、(3,6)的黃色色塊;數(shù)據(jù)色塊為位于(1,5)的藍(lán)色色塊、(2,1)的黃色色塊、(2,2)的黃色色塊、(2,3)的藍(lán)色色塊、(2,4)的紅色色塊、(2,5)的藍(lán)色色塊、(2,6)的黃色色塊、(3,2)的紅色色塊、(3,3)的黃色色塊。每一個色塊為長寬比為1:1的正方形。
由于彩碼標(biāo)簽的識別是基于平面,因此色塊在允許范圍內(nèi)的誤差仍然可以正確識別。色塊允許誤差主要包括兩部分[5,6]:色塊垂直錯位允許值(?w),以黃色色塊為例,如圖2所示。色塊水平錯位允許值(?L),如圖3所示。
圖1 彩碼結(jié)構(gòu)
圖2 垂直錯位允許值
圖3 水平錯位允許值
由上面分析可知,允許誤差范圍內(nèi)的彩碼標(biāo)簽仍然被可以正確識讀。本研究利用色塊寬度允許誤差進(jìn)行隱藏信息嵌入,并且能夠正確地讀取打印后的彩碼原始信息以及隱藏信息。
本研究中采用高效并且輕量級的校驗算法進(jìn)行校驗,驗證算法如下[7]。
顏色權(quán)值設(shè)定如下:
gR=0
gY=1
gB=2
對應(yīng)checksum值計算方式如下:
其中N代表每一行中對應(yīng)色塊的個數(shù),g為設(shè)定的權(quán)值,checksum為每行色塊需要嵌入的隱藏信息。
依次計算每行的checksum值,確定每一行的嵌入信息。本研究以圖1所示的彩碼為例進(jìn)行隱藏信息研究。第一行中紅色色塊有兩個,黃色色塊有3個,藍(lán)色色塊有一個,則checksum值計算如下:
第二行有兩個紅色色塊、兩個黃色色塊、兩個藍(lán)色色塊,checksum值計算如下:
第三行有一個紅色色塊、兩個黃色色塊,三個藍(lán)色色塊,checksum值計算如下:
每一行的校驗值轉(zhuǎn)化為二進(jìn)制,則第一行嵌入隱藏信息為0101,第二行嵌入隱藏信息為0110,第三行嵌入隱藏信息為1000。
本步驟計算得到的校驗值,將作為下一步嵌入彩碼中的隱藏信息。若提取的隱藏信息與計算的校驗值不一致,則判斷標(biāo)簽已被篡改;反之,則不能確定已被篡改。
在彩碼結(jié)構(gòu)中,隱藏信息的區(qū)域為標(biāo)志色塊和數(shù)據(jù)色塊,不改變定位標(biāo)志的色塊寬度,通過此種做法可實現(xiàn)盲提取隱藏信息。
2.2.1 “1”的嵌入
如果需要嵌入的信息為“1”,則將隱藏信息的色塊寬度增加適量的誤差?w,色塊與色塊之間的黑色填充區(qū)域相應(yīng)的減少?w,因此對于彩碼標(biāo)簽來說,寬度并沒有改變。
2.2.2 “0”的嵌入
如果需要嵌入的信息為“0”,則將隱藏信息的色塊寬度減少適量的誤差?w,色塊與色塊之間的黑色填充區(qū)域相應(yīng)的增加?w,因此對于彩碼標(biāo)簽來說,寬度并沒有改變。研究中以圖1所示彩碼為例,隱藏信息嵌入后的結(jié)果如圖4所示:位置為(1,2)、(1,3)、(1,4),(1,5)的色塊嵌入了第一行色塊校驗信息,位置為(2,1)、(2,2)、(2,3)、(2,4)的色塊嵌入了第二行色塊校驗信息,位置為(3,2)、(3,3)、(3,4),(3,5)的色塊嵌入了第三行色塊校驗信息。
圖4 彩碼嵌入隱藏信息
隱藏信息提取為盲檢測過程,即不需要知道原始彩碼標(biāo)簽的信息。計算變形后定位色塊寬度的平均值w,作為色塊的標(biāo)準(zhǔn)寬度。
其中,定位色塊由左下角、左上角和右下角的三個色塊構(gòu)成,wi表示第i個色塊的寬度,由于在使用過程中可能會有形變,因此取平均值作為標(biāo)準(zhǔn)寬度。
計算色塊標(biāo)準(zhǔn)寬度w與色塊實際寬度w′的差,得到每一個色塊的誤差值?w。
研究中除定位色塊外每個色塊嵌入1位隱藏信息。為排除打印等對色塊寬度的影響,研究中采用誤差占標(biāo)準(zhǔn)寬度的比例作為閾值進(jìn)行判斷,比例計算公式如下:
其中p的范圍在[0.2,0.5]判斷隱藏的信息為“0”,p的范圍在[-0.5,-0.2]判斷隱藏的信息為“1”。
本研究提出的彩碼信息隱藏技術(shù)的仿真是在visual studio[8]平臺結(jié)合opencv圖像識別技術(shù)進(jìn)行[9]。
篡改單個色塊顏色。攻擊者將圖4中的紅色色塊篡改為藍(lán)色色塊。篡改紅色色塊仿真結(jié)果如圖5所示。結(jié)果顯示,第二行中的校驗值由0110改變?yōu)?000,嵌入的隱藏信息未發(fā)生改變,校驗值與隱藏信息不同,彩碼標(biāo)簽被篡改。
圖5 篡改紅色色塊仿真結(jié)果
將嵌入不同信息的兩個色塊交換位置。攻擊者將圖4中第三行中的紅色色塊和黃色色塊交換位置。篡改后仿真結(jié)果如圖6所示。結(jié)果顯示,第三行的checksum值未發(fā)生改變,但嵌入的隱藏信息改變?yōu)?100,校驗值與隱藏信息不同,因此可判斷彩碼標(biāo)簽已被篡改。
圖6 篡改色塊顏色和嵌入信息仿真結(jié)果
將嵌入相同信息的兩個色塊交換位置。攻擊者將圖4中第二行的黃色色塊與藍(lán)色色塊位置交換。篡改后仿真結(jié)果如圖7所示。結(jié)果顯示,由于第二行中色塊的個數(shù)未發(fā)生改變,因此checksum值也未發(fā)生改變,嵌入信息未發(fā)生改變,校驗值與嵌入信息相同,因此無法判斷彩碼標(biāo)簽已被篡改。
圖7 篡改兩個色塊顏色仿真結(jié)果
本研究基于校驗信息隱藏提出了一種彩碼抗篡改攻擊的全新技術(shù),其一方面能夠識別色塊交換的結(jié)構(gòu)攻擊,另一方面能夠識別改變色塊顏色的篡改攻擊,提供了一種解決彩碼標(biāo)簽篡改攻擊的新思路,提升了彩碼標(biāo)簽的安全性。其缺點在于不能識別交換嵌入相同信息色塊位置的攻擊,且不能抵御復(fù)制攻擊,是下一步研究的重點。