国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)字簽名方法

      文檔序號(hào):6428321閱讀:154來源:國知局
      專利名稱:一種數(shù)字簽名方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及信息安全技術(shù),具體涉及一種數(shù)字簽名的方法。
      背景技術(shù)
      由于電子商務(wù)和信息安全技術(shù)的迅速發(fā)展,智能卡也應(yīng)運(yùn)而生并逐漸得到迅速發(fā)展。智能卡可以通過其接口連接到臺(tái)式計(jì)算機(jī)(PC)、便攜式計(jì)算機(jī)、蘋果計(jì)算機(jī)(MAC)或者其它網(wǎng)絡(luò)設(shè)備,用戶可以通過智能卡實(shí)現(xiàn)數(shù)字簽名、身份認(rèn)證、數(shù)據(jù)加密、證書存儲(chǔ)等多種功能。目前的智能卡一般包括中央處理器(CPU)和存儲(chǔ)器,其工作主要是基于卡內(nèi)操作系統(tǒng)(COS)。
      COS的主要功能是控制CPU和外界信息的交互、管理存儲(chǔ)器的文件系統(tǒng)以及在CPU內(nèi)完成各種命令的處理。為了防止非法用戶訪問卡內(nèi)信息,COS還有安全管理機(jī)制,用于對(duì)各種操作進(jìn)行控制以保護(hù)卡內(nèi)的信息不會(huì)泄露出去。COS與外界信息的交互遵循ISO/IEC 7816-3標(biāo)準(zhǔn)中的異步字符傳輸協(xié)議,而COS所完成的管理和基本功能則遵循ISO/IEC 7816-4標(biāo)準(zhǔn)。智能卡中的存儲(chǔ)器用來存儲(chǔ)CPU運(yùn)行時(shí)所需要的信息和智能卡保存的信息,存儲(chǔ)器一般包括隨機(jī)存取存儲(chǔ)器(RAM)和電可擦可編程只讀存儲(chǔ)器(EEPROM)。
      在目前如果用戶要利用智能卡進(jìn)行數(shù)字簽名,首先將智能卡插入到和計(jì)算機(jī)接口連接的讀卡器,然后用戶將待簽名數(shù)據(jù)通過計(jì)算機(jī)發(fā)送給讀卡器中的智能卡,智能卡中CPU的COS操作系統(tǒng)提示用戶輸入個(gè)人身份號(hào)碼(PIN),并在驗(yàn)證用戶輸入的PIN正確后調(diào)用對(duì)待簽名數(shù)據(jù)進(jìn)行簽名,而如果用戶輸入的PIN不正確,則向用戶返回錯(cuò)誤提示信息并丟棄該數(shù)據(jù)。
      在上述流程中,驗(yàn)證用戶的PIN是對(duì)用戶身份進(jìn)行認(rèn)證的唯一安全機(jī)制,這樣存在冒充簽名的問題,從而降低了數(shù)字簽名的安全性。具體地說,在用戶完成了PIN的驗(yàn)證后執(zhí)行簽名操作時(shí),用戶已經(jīng)不能控制使用密鑰進(jìn)行簽名,此時(shí)如果有惡意程序入侵,惡意程序可以冒充用戶進(jìn)行一次或多次簽名,而用戶卻并不知道進(jìn)行過幾次簽名;或者,在用戶的PIN被惡意程序獲取的情況下,惡意程序可以冒充用戶進(jìn)行一次或多次簽名而用戶毫無察覺。而眾所周知,數(shù)字簽名在實(shí)際應(yīng)用中可能涉及到諸如合同簽字、資金支付、法律確認(rèn)等一系列經(jīng)濟(jì)和法律問題,因此其安全性在電子商務(wù)和電子政務(wù),甚至整個(gè)國家社會(huì)經(jīng)濟(jì)秩序中都占有非常重要的地位。因此,如果數(shù)字簽名被多次冒充并且用戶毫無察覺,那么將會(huì)極大地降低數(shù)字簽名的安全性,給用戶和整個(gè)國家的社會(huì)經(jīng)濟(jì)持續(xù)帶來不良影響。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明的主要目的是提供一種數(shù)字簽名方法,以防止數(shù)字簽名在用戶毫無察覺的情況下被多次冒充,從而提高數(shù)字簽名的安全性。
      本發(fā)明的上述目的是通過如下的技術(shù)方案予以解決的一種數(shù)字簽名方法,至少包括a.預(yù)先設(shè)置一個(gè)用于表示是否允許進(jìn)行數(shù)字簽名的簽名標(biāo)志變量,并在開始進(jìn)行數(shù)字簽名之前初始化該簽名標(biāo)志變量為表示允許進(jìn)行數(shù)字簽名的值;b.在進(jìn)行數(shù)字簽名時(shí)根據(jù)該簽名標(biāo)志變量的值確定是否允許進(jìn)行數(shù)字簽名,如果是,將簽名標(biāo)志變量的值修改為表示不允許進(jìn)行數(shù)字簽名的值并執(zhí)行簽名操作;否則結(jié)束本流程。
      較佳地,在步驟b之前進(jìn)一步包括驗(yàn)證用戶輸入的個(gè)人身份號(hào)碼PIN是否正確,如果是,執(zhí)行步驟b;否則結(jié)束本流程。
      較佳地,在驗(yàn)證用戶輸入的PIN之后進(jìn)一步包括根據(jù)用戶輸入的PIN提高智能卡的安全級(jí)別,并在執(zhí)行步驟b之前進(jìn)一步包括查找用戶的私鑰文件并根據(jù)該私鑰文件所要求的安全級(jí)別和智能卡的當(dāng)前安全級(jí)別來驗(yàn)證用戶的私鑰使用權(quán)限,如果用戶擁有對(duì)文件中私鑰的使用權(quán)限,則執(zhí)行步驟b;否則結(jié)束本流程。這里根據(jù)私鑰文件所要求的安全級(jí)別和智能卡的當(dāng)前安全級(jí)別來驗(yàn)證用戶的私鑰使用權(quán)限是比較智能卡的當(dāng)前安全級(jí)別是否大于等于該私鑰文件所要求的安全級(jí)別,如果是,確定用戶擁有對(duì)文件中私鑰的使用權(quán)限,否則確定用戶不具有對(duì)文件中私鑰的使用權(quán)限。
      在本發(fā)明中,簽名標(biāo)志變量存儲(chǔ)在智能卡的存儲(chǔ)器上,步驟b是由智能卡的CPU進(jìn)行的。
      在這種情況下,步驟a中初始化簽名標(biāo)志變量是在智能卡上電時(shí)進(jìn)行的。在步驟b之前進(jìn)一步包括判斷所接收的命令是否是簽名命令,如果是,執(zhí)行步驟b;否則由CPU進(jìn)行對(duì)應(yīng)于該命令的處理。
      較佳地,在上述不進(jìn)行數(shù)字簽名而結(jié)束本流程之前進(jìn)一步包括返回錯(cuò)誤提示信息的步驟。
      從本發(fā)明的技術(shù)方案可以看出,本發(fā)明首先設(shè)置一個(gè)表示是否允許進(jìn)行數(shù)字簽名的標(biāo)志變量,并在智能卡上電后將該值初始化為表示允許進(jìn)行數(shù)字簽名的值,并在進(jìn)行過一次簽名后將該值修改為不允許進(jìn)行數(shù)字簽名的值。這樣,在智能卡上電后,除非將智能卡斷電并重新上電,只要進(jìn)行一次數(shù)字簽名之后就不允許再進(jìn)行數(shù)字簽名,從而防止了在合法用戶簽名之后惡意程序再冒充用戶進(jìn)行一次或多次簽名的情況。另外,即使惡意程序得到了用戶的PIN從而冒充用戶進(jìn)行簽名,或者惡意程序在用戶輸入PIN之后先于用戶進(jìn)行數(shù)字簽名,也只能冒充一次簽名,并且在合法用戶進(jìn)行簽名之前會(huì)發(fā)現(xiàn)自己不能進(jìn)行簽名,從而合法用戶可以知道非法用戶冒充自己進(jìn)行了一次簽名,配合其它措施可以將這種冒充行為給合法用戶的損失降到最低。
      因此,通過本發(fā)明,只要合法用戶進(jìn)行了簽名之后,惡意程序就不可能再冒充用戶進(jìn)行簽名。即使惡意程序能在合法用戶簽名之前冒充合法用戶進(jìn)行簽名,最多也只能冒充一次簽名并且這次簽名能夠被合法用戶所察覺。因此,本發(fā)明能夠防止數(shù)字簽名在用戶毫無察覺的情況下被多次冒充,從而提高了數(shù)字簽名的安全性。


      圖1是本發(fā)明的總體流程圖。
      圖2是本發(fā)明一個(gè)具體實(shí)施例的流程圖。
      圖3是計(jì)算機(jī)和智能卡之間的數(shù)據(jù)傳輸格式的示意圖。
      具體實(shí)施例方式
      下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
      在本發(fā)明中首先設(shè)置一個(gè)簽名標(biāo)志變量,該簽名標(biāo)志變量有兩個(gè)值允許進(jìn)行數(shù)字簽名和不允許進(jìn)行數(shù)字簽名,并在進(jìn)行數(shù)字簽名之前初始化簽名標(biāo)志變量為表示允許進(jìn)行數(shù)字簽名的值,在用戶進(jìn)行一次數(shù)字簽名后修改簽名標(biāo)志變量為表示不允許進(jìn)行數(shù)字簽名的值,從而防止惡意程序再次冒充用戶簽名。
      圖1示出了本發(fā)明的總體流程。如圖1所示,根據(jù)本發(fā)明的數(shù)字簽名方法包括如下步驟。
      在步驟101,預(yù)先設(shè)置一個(gè)用于表示是否允許進(jìn)行數(shù)字簽名的簽名標(biāo)志變量。
      在步驟102,在進(jìn)行數(shù)字簽名之前初始化該簽名標(biāo)志變量為表示允許進(jìn)行數(shù)字簽名的值。
      在步驟103,在需要進(jìn)行數(shù)字簽名時(shí),首先讀取該簽名標(biāo)志變量。
      在步驟104,根據(jù)讀取的簽名標(biāo)志變量的值確定是否允許進(jìn)行簽名。如果允許進(jìn)行簽名,執(zhí)行步驟105及其后續(xù)步驟,否則結(jié)束本流程。
      在步驟105,將該簽名標(biāo)志變量的值修改為表示不允許進(jìn)行數(shù)字簽名的值。
      在步驟106,對(duì)待簽名數(shù)據(jù)進(jìn)行數(shù)字簽名。然后結(jié)束。
      上述是本發(fā)明的總體流程圖。下面通過一個(gè)具體實(shí)施例進(jìn)一步說明本發(fā)明。
      如上所述,一般進(jìn)行數(shù)字簽名是通過智能卡進(jìn)行的,而智能卡包括CPU和存儲(chǔ)器。在使用智能卡進(jìn)行數(shù)字簽名的本發(fā)明具體實(shí)施例中,其操作流程如圖2所示。
      在步驟201,預(yù)先在智能卡的存儲(chǔ)器中設(shè)置一個(gè)用于表示是否允許進(jìn)行數(shù)字簽名的簽名標(biāo)志變量。這里的簽名標(biāo)志變量可以存儲(chǔ)在RAM中的一個(gè)寄存器中,這樣當(dāng)智能卡上電后初始化,在智能卡掉電后其信息不再保存。或者,也可以存儲(chǔ)在EEPROM中,這樣該簽名標(biāo)志變量的值會(huì)持續(xù)保存。
      在步驟202,在需要進(jìn)行數(shù)字簽名時(shí),將智能卡插入到和計(jì)算機(jī)連接的讀卡器中。
      在步驟203,智能卡上電,進(jìn)行智能卡的初始化,在該智能卡的初始化過程中,對(duì)存儲(chǔ)器中的簽名標(biāo)志變量初始化為一個(gè)表示允許進(jìn)行數(shù)字簽名的值。
      在步驟204,當(dāng)用戶使用智能卡的應(yīng)用程序進(jìn)行操作時(shí),應(yīng)用程序提示用戶輸入PIN,并將用戶輸入的PIN發(fā)送給智能卡。
      在步驟205,智能卡在接收到用戶輸入的PIN后判斷用戶輸入是否正確,如果正確,表示用戶是合法用戶,執(zhí)行步驟206及其后續(xù)步驟;否則在步驟216返回錯(cuò)誤提示信息,結(jié)束本流程。
      在步驟206,智能卡提升安全級(jí)別。當(dāng)智能卡確定輸入的PIN是用戶輸入的PIN后,提升安全級(jí)別為用戶級(jí)別;當(dāng)智能卡確定輸入的PIN不是用戶輸入的PIN而是發(fā)卡方輸入的PIN后,提升安全級(jí)別為發(fā)卡方級(jí)別。
      在步驟207,在接收到來自計(jì)算機(jī)的命今后,智能卡判斷該命令是否是一個(gè)數(shù)字簽名命令。如果是數(shù)字簽名命令,執(zhí)行步驟208及其后續(xù)步驟;如果不是數(shù)字簽名命令,例如是身份認(rèn)證命令、數(shù)據(jù)加密命令等,則在步驟214由CPU執(zhí)行對(duì)應(yīng)該命令的操作,然后向計(jì)算機(jī)返回操作結(jié)果。在返回操作結(jié)果之后,智能卡再次進(jìn)入接收命令前的等待命令狀態(tài)。也就是會(huì)重復(fù)執(zhí)行步驟207。
      在步驟208,如果智能卡接收的命令是數(shù)字簽名命令,首先查找用戶私鑰文件,確定用戶私鑰文件中所要求的安全級(jí)別。
      在步驟209,智能卡根據(jù)用戶私有文件和智能卡的當(dāng)前安全級(jí)別判斷用戶是否擁有對(duì)文件中私鑰的使用權(quán)限,如果是,執(zhí)行步驟210及其后續(xù)步驟;否則在步驟215返回錯(cuò)誤提示信息,然后再次進(jìn)入接收命令前的等待命令狀態(tài),也就是重復(fù)執(zhí)行步驟207。這里判斷用戶是否擁有對(duì)文件中私鑰的使用權(quán)限可以是判斷智能卡的當(dāng)前安全級(jí)別是否大于等于用戶私鑰文件中所要求的安全級(jí)別,如果是,則表明用戶擁有對(duì)文件中私鑰的使用權(quán)限,否則表明用戶不具有對(duì)文件中私鑰的使用權(quán)限。
      在步驟210,智能卡的CPU讀取簽名標(biāo)志變量的值。
      在步驟211,智能卡判斷當(dāng)前值表示允許進(jìn)行數(shù)字簽名還是不允許進(jìn)行數(shù)字簽名;如果是允許進(jìn)行數(shù)字簽名,執(zhí)行步驟212及其后續(xù)步驟;否則在步驟215返回錯(cuò)誤提示信息,然后再次進(jìn)入接收命令前的等待命令狀態(tài),也就是重復(fù)執(zhí)行步驟207。
      在步驟212,智能卡修改簽名標(biāo)志變量的值,使其表示不允許進(jìn)行數(shù)字簽名。
      在步驟213,智能卡對(duì)來自計(jì)算機(jī)和數(shù)字簽名命令同時(shí)發(fā)送的待簽名數(shù)據(jù)進(jìn)行數(shù)字簽名,并向計(jì)算機(jī)返回?cái)?shù)字簽名結(jié)果。然后再次進(jìn)入接收命令前的等待命令狀態(tài),也就是重復(fù)執(zhí)行步驟207。
      在上述步驟202中,將智能卡插入到和計(jì)算機(jī)連接的讀卡器中,通過讀卡器和計(jì)算機(jī)進(jìn)行信息交互??梢岳斫?,智能卡也可以包括在一個(gè)單獨(dú)設(shè)計(jì)的數(shù)字簽名裝置中,該數(shù)字簽名裝置通過例如通用總線接口(USB)和計(jì)算機(jī)連接,智能卡通過數(shù)字簽名裝置的接口接收計(jì)算機(jī)的命令,并在執(zhí)行命令后將執(zhí)行結(jié)果返回給計(jì)算機(jī)。
      在上述步驟207中,智能卡判斷一個(gè)命令是否是數(shù)字簽名命令是根據(jù)計(jì)算機(jī)和智能卡之間的數(shù)據(jù)傳輸格式的字節(jié)而確定的。圖3示出了該數(shù)據(jù)傳輸格式的一個(gè)示例。在該傳輸格式中,如果CLA為0則表示讀寫CPU的命令,如果INS為F2則表示數(shù)字簽名命令。因此判斷一個(gè)命令是否是數(shù)字簽名命令就是判斷接收命令的數(shù)據(jù)中INS字段是否為F2。
      上述數(shù)字簽名標(biāo)志變量設(shè)置有兩個(gè)值,允許進(jìn)行簽名的值和不允許進(jìn)行簽名的值,這兩個(gè)值可以通過數(shù)字來表示,例如0表示允許進(jìn)行簽名,1表示不允許進(jìn)行簽名。或者,也可以通過其它數(shù)字或者字符來表示。另外,可以理解,上述簽名標(biāo)志標(biāo)量也可以設(shè)置有三個(gè)值或更多的值,只是這樣會(huì)降低數(shù)字簽名的安全性。
      另外,即使用戶使用智能卡進(jìn)行的操作不是數(shù)字簽名操作,例如是數(shù)據(jù)加密操作,用戶在完成該操作之后最好也再進(jìn)行一次數(shù)字簽名操作,這樣如果惡意程序冒充用戶進(jìn)行了一次簽名,用戶也可以察覺到。這里再進(jìn)行一次數(shù)字簽名操作可以是對(duì)沒有任何意義的數(shù)據(jù)進(jìn)行簽名,其目的僅僅是為了確定是否有惡意程序冒充自己的簽名。如果惡意程序冒充了用戶的簽名,在對(duì)無意義的數(shù)據(jù)進(jìn)行加密時(shí),用戶將會(huì)發(fā)現(xiàn)智能卡不允許自己進(jìn)行簽名,從而可以確定有惡意程序冒充自己進(jìn)行了一次簽名。同樣配合其他措施可以挽回冒充簽名給自己造成的損失。通過這樣的操作,可以進(jìn)一步提高用戶數(shù)字簽名的安全性。
      因此可以理解,以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種數(shù)字簽名方法,至少包括a.預(yù)先設(shè)置一個(gè)用于表示是否允許進(jìn)行數(shù)字簽名的簽名標(biāo)志變量,并在開始進(jìn)行數(shù)字簽名之前初始化該簽名標(biāo)志變量為表示允許進(jìn)行數(shù)字簽名的值;b.在進(jìn)行數(shù)字簽名時(shí)根據(jù)該簽名標(biāo)志變量的值確定是否允許進(jìn)行數(shù)字簽名,如果是,將簽名標(biāo)志變量的值修改為表示不允許進(jìn)行數(shù)字簽名的值并執(zhí)行簽名操作;否則結(jié)束本流程。
      2.根據(jù)權(quán)利要求1所述的數(shù)字簽名方法,其特征是,在步驟b之前進(jìn)一步包括驗(yàn)證用戶輸入的個(gè)人身份號(hào)碼PIN是否正確,如果是,執(zhí)行步驟b;否則結(jié)束本流程。
      3.根據(jù)權(quán)利要求2所述的數(shù)字簽名方法,其特征是,在驗(yàn)證用戶輸入的PIN之后進(jìn)一步包括根據(jù)用戶輸入的PIN提高智能卡的安全級(jí)別,并在執(zhí)行步驟b之前進(jìn)一步包括查找用戶的私鑰文件并根據(jù)該私鑰文件所要求的安全級(jí)別和智能卡的當(dāng)前安全級(jí)別來驗(yàn)證用戶的私鑰使用權(quán)限,如果用戶擁有對(duì)文件中私鑰的使用權(quán)限,則執(zhí)行步驟b;否則結(jié)束本流程。
      4.根據(jù)權(quán)利要求3所述的數(shù)字簽名方法,其特征是,所述根據(jù)私鑰文件所要求的安全級(jí)別和智能卡的當(dāng)前安全級(jí)別來驗(yàn)證用戶的私鑰使用權(quán)限是比較智能卡的當(dāng)前安全級(jí)別是否大于等于該私鑰文件所要求的安全級(jí)別,如果是,確定用戶擁有對(duì)文件中私鑰的使用權(quán)限,否則確定用戶不具有對(duì)文件中私鑰的使用權(quán)限。
      5.根據(jù)權(quán)利要求1至4中任意一項(xiàng)所述的數(shù)字簽名方法,其特征是,所述簽名標(biāo)志變量存儲(chǔ)在智能卡的存儲(chǔ)器上,步驟b是由智能卡的CPU進(jìn)行的。
      6.根據(jù)權(quán)利要求5所述的數(shù)字簽名方法,其特征是,步驟a中初始化簽名標(biāo)志變量是在智能卡上電時(shí)進(jìn)行的。
      7.根據(jù)權(quán)利要求5所述的數(shù)字簽名方法,其特征是,在步驟b之前進(jìn)一步包括判斷所接收的命令是否是簽名命令,如果是,執(zhí)行步驟b;否則由CPU進(jìn)行對(duì)應(yīng)于該命令的處理。
      8.根據(jù)權(quán)利要求1至4中任意一項(xiàng)所述的數(shù)字簽名方法,其特征是,在所述結(jié)束本流程之前進(jìn)一步包括返回錯(cuò)誤提示信息的步驟。
      全文摘要
      本發(fā)明公開了一種數(shù)字簽名方法。在該方法中,預(yù)先設(shè)置一個(gè)用于表示是否允許進(jìn)行數(shù)字簽名的簽名標(biāo)志變量,并在用戶認(rèn)可的系統(tǒng)開始時(shí)初始化該簽名標(biāo)志變量為“允許進(jìn)行數(shù)字簽名”。在進(jìn)行數(shù)字簽名時(shí)首先根據(jù)該簽名標(biāo)志變量的值確定是否允許進(jìn)行數(shù)字簽名,如果是,將簽名標(biāo)志變量的值修改為表示不允許進(jìn)行數(shù)字簽名的值并執(zhí)行簽名操作;否則不進(jìn)行數(shù)字簽名并返回錯(cuò)誤提示信息。本發(fā)明能夠防止被動(dòng)簽名設(shè)備,如IC卡等在用戶毫無察覺的情況下被未經(jīng)授權(quán)地多次調(diào)用,從而保證用戶對(duì)簽名的控制。
      文檔編號(hào)G06K5/00GK1756154SQ200410079058
      公開日2006年4月5日 申請(qǐng)日期2004年9月30日 優(yōu)先權(quán)日2004年9月30日
      發(fā)明者馮登國, 荊繼武, 劉海蛟 申請(qǐng)人:中國科學(xué)院研究生院
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1