一種基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法
【專利摘要】本發(fā)明涉及一種基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法,其實(shí)現(xiàn)步驟包括:HSM組的每個(gè)HSM向CA注冊(cè);用戶組的每個(gè)用戶向CA注冊(cè);單個(gè)用戶通過系統(tǒng)與單個(gè)HSM建立安全通道;單個(gè)HSM為單個(gè)用戶生成并返回?cái)?shù)字簽名。本發(fā)明通過取消系統(tǒng)對(duì)用戶的認(rèn)證、引入CA為用戶和HSM頒發(fā)數(shù)字證書、使用安全通道技術(shù)完成用戶對(duì)HSM的認(rèn)證、使用口令和安全驗(yàn)證短信的方式完成HSM對(duì)用戶的認(rèn)證和簽名內(nèi)容的確認(rèn),實(shí)現(xiàn)了一種安全有效的基于HSM的數(shù)字簽名方法,解決了【背景技術(shù)】中效率和安全性較低的問題。
【專利說明】一種基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法。
【背景技術(shù)】
[0002]硬件安全模塊(HSM)在原始定義上是一種物理上防止篡改,功能上能夠完成所需密碼算法的硬件設(shè)備。Stathis Mavrovoun1tis和Mick Ganley在2014年出版了《SecureSmart Embedded Devices,Platforms and Applicat1ns》,其中的第 17 章介紹的正是HSM,包括了基本的需求和一些常見的攻擊。該著作中的表17.3包含當(dāng)前能夠達(dá)到FIPS 140-2四級(jí)安全標(biāo)準(zhǔn)的一些HSM產(chǎn)品,包括IBM,AEP,HP等公司的成熟產(chǎn)品。隨著技術(shù)的進(jìn)步,在安全的操作環(huán)境中,硬件安全模塊可以采用虛擬化技術(shù)來實(shí)現(xiàn)。
[0003]HSM產(chǎn)品的存在為我們?cè)O(shè)計(jì)安全協(xié)議提供了新的選擇。當(dāng)考慮數(shù)字簽名時(shí),我們發(fā)現(xiàn)當(dāng)前用戶完成數(shù)字簽名大都是通過USB KEY等客戶端硬件完成。這些客戶端硬件與具有USB接口的計(jì)算設(shè)備連接,由用戶負(fù)責(zé)該計(jì)算設(shè)備上運(yùn)行環(huán)境的安全性,并在客戶端硬件中完成數(shù)字簽名。例如當(dāng)前中國工商銀行的USB KEY就是通過這種方式讓客戶簽名,對(duì)銀行的相關(guān)操作完成授權(quán)的。
[0004]然而,在移動(dòng)設(shè)備上,當(dāng)前的技術(shù)存在一些限制。首先,大多數(shù)的移動(dòng)設(shè)備并沒有提供相應(yīng)類型的USB接口,因而大部分客戶端硬件無法直接在移動(dòng)設(shè)備上使用;其次,針對(duì)移動(dòng)設(shè)備的類USB KEY設(shè)備大都是單獨(dú)的設(shè)備,如果用戶單獨(dú)攜帶,增加了丟失的風(fēng)險(xiǎn),如果由用戶存放在固定位置,會(huì)降低使用的便利性;最后,硬件設(shè)備的損耗是不可避免的問題,頻繁的插拔會(huì)引起接口損壞。總之,目前的解決方案并不適合移動(dòng)場景下的數(shù)字簽名這類應(yīng)用。
[0005]鑒于這些問題,目前出現(xiàn)了一種云端服務(wù)器為移動(dòng)設(shè)備提供簽名的技術(shù)。Orthacker,Centner和Kittl在2011年首先探討了這一問題。他們?cè)谡撐摹癚ualifiedMobile Server Signature”中討論了通過遠(yuǎn)程服務(wù)器提供有效的數(shù)字簽名的可能性。這里“有效的數(shù)字簽名”與我國《電子簽名法》中規(guī)定的幾個(gè)要素是相匹配的,即該數(shù)字簽名滿足以下幾點(diǎn)要求:
[0006](I)電子簽名制作數(shù)據(jù)用于電子簽名時(shí),屬于電子簽名人專有;
[0007](2)簽署時(shí)電子簽名制作數(shù)據(jù)僅由電子簽名人控制;
[0008](3)簽署后對(duì)電子簽名的任何改動(dòng)能夠被發(fā)現(xiàn);
[0009](4)簽署后對(duì)數(shù)據(jù)電文內(nèi)容和形式的任何改動(dòng)能夠被發(fā)現(xiàn)。
[0010]Orthacker, Centner和Kittl認(rèn)為只要服務(wù)器是在安全的運(yùn)行環(huán)境下,用戶是被強(qiáng)認(rèn)證的,用戶到簽名生成設(shè)備之間的通道是安全的,服務(wù)器在用戶授權(quán)下所生成的數(shù)字簽名也是有效的。在具體實(shí)施上,他們建議使用用戶的口令,用戶的SIM卡來完成對(duì)用戶的認(rèn)證,使用HSM來保證服務(wù)器端的安全運(yùn)行環(huán)境,HSM安裝在可控可信的系統(tǒng)中,該系統(tǒng)和用戶之間的安全通道用傳輸層安全協(xié)議(TLS)來保護(hù),SIM卡和HSM之間的通道則依賴無線網(wǎng)絡(luò)運(yùn)行商提供的安全通道來保護(hù)。在具體協(xié)議上,他們建議用戶首先通過TLS通道把自己的口令交給安裝了 HSM的系統(tǒng),由該系統(tǒng)使用其存儲(chǔ)的與用戶私鑰相關(guān)的秘密數(shù)據(jù)和用戶的口令獲得HSM加密的用戶私鑰,之后發(fā)送給HSM,HSM發(fā)送驗(yàn)證碼給用戶,當(dāng)用戶返回驗(yàn)證碼后,由HSM完成數(shù)字簽名。
[0011]Kinastowski在2013年提議把數(shù)字簽名直接做成云服務(wù)。在論文“DigitalSignature as a Cloud-based Service,,中,Kinastowski 繼承了 Orthacker, Centner 和Kittl的觀點(diǎn),認(rèn)為可以通過強(qiáng)認(rèn)證、安全通道和可控的服務(wù)器環(huán)境來完成云端的數(shù)字簽名。在具體協(xié)議上,他們使用一次性口令(OTP)來保護(hù)用戶待加密的內(nèi)容,依賴HSM的公鑰來保護(hù)用戶的口令,并由HSM直接獲得用戶加密后的文檔、口令、以及存儲(chǔ)在系統(tǒng)中的使用HSM的密鑰和用戶的口令加密的用戶私鑰,并由HSM完成數(shù)字簽名。
[0012]通過比較Orthacker,Centner和Kittl的協(xié)議和Kinastowski的協(xié)議,我們看到Orthacker, Centner和Kittl并沒有給出文檔的傳輸方式,同時(shí)過度依賴與HSM相連的系統(tǒng)的安全性,事實(shí)上,在Orthacker,Centner和Kittl的協(xié)議中,如果該系統(tǒng)是不誠實(shí)的,它完全可以獲得僅有HSM加密的用戶私鑰,并截取HSM發(fā)送的驗(yàn)證碼,從而代替用戶簽名。這意味著該系統(tǒng)在服務(wù)器簽名中是極為關(guān)鍵的元素。而Kinastowski的協(xié)議則通過把加密后的文檔,口令以及加密的私鑰全部直接交給HSM,由HSM直接完成對(duì)用戶的認(rèn)證,緩解了Orthacker,Centner和Kittl對(duì)系統(tǒng)過度依賴的問題。然而,Kinastowski的協(xié)議非常依賴用戶口令,并且該口令在用戶向系統(tǒng)認(rèn)證階段,以及用戶向HSM認(rèn)證階段都是一致的,這導(dǎo)致其協(xié)議在口令的保護(hù)方面比較脆弱。系統(tǒng)依舊能夠利用用戶的口令來讓HSM完成該用戶的數(shù)字簽名。另外,Kinastowski的協(xié)議中,用戶需要提交加密的文檔,當(dāng)文檔很大時(shí),會(huì)給用戶端的瀏覽器造成極大的負(fù)擔(dān)。
[0013]由此我們得出結(jié)論,目前人們雖然在利用強(qiáng)認(rèn)證協(xié)議、HSM和安全通道這幾個(gè)方面來完成基于云端服務(wù)器的簽名基本達(dá)成了共識(shí),卻還沒有一種安全有效的方法來基于HSM實(shí)現(xiàn)數(shù)字簽名。
【發(fā)明內(nèi)容】
[0014]本發(fā)明的目的在于提供基于遠(yuǎn)程硬件安全模塊實(shí)現(xiàn)數(shù)字簽名的方法,解決【背景技術(shù)】中用戶口令保護(hù)脆弱、瀏覽器負(fù)擔(dān)較大、缺乏安全有效的方法實(shí)現(xiàn)數(shù)字簽名的問題。
[0015]為實(shí)現(xiàn)上述目的,本發(fā)明給出以下方法:
[0016]1、該方法涉及證書權(quán)威機(jī)構(gòu)(CA)、用戶組、硬件安全模塊(HSM)組,HSM組所連接的系統(tǒng)(以下簡稱系統(tǒng))四個(gè)部分,包括以下步驟:
[0017]I) HSM組的每個(gè)HSM向CA注冊(cè)的步驟;
[0018]2)用戶組的每個(gè)用戶向CA注冊(cè)的步驟;
[0019]3)單個(gè)用戶通過系統(tǒng)與單個(gè)HSM建立安全通道的步驟;
[0020]4)單個(gè)HSM為單個(gè)用戶生成并返回?cái)?shù)字簽名的步驟。
[0021]2、每個(gè)HSM向CA注冊(cè)的步驟包括:
[0022]I)系統(tǒng)向HSM發(fā)出初始化指令,包括生成證書請(qǐng)求證書的基本信息;
[0023]2) HSM生成該HSM用于數(shù)字簽名的公/私鑰對(duì)、用于數(shù)據(jù)加密的公/私鑰對(duì)、和用于數(shù)據(jù)加密的對(duì)稱密鑰;
[0024]3) HSM將用于數(shù)字簽名的私鑰、用于數(shù)據(jù)加密的私鑰、用于數(shù)據(jù)加密的對(duì)稱密鑰存儲(chǔ)在HSM的安全存儲(chǔ)區(qū);
[0025]4)HSM使用生成證書請(qǐng)求證書的基本信息、該HSM的識(shí)別信息、用于數(shù)字簽名的公鑰、和用于數(shù)字簽名的私鑰生成用于數(shù)字簽名的證書請(qǐng)求證書;
[0026]5)HSM使用生成證書請(qǐng)求證書的基本信息、該HSM的識(shí)別信息、用于數(shù)據(jù)加密的公鑰和用于數(shù)據(jù)加密的私鑰生成用于數(shù)據(jù)加密的證書請(qǐng)求證書;
[0027]6)HSM將用于數(shù)字簽名的證書請(qǐng)求證書和用于數(shù)據(jù)加密的證書請(qǐng)求證書經(jīng)由系統(tǒng)提交給CA ;
[0028]7) CA驗(yàn)證HSM的兩個(gè)證書請(qǐng)求證書的有效性,其中任意一個(gè)無效則拒絕簽發(fā)數(shù)字證書,否則基于用于數(shù)字簽名的證書請(qǐng)求證書和CA的私鑰生成用于數(shù)字簽名的數(shù)字證書,并基于用于數(shù)據(jù)加密的證書請(qǐng)求證書和CA的私鑰生成用于數(shù)據(jù)加密的數(shù)字證書;
[0029]8) CA返回用于數(shù)字簽名的數(shù)字證書和用于數(shù)據(jù)加密的數(shù)字證書給系統(tǒng);
[0030]9)系統(tǒng)存儲(chǔ)HSM的數(shù)字證書。
[0031]3、每個(gè)用戶向CA注冊(cè)的步驟包括:
[0032]I)用戶向CA提交手機(jī)號(hào)碼,電子郵件等注冊(cè)信息;
[0033]2) CA向系統(tǒng)查詢空閑的HSM ;
[0034]3)系統(tǒng)查詢連接的HSM組,獲得空閑的HSM列表,將列表中一個(gè)HSM的用于數(shù)字簽名的數(shù)字證書和用于數(shù)據(jù)加密的數(shù)字證書經(jīng)CA轉(zhuǎn)交給用戶;
[0035]4)用戶使用HSM的用于數(shù)據(jù)加密的數(shù)字證書中的公鑰加密自己的私鑰提取口令,并把密文提交給CA ;
[0036]5)CA把用戶的手機(jī)號(hào)碼、電子郵件等注冊(cè)信息和加密的該用戶的私鑰提取口令經(jīng)由系統(tǒng)提交給對(duì)應(yīng)的HSM ;
[0037]6)該HSM首先生成用戶用于數(shù)字簽名的公/私鑰對(duì),然后把用戶的手機(jī)號(hào)碼輸入HSM的HASH算法,獲得該用戶的索引值,然后使用用戶的注冊(cè)信息、生成的索引值、用戶用于數(shù)字簽名的私鑰來生成用戶的用于數(shù)字簽名的證書請(qǐng)求證書,然后使用HSM用于數(shù)據(jù)加密的私鑰解密用戶的私鑰提取口令,然后使用密鑰生成函數(shù)把HSM用于數(shù)據(jù)加密的對(duì)稱密鑰、用戶的私鑰提取口令、和用戶的手機(jī)號(hào)碼做為輸入,輸出一個(gè)用戶私鑰加密密鑰,然后使用該用戶私鑰加密密鑰、用戶用于數(shù)字簽名的私鑰獲取加密的用戶數(shù)字簽名私鑰,最后HSM返回用戶的索引值、加密的用戶數(shù)字簽名私鑰、和用戶的用于數(shù)字簽名的證書請(qǐng)求證書給系統(tǒng),其中獲取加密的用戶數(shù)字簽名私鑰時(shí),所采用的算法是HSM對(duì)稱加密體制中的加密算法,該加密算法在實(shí)現(xiàn)上具有完整性保護(hù)的功能,例如AES-CCM算法;
[0038]7)系統(tǒng)存儲(chǔ)用戶的索引值和加密的用戶數(shù)字簽名私鑰,轉(zhuǎn)發(fā)用戶的用于數(shù)字簽名的證書請(qǐng)求證書給CA ;
[0039]8) CA基于用戶的用于數(shù)字簽名的證書請(qǐng)求證書和CA的私鑰生成用戶的用于數(shù)字簽名的數(shù)字證書,并提交給用戶;
[0040]9)用戶存儲(chǔ)用于數(shù)字簽名的數(shù)字證書;
[0041]4、單個(gè)用戶通過系統(tǒng)與單個(gè)HSM建立安全通道的步驟包括:
[0042]I)用戶向系統(tǒng)提交HSM用于數(shù)據(jù)加密的數(shù)字證書,要求與數(shù)字證書所指明的HSM建立安全通道;
[0043]2)系統(tǒng)通過用戶提交的數(shù)字證書中HSM的識(shí)別信息查詢HSM組,如果該HSM空閑,則通知用戶與該HSM建立安全通道,否則提示用戶等待并周期查詢?cè)揌SM的狀態(tài),當(dāng)可用時(shí)通知用戶與該HSM建立安全通道;
[0044]3)用戶與該HSM建立安全通道,單向認(rèn)證HSM的真實(shí)性,并生成保護(hù)數(shù)據(jù)完整性和機(jī)密性的密鑰。
[0045]5、單個(gè)HSM為單個(gè)用戶生成并返回?cái)?shù)字簽名的步驟包括:
[0046]1)HSM通過安全通道提示用戶輸入私鑰提取口令、手機(jī)號(hào)碼和待簽名內(nèi)容;其中待簽名內(nèi)容可以是完整的待簽名文檔,也可以是文檔的HASH值,或者是部分的文檔的信息和文檔的HASH值。這里的文檔可以是程序、數(shù)據(jù)塊等任意電子簽名制作數(shù)據(jù)。
[0047]2)用戶通過安全通道向HSM提交自己的私鑰提取口令、手機(jī)號(hào)碼和待簽名內(nèi)容;
[0048]3) HSM把用戶的手機(jī)號(hào)碼輸入HSM的HASH算法,獲得該用戶的索引值,提交系統(tǒng);
[0049]4)系統(tǒng)返回給HSM用戶的索引值所對(duì)應(yīng)的加密的用戶數(shù)字簽名私鑰;
[0050]5) HSM使用密鑰生成函數(shù)把HSM用于數(shù)據(jù)加密的對(duì)稱密鑰、用戶的私鑰提取口令、和用戶的手機(jī)號(hào)碼做為輸入,輸出一個(gè)用戶私鑰加密密鑰,然后使用該用戶私鑰加密密鑰、加密的用戶數(shù)字簽名私鑰解密獲取用戶的數(shù)字簽名私鑰;
[0051]6)HSM生成安全短消息,包括隨機(jī)數(shù)、本地時(shí)鐘的時(shí)間、用戶待簽名內(nèi)容的信息、和使用HSM的用于數(shù)字簽名的私鑰生成的關(guān)于該短消息內(nèi)容的數(shù)字簽名,然后發(fā)送該安全短消息給用戶;
[0052]7)用戶驗(yàn)證安全短消息的數(shù)字簽名是否有效,驗(yàn)證待簽名內(nèi)容是否正確,驗(yàn)證通過則通過安全通道提交收到的隨機(jī)數(shù),完成數(shù)字簽名確認(rèn)的操作;
[0053]8)HSM確認(rèn)隨機(jī)數(shù)的一致性,然后使用用戶的數(shù)字簽名私鑰對(duì)待簽名內(nèi)容進(jìn)行數(shù)字簽名,返回?cái)?shù)字簽名結(jié)果給用戶。
[0054]為了支持上述數(shù)字簽名方法,本發(fā)明要求硬件安全模塊在實(shí)現(xiàn)上包括以下模塊:HSM公鑰加密體制、HSM數(shù)字簽名體制、HSM對(duì)稱加密體制、HSM密鑰生成函數(shù)、HSM短消息發(fā)送模塊、HSM安全存儲(chǔ)區(qū)、HASH算法、隨機(jī)數(shù)生成算法、用戶數(shù)字簽名體制、證書請(qǐng)求證書生成算法、安全通道建立模塊、本地時(shí)鐘模塊。
[0055]本發(fā)明具有以下優(yōu)點(diǎn):
[0056]首先,用戶通過瀏覽器提交給HSM的待簽名內(nèi)容可以僅僅是HASH值,因而在需要簽名的消息過大時(shí),無需傳輸整個(gè)消息,只需要傳輸固定大小的HASH值,提高了簽名的效率。其次,用戶只需要向系統(tǒng)提交HSM的數(shù)字證書,無需提供自身的口令等信息,減少了口令的使用次數(shù),提高了口令的安全性。再次,本發(fā)明中用戶和HSM之間具有雙向的認(rèn)證關(guān)系,用戶在建立安全通道時(shí)認(rèn)證HSM,而HSM則通過用戶私鑰提取口令的有效性判斷用戶的身份。最后,本發(fā)明中HSM使用用戶的私鑰簽名之前需要得到用戶的確認(rèn)??偟膩砜矗景l(fā)明提供了一種安全有效的基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法。
[0057]本發(fā)明所提供的基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法,可以用于移動(dòng)辦公,移動(dòng)電子政務(wù),移動(dòng)電子商務(wù)等需要通過移動(dòng)設(shè)備完成符合《電子簽名法》要求的有效電子簽名的場景,要求移動(dòng)設(shè)備能夠接收短消息,能夠連接互聯(lián)網(wǎng)。
【專利附圖】
【附圖說明】
[0058]下面結(jié)合附圖和【具體實(shí)施方式】來對(duì)本發(fā)明進(jìn)行詳細(xì)的闡述。
[0059]圖1基于遠(yuǎn)程硬件安全模塊實(shí)現(xiàn)數(shù)字簽名的方法框架;
[0060]圖2HSM向CA注冊(cè)的過程示例;
[0061]圖3用戶向CA注冊(cè)的過程示例;
[0062]圖4用戶通過系統(tǒng)與HSM建立安全通道的過程示例;
[0063]圖5HSM為用戶生成數(shù)字簽名的過程示例;
[0064]圖6HSM的功能模塊示意圖
【具體實(shí)施方式】
[0065]該方案包括證書權(quán)威機(jī)構(gòu)(CA)、用戶、HSM組和系統(tǒng)這樣四個(gè)部分。具體實(shí)施時(shí)首先由HSM組的每一個(gè)HSM向CA注冊(cè);之后由用戶向CA注冊(cè);在需要生成數(shù)字簽名時(shí),用戶通過系統(tǒng)與HSM建立安全通道,然后由HSM為用戶生成數(shù)字簽名。下面以移動(dòng)辦公場景為例來說明具體實(shí)施過程。
[0066]實(shí)施例1
[0067]假設(shè)存在證書權(quán)威機(jī)構(gòu)CA,該CA提供了連接HSM組的系統(tǒng),并提供了 HSM組,用于提供云簽名服務(wù)。該CA的某個(gè)用戶,張三,是某公司的部門經(jīng)理,需要使用該項(xiàng)云簽名服務(wù)來提供有效的電子簽名,以便在外地出差時(shí)能夠處理公司的業(yè)務(wù)。
[0068]HSM組的每個(gè)HSM在本實(shí)施例中支持如下算法、體制和模塊:RSA_OAEP公鑰加密體制、符合RFC4359的數(shù)字簽名體制、AES-CCM對(duì)稱加密體制、符合RFC5869的密鑰生成函數(shù)、GSM短消息發(fā)送模塊、防篡改防探測的安全存儲(chǔ)區(qū)、HASH算法SHA-256、BBS隨機(jī)數(shù)生成算法、用戶的DSA數(shù)字簽名體制、證書請(qǐng)求證書生成算法PKCS10#、安全通道建立模塊TLS、本地時(shí)鐘。
[0069]完成數(shù)字簽名的實(shí)施過程如下:
[0070](I)CA內(nèi)部的HSM管理人員操作系統(tǒng),向HSM組的每一個(gè)HSM發(fā)出初始化命令,觸發(fā)每一個(gè)HSM向CA的注冊(cè)過程。每一個(gè)HSM在系統(tǒng)中都有一個(gè)唯一的標(biāo)識(shí),該標(biāo)識(shí)是HSM的物理地址,為了敘述方便,我們把第j個(gè)HSM的物理地址稱為id_j,如圖2所示。下面以id_j模塊為例來說明HSM向CA注冊(cè)的過程。HSM組的其它模塊采取相同的過程。
[0071](2)在系統(tǒng)觸發(fā)id_j向CA注冊(cè)后,id_j啟動(dòng)自己的HSM公鑰加密體制中的密鑰生成算法,為自己生成用于加密的公鑰pk~e_j和用于解密的私鑰sk~e_j ;啟動(dòng)自己的HSM數(shù)字簽名體制中的密鑰生成算法,為自己生成用于簽名的私鑰Sk~s_j和用于驗(yàn)證簽名的公鑰pk~s_j ;啟動(dòng)自己的HSM對(duì)稱密鑰加密體制中的密鑰生成算法,為自己生成用于對(duì)稱加密和解密的密鑰ssk_j。之后Sk~e_j,sk~s_j和ssk_j存儲(chǔ)在id_j的HSM安全存儲(chǔ)區(qū)。然后id_j模塊與HSM管理人員交互,為公鑰pk~e_j和pk~s_j按照證書請(qǐng)求證書生成算法,例如pkcs#10規(guī)范,生成證書請(qǐng)求證書,其中包含id_j這一唯一標(biāo)識(shí)符。CA得到證書請(qǐng)求證書之后,驗(yàn)證其有效性,在驗(yàn)證有效之后為id_j模塊簽發(fā)數(shù)字證書,否則拒絕簽發(fā)數(shù)字證書。假設(shè)CA為id_j模塊頒發(fā)的數(shù)字證書分別稱為Cert~e_j和Cert~S_j。這兩個(gè)數(shù)字證書保存在與HSM組相連接的系統(tǒng)中。因此,在初始化完成之后,系統(tǒng)存儲(chǔ)了 HSM組中每一個(gè)模塊的數(shù)字證書,每一個(gè)模塊中存在三個(gè)私鑰,CA為每一個(gè)模塊簽發(fā)了兩張數(shù)字證書。
[0072](3)當(dāng)用戶張三向CA申請(qǐng)?jiān)坪灻?wù)時(shí),觸發(fā)該用戶向CA的注冊(cè)過程。張三需要向CA提供自己的手機(jī)號(hào)碼,電子郵件等注冊(cè)信息,用于以后的電子簽名確認(rèn)過程。在本實(shí)施例中假設(shè)張三提供了自己的手機(jī)號(hào)碼。另外張三需要向CA提供的注冊(cè)信息還包括姓名,單位等個(gè)人信息,用于CA為張三生成數(shù)字證書。CA向系統(tǒng)請(qǐng)求空閑的HSM,并得到空閑HSM的數(shù)字證書。假設(shè)空閑的HSM為id_j,CA得到的數(shù)字證書是Cert~e_j和Cert ~s_j。CA將Cert"e_j和Cert~s_j交給張三。張三驗(yàn)證Cert~e_j和Cert~s_j的有效性,無效則放棄操作。否則保存在自己的移動(dòng)設(shè)備中。張三然后把自己的私鑰提取口令psss_z用Cert~e_j的公鑰加密,得到加密的密文C_pass = E(pk~e_j,pass_z),交給CA。CA將用戶的手機(jī)號(hào)碼、注冊(cè)信息,C_pass交給系統(tǒng),系統(tǒng)交給id_j模塊。模塊id_j啟動(dòng)用戶數(shù)字簽名體制中的密鑰生成算法,為用戶張三生成用于簽名的私鑰sk~S_Z和用于驗(yàn)證簽名的公鑰pk~s_z。然后id_j模塊啟動(dòng)HASH算法,計(jì)算用戶手機(jī)號(hào)碼的HASH值,得到Cjndex。之后id_j模塊使用用戶的注冊(cè)信息為公鑰pk~s_z按照證書請(qǐng)求證書生成算法,例如pkcS#10規(guī)范,生成證書請(qǐng)求證書,并在其中包含C_index字段。然后id_j模塊解密C_pass,得到pass_z。然后id_j啟動(dòng)HSM密鑰生成函數(shù),輸入pass_Z、ssk_j和張三的手機(jī)號(hào)碼,得到用戶私鑰加密密鑰pek_z。然后id_j模塊啟動(dòng)HSM對(duì)稱加密體制中的對(duì)稱加密算法,把pek_z作為加密密鑰,把sk~s_z作為明文,加密后得到密文C_priv。模塊id_j輸出C_priv和證書請(qǐng)求證書。系統(tǒng)存儲(chǔ)C_priv和C_index。系統(tǒng)把證書請(qǐng)求證書提交給CA。CA生成用戶關(guān)于pk"s_z的公鑰證書。
[0073](4)當(dāng)張三需要使用移動(dòng)設(shè)備生成電子簽名時(shí),張三需要打開系統(tǒng)提供的APP或者網(wǎng)頁等客戶端,用以通過系統(tǒng)向HSM請(qǐng)求數(shù)字簽名。假設(shè)張三通過網(wǎng)頁訪問系統(tǒng)的云簽名服務(wù),張三需要簽署的是一個(gè)文檔DOC。張三通過網(wǎng)頁向系統(tǒng)提交自己儲(chǔ)存的HSM的證書Cert~e_j,系統(tǒng)通過證書中的id_j確認(rèn)該模塊是否空閑,如果該模塊空閑,則通知用戶開始建立安全信道,否則用戶需要等待。用戶張三的瀏覽器與模塊id_j執(zhí)行安全通道建立協(xié)議,例如執(zhí)行TLS協(xié)議如下的密碼套件:
[0074]TLS_RSA_WITH_AES_128_CBC_SHA。
[0075]TLS協(xié)議可以保證用戶對(duì)id_j模塊的認(rèn)證,同時(shí)完成安全通道的建立,安全通道使用128比特密鑰的AES算法按照CBC的模式加密,使用SHA保證密文的完整性。
[0076](5)模塊id_j提示張三輸入手機(jī)號(hào)碼、pass_z和文檔待簽名內(nèi)容。用戶輸入自己的手機(jī)號(hào)碼、pass_z和待簽署文檔的HASH值,這些值都在安全通道中傳輸。之后HSM啟動(dòng)HASH算法,計(jì)算用戶手機(jī)號(hào)碼的HASH值,得到Cjndex。然后HSM把Cjndex提交給系統(tǒng),獲得密文C_priv。模塊id_j啟動(dòng)密鑰生成函數(shù),輸入pass_Z、ssk_j和張三的手機(jī)號(hào)碼,得到用戶私鑰加密密鑰pek_z。模塊id_j啟動(dòng)對(duì)稱解密算法,獲得用戶的私鑰Sk~S_z ;如果解密失敗,則id_j向系統(tǒng)返回錯(cuò)誤,終止簽名過程。否則模塊id_j啟動(dòng)短消息發(fā)送模塊,向用戶的手機(jī)發(fā)送安全短消息,確認(rèn)即將對(duì)某個(gè)HASH值進(jìn)行簽名,并對(duì)短消息的內(nèi)容、當(dāng)前時(shí)間和隨機(jī)數(shù),用私鑰sk~s_j計(jì)算數(shù)字簽名,一起發(fā)送給用戶。用戶張三應(yīng)當(dāng)有適當(dāng)?shù)能浖梢詸z驗(yàn)短消息的安全性,即使用pk~s_j的公鑰驗(yàn)證短消息的來源。驗(yàn)證通過后,張三確認(rèn)待簽署的HASH值和自己發(fā)送給模塊id_j的HASH值一致,然后確認(rèn)數(shù)字簽名,把隨機(jī)數(shù)通過安全通道返回給HSM的模塊id_j。當(dāng)模塊id_j收到收到用戶發(fā)送的隨機(jī)數(shù)之后,id_j使用張三的私鑰sk~s_z對(duì)DOC的HASH值進(jìn)行數(shù)字簽名,返回給用戶關(guān)于DOC的簽名值。張三的瀏覽器把該簽名附在DOC的后面,形成最終的數(shù)字簽名。
[0077]實(shí)施例2
[0078]實(shí)施例2與實(shí)施例1相同,除了步驟(3)中,用戶張三向CA提交的個(gè)人信息為電子郵件,并在后續(xù)的處理中,把用到手機(jī)號(hào)碼的計(jì)算全部更改為電子郵件地址;在步驟(5)中,用戶張三向HSM提交電子郵件地址,并在后續(xù)操作中使用電子郵件來確認(rèn)簽名,即HSM向張三的電子郵件地址發(fā)送安全電子郵件,等待用戶返回電子郵件中的隨機(jī)數(shù),確認(rèn)簽名。此時(shí)HSM可以沒有短消息發(fā)送模塊,但是需要支持電子郵件發(fā)送的功能。
[0079]實(shí)施例3
[0080]實(shí)施例3綜合了實(shí)施例1和2,同時(shí)使用用戶手機(jī)號(hào)碼和電子郵件來讓用戶確認(rèn),需要用戶輸入兩個(gè)隨機(jī)數(shù),可以提供更好的安全性,同時(shí)也要求HSM同時(shí)支持短消息發(fā)送模塊和電子郵件模塊。
[0081]實(shí)施例4
[0082]實(shí)施例4與實(shí)施例1相同,除了在步驟3中及后續(xù)步驟中,用戶向HSM提交私鑰提取口令時(shí),用的是張三的生物特征信息,例如張三的指紋信息,該指紋信息經(jīng)過數(shù)字化之后也可以作為私鑰提取口令。在后續(xù)使用私鑰提取口令的位置,全部使用的是張三的生物特征信息。
[0083]實(shí)施例5
[0084]實(shí)施例5與實(shí)施例1相同,除了在步驟5中,用戶直接向HSM提交DOC的信息,而不是HASH值。在后續(xù)操作中,用到DOC的HASH值的位置,全部用DOC本身替代。
【權(quán)利要求】
1.一種基于遠(yuǎn)程硬件安全模塊的數(shù)字簽名方法,包括證書權(quán)威機(jī)構(gòu)、用戶組、硬件安全模塊組、硬件安全模塊所連接的系統(tǒng),其特征在于包括以下步驟: 1)硬件安全模塊組的每個(gè)硬件安全模塊向證書權(quán)威機(jī)構(gòu)注冊(cè); 2)用戶組的每個(gè)用戶向證書權(quán)威機(jī)構(gòu)注冊(cè); 3)單個(gè)用戶通過所述硬件安全模塊所連接的系統(tǒng)與單個(gè)硬件安全模塊建立安全通道; 4)單個(gè)硬件安全模塊為單個(gè)用戶生成并返回?cái)?shù)字簽名。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的每個(gè)硬件安全模塊向證書權(quán)威機(jī)構(gòu)注冊(cè)的步驟包括: 1)系統(tǒng)向硬件安全模塊發(fā)出初始化指令,包括生成證書請(qǐng)求證書的基本信息; 2)硬件安全模塊生成該硬件安全模塊用于數(shù)字簽名的公/私鑰對(duì)、用于數(shù)據(jù)加密的公/私鑰對(duì)、和用于數(shù)據(jù)加密的對(duì)稱密鑰; 3)硬件安全模塊將用于數(shù)字簽名的私鑰、用于數(shù)據(jù)加密的私鑰、用于數(shù)據(jù)加密的對(duì)稱密鑰存儲(chǔ)在硬件安全模塊的安全存儲(chǔ)區(qū); 4)硬件安全模塊使用生成證書請(qǐng)求證書的基本信息、該硬件安全模塊的識(shí)別信息、用于數(shù)字簽名的公鑰、和用于數(shù)字簽名的私鑰生成用于數(shù)字簽名的證書請(qǐng)求證書; 5)硬件安全模塊使用生成證書請(qǐng)求證書的基本信息、該硬件安全模塊的識(shí)別信息、用于數(shù)據(jù)加密的公鑰和用于數(shù)據(jù)加密的私鑰生成用于數(shù)據(jù)加密的證書請(qǐng)求證書; 6)硬件安全模塊將用于數(shù)字簽名的證書請(qǐng)求證書和用于數(shù)據(jù)加密的證書請(qǐng)求證書經(jīng)由系統(tǒng)提交給證書權(quán)威機(jī)構(gòu); 7)證書權(quán)威機(jī)構(gòu)驗(yàn)證硬件安全模塊的兩個(gè)證書請(qǐng)求證書的有效性,其中任意一個(gè)無效則拒絕簽發(fā)數(shù)字證書,否則基于用于數(shù)字簽名的證書請(qǐng)求證書和證書權(quán)威機(jī)構(gòu)的私鑰生成用于數(shù)字簽名的數(shù)字證書,并基于用于數(shù)據(jù)加密的證書請(qǐng)求證書和證書權(quán)威機(jī)構(gòu)的私鑰生成用于數(shù)據(jù)加密的數(shù)字證書; 8)證書權(quán)威機(jī)構(gòu)返回用于數(shù)字簽名的數(shù)字證書和用于數(shù)據(jù)加密的數(shù)字證書給系統(tǒng); 9)系統(tǒng)存儲(chǔ)硬件安全模塊的數(shù)字證書。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的每個(gè)用戶向證書權(quán)威機(jī)構(gòu)注冊(cè)的步驟包括: 1)用戶向證書權(quán)威機(jī)構(gòu)提交手機(jī)號(hào)碼,電子郵件等注冊(cè)信息; 2)證書權(quán)威機(jī)構(gòu)向系統(tǒng)查詢空閑的硬件安全模塊; 3)系統(tǒng)查詢連接的硬件安全模塊組,獲得空閑的硬件安全模塊列表,將列表中一個(gè)硬件安全模塊的用于數(shù)字簽名的數(shù)字證書和用于數(shù)據(jù)加密的數(shù)字證書經(jīng)證書權(quán)威機(jī)構(gòu)轉(zhuǎn)交給用戶; 4)用戶使用硬件安全模塊的用于數(shù)據(jù)加密的數(shù)字證書中的公鑰加密自己的私鑰提取口令,并把密文提交給證書權(quán)威機(jī)構(gòu); 5)證書權(quán)威機(jī)構(gòu)把用戶的手機(jī)號(hào)碼、電子郵件等注冊(cè)信息和加密的該用戶的私鑰提取口令經(jīng)由系統(tǒng)提交給對(duì)應(yīng)的硬件安全模塊; 6)該硬件安全模塊首先生成用戶用于數(shù)字簽名的公/私鑰對(duì),然后把用戶的手機(jī)號(hào)碼輸入硬件安全模塊的HASH算法,獲得該用戶的索引值,然后使用用戶的注冊(cè)信息、生成的索引值、用戶用于數(shù)字簽名的私鑰來生成用戶的用于數(shù)字簽名的證書請(qǐng)求證書,然后使用硬件安全模塊用于數(shù)據(jù)加密的私鑰解密用戶的私鑰提取口令,然后使用密鑰生成函數(shù)把硬件安全模塊用于數(shù)據(jù)加密的對(duì)稱密鑰、用戶的私鑰提取口令、和用戶的手機(jī)號(hào)碼做為輸入,輸出一個(gè)用戶私鑰加密密鑰,然后使用該用戶私鑰加密密鑰、用戶用于數(shù)字簽名的私鑰獲取加密的用戶數(shù)字簽名私鑰,最后硬件安全模塊返回用戶的索引值、加密的用戶數(shù)字簽名私鑰、和用戶的用于數(shù)字簽名的證書請(qǐng)求證書給系統(tǒng); 7)系統(tǒng)存儲(chǔ)用戶的索引值和加密的用戶數(shù)字簽名私鑰,轉(zhuǎn)發(fā)用戶的用于數(shù)字簽名的證書請(qǐng)求證書給證書權(quán)威機(jī)構(gòu); 8)證書權(quán)威機(jī)構(gòu)基于用戶的用于數(shù)字簽名的證書請(qǐng)求證書和證書權(quán)威機(jī)構(gòu)的私鑰生成用戶的用于數(shù)字簽名的數(shù)字證書,并提交給用戶; 9)用戶存儲(chǔ)用于數(shù)字簽名的數(shù)字證書。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的單個(gè)用戶通過系統(tǒng)與單個(gè)硬件安全模塊建立安全通道的步驟包括: 1)用戶向系統(tǒng)提交硬件安全模塊用于數(shù)據(jù)加密的數(shù)字證書,要求與數(shù)字證書所指明的硬件安全模塊建立安全通道; 2)系統(tǒng)通過用戶提交的數(shù)字證書中硬件安全模塊的識(shí)別信息查詢硬件安全模塊組,如果該硬件安全模塊空閑,則通知用戶與該硬件安全模塊建立安全通道,否則提示用戶等待并周期查詢?cè)撚布踩K的狀態(tài),當(dāng)可用時(shí)通知用戶與該硬件安全模塊建立安全通道; 3)用戶與該硬件安全模塊建立安全通道,單向認(rèn)證硬件安全模塊的真實(shí)性,并生成保護(hù)數(shù)據(jù)完整性和機(jī)密性的密鑰。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的單個(gè)硬件安全模塊為單個(gè)用戶生成并返回?cái)?shù)字簽名的步驟包括: 1)硬件安全模塊通過安全通道提示用戶輸入私鑰提取口令、手機(jī)號(hào)碼和待簽名內(nèi)容; 2)用戶通過安全通道向硬件安全模塊提交自己的私鑰提取口令、手機(jī)號(hào)碼和待簽名內(nèi)容; 3)硬件安全模塊把用戶的手機(jī)號(hào)碼輸入硬件安全模塊的HASH算法,獲得該用戶的索引值,提交系統(tǒng); 4)系統(tǒng)返回給硬件安全模塊用戶的索引值所對(duì)應(yīng)的加密的用戶數(shù)字簽名私鑰; 5)硬件安全模塊使用密鑰生成函數(shù)把硬件安全模塊用于數(shù)據(jù)加密的對(duì)稱密鑰、用戶的私鑰提取口令、和用戶的手機(jī)號(hào)碼做為輸入,輸出一個(gè)用戶私鑰加密密鑰,然后使用該用戶私鑰加密密鑰、加密的用戶數(shù)字簽名私鑰解密獲取用戶的數(shù)字簽名私鑰; 6)硬件安全模塊生成安全短消息,包括隨機(jī)數(shù)、本地時(shí)鐘的時(shí)間、用戶待簽名內(nèi)容的信息、和使用硬件安全模塊的用于數(shù)字簽名的私鑰生成的關(guān)于該短消息內(nèi)容的數(shù)字簽名,然后發(fā)送該安全短消息給用戶; 7)用戶驗(yàn)證安全短消息的數(shù)字簽名是否有效,驗(yàn)證待簽名內(nèi)容是否正確,驗(yàn)證通過則通過安全通道提交收到的隨機(jī)數(shù),完成數(shù)字簽名確認(rèn)的操作; 8)硬件安全模塊確認(rèn)隨機(jī)數(shù)的一致性,然后使用用戶的數(shù)字簽名私鑰對(duì)待簽名內(nèi)容進(jìn)行數(shù)字簽名,返回?cái)?shù)字簽名結(jié)果給用戶。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的硬件安全模塊包括硬件安全模塊公鑰加密體制、硬件安全模塊數(shù)字簽名體制、硬件安全模塊對(duì)稱加密體制、硬件安全模塊密鑰生成函數(shù)、硬件安全模塊短消息發(fā)送模塊、硬件安全模塊安全存儲(chǔ)區(qū)、HASH算法、隨機(jī)數(shù)生成算法、用戶數(shù)字簽名體制、證書請(qǐng)求證書生成算法、安全通道建立模塊、本地時(shí)鐘模塊。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述的待簽名內(nèi)容包括待簽名文檔的HASH 值。
【文檔編號(hào)】H04L9/32GK104486087SQ201410849864
【公開日】2015年4月1日 申請(qǐng)日期:2014年12月23日 優(yōu)先權(quán)日:2014年12月23日
【發(fā)明者】田海博, 方乃正 申請(qǐng)人:中山大學(xué)