對用戶身份進行校驗,如果失敗,流程結束,否則認為具有簽名使用權,進行下一步驟;
[0029]步驟205,客戶端向USBKEY設備發(fā)送簽名指令并獲得USBKEY設備的簽名結果。
[0030]其中,在步驟202中,所述標志位用于步驟205中的簽名過程,如果所述標志位表示數(shù)據(jù)解析出錯,則不再繼續(xù)進行簽名過程,否則繼續(xù)進行簽名過程。
[0031]在步驟203和204中,對用戶身份進行校驗的手段有多種,包括驗證用戶提供的密碼是否正確,通過面部識別、指紋、虹膜等生物驗證手段進行驗證等的一種或多種的組合。所述密碼或生物驗證的過程可在客戶端中實現(xiàn),也可在USBKEY中實現(xiàn)或者在兩者的配合下實現(xiàn)。
[0032]根據(jù)一種實施方式,用戶在USBKEY設備中輸入密碼或指紋等生物識別信息,并通過USBKEY設備發(fā)送至客戶端,客戶端通過比較預存的密碼或生物識別信息與接收到的密碼或生物識別信息,判斷用戶是否具有簽名使用權。
[0033]根據(jù)另一種實施方式,用戶在USBKEY設備中輸入密碼或指紋等生物識別信息,USBKEY設備本身預先存儲了密碼或生物識別信息,并將預存的密碼或生物識別信息與輸入的密碼或生物識別信息進行比較,從而判斷用戶是否具有簽名使用權。
[0034]步驟205是根據(jù)一個實施例的客戶端與USBKEY設備之間進行數(shù)字簽名的過程,下面將參考圖3,對上述步驟205進行進一步介紹。
[0035]所述步驟205包括:
[0036]步驟301,客戶端將簽名指令發(fā)送至USBKEY設備;
[0037]步驟302,USBKEY設備首次接收到簽名指令后,啟動屏幕顯示,并將記錄的按鍵狀態(tài)設置為空;
[0038]步驟303,在剩余時間不為零且未執(zhí)行簽名或取消簽名動作的情況下:USBKEY設備持續(xù)接收用戶按鍵的觸發(fā)信號,當用戶按鍵時,將存儲器中的按鍵狀態(tài)更新為確認鍵或取消鍵;以及在接收到簽名指令后,判斷記錄的按鍵狀態(tài),根據(jù)不同的按鍵狀態(tài)執(zhí)行相應的動作并向客戶端發(fā)送簽名結果、取消簽名或者當前按鍵的剩余時間;
[0039]步驟304,客戶端當接收到簽名結果或取消簽名時,流程結束;當收到剩余時間時,判斷是否為零,若不為零,再次發(fā)送簽名指令至USBKEY設備,若為零則流程結束。
[0040]數(shù)字簽名一般是由客戶端發(fā)起的,因此在步驟301中,客戶端會首先將簽名指令發(fā)送至USBKEY設備以啟動這一流程。
[0041]在步驟302中,USBKEY設備在首次接收到簽名指令后,需要點亮顯示屏以提示用戶下一步操作,用戶根據(jù)顯示屏的提示進行確認、取消等按鍵的按壓操作。
[0042]在上文提到了,在步驟202中,USBKEY設備對接收到的要簽名的數(shù)據(jù)進行解析,如果出錯則置位標志位,那么在步驟302中,在USBKEY首次接收到簽名指令并打開顯示器后,并且如果所述標志位表示解析出錯,則在屏幕上顯示數(shù)據(jù)錯誤信息,并結束流程;否則則在屏幕上顯示與簽名數(shù)據(jù)相關的信息以提示用戶進一步操作。
[0043]下面,一并參見圖4對步驟303和304進行詳細介紹。
[0044]步驟303是在USBKEY設備中所執(zhí)行的步驟,USBKEY設備在依據(jù)用戶的確認指令執(zhí)行了用戶簽名或依據(jù)用戶的確認指令取消了用戶簽名或簽名的剩余時間為零的情況下,會結束USBKEY設備的執(zhí)行流程。所以,步驟303的一開始就先定了在剩余時間不為零且未執(zhí)行簽名或取消簽名動作的情況下執(zhí)行下面的步驟。下面的步驟其實分成了兩個并行執(zhí)行的過程,第一個是USBKEY設備持續(xù)接收用戶按鍵的觸發(fā)信號,當用戶按鍵時,將存儲器中的按鍵狀態(tài)更新為確認鍵或取消鍵,第二個是接收到客戶端的簽名指令后,判斷記錄的按鍵狀態(tài),并根據(jù)按鍵狀態(tài)采取不同操作的過程。第一個過程獨立于第二個過程運行,只要用戶按鍵,就更新按鍵狀態(tài)為用戶所按的按鍵,例如用戶按壓了確認鍵,則按鍵狀態(tài)為確認鍵被按壓,所述按鍵狀態(tài)可以通過存儲器存儲,并例如使用0、1、2分別表示空、確認鍵和取消鍵。實際上,第一個過程可以在用戶按鍵并更新狀態(tài)后就結束,不一定非要等待執(zhí)行簽名或取消簽名動作的完成才結束。而第二個過程需要判斷記錄的按鍵狀態(tài),也就是說,依賴于第一個過程中所更新的按鍵狀態(tài)。如圖4所示,第二個過程是與客戶端進行交互的過程,并在記錄的按鍵為空以及剩余時間不為零的情況下循環(huán)進行。下面參考圖4詳細分析這一過程。
[0045]當接收到簽名指令(包括首次簽名指令以及后續(xù)的簽名指令,后續(xù)的簽名指令來自于步驟304,將在下文具體描述)時,若之前用戶沒有按鍵,即所述記錄的按鍵狀態(tài)是空的,那么會執(zhí)行“在記錄的按鍵狀態(tài)為空的情況下”對應的操作,即要獲取用戶按鍵的剩余時間并發(fā)送給客戶端。此時,若剩余時間不為零,則USBKEY的流程并未結束,即第一過程和第二過程繼續(xù)持續(xù)運行。若剩余時間為零,說明簽名截止時間到期,USBKEY的簽名流程就結束了。
[0046]若之前用戶進行了按鍵,即第一過程之前更新了按鍵狀態(tài)為確認鍵或取消鍵,那么在記錄的按鍵狀態(tài)為確認鍵的情況下:USBKEY執(zhí)行簽名并向客戶端應答簽名結果,這時,如上文所述,USBKEY設備的流程就可以結束了 ;此外,在記錄的按鍵狀態(tài)為取消鍵的情況下:USBKEY取消簽名并向客戶端應答用戶取消簽名,USBKEY的流程同樣也結束了。
[0047]對于步驟304來說,當接收到所述剩余時間時,則判斷剩余時間是否為零,若不為零,則繼續(xù)發(fā)送簽名指令至USBKEY設備,這時,在USBKEY設備中,持續(xù)運行的第二過程會根據(jù)該簽名指令(在這種情況下,為后續(xù)簽名指令)的觸發(fā),繼續(xù)判斷記錄的按鍵狀態(tài)是否為空,如上文所述,若不是空,說明用戶在此次判斷按鍵狀態(tài)之前已經(jīng)點擊了按鍵,且相應的第一過程已經(jīng)更新了按鍵狀態(tài),那么就如上文所述,按照按鍵狀態(tài)所記載的內(nèi)容執(zhí)行相應的操作并將結果反饋給客戶端設備,若仍然為空,則繼續(xù)發(fā)送剩余時間至客戶端;如果在步驟304中發(fā)現(xiàn)剩余時間為零,那么流程結束。此外,若步驟304接收到所述USBKEY應答的簽名結果或應答的用戶取消簽名,那么同樣會結束流程。
[0048]可以看到,客戶端只要收到了表示剩余時間的信息,在剩余時間不為零的情況下就會發(fā)送一次簽名指令,以此方式,可以將客戶端與USBKEY設備的時鐘進行同步,不會出現(xiàn)現(xiàn)有技術中所存在的問題。此外,本方案僅使用了簽名指令這一種指令實現(xiàn)了指示用戶通過USBKEY設備進行簽名以及同步USBKEY設備與客戶端時鐘兩個功能,減輕了存儲、計算的負荷,試想如果使用兩個指令,例如時鐘同步指令進行時鐘同步,并使用簽名指令指示用戶進行簽名,那么會增加存儲空間并延長指令存取的時間。而為了實現(xiàn)一個指令兩個用途這一目的,本方案中增加了記錄按鍵狀態(tài)的功能,該功能可記錄用戶所按下的按鍵,并當下一簽名指令周期到來時,根據(jù)按鍵狀態(tài)來判斷要執(zhí)行的操作,也就是說通過這一手段,在下一簽名指令到來前,所述簽名指令被認為是時鐘同步指令。
[0049]根據(jù)之前的實施例,在圖5中示出了表示客戶端與USBKEY設備之間驗證、簽名整體流程的時序圖,其中非常清晰地表示了驗證、簽名的具體時序關系,由于易于根據(jù)之前的介紹進行理解,這里不再對該圖進行進一步描述。與上述方式有所不同的是,最后響應于客戶端發(fā)送的取結果指令,USBKEY設備應答簽名結果。
[0050]由此可見,本方案提供了一種解決用戶在簽名過程中無法獲得應有的響應這一問題的方案,此方案中滲透了時鐘同步的理念,并通過一種節(jié)省時間、空間復雜度的手段達到了在保證客戶端與USBKEY設備之間時鐘同步的情況下對數(shù)據(jù)進行簽名的目的,獲得了在數(shù)字簽名過程中用戶可正確獲得應有的響應這一技術效果,極大地提升了用戶體驗。
[0051]如上文所述,本申請?zhí)岢隽艘环NUSBKEY設備的數(shù)字簽名方法,很明顯,執(zhí)行該方法的平臺即由USBKEY設備和客戶端組成的數(shù)字簽名系統(tǒng),所述USBKEY設備和客戶端各自都包括相應的軟件、硬件或固件以實現(xiàn)執(zhí)行該方法所需的功能,也就是說,USBKEY設備和客戶端可利用任何現(xiàn)有的手段完成上述功能,這對于本領域技術人員來說是完全可以實現(xiàn)的。
[0052]在該系統(tǒng)中,在進行數(shù)字簽名之前,客戶端用于將要簽名的數(shù)據(jù)發(fā)送給USBKEY設備并將驗證用戶的指令發(fā)送給USBKEY設備;而USBKEY設備用于對要簽名的數(shù)據(jù)進行解析并驗證用戶的身份,即實現(xiàn)上述步驟201-205。
[0053]在進行數(shù)字簽名時,客戶端和USBKEY設備組成的系統(tǒng)要完成的即上述步驟301-304,其中客戶端用于:將簽名指令發(fā)送至USBKEY設備;并在接收到USBKEY設備發(fā)送的簽名結果或取消簽名時,結束簽名流程,而當接收到剩余時間時,判斷是否為零,若不為零,再次發(fā)送簽名指令至USBKEY設備,若為零則結束簽名流程;USBKEY設備用于:首次接收到簽名指令后,啟動屏幕顯示,并將記錄的按鍵狀態(tài)設置為空;以及在剩余時間不為零且未執(zhí)行簽名或取消簽名動作的情況下:持續(xù)接收用戶按