亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于編碼元數(shù)據(jù)的方法和系統(tǒng)的制作方法

文檔序號(hào):6554290閱讀:205來(lái)源:國(guó)知局
專利名稱:用于編碼元數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及計(jì)算機(jī)和計(jì)算機(jī)數(shù)據(jù),尤其涉及用于編碼分塊元數(shù)據(jù)的系統(tǒng)和方法。
背景技術(shù)
目前,計(jì)算機(jī)的存儲(chǔ)器由在此通常稱為“存儲(chǔ)器管理程序”的一部分計(jì)算機(jī)操作系統(tǒng)管理。當(dāng)計(jì)算機(jī)程序或其它計(jì)算應(yīng)用程序(在此統(tǒng)稱為“應(yīng)用程序”)需要存儲(chǔ)器來(lái)執(zhí)行操作、存儲(chǔ)數(shù)據(jù)、或執(zhí)行其它功能時(shí),它通過(guò)向存儲(chǔ)器管理程序提供所需存儲(chǔ)器量的標(biāo)識(shí)來(lái)從存儲(chǔ)器管理程序中請(qǐng)求所需存儲(chǔ)器。作為響應(yīng),存儲(chǔ)器管理程序分配所請(qǐng)求數(shù)量的存儲(chǔ)器(在此稱為“塊”)、產(chǎn)生標(biāo)識(shí)并描述該塊的塊標(biāo)題、并允許發(fā)出請(qǐng)求的應(yīng)用程序訪問(wèn)所分配的存儲(chǔ)器。該塊標(biāo)題通常包括由存儲(chǔ)器管理程序創(chuàng)建并由該存儲(chǔ)器管理程序用來(lái)管理該存儲(chǔ)器的若干字段。例如,塊標(biāo)題的字段可包括塊大小的表示、與前一塊的鏈接的表示、塊標(biāo)記、未使用字節(jié)和其它內(nèi)部的塊狀態(tài)。
塊的大小可包括響應(yīng)存儲(chǔ)器請(qǐng)求而分配的塊的大小的標(biāo)識(shí)。標(biāo)記字段可由存儲(chǔ)器管理程序用來(lái)標(biāo)識(shí)所述塊是否忙碌、空閑、內(nèi)部分配等。未使用字節(jié)可向存儲(chǔ)器管理程序標(biāo)識(shí)未被發(fā)出請(qǐng)求的應(yīng)用程序使用的分配塊的字節(jié)。一般而言,塊標(biāo)題的字段由存儲(chǔ)器管理程序使用,并期望是私密的且僅由存儲(chǔ)器管理程序更改。此外,塊標(biāo)題的各個(gè)字段可在內(nèi)容、數(shù)量和大小上改變。
圖1是包括兩個(gè)分配塊101和102的一部分存儲(chǔ)器區(qū)域的框圖。每個(gè)塊101、102都包括塊標(biāo)題,它包括分成字段的標(biāo)識(shí)該塊的元數(shù)據(jù)。例如,塊102包括塊標(biāo)題103。塊標(biāo)題103包括有關(guān)分成6個(gè)字段105、107、109、111、113、115的塊102的元數(shù)據(jù)。每個(gè)字段105、107、109、111、113、115包括由存儲(chǔ)器管理程序用來(lái)管理塊102的信息。
盡管使用塊標(biāo)題使得管理數(shù)據(jù)更加有效,但它可能會(huì)使計(jì)算系統(tǒng)遭受攻擊和非預(yù)期差錯(cuò)。例如,應(yīng)用程序可請(qǐng)求特定數(shù)量的存儲(chǔ)器,分配該數(shù)量的存儲(chǔ)器,但寫(xiě)入比所分配存儲(chǔ)器能容納的更多的數(shù)據(jù)。因而,存儲(chǔ)器區(qū)域中的下一個(gè)塊標(biāo)題、以及可能下一個(gè)塊的一部分?jǐn)?shù)據(jù)會(huì)被改寫(xiě),從而產(chǎn)生會(huì)導(dǎo)致不可預(yù)測(cè)結(jié)果的不一致性。寫(xiě)入比所分配存儲(chǔ)器更多的數(shù)據(jù)通常稱為“緩沖區(qū)溢位”(buffer overrun)。緩沖區(qū)溢位可因應(yīng)用程序的疏忽不當(dāng)編碼所致。然而,緩沖區(qū)溢位可有意編程,以嘗試控制一部分存儲(chǔ)器并執(zhí)行有害代碼。
圖2是包括寫(xiě)有導(dǎo)致緩沖區(qū)溢位的有害代碼的兩個(gè)數(shù)據(jù)塊的存儲(chǔ)器區(qū)域的框圖。繼續(xù)參照?qǐng)D1討論的存儲(chǔ)器區(qū)域,應(yīng)用程序可請(qǐng)求寫(xiě)入數(shù)據(jù)所需的特定數(shù)量存儲(chǔ)器。作為響應(yīng),存儲(chǔ)器管理程序可從數(shù)據(jù)區(qū)域200分配一數(shù)據(jù)塊201、產(chǎn)生該數(shù)據(jù)塊201的塊標(biāo)題216、并允許發(fā)出請(qǐng)求的應(yīng)用程序?qū)懺搲K。如圖1和2可見(jiàn),所分配的數(shù)據(jù)塊201在存儲(chǔ)器區(qū)域200中可與另一分配的數(shù)據(jù)塊202相鄰,該數(shù)據(jù)塊202也包括塊標(biāo)題203和數(shù)據(jù)塊217。
當(dāng)許可對(duì)塊201的訪問(wèn)時(shí),應(yīng)用程序會(huì)在無(wú)意中寫(xiě)入比所分配存儲(chǔ)器更多的數(shù)據(jù),導(dǎo)致將數(shù)據(jù)寫(xiě)入塊標(biāo)題203以及可能相鄰存儲(chǔ)器塊201的數(shù)據(jù)塊217的一部分的緩沖區(qū)溢位。當(dāng)一些改寫(xiě)的塊標(biāo)題字段205、207、209、211、213、215由存儲(chǔ)器管理程序使用時(shí),可注意到不一致性并可通過(guò)執(zhí)行像引發(fā)例外、終止應(yīng)用程序、記錄差錯(cuò)等動(dòng)作來(lái)避免不可預(yù)測(cè)結(jié)果。
有害代碼的創(chuàng)建者可在努力控制應(yīng)用程序時(shí),嘗試向存儲(chǔ)器管理程序隱藏故意的緩沖區(qū)溢位,從而不能檢測(cè)到溢位,或者防止應(yīng)用程序因不一致而崩潰。一種用于隱藏緩沖區(qū)溢位的技術(shù)是嘗試恢復(fù)塊標(biāo)題的特定字段。特別地,有害代碼的創(chuàng)建者可預(yù)測(cè)塊標(biāo)題的哪些字段會(huì)導(dǎo)致存儲(chǔ)器管理程序檢測(cè)緩沖區(qū)溢位,并在有害代碼能控制之前終止該應(yīng)用程序。使用該知識(shí),可對(duì)那些字段預(yù)測(cè)好的值,且嘗試恢復(fù)那些字段的數(shù)據(jù)可包括在那些字段的位置處的緩沖區(qū)溢位中。例如,如果有害代碼的作者能預(yù)測(cè)假如字段3209和字段4211改變,存儲(chǔ)器管理程序?qū)z測(cè)緩沖區(qū)溢位,則基于該知識(shí)可創(chuàng)建緩沖區(qū)溢位,使寫(xiě)入到那些字段位置的數(shù)據(jù)與原來(lái)包括在那些字段中的數(shù)據(jù)相同。
如果有害代碼通過(guò)預(yù)測(cè)特定字段209和211的好的值成功隱藏緩沖區(qū)溢位,則它可能更改塊標(biāo)題205、207、213和219中的其它字段,從而當(dāng)存儲(chǔ)器管理程序訪問(wèn)那些字段時(shí),有害代碼能控制應(yīng)用程序并可能導(dǎo)致對(duì)計(jì)算機(jī)的預(yù)期有害結(jié)果,諸如在目標(biāo)應(yīng)用程序中執(zhí)行一段有害代碼。
因此,需要可用來(lái)在被有害代碼利用之前檢測(cè)所嘗試的緩沖區(qū)溢位的一種系統(tǒng)和方法。這種系統(tǒng)和方法將有利于防止計(jì)算機(jī)遭受有害攻擊,并提供在應(yīng)用程序開(kāi)發(fā)早期檢測(cè)疏忽編程缺陷的能力,而不必支付影響性能、存儲(chǔ)器使用等的其它調(diào)試方法的額外開(kāi)支。

發(fā)明內(nèi)容
一般而言,本發(fā)明的各個(gè)實(shí)施例提供一種系統(tǒng)和方法,用于檢測(cè)計(jì)算機(jī)是否受到有害攻擊并檢測(cè)緩沖區(qū)溢位。此外,本發(fā)明的各個(gè)實(shí)施例降低了利用緩沖區(qū)溢位和與使用存儲(chǔ)器管理程序功能相關(guān)的其它缺陷的有害代碼的風(fēng)險(xiǎn)。特別地,本發(fā)明的各個(gè)實(shí)施例保護(hù)數(shù)據(jù)塊的塊標(biāo)題內(nèi)容,并使能存儲(chǔ)器管理程序具有確定塊標(biāo)題的一部分是否已被更改的能力。
根據(jù)本發(fā)明的一方面,提供了一種用于保護(hù)具有多個(gè)字段的數(shù)據(jù)的方法。該方法包括將多個(gè)字段分組成至少第一組和第二組,并產(chǎn)生第一組的第一標(biāo)識(shí)符和第二組的第二標(biāo)識(shí)符。此外,該第一和第二組被編碼以保護(hù)各組字段中所包含的信息。另外,第一和第二標(biāo)識(shí)符也可被編碼到各組中。
根據(jù)本發(fā)明的另一方面,提供一種具有其中包括計(jì)算機(jī)可執(zhí)行程序的計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)可執(zhí)行程序用于執(zhí)行提供對(duì)至少一部分?jǐn)?shù)據(jù)的訪問(wèn)的方法,其中數(shù)據(jù)被分成多個(gè)組。所執(zhí)行的方法包括接收對(duì)一部分?jǐn)?shù)據(jù)的訪問(wèn)請(qǐng)求、并確定對(duì)應(yīng)于訪問(wèn)請(qǐng)求的多個(gè)數(shù)據(jù)組的至少一個(gè)組。然后所確定的組進(jìn)行解碼并可任選地校驗(yàn)標(biāo)識(shí)符是否是先前為該解碼組創(chuàng)建的。在校驗(yàn)解碼后的組之后,允許對(duì)該部分?jǐn)?shù)據(jù)進(jìn)行訪問(wèn)。
根據(jù)本發(fā)明的又一實(shí)施例,提供一種具有存儲(chǔ)其上的指令的計(jì)算機(jī)可訪問(wèn)介質(zhì),這些指令使計(jì)算系統(tǒng)將塊標(biāo)題的多個(gè)字段分組成至少兩個(gè)組,產(chǎn)生該至少兩個(gè)組的第一組的第一標(biāo)識(shí)符,編碼第一組和第一標(biāo)識(shí)符,并編碼第二組。


結(jié)合附圖參閱以下詳細(xì)說(shuō)明書(shū),本發(fā)明的前述各方面和許多伴隨優(yōu)點(diǎn)將變得更易理解,附圖中圖1是包括兩個(gè)分配塊的一部分存儲(chǔ)器區(qū)域的框圖;圖2是包括兩個(gè)數(shù)據(jù)塊的存儲(chǔ)器區(qū)域的框圖,在這些數(shù)據(jù)塊中寫(xiě)入了導(dǎo)致緩沖區(qū)溢位的有害代碼;圖3是根據(jù)本發(fā)明一實(shí)施例的編碼后塊標(biāo)題的框圖,該塊標(biāo)題被編碼為檢測(cè)因緩沖區(qū)溢位和其它非故意或惡意的未授權(quán)訪問(wèn)嘗試所導(dǎo)致的標(biāo)題元數(shù)據(jù)的破壞,并降低了惡意代碼利用其它因存儲(chǔ)器管理程序功能導(dǎo)致的其它弱點(diǎn)的可能性;
圖4是根據(jù)本發(fā)明一實(shí)施例的編碼后塊標(biāo)題的框圖,其中塊標(biāo)題的字段分組并分別編碼;圖5是示出根據(jù)本發(fā)明一實(shí)施例的用于編碼一字段組的編碼例程的流程圖;圖6是示出根據(jù)本發(fā)明一實(shí)施例的用于解碼一字段組的解碼例程的流程圖。
具體實(shí)施例方式
圖3是根據(jù)本發(fā)明一實(shí)施例的編碼后塊標(biāo)題的框圖,該塊標(biāo)題被編碼為檢測(cè)因緩沖區(qū)溢位和其它非故意或惡意的未授權(quán)訪問(wèn)嘗試所導(dǎo)致的標(biāo)題元數(shù)據(jù)的破壞,并降低了惡意代碼利用其它因存儲(chǔ)器管理程序功能導(dǎo)致的其它弱點(diǎn)的可能性。此外,參照?qǐng)D3描述的實(shí)施例可用來(lái)標(biāo)識(shí)編程差錯(cuò),而無(wú)需標(biāo)識(shí)緩沖區(qū)溢出的復(fù)雜調(diào)試開(kāi)支。
在該實(shí)施例中,塊標(biāo)題303的全部字段使用諸如加密的任何類型編碼技術(shù)來(lái)編碼,從而增加預(yù)測(cè)和/或發(fā)現(xiàn)標(biāo)題各個(gè)字段的值和位置的難度。為了基于過(guò)去對(duì)各字段的查看來(lái)預(yù)測(cè)好的值,各字段必須解碼以確定那些字段中所包含的值。如下所述,因?yàn)樗械木幋a和解碼都由存儲(chǔ)器管理程序來(lái)執(zhí)行,所以編碼技術(shù)的完整性和保密性可因不需要共享編碼/解碼算法和/或編碼/解碼密鑰而得到高度地保持。
盡管在此所述的各個(gè)實(shí)施例包括對(duì)具有6個(gè)字段的塊標(biāo)題的各個(gè)字段分組,但是可以理解任何數(shù)量的字段都可包括在標(biāo)題中并進(jìn)行分組。此外,字段可以是任意大小的,各字段的大小可相同或不同,且每個(gè)字段可基于存儲(chǔ)器管理程序的需要而動(dòng)態(tài)地產(chǎn)生。
編碼各字段也增加了將好的值(即使是已預(yù)測(cè)的)寫(xiě)入特定字段的難度。特別地,即使假設(shè)確定了好的值,緩沖區(qū)溢位數(shù)據(jù)必須使用適當(dāng)編碼算法和用于編碼原始值的密鑰進(jìn)行編碼。如果編碼不準(zhǔn)確,則即使值準(zhǔn)確,在由存儲(chǔ)器管理程序解碼時(shí),預(yù)期值也不會(huì)產(chǎn)生且存儲(chǔ)器管理程序?qū)z測(cè)到更改,從而在惡意代碼有機(jī)會(huì)進(jìn)行控制之前終止該應(yīng)用程序。
編碼技術(shù)的示例包括但不限于對(duì)稱(私鑰)加密。然而,因?yàn)榇鎯?chǔ)器管理程序是期望能編碼和/或解碼塊標(biāo)題的唯一程序,所以無(wú)需共享用來(lái)編碼信息的私鑰和/或算法。此外,所使用的密鑰和/或所使用的算法可由存儲(chǔ)器管理程序改變,以進(jìn)一步增加訪問(wèn)和改寫(xiě)塊標(biāo)題數(shù)據(jù)的難度。例如編碼密鑰和/或算法可對(duì)不同的存儲(chǔ)器管理程序、不同的存儲(chǔ)器區(qū)域、不同的存儲(chǔ)器塊等不同。此外,編碼密鑰和/或編碼算法可周期性地變化。例如,編碼密鑰和/或算法可在每次編碼標(biāo)題時(shí)(例如每天、啟動(dòng)等)變化。盡管本發(fā)明的各個(gè)實(shí)施例將參照使用一種私鑰加密編碼塊標(biāo)題來(lái)進(jìn)行描述,可以理解可使用任何類型編碼技術(shù)來(lái)加密塊標(biāo)題,且在此提供的描述僅作為解釋目的而并非被理解為限制本發(fā)明的范圍。
除了編碼塊標(biāo)題之外,在編碼之前,標(biāo)題的各個(gè)字段可重新安排,從而進(jìn)一步增加預(yù)測(cè)應(yīng)寫(xiě)入預(yù)測(cè)值的位置的難度。例如,不以相同順序組織所有塊標(biāo)題的字段,例如字段1-6,而是各字段可在編碼之前重新組織使它們以下列順序-字段3、字段6、字段1、字段2、字段5、字段4-或任何其它順序出現(xiàn)。類似于所使用的編碼技術(shù),各字段可周期性地重新組織并可對(duì)每個(gè)塊標(biāo)題都不同。例如,每次編碼標(biāo)題時(shí),各字段都可在編碼之前重新組織?;蛘?,各字段可在任何其它時(shí)間重新組織并按任何順序放置。重新組織塊標(biāo)題的各個(gè)字段進(jìn)一步增加了確定各字段位置并預(yù)測(cè)各字段的值的難度。
此外,在編碼塊標(biāo)題之前,可產(chǎn)生塊標(biāo)題的標(biāo)識(shí)符,該標(biāo)識(shí)符由存儲(chǔ)器管理程序用來(lái)在解碼塊標(biāo)題時(shí)確認(rèn)它。標(biāo)識(shí)符可以是例如校驗(yàn)和、散列值、隨機(jī)賦予的值等。在校驗(yàn)和或散列值的情形中,存儲(chǔ)器管理程序?qū)K標(biāo)題運(yùn)算公式,且返回值被存儲(chǔ)為該塊標(biāo)題的標(biāo)識(shí)符。該標(biāo)識(shí)符可與標(biāo)題一起存儲(chǔ),并可由存儲(chǔ)器管理程序分別編碼、存儲(chǔ)(例如在表格中),或可與標(biāo)題一起存儲(chǔ),或由存儲(chǔ)器管理程序獨(dú)立編碼和存儲(chǔ)。在驗(yàn)證時(shí),對(duì)塊標(biāo)題運(yùn)算同一公式以計(jì)算新值,并對(duì)存儲(chǔ)值和新值作比較。
在隨機(jī)數(shù)的情形中,隨機(jī)數(shù)產(chǎn)生并與加密后標(biāo)題一起存儲(chǔ),且存儲(chǔ)器管理程序還維護(hù)包含隨機(jī)生成數(shù)的表格。在解碼塊標(biāo)題時(shí),與塊標(biāo)題一起存儲(chǔ)的隨機(jī)數(shù)通過(guò)對(duì)它和由存儲(chǔ)器管理程序存儲(chǔ)的數(shù)作比較來(lái)驗(yàn)證。盡管校驗(yàn)和、散列值和隨機(jī)數(shù)在此被描述為用來(lái)驗(yàn)證塊標(biāo)題的標(biāo)識(shí)符,可以理解任何類型的標(biāo)識(shí)符可用來(lái)驗(yàn)證塊標(biāo)題。
盡管重新排列塊標(biāo)題字段的順序、編碼該標(biāo)題、以及產(chǎn)生標(biāo)題的標(biāo)識(shí)符增加了不經(jīng)檢測(cè)而改變塊標(biāo)題元數(shù)據(jù)的難度,但是當(dāng)嘗試執(zhí)行對(duì)塊標(biāo)題各字段的多次訪問(wèn)時(shí)產(chǎn)生了同步(鎖定)的復(fù)雜性。因而,根據(jù)本發(fā)明另一實(shí)施例,塊標(biāo)題的各字段可分組并分別編碼。
圖4是根據(jù)本發(fā)明一實(shí)施例的編碼后塊標(biāo)題的框圖,其中塊標(biāo)題的各字段分組并分別編碼。數(shù)據(jù)塊402的塊標(biāo)題403使得塊標(biāo)題的各個(gè)字段分組并分別編碼。例如,字段3 409、字段6 415和字段1 405可組合并一起編碼,而其它各字段可組合在一個(gè)或多個(gè)其它組中并編碼。如以下參照?qǐng)D5要詳述的,各字段可基于訪問(wèn)要求、鎖定要求、隨機(jī)分組、或基于各字段之間的任何其它關(guān)系來(lái)分組。
類似于參照?qǐng)D3所述的實(shí)施例,該實(shí)施例可用來(lái)在開(kāi)發(fā)階段早期標(biāo)識(shí)編程差錯(cuò),因?yàn)樗鼘?biāo)識(shí)緩沖區(qū)溢出和與存儲(chǔ)器管理程序功能相關(guān)的其它缺陷。此外,任何數(shù)量和/或大小的字段可組合在一起。
類似于產(chǎn)生標(biāo)題的標(biāo)識(shí)符,還可產(chǎn)生每個(gè)組的標(biāo)識(shí)符,該標(biāo)識(shí)符與組一起存儲(chǔ)和/或由存儲(chǔ)器管理程序存儲(chǔ)。例如,組1 407可被散列編碼,且結(jié)果散列值被用作標(biāo)識(shí)符。該散列值可由存儲(chǔ)器管理程序與組1 407分開(kāi)存儲(chǔ)??捎?jì)算組2 410的校驗(yàn)和,它與組2 410的各字段一起存儲(chǔ)。塊標(biāo)題403的其余字段可被包括在第三組-組3 411中。對(duì)組3 411未分配標(biāo)識(shí)符。如前所述,可使用任何技術(shù)(例如校驗(yàn)和生成、散列或隨機(jī)數(shù)生成)來(lái)產(chǎn)生各組的標(biāo)識(shí)符,或者對(duì)一個(gè)或多個(gè)組不計(jì)算標(biāo)識(shí)符。
除了任選地將標(biāo)識(shí)符分配給塊標(biāo)題403的每個(gè)組之外,各組可使用任何類型的編碼技術(shù)來(lái)各自編碼。每個(gè)組可使用不同技術(shù)來(lái)進(jìn)行編碼,或者可對(duì)每個(gè)組應(yīng)用相同技術(shù)的不同值/算法。繼續(xù)圖4示例,可使用采用不同算法和/或密鑰來(lái)編碼每個(gè)組的私鑰加密來(lái)編碼各個(gè)組。例如,存儲(chǔ)器管理程序可維護(hù)在編碼對(duì)應(yīng)于特定鎖定要求的各字段時(shí)使用的第一算法和密鑰,以及用于編碼對(duì)應(yīng)于另一鎖定要求的各字段的另外算法和密鑰。此外,并非所有組都需要進(jìn)行編碼。因而,訪問(wèn)頻繁并且在更改時(shí)容易檢測(cè)到的各個(gè)組可保持解碼狀態(tài),而其它組則可被編碼。
如存儲(chǔ)器管理程序領(lǐng)域所眾所周知的,多個(gè)鎖可用來(lái)控制對(duì)存儲(chǔ)器的并發(fā)訪問(wèn)。例如,排他鎖可用來(lái)僅允許一個(gè)應(yīng)用程序訪問(wèn),直到該鎖釋放。或者,非排他性或共享的鎖可用來(lái)允許多個(gè)執(zhí)行線程對(duì)存儲(chǔ)器的并發(fā)訪問(wèn),只要該鎖不是排他性擁有的。通常,排他性鎖被用來(lái)許可對(duì)數(shù)據(jù)結(jié)構(gòu)的寫(xiě)訪問(wèn),而共享鎖通常用來(lái)許可對(duì)數(shù)據(jù)的讀訪問(wèn),其中沒(méi)有人可更改數(shù)據(jù)。因?yàn)橛腥舾煞N不同的可用來(lái)控制對(duì)存儲(chǔ)器的訪問(wèn)的鎖定方案,且本發(fā)明各實(shí)施例可用于任何類型的鎖定方案,鎖和鎖定要求在此被統(tǒng)稱為L(zhǎng)ock(鎖)。此外,鎖和/或鎖定要求之間的差異將通過(guò)參照Lock 1、Lock 2、Lock 3等示出,其中每個(gè)編號(hào)Lock表示一不同的鎖或鎖定要求。
回到本示例,存儲(chǔ)器管理程序可維護(hù)對(duì)應(yīng)于Lock 1的第一密鑰和算法,并使用該第一密鑰和算法來(lái)編碼組1 407,該組包括與Lock 1相關(guān)的各個(gè)字段。類似地,存儲(chǔ)器管理程序可維護(hù)對(duì)應(yīng)于Lock 2的第二密鑰和算法,并使用該第二密鑰和算法來(lái)編碼組2 410??墒褂脤?duì)應(yīng)于Lock 3的第三密鑰與算法來(lái)編碼組3 411。盡管這示出了使單個(gè)密鑰和算法關(guān)聯(lián)于不同組的簡(jiǎn)單示例,其中各個(gè)字段根據(jù)鎖定要求來(lái)分組,但是根據(jù)本發(fā)明各實(shí)施例可使用許多變體。
例如,存儲(chǔ)器管理程序可維護(hù)對(duì)應(yīng)于不同鎖定要求的密鑰和算法庫(kù),而用來(lái)編碼特定塊標(biāo)題的組的實(shí)際密鑰和/或算法可在每次編碼該組時(shí)從庫(kù)中隨機(jī)選取。
此外,在編碼之前組407、409、411內(nèi)的各個(gè)字段也可排列成以不同順序出現(xiàn)。例如,在組2 410中的字段1 405、字段3 409、字段6 415可排列成使字段3 409在先、字段6 415次之、字段1 405最后。各字段的排列可在系統(tǒng)、存儲(chǔ)器管理程序、塊、使用等基礎(chǔ)上進(jìn)行。例如,每當(dāng)存儲(chǔ)器管理程序訪問(wèn)一個(gè)組時(shí),該組的各個(gè)字段可在再次編碼之前重新組織。
圖5是示出根據(jù)本發(fā)明一實(shí)施例的用于編碼一字段組的編碼例程的流程圖。圖5-6示出用于執(zhí)行特定功能的各個(gè)框。在其它實(shí)施例中,可使用更多或更少的框。在本發(fā)明一實(shí)施例中,框可表示單個(gè)或組合的軟件程序、軟件對(duì)象、軟件功能、軟件子例程、軟件方法、軟件實(shí)例、代碼分段、硬件操作、或用戶操作。編碼例程500從框501開(kāi)始,且在框503存儲(chǔ)器管理程序標(biāo)識(shí)要編碼的塊標(biāo)題的各個(gè)字段。這些字段可以是在存儲(chǔ)器管理程序響應(yīng)于存儲(chǔ)器請(qǐng)求分配存儲(chǔ)器時(shí)創(chuàng)建的塊標(biāo)題的所有字段?;蛘?,這些字段可以是要重新編碼的先前已解碼的現(xiàn)有塊標(biāo)題的所有字段。
一般而言,基于一些關(guān)系來(lái)分組各字段是有利的。例如,各字段可基于共同的鎖定要求、基于同時(shí)訪問(wèn)的要求、基于大小等來(lái)分組。例如,塊標(biāo)題的一些字段僅可使用Lock 1來(lái)訪問(wèn),該Lock 1是諸如排他性鎖的特定鎖定要求;另一個(gè)組通常可基于Lock 2要求來(lái)訪問(wèn);而又一個(gè)組可基于Lock 3要求來(lái)訪問(wèn)。因而,可確定塊標(biāo)題的各字段要分成三組-由Lock 1訪問(wèn)的各字段的一個(gè)組、由Lock 2訪問(wèn)的各字段的一個(gè)組、而由Lock 3訪問(wèn)的各字段的第三個(gè)組。
在框507,各字段根據(jù)各字段之間的關(guān)系來(lái)分組。取決于所需安全、字段數(shù)量、字段之間的關(guān)系和任何體系結(jié)構(gòu)-特定限制,各字段可分成一個(gè)或多個(gè)組。所有字段可被包括在一個(gè)組中,這將表示以上參照?qǐng)D3描述的示例。或者,各字段可分成多個(gè)組,或一個(gè)或多個(gè)字段可本身包括在一個(gè)組中。
再參看圖4,字段3 409、字段6 415、字段1 405因?yàn)樗鼈兌枷嚓P(guān)而組合在一起。在框509,一個(gè)組的各個(gè)字段被排列成進(jìn)一步打亂各字段的排列和值并使字段值和位置的預(yù)測(cè)更困難。如上所述,一個(gè)組的各個(gè)字段可以任何順序并根據(jù)任何排列方案排列。例如,一個(gè)組中各個(gè)字段的排列可以是隨機(jī)的、基于各字段大小、訪問(wèn)各字段的頻率的、基于字段中所包含值的等等。例如,組2的字段1 405、字段3 409、字段6 415(圖4)被排列成字段3 409在先、字段6 415其次、字段1 405最后??梢岳斫猓魏闻帕蟹桨缚捎糜谂帕幸粋€(gè)組中的各個(gè)字段。此外,如上所述,一個(gè)組內(nèi)各個(gè)字段的排列可周期性地變化。例如,一個(gè)組的各個(gè)字段可在每次編碼字段時(shí)重新排列。如果有影響字段的分組或排列的體系結(jié)構(gòu)-特定限制,則各字段可根據(jù)那些限制來(lái)分組和排列。例如,如果強(qiáng)加了有關(guān)訪問(wèn)對(duì)齊字段或訪問(wèn)一組字段的限制,則各字段可以使能與那些限制一致的方式來(lái)進(jìn)行組合和排列。
在判定框511,確定是否要產(chǎn)生一標(biāo)識(shí)符并使其與一個(gè)組相關(guān)聯(lián)。如果確定要產(chǎn)生一標(biāo)識(shí)符并使其與一個(gè)組相關(guān)聯(lián),則在框513產(chǎn)生一標(biāo)識(shí)符。標(biāo)識(shí)符可用各種方法的任一種來(lái)產(chǎn)生。例如,標(biāo)識(shí)符可以是,但不限于是,與該組相關(guān)聯(lián)的隨機(jī)生成數(shù)、為該組計(jì)算的散列值、為該組計(jì)算的校驗(yàn)和值等。此外,在使標(biāo)識(shí)符與該組相關(guān)聯(lián)時(shí),該標(biāo)識(shí)符可以與該組的各個(gè)字段一起存儲(chǔ)、可包括為該組的一個(gè)字段、由存儲(chǔ)器管理程序與該組分開(kāi)維護(hù)、或者與該組一起存儲(chǔ)并由存儲(chǔ)器管理程序與該組分開(kāi)維護(hù)。
在標(biāo)識(shí)符在框513產(chǎn)生之后,或者如果在判定框511確定不計(jì)算標(biāo)識(shí)符,則在框515編碼該組以及(可選地)該標(biāo)識(shí)符。編碼可使用任何類型的編碼技術(shù)來(lái)完成。例如,存儲(chǔ)器管理程序可維護(hù)用來(lái)編碼一組數(shù)據(jù)的密鑰和算法列表。此外,對(duì)于每一組標(biāo)題塊,可使用不同的編碼方案、算法和/或密鑰。
在判定框517,確定是否還有其它組要編碼。如果確定還有其它塊要編碼,則例程500返回框509并繼續(xù)。然而,如果確定沒(méi)有其它組要編碼,則例程500完成,如框519所示。
圖6是根據(jù)本發(fā)明一實(shí)施例的用于解碼塊標(biāo)題的至少一部分的解碼例程的流程圖。該解碼例程從框601開(kāi)始,且在框603存儲(chǔ)器管理程序接收對(duì)包括編碼后標(biāo)題的存儲(chǔ)器塊的訪問(wèn)請(qǐng)求。在框605,存儲(chǔ)器管理程序基于訪問(wèn)請(qǐng)求確定需要解碼哪些加密的塊標(biāo)題組。例如,如果訪問(wèn)請(qǐng)求需要一排他性鎖,則包含標(biāo)識(shí)該鎖的字段的編碼后組將需要解碼。
在框605確定要解碼的(各個(gè))組之后,在框607,所確定組之一使用適當(dāng)?shù)慕獯a技術(shù)來(lái)解碼。該適當(dāng)解碼技術(shù)對(duì)應(yīng)于編碼該組使用的技術(shù)。這種信息由存儲(chǔ)器管理程序維護(hù),因?yàn)樗蔷幋a該組的程序。例如,如果該組使用密鑰和特定算法編碼,則該密鑰和相應(yīng)編碼算法被用來(lái)解碼該組。在解碼該組之后,在判定框609,基于分配給該組的標(biāo)識(shí)符確定是否要校驗(yàn)該組。如果解碼后的組包括一標(biāo)識(shí)符,或者如果標(biāo)識(shí)符被分配給該組并由存儲(chǔ)器管理程序維護(hù),則校驗(yàn)該標(biāo)識(shí)符,如框611所示。例如,如果該組的散列值被計(jì)算并包括在編碼后的組中,則在解碼后再次計(jì)算該組的散列值并與該組內(nèi)所包括的散列值作比較。如果兩個(gè)散列值相同,則該組未被緩沖區(qū)溢位更改。然而,如果散列值不相同,則該組已被更改且存儲(chǔ)器管理程序可拒絕該請(qǐng)求并終止應(yīng)用程序,從而降低了有害代碼可保持隱藏并可能進(jìn)行控制的可能性。
一旦在框611已校驗(yàn)了解碼后組的內(nèi)容,或者如果在判定框609確定不校驗(yàn)該內(nèi)容,則在判定框613確定響應(yīng)于訪問(wèn)請(qǐng)求是否有其它組要解碼。如果確定還有其它組要解碼,則例程600返回到框607并繼續(xù)。然而,如果確定沒(méi)有其它組解碼,則在框615,例程繼續(xù)且存儲(chǔ)器管理程序被允許訪問(wèn)解碼后組的各個(gè)字段。此外,響應(yīng)于被許可的訪問(wèn),存儲(chǔ)器管理程序可更改已經(jīng)解碼的一部分或全部字段。在適當(dāng)組已解碼并許可存儲(chǔ)器管理程序的訪問(wèn)時(shí)例程結(jié)束,如框617所示。
盡管已示出并描述了本發(fā)明的各個(gè)實(shí)施例,但可以理解可作出各種改變而不背離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于保護(hù)具有多個(gè)字段的數(shù)據(jù)的方法,所述方法包括將多個(gè)字段分組成至少第一組和第二組;產(chǎn)生所述第一組的第一標(biāo)識(shí)符和所述第二組的第二標(biāo)識(shí)符;編碼所述第一組;以及編碼所述第二組。
2.如權(quán)利要求1所述的方法,其特征在于,所述第一組包括所述多個(gè)字段的至少兩個(gè),所述方法還包括響應(yīng)于將多個(gè)字段分組,排列所述第一組的至少兩個(gè)字段。
3.如權(quán)利要求1所述的方法,其特征在于,所述第一標(biāo)識(shí)符與所述第一組一起編碼。
4.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)是標(biāo)題數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,所述多個(gè)字段是數(shù)據(jù)塊標(biāo)題的字段。
6.如權(quán)利要求1所述的方法,其特征在于,將所述多個(gè)字段分組包括確定在所述多個(gè)字段之間的關(guān)系;以及根據(jù)所確定的在多個(gè)字段之間的關(guān)系將所述各字段分組。
7.如權(quán)利要求1所述的方法,其特征在于,將所述各字段分組包括以任意順序?qū)⑺龈髯侄畏纸M。
8.如權(quán)利要求1所述的方法,其特征在于,所述第一標(biāo)識(shí)符是對(duì)所述組產(chǎn)生的校驗(yàn)和。
9.一種具有其中包括計(jì)算機(jī)可執(zhí)行程序的計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)可執(zhí)行程序用于執(zhí)行提供對(duì)至少一部分?jǐn)?shù)據(jù)的訪問(wèn)的方法,其中數(shù)據(jù)被分成多個(gè)組,所述方法包括接收對(duì)一部分?jǐn)?shù)據(jù)的訪問(wèn)請(qǐng)求;確定對(duì)應(yīng)于所述訪問(wèn)請(qǐng)求的多個(gè)數(shù)據(jù)組的至少一個(gè)組,其中所確定的至少一個(gè)組包括一標(biāo)識(shí)符;解碼所確定的至少一個(gè)組;校驗(yàn)解碼后的至少一個(gè)組的標(biāo)識(shí)符;以及許可對(duì)解碼后的至少一個(gè)組的訪問(wèn)。
10.如權(quán)利要求9所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述多個(gè)組的至少之一包括多個(gè)字段,且其中確定至少一個(gè)組包括標(biāo)識(shí)對(duì)應(yīng)于所述訪問(wèn)請(qǐng)求的多個(gè)字段的一個(gè)字段;以及基于所標(biāo)識(shí)字段確定至少一個(gè)組。
11.如權(quán)利要求9所述的計(jì)算機(jī)系統(tǒng),還包括從用于解碼所確定的至少一個(gè)組的多個(gè)解碼算法中選擇一解碼算法。
12.如權(quán)利要求9所述的計(jì)算機(jī)系統(tǒng),還包括從用于解碼所確定的至少一個(gè)組的多個(gè)解碼密鑰中選擇一解碼密鑰。
13.如權(quán)利要求9所述的計(jì)算機(jī)系統(tǒng),其特征在于,校驗(yàn)解碼后的至少一個(gè)組包括產(chǎn)生表示所述解碼后組的標(biāo)識(shí)符,并對(duì)所產(chǎn)生的標(biāo)識(shí)符和解碼后組的標(biāo)識(shí)符作比較。
14.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述已知標(biāo)識(shí)符包括在所述解碼后組中。
15.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其特征在于,所產(chǎn)生的標(biāo)識(shí)符是一校驗(yàn)和。
16.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述已知標(biāo)識(shí)符是先前對(duì)所述組產(chǎn)生的一校驗(yàn)和。
17.一種具有存儲(chǔ)其上的指令的計(jì)算機(jī)可訪問(wèn)介質(zhì),所述指令使計(jì)算機(jī)系統(tǒng)將塊標(biāo)題的多個(gè)字段分組成至少兩個(gè)組;產(chǎn)生所述至少兩個(gè)組的第一組的第一標(biāo)識(shí)符;編碼所述第一組和所述第一標(biāo)識(shí)符;以及編碼所述第二組。
18.如權(quán)利要求17所述的計(jì)算機(jī)可訪問(wèn)介質(zhì),其特征在于,所述第一組包括至少兩個(gè)字段,且其中所述字段按隨機(jī)順序排列。
19.如權(quán)利要求17所述的計(jì)算機(jī)可訪問(wèn)介質(zhì),其特征在于,所述第一組和第一標(biāo)識(shí)符使用第一加密算法編碼,而所述第二組使用第二算法編碼。
20.如權(quán)利要求17所述的計(jì)算機(jī)可訪問(wèn)介質(zhì),其特征在于,所述第一組和第一標(biāo)識(shí)符使用第一加密密鑰編碼,而所述第二組使用第二密鑰編碼。
全文摘要
一般而言,本發(fā)明的各個(gè)實(shí)施例提供一種系統(tǒng)和方法,用于保護(hù)計(jì)算機(jī)免遭(故意或無(wú)意的)有害攻擊和緩沖區(qū)溢位。特別地,本發(fā)明的各個(gè)實(shí)施例保護(hù)數(shù)據(jù)塊的塊標(biāo)題內(nèi)容,并使能存儲(chǔ)器管理程序具有確定塊標(biāo)題的一部分是否已更改的能力。根據(jù)本發(fā)明的一方面,提供了一種用于保護(hù)具有多個(gè)字段的數(shù)據(jù)的方法。該方法包括將多個(gè)字段分成至少第一組和第二組,并產(chǎn)生第一組的第一標(biāo)識(shí)符和第二組的第二標(biāo)識(shí)符。此外,該第一和第二組被編碼成保護(hù)在各組字段中所包含的信息。另外,第一和第二標(biāo)識(shí)符也可被編碼到各組中。
文檔編號(hào)G06F21/00GK1828590SQ20061000379
公開(kāi)日2006年9月6日 申請(qǐng)日期2006年2月10日 優(yōu)先權(quán)日2005年3月3日
發(fā)明者A·馬里內(nèi)斯庫(kù) 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1