劉思宇 耿子燁 北方工業(yè)大學計算機學院
基于商用密碼算法的二維碼驗票系統的研究
劉思宇 耿子燁 北方工業(yè)大學計算機學院
結合傳統的二維碼驗票系統,通過商用密碼算法的安全設計和應用,在具備快速處理能力的同時,也可以保證二維碼信息在網絡傳輸過程中的安全性。采用C/S與B/S模式相結合的架構,通過商用密碼SM2、SM3、SM4算法,設計了安全保密的二維碼快速驗票系統,實現了票據信息的加密和簽名,保證了傳輸安全和防偽驗證安全。
商用密碼 二維碼 QR Code
在生產力快速發(fā)展的現代社會里,人們的生活節(jié)奏也隨之加快。在這種快節(jié)奏的生活中,時間變得尤其寶貴。而在日常生活中,許多地方的驗票方式卻耽誤了大家的寶貴時間。比如看電影時,工作人員要核對電影票,確認無誤后才允許客人進入觀看;搭乘飛機時,工作人員需要核對機票,確認無誤后才允許客人登機;去景區(qū)游玩時,工作人員需要核對門票,確認無誤后才允許客人進入游玩等等。無論哪一種門票,都采用了原始的人工驗票方式,低驗票效率浪費了人們許多時間。
隨著科技的不斷發(fā)展,一種新興的驗票方式——二維碼驗票誕生了。這種驗票方式操作簡單、使用便捷,且具有經濟實惠的特點。傳統的二維碼驗票方式是通過掃描二維碼,將其含有票據號傳遞至服務器端,由服務器快速辨別門票的真?zhèn)慰刂朴慰偷倪M出。然而在這種方式中沒有考慮到信息的安全保密性,很容易被他人竊取信息進行仿造,鑒于此,本文提出了以二維碼技術為基礎,應用商用密碼算法的一種新型驗票系統——基于商用密碼算法的二維碼驗票系統。本系統以商用密碼算法相關技術為理論基礎,確保二維碼傳輸及認證的安全性,在大大地提高了驗票的效率的同時保證了其安全性,實現了具有安全性的二維碼掃描的驗票方式。
1.1 二維碼
二維碼將二進制字符“0”和“1”根據系統約定進行編碼,形成按一定規(guī)律在水平和垂直方向的二維空間上分布的黑白相間的圖形,并用其記錄數據符號信息。從編碼原理可以將二維碼分為行排式二維條碼和矩陣式二維條碼兩大類。行排式二維條碼形態(tài)上是由多行短截的一維條碼堆疊從而形成;矩陣式二維條碼以矩陣的形式組成,在矩陣中暗塊表示二進制“1”,亮塊表示二進制“0”。
本文中采用QR Code碼編碼實現。QR Code碼四周為空白區(qū),內部由包括位置探測圖形及其分隔符、定位圖形、校正圖形在內的功能圖形以及包括格式信息、版本信息、數據和糾錯碼字在內的編碼區(qū)格式組成。其結構如圖1所示。
QR Code碼除了可存儲信息量大、可靠性高之外,還具有超高速、全方位的特點,同時還能有效地表示漢字。因此,通過QR Code碼編碼可以將票據相關的信息,比如票據單號、票據名稱、有效日期、價格等存放在二維碼中。這樣一來,驗票時只需通過光電掃描設備自動識讀來辨別票據真?zhèn)渭捌溆行詮亩鎰e繁瑣的人工驗票,提高驗票效率。但是一般的二維碼缺乏安全性保障,很容易被他人竊取信息進行仿造,因此本二維碼驗票系統的設計運用了商用密碼算法,將二維碼內信息進行加密,從而提高驗票的安全性。
本文采用二維碼對票據信息進行編碼,通過商用密碼算法對票據進行加密,實現基于商用密碼算法的二維碼驗票系統。
圖1 QR Code碼結構
1.2 商用密碼
商用密碼是指對不涉及國家秘密內容的信息進行加密保護或者安全認證所使用的密碼技術和密碼產品。商用密碼技術是信息安全的核心,同時也是保護信息安全的主要手段。隨著我國的經濟不斷發(fā)展和信息安全技術的不斷提高,信息安全領域得到了全面的建設,同時商用密碼產品被越來越廣泛地應用。為了保障商用密碼安全,國家商用密碼管理辦公室制定了一系列密碼標準,包括SM2、SM3、SM4、SM7、SM9算法等等。其中SM4、SM7是對稱算法;SM2、SM9是非對稱算法;SM3是哈希算法。而本文主要運用了對稱算法SM2,哈希算法SM3以及非對稱算法SM4。
2.1 數字簽名
數字簽名運用了SM2加密技術與數字摘要技術。在本文的系統中運用數字簽名過程如圖2所示,首先由管理端用單向散列函數對票據信息進行摘要得到摘要信息,然后用其產生的私鑰將摘要信息進行加密,并將其與原票據信息一起發(fā)給客戶端。客戶端將被加密的摘要信息用管理端的公鑰進行解密,然后用哈希函數對收到的原票據信息進行摘要生成摘要信息,并將其與解密的摘要信息進行對比,通過比較的結果判斷消息是否被篡改。其保證了傳輸過程中信息的完整性,同時能認證管理端的身份并且具有不可抵賴性。
圖2 數字簽名過程
本文中的系統將數字簽名作為加密過程中的重要一步,通過數字簽名技術驗證票據的有效性,確保了密鑰分發(fā)過程的安全,以此提高二維碼傳輸信息的安全性。
2.2 數字信封
數字信封中采用了SM4算法和公鑰密碼體制。其過程包括生成數字信封和解開數字信封,如圖3所示。在本文的系統中,管理端將票據信息用對稱密鑰進行加密,然后用客戶端的公鑰加密此密鑰,之后將其和加密后的票據信息一起發(fā)送給客戶端。此為生成數字信封的過程。客戶端先用對應的私鑰數字信封得到對稱密鑰,然后使用對稱密鑰解開加密信息。此為解開數字信封的過程。
本系統通過生成和解開數字信封提高了票據信息在傳輸的過程中的保密性,利用數字信封技術保證了密鑰分發(fā)過程的安全。
圖3 數字信封過程
2.3 密鑰管理
密鑰管理是本文的系統中最重要的部分。其過程包括密鑰生成、密鑰分發(fā)、驗證密鑰、更新密鑰、密鑰存儲、備份密鑰以及銷毀密鑰。系統的安全性真正在于對密鑰的保護程度而并非在于密碼算法的保密程度以及對設備的保護程度。
本文的系統中用到了常見的三級簡化密鑰管理結構,其優(yōu)點在于能自動化管理密鑰。在此結構中,密鑰管理系統將按照協議對各級密鑰進行自動分配。首先,在客戶購票時客戶端自動生成公鑰與私鑰同時將生成的公鑰上傳至密鑰管理系統中進行儲存。在提高了密鑰傳輸效率的同時也確保了傳輸過程中的安全。而管理端掌握著的系統密鑰與客戶購票的密鑰相互之間不直接接觸,二者分別保護屬于自己的私鑰,提高了傳輸過程的安全性。
3.1 系統架構
本文所設計的系統結合了管理端、客戶端以及驗票端,系統組成圖如圖3所示。系統管理端運用了簡化的Linux系統,同時采用B/ S架構模式與C/S架構模式。管理端通過CGI+HTML進行B/S架構管理系統的開發(fā);驗票端通過C#語言進行開發(fā),通過和管理端進行通信交互實現票據鑒別;客戶端通過在網上在線購票實現與管理端的密鑰交互。
3.2 票務流程與實現
3.2.1 客戶購票
客戶在線購票后數據將傳送到管理端,管理端將使用隨機數產生一組密鑰,并將密鑰信息加入原有的本地存儲的密鑰信息中;同時使用隨機生成的密鑰保護密鑰對此密鑰進行SM4加密,并對密鑰進行數字簽名;用客戶端的公鑰使用SM2加密算法對密鑰保護密鑰進行加密,形成數字信封;最后將數字信封下發(fā)至客戶端。
3.2.2 管理端接收密鑰
在接收了管理端傳送過來的信息后,首先客戶端需要用管理端產生的公鑰對傳送過來的信息進行驗簽,確保簽名正確后客戶端需要用自己的私鑰解密被管理端加密了的保護密鑰,得到未加密的保護密鑰,之后用得到的未加密的保護密鑰解密由密鑰加密的信息,從而獲得真正需要的密鑰。
3.2.3 二維碼生成
本文中的系統將二維碼作為信息的載體進行傳遞??蛻舳松傻亩S碼包含用戶身份信息以及所購票據信息??蛻舳藢⑹盏降男畔⒂每蛻舳说墓€加密的密鑰進行解密后,用管理端的公鑰進行二次加密并生成字節(jié)串,利用所生成的字節(jié)串產生二維碼。
3.2.4 驗票
客戶將生成的二維碼票據放到驗票端下進行二維碼掃描,讀取二維碼信息。用管理端的私鑰對讀取到的二維碼信息進行解密,解密完后,與管理端中原有信息進行比較以辨別客戶的票據真?zhèn)?。如果比較之后信息一致則票據真實有效,客戶可以通行,否則拒絕客戶通行。
3.3 關鍵技術實現
本系統管理端實現結構圖如圖4所示。業(yè)務層的主要作用為將接口解析出來的信息通過不同的模塊進行相應的操作。比如購票模塊需要進行票據信息的加密,而驗票模塊則需要進行信息的比對等。而數據層需要存儲本系統的所有票據信息。
管理端接受來自客戶端的請求時的主要流程機制是當客戶在線購票并且支付成功后,管理端將自動對產生訂單中的各類信息包括票據信息、時間等存儲到數據庫內。同時管理端將使用隨機數產生一組密鑰,并將密鑰信息加入原有的本地存儲的密鑰信息中;并使用隨機生成的密鑰保護密鑰對此密鑰進行SM4加密,且對密鑰進行數字簽名;用客戶端的公鑰使用SM2加密算法對密鑰保護密鑰進行加密,形成數字信封;最后將數字信封下發(fā)至客戶端。
圖4 管理端架構圖
當管理端接受來自驗票端的請求時,主要流程機制是管理端通過驗票端的請求獲取到需要檢驗的票據的二維碼,通過對二維碼內存儲的信息進行解密,將解密后的信息與數據庫中存儲的原票據信息進行比對,通過比較二者是否相同后將結果反饋至驗票端進行處理。如果二者信息相同,則允許客戶通行,否則客戶不能通行。
對于傳統的驗票方式來說,不但花費了大量時間而且驗票結果錯誤率也相對較高。本文的系統設計靈感源于現有的驗票系統的不完善,故而將商用密碼算法與二維碼二者相結合,形成一個更加安全同時又具備高效率的基于商用密碼算法的二維碼驗票系統。本文主要的技術核心對二維碼存儲的信息進行加密。二維碼的可存儲信息量大、可靠性高同時還具有超高速、全方位的特點,本文采用了數字簽名、數字信封以及密鑰管理技術,保證了二維碼傳輸過程中的保密性以及認證的安全性,在大大地提高了驗票的效率的同時保證了其安全性,實現了具有安全性的二維碼掃描的驗票方式。
[1]徐輝.QR Code二維條碼編解碼系統的應用研究[D].南京:南京郵電大學,2011
[2] GM/T 0002-2012.SM4分組密碼算法[S].中國:國家商用密碼管理辦公室,2012
[3]許輝.二維條碼QR碼的分析和編解碼設計[D].北京:北京郵電大學,2007
[4]陳飛雄.通用設備采集的二維條碼自動識讀技術的研究[D].西安:西安理工大學,2005
[5]薛紅.條碼技術[M].北京:中國輕工業(yè)出版社,2008
[6]康春穎.基于二維碼技術的電子票務系統的研究[J].哈爾濱商業(yè)大學學報(自然科學版),2009,25(2):2-13
[7]謝仁康.非對稱加密二維碼防偽系統的設計[D].電子科技大學,2013
[8]盧鑌.QR碼識別方法研究及應用[D].南京理工大學,2013
[9] GM/T 0003-2012.SM2橢圓曲線公鑰密碼算法[S] .中國:國家商用密碼管理辦公室,2012
[10]劉雪嬌.多功能電子票務系統的設計與實現[J].微計算機應用,2006,27(3):327-331