在論壇留言、電商買東西、網銀做交易,認證都是必須而且必要的一環。但是除了密碼以外,你應該也看過一個圖片裡面有一堆歪七扭八的英文數字,或是很多圖片要你指出哪幾張裡面有車子跟招牌,這是所謂的圖形認證(或CAPTCHA, Completely Automated Public Turing test to tell Computer and Humans Apart)。
為什麼最近有很多資訊指出圖形認證的機制不安全?
機器學習與語音辨識破解法
圖形認證並不是完全沒破綻,更正確的說,沒有一個機制絕對安全。圖形認證破解法大致可歸類成三種。
第一類是人工破解。很多地方人力是很便宜的,而將CAPTCHA導到那些人手上直接破解是一個便宜又方便的方法。一個正常人在一個小時是可以連續破解上千個CAPTCHA。第二類是錯誤的使用方法。網站設計者的使用方法錯誤,導致CAPTCHA本身可以被繞過,或是把答案寫在網頁中,這也是最常見的一種錯誤。
第三類就是目前最夯的方法:機器學習。這是可以快速導入的方式之一。雖然網路上有很多教學,但是目前能破解的CAPTCHA有限,基本上是屬於有固定格式的Simple CAPTCHA圖形認證。
舉例來說,下圖中的CAPTCHA有背景干擾,有各式的字形跟數字要辨認,明眼人可以立刻看出來這串字是93D1b9(圖一)。
那機器要怎麼辨識?
要機器辨識是很困難的,因為機器無法從背景的噪音中讀出這些字母,但是基本圖形機器可以看出來,由於每個字體的間格是固定的,因此可以用程式切割圖形字體,切成六個不同的圖(圖二)。
將字體切割後,再把每個字體送到辨識軟體中,機器就可以大概判讀給出答案。
因此現在的CAPTCHA系統也開始變化,除了修正背景噪音處理,也將字體扭曲跟間格再變化,加強辨識難度。
而Google還發展了新的CAPTCHA機制,用多張圖要使用者點選當中有車子、招牌或是建築物的reCAPTCHA。不過,辨識車子跟招牌的方式就真的安全了嗎?也未必!
除了圖形辨識外,一般的CAPTCHA為了要照顧到視力不好的使用者,也有語音辨識。方式是在大量噪音中播放一段文字聲音,再請使用者輸入,因此可以用語音辨識破解。
reCAPTCHA和其他的CAPTCHA系統也曾出現過同樣的問題,而Google的系統已有修復,但是其他的CAPTCHA系統修復後,使用者是否更新,又是另一個問題了。
圖形認證運作機制探秘
圖形認證的意義相當單純,不管用文字或是圖形,目的都是要在15到30秒間判定坐在螢幕前面的是人還是電腦。
現在網站所使用的圖形辨識都大多以文字型態為主,主要以三個方向進行辨識:
1.固定型態的辨識。人腦可以辨識出同一個字的無限量變化,但是電腦做不到這件事情,要教會電腦辨識無限量的變化是有困難度的。
2.分辨區隔。人腦對於辨識區隔是相當厲害的,即使兩個字之間幾乎沒有什麼空格,還是能夠分辨出他是兩個字而不是一個字,但電腦很難做到。
3.整個字的意義。簡單的說,即使今天一個在 CAPTCHA裡你無法分辨n, m, u等字母區別,但是當你看整個字的時,就會知道這個字怎麼拼或代表哪個字。
上面三個問題中任何一個問題對電腦來說都是難題,三者問題合併更是難上加難。就像下面這個圖例(圖三)。
雖然中間兩字母不清晰,但按照經驗,你會覺得中間兩個字母應該是u,再組合回去就有90%以上的機率是rescused。
除了歪七扭八的文字外,CAPTCHA也能加入不同的背景,如圖片或是不同顏色的噪音,將文字堆疊多層等方法,避免被破解。
基本保護沒做好,整個資料還是會被搬走
當然,沒有一個認證的方式絕對安全,圖形認證只是一種方法,但是有效的雙因子或多重密碼驗證加上圖形認證,才是最有效的方法。當然,若最基礎的網站安全都沒有做到的話,以上方法也是無效的。
人的驗證只是其中一環,基本網路以及伺服器保護沒做好,資料就不是一筆筆被偷,而是整個被搬走。
圖形認證只是保護機制的一環,基礎的系統架構安全,以及程式設計的基本安全措施,才是維護跟保護一個系統最重要的環節。基礎很重要,要確保網站上的架構與設備安全性,才能保障使用者的安全。
《數位時代》長期徵稿,針對時事科技議題,需要您的獨特觀點,歡迎各類專業人士來稿一起交流。投稿請寄edit@bnext.com.tw,文長至少800字,請附上個人100字內簡介,文章若採用將經編輯潤飾,如需改標會與您討論。
(觀點文章呈現多元意見,不代表《數位時代》的立場。)