專利名稱:在Windows環(huán)境下虛擬磁盤的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)軟件、信息安全軟件及系統(tǒng)工具軟件領(lǐng)域,尤其涉及一種在Windows環(huán)境下虛擬磁盤的方法。
背景技術(shù):
Windows系列軟件包括多個成員,現(xiàn)在廣泛使用的包括Windows 9x系列軟件和WindowsNT/2000。Windows 9x系列軟件是普通PC機(jī)使用的操作系統(tǒng)軟件,它為一般電腦用戶提供了工作和娛樂的平臺。而Windows NT/2000由于其具備比Windows 9x系列軟件強(qiáng)得多的穩(wěn)定性,以及Windows 9x系列軟件所不具備的安全功能,是企業(yè)中PC機(jī)操作系統(tǒng)軟件的首選。但Windows系列軟件沒有提供數(shù)據(jù)的安全保護(hù)功能,所有用戶都可以訪問磁盤上的數(shù)據(jù),對于用戶的私人數(shù)據(jù)沒有提供有力的保護(hù)措施。
在Windows系列軟件的開發(fā)包里提供了在系統(tǒng)里增加磁盤的方法,操作系統(tǒng)提供了增加磁盤的調(diào)用接口,但沒有使用這個方法來保護(hù)用戶的數(shù)據(jù)的實際應(yīng)用。
普通加密軟件雖然能完成數(shù)據(jù)的加解密,但對文件的操作仍舊通過操作系統(tǒng)(Windows)進(jìn)行,所以無法避免明文方式的數(shù)據(jù)的存在。在使用普通的數(shù)據(jù)加密技術(shù)的軟件在使用被加密的文件時,必須把被加密的文件解密出來才能進(jìn)行操作,在操作完成之后,必須把更新過的文件重新加密,這對于用戶是非常不方便的。而且,一般用戶在操作完成之后,容易忘記刪除解密出來的文件,并且即使在資源管理器中刪除了文件也可能被其它軟件恢復(fù),這就很不安全。
基于上述現(xiàn)有技術(shù)的不足之處,我們考慮在系統(tǒng)中虛擬一個安全磁盤,它能夠確保在物理的磁盤上任何時間都不存在任何用戶在資源管理器中看到的明文數(shù)據(jù),即用戶可以看到的數(shù)據(jù)在實際磁盤上永遠(yuǎn)都以加密形式存在,只要關(guān)閉虛擬磁盤文件,沒有任何技術(shù)可行的方法可以用于竊取用戶放在虛擬磁盤文件中的數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出在Windows系統(tǒng)中創(chuàng)建一個虛擬的安全磁盤,存放在這個磁盤里的數(shù)據(jù)受到嚴(yán)格的保護(hù),沒有口令或未經(jīng)授權(quán)的用戶無法訪問這個磁盤的數(shù)據(jù)。用戶可在該虛擬磁盤上對加密文件進(jìn)行操作,而不必進(jìn)行解密文件、編輯文件和加密文件的流程,并不會在系統(tǒng)中留下解密文件和臨時文件的殘骸。
本發(fā)明提出了一種在Windows環(huán)境下虛擬磁盤的方法,其實現(xiàn)方法如下所述一種在Windows環(huán)境下虛擬磁盤的方法,利用Windows 9x/NT磁盤驅(qū)動程序接口在Windows系統(tǒng)中創(chuàng)建一個與硬盤中的實際文件相對應(yīng)的虛擬磁盤,所述方法包括以下步驟a.從虛擬磁盤對應(yīng)的文件中讀取要生成的虛擬磁盤的信息,其中包括磁盤的容量、磁盤包含的柱面?zhèn)€數(shù)和磁頭個數(shù)、每個柱面包含的扇區(qū)數(shù)、每個扇區(qū)包含的字節(jié)數(shù)和磁盤使用的文件系統(tǒng);b.虛擬磁盤驅(qū)動程序根據(jù)步驟a中讀到的虛擬磁盤的信息創(chuàng)建一個磁盤設(shè)備;c.使用操作系統(tǒng)提供的增加磁盤的接口,把步驟b中創(chuàng)建的磁盤設(shè)備提交給操作系統(tǒng)使該磁盤設(shè)備可在系統(tǒng)內(nèi)使用;其中,虛擬磁盤對應(yīng)的文件在創(chuàng)建虛擬磁盤之前已建立于硬盤之中;虛擬磁盤對應(yīng)的文件中保存的信息受加密算法的保護(hù),必須以某種形式獲得密匙對其解密,以讀取文件內(nèi)容。根據(jù)步驟a中讀到的虛擬磁盤的信息創(chuàng)建的磁盤設(shè)備實際上是一個包含虛擬磁盤信息的數(shù)據(jù)結(jié)構(gòu)。
創(chuàng)建虛擬磁盤之后,就在系統(tǒng)中增加了一個虛擬的磁盤,比如如果用戶的系統(tǒng)中原來有一個硬盤、軟驅(qū)和光驅(qū),則他在資源管理器中可以看到A、C和D三個磁盤,可以對這三個盤進(jìn)行操作,而在創(chuàng)建磁盤分區(qū)之后,資源管理器中多出一個盤符為E的磁盤,盤符可由用戶選擇,可以在這個磁盤上進(jìn)行正常磁盤可以進(jìn)行的任意操作,實際的效果為對這個磁盤對應(yīng)的文件進(jìn)行操作。
虛擬磁盤生成后,虛擬磁盤驅(qū)動程序截獲了所有磁盤調(diào)用,并判斷系統(tǒng)是否調(diào)用虛擬磁盤,如果是,則調(diào)用虛擬磁盤;如果不是,則是對系統(tǒng)中原有磁盤的調(diào)用,直接由操作系統(tǒng)完成。調(diào)用虛擬磁盤包括以下步驟a.根據(jù)該次調(diào)用的信息數(shù)據(jù)在磁盤上的位置,計算出該信息在虛擬磁盤對應(yīng)的文件中的位置,計算方法如下所述確定要讀取或?qū)懭氲臄?shù)據(jù)在虛擬磁盤中的位置,這個位置包括三個參數(shù)柱面號C、磁頭號H和扇區(qū)號S,用于計算實際數(shù)據(jù)在虛擬磁盤文件中相對于文件頭的偏移量;假設(shè)虛擬磁盤共包含nC個柱面,nH個磁頭,每個柱面上的一個磁頭控制nS個扇區(qū),每個扇區(qū)包括nB個字節(jié),本次讀寫的柱面號為C、磁頭號為H和扇區(qū)號為S,則在虛擬磁盤文件中需要讀取或?qū)懭氲臄?shù)據(jù)相對于文件頭的偏移量為0ffset(偏移量)=(C×nH×nS+H×nS+S-1)×nB;C×nH×nS表示在要讀取或?qū)懭氲臄?shù)據(jù)所在的柱面C之前的扇區(qū)數(shù),H×nS表示在柱面C中要讀取或?qū)懭氲臄?shù)據(jù)所在的磁頭H之前的扇區(qū)數(shù),S-1表示在磁頭H中要讀取或?qū)懭氲臄?shù)據(jù)所在的扇區(qū)S之前的扇區(qū)數(shù),三者之和為要讀取或?qū)懭氲臄?shù)據(jù)前面的扇區(qū)數(shù)的總和,再乘以每個扇區(qū)的字節(jié)數(shù)得到數(shù)據(jù)距離文件頭的偏移量;b.確定該次調(diào)用的信息數(shù)據(jù)在磁盤上的長度即為該信息數(shù)據(jù)在磁盤文件中所占的長度;c.如果是讀虛擬磁盤,則根據(jù)要讀取的信息數(shù)據(jù)在虛擬磁盤對應(yīng)的文件中的位置和長度從虛擬磁盤對應(yīng)的文件中讀取需要的數(shù)據(jù),并且對讀出的數(shù)據(jù)進(jìn)行解密,把解密的結(jié)果返回給用戶;d.如果是寫虛擬磁盤,則加密要寫入的數(shù)據(jù),并且根據(jù)要寫入的信息數(shù)據(jù)在虛擬磁盤對應(yīng)的文件中的位置和長度,把加密后的數(shù)據(jù)寫入虛擬磁盤對應(yīng)的文件中。
盡管用戶選擇的口令可長可短,實際用來加密虛擬磁盤的密鑰是由系統(tǒng)自動生成的,根據(jù)不同的需要可以采用128位或者256位的隨機(jī)密鑰,使用256位隨機(jī)密鑰的虛擬磁盤是無法以暴力方法破解的。
加密虛擬磁盤的密鑰也以加密形式保存在虛擬磁盤文件里,用戶可以選擇用口令或者證書來加密這個密鑰,并且可以使用IC卡保存這個口令或者證書對應(yīng)的私鑰。
加密密鑰的口令并不以明文或者加密形式存在于虛擬磁盤文件中,而是只在虛擬磁盤文件中存放一個口令的摘要,摘要算法的性質(zhì)決定了它既可以用來驗證用戶輸入的口令是否正確,又不會泄露口令的具體數(shù)據(jù)及長度等信息。
本發(fā)明所具有的顯著效果是用戶可以使用口令或數(shù)字證書建立虛擬磁盤,它支持IC卡和USB插口身份識別設(shè)備。并且每個用戶可建立多個虛擬磁盤,每個虛擬磁盤支持多個用戶訪問。
虛擬磁盤完全仿真物理磁盤的文件操作,加密和解密對用戶是透明的。
虛擬磁盤容量只受磁盤自由空間限制。支持Windows 9x、Windows NT、Windows 2000平臺,支持FAT、FAT32和NTFS文件系統(tǒng)。
安裝虛擬磁盤后,Windows系統(tǒng)的正常文件操作無明顯的時間延遲。
圖1系統(tǒng)調(diào)用虛擬磁盤的簡單流程圖具體實施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)說明。
一種在Windows環(huán)境下虛擬磁盤的方法,利用Windows 9x/NT磁盤驅(qū)動程序接口在Windows系統(tǒng)中創(chuàng)建一個與硬盤中的實際文件相對應(yīng)的虛擬磁盤,所述方法包括以下步驟a.從虛擬磁盤對應(yīng)的文件中讀取要生成的虛擬磁盤的信息,其中包括磁盤的容量、磁盤包含的柱面?zhèn)€數(shù)和磁頭個數(shù)、每個柱面包含的扇區(qū)數(shù)、每個扇區(qū)包含的字節(jié)數(shù)和磁盤使用的文件系統(tǒng);b.虛擬磁盤驅(qū)動程序根據(jù)步驟a中讀到的虛擬磁盤的信息創(chuàng)建一個磁盤設(shè)備;c.使用操作系統(tǒng)提供的增加磁盤的接口,把步驟b中創(chuàng)建的磁盤設(shè)備提交給操作系統(tǒng)使該磁盤設(shè)備可在系統(tǒng)內(nèi)使用;其中,虛擬磁盤對應(yīng)的文件在創(chuàng)建虛擬磁盤之前已建立于硬盤之中;虛擬磁盤對應(yīng)的文件中保存的信息受加密算法的保護(hù),必須以某種形式或的密匙對其解密,并讀取文件內(nèi)容。根據(jù)步驟a中讀到的虛擬磁盤的信息創(chuàng)建的磁盤設(shè)備實際上是一個包含虛擬磁盤信息的數(shù)據(jù)結(jié)構(gòu)。
創(chuàng)建虛擬磁盤之后,就在系統(tǒng)中增加了一個虛擬的磁盤,比如如果用戶的系統(tǒng)中原來有一個硬盤、軟驅(qū)和光驅(qū),則他在資源管理器中可以看到A、C和D三個磁盤,可以對這三個盤進(jìn)行操作,而在創(chuàng)建磁盤分區(qū)之后,資源管理器中多出一個盤符為E的磁盤,盤符可由用戶選擇,可以在這個磁盤上進(jìn)行正常磁盤可以進(jìn)行的任意操作,實際的效果為對這個磁盤對應(yīng)的文件進(jìn)行操作。
虛擬磁盤生成后,虛擬磁盤驅(qū)動程序截獲了所有磁盤調(diào)用,并判斷系統(tǒng)是否調(diào)用虛擬磁盤,如果是,則調(diào)用虛擬磁盤;如果不是,則是對系統(tǒng)中原有磁盤的調(diào)用,直接由操作系統(tǒng)完成。調(diào)用虛擬磁盤包括以下步驟a.根據(jù)該次調(diào)用的信息數(shù)據(jù)在磁盤上的位置,計算出該信息在虛擬磁盤對應(yīng)的文件中的位置,計算方法如下所述確定要讀取或?qū)懭氲臄?shù)據(jù)在虛擬磁盤中的位置,這個位置包括三個參數(shù)柱面號、磁頭號和扇區(qū)號,用于計算實際數(shù)據(jù)在虛擬磁盤文件中相對于文件頭的偏移量;假設(shè)虛擬磁盤共包含nC個柱面,nH個磁頭,每個柱面上的一個磁頭控制nS個扇區(qū),每個扇區(qū)包括nB個字節(jié),本次讀寫的柱面號為C、磁頭號為H和扇區(qū)號為S,則在虛擬磁盤文件中需要讀取或?qū)懭氲臄?shù)據(jù)相對于文件頭的偏移量為0ffset(偏移量)=(C×nH×nS+H×nS+S-1)×nB;C×nH×nS表示在要讀取或?qū)懭氲臄?shù)據(jù)所在的柱面C之前的扇區(qū)數(shù),H×nS表示在柱面C中要讀取或?qū)懭氲臄?shù)據(jù)所在的磁頭H之前的扇區(qū)數(shù),S-1表示在磁頭H中要讀取或?qū)懭氲臄?shù)據(jù)所在的扇區(qū)S之前的扇區(qū)數(shù),三者之和為要讀取或?qū)懭氲臄?shù)據(jù)前面的扇區(qū)數(shù)的總和,再乘以每個扇區(qū)的字節(jié)數(shù)得到數(shù)據(jù)距離文件頭的偏移量;b.確定該次調(diào)用的信息數(shù)據(jù)在磁盤上的長度即為該信息數(shù)據(jù)在磁盤文件中所占的長度;c.如果是讀虛擬磁盤,則根據(jù)要讀取的信息數(shù)據(jù)在虛擬磁盤對應(yīng)的文件中的位置和長度從虛擬磁盤對應(yīng)的文件中讀取需要的數(shù)據(jù),并且對讀出的數(shù)據(jù)進(jìn)行解密,把解密的結(jié)果返回給用戶;d.如果是寫虛擬磁盤,則加密要寫入的數(shù)據(jù),并且根據(jù)要寫入的信息數(shù)據(jù)在虛擬磁盤對應(yīng)的文件中的位置和長度,把加密后的數(shù)據(jù)寫入虛擬磁盤對應(yīng)的文件中。
其中,加密虛擬磁盤的密匙由系統(tǒng)自動生成,加密虛擬磁盤的隨機(jī)密匙可根據(jù)實際需要采用128位或256位,加密虛擬磁盤的密匙以加密形式保存在虛擬磁盤文件里,用戶可選擇用口令或證書加密該密匙,并可使用卡保存該口令或證書對應(yīng)的私匙,加密密鑰的口令并不以明文或者加密形式存在于虛擬磁盤文件中,而只是在虛擬安全磁盤文件中存放一個口令的摘要。
權(quán)利要求
1.一種在WINDOWS環(huán)境下虛擬磁盤的方法,其特征在于,利用Windows 9x/NT磁盤驅(qū)動程序接口在Windows系統(tǒng)中創(chuàng)建一個與硬盤中的實際文件相對應(yīng)的虛擬磁盤,所述方法包括以下步驟a.從虛擬磁盤對應(yīng)的文件中讀取要生成的虛擬磁盤的信息,其中包括磁盤的容量、磁盤包含的柱面?zhèn)€數(shù)和磁頭個數(shù)、每個柱面包含的扇區(qū)數(shù)、每個扇區(qū)包含的字節(jié)數(shù)和磁盤使用的文件系統(tǒng);b.虛擬磁盤驅(qū)動程序根據(jù)步驟a中讀到的虛擬磁盤的信息創(chuàng)建一個磁盤設(shè)備;c.使用操作系統(tǒng)提供的增加磁盤的接口,把步驟b中創(chuàng)建的磁盤設(shè)備提交給操作系統(tǒng)使該磁盤設(shè)備可在系統(tǒng)內(nèi)使用;
2.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步特征在于,虛擬磁盤對應(yīng)的文件在創(chuàng)建虛擬磁盤之前已建立于硬盤之中,所述文件的大小為虛擬磁盤的容量,用于保存虛擬磁盤中的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步特征在于,虛擬磁盤對應(yīng)的文件中保存的信息受加密算法的保護(hù),必須以某種形式獲得密匙對其解密,以讀取文件內(nèi)容。
4.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步特征在于,根據(jù)步驟a中讀到的虛擬磁盤的信息創(chuàng)建的磁盤設(shè)備實際上是一個包含虛擬磁盤信息的數(shù)據(jù)結(jié)構(gòu)。
5.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步特征在于,創(chuàng)建虛擬磁盤后,系統(tǒng)中增加了一個虛擬的磁盤,即在資源管理器中多出一個具有盤符名的磁盤,該盤符名可由用戶自行命名。
6.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步特征在于,虛擬磁盤生成后,虛擬磁盤驅(qū)動程序截獲了所有磁盤調(diào)用,并判斷系統(tǒng)是否調(diào)用虛擬磁盤,如果是,則調(diào)用虛擬磁盤;如果不是,則是對系統(tǒng)中原有磁盤的調(diào)用,直接由操作系統(tǒng)完成。
7.根據(jù)權(quán)利要求6所述的方法,其進(jìn)一步特征在于,調(diào)用虛擬磁盤包括以下步驟a.根據(jù)該次調(diào)用的信息數(shù)據(jù)在磁盤上的位置,計算出該信息在虛擬磁盤對應(yīng)的文件中的位置,計算方法如下所述確定要讀取或?qū)懭氲臄?shù)據(jù)在虛擬磁盤中的位置,這個位置包括三個參數(shù)柱面號C、磁頭號H和扇區(qū)號S,用于計算實際數(shù)據(jù)在虛擬磁盤文件中相對于文件頭的偏移量;假設(shè)虛擬磁盤共包含nC個柱面,nH個磁頭,每個柱面上的一個磁頭控制nS個扇區(qū),每個扇區(qū)包括nB個字節(jié),本次讀寫的柱面號為C、磁頭號為H和扇區(qū)號為S,則在虛擬磁盤文件中需要讀取或?qū)懭氲臄?shù)據(jù)相對于文件頭的偏移量為Offset(偏移量)=(C×nH×nS+H×nS+S-1)×nB;C×nH×nS表示在要讀取或?qū)懭氲臄?shù)據(jù)所在的柱面C之前的扇區(qū)數(shù),H×nS表示在柱面C中要讀取或?qū)懭氲臄?shù)據(jù)所在的磁頭H之前的扇區(qū)數(shù),S-1表示在磁頭H中要讀取或?qū)懭氲臄?shù)據(jù)所在的扇區(qū)S之前的扇區(qū)數(shù),三者之和為要讀取或?qū)懭氲臄?shù)據(jù)前面的扇區(qū)數(shù)的總和,再乘以每個扇區(qū)的字節(jié)數(shù)得到數(shù)據(jù)距離文件頭的偏移量;b.確定該次調(diào)用的信息數(shù)據(jù)在磁盤上的長度即為該信息數(shù)據(jù)在磁盤文件中所占的長度;c.如果是讀虛擬磁盤,則根據(jù)要讀取的信息數(shù)據(jù)在虛擬磁盤對應(yīng)的文件中的位置和長度從虛擬磁盤對應(yīng)的文件中讀取需要的數(shù)據(jù),并且對讀出的數(shù)據(jù)進(jìn)行解密,把解密的結(jié)果返回給用戶;d.如果是寫虛擬磁盤,則加密要寫入的數(shù)據(jù),并且根據(jù)要寫入的信息數(shù)據(jù)在虛擬磁盤對應(yīng)的文件中的位置和長度,把加密后的數(shù)據(jù)寫入虛擬磁盤對應(yīng)的文件中。
8.根據(jù)權(quán)利要求2所述的方法,其進(jìn)一步特征在于,加密虛擬磁盤的密匙由系統(tǒng)自動生成。
9.根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步特征在于,加密虛擬磁盤的隨機(jī)密匙可根據(jù)實際需要采用128位或256位。
10.根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步特征在于,加密虛擬磁盤的密匙以加密形式保存在虛擬磁盤文件里,用戶可選擇用口令或證書加密該密匙,并可使用卡保存該口令或證書對應(yīng)的私匙。
11.根據(jù)權(quán)利要求10所述的方法,其進(jìn)一步特征在于,加密密匙的口令并不以明文或者加密形式存在于虛擬磁盤文件中,而只是在虛擬安全磁盤文件中存放一個口令的摘要。
全文摘要
本發(fā)明公開了一種在WINDOWS環(huán)境下虛擬磁盤的方法。目前,Windows系列軟件沒有提供數(shù)據(jù)的安全保護(hù)功能,所有用戶都可以訪問磁盤上的數(shù)據(jù),對于用戶的數(shù)據(jù)沒有提供有力的保護(hù)措施。本發(fā)明較好的解決了該問題,提出了在在WINDOWS環(huán)境下虛擬磁盤的方法,存放在虛擬磁盤里的數(shù)據(jù)受到嚴(yán)格的保護(hù),沒有口令或未經(jīng)授權(quán)的用戶無法訪問虛擬磁盤的數(shù)據(jù)。這個磁盤與實際硬盤上的一個文件相對應(yīng),對于虛擬磁盤的讀寫都對應(yīng)到實際文件的讀寫上。虛擬磁盤中的數(shù)據(jù)受到多種加密算法的保護(hù),可以保證數(shù)據(jù)的安全性。
文檔編號G06F12/16GK1373424SQ0113234
公開日2002年10月9日 申請日期2001年11月29日 優(yōu)先權(quán)日2001年11月29日
發(fā)明者吳海明, 嚴(yán)華力, 顧震 申請人:上海格爾軟件股份有限公司