本發(fā)明涉及二維碼信息處理領(lǐng)域,特別是一種基于二維碼的信息隱藏方法。
背景技術(shù):
當(dāng)前,二維碼已廣泛應(yīng)用于人們生產(chǎn)、生活的各個領(lǐng)域。由于二維碼的傳播和識讀十分方便,如果沒有采取必要的安全措施,二維碼中攜帶的敏感關(guān)鍵信息極易泄露。如某些地方推出的老年人防走失二維碼,包含老人身份證號、子女的聯(lián)系電話等敏感信息,但是卻沒有采取任何安全措施。
目前,針對二維碼中的秘密信息,有如下安全技術(shù)或手段:如火車票二維碼中對乘客信息經(jīng)過了加密處理;在專利“一種基于信息隱藏的手機(jī)二維碼安全使用方法”中,以秘密口令為密鑰對秘密信息進(jìn)行變換,提取數(shù)據(jù)信息需輸入正確的口令。以上兩種方法其實(shí)質(zhì)都是對秘密信息進(jìn)行變換的一種加密技術(shù),普通用戶會讀出一些難以解讀的字符串,這些字符串容易引起攻擊者的注意。在專利“一種基于信息隱藏的圖像二維碼及其生成方法和系統(tǒng)”中,將數(shù)據(jù)信息嵌入到宿主圖像中,構(gòu)成圖像二維碼。這是一種將二維碼圖像嵌入、隱藏到其他圖像中的方法,而非在二維碼中隱藏信息。
因此,為了保障二維碼中秘密信息的安全性;需要一種能對二維碼中普通信息和秘密信息進(jìn)行信息隱藏的方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提出一種能對二維碼中普通信息和秘密信息進(jìn)行信息隱藏的方法,該方法保障了二維碼中信息的安全。
本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:
本發(fā)明提供的基于二維碼的信息隱藏方法,包括以下步驟:
1)對普通信息進(jìn)行處理得到普通信息碼字序列;對秘密信息進(jìn)行處理得到秘密信息碼字序列;
2)將秘密信息碼字序列通過嵌入加密算法嵌入到普通信息碼字序列中得到載密數(shù)據(jù);
3)將載密數(shù)據(jù)生成二維碼;將二維碼以圖像形式設(shè)置于產(chǎn)品上;
4)確定獲取二維碼的對象身份,如果是需要獲取普通信息的用戶,則通過掃碼器掃碼得到載密數(shù)據(jù);并將載密數(shù)據(jù)經(jīng)過加密處理得到普通碼字序列,并將普通碼字序列還原出普通信息;
5)如果是需要獲取秘密信息的用戶,則通過掃碼器掃碼得到載密數(shù)據(jù),并將載密數(shù)據(jù)進(jìn)行嵌入解密算法提取出秘密信息碼字序列,然后將秘密信息碼字序列還原出秘密信息。
進(jìn)一步,所述嵌入加密算法的具體步驟如下:
S21:將秘密信息碼字序列按照各預(yù)設(shè)嵌入模式依次插入普通信息碼字序列的序列位中形成嵌入碼序列;
S22:計算嵌入碼字序列與普通信息碼字序列被嵌入位位的數(shù)據(jù)改變率;
S23:選擇改變率最小的嵌入模式將秘密信息碼字嵌入到普通信息碼字序列中,形成載密數(shù)據(jù)。
進(jìn)一步,所述嵌入解密算法的具體步驟如下:
S51:從二維碼中獲取載密數(shù)據(jù);
S52:對載密數(shù)據(jù)進(jìn)行糾錯,秘密信息碼字序列會被當(dāng)作錯誤進(jìn)行糾正,從而恢復(fù)出普通信息;
S53:再分別按照所有預(yù)設(shè)的嵌入模式從載密數(shù)據(jù)中提取出秘密信息碼字序列;
S54:按以下公式對預(yù)設(shè)嵌入模式的提取結(jié)果進(jìn)行評分:
嵌入模式提取結(jié)果評分公式:S=k1×BER1+k2×BER2+x;
其中,S是提取結(jié)果評分,k1和k2是常數(shù);BER1用于將直接提取出的秘密信息序列使用糾錯碼恢復(fù),BER1表示秘密信息序列錯誤的bit數(shù)/秘密信息序列總bit數(shù);BER2用于將載密數(shù)據(jù)使用糾錯碼進(jìn)行恢復(fù),BER2表示非嵌入位錯誤的bit數(shù)/非嵌入位數(shù)據(jù)總bit數(shù);x為模式一致因子;
S55:選擇提取結(jié)果評分分值最低者作為嵌入模式;
S56:按照選取的嵌入模式從載密數(shù)據(jù)中提取出秘密信息碼字序列,再對秘密信息碼字序列進(jìn)行糾錯和解密,最終得到秘密信。
進(jìn)一步,所述x=0或者c的選擇是按照以下步驟進(jìn)行的:
S541:按照各預(yù)設(shè)的嵌入模式從載密數(shù)據(jù)中提出秘密信息碼字序列;
S542:將普通信息碼字序列與提取的秘密信息碼字序列重復(fù)S21-S23步驟;
S543:將S21-S23步驟選取的嵌入模式與提取秘密信息碼字序列所使用的嵌入模式進(jìn)行比較;如果兩者一致,則x取0,否則取c。
進(jìn)一步,還包括以下步驟:
將秘密信息碼字序列長度及嵌入模式的序號嵌入到二維碼碼字的補(bǔ)齊碼區(qū)域中。
由于采用了上述技術(shù)方案,本發(fā)明具有如下的優(yōu)點(diǎn):
本發(fā)明提供的二維碼信息隱藏方法,將秘密信息嵌入到普通信息后,保障了二維碼中秘密信息的安全性;普通用戶只能識讀普通信息,特殊用戶兩者都可以識讀,兩者互不干擾,避免秘密信息因加密產(chǎn)生難以解讀的字符串,從而引起攻擊者的懷疑;普通信息和秘密信息之間通建立函數(shù)映射關(guān)系(如hash變換),特殊用戶可以利用這種映射關(guān)系對普通信息的真?zhèn)芜M(jìn)行校驗;載有秘密信息的二維碼既能以數(shù)字圖像形式傳播,也能以印刷圖像形式傳播,應(yīng)用場景廣泛。
本發(fā)明的其他優(yōu)點(diǎn)、目標(biāo)和特征在某種程度上將在隨后的說明書中進(jìn)行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實(shí)踐中得到教導(dǎo)。本發(fā)明的目標(biāo)和其他優(yōu)點(diǎn)可以通過下面的說明書來實(shí)現(xiàn)和獲得。
附圖說明
本發(fā)明的附圖說明如下。
圖1為二維碼信息隱藏及提取步驟流程圖。
圖2為隨機(jī)嵌入位置算法圖。
圖3為無秘密信息的二維碼。
圖4為隱藏有秘密信息的二維碼。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。
實(shí)施例1
本實(shí)施例提供的基于二維碼的信息隱藏方法,利用傳播廣泛的二維碼作為信息隱藏的載體,應(yīng)用場景廣泛。如在商品防偽溯源領(lǐng)域,為每一件產(chǎn)品分配一個唯一的編號,將該編號作為秘密信息隱藏在產(chǎn)品的普通信息中(普通信息包括產(chǎn)品品名、產(chǎn)地、出廠日期等)。普通用戶可以獲取產(chǎn)品普通信息而不能查看產(chǎn)品編號,只有產(chǎn)品監(jiān)察員才能查看產(chǎn)品的編號。如養(yǎng)老領(lǐng)域,制作防走失二維碼,將老人的一些基本情況,如姓名、可年齡、過往病史等公開,而將老人身份證號、子女聯(lián)系方式等敏感數(shù)據(jù)作為秘密信息隱藏。普通用戶可以獲取老人基本信息,志愿者或者管理員可以獲取子女聯(lián)系方式等秘密信息,方便和子女聯(lián)系。
本實(shí)施例的實(shí)現(xiàn)原理是:首先利用二維碼糾錯編碼產(chǎn)生的冗余性,將秘密信息編碼嵌入到普通信息的編碼序列中,生成藏有秘密信息的載密二維碼;然后普通用戶掃描二維碼僅可獲取普通信息,而嵌入的秘密信息則會被當(dāng)作傳播過程中產(chǎn)生的誤碼而被糾正被忽略。其次特殊用戶可通過嵌入位分析提取出秘密信息的碼字序列,再經(jīng)過糾錯、解密、譯碼等過程恢復(fù)出秘密信息。本實(shí)施例提供的方法適用于所有使用了糾錯編碼的二維碼,如PDF417、QR Code等。
如圖所示,本實(shí)施例提供的基于二維碼的信息隱藏方法,包括以下步驟:
1)對普通信息進(jìn)行處理得到普通信息碼字序列;對秘密信息進(jìn)行處理得到秘密信息碼字序列;
2)將秘密信息碼字序列通過嵌入加密算法嵌入到普通信息碼字序列中得到載密數(shù)據(jù);
3)將載密數(shù)據(jù)生成二維碼;將二維碼以圖像形式設(shè)置于產(chǎn)品上;
4)確定獲取二維碼的對象身份,如果是需要獲取普通信息的用戶;即普通用戶,則通過掃碼器掃碼得到載密數(shù)據(jù);并將載密數(shù)據(jù)經(jīng)過加密處理得到普通碼字序列,并將普通碼字序列還原出普通信息;
5)如果是需要獲取秘密信息的用戶,即特殊用戶,則通過掃碼器掃碼得到載密數(shù)據(jù),并將載密數(shù)據(jù)進(jìn)行嵌入解密算法提取出秘密信息碼字序列,然后將秘密信息碼字序列還原出秘密信息。
所述嵌入加密算法的具體步驟如下:
S21:將秘密信息碼字序列按照各預(yù)設(shè)嵌入模式依次插入普通信息碼字序列的序列位中形成嵌入碼序列;
嵌入模式有8種或更多。其中,4種固定嵌入模式,4種隨機(jī)嵌入模式。固定嵌入模式是指秘密數(shù)據(jù)的嵌入位置是固定的。但固定位置嵌入可能會導(dǎo)致誤碼率過大等問題,因此引入隨機(jī)嵌入模式。隨機(jī)嵌入模式是指秘密數(shù)據(jù)的嵌入位置是隨機(jī)的。隨機(jī)嵌入位置由隨機(jī)算法產(chǎn)生的隨機(jī)數(shù)映射而來,而隨機(jī)算法的種子則由普通信息變換而成。
S22:計算嵌入碼字序列與普通信息碼字序列被嵌入位的數(shù)據(jù)改變率;
S23:選擇改變率最小的嵌入模式將秘密信息碼字嵌入到普通信息碼字序列中,形成載密數(shù)據(jù)。
所述嵌入解密算法的具體步驟如下:
S51:從二維碼中獲取載密數(shù)據(jù);
S52對載密數(shù)據(jù)進(jìn)行糾錯,秘密信息碼字序列會被當(dāng)作錯誤進(jìn)行糾正,從而恢復(fù)出普通信息;按照預(yù)設(shè)嵌入模式分別對載密數(shù)據(jù)提取普通信息碼字提取序列和秘密信息碼字提取序列;
S53:再分別按照所有預(yù)設(shè)的嵌入模式從載密數(shù)據(jù)中提取出秘密信息碼字序列;
S54:按以下公式對各預(yù)設(shè)嵌入模式的提取結(jié)果進(jìn)行評分:
嵌入模式提取結(jié)果評分公式:S=k1×BER1+k2×BER2+x;
其中,S是提取結(jié)果評分,k1和k2是常數(shù),BER1代表秘密信息碼字提取序列的誤碼率;BER2代表非嵌入位數(shù)據(jù)的誤碼率;x=0或者c;
BER1:將直接提取出的秘密信息序列使用糾錯碼恢復(fù),BER1=秘密信息序列錯誤的bit數(shù)/秘密信息序列總bit數(shù)
BER2:將載密數(shù)據(jù)使用糾錯碼進(jìn)行恢復(fù),BER2=非嵌入位錯誤的bit數(shù)/非嵌入位數(shù)據(jù)總bit數(shù)
x為模式一致因子;x=0或者c;
S55:選擇提取結(jié)果評分分值最低者作為嵌入模式;
S56:按照選取的嵌入模式從載密數(shù)據(jù)中提取出秘密信息碼字序列,再對秘密信息碼字序列進(jìn)行糾錯和解密,最終得到秘密信息。
所述x=0或者c的選擇是按照以下步驟進(jìn)行的:
S541:按照各預(yù)設(shè)的嵌入模式從載密數(shù)據(jù)中提出秘密信息碼字序列;
S542:將普通信息碼字序列與提取的秘密信息碼字序列重復(fù)S21-S23步驟。
S543:將S21-S23步驟選取的嵌入模式與提取秘密信息碼字序列所使用的嵌入模式進(jìn)行比較。如果兩者一致,則x取0,否則取c。
本實(shí)施例提供的模式一致因子是根據(jù)普通信息碼字提取序列和秘密信息碼字提取序列獲取對應(yīng)的秘密提取信息和普通提取信息;然后將秘密信息碼字提取序列通過嵌入加密算法嵌入到普通信息碼字提取序列中得到載密提取數(shù)據(jù);最后比較載密提取數(shù)據(jù)和載密數(shù)據(jù)是否相同;如果相同,則x取0,否則取c。
將秘密信息碼字序列長度及嵌入模式的序號等重要信息嵌入到二維碼碼字的補(bǔ)齊碼區(qū)域中。
實(shí)施例2
如圖1所示,本實(shí)施例提供的二維碼信息隱藏及提取步驟流程如下:
1)普通信息經(jīng)過數(shù)據(jù)分析、數(shù)據(jù)編碼、糾錯編碼等過程后得到普通信息碼字序列;秘密信息經(jīng)過加密以及糾錯編碼后,得到秘密信息碼字序列。
2)秘密信息碼字通過嵌入算法選擇合適的嵌入位置嵌入到普通信息碼字序列中,得到載密數(shù)據(jù)。
嵌入算法的作用是對秘密信息和普通信息進(jìn)行分析,選擇適合的嵌入模式,并進(jìn)行嵌入。嵌入模式有8種或更多。其中,4種固定嵌入模式,4種隨機(jī)嵌入模式。固定嵌入模式是指秘密數(shù)據(jù)的嵌入位置是固定的。但固定位置嵌入可能會導(dǎo)致誤碼率過大等問題,因此引入隨機(jī)嵌入模式。隨機(jī)嵌入模式是指秘密數(shù)據(jù)的嵌入位置是隨機(jī)的。隨機(jī)嵌入位置由隨機(jī)算法產(chǎn)生的隨機(jī)數(shù)映射而來,而隨機(jī)算法的種子則由普通信息變換而成。
如圖2所示,圖2為隨機(jī)嵌入位置算法圖,以下以固定嵌入模式為例說明秘密信息的嵌入過程:
假設(shè)固定嵌入模式1為在每8位普通數(shù)據(jù)的首位嵌入1位秘密數(shù)據(jù)。普通信息碼字序列為11011111 10111000 00000010 11010000,秘密信息碼字序列為0101。嵌入后,載密數(shù)據(jù)的碼字序列為01011111 10111000 00000010 11010000。
嵌入的碼字序列為0101,普通碼字序列對應(yīng)位置的原始數(shù)據(jù)為1101,嵌入后有1位數(shù)據(jù)發(fā)生了改變。故嵌入位數(shù)據(jù)改變率為1/4=0.25,非嵌入位數(shù)據(jù)改變率為0/28=0。
嵌入模式選擇的依據(jù)是嵌入位數(shù)據(jù)改變率的大小,改變率小者優(yōu)先;如果有多種嵌入模式嵌入位改變率并列最小,則選擇編號靠前的嵌入模式。
3)載密數(shù)據(jù)生成二維碼后以數(shù)字圖像或印刷圖像的形式進(jìn)行傳播。
4)普通用戶使用普通掃碼器掃碼后,得到載密數(shù)據(jù)。載密數(shù)據(jù)經(jīng)過糾錯(秘密信息被當(dāng)作錯誤糾正)得到普通碼字序列,普通碼字序列經(jīng)過譯碼等變換后還原出普通信息。
5)需要獲取秘密信息的用戶采用本實(shí)施例提供的基于二維碼的信息隱藏方法來進(jìn)行掃碼后,得到載密數(shù)據(jù)。載密數(shù)據(jù)通過嵌入位分析算法,提取出秘密信息碼字序列,再經(jīng)過糾錯、解密等過程還原出秘密信息。
嵌入位分析算法是分析編碼方采用的何種嵌入模式。首先,分別按8種嵌入模式提取出“秘密信息的碼字序列”;其次,對提取的“秘密信息碼字序列”和載密數(shù)據(jù)進(jìn)行糾錯;再次,恢復(fù)出“秘密信息”和普通信息;最后,按以下公式對各嵌入模式的提取結(jié)果進(jìn)行評分,分值最低者入選,如果多個嵌入模式評分并列最低,選取編號靠前者。
嵌入模式提取結(jié)果評分公式:S=k1×BER1+k2×BER2+x;
其中,S是提取結(jié)果評分,k1和k2是常數(shù),BER1和BER2分別代表“秘密信息的碼字序列”的誤碼率和非嵌入位數(shù)據(jù)的誤碼率。x=0或者c,將恢復(fù)出的“秘密信息”和普通信息重復(fù)步驟2,如果步驟2選擇嵌入模式與提取“秘密信息”所使用的嵌入模式一致,則x取0,否則取c。
例如,k1取2,k2取1,c取0.5。用嵌入模式1“秘密信息的碼字序列”誤碼率為0.1,非嵌入位數(shù)據(jù)誤碼率為0.15,重復(fù)步驟2選取的嵌入模式為模式2,則嵌入模式1的提取結(jié)果評分為:2×0.1+1×0.15+0.5=0.85。
為了便于準(zhǔn)確的提取出秘密信息,可以將秘密信息長度及嵌入模式編號等重要信息嵌入到二維碼碼字的其他部分,如補(bǔ)齊碼區(qū)域中。
以下是沒有嵌入秘密信息的二維碼和嵌入了秘密信息的二維碼之間的比對。
圖3為無秘密信息的二維碼;普通信息:
Name:Daping Dou;
Birth Year:1950;
Past Medical History:cardiopathy.Nitroglycerin in his left packet,one pill enough??;
Home:No.133 Chongwen Road Huangjueya town Nanan District Chongqing City。
圖4為隱藏有秘密信息的二維碼;秘密信息:His son:Mr.Dou 13912345678。
最后說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的保護(hù)范圍當(dāng)中。