專利名稱::存儲卡的數據保護方法
技術領域:
:本發明涉及一種數據保護方法,特別是涉及一種存儲卡的數據保護方法。
背景技術:
:隨著信息科技的突飛猛進,人們對于各類信息的需求更是呈現爆炸性的成長。近年來,眾多小型便攜式存儲裝置的普及化,例如以快閃存儲器為主要存儲媒介的USB隨身碟以及包括CF卡、MS卡、SD卡(安全數位卡)、多媒體卡、xD卡等等各種規格廠牌的各式存儲卡、使用CF或USB介面的微型硬盤、或者甚至是采用USB或PCMCIA介面且裝置在外接盒中的薄型2.5英寸硬碟機等等,更是滿足了人們對于「信息便攜性」與日劇增的渴望。對于目前所有現有的便攜式存儲裝置,其內部均包括有非揮發性存儲陣列、控制器、以及傳輸介面。存儲陣列用以儲存使用者所想要儲存的數據,且其必須具有在不需外界電源的情況下仍能保存所儲存數據的特性,因此經常是以快閃存儲器或硬盤來作為存儲陣列。在控制器中,則包括有用以驅動與使用存儲陣列所需的相關電路、介面與驅動機制。這驅動機制可以是以硬件的控制程序電路形式存在以執行一連串的微碼程序、或亦可以是以硬件的微控制器/微處理器電路形式存在以執行一連串韌件程序的方式存在于此便攜式存儲裝置的控制器中。而傳輸介面則決定便攜式存儲裝置是以何種通訊協定與外界裝置結合與溝通。目前,市售的現有存儲卡均只有單純作為數據儲存媒介的功能,并無提供數據保護的功能。而對于存儲卡本身功能的控制,也僅有藉由防寫鈕此一硬件元件的切換位置,來決定存儲卡是處于可寫入或是防寫只讀的狀態。換句話說,現有市售的存儲卡并無提供任何數據保護的機制,使用者可以隨意讀取甚至刪修存儲卡內的所有數據,因此無法對存儲卡上特定的數據進行保護。
發明內容本發明提供一種存儲卡的數據保護方法,可以對存儲卡中的保護扇區的數據進行保護,以防止使用者修改及刪除保護扇區中的數據。本發明提出一種存儲卡的數據保護方法,其包括下列步驟。首先,在存儲卡的第一區域中定義至少一個第一保護扇區。接著,備份該第一保護扇區的第一保護數據在控制器中。在接收到更新指令后,當更新指令欲存取第一目標扇區時,判斷第一目標扇區是否為第一保護扇區。當第一目標扇區為第一保護扇區且第一保護扇區己填滿時,則使更新指令忽略第一目標扇區。當第一目標扇區為第一保護扇區且第一保護扇區未填滿時,則使更新指令存取第一目標扇區,并且執行數據復原動作以將第一保護數據寫回至第一保護扇區。在本發明的一實施例中,此數據保護方法還包括在存儲卡的第二區域中定義至少一個第二保護扇區;當更新指令欲存取第二目標扇區時,判斷第二目標扇區是否為第二保護扇區;當第二目標扇區為第二保護扇區時,則使更新指令忽略第二目標扇區;當第二目標扇區不是第二保護扇區時,則使更新指令存取第二目標扇區。在本發明的一實施例中,此數據保護方法還包括在存儲卡的第二區域中定義至少一個第二保護扇區;備份第二保護扇區的第二保護數據在控制器中;當更新指令欲存取第二目標扇區時,判斷第二目標扇區是否為第二保護扇區;當第二目標扇區為第二保護扇區且第二保護扇區己填滿時,則使更新指令忽略第二目標扇區;當第二目標扇區為第二保護扇區且第二保護扇區未填滿時,則使更新指令存取第二目標扇區,并且執行數據復原動作以將第二保護數據寫回至第二保護扇區。在本發明的一實施例中,此數據保護方法還包括在存儲卡的第三區域中定義至少一個第三保護扇區;當更新指令欲存取第三目標扇區時,判斷第三目標扇區是否為第三保護扇區;當第三目標扇區為第三保護扇區時,則使更新指令忽略第三目標扇區;當第三目標扇區不是第三保護扇區時,則使更新指令存取第三目標扇區。在本發明的一實施例中,此第一區域為根目錄,此第二區域為文件配置表,此第三區域為數據區域。在本發明的一實施例中,此數據保護方法還包括當第一目標扇區不是第一保護扇區時,則使更新指令存取第一目標扇區。在本發明的一實施例中,此定義第一保護扇區的步驟包括初始化存儲卡;寫入第一保護數據至該存儲卡;將該第一保護數據的扇區地址記錄在該控制器以定義第一保護區域。在本發明的一實施例中,此第一保護數據包括至少一文件。綜合以上所述,本發明的存儲卡的數據保護方法,在使用者對存儲卡進行更新時,會先判斷進行更新的目標扇區是否為保護扇區。當目標扇區為保護扇區且保護扇區己填滿時,則忽略使用者的更新。當目標扇區為保護扇區且保護扇區未填滿時,則先讓使用者進行更新,并接著執行受保護數據的復原動作。因此,當使用者對存儲卡中進行任何更新操作時(例如進行寫入、刪除/抹除、格式化等操作),可對保護扇區的文件/數據進行保護,以防止保護扇區內的文件被更新。下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。圖1是本發明一實施例的存儲卡的存儲單元的結構示意圖;圖2是本發明一實施例的存儲卡的數據保護方法的流程圖;圖3是本發明另一實施例的存儲卡的數據保護方法的流程圖;圖4是本發明又一實施例的存儲卡的數據保護方法的流程圖。主要元件符號說明100存儲單元;110主引導記錄及分割區域;120分割開機區域;130第一文件配置表;140第二文件配置表;131134、141144、151153、161169扇區;150:根目錄;160:數據區域;S201S2010、S301S317、S401S415本發明實施例的存儲卡的數據保護方法的步驟。具體實施例方式圖1是本發明一實施例的存儲卡的存儲單元的結構示意圖。請參照圖1,在本實施例中,所使用的存儲卡可以是CF卡、MS卡、安全數位卡、MMC卡、xD卡或其他非揮發性存儲卡。一般而言,存儲卡在制作完成后,其存儲單元為一整個空白的區塊。此時,使用者無法使用此存儲卡,必須再經過一開卡程序,將存儲卡的的信息寫入至其存取控制器,以及將存儲單元進行格式化(formatting)以構成文件系統(例如圖1所示即為其中一種文件系統)。在開卡過程中,廠商會將客制化的韌件/軟件寫入存儲卡的控制器中,并通過控制器對存儲卡的存儲單元(例如FLASH存儲器)進行格式化的動作,因此存儲卡的存儲單元會被定義為各種不同功能的多個區域。完成開卡程序的存儲卡便可販售給一般使用者使用。接著,使用者才能通過存儲卡的控制器對存儲單元的文件系統進行數據存取的動作。在此假設此存儲卡在開卡程序后,其存儲單元100被格式化為一個16位元的文件配置表(FileAllocationTable,FAT)的文件系統。而格式化后的存儲單元100會包括主引導記錄(MainBootableRecord,MBR)及分割區域110、分割開機區域(PartitionBootSector)120、第一文件配置表130、第二文件配置表140、根目錄(RootDirectory)150及數據區域(UserDataArea)160。其中,主引導記錄及分割區域110記載的信息包括了一個實體的硬盤上的分割信息、那一個分割區上有開機管理程序、以及那一個分割區是用來開機。分割開機區域120存放著可啟動作業系統的程序碼。第一文件配置表130記載了每個文件在數據區域160中所占用的簇(cluster)的數量以及每個簇的位置,其中一個簇的大小是依據存儲卡的大小而有所不同,但至少會是一個或多個扇區(sector)。第一文件配置表130指出了每個簇下一個要鍵接的簇的位置,因此記載每個文件所占用的簇的位置。第二文件配置表140則是第一文件配置表130的備份,用以當第一文件配置表130的信息遺失時,可以從第二文件配置表140取得文件配置的位置。根目錄150記載了每個文件的文件描述塊(FileDeScripti0n,FDC),其用以記錄文件相關的信息,例如文件名稱、副檔名及文件起始位置......等。數據區域160則是真正存放數據的地方,存儲卡的控制器依據主引導記錄及分割區域110、分割開機區域120、第一文件配置表130、第二文件配置表140及根目錄150中所記載的信息,對數據區域160進行定址(addressing)與存取的動作。依據上述,當使用者存入一個文件時,控制器除了將文件存放在數據區域160中外,在第一文件配置表130、第二文件配置表140及根目錄150中同時會記載與此文件相關的信息,以便于下一次存取時可以引導控制器正確地寫入、更新或讀取此文件。值得一提的是,12位元的文件配置表的文件系統與16位元的文件配置表的文件系統相同,而32位元的文件配置表的文件系統與16位元的文件配置表的文件系統最大的差異在于沒有根目錄150。由于現在便攜式電子裝置已隨處可見,連帶的存儲卡的使用也越來越普遍,以致于存儲卡的價格越來越便宜,并且購買便攜式電子裝置幾乎都會隨機附贈存儲卡。由于附贈存儲卡的價格日趨便宜且隨機都會附贈存儲卡,逐漸有廠商希望能在開卡程序中對存儲卡事先寫入一些客制化信息,例如廣告短片、廠商名稱、或商標圖片等。在其他應用例中,廠商可能希望能在存儲卡中事先寫入數據加解密信息、存儲卡識別信息、或是其他特殊的客6制化信息。但是,傳統存儲卡中沒有對上述客制化信息進行保護的機制,使得使用者在一般操作過程中可以輕易的清除廠商在開卡程序中所寫入的客制化信息。因此,以下提出了一種存儲卡的數據保護方法,以確保在開卡程序中所寫入的客制化信息不會被使用者所清除或更改。一般而言,客制化信息可以在工廠制造過程中寫入,或者廠商在出貨前在開卡程序中寫入。圖2是本發明一實施例的存儲卡的數據保護方法的流程圖。請參照圖1及圖2,首先,會先定義至少一個保護扇區,其包含步驟S201S204。在開卡程序中,會先初始化(會格式化)存儲卡(步驟S201),以讓存儲卡具有文件系統。接著,將保護數據(客制化信息以及相關的定址信息)寫入存儲單元100的數據區域160、第一文件配置表130、第二文件配置表140及根目錄150(步驟S202)。在步驟S202中,將客制化信息寫入數據區域160完成后,會將此客制化信息所存放的地址(定址信息)對應地記錄在第一文件配置表130、第二文件配置表140及根目錄150中。在此為了保護具有客制化信息的保護數據,除了位于數據區域160中記錄客制化信息的一或多個扇區列為保護區域(保護扇區)外,位于第一文件配置表130、第二文件配置表140及根目錄150中記錄者著相關定址信息的一或多個扇區同樣會列為保護區域(保護扇區)。在圖1中,每一小格代表一個扇區,而斜線所示區域表示保護扇區。因此,可獲知客制化信息相對應的保護數據所存放的扇區地址,然后將保護數據的扇區地址記錄在存儲卡的控制器以定義上述保護區域/保護扇區(步驟S203)。接著,上述保護扇區的保護數據會被備份至控制器中(步驟S204)。前述將保護數據與其扇區地址記錄在控制器的方式,可以是將保護數據與保護扇區地址記錄在控制器的韌件或軟件,也可以將保護數據與保護扇區地址記錄在控制器的隨機存取存儲器(RAM)。步驟S204所備份的保護數據,可以是第一文件配置表130、第二文件配置表140與/或根目錄150的各個保護扇區中,未填滿的保護扇區(如扇區133、143及152)的保護數據。在控制器中,可以建立特定表格以寫入保護區域的扇區位置來定義出保護扇區,并且可以建立特定區塊以存入尚未填滿扇區中的信息。由于在第一文件配置表130、第二文件配置表140及根目錄150中數據寫入并不是以一個扇區為單位,所以會出現未填滿的扇區,并且在扇區中未填滿的部份仍須供使用者使用。在存儲卡的控制器接收到更新指令時(步驟S205),代表使用者或系統端欲對存儲卡的存儲單元100進行文件的更新動作。此更新動作可能包括數據寫入、數據刪除及/或格式化等操作。此時,存儲卡的控制器依據表格所寫入的扇區位置判斷更新指令的目標扇區是否位于保護區域中,也就是判斷目標扇區是否為保護扇區(步驟S206)。當目標扇區位于保護區域中時,會接著判斷目標扇區是否已填滿(步驟S207)。若目標扇區已填滿,則存取控制器會忽略此更新指令對該目標扇區的存取動作(步驟S209);否則,控制器會先執行更新指令,以使更新指令可以對目標扇區中未填滿的部份進行存取,并接著將備份在控制器中對應此目標扇區的保護數據再寫回到目標扇區中,以此進行數據復原動作(步驟S208)。此外,若步驟S206判斷更新指令的目標扇區不是位于保護區域中,也就是目標扇區不是保護扇區,則控制器會執行更新指令以對目標扇區進行存取(步驟S210)。因此,控制器會依據步驟S203所定義的保護區域確保欲保護數據不會被使用者因刪除或格式化而消失,以此保護具有客制化信息的保護數據。值得一提的是,上述存儲卡的數據保護方法的步驟S201S204為廠商出貨前所作的步驟,所以步驟S201S204不會出現在使用者對存儲卡寫入的處理流程中。換言之,一般使用者對存儲卡寫入數據的處理流程為步驟S206S210。此外,由于數據區域160是以簇為寫入單位,所以不會出現未填滿的扇區,亦即在數據區域160中,更新指令只會存取或忽略目標區域,而不會作數據復原的動作。依據上述,以及配合控制器在更新數據時修改各區域的順序,以下則再提一實施例來說明,其中控制器對各區域的修改順序為第一文件配置表130、第二文件配置表140、根目錄150及數據區域160。圖3是本發明另一實施例的存儲卡的數據保護方法的流程圖。請參照圖1及圖3,一般而言,廠商在出貨前,會將具有客制化信息的保護數據存儲卡的存儲單元100中,并且依據上述說明定義出保護區域/保護扇區。在存儲卡出貨后,使用者在通過電子裝置對存儲卡進行更新時,電子裝置會發出更新指令至存儲卡。在存儲卡接收到更新指令時(步驟S301),控制器會依據更新指令而先更新文件配置表(包括第一文件配置表130及第二文件配置表140)的部份,所以會先判斷文件配置表中被更新的目標扇區是否位于保護區域內(保護扇區)(步驟S302)。假設此時目標扇區為扇區131,則更新指令的目標區域為保護扇區并且經由步驟S303判斷目標區域是填滿的,所以控制器會忽略使用者對扇區131的更新指令(步驟5304),以使更新指令忽略扇區131。接著,控制器會判斷下一個更新指令的目標扇區是否仍在文件配置表中(步驟S307)假設電子裝置會依序發出多個更新指令以對所有扇區進行更新,所以接著目標扇區會指向扇區132,亦即下一個更新指令的目標扇區仍在文件配置表中。由于扇區132的執行步驟與扇區131相同,故可參照上述說明而不再贅述。接著,目標扇區會指向扇區133,由于扇區133為保護扇區且未填滿,所以控制器會先執行扇區133的更新動作,以使更新指令對扇區133進行存取。在扇區133更新后,控制器會將其所備份且對應扇區133的保護數據寫回至扇區133,以此進行扇區133的保護數據的復原動作(步驟5305)。接著,目標扇區指向扇區134,由于扇區134并不是保護扇區,亦即扇區134不在保護區域內,所以控制器會執行更新指令(步驟S306),以如同現有存儲卡一般對扇區134進行存取。而文件配置表(包括第一文件配置表130及第二文件配置表140)中其他未填滿的扇區的更新動作可參照扇區134的說明,并且第一文件配置表130與第二文件配置表140的執行動作皆相同,故不再重述扇區141144的動作。在第一文件配置表130及第二文件配置表140中所有扇區皆更新結束后,目標扇區會指向扇區151,表示下一個更新指令的目標扇區不在文件配置表中,并且接下來的更新指令會進行根目錄150部份的更新。此時目標扇區為保護扇區且目標扇區為填滿狀態,所以控制器會忽略對扇區151的更新動作。接著,控制器會判斷下一個更新指令的目標扇區是否仍在根目錄150中(步驟S313)。接下來,目標扇區會指向扇區152,表示下一個更新指令的目標扇區仍在根目錄中(步驟S313)。扇區152為保護扇區且未填滿,所以控制器會先執行扇區152的更新動作,以使更新指令對扇區152進行存取。在扇區152更新后,再將控制器中對應扇區152的保護數據寫回至扇區152,以此進行扇區152的保護數據的復原動作(步驟S311)。接著,目標扇區指向扇區153,由于扇區153不是保護扇區,所以控制器會執行更新指令(步驟S312),以對扇區153進行存取而不作任何保護動作。在根目錄150中其他未填滿的扇區的更新動作可參照扇區153的說明。在根目錄150中所有扇區皆更新結束后,目標扇區會指向扇區161,表示下一個更新指令的目標扇區不在根目錄中,并且更新指令會接著進行數據區域160部份的更新。如上所述,數據區域160不會出現未填滿的扇區,所以當目標扇區為扇區161168時,控制器會忽略扇區161168的更新指令(步驟S315)。當目標扇區為扇區169時,控制器會執行扇區169的更新指令(步驟S316)。在每一個更新指令之后,都會判斷下一個更新指令的目標扇區是否在數據區域160中(步驟S317)。在控制器接收不到更新指令時,表示下一個更新指令的目標扇區不在數據區域160中。換言之,代表數據區域160中所有扇區皆更新完畢,接著則結束此數據保護方法。值得一提的是,上述扇區的指向為用以說明,其實際情況目標扇區可能只有其中數個而非整個區域的全部扇區。以數據刪除及數據寫入而言,只會更新到第一文件配置表130、第二文件配置表140、根目錄150及數據區域160中部份扇區,而非上述區域的全部扇區。此外,由于第一文件配置表130及第二文件配置表140所使用的空間遠大于一個扇區,因此可以將第一文件配置表130及第二文件配置表140中保護區域內的保護扇區填滿,因此可減少數據復原的動作,以提升存儲卡的執行效率。圖4是本發明又一實施例的存儲卡的數據保護方法的流程圖。請參照圖3及圖4,其不同之處在于步驟S403。請參照圖1,在扇區133、143被填滿后,當更新指令的目標扇區指向扇區133、143時,扇區133、143的更新動作會直接被忽略,而不需要再作保護數據的復原。因此,可加速此數據保護方法的執行速度,并可減少儲存在控制器中保護數據的容量。以圖1舉例來說,當使用者對存儲卡進行格式化時,控制器在進行到扇區131133會忽略因格式化所造成的刪除動作,亦即在第一文件配置表130中只對扇區134之后的扇區(包含扇區134)進行格式化。同理而言,在第二文件配置表140中只對扇區144之后的扇區(包含扇區144)進行格式化。而在根目錄150中,扇區151不會被格式化,而扇區152則會先進行格式化,在格式化后再將保護數據寫回至扇區152。在數據區域160中,扇區161168不會被格式化,扇區169之后的扇區(包含扇區169)才會被格式化。另外,當使用者對存儲卡進行寫入數據時,控制器直接在扇區134寫入數據的相關信息,而不會對扇區131133執行更新指令。同理而言,控制器會跳過扇區141144,在扇區144寫入使用者數據的相關信息。在根目錄150中,控制器會在扇區152寫入使用者數據的相關信息,接著再將備份在控制器中的保護數據回寫到扇區152。在數據區域160中,會將使用者數據寫入到扇區169之后的扇區(包含扇區169)。綜合以上所述,本發明的存儲卡的數據保護方法,在使用者對存儲卡進行更新時,會先判斷進行更新的目標扇區是否位于保護區域中,亦即判斷目標扇區是否為保護扇區。當目標扇區位于保護區域中且目標扇區己填滿時,則忽略使用者的更新。當目標扇區位于保護區域中且目標扇區未填滿時,則讓使用者進行更新,并接著執行保護數據的復原動作。因此,當使用者對存儲卡中進行任何更新操作時(例如進行寫入、刪除/抹除、格式化等操作),可對保護區域內的文件/數據進行保護,以防止保護區域內的文件被更新。此外,可將文件配置表中的保護扇區填滿,可簡化此數據保護方法的流程以提升存儲卡的執行效率。最后應說明的是以上實施例僅用以說明本發明的技術方案而非對其進行限制,盡管參照較佳實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對本發明的技術方案進行修改或者等同替換,而這些修改或者等同替換亦不能使修改后的技術方案脫離本發明技術方案的精神和范圍。權利要求1.一種存儲卡的數據保護方法,其特征在于包括在該存儲卡的一第一區域中定義至少一第一保護扇區;備份該第一保護扇區的一第一保護數據至一控制器中;接收一更新指令;當該更新指令欲存取一第一目標扇區時,判斷該第一目標扇區是否為該第一保護扇區;當該第一目標扇區為該第一保護扇區且該第一保護扇區己填滿時,則使該更新指令忽略該第一目標扇區;以及當該第一目標扇區為該第一保護扇區且該第一保護扇區未填滿時,則使該更新指令存取該第一目標扇區,并且執行一數據復原動作以將該第一保護數據寫回至該第一保護扇區。2.根據權利要求1所述的存儲卡的數據保護方法,其特征在于所述數據保護方法還包括在該存儲卡的一第二區域中定義至少一第二保護扇區;當該更新指令欲存取一第二目標扇區時,判斷該第二目標扇區是否為該第二保護扇區;當該第二目標扇區為該第二保護扇區時,則使該更新指令忽略該第二目標扇區;以及當該第二目標扇區不是該第二保護扇區時,則使該更新指令存取該第二目標扇區。3.根據權利要求2所述的存儲卡的數據保護方法,其特征在于該第一區域為一根目錄,該第二區域為一文件配置表。4.根據權利要求1所述的存儲卡的數據保護方法,其特征在于所述數據保護方法還包括在該存儲卡的一第二區域中定義至少一第二保護扇區;備份該第二保護扇區的一第二保護數據至該控制器中;當該更新指令欲存取一第二目標扇區時,判斷該第二目標扇區是否為該第二保護扇區;當該第二目標扇區為該第二保護扇區且該第二保護扇區己填滿時,則使該更新指令忽略該第二目標扇區;以及當該第二目標扇區為該第二保護扇區且該第二保護扇區未填滿時,則使該更新指令存取該第二目標扇區,并且執行該數據復原動作以將該第二保護數據寫回至該第二保護扇區。5.根據權利要求4所述的存儲卡的數據保護方法,其特征在于所述數據保護方法還包括在該存儲卡的一第三區域中定義至少一第三保護扇區;當該更新指令欲存取一第三目標扇區時,判斷該第三目標扇區是否為該第三保護扇區;當該第三目標扇區為該第三保護扇區時,則使該更新指令忽略該第三目標扇區;以及當該第三目標扇區不是該第三保護扇區時,則使該更新指令存取該第三目標扇區。6.根據權利要求5所述的存儲卡的數據保護方法,其特征在于該第一區域為一根目錄,該第二區域為一文件配置表,該第三區域為一數據區域。7.根據權利要求1所述的存儲卡的數據保護方法,其特征在于所述數據保護方法還包括當該第一目標扇區不是該第一保護扇區時,則使該更新指令存取該第一目標扇區。8.根據權利要求1所述的存儲卡的數據保護方法,其特征在于所述定義該第一保護扇區的步驟包括初始化該存儲卡;寫入該第一保護數據至該存儲卡;以及將該第一保護數據的扇區地址記錄在該控制器以定義該第一保護扇區。9.根據權利要求8所述的存儲卡的數據保護方法,其特征在于該第一保護數據包括至少一文件。10.根據權利要求1所述的存儲卡的數據保護方法,其特征在于該存儲卡為一CF卡、MS卡、SD卡、MMC卡、或xD卡。全文摘要本發明公開了一種存儲卡的數據保護方法,其包括下列步驟首先,在存儲卡的第一區域中定義至少一個第一保護扇區。接著,備份第一保護扇區的第一保護數據至控制器中。在接收到更新指令后,當更新指令欲存取第一目標扇區時,判斷第一目標扇區是否為第一保護扇區。當第一目標扇區為第一保護扇區且第一保護扇區己填滿時,則使更新指令忽略第一目標扇區。當第一目標扇區為第一保護扇區且第一保護扇區未填滿時,則使更新指令存取第一目標扇區,并且執行數據復原動作,以將第一保護數據寫回至第一保護扇區。文檔編號G06K19/073GK101996338SQ20091016647公開日2011年3月30日申請日期2009年8月19日優先權日2009年8月19日發明者林群泰申請人:亮發科技股份有限公司