紙質(zhì)二維碼也能隔空篡改:百米之外無(wú)痕攻擊,秒變惡意網(wǎng)站入口
現(xiàn)在,打印好的紙質(zhì)二維碼,可能也不安全了!
通過(guò)激光照射,攻擊者在一百米開外就能分分鐘實(shí)施篡改。
更可怕的是,這種激光用肉眼根本無(wú)法察覺(jué),正常的二維碼在無(wú)意之間就有可能變成惡意網(wǎng)站的入口。
最近,日本東海大學(xué)的研究人員開發(fā)出一種遠(yuǎn)距離、超隱蔽的二維碼篡改方式。
不僅攻擊過(guò)程不可見,被攻擊后的二維碼用肉眼看也和正常情況沒(méi)有任何區(qū)別。
對(duì)普通用戶和設(shè)備來(lái)說(shuō),這種攻擊幾乎無(wú)法防范。
那么,研究人員是如何在無(wú)形之中“偷天換日”的呢?
激光照射改變信息點(diǎn)“顏色”
要想解釋這個(gè)問(wèn)題,我們需要先了解一下二維碼識(shí)讀的原理。
(本文中的“二維碼”均是指我們最常見的QR型二維碼)
我們常見的二維碼,主要由定位點(diǎn)、格式及掩碼信息區(qū)、信息區(qū)和糾錯(cuò)區(qū)組成。
以下圖中的2(尺寸)M(糾錯(cuò)等級(jí))型二維碼為例,它由25×25個(gè)格點(diǎn)組成,其中左上、左下、右下的7×7區(qū)域?yàn)槎ㄎ稽c(diǎn)。
下圖中D1~D28和E1~E16分別為數(shù)據(jù)字段和糾錯(cuò)字段,藍(lán)色區(qū)域則為格式及掩碼信息區(qū)。
其中數(shù)據(jù)字段是由原始文本先經(jīng)過(guò)分組,然后用一定的處理方式轉(zhuǎn)換為二進(jìn)制字符串,在二維碼中用黑色和白色分別表示1和0。
糾錯(cuò)字段,顧名思義就是為了避免在生成和掃描過(guò)程中產(chǎn)生誤差而設(shè)計(jì)的,它由數(shù)據(jù)字段根據(jù)里德-所羅門算法生成,根據(jù)糾錯(cuò)等級(jí)的不同長(zhǎng)度也有所區(qū)別。
格式及掩碼信息區(qū)則儲(chǔ)存了二維碼的編碼(明文到二進(jìn)制串)方式,以及掩碼操作。
掩碼是為了避免出現(xiàn)某些特定圖案影響掃描結(jié)果,按照一定規(guī)律對(duì)原始點(diǎn)陣進(jìn)行的變換操作,操作方式存儲(chǔ)在了掩碼信息區(qū)域。
讀取過(guò)程則是先捕捉定位點(diǎn),然后對(duì)圖像進(jìn)行校正和降噪處理,接著判斷格式及掩碼區(qū)的位置并讀取,以獲知數(shù)據(jù)字段的解碼方式。
本實(shí)驗(yàn)中,研究者通過(guò)逐步覆蓋二維碼信息的方法,構(gòu)造出一個(gè)介于兩個(gè)二維碼之間的混合中間體。
這個(gè)中間體包含了一個(gè)關(guān)鍵色塊,它的顏色決定了真正被讀取出的二維碼究竟是哪一個(gè)。
研究人員利用肉眼不可見的激光對(duì)這個(gè)色塊進(jìn)行照射,就能決定攝像頭的識(shí)別結(jié)果——
經(jīng)過(guò)照射之后,雖然肉眼看不出區(qū)別,但在攝像頭的視角下原本是黑色的模塊就會(huì)被識(shí)別為白色。
下圖對(duì)比了人眼和攝像頭可以識(shí)別的波長(zhǎng)范圍:在暗處,波長(zhǎng)超過(guò)600納米的光幾乎無(wú)法被人眼識(shí)別,即使在亮處,也無(wú)法看到超過(guò)700納米的光。
而攝像頭在700納米的波長(zhǎng)下依然有50%以上的捕捉率。
本實(shí)驗(yàn)中,研究人員使用了10毫瓦的635納米(紅色可見光)和785納米(紅外線)的光分別在不同距離對(duì)二維碼進(jìn)行了照射。
其中0~50米為真實(shí)距離,100米距離則通過(guò)鏡面反射實(shí)現(xiàn)。
結(jié)果顯示,在10~40米處,兩種波長(zhǎng)的光都能成功將二維碼指向的鏈接改成虛假網(wǎng)址;
在50米處,可見光處理的二維碼出現(xiàn)了兩個(gè)網(wǎng)址都能掃出的現(xiàn)象,但紅外光依然能成功篡改;
而在100米的位置,兩種波長(zhǎng)的光線照射后的二維碼都出現(xiàn)了交替結(jié)果。
未來(lái),研究者還計(jì)劃把攻擊距離增加到1公里。
不過(guò),這個(gè)實(shí)驗(yàn)中需要使用透鏡對(duì)激光進(jìn)行聚焦,進(jìn)而確定篡改信息點(diǎn)的位置。
如果光路中的氣流擾動(dòng)比較明顯,則會(huì)對(duì)這一過(guò)程產(chǎn)生影響,因此長(zhǎng)距離攻擊存在更多不確定因素。
也正是這一特點(diǎn),為防御這種攻擊提供了可能——只要時(shí)不時(shí)擾動(dòng)二維碼面前的氣流,激光就找不到位置了。
對(duì)此,有網(wǎng)友調(diào)侃到,不如在二維碼前面扇扇子,把激光“趕走”。
除了氣流擾動(dòng)的方式,作者在論文中還提到,二維碼擁有者可以使用防篡改材料來(lái)避免攻擊。
One More Thing
除了篡改二維碼,還有用激光照射交通標(biāo)志從而干擾自動(dòng)駕駛系統(tǒng)的案例。
這種激光同樣是肉眼不可見,但可以被攝像頭識(shí)別,從而造成誤導(dǎo)。
相關(guān)研究表明,在室內(nèi)環(huán)境下,這種攻擊對(duì)停車標(biāo)志和限速標(biāo)志的攻擊成功率幾乎是百分之百。
論文地址(日語(yǔ)):http://id.nii.ac.jp/1001/00228597/