曹記東
(陜西理工學院數學與計算機科學學院, 陜西 漢中 723000)
?
一種基于漢字筆畫的驗證碼生成技術
曹記東
(陜西理工學院數學與計算機科學學院, 陜西漢中723000)
文章提出一種基于漢字筆畫的驗證碼生成技術.該驗證碼生成技術利用GIF動態驗證碼的優點,采用筆畫、漢字以及GIF動畫提示,要求驗證者在給出筆畫中按順序選出漢字的正確筆畫,并從給出的漢字中選中正確的漢字,利用DES加密算法實現B/S通信的傳輸安全,有效防止OCR識別技術,提高驗證碼安全性,增強了用戶的體驗感.
驗證碼;GIF;筆畫;安全性
網絡安全越來越受到人們的重視,驗證碼的使用也越來越頻繁.驗證碼形式多樣[1-2].目前經常使用的驗證碼主要有以下5種:1)基于數字和字母的文本驗證碼; 2)基于視頻內容的驗證碼; 3)基于聲音的驗證碼;4)基于數學算術的驗證碼; 5)基于中文漢字的驗證碼[3-4].基于數字和字母的驗證碼容易受到攻擊,基于視頻和聲音的驗證碼操作比較麻煩,對使用環境有較高的要求,基于數學算術的驗證碼要求用戶有一定的數學運算和邏輯推理能力,使用受到一定限制,基于中文漢字的驗證碼輸入較為麻煩,用戶體驗感不強[5].本文提出的基于漢字筆畫的驗證碼兼顧了驗證碼的驗證效率和安全性.
1.1系統圖解
基于漢字筆畫的驗證碼功能主要有:系統生成動態驗證碼、用戶提交驗證信息、系統對用戶提交信息進行驗證并返回驗證結果.其功能框圖如圖1所示.

圖1 系統功能框圖
系統的數據流圖如圖2所示.

圖2 系統數據流圖
1.2驗證原理
基于筆畫的動態驗證碼的驗證主要分為以下幾步:
(1)客戶端請求登錄頁面
1)通過查詢數據庫獲得字庫中的總字數,然后在總數范圍內隨機得到一個編號,通過該編號得到一個漢字作為候選漢字中的待選漢字,再隨機生成一個待選漢字的擺放位置,最后將待選漢字及其擺放位置存入session中.
2)依據字庫總字數以及待選漢字的編號隨機生成3個不重復且與待選漢字不同的干擾漢字,然后存入session中.
3)根據待選漢字的筆畫數,確定所需要的干擾筆畫的個數.利用待選漢字的編號在數據庫中查詢針對該漢字所設計的干擾筆畫編號,使用隨機算法從為待選漢字所設計的干擾筆畫中篩選出一定數量的干擾筆畫編入到集合中,得到干擾筆畫集合并存入session中.
4)創建一個長度為8的集合,并將集合亂序.再創建一個集合記錄待選筆畫在亂序集合中的索引位置,將這兩個集合都存入到session當中.
5)為滿足DES加密算法的3個密鑰需求,我們隨機生成3個隨機數存入到session當中.
(2)服務器端響應
首先應從session當中拿出客戶端請求登錄頁面時放入session中存放的待選漢字.但由于本驗證碼中包含有多種元素,如GIF動畫圖片、候選漢字圖片以及可供選擇的漢字筆畫,因此服務器需要依據請求資源名判斷請求的是動畫漢字還是筆畫.
1)當請求為動畫時,根據漢字實體中存放的相關信息在服務器中找到相關資源,并返回給瀏覽器.
2)當請求為漢字時,從session中拿出干擾漢字以及正確漢字位置,通過代碼將干擾漢字以及正確漢字一并繪制到一張圖片當中,其中正確漢字按照生成正確位置繪畫[6],繪制完成后返回給瀏覽器.
3)當請求為筆畫時,從session中拿出生成好的筆畫編號和干擾筆畫編號,從服務器中得到這8張筆畫圖片,通過代碼將這8張圖片合并成一張圖片返回給瀏覽器.
2.1模擬登錄界面
為了證明本系統的可操作性,設計如下登錄界面(如圖3所示).若用戶提交的驗證信息能被服務器認可,即認為當前用戶為合法用戶而非惡意程序,則可完成登錄,繼續下一操作.

圖3 模擬登錄界面
基于漢字筆畫的動態驗證碼包括多種元素,如動態GIF動畫、候選漢字圖片、待選筆畫集合.這是通過分析和研究OCR技術識別的原理而得出的一種更安全、高效、方便使用并有利于推廣的方案.
2.2筆畫選擇
基于筆畫的動態驗證碼中包括漢字筆畫驗證.這要求用戶根據GIF動畫提示,在系統給出的筆畫圖片組中按順序選出正確的筆畫圖片.用戶可通過“后退”與“重置”按鈕控制驗證流程.

圖4 筆畫選擇
筆畫圖片數組中除了待選筆畫之外,還包含有干擾筆畫.在系統字庫中,每一個漢字包含有若干張干擾筆畫圖片,系統在生成筆畫圖片組的時候,將會隨機從當前漢字對應的干擾筆畫圖片中“挑選”出y張干擾筆畫圖片(若當前漢字筆畫數等于x,則y=8-x),并將選出的干擾筆畫圖片和待選筆畫圖片進行亂序處理,最終在客戶端進行顯示.
2.3漢字選擇
基于筆畫的動態驗證碼中還包括漢字驗證.這要求用戶觀察GIF動畫中的筆畫,根據動畫分辨并選出動畫圖片中“寫出”的漢字.與筆畫圖片組類似,漢字圖片組除了待選漢字以外,也包含3個干擾漢字選項.這是為了讓機器無法直接獲取驗證碼信息,更好地實現對驗證碼“人眼易分辨,機器難識別”的要求.

圖5 待選字驗證
基于漢字筆畫的動態驗證碼設計方案,主要具有以下幾個特點:
1)靜態向動態的轉變
本驗證碼生成技術使用GIF動畫作為驗證圖片,解決了用戶僅通過簡單的第三方接口就能輕易識別圖像內容這一問題.
2)安全性較高
由于這個驗證碼系統采取兩步驗證,不僅需要按照GIF動畫提示選出待選漢字,還需要按順序選擇該漢字的正確筆畫.這樣即便用機器識別出GIF圖片中的內容,也很難按照筆畫順序在無規則隨機生成的筆畫位置中挑選出正確筆畫與漢字.
3)通信過程采用DES加密算法
為保證B/S之間的安全通信,驗證過程中的關鍵數據均采用加密算法配合隨機密鑰進行加密.基于漢字筆畫的動態驗證碼是通過分析現有
驗證碼的弊端,結合對現代識別技術的學習與研究而提出的一種易生成、易理解、不易被機器識別、具有較高可靠性的新的動態驗證碼.它從多個方面對安全問題進行加強,包括使用多種元素實現驗證過程,以及對B/S間的通信進行加密(信息在客戶與服務器之間均以密文形式進行傳遞),適用于登錄窗體、注冊窗體或回復窗體等各種窗體.
4)若用戶對驗證碼的安全性有更高的要求,可以通過對字庫進行分級,從易到難逐步增加.對于所有用戶可以初始化為中等難度級別,如果嘗試多次登錄驗證失敗,則逐步降低字庫難度,并降低動畫的幀率.如果用戶在一定時間內,多次成功驗證通過,則不斷增加字庫難度,并提高動畫的幀率,以防惡意登陸.
[1]王曉鵬.驗證碼識別系統的研究及實現[D].廣州:華南理工大學,2010.
[2]趙鍵.點模式匹配算法研究[D].長沙:國防科學技術大學, 2012.
[3]荀恩東,呂曉晨,安維華,等.面向書寫教學的手寫漢字圖像筆畫還原[J]. 北京大學學報(自然科學版),2015, 51(2): 241-248.
[4]孫華,張航.漢字識別方法綜述[J].計算機工程,2010, 36(2):194-197.
[5]陳欽梧,彭小忠.新音形編碼漢字輸入法設計[J]. 計算機工程與應用,2014,50(1):36-40.
[6]劉敏,詹華年,梁曉輝,等.基于骨架圖匹配的漢字變形技術[J].北京航空航天大學學報,2015,41(2) : 364-368.
(責任編輯穆剛)
A verification code generation technique based on strokes of chinese characters
CAO Jidong
(School of Mathematics and Computer Science, Shaanxi University of Technology, Hanzhong Shanxi 723000, China)
This paper proposes a verification code generation technique based on the strokes of Chinese characters, the verification code generation technique using the advantages of GIF dynamic verification code, considering strokes, Chinese characters and GIF animation tips, and the users were asked to select the correct Chinese character strokes and the correct Chinese characters from which were given, and the DES encryption algorithm was used to ensure B/S communication transmission security. Therefore the verification code generation technique can efficiently prevent the OCR recognition technique, improve the security of verification code, and enhance the user’s experience feeling.
verification code; graphic interchange format; stroke; security
2016-03-15
陜西理工學院校級項目(SLGKY13-47).
曹記東(1977—),男,河南周口人,講師,碩士,主要從事計算機科學、信息安全與密碼學方面的研究.
TP319
A
1673-8004(2016)05-0098-03