文獻標識碼: A
文章編號: 0258-7998(2012)04-0117-03
隨著現代社會的發展,在日常生活及工業生產中需要傳輸的數據信息量越來越大,常用的一維條碼技術已經不能滿足人們要求,二維條碼技術得到了快速發展,獲得了社會的普遍認同。智能手機作為便攜設備應用廣泛,尤其它具有內置攝像頭可以直接獲取圖像數據,使得二維條碼的識別變得更加快捷高效。
QR碼是目前應用較為廣泛的一種矩陣式二維碼,考慮到工業物料管理系統對加密性的特殊要求,本文采用RC4算法對QR碼進行加密處理,并在android系統下設計實現。
1 加密QR碼生成
RC4加密算法是Ron Rivest在1987年設計的密鑰長度可變的流加密算法簇[1]。 該算法的速度可以達到DES加密的10倍左右,且具有很高級別的非線性,適合手機硬件系統的要求;RC4算法屬于流加密,被廣泛應用于SSL/TLS等網絡安全協議[2-3]。隨著手機互聯網的發展,使用RC4算法便于手機二維碼識別系統后續網絡化發展。
1.1 RC4算法
RC4算法包括密鑰調度算法(KSA)和偽隨機子密碼生成算法(PRGA)兩大部分。具體步驟如下:
(1)密鑰調度算法(KSA)。定義一個長度為256 B的S盒,同時建立一個臨時矢量K。如果密鑰Key的長度≥256 B,則將Key賦給K,多余字節丟棄;否則,計算Key的長度len,將Key的值賦給K的前len個元素,并循環重復用Key的值賦給K剩下的元素,直到K的所有元素都被置換賦值。
(2)偽隨機子密碼生成算法(PRGA)。將S盒中的每個字節與另一個字節置換,直到最后S[255]置換完成,操作繼續重復。加密時,將子序列密鑰與要加密的明文進行“異或”得到密文。解密時過程相同。
1.2 RC4算法的混沌改進
1.2.1 RC4算法混沌改進
為了提高流密碼的遍歷性與隨機性,在RC4算法的密鑰生成與偽隨機子密碼生成過程中采用混沌算法進行改進。Logistic一維映射是一種比較簡單的數學形式混沌映射,但是具有非常好的混沌性質,適合手機對算法處理速度快的要求。
Logistic映射數學表達式為:
2 加密QR碼識別
QR碼識別系統在Android手機系統下實現。
2.1 Android系統簡介
Android是基于Linux開放性內核的操作系統,是Google公司在2007年11月5日公布的手機操作系統[5]。Android應用程序使用Java做為開發語言。本系統的開發環境為eclipse-SDK-3.5.2+android-sdk_r10+ADT-0.9.7。
2.2 QR碼識別系統的主要模塊
系統主要分為圖像采集、圖像處理、QR碼的譯碼及數據解密4個模塊。
圖像采集:點擊按鈕啟動程序同時啟動手機的攝像頭,開始實時捕捉QR碼圖像,如果檢測到QR碼,就將這一幀的圖像捕捉并進行圖像處理。
圖像處理:(1)灰度化,手機獲取的彩色圖像變為黑白圖像,減少信息量,加快處理速度;(2)中值濾波,使用適當的矩形窗口中值濾波處理掉光學采集系統中產生的椒鹽噪聲;(3)二值化,采用直方圖雙峰方式進行圖像分割,將整個圖像呈現出明顯的、只有黑白的視覺效果。
QR碼譯碼:按照國家GB/ T 18284 2000標準[6]進行解碼。
數據解密:按照混沌改進RC4算法的步驟對數據碼字進行解密。
2.3 多線程處理
在圖像預處理及QR解碼過程中,往往需要處理大量的數據的情況。為了提高識別速度,解碼編程時采用多線程處理。
Android系統支持多線程應用,支持利用handler接收子線程的數據。多線程處理實現方法:為每個處理步驟開啟一個線程,并在實現其run方法同時需要創建一個message,并定義好其屬性;在完成操作后將數據發送給handler,通過handler發送message來達到多線程的調度,避免多線程操作時遇到資源沖突而發生異常。
3 系統性能分析
由于采用了混沌改進的RC4算法對物料數據的QR碼進行了加密,在識別程序設計中采用多線程處理等編程技巧,從而使該物料數據QR碼生成及識別系統的加密效果和識別速度達到較高要求。
頻率測試和游程測試出的P-Value值都大于NIST(美國國家標準與技術委員會)規定的0.01,即符合理想隨機序列標準。
3.2 系統識別速度
QR碼識別系統在摩托羅拉開發的里程碑、里程碑2、ME525及HTC開發的G7手機上進行測試,測試手機的像素一般為500萬,測試圖片的大小為200×200。在73張圖片中有4張污損圖片不能譯碼,其余測試結果良好。
圖3是本系統在ME525手機上運行時,對圖1(b)所示加密QR碼進行解碼的操作,其中圖3(a)為打開應用時的顯示界面,由此輸入密碼。圖3(b)為解碼后結果,其中第一行為沒有進行解密的譯碼結果,圖中顯示為一行亂碼,不能得到QR碼中的準確信息;第二行解密譯碼結果可以清楚看到廠家物料信息。圖3(b)最下面顯示一次識別的識別時間,識別時間是從打開攝像頭捕獲圖像后開始計算,正常情況下本系統識別二維碼圖像的時間為1 400 ms~4 700 ms。
另外,識別速度還與光線、對焦時間有關。測試時光線不充足或過于充足都會影響識別時間。若圖片距離手機過近則影響對焦時間,從而導致識別速度過慢。
Android手機系統功能豐富,攜帶方便,受周邊環境影響較小。使用智能手機識別二維碼已經成為條碼識別的一個趨勢,而且可擴展性強,可顯著提高工業管理生產效率。經過測試及分析,本系統符合QR碼加密性能、識別的時間和準確度要求。
參考文獻
[1] 宋維平.流密碼與RC4算法[J].吉林師范大學學報(自然科學版),2005(5):71-72.
[2] PETER K, MANUEL L, MARTIN M. QR code security[C]. MoMM2010-8th International Conference on Advances in Mobile Computing and Multimedia, 2010.
[3] HONGGEUN K, JUNGKYU H,SEONGJE C. An efficient implementation of RC4 cipher for encrypting multimedia files on mobile devices[C]. Proceedings of the ACM Symposium on Applied Computing, 2007.
[4] 金海榮. 混沌序列密碼分析及其應用研究[D],哈爾濱:黑龍江大學, 2009.
[5] 谷歌公司. Android開發手冊[EB/OL](2010-09-23).http://developer.android.com.
[6] 國家質量技術監督局.中華人民共和國國家標準——快速響應矩陣碼[S].北京:標準出版社,2001.
[7] ANDREW R, JUAN S, JAMES N. A statistical test suite for random and pseudorandom number generators for cryptographic applications[S].NIST Special Publication, 2001.