国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

二維碼生成原理與應(yīng)用安全的分析研究

2021-04-13 01:34:00焦利杰
關(guān)鍵詞:二進(jìn)制字符密鑰

焦利杰

(河南質(zhì)量工程職業(yè)學(xué)院,河南 平頂山,467000)

1 引言

一維條形碼一般是指水平方向存儲(chǔ)信息的條碼條和空的排列規(guī)則,它的數(shù)據(jù)容量較小只能容納30 個(gè)左右包含字母和數(shù)字的字符,由一維條形碼發(fā)展演變而來(lái)的二維碼是利用一些黑白相間的幾何圖形按照一定規(guī)則在水平和垂直方向的二維空間存儲(chǔ)記錄數(shù)據(jù)符號(hào)信息的條形碼,使用特定的掃碼軟件通過(guò)二維碼圖像進(jìn)行讀取信息并自動(dòng)處理信息。二維碼(Quick Response Code)起源于20 世紀(jì)70 年代日本Denso Wave 公司的Masahiro Hara,由于當(dāng)時(shí)的汽車零部件需要追蹤和匹配大量不同的信息,傳統(tǒng)的條形碼信息容量和編碼范圍非常有限,二維碼的發(fā)明應(yīng)時(shí)而生,解決了如何在產(chǎn)品標(biāo)簽上存儲(chǔ)更多的產(chǎn)品信息的問(wèn)題。中國(guó)對(duì)二維碼技術(shù)的研究始于1993 年,隨著中國(guó)市場(chǎng)經(jīng)濟(jì)的不斷完善和信息技術(shù)的迅速發(fā)展,中國(guó)物品編碼中心在國(guó)家的大力支持下,制定了兩個(gè)二維碼的國(guó)家標(biāo)準(zhǔn),二維碼網(wǎng)格矩陣碼和二維碼緊密矩陣碼,促進(jìn)了我國(guó)自主知識(shí)產(chǎn)權(quán)的二維碼研發(fā)[1]。隨著我國(guó)網(wǎng)絡(luò)技術(shù)和移動(dòng)終端的不斷發(fā)展,二維碼已經(jīng)廣泛應(yīng)用于生活之中,因其制作簡(jiǎn)單、成本低廉、使用方便等特點(diǎn),使得許多不法分子利用二維碼作為新的犯罪工具,進(jìn)行病毒和木馬的傳播導(dǎo)致隱私或者身份信息的泄露,或者誘導(dǎo)用戶進(jìn)入釣魚(yú)網(wǎng)站導(dǎo)致財(cái)產(chǎn)的損失。鑒于此,本文依托二維碼的生成原理對(duì)二維碼的應(yīng)用領(lǐng)域以及面臨的安全問(wèn)題進(jìn)行了深入分析,以提高二維碼技術(shù)應(yīng)用和安全方案的可行性。

2 二維碼的優(yōu)勢(shì)

隨著中國(guó)市場(chǎng)經(jīng)濟(jì)的不斷完善,二維碼技術(shù)的應(yīng)用彌補(bǔ)了條形碼信息存儲(chǔ)能力弱和空間利用率低的缺點(diǎn),提高了信息數(shù)據(jù)容量的存儲(chǔ)能力,促進(jìn)了商品經(jīng)濟(jì)和移動(dòng)終端金融支付的發(fā)展。

(1)數(shù)據(jù)容量存儲(chǔ)能力大

最多可達(dá)1850 個(gè)大寫(xiě)字母或2710 個(gè)數(shù)字或1108 個(gè)字節(jié)或500 多個(gè)漢字。

(2)編碼范圍廣

二維碼可以使用圖片、文字、聲音等信息進(jìn)行編碼。

(3)容錯(cuò)能力高

局部污損不影響信息的識(shí)別。

(4)糾錯(cuò)和譯碼可靠性高

譯碼錯(cuò)誤率不超過(guò)千萬(wàn)分之一。

(5)制作過(guò)程簡(jiǎn)單,成本低廉

(6)條碼尺寸相對(duì)小,符號(hào)形狀和尺寸比例可以調(diào)節(jié)

(7)可以使用光耦合裝置(Charge Coupled Device)掃描器識(shí)讀

3 二維碼的生成原理

3.1 二維碼的分類

按編碼模式進(jìn)行分類的話,二維碼可以分為矩陣式二維碼和行排式二維碼,它們具有不同的編碼原理。矩陣式二維碼通過(guò)黑白像素分布在一個(gè)矩形空間不同的位置進(jìn)行編碼,在元素位置上用方點(diǎn)或圓點(diǎn)來(lái)表示二進(jìn)制的1,空白表示二進(jìn)制的0[2]。矩陣式二維碼是一種圖形符號(hào)自動(dòng)識(shí)讀技術(shù),主要依托計(jì)算機(jī)圖形技術(shù)和組合編碼技術(shù)。行排式二維碼可以從字面上理解為多個(gè)一維碼按需堆積而成,編碼、解碼和識(shí)讀方式也具有一維碼的特點(diǎn),而且識(shí)別設(shè)備和條碼印刷也與一維碼相兼容[3]。

3.2 二維碼的尺寸

二維碼尺寸的官方稱謂是Version,最高具有40 個(gè)尺寸,Version1 是21×21 的矩陣,每增加一個(gè)版本就會(huì)增加4 個(gè)模塊,計(jì)算版本的公式是(Version-1)*4+21。

示 例:Version2 的 計(jì) 算 方 法 就 是(2-1)*4+21=25,即Version2 是25×25 的矩陣。

3.3 數(shù)字和字符編碼

數(shù)字編碼的區(qū)間是從0 到9,把需要編碼的數(shù)字分成每三位一組,然后轉(zhuǎn)換為10bits 的二進(jìn)制,不足三位的單獨(dú)一組。字符編碼包括0 到9,大寫(xiě)的A 到Z 以及符號(hào)$、%、*、+、-、.、/、:和空格,字符需要先兩兩分組,然后轉(zhuǎn)換成字符索引表中(表1)相對(duì)應(yīng)的45 進(jìn)制的數(shù),再轉(zhuǎn)成11bits 的二進(jìn)制,然后進(jìn)行二進(jìn)制轉(zhuǎn)換[4]。如有尾部有單數(shù),需要轉(zhuǎn)換成6bits 的二進(jìn)制。

表1 字符索引表

表2 模式指示符

舉例一:在Version1 版本下,數(shù)字編碼12345

(1)把12345 每三位分成一組,不夠三位的單獨(dú)成組,結(jié)果是123 45

表3 字符計(jì)數(shù)指標(biāo)的字節(jié)位數(shù)

(2)Version1 的數(shù)字編碼需要轉(zhuǎn)換為10bits 的二進(jìn)制,把123 和45 分別轉(zhuǎn)換為二進(jìn)制,結(jié)果是0001111011 101101

(3)根據(jù)表3,Version1 數(shù)字長(zhǎng)度用10bits,把數(shù)字編碼12345 的數(shù)字個(gè)數(shù)5 轉(zhuǎn)換成二進(jìn)制是0000000101

(4)根據(jù)表2,數(shù)字編碼的模式指示符為0001,然后把模式指示符和數(shù)字個(gè)數(shù)的二進(jìn)制加到前邊,結(jié)果為0001 0000000101為0001111011 101101

舉例二:在Version1 版本下,字符編碼QR-C

(1)從表1 字符索引表檢索QR-C 的值,分別為(26 27 41 12)

(2)把值每?jī)晌环譃橐唤M,(26,27),(41,12)

(3)先轉(zhuǎn)換為45 進(jìn)制,然后再轉(zhuǎn)換為11bits的二進(jìn)制

(26,27)轉(zhuǎn)換為45 進(jìn)制,26*45+27=1197,轉(zhuǎn)換為二進(jìn)制是10010101101

(41,12)轉(zhuǎn)換為45 進(jìn)制,41*45+12=1857,轉(zhuǎn)換為二進(jìn)制是11101000001

(4)根據(jù)表3,字符個(gè)數(shù)4 應(yīng)轉(zhuǎn)換為9bits 的二進(jìn)制,結(jié)果為000000100

(5)根據(jù)表2,字符編碼的模式指示符為0010,然后把模式指示符和字符個(gè)數(shù)的二進(jìn)制加到前邊, 結(jié)果為0010 000000100 10010101101 11101000001

3.4 結(jié)束符和補(bǔ)齊碼

結(jié)束符為0000,我們還需要在尾部添加結(jié)束符。示例(表4):

表4 結(jié)束符

所有編碼的位加起來(lái)如果不是8 的倍數(shù),還需要在尾部不足8 位的補(bǔ)0,最后按8bts 每組進(jìn)行分組。示例:00100000 00100100 10101101 1101000 00100000(表5):

表5 不同等級(jí)數(shù)據(jù)容量

Version1 H 級(jí)糾錯(cuò)級(jí)別最大需要72 個(gè)bits,如果沒(méi)有達(dá)到還需要用Padding bytes(補(bǔ)齊碼11101100 00010001)補(bǔ)足。示例只有40 個(gè)bits,因此還需要補(bǔ)足32 個(gè)bits。

3.5 糾錯(cuò)碼

正是有了糾錯(cuò)機(jī)制才使一些污損殘缺的二維碼能夠正確的識(shí)讀出來(lái)。糾錯(cuò)水平分為L(zhǎng)、M、Q、H四個(gè)級(jí)別,在對(duì)數(shù)據(jù)碼添加糾錯(cuò)碼時(shí),需要先對(duì)數(shù)據(jù)碼進(jìn)行分組(表6):

表6 Version5 糾錯(cuò)特性

糾錯(cuò)碼塊(c,k,r)中c 為碼字總數(shù),k 為數(shù)據(jù)碼個(gè)數(shù),r 為糾錯(cuò)碼容量。以Version5 H 級(jí)為例,表6中指出有兩組碼,每組碼又被分為兩塊,第一組每塊碼字總數(shù)都是33,包含11 個(gè)數(shù)據(jù)碼,22 個(gè)糾錯(cuò)碼,第二組每塊碼字總數(shù)都是34,包含12 個(gè)數(shù)據(jù),22 個(gè)糾錯(cuò)碼(表7):

表7 糾錯(cuò)碼塊

3.6 最終編碼

最終編碼需要把數(shù)據(jù)碼和糾錯(cuò)碼按照塊從上到下從左到右的順序組合到一起。先把每塊的第一個(gè)數(shù)據(jù)取出來(lái)然后按照從上到下的順序排列,然后取每塊的第二個(gè)數(shù)據(jù)按照從上到下的順序排在之前數(shù)據(jù)的后邊,最后依序排列至結(jié)束。糾錯(cuò)碼也是采取同樣的方法,然后排列在數(shù)據(jù)碼后邊就組成了數(shù)據(jù)區(qū)。

3.7 二維碼繪制

圖1 二維碼信息

定位圖案是一個(gè)7×7 的矩陣,位于二維碼的三個(gè)角。對(duì)齊圖案是一個(gè)5×5 的矩陣。不同版本的對(duì)齊圖案的個(gè)數(shù)也不相同。例如version8 在行列值6,24,42 的幾個(gè)點(diǎn)都會(huì)有對(duì)齊圖案,一共有6個(gè)。時(shí)序圖案是兩條用于連接三個(gè)定位圖案的線(圖1)。

格式信息是一個(gè)固定15bits 的信息,其中數(shù)據(jù)位占5bits,糾錯(cuò)位占10bits(圖2)。

圖2 格式信息

Version7 及以上版本需要加入版本信息,大小固定為18bits。圖1 中指向陰影部分的版本信息填充方式如圖3。

圖3 版本填充方式

數(shù)據(jù)填充按照先數(shù)據(jù)碼后糾錯(cuò)碼的順序,從二維碼的右下角開(kāi)始按蛇行方向上下移動(dòng)填充,遇到非填充區(qū)域時(shí)需要避開(kāi)。

最后一步使用蒙版圖案進(jìn)行掩碼,如果出現(xiàn)大面積的空白或黑塊會(huì)影響掃描識(shí)讀,所以蒙版圖案是為了避免黑白模塊的不均衡。蒙版圖案共有8 種,原圖數(shù)據(jù)區(qū)域與蒙版進(jìn)行異或操作后更容易識(shí)讀(表8)。

表8 蒙版公式

3.8 二維碼的整套編碼流程

二維碼整套編碼流程如圖4 所示[5]。

圖4 編碼流程

4 二維碼支付流程原理

4.1 二維碼支付基礎(chǔ)設(shè)施和設(shè)備

(1)智能終端及操作系統(tǒng)

智能終端包括手機(jī)、平板等一系列嵌入操作系統(tǒng)的設(shè)備,同時(shí)也是用戶使用二維碼掃碼支付的一類設(shè)備。智能終端的操作系統(tǒng)一般包含安卓、windows phone 和蘋果移動(dòng)操作系統(tǒng),操作系統(tǒng)為應(yīng)用軟件APP 提供了運(yùn)行環(huán)境,如硬件軟件支持、存儲(chǔ)空間等,同時(shí)也為應(yīng)用軟件運(yùn)行的安全提供了保障基礎(chǔ)。

(2)支付軟件

支付應(yīng)用軟件是支付系統(tǒng)的重要環(huán)節(jié)之一,主要應(yīng)用于存儲(chǔ)交易信息、賬戶信息、購(gòu)物和支付的平臺(tái)信息,它主要有認(rèn)證性、隱私性、完整性和機(jī)密性等特點(diǎn)。二維碼的讀取、支付指令以及處理結(jié)果都是通過(guò)軟件完成的,以上二維碼的特點(diǎn)能夠保證用戶的個(gè)人信息和支付信息在未授權(quán)的情況下不被盜取或泄露,在最大程度上確保了用戶支付安全。

(3)網(wǎng)絡(luò)

網(wǎng)絡(luò)設(shè)備和通道是二維碼支付的基礎(chǔ),也是必要條件。

(4)支付接入平臺(tái)

接入平臺(tái)是處理用戶軟件支付請(qǐng)求的軟件系統(tǒng),它主要包括交易系統(tǒng)、商品管理系統(tǒng)和結(jié)算系統(tǒng)等。

4.2 二維碼支付系統(tǒng)流程

支付流程是指在智能終端上的二維碼的識(shí)別、支付平臺(tái)的訪問(wèn)方式、支付平臺(tái)的接入、交易的處理以及結(jié)果的反饋等一系列操作(圖5)[6]。支付平臺(tái)的接入包括支撐系統(tǒng)、商品管理系統(tǒng)、交易系統(tǒng)、支付系統(tǒng)以及結(jié)算系統(tǒng)等操作的處理。支撐平臺(tái)包括軟件硬件、用戶的賬戶處理信息、用戶資金管理以及統(tǒng)計(jì)分析等處理。商品管理系統(tǒng)包括商品信息、用戶信息、交易信息、支付平臺(tái)的接入、交易的處理、商品的反饋等操作。交易系統(tǒng)包括訂單的管理、交易管理、支付接入等操作。結(jié)算系統(tǒng)包括支付接入、生成電子憑證、結(jié)果處理等操作。

圖5 支付流程圖

4.3 二維碼的支付分類

二維碼的支付可以分為商品二維碼和支付二維碼。商品二維碼通過(guò)二維碼的識(shí)別直接指向商品管理系統(tǒng)的商品銷售,跟支付系統(tǒng)平臺(tái)沒(méi)有直接發(fā)生關(guān)系。支付二維碼是通過(guò)應(yīng)用軟件直接接入支付平臺(tái)生成支付指令。它們的區(qū)別在于生成支付指令的環(huán)節(jié)是直接還是間接。

5 二維碼的應(yīng)用

(1)獲取數(shù)據(jù)信息

識(shí)讀設(shè)備可以獲取由小程序、資料、密碼、地圖和名片等數(shù)據(jù)生成的二維碼信息。

(2)網(wǎng)頁(yè)跳轉(zhuǎn)

可以通過(guò)掃描二維碼實(shí)現(xiàn)網(wǎng)頁(yè)的跳轉(zhuǎn)瀏覽。

(3)電商移動(dòng)支付

通過(guò)銀行或第三方支付app 掃描商品二維碼完成下單和支付。

(4)超市收銀

通過(guò)CCD 掃描器獲取商品信息并通過(guò)移動(dòng)終端支付。

(5)商品防偽溯源

通過(guò)掃描二維碼追溯從原材料的采購(gòu)過(guò)程、原材料到成品的制作過(guò)程以及成品到客戶手中的物流信息過(guò)程。

(6)名片和廣告推送

通過(guò)二維碼配送名片和廣告信息。

(7)醫(yī)學(xué)領(lǐng)域

對(duì)藥品、檢驗(yàn)和人員等信息進(jìn)行編碼可以實(shí)現(xiàn)高效管理。

6 二維碼安全對(duì)策

二維碼給人們帶來(lái)便利的同時(shí)也帶來(lái)了安全隱患,它本身是沒(méi)有安全威脅的,但是不法分子會(huì)利用二維碼鏈接病毒造成用戶損失。任何新技術(shù)的應(yīng)用都是有利有弊的,這也是互聯(lián)網(wǎng)發(fā)展的一個(gè)必經(jīng)階段,我們需要做的就是把過(guò)程中存在的風(fēng)險(xiǎn)隱患降到最低點(diǎn)。解決安全問(wèn)題的對(duì)策有很多,例如:

(1)建立健全相關(guān)法律法規(guī)和管理制度

(2)加強(qiáng)用戶安全意識(shí)和安全教育

(3)采用加密技術(shù)。

1)基于公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure)技術(shù)基礎(chǔ)之上的數(shù)字證書(shū)能夠保證信息傳輸?shù)臋C(jī)密性、真實(shí)性、完整性和不可否認(rèn)性,能夠保證信息的安全傳輸。原理是通過(guò)把需要傳輸?shù)臄?shù)字信息進(jìn)行簽名并利用用戶的公約對(duì)二維碼進(jìn)行加密,所以掃描二維碼時(shí)需要利用用戶的私鑰解密否則不能使用二維碼[1]。

2)Diffie-Hellman 密鑰交換技術(shù)解決了實(shí)際密碼學(xué)中非對(duì)稱密碼方案的密鑰分配問(wèn)題,允許通信雙方通過(guò)不安全的通信信道來(lái)傳輸密鑰而不會(huì)導(dǎo)致密鑰丟失[7]?;舅枷胧潜WC二維碼來(lái)源識(shí)別通過(guò)后才能繼續(xù)讀取二維碼中的信息,有效解決了掃描非法二維碼的問(wèn)題。

3)使用屬性加密算法對(duì)用戶定義的密碼及用戶的屬性進(jìn)行處理,保證一人一密的同時(shí),滿足不同權(quán)限用戶對(duì)不同權(quán)限輸入信息的獲取需求,防止了權(quán)限信息的私鑰的泄露,從而保證了信息的安全傳輸[8]。

4)Advanced encryption standard(高級(jí)加密標(biāo)準(zhǔn))是加密和解密使用相同密鑰的一種對(duì)稱加密算法。AES 算法是一種簡(jiǎn)單、高效和可靠的加密算法,它的數(shù)據(jù)塊和密鑰長(zhǎng)度相同,且有16 字節(jié)、24字節(jié)和32 字節(jié)三種,主要有密鑰擴(kuò)展、輪密鑰加、字節(jié)替換、行移位、列混淆等加密步驟,同時(shí)密鑰越長(zhǎng),加密輪數(shù)越多,安全性也就越強(qiáng)[9]。使用AES算法先對(duì)二維碼數(shù)據(jù)進(jìn)行加密,然后對(duì)密文進(jìn)行二維碼編碼,可以保障二維碼傳輸過(guò)程不被截獲和破譯,等需要獲取二維碼信息時(shí)再輸入與加密時(shí)相同的密鑰,從而保證了信息安全。

Rijndael 是AES 中使用的一種基本密碼算法,利用Rijndael 加密算法和SHA512 哈希函數(shù)數(shù)字簽名技術(shù)混合加密的方法,對(duì)Rijndael 第一次加密密鑰系統(tǒng)隨機(jī)分配并對(duì)系統(tǒng)隨機(jī)分配密鑰采取二次Rijndael 加密防護(hù)方法,然后通過(guò)SHA512 對(duì)二維碼內(nèi)部信息防篡改校驗(yàn),達(dá)到對(duì)二維碼信息及其加密密鑰的安全保護(hù),在生成二維碼之前實(shí)現(xiàn)了信息加密,提高了二維碼信息的安全性并達(dá)到對(duì)密鑰高效管理和對(duì)信息的保護(hù)[10]。

5)RSA 是一種能夠同時(shí)用于加密和數(shù)字簽名且使用不同的加密密鑰和解密密鑰的非對(duì)稱加密算法。RSA 的密鑰長(zhǎng)度隨著保密級(jí)別的提高而增長(zhǎng),所以其安全性很高,但在同等數(shù)據(jù)量下,因其進(jìn)行的都是大數(shù)計(jì)算,所以不論在軟件還是硬件實(shí)現(xiàn)上,加密速率一直是其缺陷[11]?;趦?yōu)化后的RSA 二維碼加密技術(shù)不僅安全性高而且加密速率有較大的提高,能夠有效保障二維碼數(shù)據(jù)信息存儲(chǔ)、傳播、識(shí)別,是一種快速簡(jiǎn)單高效的解決方案[12]。

非對(duì)稱密鑰的公鑰對(duì)外公開(kāi),私鑰個(gè)人保密存儲(chǔ),公鑰用于加密會(huì)話密鑰和驗(yàn)證數(shù)字簽名,私鑰用來(lái)解密,RSA 就是非對(duì)稱加密算法的典型代表?;诜菍?duì)稱加密技術(shù)對(duì)服務(wù)端和移動(dòng)客戶端二維碼制作識(shí)別過(guò)程進(jìn)行規(guī)范化和制度化管理,并且結(jié)合虹膜生物特征識(shí)別技術(shù)對(duì)用戶進(jìn)行實(shí)名認(rèn)證,間接實(shí)現(xiàn)數(shù)字證書(shū)與用戶物理身份綁定,從而滿足二維碼安全管理的規(guī)范要求[13]。

7 結(jié)語(yǔ)

隨著互聯(lián)網(wǎng)和移動(dòng)終端的快速發(fā)展,二維碼已經(jīng)廣泛應(yīng)用到各行各業(yè),本文在對(duì)二維碼生成原理和應(yīng)用安全進(jìn)行分析研究后發(fā)現(xiàn),二維碼的價(jià)值絕不僅僅局限于信息存儲(chǔ)、信息展示和網(wǎng)頁(yè)跳轉(zhuǎn),信息安全始終都是關(guān)注的焦點(diǎn),應(yīng)著力研究和解決二維碼應(yīng)用中存在的安全問(wèn)題,從而提高互聯(lián)網(wǎng)總體安全性能。

猜你喜歡
二進(jìn)制字符密鑰
探索企業(yè)創(chuàng)新密鑰
尋找更強(qiáng)的字符映射管理器
用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
字符代表幾
有趣的進(jìn)度
一種USB接口字符液晶控制器設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:50
二進(jìn)制在競(jìng)賽題中的應(yīng)用
消失的殖民村莊和神秘字符
一種對(duì)稱密鑰的密鑰管理方法及系統(tǒng)
淮滨县| 吴桥县| 津市市| 垦利县| 乌海市| 始兴县| 时尚| 五河县| 留坝县| 东台市| 泾川县| 荥阳市| 亚东县| 玉屏| 湖口县| 青神县| 米易县| 扶沟县| 鹿邑县| 重庆市| 亳州市| 阿尔山市| 陈巴尔虎旗| 顺昌县| 嘉荫县| 榆社县| 个旧市| 沂水县| 宿迁市| 黄骅市| 婺源县| 怀安县| 仙桃市| 陇西县| 龙江县| 中牟县| 资阳市| 舟曲县| 梓潼县| 广水市| 武城县|