摘 要
本文涉及動態(tài)二維碼的編碼解碼技術(shù),即一種動態(tài)二維碼生成及驗(yàn)證方法,通過在終端把本地?cái)?shù)據(jù)進(jìn)行加密生成并顯示動態(tài)二維碼圖像,利用移動終端掃碼該動態(tài)二維碼并將得到某幀二維碼數(shù)據(jù),發(fā)送服務(wù)器后通過數(shù)據(jù)解密、時(shí)效驗(yàn)證、標(biāo)識校驗(yàn)等進(jìn)行合法驗(yàn)證。
【關(guān)鍵詞】動態(tài) 二維碼 編碼 解碼 加密 驗(yàn)證
二維碼作為一種先進(jìn)的應(yīng)用,隨著移動互聯(lián)網(wǎng)和智能終端的普及,在媒體、商業(yè)、制造、物流等多個(gè)領(lǐng)域快速推廣,很好地充當(dāng)了數(shù)據(jù)傳輸?shù)臉蛄?,尤其是微信、支付寶的二維碼掃碼支付的廣泛應(yīng)用,二維碼已經(jīng)被大眾普遍接受和使用。
1 二維碼
二維碼是在平面上使用若干個(gè)與二進(jìn)制相對應(yīng)圖形的來表示記錄數(shù)據(jù)信息的幾何形體。二維條碼具有信息容量大、密度高、糾錯(cuò)能力強(qiáng)、安全性好、編碼范圍廣的優(yōu)點(diǎn),同時(shí)還可以引入校驗(yàn)糾錯(cuò)碼,具有檢測錯(cuò)誤和恢復(fù)刪除錯(cuò)誤的能力。二維碼除了表示基本的英文、漢字、數(shù)字、網(wǎng)址等信息外,還可以存儲聲音、指紋、照片及圖像等多種信息。
2 動態(tài)二維碼
在傳統(tǒng)的二維碼中,靜態(tài)數(shù)據(jù)的重復(fù)使用增加了其丟失、泄露以及被破解的風(fēng)險(xiǎn),降低了信息系統(tǒng)的安全系數(shù),而動態(tài)二維碼是在傳統(tǒng)二維碼的基礎(chǔ)上在一段時(shí)間內(nèi)多幀二維碼圖像交替顯示,其中每一幀二維碼圖像數(shù)據(jù)分別采用不同的密鑰動態(tài)加密生成,不易偽造不易破解,每一幀二維碼都有時(shí)效性,這樣更能保證數(shù)據(jù)的安全。
3 動態(tài)二維碼生成原理
本文所述動態(tài)二維碼是在QR Code碼的基礎(chǔ)上生成,一段時(shí)間內(nèi)多張不同的二維碼圖像不斷的切換,每一幀二維碼圖像分別用不同的密鑰動態(tài)加密生成,其內(nèi)容是通過符合標(biāo)準(zhǔn)的安全算法加密,一般的二維碼掃碼器掃描不出其真實(shí)內(nèi)容,同時(shí),添加了時(shí)間驗(yàn)證機(jī)制,確保每一幀二維碼圖像所包含的信息只在一段時(shí)間內(nèi)有效?;谝陨蟽牲c(diǎn),即使二維碼圖像被惡意獲取,也可以很好地保證其信息安全性。
4 動態(tài)二維碼驗(yàn)證原理
在某些特定應(yīng)用場景下,需要終端硬件信息和移動端用戶信息分別組織,然后再合并進(jìn)行合法性驗(yàn)證,根據(jù)驗(yàn)證結(jié)果終端或者移動端進(jìn)行響應(yīng)(例如某些行業(yè)設(shè)備通過手機(jī)進(jìn)行的近距離非接觸檢查操控),驗(yàn)證原理如下:
(1)終端(可以是多種具備計(jì)算和顯示功能的硬件設(shè)備)加密本地?cái)?shù)據(jù)生成動態(tài)二維碼圖像并顯示。
(2)移動端掃描終端上的動態(tài)二維碼,得到某幀二維碼數(shù)據(jù)轉(zhuǎn)發(fā)給服務(wù)器。
(3)服務(wù)器進(jìn)行時(shí)間驗(yàn)證和數(shù)據(jù)解密后進(jìn)行數(shù)據(jù)合法驗(yàn)證,驗(yàn)證結(jié)果信息返回給終端和移動端。
(4)終端和移動端收到服務(wù)器返回信息并進(jìn)行相應(yīng)的顯示或者動作。
5 動態(tài)二維碼的生成和驗(yàn)證過程
5.1 動態(tài)二維碼生成步驟
(1)客戶端和服務(wù)器交換加密密鑰A(每次值不同)和動態(tài)二維碼每幀圖像數(shù)據(jù)的有效時(shí)間I??蛻舳税旬?dāng)前自身系統(tǒng)時(shí)間CT1記為客戶端起始時(shí)間,服務(wù)器把當(dāng)前自身系統(tǒng)時(shí)間ST1記為服務(wù)器起始時(shí)間。
(2)客戶端收集本地硬件信息等關(guān)鍵信息拼成一個(gè)字符串,將該字符串經(jīng)過MD5運(yùn)算得出另一個(gè)字符串(用于服務(wù)器確認(rèn)關(guān)鍵信息字符串信息的完整性),將兩個(gè)字符串合并組成一個(gè)新的字符串D。
(3)將字符串D用密鑰A和隨機(jī)數(shù)B以DES加密得到密文E。
(4)在密文字符串E的前面,插入當(dāng)前系統(tǒng)時(shí)間與CT1的差(簡稱Cintv)和隨機(jī)數(shù)B最后得到字符串F。
(5)將F按照QR碼的標(biāo)準(zhǔn)生成二維碼圖像并顯示。
(6)客戶端每隔一段時(shí)間(比如2秒)重復(fù)上述第2至5步驟,從而形成二維碼的動態(tài)更替顯示。
5.2 動態(tài)二維碼數(shù)據(jù)傳輸步驟
(1)移動端連接服務(wù)器后使用登錄名口令等方式通過使用者身份驗(yàn)證
(2)移動端掃描客戶端的動態(tài)二維碼,獲得某幀二維碼數(shù)據(jù)轉(zhuǎn)發(fā)給服務(wù)器
5.3 動態(tài)二維碼時(shí)效驗(yàn)證
(1)服務(wù)器接收到移動端發(fā)來的二維碼數(shù)據(jù)并解析。
(2)服務(wù)器在數(shù)據(jù)中得到Cintv(此二維碼的生成時(shí)間與起始時(shí)間的時(shí)間差)和隨機(jī)數(shù)B。
(3)服務(wù)器用當(dāng)前系統(tǒng)時(shí)間減去起始時(shí)間ST1獲得時(shí)間差Sintv。
(4)Sintv減Cintv的差值小于等于二維碼有效時(shí)間I,則時(shí)效驗(yàn)證通過并進(jìn)行二維碼內(nèi)容驗(yàn)證,否則此幀二維碼信息失效,驗(yàn)證失敗信息返回給移動端顯示。
5.4 動態(tài)二維碼內(nèi)容驗(yàn)證
(1)服務(wù)器用密鑰A和隨機(jī)數(shù)B解密二維碼數(shù)據(jù)獲得終端硬件等關(guān)鍵信息
(2)服務(wù)器驗(yàn)證這些信息是否合法,不合法則把驗(yàn)證結(jié)果返回給移動端顯示,合法則終端和移動端執(zhí)行相應(yīng)的顯示或者動作。
參考文獻(xiàn)
[1]郭婧.二維碼技術(shù)在移動電子商務(wù)中的應(yīng)用研究[J].通訊世界,2015(13).
[2]鄭君,李海霞.基于動態(tài)二維碼的安全身份認(rèn)證方案的研究[J].湖北理工學(xué)院學(xué)報(bào),2015(02).
[3]中國銀聯(lián)二維碼支付安全規(guī)范[S].Q/CUP 067-2016.
作者簡介
喬良樹(1969-),男,天津市人。碩士學(xué)位。研究方向?yàn)檐壍澜煌ㄐ畔⒓夹g(shù)、移動互聯(lián)網(wǎng)技術(shù)。
作者單位
天津凱發(fā)電氣股份有限公司 天津市 300392endprint