欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對FAT文件系統(tǒng)的文件加密支持的制作方法

文檔序號:11450694閱讀:780來源:國知局
對FAT文件系統(tǒng)的文件加密支持的制造方法與工藝

相關(guān)申請的交叉引用

本申請根據(jù)35u.s.c.§119(e)要求2015年1月20日提交的題為“nativefileencryptionsupportonfatfamilyfilesystems(fat系文件系統(tǒng)上的本機(jī)文件加密支持)”的美國臨時專利申請no.62/105,632和2015年6月5日提交的題為“fileencryptionsupportforfatfilesystems(對于fat文件系統(tǒng)的文件加密支持)”的美國臨時專利申請no.62/171,708的權(quán)益,并且根據(jù)35u.s.c.§120要求2015年12月3日提交的題為“fileencryptionsupportforfatfilesystems(對于fat文件系統(tǒng)的文件加密支持)”的美國專利申請no.14/957,789的權(quán)益,它們的內(nèi)容通過引用整體并入本文。



背景技術(shù):

在計算中,文件系統(tǒng)經(jīng)常是操作系統(tǒng)的組件,用于存儲和組織計算機(jī)文件及其所包含的數(shù)據(jù)以使得易于查找和訪問它們。某些文件系統(tǒng),諸如新技術(shù)文件系統(tǒng)(ntfs),為文件級加密提供本機(jī)支持。在ntfs內(nèi)是通過加密文件系統(tǒng)(efs)組件來提供文件級加密支持。當(dāng)文件被ntfs上的efs加密時,efs為該文件創(chuàng)建一$efs屬性,用來存儲用于該加密文件的加密元數(shù)據(jù),諸如證書、初始化向量、文件加密密鑰等。



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

本公開內(nèi)容的一些方面使得本機(jī)文件加密支持能夠被集成到不提供此類支持的現(xiàn)有文件系統(tǒng)中,諸如fat系的文件系統(tǒng),而同時維持與這些文件系統(tǒng)的先前實(shí)現(xiàn)的后向兼容性。本文所公開的一些方面包括用于在保持后向兼容性的同時在文件系統(tǒng)中存儲加密元數(shù)據(jù)的方式、用于操縱文件名以使得較舊的操作系統(tǒng)仍然可以看到和操縱那些文件的方式、以及用于操縱文件元數(shù)據(jù)以使得文件系統(tǒng)的先前實(shí)現(xiàn)及其相關(guān)聯(lián)的操作系統(tǒng)仍然可以解譯那些文件并且在不損壞數(shù)據(jù)的情況下使用該文件系統(tǒng)的方式。

本概要被提供來以簡化的形式介紹概念的選擇,這些概念在下面的詳細(xì)說明中進(jìn)一步被描述。本概要既不打算標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不打算用來限制所要求保護(hù)的主題的范圍。

附圖說明

當(dāng)結(jié)合附圖閱讀時,將更好地理解上述的概要以及下面的詳細(xì)說明。為了圖示本公開內(nèi)容,示出了本公開內(nèi)容的各個方面。然而,本公開內(nèi)容不限于所討論的特定方面。在圖中:

圖1圖示了在其中可以采用本文公開的一些方面的示范性操作環(huán)境;

圖2是圖示在文件系統(tǒng)的目錄中的用于文件的一連串目錄項的圖;

圖3是圖示用于在維持與文件系統(tǒng)的先前實(shí)現(xiàn)的后向兼容性的同時將本機(jī)加密支持集成到文件系統(tǒng)中的方法的一個實(shí)施例的流程圖;以及

圖4是圖示用于在維持與文件系統(tǒng)的先前實(shí)現(xiàn)的后向兼容性的同時將本機(jī)加密支持集成到文件系統(tǒng)中的方法的另一個實(shí)施例的流程圖。

具體實(shí)施方式

和對文件級加密提供本機(jī)支持的文件系統(tǒng)不同,其他文件系統(tǒng)——諸如文件分配表(fat)系的文件系統(tǒng),其包括fat32、fat16、fat12和exfat文件系統(tǒng)——對文件加密不提供本機(jī)支持。在這些文件系統(tǒng)中,沒有用于存儲對于加密文件的加密元數(shù)據(jù)的本機(jī)機(jī)制,諸如現(xiàn)有的文件流或文件屬性。

fat系的文件系統(tǒng)經(jīng)常被使用在存儲卡(sd)和其他可拆卸介質(zhì)上。目前,加密sd卡或其他可拆卸介質(zhì)的內(nèi)容需要利用的確支持本機(jī)加密的文件系統(tǒng)來重新格式化整個存儲介質(zhì),或是需要使用諸如bitlocker之類的加密工具。但是,這樣的工具經(jīng)常只提供卷級的加密,而不是文件級加密。

本公開內(nèi)容的一些方面使得本機(jī)文件加密支持能夠被集成到不提供此類支持的現(xiàn)有文件系統(tǒng)中,例如fat系的文件系統(tǒng),而同時維持與這些文件系統(tǒng)的先前實(shí)現(xiàn)的后向兼容性。本文所公開的一些方面包括用于在保持后向兼容性的同時在文件系統(tǒng)中存儲加密元數(shù)據(jù)的方式、用于操縱文件名以使得較舊的操作系統(tǒng)仍然可以看到和操縱那些文件的方式,以及用于操縱文件元數(shù)據(jù)以使得文件系統(tǒng)的先前實(shí)現(xiàn)及其相關(guān)聯(lián)的操作系統(tǒng)仍然可以解譯文件并且在不損壞數(shù)據(jù)的情況下使用該文件系統(tǒng)的方式。

圖1圖示了用于實(shí)現(xiàn)本公開內(nèi)容的各個方面的示范性環(huán)境100。如圖所示,環(huán)境100包括計算設(shè)備112。計算設(shè)備112可以是各種各樣不同類型的計算設(shè)備中的任何一種,包括但不限于計算機(jī)、個人計算機(jī)、服務(wù)器、便攜式計算機(jī)、移動計算機(jī)、可穿戴式計算機(jī)、膝上型電腦、平板電腦、個人數(shù)字助理、智能電話、數(shù)碼相機(jī)或任何其他自動執(zhí)行計算的機(jī)器。

計算設(shè)備112包括處理單元114、系統(tǒng)存儲器116和系統(tǒng)總線118。系統(tǒng)總線118將系統(tǒng)組件耦合到處理單元114,系統(tǒng)組件包括但不限于系統(tǒng)存儲器116。處理單元114可以是各種可用處理器的任何一種。雙微處理器和其他多處理器架構(gòu)也可以被采用來作為處理單元114。

系統(tǒng)總線118可以是若干類型的(一個或多個)總線結(jié)構(gòu)中的任何一種,包括存儲器總線或存儲器控制器、外圍總線或外部總線、和/或使用任何的各種各樣的可用總線架構(gòu)的本地總線,所述總線架構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)架構(gòu)(isa)、微通道架構(gòu)(msa)、擴(kuò)展的isa(eisa)、智能驅(qū)動電子(ide)、vesa本地總線(vlb)、外圍組件互連(pci)、卡總線、通用串行總線(usb)、高級圖形端口(agp)、個人計算機(jī)存儲卡國際協(xié)會總線(pcmcia)、火線(ieee1394)和小型計算機(jī)系統(tǒng)接口(scsi)。

系統(tǒng)存儲器116包括易失性存儲器120和非易失性存儲器122?;据斎?輸出系統(tǒng)(bios)被存儲在非易失性存儲器122中,其包含諸如在啟動期間用于在計算設(shè)備112內(nèi)的單元之間轉(zhuǎn)移信息的基本例程。作為舉例說明而非限制,非易失性存儲器122可以包括只讀存儲器(rom)、可編程rom(prom)、電可編程rom(eprom)、電可擦除rom(sram)或閃速存儲器。易失性存儲器120包括充當(dāng)外部高速緩沖存儲器的隨機(jī)存取存儲器(ram)。作為舉例說明而不是限制,有許多形式的ram可供使用,諸如同步ram(sram)、動態(tài)ram(dram)、同步dram(sdram)、雙倍數(shù)據(jù)速率sdram(ddrsdram)、增強(qiáng)型sdram(esdram)、同步鏈路dram(sldram)和直接rambusram(drram)。

計算設(shè)備112還包括可拆卸/不可拆卸的、易失性/非易失性的計算機(jī)可讀存儲介質(zhì)。圖1圖示了例如盤存儲裝置124。盤存儲裝置124包括但不限于類似如下的設(shè)備:磁盤驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū)動器、jaz驅(qū)動器、zip驅(qū)動器、ls-100驅(qū)動器、存儲卡(諸如sd存儲卡)或記憶棒。此外,盤存儲裝置124可以單獨(dú)地包括存儲介質(zhì)或與其他存儲介質(zhì)相組合地包括存儲介質(zhì),其他存儲介質(zhì)包括但不限于光盤驅(qū)動器,諸如壓密盤rom設(shè)備(cd-rom)、cd可刻錄驅(qū)動器(cd-r驅(qū)動器)、cd可重寫驅(qū)動器(cd-rw驅(qū)動器)或數(shù)字通用盤rom驅(qū)動器(dvd-rom)。為了便于將盤存儲設(shè)備124連接到系統(tǒng)總線118,通常使用可拆卸或不可拆卸的接口,諸如接口126。

圖1還描繪了在用戶和適當(dāng)操作環(huán)境100中所描述的基本計算機(jī)資源之間充當(dāng)中介的軟件。這樣的軟件包括操作系統(tǒng)128。可以被存儲在盤存儲裝置124上的操作系統(tǒng)128行動,以控制和分配計算設(shè)備112的資源。應(yīng)用130通過存儲在系統(tǒng)存儲器116或盤存儲裝置124中的程序模塊132和程序數(shù)據(jù)134而利用由操作系統(tǒng)128進(jìn)行的對資源的管理。要理解的是,本文描述的一些方面可以用各種操作系統(tǒng)或操作系統(tǒng)的組合來實(shí)現(xiàn)。如進(jìn)一步顯示的,操作系統(tǒng)128包括文件系統(tǒng)129,其用于在盤存儲裝置124上存儲和組織計算機(jī)文件及其包含的數(shù)據(jù),以使得易于查找和訪問它們。

用戶可以通過(一個或多個)輸入設(shè)備136將命令或信息輸入到計算設(shè)備112。輸入設(shè)備136包括但不限于:諸如鼠標(biāo)的指示設(shè)備、跟蹤球、觸控筆、觸摸板、鍵盤、麥克風(fēng)、操縱桿、游戲手柄、衛(wèi)星碟形天線、掃描儀、電視調(diào)諧器卡、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)、網(wǎng)絡(luò)攝像機(jī)等。這些和其他輸入設(shè)備經(jīng)由(一個或多個)接口端口138通過系統(tǒng)總線118連接到處理單元114。(一個或多個)接口端口138包括例如串行端口、并行端口、游戲端口和通用串行總線(usb)。(一個或多個)輸出設(shè)備140使用與(一個或多個)輸入設(shè)備136相同類型端口的其中一些。因此,例如,可以使用usb端口來向計算設(shè)備112提供輸入以及將信息從計算設(shè)備112輸出到輸出設(shè)備140。輸出適配器142被提供來舉例說明除了其它輸出設(shè)備140外,尤其存在需要特殊適配器的一些輸出設(shè)備140,類似監(jiān)視器、揚(yáng)聲器和打印??機(jī)。作為舉例說明而非限制,輸出適配器142包括視頻和聲音卡,其提供在輸出設(shè)備140和系統(tǒng)總線118之間的連接的手段。應(yīng)當(dāng)注意,其他的設(shè)備和/或設(shè)備的系統(tǒng),比如(一個或多個)遠(yuǎn)程計算機(jī)144,同時提供輸入和輸出能力。

計算設(shè)備112可以通過使用到一個或多個遠(yuǎn)程計算設(shè)備(諸如(一個或多個)遠(yuǎn)程計算設(shè)備144)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。(一個或多個)遠(yuǎn)程計算設(shè)備144可以是個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)pc、工作站、基于微處理器的器具、對等設(shè)備、與計算設(shè)備112相同的另一計算設(shè)備等等,并且通常包括相對于計算設(shè)備112描述的許多或全部單元。為簡潔起見,僅把記憶存儲設(shè)備146與(一個或多個)遠(yuǎn)程計算設(shè)備144一起圖示出來。(一個或多個)遠(yuǎn)程計算設(shè)備144通過網(wǎng)絡(luò)接口148被邏輯地連接到計算設(shè)備112,然后經(jīng)由通信連接150被物理地連接。網(wǎng)絡(luò)接口148包括通信網(wǎng)絡(luò),諸如局域網(wǎng)(lan)和廣域網(wǎng)(wan)。lan技術(shù)包括光纖分布式數(shù)據(jù)接口(fddi)、銅分布式數(shù)據(jù)接口(cddi)、以太網(wǎng)、令牌環(huán)等。wan技術(shù)包括但不限于點(diǎn)對點(diǎn)鏈路、類似綜合業(yè)務(wù)數(shù)字網(wǎng)(isdn)及其變體之類的電路交換網(wǎng)絡(luò)、分組交換網(wǎng)絡(luò)和數(shù)字用戶線路(dsl)。

(一個或多個)通信連接150指的是被采用來將網(wǎng)絡(luò)接口148連接到總線118的硬件/軟件。盡管為了直觀清晰,通信連接150被顯示在計算設(shè)備112的內(nèi)部,但它也可以在計算設(shè)備112的外部。僅出于示范的目的,對于連接到網(wǎng)絡(luò)接口148來說所必需的硬件/軟件包括諸如調(diào)制解調(diào)器這樣的內(nèi)部和外部技術(shù),包括常見的電話級(telephonegrade)調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和dsl調(diào)制解調(diào)器、isdn適配器和以太網(wǎng)卡。

當(dāng)在本文中使用時,術(shù)語“組件”、“系統(tǒng)”、“模塊”等打算是指計算機(jī)相關(guān)的實(shí)體,其或者是硬件、硬件和軟件的組合、軟件,或者是執(zhí)行中的軟件。例如,組件可以是、但不限于是在處理器上運(yùn)行的進(jìn)程、處理器、對象、可執(zhí)行文件、執(zhí)行的線程、程序和/或計算機(jī)。作為舉例說明,在服務(wù)器上運(yùn)行的應(yīng)用和該服務(wù)器都可以是組件。一個或多個組件可以駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),并且組件可以局限于一個計算機(jī)上和/或分布在兩個或更多個計算機(jī)之間。注意,對于本文所例示的數(shù)據(jù)結(jié)構(gòu),所有字段被描述為小端模式(littleendian)。

當(dāng)在本文中使用時,術(shù)語“下級(down-level)文件系統(tǒng)”是指不包括本文所述改進(jìn)的文件系統(tǒng)的先前實(shí)現(xiàn)。相反,“上級(up-level)文件系統(tǒng)”是指的確包括本文所述改進(jìn)的文件系統(tǒng)實(shí)現(xiàn)。

如上所述,許多文件系統(tǒng),諸如包括fat32、fat16、fat12和exfat文件系統(tǒng)的fat系的文件系統(tǒng),不提供對文件加密的本機(jī)支持。fat系的文件系統(tǒng)經(jīng)常被使用在諸如sd卡這樣的存儲卡和其他可拆卸介質(zhì)上。絕大多數(shù)便攜式計算設(shè)備用戶,諸如平板電腦、智能手機(jī)和數(shù)碼相機(jī)用戶,預(yù)計將來會使用存儲卡來存儲應(yīng)用和個人文件。為了提供對用戶文件的隱私保護(hù)和對應(yīng)用的知識產(chǎn)權(quán)保護(hù),將需要加密。然而,由于大多數(shù)存儲卡使用不支持本機(jī)加密的文件系統(tǒng),因此加密存儲卡或其他可拆卸介質(zhì)的內(nèi)容目前或是需要利用的確支持本機(jī)加密的文件系統(tǒng)(如ntfs)來對整個存儲介質(zhì)進(jìn)行重新格式化,或是需要使用諸如bitlocker這樣的加密工具。然而,重新格式化不是一個用戶友好的過程,而諸如bitlocker這樣的工具經(jīng)常只提供卷級加密,而不是文件級加密。

為解決這些問題,本公開內(nèi)容的一些方面使得本機(jī)文件加密支持能夠被集成到不提供此類支持的現(xiàn)有文件系統(tǒng)中,諸如fat系的文件系統(tǒng),而同時維持對這些文件系統(tǒng)的先前實(shí)現(xiàn)(即下級文件系統(tǒng))的后向兼容性。

下文描述的實(shí)施例是在某種fat文件系統(tǒng),特別是fat32文件系統(tǒng)和exfat文件系統(tǒng)的上下文中描述的。然而,要理解的是,本文描述的那些方面可以應(yīng)用于采用目錄項的目錄來提供關(guān)于存儲在存儲介質(zhì)上的文件的信息、但是目前不提供對文件級加密的本機(jī)支持的任何文件系統(tǒng)。因此,所要求保護(hù)的主題絕不限于fat系的文件系統(tǒng),且對fat32、exfat或任何其它fat文件系統(tǒng)的討論僅作為示例。

fat32

作為進(jìn)一步的背景,fat32格式化的存儲卷上的目錄包括32字節(jié)目錄項的線性表。fat32上的每個文件都用一連串32字節(jié)的目錄項來代表,諸如圖2的示例中所示的用于具有文件名“thequickbrown.fox”的文件的一連串目錄項。如圖所示,這一連串目錄項包括短項,其以8.3字符格式存儲縮短形式的文件名,以及關(guān)于該文件的額外信息,包括其創(chuàng)建時間、創(chuàng)建日期、最后訪問日期、最后修改時間和最后修改日期。此外,該短項包括盤上的第一簇的標(biāo)識,第一簇包含文件內(nèi)容和文件大小。在文件目錄中,該短項之后跟隨著一個或多個用于捕獲該文件的完整長文件名的長項。

該短項的格式的進(jìn)一步細(xì)節(jié)用以下的數(shù)據(jù)結(jié)構(gòu)定義來表示:

。

該短項中沒有字段被定義來存放任何形式的加密元數(shù)據(jù)。請注意,名為“ntbyte”的字段在fat文件系統(tǒng)中被定義為8比特的字段,其中的兩個比特被使用,而其中的六個比特被定義為“保留的,忽略但保持該值”。因此,現(xiàn)有的fat文件系統(tǒng)實(shí)現(xiàn)有效地忽略了該字段的保留位,但保持其值。在定義的兩個比特中,一個比特定義短文件名的8個字符部分是否全部為小寫,另一個比特定義短文件名的3個字符的擴(kuò)展部分是否全部為小寫。

圖3是圖示用于在保持對文件系統(tǒng)的先前實(shí)現(xiàn)的后向兼容性的同時將本機(jī)加密支持集成到文件系統(tǒng)中的方法300的一個實(shí)施例的流程圖。如圖所示,該方法從步驟302開始,其中文件系統(tǒng)接收對于執(zhí)行文件操作的請求。例如,該請求可以是對于創(chuàng)建文件、保存文件或?qū)ξ募?zhí)行某其他操作的請求。在步驟304中,處理所述請求以確定其是否包括對該文件的內(nèi)容進(jìn)行加密的請求。這樣的請求可以由與該請求相關(guān)聯(lián)的一個或多個參數(shù)、標(biāo)志、變元、變量等來指示,或者可以由請求本身的特定形式來指示。如果未指示對于加密的請求,則不執(zhí)行圖3的剩余步驟,并且文件系統(tǒng)按其常規(guī)方式處理該文件操作請求。然而,如果在步驟304中指示對文件進(jìn)行加密的請求,則控制轉(zhuǎn)到步驟306。請注意,盡管在圖3中圖示了步驟306至314,并且在下面以特定的順序來描述,但該方法不限于所示步驟的特定順序。

在步驟306,給文件前加(prepend)文件頭標(biāo)。也就是說,文件頭標(biāo)將在文件的盤上表示中的文件內(nèi)容之前寫入。在一個實(shí)施例中,前加的頭標(biāo)的最小尺寸可以是存儲介質(zhì)的扇區(qū)大小,或者它可以是特定于介質(zhì)的尺寸(例如,在閃存介質(zhì)上為64k、對于硬盤驅(qū)動器為4k或512字節(jié)、或者是其整數(shù)倍)。這可以有助于性能(扇區(qū)大小可能不是特定于介質(zhì)的性能(performant))。在一個實(shí)施例中,其中要在其上寫入文件的存儲介質(zhì)的扇區(qū)大小為4kb,則這個頭標(biāo)可以是最小值為4kb,以便確保對文件主體的所有文件存取保持與扇區(qū)尺寸調(diào)準(zhǔn)(align)。這可以消除對雙緩沖非高速緩存的輸入/輸出(i/o)的需要并保持性能。在實(shí)施例中,通過從文件的開始處前加或去除整個簇,頭標(biāo)可以增長或縮小成超出初始最小大?。ɡ?,4kb)。頭標(biāo)的內(nèi)容可以包括對解密該加密文件內(nèi)容所需要的和在另外的情況下由文件系統(tǒng)進(jìn)行管理所需要的任何加密元數(shù)據(jù)。例如,頭標(biāo)中的加密元數(shù)據(jù)可以包括用于加密文件的加密密鑰、圍繞文件的使用的策略、證書、初始化向量等。請注意,“前加”是邏輯前加。在文件盤區(qū)的列表中,文件頭標(biāo)數(shù)據(jù)將首先出現(xiàn)。在介質(zhì)上,頭標(biāo)可以處在任何位置,即,是邏輯塊地址(lba)。

在一個實(shí)施例中,如果在文件具有零文件長度時創(chuàng)建頭標(biāo),則頭標(biāo)將默認(rèn)大小為4kb。它可以通過以下方式來增長,即:將簇前加到文件的前面,并將頭標(biāo)重新定位回到該文件的分配的開頭。如果文件在其中已經(jīng)有內(nèi)容,則頭標(biāo)創(chuàng)建可以默認(rèn)為大小為一個簇,其最小大小為4kb,前加于該文件。如果頭標(biāo)需要增長,fat文件系統(tǒng)將分配新的簇,將其插入到該文件中,然后重新定位頭標(biāo)內(nèi)容以進(jìn)行匹配。

在一個實(shí)施例中,頭標(biāo)可以像單獨(dú)的一段文件系統(tǒng)元數(shù)據(jù)那樣被對待,并且上級fat文件系統(tǒng)可能對可被向下發(fā)送到fat驅(qū)動器的任何正常i/o請求分組(irp)隱藏它。頭標(biāo)可以通過ntofsapi集合作為屬性來顯露,其中上級fat實(shí)現(xiàn)可以提供最小的實(shí)現(xiàn)。

在一個實(shí)施例中,頭標(biāo)可以按照pfile格式來格式化,pfile格式是由可從microsoftcorporation(微軟公司)獲得的權(quán)限管理服務(wù)(rms)創(chuàng)建的用于加密文件的標(biāo)準(zhǔn)頭標(biāo)格式。在其他實(shí)施例中,可以使用其他格式。例如,可以使用efs文件系統(tǒng)的傳統(tǒng)$efs樣式的加密頭標(biāo)。

在步驟308,將用于該文件的加密元數(shù)據(jù)寫入前加的頭標(biāo)。

在步驟310,按照接收到的請求對文件的內(nèi)容進(jìn)行加密。在各種實(shí)施例中,可以利用各種各樣加密算法中的任何一種來加密文件內(nèi)容,加密算法是諸如高級加密標(biāo)準(zhǔn)(aes)、數(shù)據(jù)加密標(biāo)準(zhǔn)(des)、twofish、serpent、blowfish、cast5、rc4、tripledes等等。一旦被加密,經(jīng)加密的內(nèi)容便可以被寫入到盤中,跟隨在包含加密元數(shù)據(jù)的前加的頭標(biāo)之后。再次指出,加密文件的位置跟隨在前加的頭標(biāo)之后是指由文件盤區(qū)描述的文件系統(tǒng)級的邏輯布局,而不是物理地址或lba地址。在要由下級文件系統(tǒng)實(shí)現(xiàn)所使用的用于文件的正常文件目錄項中,諸如圖2所圖示的短項,該項的首簇字段將標(biāo)識前加的頭標(biāo)的開始,且文件大小將指示加密文件的完整大小,包括其頭標(biāo)和任何填充(如下討論的)。

在步驟312,在該實(shí)施例中,文件系統(tǒng)可以在用于該文件的文件目錄項的保留(即未定義)字段中指示該文件被加密。在其中本方法在fat32文件系統(tǒng)中被實(shí)現(xiàn)的一個實(shí)施例中,文件系統(tǒng)使用用于該文件的短目錄項的ntbyte字段的比特(bit)來指示該文件被加密。fat32短目錄項的ntbyte字段具有保留的(即未定義的)六(6)個比特,且其可以用于此目的。在該實(shí)施例中,可以設(shè)置一個比特(例如,值=“1”)以指示“文件被加密”。此外,在一個實(shí)施例中,可以將第二比特設(shè)置為指示該前加的頭標(biāo)是標(biāo)準(zhǔn)大?。ɡ纾?kb)。如果頭標(biāo)不是標(biāo)準(zhǔn)大小,則必須讀取該頭標(biāo)以確定其大小。

在一些實(shí)施例中,加密算法可能需要填充字節(jié)。例如,在一個實(shí)施例中,被采用來加密文件內(nèi)容的加密算法可以是利用16字節(jié)塊的aes鏈接塊密碼(aes-cbc)算法。這要求將所有文件大小四舍五入(roundup)到最接近的16字節(jié)aes塊,否則該文件的最后一段將無法恰當(dāng)?shù)亟饷?。為了使下級文件系統(tǒng)實(shí)現(xiàn)能夠讀取文件的完整的最后一個塊,盤上的文件長度被填充直到與下一個塊調(diào)準(zhǔn)——在aes-cbc的情況下,文件被填充直到與16字節(jié)調(diào)準(zhǔn),因此可能需要高達(dá)15個填充字節(jié)。因此,當(dāng)在上級實(shí)現(xiàn)中打開或枚舉文件時,上級實(shí)現(xiàn)需要存儲真實(shí)長度,或者從文件的填充長度來計算真實(shí)長度。在本實(shí)施例中,現(xiàn)有文件目錄項的保留字段的額外比特可以用于存儲被加到文件大小的填充字節(jié)的數(shù)量,或者替代地指示最后一個塊中的非填充字節(jié)的數(shù)量。在大多數(shù)情況下,可以通過使用n個先前保留的比特來有效地高速緩存高達(dá)2n-1個填充字節(jié)。在圖3的方法被集成到fat32文件系統(tǒng)中并且采用aes-cbc加密的實(shí)施例中,fat短目錄項的ntbyte字段的四(4)個剩余的保留的(即未定義的)比特可以用于存儲文件的最后16字節(jié)塊的填充字節(jié)的數(shù)量(即n=4)。為了使上級文件系統(tǒng)向用戶呈現(xiàn)該文件,可以通過獲取整個文件的文件大小、減去頭標(biāo)的大小、然后減去填充字節(jié)的數(shù)量來計算該文件的真實(shí)大小。在另一個實(shí)施例中,真實(shí)文件大小或文件大小增量也可以被留存在文件頭標(biāo)中,使得這個信息被保留用于冗余性或在制作了該文件的多個副本的情況下被保留。倘若ntbyte字段被下級文件系統(tǒng)實(shí)現(xiàn)清除,則這種冗余性也可以有助于恢復(fù)。

在采用利用16字節(jié)塊的aes-cbc加密的實(shí)施例中,可以每512個字節(jié)設(shè)置初始化向量(iv)。在一個實(shí)施例中,iv被計算為以內(nèi)容密鑰作為加密密鑰、利用aes來加密的文件中的512字節(jié)區(qū)的字節(jié)偏移;所得到的16字節(jié)塊被用作iv。

在步驟314中,加密文件的文件名被破壞(mangle)(即修改),以幫助向上級文件系統(tǒng)指示該文件被加密,并使得加密文件能夠?qū)ο录壩募到y(tǒng)可見,以便如果期望的話則用戶或應(yīng)用可以采用用戶模式工具來解密該文件。例如,在一個實(shí)施例中,在盤上,額外的擴(kuò)展名(例如,“pfile”)可以被附加于文件名。例如,對于文件名為“thequickbrown.fox”的文件,文件系統(tǒng)的下級實(shí)現(xiàn)將會看到名稱“thequickbrown.fox.pfile”。然后在被提供給正確的解密密鑰時,與“.pfile”擴(kuò)展名相關(guān)聯(lián)的用戶模式工具能夠打開并解密任何這樣的文件。在采用圖3的方法的文件系統(tǒng)的上級實(shí)現(xiàn)上,該文件系統(tǒng)可以將要被視為本機(jī)加密文件的任何文件的“.pfile”擴(kuò)展名隱藏起來,因此用戶不需要擔(dān)心使用工具來打開它們,且可以利用任何使用文件系統(tǒng)內(nèi)的本機(jī)解密算法的應(yīng)用來直接打開這些文件。

對于額外的文件名擴(kuò)展名(例如,“.pfile”),在一些實(shí)施例中,上級文件系統(tǒng)可以執(zhí)行如下的一個或多個額外的文件系統(tǒng)行為。首先,當(dāng)創(chuàng)建一文件時,如果它有.pfile擴(kuò)展名,則創(chuàng)建可能失敗。其次,當(dāng)創(chuàng)建文件時,文件系統(tǒng)可以檢查name.doc和name.doc.pfile兩者的存在。如果任一個已經(jīng)存在,則例如由于已經(jīng)存在的錯誤,創(chuàng)建可能失敗。第三,當(dāng)打開文件時,如果指定的文件以.pfile結(jié)尾并且沒有標(biāo)記為加密的,則打開可能失敗。第四,當(dāng)打開文件時,文件系統(tǒng)可以檢查name.doc和name.doc.pfile兩者,并打開任一個。如果它們都存在,則它可以打開它遇到的第一個。第五,當(dāng)文件被重新命名時,文件系統(tǒng)可以檢查目標(biāo)目錄中的name.doc和name.doc.pfile兩者,并且如果存在任一名稱,則可能使重新命名失敗。第六,當(dāng)枚舉文件時,如果它有.pfile擴(kuò)展名,則該擴(kuò)展名可以被隱藏,除非在目錄中已經(jīng)遇到它的.pfile版本。

一旦按照圖3的方法將加密的文件存儲到盤中,則當(dāng)上級文件系統(tǒng)接收到文件存取操作(例如,“打開”文件的請求)時,文件系統(tǒng)可以依據(jù)在保留字段中設(shè)置的比特來確定該文件被加密,可以從文件名中剝除額外的擴(kuò)展名(例如“.pfile”),以及可以從文件頭標(biāo)中獲得必要的加密元數(shù)據(jù)來解密該文件,以在文件系統(tǒng)內(nèi)本機(jī)地供用戶訪問。此外,通過使用指示填充多少的那n個比特,可以有效地向用戶顯示經(jīng)修改的文件大小,而無需讀取前加的加密元數(shù)據(jù)頭標(biāo)。下級文件系統(tǒng)實(shí)現(xiàn)將忽略這些保留的比特,且只查看具有“.pfile”擴(kuò)展名的文件,從而維持后向兼容性。如果期望的話,則用戶模式應(yīng)用或工具(諸如irmreader)可以被用來解密文件。這要求盤上的文件大小——如在用于該文件的常規(guī)文件目錄項中所反映的——必須反映加密的大小,加密的大小包括頭標(biāo)和對加密塊大小的任何填充(例如,填充到aes塊大?。?/p>

在一個實(shí)施例中,上級文件系統(tǒng)可以處置例如在目錄的列表或需要文件大小的其他訪問期間遇到文件的情況,其中文件名具有已添加的用來指示加密的擴(kuò)展名(例如“pfile”),但是其文件目錄項的保留位(例如,fat目錄的短項中的ntbyte字段)中的加密比特未被設(shè)置為指示該文件被加密。在檢測到這種情況時,文件系統(tǒng)可以讀取至少一些文件內(nèi)容,以確定開頭是否被證實(shí)為本文公開的類型的前加的頭標(biāo)。如果該文件內(nèi)容被證實(shí)為前加的頭標(biāo),則文件系統(tǒng)可以從前加的頭標(biāo)內(nèi)容確定不帶填充的真實(shí)文件大小,并且還可以進(jìn)一步進(jìn)行以下的任何組合:(a)將高速緩存結(jié)果保存在存儲器中以提高對于該目錄項的未來效率(b)如果存儲介質(zhì)是可寫的,則更新該目錄項中的加密比特和填充字節(jié)值,以使該文件系統(tǒng)的未來列表更高效,以及(c)隱藏額外的擴(kuò)展名(例如“.pfile”)并報告未加密數(shù)據(jù)的“真實(shí)”大小。另一方面,如果該文件的內(nèi)容未證實(shí)為加密文件,則文件系統(tǒng)可以如對于該文件在目錄項(例如,fat短項)中所表達(dá)的那樣來報告文件名和文件大小。在其他實(shí)施例中,該過程可能不是作為文件系統(tǒng)的一部分實(shí)現(xiàn)的,而是作為另一系統(tǒng)組件實(shí)現(xiàn)的,該另一系統(tǒng)組件在命令文件系統(tǒng)設(shè)置加密比特之前執(zhí)行對前加的頭標(biāo)的證實(shí)。換句話說,不是在枚舉時由文件系統(tǒng)自動啟用加密比特并證實(shí)前加的頭標(biāo),而是該過程改而在用戶例如通過使用用戶模式進(jìn)程(諸如外殼擴(kuò)展、實(shí)用程序等)指令文件系統(tǒng)這樣做時才按需執(zhí)行。

圖4是圖示用于在維持與文件系統(tǒng)的先前實(shí)現(xiàn)的后向兼容性的同時將本機(jī)加密支持集成到文件系統(tǒng)中的方法的另一實(shí)施例的流程圖。在本實(shí)施例中,步驟402至410與圖3的步驟302至310基本相同。當(dāng)在步驟404確定該文件要被加密時,頭標(biāo)被前加于文件的盤上表示(步驟406),加密元數(shù)據(jù)被寫入頭標(biāo)(步驟408),并且加密的文件內(nèi)容被寫入到盤上在該前加的頭標(biāo)的后面(步驟410)。如上文結(jié)合圖3所討論的,文件的內(nèi)容可能需要被填充成與下一個加密塊邊界調(diào)準(zhǔn)。但是在本實(shí)施例中,不是使用常規(guī)文件目錄項的保留字段來指示文件被加密,而是在步驟412,在創(chuàng)建傳統(tǒng)文件目錄項之后(例如,在由圖2的示例所圖示的常規(guī)目錄項之后),在文件目錄中創(chuàng)建額外的目錄項。

在步驟414,可以把真正的文件大?。ɡ?,減去任何填充)和頭標(biāo)的大小直接存儲在該額外的尾部目錄項中。

在步驟416,文件系統(tǒng)可以對文件的在先的常規(guī)目錄項的至少一部分執(zhí)行密碼術(shù)(cryptographic)操作,并將結(jié)果存儲在額外的尾部目錄項中,以便為上級文件系統(tǒng)提供證實(shí)該新的尾部目錄項與常規(guī)目錄項相關(guān)聯(lián)的手段。在一個實(shí)施例中,密碼術(shù)操作包括對文件的在先的常規(guī)目錄項計算校驗和。

在一個實(shí)施例中,額外的尾部目錄項可以具有以下格式:

。

該目錄項的第一項unusedmark標(biāo)記其為未使用的fat32目錄項。如下一步所述的,該字段可以被設(shè)置為0xe5,表明該目錄項是被刪除的項。type字段設(shè)置為0x1,可以將其定義為加密元數(shù)據(jù)。接下來的兩個字節(jié)保留供將來使用。隨后的字段associateddirentschecksum是用于文件的之前的一組常規(guī)fat目錄項的crc32。接下來的兩個ulong直接存儲加密文件的頭標(biāo)大小和真實(shí)文件大小。reserved[12]字段也未被使用,以供將來的擴(kuò)展。最后,checksum字段是這一額外的目錄項自身的crc32。這是用來幫助證實(shí)這是一個真實(shí)的尾部目錄項,而不是無用數(shù)據(jù)(junk)。請注意,文件的真實(shí)大小或真實(shí)大小與實(shí)際文件大小之間的差異也可以被存儲在前加的頭標(biāo)本身中以用于冗余。倘若額外的尾部目錄項被下級文件系統(tǒng)實(shí)現(xiàn)清除或刪除,則這種冗余可以有助于恢復(fù)。

在步驟418中,新的尾部目錄項可以被標(biāo)記為刪除的目錄項。例如,在以上所圖示的實(shí)施例中,目錄項的第一個字節(jié)可以設(shè)置為十六進(jìn)制值“0xe5”。因為這個額外的尾部目錄項被標(biāo)記為未使用的或刪除的,所以在下級文件系統(tǒng)實(shí)現(xiàn)中,它將被忽略。請注意,如果文件的常規(guī)文件目錄項中的元數(shù)據(jù)被更改,則將使校驗和無效。在這種情況下,上級文件系統(tǒng)實(shí)現(xiàn)可檢測到這種無效,并重新生成包含其校驗和的新的尾部目錄項。這也是對fat的上級實(shí)現(xiàn)的提示,以從文件的頭標(biāo)信息中重新計算頭標(biāo)大小和真實(shí)文件長度。

步驟420與圖3的步驟314基本相同,其中加密文件的文件名被破壞(即修改),以幫助向上級文件系統(tǒng)指示該文件被加密,并且使得加密文件能夠?qū)ο录壩募到y(tǒng)可見,以便如果需要的話用戶或應(yīng)用可以采用用戶模式工具來解密該文件。例如,在一個實(shí)施例中,在盤上,額外的擴(kuò)展名(例如,“.pflle”)可以被附加于文件名。

該實(shí)施例的優(yōu)點(diǎn)在于,真實(shí)文件長度和頭標(biāo)長度可以高速緩存在目錄本身中,而不是強(qiáng)制文件系統(tǒng)實(shí)現(xiàn)每一次都打開每個文件并從頭標(biāo)中讀取這一信息。注意,使用短目錄項的ntbyte字段的4個保留位——如上文結(jié)合圖3的實(shí)施例所論述的——也可以獲得這一相同的功效。

注意,本文所描述的且在圖4中圖示的方法可以被概括為:在目錄中高速緩存任何類別的文件系統(tǒng)元數(shù)據(jù)信息,同時令沒覺察到的(unaware)下級實(shí)現(xiàn)使高速緩存無效,而無需這個信息的結(jié)構(gòu)的先驗知識。

前述的用于在現(xiàn)有文件系統(tǒng)(如fat系的文件系統(tǒng))中集成本機(jī)文件加密的方法使得能夠以后向兼容和執(zhí)行的方式提供本機(jī)文件加密,以便可用于消費(fèi)者文件加密、appx應(yīng)用包文件和應(yīng)用數(shù)據(jù)(appdata)、以及像遠(yuǎn)程擦除和工作文件夾這樣的企業(yè)場景。

在實(shí)施例中,上級文件系統(tǒng)還可以將加密文件從一個目錄(例如,目錄a)移動到另一個目錄(例如,目錄b)。在一個實(shí)施例中,為了實(shí)現(xiàn)這樣的移動,文件系統(tǒng)在目標(biāo)位置(例如,目錄b)中分配新的目錄項。然后,文件系統(tǒng)從舊位置(例如,目錄a)讀取目錄項的內(nèi)容,并將內(nèi)容寫入目標(biāo)位置的目錄項。然后可以將舊目錄項標(biāo)記為未使用。在圖3的實(shí)施例中,由于舊目錄項的那些保留比特(例如ntbyte字段)被復(fù)制,所以文件保有(retain)其加密性質(zhì)。

在下級文件系統(tǒng)中,文件從一個目錄到另一個目錄的移動也是可能的。在一個實(shí)施例中,這樣的移動包括文件系統(tǒng)在目標(biāo)位置中分配新的目錄項,從舊位置的目錄項中讀取內(nèi)容,將這些內(nèi)容寫入在目標(biāo)位置中分配的目錄項,然后把舊的目錄項標(biāo)記為未使用。再次地,由于ntbyte被保留,但這些內(nèi)容被定義為“保持但忽略”,所以該文件保有其加密性質(zhì)。

加密文件到非加密文件的轉(zhuǎn)換也可以執(zhí)行。在一個實(shí)施例中,這種能力可能不被文件系統(tǒng)直接支持,而是改而由加密服務(wù)在更高級別上執(zhí)行,其創(chuàng)建新的未加密文件,然后把所有數(shù)據(jù)復(fù)制過來,且之后將新文件重新命名回舊名稱。

相反地,非加密文件到加密文件的轉(zhuǎn)換也可以執(zhí)行。再次地,在一個實(shí)施例中,這可能不被文件系統(tǒng)直接支持,而是改而由加密服務(wù)在更高級別上執(zhí)行,其創(chuàng)建新的加密文件,然后把所有數(shù)據(jù)復(fù)制過來,且之后將新文件重新命名回舊名稱。

在一個實(shí)施例中,可以使用靜態(tài)庫模型把圖3或圖4的方法集成到fat32文件系統(tǒng)中,其中用于該方法的集成點(diǎn)被直接加到fat文件系統(tǒng)中。在該實(shí)施例中,fastfat.sys二進(jìn)制文件可以與靜態(tài)庫鏈接。分層和構(gòu)建可以與ntfs的分層和構(gòu)建相同;靜態(tài)庫可以被交叉?zhèn)}庫(crossdepot)地發(fā)布,并被fat文件系統(tǒng)使用(consume)。雖然用來實(shí)現(xiàn)所述集成的程序代碼可以是處理器不可知的(agnostic),但被所述實(shí)現(xiàn)調(diào)用來執(zhí)行文件加密的密碼庫可以每平臺地進(jìn)行優(yōu)化。

如上所述,本文所描述的且在圖3和4中圖示的方法也可以被具體化在exfat文件系統(tǒng)實(shí)現(xiàn)中。作為進(jìn)一步的背景,exfat卷上的目錄包括32字節(jié)目錄項的線性表,類似于fat32。exfat卷上的文件用至少三個32字節(jié)目錄項的序列來表示。第一個是file目錄項,表示文件本身。第二個是stream目錄項,表示文件中的數(shù)據(jù),而第三個和隨后的目錄項是name目錄項,表示文件的名稱。

在圖3和4中被圖示且在上文中被描述的方法可以以與上文相對于fat32實(shí)現(xiàn)所描述的基本相同的方式在exfat文件系統(tǒng)中被實(shí)現(xiàn),除了(1)用來指示“文件被加密”的比特(即,標(biāo)志)的目錄項位置,(2)標(biāo)識文件的最后16字節(jié)塊的填充字節(jié)數(shù)的信息的目錄項位置,以及(3)指定前加的文件頭標(biāo)長度的長度的目錄項中的信息的供應(yīng)和位置之外。

在exfat文件系統(tǒng)實(shí)現(xiàn)的一個實(shí)施例中,exfatfile目錄項的reserved0字段的先前保留的比特(例如,比特0x8000)被用于以本文所述的方式指示“文件被加密”。以下描述了exfatfile目錄項的格式,包括新定義的“文件被加密”比特:

typedefstruct_fpp_file_record{

 //

 //類型將具有值'dirent'(0x85)

 //

 fpp_record_headertype;

 //

 //跟隨這一項的次要項的計數(shù).對于'filename'(0xc0)

 //必須有至少一個。

 //

 ucharsecondaryentries;

 //

 //對主要和所有次要項計算的校驗和。

 //

 ushortchecksum;

 //

 //標(biāo)準(zhǔn)文件屬性。

 //

 ushortattributes;

 //

 //保留以用于將來的擴(kuò)展。

 //

 ushortreserved0;(這個項的比特0x8000被定義以意指:該文件被加密;以前這是保留的比特)

 //

 //當(dāng)該文件被創(chuàng)建和寫入時以及在該文件被創(chuàng)建和寫入處

 //記錄下面的八個字段。

 //

 fat_time_stampcreationtime;

 fat_time_stamplastwritetime;

 fat_time_stamplastaccesstime;

 ucharcreationtimemsec;

 ucharlastwritetimemsec;

 fat_time_zonecreationtimezone;

 fat_time_zonelastwritetimezone;

 fat_time_zonelastaccesstimezone;

 ucharreservedl[7];

}fpp_file_record,*pfpp_file_record;

在其他實(shí)施例中,可以使用不同的先前保留的比特來指示“文件被加密”。

進(jìn)一步地按照在exfat文件系統(tǒng)實(shí)現(xiàn)中的實(shí)施例,在exfatstream目錄項格式的先前保留的字段中定義一新的efstailbytecount字段,用于存儲文件的最后16字節(jié)塊的填充字節(jié)數(shù),并且在exfatstream目錄項的另一個先前保留的字段中定義一個efsheaderlength字段,用于存儲前加的文件頭標(biāo)的長度的指示。以下描述按照一個實(shí)施例的、exfatstream目錄項的經(jīng)修改的格式:

typedefstruct_fpp_stream_record{

 //

 //類型將具有值'stream'(0xc0)

 //

 fpp_record_headertype;

 ucharallocationflags;

 //

 //efstailbytecount。這是在最后的aes密碼塊中

 //的eof之后的字節(jié)的數(shù)量,即,該文件的最后16字節(jié)塊

 //的填充字節(jié)的數(shù)量。對于aes這通常是在0到15

 //之間的數(shù)。未來的密碼算法可能有更大的塊尺寸。

 //

 ucharefstailbytecount;(以前是保留的字段)

 //

 //文件名中字符的計數(shù),橫跨必須緊跟在這個記錄之后的

 //那些隨后的fpp_name_record記錄。

 //

 ucharcharcount;

 //

 //這個字段是全部大寫的名稱的散列。當(dāng)檢查文件名

 //沖突時,這允許快得多的比較。

 //

 ushortupcasednamehash;

 //

 //efsheaderlength。這是如上所述的和圖3中圖示的、

 //就4096字節(jié)塊而言,前加于文件的開始的頭標(biāo)的長度。

 //4096字節(jié)=1個塊。

 //頭標(biāo)的最大尺寸是256kb,它是64個塊。

 //

 ucharefsheaderlength;(以前是保留的字段)

 ucharreserved2;

 longlongvaliddatalength;

 ulongreserved3;

 //

 //定義文件數(shù)據(jù)居于(lives)何處。

 //

 fat_entryfirstclusteroffile;

 longlongfilesize;

}fpp_stream_record,*pfpp_stream_record;

請注意,在本實(shí)施例中,stream記錄中的efstailbytecount字段可以由一個字節(jié)(即8個比特)組成,而不是由在fat32實(shí)現(xiàn)中定義的4個比特組成,這允許容納高達(dá)256字節(jié)的塊大小。另外請注意,在本實(shí)施例中,沒有對exfatname目錄項格式進(jìn)行改變。且如上所述,除了上面說到的對exfatfile和stream目錄項格式的改變之外,在上文被描述且在圖3和4中被圖示的方法在exfat文件系統(tǒng)實(shí)現(xiàn)中可以以基本相同的方式操作。

本文構(gòu)想的實(shí)施例包括以下:

1.一種計算設(shè)備,其包括處理單元、存儲器和在所述處理單元上執(zhí)行的文件系統(tǒng),當(dāng)所述文件系統(tǒng)在所述處理單元上執(zhí)行時,其完成以下操作,包括:

響應(yīng)于指示對文件進(jìn)行加密的請求的文件操作,給該文件前加一個頭標(biāo);

加密所述文件的內(nèi)容,并將加密的內(nèi)容寫入所述文件中所述頭標(biāo)之后;

將與該加密文件相關(guān)的加密元數(shù)據(jù)存儲在所述頭標(biāo)內(nèi);

在用于所述文件的文件目錄項的保留字段中指示該文件被加密;和

將額外的文件名擴(kuò)展名附加于該加密文件的文件名,進(jìn)一步指示該文件被加密。

2.實(shí)施例1所述的計算設(shè)備,其中所述文件系統(tǒng)設(shè)置所述保留字段的單個比特來指示所述文件被加密。

3.實(shí)施例1或2中任一項所述的計算設(shè)備,其中所述前加的頭標(biāo)具有一個初始的預(yù)定大小,其可以由所述文件系統(tǒng)進(jìn)行擴(kuò)展,所述文件系統(tǒng)用所述保留字段的第二比特來指示該前加的頭標(biāo)是否超過所述初始的預(yù)定大小。

4.實(shí)施例1至3中任一項所述的計算設(shè)備,其中所述加密操作包括使用基于固定塊大小操作的加密算法來對文件的內(nèi)容進(jìn)行加密,并且其中所述文件系統(tǒng)還執(zhí)行以下操作,包括:

把該文件的內(nèi)容填充成與最后的加密塊的塊大小調(diào)準(zhǔn);和

把填充量的指示存儲在用于所述文件的對于文件目錄項的保留字段中。

5.實(shí)施例4所述的計算設(shè)備,其中所述文件系統(tǒng)還在前加的頭標(biāo)中存儲以下的至少一項:(a)該加密文件的真實(shí)大小的指示或(b)該填充量的指示。

6.實(shí)施例1至5中任一項所述的計算設(shè)備,其中所述文件系統(tǒng)還執(zhí)行以下操作,包括:

檢測如下的文件,即:其具有的文件名帶有指示該文件是加密文件的額外的已附加的擴(kuò)展名、但其中該文件目錄的保留字段并未指示該文件被加密:

讀取至少一些文件內(nèi)容,以確定開頭是否被證實(shí)為其中存儲有加密元數(shù)據(jù)的前加的頭標(biāo);和

如果所述至少一些文件內(nèi)容被證實(shí)為前加的頭標(biāo),則進(jìn)一步執(zhí)行以下的一項或多項:

(a)將高速緩存的結(jié)果留在存儲器中,以提高對于這個目錄項的未來效率;

(b)如果其上存儲該文件的存儲介質(zhì)是可寫的,則更新用于所述文件的目錄項的保留字段,以指示該文件被加密;和

(c)向用戶隱藏該額外的擴(kuò)展名,并報告未加密數(shù)據(jù)的真實(shí)大小。

7.實(shí)施例1至6中任一項所述的計算設(shè)備,其中所述文件系統(tǒng)還執(zhí)行以下操作,包括:

通過以下方式將該加密文件從第一目錄移動到第二目錄:

在第二目錄中分配一個新的目錄項;

從第一目錄中讀取所述目錄項的內(nèi)容;

將所述內(nèi)容寫入第二目錄的所述新目錄項;和

將第一目錄的所述目錄項標(biāo)記為未使用。

8.一種計算設(shè)備,其包括處理單元、存儲器和在所述處理單元上執(zhí)行的文件系統(tǒng),當(dāng)所述文件系統(tǒng)在所述處理單元上執(zhí)行時,其完成以下操作,包括:

響應(yīng)于指示對文件進(jìn)行加密的請求的文件操作,給該文件前加一個頭標(biāo);

加密所述文件的內(nèi)容,并將加密的內(nèi)容寫入所述文件中;

將與該加密文件相關(guān)的加密元數(shù)據(jù)存儲在所述頭標(biāo)內(nèi);

為所述文件創(chuàng)建額外的文件目錄項,其跟隨在文件目錄中的用于該文件的其他目錄項之后;

將關(guān)于該文件的真實(shí)大小的信息存儲在所述額外的文件目錄項中;

對用于該文件的其他文件目錄項的至少一部分執(zhí)行密碼術(shù)操作,并將密碼術(shù)操作的結(jié)果存儲在所述額外的文件目錄項中;和

將所述額外的文件目錄項標(biāo)記為被刪除的或未使用的文件目錄項。

9.實(shí)施例8所述的計算設(shè)備,所述文件系統(tǒng)還將額外的文件名擴(kuò)展名附加到所述文件的文件名。

10.實(shí)施例8或9中任一項所述的計算設(shè)備,其中所述文件系統(tǒng)還將所述前加的頭標(biāo)的大小存儲在所述額外的文件目錄項中。

11.實(shí)施例8至10中任一項所述的計算設(shè)備,其中對用于所述文件的其他文件目錄項的至少一部分執(zhí)行的所述密碼術(shù)操作包括計算校驗和。

12.實(shí)施例8至11中的任一項所述的計算設(shè)備,其中所述加密操作包括使用基于固定塊大小操作的加密算法來加密所述文件的內(nèi)容,并且所述文件系統(tǒng)把所述文件的內(nèi)容填充成與最后的加密塊的塊大小調(diào)準(zhǔn),被存儲在額外目錄項中的關(guān)于所述文件的真實(shí)大小的信息反映所述文件在沒有填充的情況下的大小。

13.實(shí)施例12所述的計算設(shè)備,其中所述文件系統(tǒng)還在前加的頭標(biāo)中存儲以下的至少一項:(a)加密文件的真實(shí)大小的指示或(b)填充量的指示。

14.一種在計算設(shè)備的文件系統(tǒng)中提供本機(jī)文件加密支持的方法,包括:

響應(yīng)于指示對文件進(jìn)行加密的請求的文件操作,給該文件前加一個頭標(biāo);

加密所述文件的內(nèi)容,并將加密的內(nèi)容寫入所述文件中所述頭標(biāo)之后;

將與該加密文件相關(guān)的加密元數(shù)據(jù)存儲在所述頭標(biāo)內(nèi);

在用于所述文件的文件目錄項的保留字段中指示該文件被加密;和

將額外的文件名擴(kuò)展名附加于所述加密文件的文件名,進(jìn)一步指示該文件被加密。

15.實(shí)施例14所述的方法,所述指示包括設(shè)置所述保留字段的單個比特來指示所述文件被加密。

16.實(shí)施例14或15中的任一項所述的方法,其中所述前加的頭標(biāo)具有一個初始的預(yù)定大小,其可以由所述文件系統(tǒng)進(jìn)行擴(kuò)展,所述方法還包括用所述保留字段的第二比特來指示前加的頭標(biāo)是否超過初始的預(yù)定大小。

17.實(shí)施例14至16中的任一項所述的方法,其中所述加密操作包括使用基于固定塊大小操作的加密算法來對所述文件的內(nèi)容進(jìn)行加密,并且所述方法還包括:

把所述文件的內(nèi)容填充成與最后的加密塊的塊大小調(diào)準(zhǔn);和

把填充量的指示存儲在用于所述文件的對于文件目錄項的保留字段中。

18.實(shí)施例17所述的方法,還包括在前加的頭標(biāo)中存儲以下的至少一項:(a)對于加密文件的真實(shí)大小的指示或(b)對于填充量的指示。

19.實(shí)施例14至18中的任一項所述的方法,所述文件目錄項包括fat32文件系統(tǒng)的短目錄項,并且所述保留字段包括所述短目錄項的ntbyte字段。

20.實(shí)施例14至19中的任一項所述的方法,所述文件目錄項包括exfat文件系統(tǒng)的file目錄項,并且所述保留字段包括exfatfile目錄項的reserved0字段。

本文描述的那些方面的例圖旨在提供對各個方面的結(jié)構(gòu)的一般性理解。這些例圖并不打算用作對于使用本文所描述的結(jié)構(gòu)或方法的裝置和系統(tǒng)的所有元件和特征的完整描述。在考查本公開內(nèi)容后,許多其它方面對于本領(lǐng)域技術(shù)人員來說可能是明顯的??梢詮谋竟_內(nèi)容利用并導(dǎo)出其它方面,使得可以在不脫離本公開內(nèi)容的范圍的情況下做出結(jié)構(gòu)和邏輯上的替換和改變。因此,本公開內(nèi)容和附圖被認(rèn)為是說明性的而不是限制性的。

結(jié)合本文所公開的那些方面來描述的各種說明性邏輯塊、配置、模塊和方法步驟或指令可以被實(shí)現(xiàn)為電子硬件或計算機(jī)軟件。各種說明性的組件、塊、配置、模塊或步驟已經(jīng)就其功能性被大體上描述。這樣的功能性是被實(shí)現(xiàn)為硬件還是軟件取決于特定的應(yīng)用和施加在整個系統(tǒng)上的設(shè)計約束。所描述的功能性可以針對每個特定的應(yīng)用以變化的方式來實(shí)現(xiàn),但是這樣的實(shí)現(xiàn)決策不應(yīng)當(dāng)被解釋為導(dǎo)致偏離本公開內(nèi)容的范圍。

結(jié)合本文所公開的那些方面來描述的各種說明性邏輯塊、配置、模塊和方法步驟或指令,或者它們的某些方面或某些部分可以以存儲在計算機(jī)可讀存儲介質(zhì)上的計算機(jī)可執(zhí)行指令(即,程序代碼)的形式來體現(xiàn),其中所述指令在由諸如計算設(shè)備這樣的機(jī)器執(zhí)行時,執(zhí)行和/或?qū)崿F(xiàn)本文所描述的系統(tǒng)、方法和過程。具體地,可以以這樣的計算機(jī)可執(zhí)行指令的形式來實(shí)現(xiàn)上述的任何步驟、操作或功能。計算機(jī)可讀存儲介質(zhì)包括以用于存儲信息的任何非暫時的(即,有形的或物理的)方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可拆卸和不可拆卸介質(zhì),但是這樣的計算機(jī)可讀存儲介質(zhì)不包括信號。計算機(jī)可讀存儲介質(zhì)包括但不限于ram、rom、eeprom、閃速存儲器或其他存儲器技術(shù)、cd-rom、數(shù)字通用盤(dvd)或其他光盤存儲裝置、盒式磁帶、磁帶、磁盤存儲裝置或其他磁存儲設(shè)備、或者可用于存儲所需信息并且可由計算機(jī)訪問的任何其它有形的或物理的介質(zhì)。

盡管已經(jīng)用特定于結(jié)構(gòu)特征和/或動作的語言描述了所述主題,但是要理解,在所附權(quán)利要求中限定的主題不一定限于上述的特定特征或動作。相反,所述特定特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例被公開的,并且其他等同的特征和動作打算歸入權(quán)利要求的范圍內(nèi)。

提供了對那些方面的描述以使得能夠進(jìn)行或使用所述方面。對這些方面的各種修改將容易是明顯的,并且在不脫離本公開內(nèi)容的范圍的情況下,本文定義的一般性原理可以應(yīng)用于其它方面。因此,本公開內(nèi)容不打算限于本文所示出的那些方面,而是被給予與由以下權(quán)利要求限定的原理和新穎特征一致的最廣可能范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
太保市| 本溪市| 惠州市| 循化| 彰化县| 新干县| 阳西县| 平定县| 平果县| 容城县| 黔西县| 精河县| 福建省| 岑溪市| 黎城县| 城固县| 开原市| 宜城市| 东港市| 咸阳市| 喜德县| 磐安县| 轮台县| 双流县| 建湖县| 中卫市| 桂林市| 大庆市| 长沙市| 大宁县| 罗源县| 东台市| 新竹县| 涪陵区| 玉溪市| 渑池县| 健康| 郎溪县| 体育| 冀州市| 开封县|