国产精品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>

      JavaCard虛擬機棧的防錯誤注入方法及系統(tǒng)與流程

      文檔序號:11251266閱讀:525來源:國知局
      Java Card虛擬機棧的防錯誤注入方法及系統(tǒng)與流程

      本發(fā)明涉及javacard虛擬機棧防護技術(shù)領(lǐng)域,特別是涉及一種javacard虛擬機棧的防錯誤注入方法及系統(tǒng)。



      背景技術(shù):

      javacard支持很多應(yīng)用,并且具有非常高的安全性。近年來,javacard在金融、移動支付等行業(yè)中的應(yīng)用越來越廣范,與此同時,針對javacard的攻擊手段也越來越多,目前非常重要的攻擊手段是針對javacard虛擬機棧的錯誤注入,而現(xiàn)有技術(shù)中還沒有針對這種攻擊手段的防護方法,使javacard虛擬機棧的安全性降低。

      因此,如何提供一種解決上述技術(shù)問題的javacard虛擬機棧的防錯誤注入方法及系統(tǒng)成為本領(lǐng)域的技術(shù)人員需要解決的問題。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的是提供一種javacard虛擬機棧的防錯誤注入方法和系統(tǒng),在使用過程中增加攻擊者對javacard虛擬機棧進行錯誤注入的難度,并在一定程度上防止了對javacard虛擬機棧的錯誤注入,提高了javacard虛擬機棧的安全性。

      為解決上述技術(shù)問題,本發(fā)明提供了一種javacard虛擬機棧的防錯誤注入方法,包括:

      在啟動javacard虛擬機之前產(chǎn)生隨機數(shù);

      依據(jù)所述隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址;

      啟動javacard虛擬機,并將所述內(nèi)存地址確定為所述javacard虛擬機棧的實際內(nèi)存地址,以防止攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址后進行錯誤注入。

      可選的,所述依據(jù)所述隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址的過程具體為:

      依據(jù)所述隨機數(shù)對所述javacard虛擬機棧的內(nèi)存空間的起始地址和結(jié)束地址進行調(diào)整,得到調(diào)整后的起始地址和結(jié)束地址,并依據(jù)所述調(diào)整后的起始地址和結(jié)束地址確定出所述javacard虛擬機棧的內(nèi)存地址。

      可選的,所述方法還包括:

      對待進棧的第一數(shù)據(jù)進行按位取反操作,得到相應(yīng)的第二數(shù)據(jù);

      將所述第一數(shù)據(jù)與所述第二數(shù)據(jù)進行結(jié)合得到第三數(shù)據(jù),并將所述第三數(shù)據(jù)壓入棧;

      對待出棧的數(shù)據(jù)進行反向驗證,以判斷待出棧的數(shù)據(jù)是否為所述第一數(shù)據(jù),如果是,則所述第一數(shù)據(jù)正常,并進行所述第一數(shù)據(jù)的返回;否則,所述第一數(shù)據(jù)受到錯誤注入,并進入安全異常處理流程。

      可選的,所述將所述第一數(shù)據(jù)與所述第二數(shù)據(jù)進行結(jié)合得到第三數(shù)據(jù)的過程具體為:

      將所述第二數(shù)據(jù)的尾部與所述第一數(shù)據(jù)的首部相接后得到第三數(shù)據(jù);

      則,所述對待出棧的數(shù)據(jù)進行反向驗證,以判斷待出棧的數(shù)據(jù)是否為所述第一數(shù)據(jù)的過程具體為:

      將待出棧的數(shù)據(jù)從中間分開得到第一部分?jǐn)?shù)據(jù)和第二部分?jǐn)?shù)據(jù),將所述第一部分?jǐn)?shù)據(jù)進行按位取反得到第三部分?jǐn)?shù)據(jù),并將所述第三部分?jǐn)?shù)據(jù)與所述第二部分?jǐn)?shù)據(jù)進行比較,當(dāng)所述第三部分?jǐn)?shù)據(jù)與所述第二部分?jǐn)?shù)據(jù)相同時,則所述待出棧的數(shù)據(jù)為所述第一數(shù)據(jù);否則,所述出棧后的數(shù)據(jù)不是所述第一數(shù)據(jù),所述第一數(shù)據(jù)受到錯誤注入,并進入安全異常處理流程。

      可選的,所述安全異常處理流程為自動停止后續(xù)執(zhí)行動作。

      可選的,所述安全異常處理流程為自動復(fù)位,并返回至所述javacard虛擬機棧的初始化狀態(tài)。

      可選的,所述安全異常處理流程為記錄異常數(shù)據(jù)后進行自動復(fù)位。

      為解決上述技術(shù)問題,本發(fā)明提供了一種javacard虛擬機棧的防錯誤注入系統(tǒng),包括:

      數(shù)據(jù)發(fā)生器,用于在啟動javacard虛擬機之前產(chǎn)生隨機數(shù);

      計算模塊,用于依據(jù)所述隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址;

      定位模塊,用于啟動javacard虛擬機,并將所述內(nèi)存地址確定為所述javacard虛擬機棧的實際內(nèi)存地址,以防止攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址后進行錯誤注入。

      本發(fā)明提供了一種javacard虛擬機棧的防錯誤注入方法及系統(tǒng),包括在啟動javacard虛擬機之前產(chǎn)生隨機數(shù);依據(jù)隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址;啟動javacard虛擬機,并將內(nèi)存地址確定為javacard虛擬機棧的實際內(nèi)存地址,以防止攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址后進行錯誤注入。

      由于攻擊者在對javacard虛擬機棧進行錯誤注入時,首先需要找到j(luò)avacard虛擬機棧的位置,也就是需要找到j(luò)avacard虛擬機棧的實際內(nèi)存地址。本發(fā)明通過在啟動javacard虛擬機之前產(chǎn)生隨機數(shù),并依據(jù)該隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址,并在啟動javacard虛擬機時將該內(nèi)存地址定位為javacard虛擬機棧的實際內(nèi)存地址,因此在每次啟動javacard虛擬機時就可以實現(xiàn)動態(tài)隨機調(diào)整javacard虛擬機棧的位置,使攻擊者較難找到j(luò)avacard虛擬機棧的實際內(nèi)存地址,進一步增加攻擊者對javacard虛擬機棧進行錯誤注入的難度。本發(fā)明在一定程度上防止了對javacard虛擬機棧的錯誤注入,提高了javacard虛擬機棧的安全性。

      附圖說明

      為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1為本發(fā)明提供的一種javacard虛擬機棧的防錯誤注入方法的流程示意圖;

      圖2為本發(fā)明所提的一種javacard虛擬機棧的內(nèi)存地址浮動示意圖;

      圖3為本發(fā)明提供的一種javacard虛擬機棧的防錯誤注入系統(tǒng)的結(jié)構(gòu)示意圖。

      具體實施方式

      本發(fā)明的核心是提供一種javacard虛擬機棧的防錯誤注入方法和系統(tǒng),在使用過程中增加攻擊者對javacard虛擬機棧進行錯誤注入的難度,在一定程度上防止了對javacard虛擬機棧的錯誤注入,提高了javacard虛擬機棧的安全性。

      為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

      請參照圖1,圖1為本發(fā)明提供的一種javacard虛擬機棧的防錯誤注入方法的流程示意圖。該方法包括:

      步驟10:在啟動javacard虛擬機之前產(chǎn)生隨機數(shù);

      步驟20:依據(jù)隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址;

      步驟30:啟動javacard虛擬機,并將內(nèi)存地址確定為javacard虛擬機棧的實際內(nèi)存地址,以防止攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址后進行錯誤注入。

      具體的,在每次啟動javacard虛擬機之前都通過數(shù)據(jù)產(chǎn)生器(可以為隨機數(shù)產(chǎn)生模塊)產(chǎn)生隨機數(shù),并且依據(jù)該隨機數(shù)可以計算出javacard虛擬機棧的內(nèi)存地址,再啟動javacard虛擬機,并將javacard虛擬機棧的實際內(nèi)存地址定位為依據(jù)隨機數(shù)計算出的內(nèi)存地址,這樣在每次啟動javacard虛擬機時都可以對javacard虛擬機棧的實際內(nèi)存地址進行動態(tài)調(diào)整,并且使隨機調(diào)整,因而實現(xiàn)對javacard虛擬機棧的具體位置的隱藏,使攻擊者不易找到j(luò)avacard虛擬機棧的實際內(nèi)存地址,從而加大了對javacard虛擬機棧進行錯誤注入的難度。

      需要說明的是,利用隨機數(shù)計算javacard虛擬機棧的內(nèi)存地址時,是將空閑的內(nèi)存地址用來作為javacard虛擬機棧的內(nèi)存地址。

      可選的,依據(jù)隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址的過程具體為:

      依據(jù)隨機數(shù)對javacard虛擬機棧的內(nèi)存空間的起始地址和結(jié)束地址進行調(diào)整,得到調(diào)整后的起始地址和結(jié)束地址,并依據(jù)調(diào)整后的起始地址和結(jié)束地址確定出javacard虛擬機棧的內(nèi)存地址。

      具體的,請參照圖2,圖2為本發(fā)明所提的一種javacard虛擬機棧的內(nèi)存地址浮動示意圖。假定在系統(tǒng)中javacard虛擬機棧s所需要的內(nèi)存大小為z,系統(tǒng)中給javacard虛擬機棧分配大小為z+x的內(nèi)存空間,其中x是給javacard虛擬機額外分配的一塊內(nèi)存空間e,則設(shè)大小為z+x的內(nèi)存空間的起始位置為d,其對應(yīng)的結(jié)束位置(即末端位置)為d+z+x;在啟動javacard虛擬機之前所產(chǎn)生的隨機數(shù)為r,則根據(jù)額外分配的內(nèi)存空間e的大小x對該隨機數(shù)r進行調(diào)整,可以通過函數(shù)f(r,x)對r進行調(diào)整,使調(diào)整后的值r1=f(r,x),且滿足0≤r1≤x,則由隨機數(shù)調(diào)整后的javacard虛擬機棧的內(nèi)存地址的起始位置為d+r1,調(diào)整后的末端位置為d+r1+z,所以根據(jù)隨機數(shù)所確定出的javacard虛擬機棧的內(nèi)存地址可以依據(jù)調(diào)整后的起始位置為d+r1,調(diào)整后的末端位置為d+r1+z進行確定,javacard虛擬機棧的內(nèi)存地址根據(jù)隨機數(shù)進行浮動。

      當(dāng)啟動javacard虛擬機時,javacard虛擬機棧的實際內(nèi)存地址的實際起始地址將定位為d+r1,其結(jié)束位置(即末端位置)定位為d+r1+z,故javacard虛擬機棧的實際內(nèi)存地址即由其實際起始位置和實際末端位置進行確定,從d+r1到d+r1+z之間的一段內(nèi)存空間作為javacard虛擬機棧的實際內(nèi)存空間。故,通過隨機數(shù)就可以調(diào)整javacard虛擬機棧的實際內(nèi)存地址。

      可選的,該方法還包括:

      對待進棧的第一數(shù)據(jù)進行按位取反操作,得到相應(yīng)的第二數(shù)據(jù);

      將第一數(shù)據(jù)與第二數(shù)據(jù)進行結(jié)合得到第三數(shù)據(jù),并將第三數(shù)據(jù)壓入棧;

      對待出棧的數(shù)據(jù)進行反向驗證,以判斷待出棧的數(shù)據(jù)是否為第三數(shù)據(jù),如果是,則第一數(shù)據(jù)正常,并進行第一數(shù)據(jù)的返回;否則,第一數(shù)據(jù)受到錯誤注入,并進入安全異常處理流程。

      需要說明的是,在對javacard虛擬機棧的內(nèi)存地址進行調(diào)整后,還可以通過對待進棧的數(shù)據(jù)進行按位取反的操作,并對待出棧的數(shù)據(jù)進行驗證,以進一步驗證進棧的數(shù)據(jù)是否受到錯誤注入。

      具體的,假設(shè)待進棧數(shù)據(jù)為第一數(shù)據(jù)a,在第一數(shù)據(jù)a進棧之前對該第一數(shù)據(jù)a進行按位取反的操作,得到與其相應(yīng)的第二數(shù)據(jù)b,其中,b=~a;將第二數(shù)據(jù)b和第一數(shù)據(jù)a進行拼接后得到第三數(shù)據(jù)a1,具體可以按照ba的形式進行拼接,也可以按照ab的形式進行拼接,還可以按照aba的形式進行拼接,具體按照哪種形式可以根據(jù)實際情況而定,并依據(jù)具體的拼接形式對待出棧的數(shù)據(jù)進行反向驗證,判斷待出棧的數(shù)據(jù)與進棧數(shù)據(jù)是否一致。

      可選的,將第一數(shù)據(jù)與第二數(shù)據(jù)進行結(jié)合得到第三數(shù)據(jù)的過程具體為:

      將第二數(shù)據(jù)的尾部與第一數(shù)據(jù)的首部相接后得到第三數(shù)據(jù);

      則,對待出棧的數(shù)據(jù)進行反向驗證,以判斷待出棧的數(shù)據(jù)是否為第一數(shù)據(jù)的過程具體為:

      將待出棧的數(shù)據(jù)從中間分開得到第一部分?jǐn)?shù)據(jù)和第二部分?jǐn)?shù)據(jù),將第一部分?jǐn)?shù)據(jù)進行按位取反得到第三部分?jǐn)?shù)據(jù),并將第三部分?jǐn)?shù)據(jù)與第二部分?jǐn)?shù)據(jù)進行比較,當(dāng)?shù)谌糠謹(jǐn)?shù)據(jù)與第二部分?jǐn)?shù)據(jù)相同時,則待出棧的數(shù)據(jù)為第一數(shù)據(jù);否則,待出棧的數(shù)據(jù)不是第一數(shù)據(jù),所述第一數(shù)據(jù)受到錯誤注入,并進入安全異常處理流程。

      具體的,可以按照第二數(shù)據(jù)在前第一數(shù)據(jù)在后(即ba)的形式進行拼接,得到第三數(shù)據(jù)ba,將第三數(shù)據(jù)壓入棧后,再將待出棧的數(shù)據(jù)從中間分開,分成左右兩個部分(即b'a'),左側(cè)部分為第一部分?jǐn)?shù)據(jù)b',右側(cè)部分為第二部分?jǐn)?shù)據(jù)a',將第一部分?jǐn)?shù)據(jù)b'按位取反得到第三部分?jǐn)?shù)據(jù)a'',比較第三部分?jǐn)?shù)據(jù)a''是否等于第二部分?jǐn)?shù)據(jù)a',若a''=a',則證明待出棧的數(shù)據(jù)就是進棧的第一數(shù)據(jù),進一步表明進棧的第一數(shù)據(jù)正常,沒有受到錯誤注入;否則,證明待出棧的數(shù)據(jù)不是進棧的第一數(shù)據(jù),也進一步表明進棧的第一數(shù)據(jù)異常,受到錯誤注入。

      采用本發(fā)明所提供的防錯誤注入方法,即使在攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址,并對數(shù)據(jù)進行了精確的錯誤注入的情況下,依然可以檢查出該錯誤注入,進一步提高了javacard虛擬機棧的安全系數(shù)。

      可選的,安全異常處理流程為自動停止后續(xù)執(zhí)行動作。

      可選的,安全異常處理流程為自動復(fù)位,并返回至javacard虛擬機棧的初始化狀態(tài)。

      可選的,安全異常處理流程為記錄異常數(shù)據(jù)后進行自動復(fù)位。

      需要說明的是,當(dāng)javacard虛擬機棧受到錯誤注入時,系統(tǒng)將進入安全異常處理流程,其中,安全異常處理流程不僅包括上述幾種方式,還可以包括其他的安全異常處理方式,本發(fā)明對此不做特殊的限定,能實現(xiàn)本發(fā)明的目的即可。

      本發(fā)明提供了一種javacard虛擬機棧的防錯誤注入方法,包括在啟動javacard虛擬機之前產(chǎn)生隨機數(shù);依據(jù)隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址;啟動javacard虛擬機,并將內(nèi)存地址確定為javacard虛擬機棧的實際內(nèi)存地址,以防止攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址后進行錯誤注入。

      由于攻擊者在對javacard虛擬機棧進行錯誤注入時,首先需要找到j(luò)avacard虛擬機棧的位置,也就是需要找到j(luò)avacard虛擬機棧的實際內(nèi)存地址。本發(fā)明通過在啟動javacard虛擬機之前產(chǎn)生隨機數(shù),并依據(jù)該隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址,并在啟動javacard虛擬機時將該內(nèi)存地址定位為javacard虛擬機棧的實際內(nèi)存地址,因此在每次啟動javacard虛擬機時就可以實現(xiàn)動態(tài)隨機調(diào)整javacard虛擬機棧的位置,使攻擊者較難找到j(luò)avacard虛擬機棧的實際內(nèi)存地址,進一步增加攻擊者對javacard虛擬機棧進行錯誤注入的難度。本發(fā)明在一定程度上防止了對javacard虛擬機棧的錯誤注入,提高了javacard虛擬機棧的安全性。

      請參照圖3,圖3為本發(fā)明提供的一種javacard虛擬機棧的防錯誤注入系統(tǒng)的結(jié)構(gòu)示意圖。在上述實施例的基礎(chǔ)上:

      該系統(tǒng)包括:

      數(shù)據(jù)發(fā)生器1,用于在啟動javacard虛擬機之前產(chǎn)生隨機數(shù);

      計算模塊2,用于依據(jù)隨機數(shù)計算出javacard虛擬機棧的內(nèi)存地址;

      定位模塊3,用于啟動javacard虛擬機,并將內(nèi)存地址確定為javacard虛擬機棧的實際內(nèi)存地址,以防止攻擊者找到j(luò)avacard虛擬機棧的實際內(nèi)存地址后進行錯誤注入。

      需要說明的是,本發(fā)明在使用過程中增加攻擊者對javacard虛擬機棧進行錯誤注入的難度,并在一定程度上防止了對javacard虛擬機棧的錯誤注入,提高了javacard虛擬機棧的安全性。

      另外,對應(yīng)本發(fā)明中所提供的javacard虛擬機棧的防錯誤注入系統(tǒng)中所涉及到的防錯誤注入方法的具體介紹請參照上述實施例,本申請在此不再贅述。

      還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

      對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1