一種軟密鑰系統(tǒng)及實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于智能移動(dòng)終端或PC的軟密鑰的設(shè)計(jì)方法,適用于金融,交通、商業(yè)、酒店、旅游、航空等領(lǐng)域,或者其他需要使用加密和認(rèn)證的領(lǐng)域。
【背景技術(shù)】
[0002]隨著經(jīng)濟(jì)的不斷發(fā)展,科技的不斷進(jìn)步,特別是IC行業(yè)的飛速發(fā)展和通訊技術(shù)的日新月異,互聯(lián)網(wǎng)技術(shù)得到極大的普及,遍及人們?nèi)粘9ぷ骱蜕畹母鱾€(gè)領(lǐng)域,于此同時(shí)互聯(lián)網(wǎng)金融服務(wù)得到了爆炸式的發(fā)展。與此同時(shí),不得不面臨一個(gè)新的問(wèn)題,如何確?;ヂ?lián)網(wǎng)信息的安全,特別是涉及資金以及個(gè)人信息的互聯(lián)網(wǎng)金融安全。互聯(lián)網(wǎng)是一個(gè)開(kāi)放的網(wǎng)絡(luò),通過(guò)普通的技術(shù)手段,很容易獲得個(gè)人信息以及資金信息。對(duì)于新興的移動(dòng)互聯(lián)網(wǎng),這個(gè)問(wèn)題更加明顯,因?yàn)橐苿?dòng)互聯(lián)網(wǎng)不可能采用專(zhuān)線(xiàn)的方式與金融機(jī)構(gòu)對(duì)接,現(xiàn)有的加密方式基本上都是軟件加密,終端實(shí)際應(yīng)用中,會(huì)被無(wú)意中植入大量的APP(Applicat1n第三方應(yīng)用軟件),這些APP的安全等級(jí)良莠不齊,很容易被木馬病毒利用,從而獲取個(gè)人信息以及資金信息,并且有可能會(huì)出現(xiàn)一些資金竊取和泄漏隱私行為。
[0003]目前在互聯(lián)網(wǎng)金融領(lǐng)域,保護(hù)個(gè)人信息和資金安全最常用最有效的方法是使用U盾,即存有客戶(hù)密鑰證書(shū)的USBkey,客戶(hù)密鑰證書(shū)內(nèi)容包括證書(shū)編號(hào),有效期,密鑰,加解密算法描述,數(shù)字簽名算法描述以及證書(shū)的數(shù)字簽名認(rèn)證等。USBkey除了存放客戶(hù)密鑰證書(shū),還具有加、解密,數(shù)字簽名和驗(yàn)簽功能。由于USBkey的密鑰只能在USBkey內(nèi)部使用,不能被外部設(shè)備讀取,因此具有很好的安全性和保密性。但是傳統(tǒng)的U盾,即USB硬Key在新興的基于個(gè)人智能移動(dòng)終端的互聯(lián)網(wǎng)金融業(yè)務(wù)中應(yīng)用很少,主要原因是在移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下,U盾的攜帶和使用非常不便,用戶(hù)使用手機(jī)進(jìn)行線(xiàn)下或線(xiàn)上的交易時(shí),需要同時(shí)插USBkey,很不方便。但如果完全使用軟件對(duì)互聯(lián)網(wǎng)傳遞的信息進(jìn)行加、解密和數(shù)字簽名與簽名驗(yàn)證存在的最大問(wèn)題是密鑰如何存放,一旦密鑰被木馬之類(lèi)的程序竊取,信息的安全性就無(wú)從談起了。
【發(fā)明內(nèi)容】
[0004]基于上述需求,本發(fā)明提出了一種軟密鑰系統(tǒng)及實(shí)現(xiàn)方法,通過(guò)軟件實(shí)現(xiàn)U盾功能同時(shí)又保證客戶(hù)密鑰證書(shū)內(nèi)容安全。
[0005]為達(dá)上述的目的及功效,本發(fā)明采用以下技術(shù)內(nèi)容:
[0006]一種軟密鑰系統(tǒng),包括如下功能組塊:
[0007]一個(gè)密鑰證書(shū)管理子系統(tǒng):負(fù)責(zé)下載、隨機(jī)存儲(chǔ)和讀取用戶(hù)密鑰證書(shū),其中用戶(hù)密鑰證書(shū)存放用戶(hù)在密鑰系統(tǒng)中的標(biāo)識(shí)、密鑰、有效期、加解密算法描述、數(shù)字簽名算法描述以及證書(shū)的數(shù)字簽名認(rèn)證;用戶(hù)密鑰證書(shū)使用口令或者指紋加密;所述密鑰證書(shū)管理子系統(tǒng)包括密鑰證書(shū)保密存儲(chǔ)模塊和密鑰證書(shū)讀取模塊;
[0008]所述密鑰證書(shū)保密存儲(chǔ)模塊:負(fù)責(zé)在應(yīng)用程序下載用戶(hù)密鑰證書(shū)之后將證書(shū)保密存儲(chǔ);包括將一個(gè)完整的證書(shū)文件拆分為多個(gè)文件,并在每個(gè)文件的頭部和尾部插入隨機(jī)數(shù)量的隨機(jī)比特做為干擾,將上述文件隨機(jī)存放于flash或磁盤(pán)的多個(gè)目錄中;
[0009]所述密鑰證書(shū)讀取模塊:負(fù)責(zé)在上層應(yīng)用需要調(diào)用用戶(hù)密鑰證書(shū)進(jìn)行加、解密和數(shù)字簽名產(chǎn)生和驗(yàn)證時(shí)讀取保密存儲(chǔ)的密鑰證書(shū);
[0010]一個(gè)密鑰子系統(tǒng):負(fù)責(zé)對(duì)口令或者指紋加密的密鑰證書(shū)使用用戶(hù)口令或者指紋解密、驗(yàn)證密鑰證書(shū)數(shù)字簽名、提取密鑰證書(shū)的私鑰、獲得通信對(duì)方的公鑰;
[0011]一個(gè)加解密算法子系統(tǒng):負(fù)責(zé)根據(jù)密鑰子系統(tǒng)輸出的本方私鑰和對(duì)方公鑰,實(shí)現(xiàn)保密通信中的各種非對(duì)稱(chēng)加、解密和數(shù)字簽名、驗(yàn)簽工作;一旦本方私鑰完成使用,立刻在存放私鑰內(nèi)存中寫(xiě)入隨機(jī)數(shù)并將其釋放。
[0012]本發(fā)明另采用以下技術(shù)內(nèi)容來(lái)達(dá)到上述的目的及功效:
[0013]一種軟密鑰的實(shí)現(xiàn)方法,包括如下步驟:
[0014]I)對(duì)密鑰證書(shū)進(jìn)行保密存儲(chǔ),包括步驟1-1?1-12 ;1_1)讀取上層應(yīng)用程序提供的口令或者指紋加密后的用戶(hù)密鑰證書(shū);1_2)使用操作系統(tǒng)自帶的隨機(jī)數(shù)發(fā)生器產(chǎn)生一個(gè)隨機(jī)數(shù),作為模塊內(nèi)部偽隨機(jī)序列的種子;1-3)將用戶(hù)密鑰證書(shū)文件拆分成相等長(zhǎng)度的N個(gè)文件,N取5?10 ;1-4)使用模塊內(nèi)部偽隨機(jī)序列和步驟1-2中得到的種子,產(chǎn)生2XN個(gè)偽隨機(jī)數(shù),將2XN個(gè)偽隨機(jī)數(shù)對(duì)MaxRandByteLength取模得到在N個(gè)密鑰證書(shū)文件內(nèi)容的頭和尾插入用于干擾的隨機(jī)比特?cái)?shù)量RandByteLength[2N] ;1_5)使用操作系統(tǒng)自帶的隨機(jī)數(shù)發(fā)生器,隨機(jī)產(chǎn)生2 X N組長(zhǎng)度分別為RandByteLength [η] (η= I?2Ν)的隨機(jī)Byte ;1-6)將2ΧΝ組隨機(jī)Byte插入N個(gè)用戶(hù)密鑰證書(shū)文件的頭和尾作為干擾比特;1_7)使用模塊內(nèi)部偽隨機(jī)序列產(chǎn)生N個(gè)隨機(jī)數(shù)作為隨機(jī)密鑰,將加干擾比特后的N個(gè)用戶(hù)密鑰證書(shū)文件使用N個(gè)隨密鑰進(jìn)行加密;1-8)使用模塊內(nèi)部偽隨機(jī)序列,再產(chǎn)生N個(gè)隨機(jī)數(shù),將這N個(gè)隨機(jī)數(shù)映射為字母和數(shù)字,將這N組隨機(jī)字母與數(shù)字的組合作為N個(gè)戶(hù)密鑰證書(shū)文件的文件名;1_9)收集可存放N個(gè)加擾后的密鑰證書(shū)文件的目錄,搜索操作系統(tǒng)目錄格式,找到系統(tǒng)目錄所在位置;1_10)使用模塊內(nèi)部偽隨機(jī)序列,再產(chǎn)生N個(gè)隨機(jī)數(shù),將這N個(gè)隨機(jī)數(shù)映射為N個(gè)文件存放目錄,這些文件存放目錄取自步驟1-9 ;1-11)將N個(gè)加干擾比特和加密后的密鑰證書(shū)文件使用步驟1-8產(chǎn)生的隨機(jī)文件名依次命名,并根據(jù)步驟1-10產(chǎn)生的路徑將這些證書(shū)文件依次存放;1_12)將步驟1-2得到的內(nèi)部偽隨機(jī)序列種子使用用戶(hù)口令或者指紋加密后以文件形式保存在本地目錄;
[0015]2)對(duì)密鑰證書(shū)進(jìn)行讀取,包括步驟2-1?2-9 ;2_1)使用用戶(hù)口令或者指紋解密本地存儲(chǔ)的偽隨機(jī)序列種子;2-2)使用模塊內(nèi)部偽隨機(jī)序列和2-1中得到的種子,產(chǎn)生2 X N個(gè)偽隨機(jī)數(shù),將2 X N個(gè)偽隨機(jī)數(shù)對(duì)MaxRandByteLength取模得到在N個(gè)密鑰證書(shū)文件內(nèi)容的頭和尾插入的隨機(jī)干擾比特的數(shù)量RandByteLength[2N] ;2_3)使用模塊內(nèi)部偽隨機(jī)序列產(chǎn)生N個(gè)隨機(jī)數(shù)得到密鑰證書(shū)文件的加密密鑰;2-4)使用模塊內(nèi)部偽隨機(jī)序列產(chǎn)生N個(gè)隨機(jī)數(shù),映射字母和數(shù)字得到密鑰證書(shū)文件的文件名;2-5)使用模塊內(nèi)部偽隨機(jī)序列產(chǎn)生N個(gè)隨機(jī)數(shù),映射目錄得到密鑰證書(shū)文件的依次存放目錄;2-6)使用步驟2-4得到的密鑰證書(shū)文件名和步驟2-5得到的密鑰證書(shū)文件存放目錄讀出密鑰證書(shū)文件;2-7)使用步驟2-3得到密鑰對(duì)拆散的密鑰證書(shū)文件解密;2-8)使用步驟2-2得到RandByteLength [2N]去除拆散的密鑰證書(shū)文件中頭和尾的干擾比特;2-9)將拆散的密鑰證書(shū)復(fù)原提交給密鑰子系統(tǒng);
[0016]3)獲取密鑰,包括步驟3-1?3-3 ;3_1)使用用戶(hù)口令或者指紋解密密鑰證書(shū);3-2)對(duì)密鑰證書(shū)數(shù)字簽名和有效期進(jìn)行驗(yàn)證;3-3)讀取本方的私鑰,如果是類(lèi)似對(duì)稱(chēng)或者非對(duì)稱(chēng)系統(tǒng)的公、私鑰非對(duì)稱(chēng)加密系統(tǒng),則根據(jù)通信對(duì)方的標(biāo)識(shí)從第三方CA中心或直接由公鑰矩陣映射得到對(duì)方的公鑰;
[0017]4)對(duì)密鑰進(jìn)行加解密:根據(jù)密鑰子系統(tǒng)輸出的本方私鑰和對(duì)方公鑰,實(shí)現(xiàn)保密通信中的非對(duì)稱(chēng)加、解密和數(shù)字簽名、驗(yàn)簽工作;一旦本方私鑰完成使用,立刻在存放私鑰內(nèi)存中寫(xiě)入隨機(jī)數(shù)并將其釋放。
[0018]本發(fā)明至少具有以下有益效果:
[0019]本發(fā)明在使用時(shí)作為后臺(tái)軟件運(yùn)行,相對(duì)常用的U盾“硬密鑰”,無(wú)需外插硬件,具有使用便捷,成本低廉的特點(diǎn),同時(shí)通過(guò)對(duì)密鑰證書(shū)的拆分、隨機(jī)加干擾比特、隨機(jī)加密和隨機(jī)命名存放的方法,確保了密鑰證書(shū)的安全性,通過(guò)使用防反匯編竊取源碼技術(shù)基本杜絕了在軟件運(yùn)行時(shí)通過(guò)內(nèi)存獲取密鑰證書(shū)中私鑰的可能性。
[0020]本發(fā)明的其他目的和優(yōu)點(diǎn)可以從本發(fā)明所揭露的技術(shù)內(nèi)容得到進(jìn)一步的了解。為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例并配合所附圖式作詳細(xì)說(shuō)明如下。
【附圖說(shuō)明】
[0021]圖1是本發(fā)明中的軟密鑰系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0022]本發(fā)明揭示之內(nèi)容涉及一種通過(guò)軟件實(shí)現(xiàn)的密鑰系統(tǒng),其主要技術(shù)特點(diǎn)在于,相對(duì)于U盾方案需要使用額外硬件即“硬密鑰”,本發(fā)明可稱(chēng)為“軟密鑰”。本發(fā)明通過(guò)軟件實(shí)現(xiàn),成本低廉;使用時(shí)終端無(wú)需鏈接