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