專(zhuān)利名稱(chēng):一種存儲(chǔ)方法、服務(wù)器和客戶(hù)端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及云存儲(chǔ)技術(shù),特別涉及一種存儲(chǔ)方法、服務(wù)器和客戶(hù)端。
背景技術(shù):
云存儲(chǔ)已經(jīng)越來(lái)越成為一種趨勢(shì),所謂云存儲(chǔ)是指通過(guò)集群應(yīng)用、網(wǎng)格技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類(lèi)型的存儲(chǔ)設(shè)備通過(guò)應(yīng)用軟件集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪(fǎng)問(wèn)功能的一個(gè)系統(tǒng)。對(duì)于云存儲(chǔ)服務(wù)提供商而言,為了優(yōu)化存儲(chǔ)空間的使用,當(dāng)海量用戶(hù)上傳海量數(shù)據(jù)時(shí),通過(guò)事實(shí)上不接受相同文件的上傳。比如甲已經(jīng)存儲(chǔ)了 B文件,要是乙存儲(chǔ)的文件在上傳掃描的過(guò)程中若被發(fā)現(xiàn)也是B文件,則事實(shí)上不會(huì)被上傳,而是簡(jiǎn)單的將已有的那份B文件加入到乙的賬戶(hù)內(nèi)。在現(xiàn)有技術(shù)中,為了保證將相同的文件加入到另一個(gè)用戶(hù)的賬戶(hù)后,另一個(gè)用戶(hù)也能正常訪(fǎng)問(wèn),通用的做法是:用對(duì)稱(chēng)密鑰加密文件,將該密鑰長(zhǎng)期存儲(chǔ)在服務(wù)器中;如果用非對(duì)稱(chēng)密鑰加密,那服務(wù)商必然也需要知道私鑰,否則其無(wú)法將數(shù)據(jù)文件的訪(fǎng)問(wèn)權(quán)限增加給另一個(gè)用戶(hù)。即,由于云存儲(chǔ)服務(wù)商需要將文件訪(fǎng)問(wèn)權(quán)限授權(quán)給另一個(gè)用戶(hù)(具有相同文檔的用戶(hù)),服務(wù)商必需都有能力識(shí)別該文件(識(shí)別該文件的明文,或擁有該文件的解密密鑰),這樣在技術(shù)層面上,服務(wù)商(內(nèi)部員工)實(shí)際上可以獲取用戶(hù)存儲(chǔ)的明文的,約束服務(wù)商的只有道德了。比如目前聲稱(chēng)存儲(chǔ)安全的Dropbox,其員工就可以看到用戶(hù)存儲(chǔ)的文件內(nèi)容(即使是加密存儲(chǔ),因?yàn)樾枰峁┙o另一個(gè)用戶(hù),實(shí)際上,服務(wù)商了解加密規(guī)則以及解密密鑰)。為此,需要一種新的技術(shù),既可以避免相同文檔的重復(fù)存儲(chǔ),又要保證任意其他用戶(hù)包括云存儲(chǔ)服務(wù)商都無(wú)法訪(fǎng) 問(wèn)到明文數(shù)據(jù)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種存儲(chǔ)方法、服務(wù)器和客戶(hù)端,既可以避免相同數(shù)據(jù)文件的重復(fù)存儲(chǔ),又要保證任意其他用戶(hù)包括云存儲(chǔ)服務(wù)商都無(wú)法訪(fǎng)問(wèn)到明文數(shù)據(jù)。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的:一種存儲(chǔ)方法,其中,用戶(hù)A具有加密密鑰ekA以及相應(yīng)的解密密鑰dkA,當(dāng)存儲(chǔ)用戶(hù)A的數(shù)據(jù)X時(shí),該存儲(chǔ)方法包括:利用存儲(chǔ)加密密鑰ekS對(duì)數(shù)據(jù)文件X進(jìn)行加密,獲得密文數(shù)據(jù)Y ;利用ekA加密與ekS對(duì)應(yīng)的解密密鑰dkS,獲得用戶(hù)A的個(gè)人密鑰kA ;利用與X相關(guān)的加密密鑰ekX加密dkS,獲得X的數(shù)據(jù)密鑰kX ;存儲(chǔ)Y、kA 以及 kX;其中,當(dāng)具有加密密鑰ekB以及相應(yīng)的解密密鑰dkB的用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),該方法進(jìn)一步包括:
基于X計(jì)算與ekX對(duì)應(yīng)的解密密鑰dkX ;利用dkX解密kX獲得dkS ;利用ekB加密dkS獲取用戶(hù)B的個(gè)人密鑰kB ;存儲(chǔ)kB。—種存儲(chǔ)服務(wù)器,包括:第一加密模塊,用于利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密;以及利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰;其中,以數(shù)據(jù)文件所屬用戶(hù)的密鑰為解密密鑰對(duì)個(gè)人密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;存儲(chǔ)模塊,用于存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰;密鑰授權(quán)模塊,用于在判斷模塊判斷的結(jié)果為是時(shí),利用該數(shù)據(jù)文件對(duì)數(shù)據(jù)密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,再利用用戶(hù)的密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密形成所述用戶(hù)的個(gè)人密鑰;刪除模塊,用于刪除明文數(shù)據(jù)文件以及存儲(chǔ)密鑰。一種存儲(chǔ)客戶(hù)端,包括:
第一模塊,用于利用存儲(chǔ)加密密鑰ekS對(duì)數(shù)據(jù)文件X進(jìn)行加密,獲得密文數(shù)據(jù)Y ;第二模塊,用于利用用戶(hù)A的加密密鑰ekA加密與ekS對(duì)應(yīng)的解密密鑰dkS,獲得用戶(hù)A的個(gè)人密鑰kA ;以及利用與X相關(guān)的加密密鑰ekX加密dkS,獲得X的數(shù)據(jù)密鑰kX ;第三模塊,用于將Y、kA以及kX發(fā)送到服務(wù)器端存儲(chǔ);該客戶(hù)端進(jìn)一步包括:第四模塊,用于當(dāng)具有加密密鑰ekB以及相應(yīng)的解密密鑰dkB的用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),基于X計(jì)算與ekX對(duì)應(yīng)的解密密鑰dkX ;利用dkX解密kX獲得dkS ;利用ekB加密dkS獲取用戶(hù)B的個(gè)人密鑰kB ;第五模塊,用于將kB發(fā)送到服務(wù)器存儲(chǔ)。利用本發(fā)明實(shí)施例提供的技術(shù)方案,相同的數(shù)據(jù)文件不會(huì)被重復(fù)存儲(chǔ),只是將存儲(chǔ)密鑰授權(quán)給擁有同樣數(shù)據(jù)文件第三方。利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰。真正擁有相同明文數(shù)據(jù)的第三方可以利用數(shù)據(jù)文件本身才能解密出存儲(chǔ)密鑰,后續(xù)又再利用自己的個(gè)人密鑰將存儲(chǔ)密鑰進(jìn)行加密,得到個(gè)人密鑰,保證了后續(xù)可以利用個(gè)人密鑰對(duì)數(shù)據(jù)進(jìn)行讀取。整個(gè)過(guò)程,既保證了將存儲(chǔ)密鑰僅僅授權(quán)給真正擁有相同數(shù)據(jù)文件的第三方,又保證整個(gè)過(guò)程中既使是存儲(chǔ)服務(wù)提供商也無(wú)法獲得存儲(chǔ)密鑰。
圖1為本發(fā)明實(shí)施例提供的一種存儲(chǔ)方法的流程圖。圖2為本發(fā)明實(shí)施例提供的一種存儲(chǔ)方法的流程圖。圖3為本發(fā)明實(shí)施例提供的一種存儲(chǔ)方法的流程圖。圖4為本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。圖5為本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。圖1為本發(fā)明實(shí)施例提供的一種存儲(chǔ)方法的流程圖。在該實(shí)施例中,利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密;同時(shí)利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰(personal key)和數(shù)據(jù)密鑰(data key);其中,以數(shù)據(jù)文件所屬用戶(hù)的密鑰為解密密鑰對(duì)個(gè)人密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰。該方法同時(shí)包括:步驟101:在存儲(chǔ)新用戶(hù)的數(shù)據(jù)文件前,判斷已存儲(chǔ)數(shù)據(jù)文件中是否存在相同的數(shù)據(jù)文件;如果判斷結(jié)果為是,則執(zhí)行步驟102 ;否則,執(zhí)行步驟103。步驟102:不重復(fù)上傳存儲(chǔ)該數(shù)據(jù)文件;利用該數(shù)據(jù)文件對(duì)數(shù)據(jù)密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,再利用新用戶(hù)的密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密形成所述新用戶(hù)的個(gè)人密鑰。到此流程結(jié)束。步驟103:利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密存儲(chǔ);同時(shí)利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰;存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰。到此流程結(jié)束。當(dāng)一新用戶(hù)上傳數(shù)據(jù)文件前,服務(wù)器首先會(huì)判斷云端是否已經(jīng)存在與待上傳數(shù)據(jù)文件相同的數(shù)據(jù)文件。如果已經(jīng)存在,則先利用用戶(hù)提供的數(shù)據(jù)文件解密數(shù)據(jù)密鑰得出存儲(chǔ)密鑰,再利用用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰加密得到個(gè)人密鑰。后續(xù)訪(fǎng)問(wèn)時(shí),用戶(hù)只需提供自己的密鑰對(duì)個(gè)人密鑰進(jìn)行解密就能得到存儲(chǔ)密鑰,進(jìn)一步利用該存儲(chǔ)密鑰獲得該數(shù)據(jù)明文。這樣,這樣既實(shí)現(xiàn)了防止數(shù)據(jù)文件在云端的重復(fù)存儲(chǔ),也能保證云儲(chǔ)存服務(wù)商自己(內(nèi)部員工)不能獲取數(shù)據(jù)內(nèi)容的明文。本領(lǐng)域技術(shù)人員可以理解,在某些情況下,同一用戶(hù)可能會(huì)先后上傳同一數(shù)據(jù)文件,那么在該用戶(hù)期待再次上傳已上傳數(shù)據(jù)文件時(shí),服務(wù)器端如果判斷該數(shù)據(jù)文件來(lái)源與同一用戶(hù),將不執(zhí)行任何操作。在本發(fā)明一實(shí)施例中,服務(wù)器根據(jù)文件的Hash值來(lái)鑒別重復(fù)文件,即如果兩份文件具有相同的Hash值則認(rèn)為是相同的數(shù)據(jù)文件。因此,服務(wù)器端會(huì)保存其所有文件的Hash值;同時(shí),在存儲(chǔ)數(shù)據(jù)文件前,會(huì)計(jì)算待存儲(chǔ)數(shù)據(jù)文件的Hash值,以供服務(wù)器判斷是否已經(jīng)存在相同的數(shù)據(jù)文件。當(dāng)然,本領(lǐng)域技術(shù)人員也可以用其他方式來(lái)判斷重復(fù)文件,本發(fā)明并不予以限定。在本發(fā)明一實(shí)施例中,所述新用戶(hù)側(cè)存在一客戶(hù)端,則在服務(wù)器端在判斷已存儲(chǔ)的數(shù)據(jù)文件存在相同的數(shù)據(jù)文件后,將數(shù)據(jù)密鑰發(fā)送給客戶(hù)端;客戶(hù)端以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密,得到存儲(chǔ)密鑰;同時(shí)利用所述新用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密形成新用戶(hù)的個(gè)人密鑰,將新用戶(hù)的個(gè)人密鑰發(fā)送給服務(wù)器保存。圖2給出了該實(shí)施例的一個(gè)具體場(chǎng)景。圖2所示是本發(fā)明實(shí)施例提供的一種存儲(chǔ)方法。在本實(shí)施例中,利用Hash來(lái)鑒別重復(fù)文件;利用用戶(hù)的加密密鑰加密存儲(chǔ)密鑰得到用戶(hù)個(gè)人密鑰,利用用戶(hù)的解密密鑰解密個(gè)人密鑰得到存儲(chǔ)密鑰;這里,用戶(hù)的加密密鑰可以是用戶(hù)的公鑰,用戶(hù)的解密密鑰可以是用戶(hù)的私鑰。同時(shí),利用數(shù)據(jù)文件本身對(duì)存儲(chǔ)密鑰進(jìn)行對(duì)稱(chēng)加密得到數(shù)據(jù)密鑰。如圖2所示,具 體包括:
步驟201:在上傳一新的數(shù)據(jù)文件之前,客戶(hù)端計(jì)算該數(shù)據(jù)文件的Hash值,將此Hash上傳給服務(wù)器端。步驟202:服務(wù)器端判斷已存儲(chǔ)的數(shù)據(jù)文件中是否具有相同Hash值的數(shù)據(jù)文件;如果存在,轉(zhuǎn)向步驟203 ;如果不存在,轉(zhuǎn)向步驟206。步驟203:服務(wù)器端將其存儲(chǔ)的與待上傳數(shù)據(jù)文件相同數(shù)據(jù)文件的數(shù)據(jù)密鑰發(fā)送給客戶(hù)端。步驟204:客戶(hù)端利用未加密數(shù)據(jù)文件本身完成對(duì)數(shù)據(jù)密鑰的解密,并得到存儲(chǔ)密碼;同時(shí)利用用戶(hù)的加密密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密,得到該用戶(hù)的個(gè)人密鑰,將個(gè)人密鑰發(fā)送給服務(wù)器。步驟205:服務(wù)器保存該用戶(hù)的個(gè)人密鑰;客戶(hù)端無(wú)需實(shí)際上傳該數(shù)據(jù)文件。到此,整個(gè)流程結(jié)束。步驟206:客戶(hù)端利用存儲(chǔ)密鑰對(duì)上傳的數(shù)據(jù)文件進(jìn)行加密,并將加密后的數(shù)據(jù)文件上傳到服務(wù)器端。步驟207:客戶(hù)端使用用戶(hù)的加密密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密,得到該用戶(hù)的個(gè)人密鑰;以及利用非加密的數(shù)據(jù)文件對(duì)存儲(chǔ)密鑰進(jìn)行加密,得到數(shù)據(jù)密鑰,將個(gè)人密鑰、數(shù)據(jù)密鑰、以及該數(shù)據(jù)文件的Hash上傳給服務(wù)器保存;。其中,記錄該數(shù)據(jù)文件的Hash值的目的是以供下次對(duì)比。到此,整個(gè)流程結(jié)束。后續(xù),當(dāng)用戶(hù)希望訪(fǎng)問(wèn)他/她所擁有的數(shù)據(jù)文件時(shí),利用其自身的解密密鑰解密其個(gè)人密鑰以獲得存儲(chǔ)密鑰,然后利用存儲(chǔ)密鑰解密加密后的數(shù)據(jù)文件以獲得明文文件。利用上述技術(shù)方案,不僅保證了相同的數(shù)據(jù)文件無(wú)需重復(fù)存儲(chǔ),甚至也保證了相同的數(shù)據(jù)文件無(wú)需重復(fù)上傳。同時(shí)只有真正擁有明文數(shù)據(jù)文件的用戶(hù)才可以獲取到存儲(chǔ)密鑰,對(duì)該數(shù)據(jù)文件進(jìn)行讀取。存儲(chǔ)服務(wù)提供商和其他用戶(hù)均無(wú)法接觸到存儲(chǔ)密鑰,使得數(shù)據(jù)安全相對(duì)于現(xiàn)有技術(shù)來(lái)說(shuō),得到了進(jìn)一步的保障。在本發(fā)明一實(shí)施例中,客戶(hù)端從服務(wù)器端下載加密的數(shù)據(jù)文件以及個(gè)人密鑰,解密個(gè)人密鑰以獲得存儲(chǔ)密鑰,利用存儲(chǔ)密鑰解密加密的數(shù)據(jù)文件獲取明文數(shù)據(jù)文件。本發(fā)明實(shí)施例保證了服務(wù)器端無(wú)法解除到明文數(shù)據(jù)文件或存儲(chǔ)密鑰。在本發(fā)明另一實(shí)施例中,服務(wù)器解密個(gè)人密鑰以獲得存儲(chǔ)密鑰,利用存儲(chǔ)密鑰解密加密的數(shù)據(jù)文件獲取明文數(shù)據(jù)文件,刪除存儲(chǔ)密鑰,并在數(shù)據(jù)文件使用結(jié)束后刪除明文數(shù)據(jù)文件。不僅可以利用明文數(shù)據(jù)文件加密存儲(chǔ)密鑰以獲得數(shù)據(jù)密鑰或解密數(shù)據(jù)密鑰以獲得存儲(chǔ)密鑰,還可以利用根據(jù)明文數(shù)據(jù)文件生成的密鑰來(lái)加密存儲(chǔ)密鑰以獲得數(shù)據(jù)密鑰或解密數(shù)據(jù)密鑰以獲得存儲(chǔ)密鑰。在本發(fā)明另一實(shí)施例中,當(dāng)服務(wù)器端在判斷已存儲(chǔ)的數(shù)據(jù)文件存在相同的數(shù)據(jù)文件后,告知客戶(hù)端,客戶(hù)端根據(jù)數(shù)據(jù)文件本身以及預(yù)定義算法計(jì)算出對(duì)數(shù)據(jù)密鑰進(jìn)行解密的密鑰,將解密密鑰發(fā)送給服務(wù)器;服務(wù)器根據(jù)所述客戶(hù)端上傳的解密密鑰,解密數(shù)據(jù)密鑰得到存儲(chǔ)密鑰;再利用所述新用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密形成所述新用戶(hù)的個(gè)人密鑰。圖3給出了這種實(shí)施例的具體場(chǎng)景。圖3所示是本發(fā)明另一實(shí)施例提供的一種存儲(chǔ)方法。在該實(shí)施例中,根據(jù)數(shù)據(jù)文件本身和預(yù)定義的算法計(jì)算出用于生成數(shù)據(jù)密鑰的對(duì)稱(chēng)密鑰。在本發(fā)明一實(shí)施例中,還可以是客戶(hù)端與服務(wù)器均設(shè)置了同樣的密鑰生成算法。如圖3所示,具體包括:步驟301:在上傳新的 數(shù)據(jù)文件之前,客戶(hù)端計(jì)算待上傳數(shù)據(jù)文件的Hash值,將此Hash上傳給服務(wù)器端。步驟302:服務(wù)器端判斷已存儲(chǔ)的數(shù)據(jù)文件中是否具有相同Hash值的數(shù)據(jù)文件,轉(zhuǎn)向步驟303 ;如果不存在,轉(zhuǎn)向步驟306。步驟303:客戶(hù)端根據(jù)數(shù)據(jù)文件本身和預(yù)定義的算法計(jì)算出用于生成數(shù)據(jù)密鑰的對(duì)稱(chēng)密鑰;將該對(duì)稱(chēng)密鑰上傳給服務(wù)器,以用于加密生成數(shù)據(jù)密鑰或解密數(shù)據(jù)密鑰。步驟304:服務(wù)器根據(jù)客戶(hù)端上傳的對(duì)稱(chēng)密鑰,解密數(shù)據(jù)密鑰,得出存儲(chǔ)密鑰;再用該用戶(hù)的加密密鑰加密存儲(chǔ)密鑰,得到該用戶(hù)的個(gè)人密鑰;步驟305:服務(wù)器保存該用戶(hù)的個(gè)人密鑰;客戶(hù)端無(wú)需實(shí)際上傳該數(shù)據(jù)文件。到此,整個(gè)流程結(jié)束。步驟306:客戶(hù)端利用存儲(chǔ)密鑰對(duì)上傳的數(shù)據(jù)文件進(jìn)行加密,將并加密后的數(shù)據(jù)文件上傳給服務(wù)器;根據(jù)數(shù)據(jù)文件本身和預(yù)定義的算法計(jì)算出用于解密數(shù)據(jù)密鑰的對(duì)稱(chēng)密鑰,將對(duì)稱(chēng)密鑰,用戶(hù)的加密密鑰以及數(shù)據(jù)文件的HASH值上傳給服務(wù)器。步驟307:服務(wù)器利用該用戶(hù)的加密密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密,得到該用戶(hù)的個(gè)人密鑰;以及利用對(duì)稱(chēng)密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密,得到數(shù)據(jù)密鑰。到此,整個(gè)流程結(jié)束。利用該實(shí)施例,同樣保證了相同的數(shù)據(jù)文件無(wú)需重復(fù)存儲(chǔ),也保證了相同的數(shù)據(jù)文件無(wú)需重復(fù)上傳。在該實(shí)施例中,存儲(chǔ)服務(wù)提供商可以短暫獲得存儲(chǔ)密鑰,但相比現(xiàn)有技術(shù)存儲(chǔ)密鑰長(zhǎng)期存放在服務(wù)器端來(lái)說(shuō),安全性已經(jīng)得到了極大的提高。在本發(fā)明一實(shí)施例中,根據(jù)數(shù)據(jù)文件本身計(jì)算出用于生成數(shù)據(jù)密鑰的對(duì)稱(chēng)密鑰的算法可以是:采用抽取數(shù)據(jù)文件特定位置數(shù)據(jù)的方式計(jì)算出用于生成數(shù)據(jù)密鑰的對(duì)稱(chēng)密鑰,或采用計(jì)算數(shù)據(jù)文件特殊hash值的方式,計(jì)算出用于生成數(shù)據(jù)密鑰的對(duì)稱(chēng)密鑰。在本發(fā)明另一實(shí)施例中,用戶(hù)端并沒(méi)有專(zhuān)門(mén)的客戶(hù)端,如用戶(hù)通過(guò)web瀏覽器方式上傳文檔,在這種情況,用戶(hù)側(cè)很難計(jì)算數(shù)據(jù)文件的hash值并將該值傳遞給服務(wù)器端。為此,服務(wù)器初始需要短暫獲取數(shù)據(jù)文件的明文,后續(xù)再按照上述實(shí)施例所示的方式:計(jì)算Hash值,判斷重復(fù)文件,用數(shù)據(jù)文件本身解密數(shù)據(jù)密鑰得到存儲(chǔ)密鑰,然后再用用戶(hù)密鑰加密存儲(chǔ)密鑰得到個(gè)人密鑰。一旦該步驟執(zhí)行完畢,服務(wù)器端需刪除明文和存儲(chǔ)密鑰。這種方式雖然不能減少重復(fù)上傳,但依然可以減少重復(fù)存儲(chǔ)。在以上所有實(shí)施例中,存儲(chǔ)密鑰可以是隨機(jī)生成密鑰,這樣可以保證密鑰永遠(yuǎn)是新的同時(shí)他人無(wú)法知曉。在以上實(shí)施例中,僅利用一個(gè)存儲(chǔ)密鑰來(lái)加密待上傳的數(shù)據(jù)文件或解密加密后的數(shù)據(jù)文件以獲得數(shù)據(jù)明文。在本發(fā)明另一實(shí)施例中,可以利用一存儲(chǔ)加密密鑰來(lái)加密待上傳的數(shù)據(jù)文件獲得數(shù)據(jù)密文,相應(yīng)地,利用一存儲(chǔ)解密密鑰來(lái)解密加密后的數(shù)據(jù)文件以獲得數(shù)據(jù)明文,并且加密密鑰和解密密鑰不同。在這種情況,通過(guò)利用不同的方式加密存儲(chǔ)解密密鑰以獲得數(shù)據(jù)密鑰和個(gè)人密鑰。用于加密存儲(chǔ)密鑰以獲得數(shù)據(jù)密鑰的密鑰和/或用于解密數(shù)據(jù)密鑰以獲得存儲(chǔ)密鑰的密鑰與待上傳的數(shù)據(jù)文件相關(guān)。在上述實(shí)施例中,該密鑰可以是待上傳數(shù)據(jù)文件本身,或基于待上傳數(shù)據(jù)文件以及預(yù)定義算法來(lái)決定。同樣,在某一實(shí)施例中,也可以根據(jù)待上傳數(shù)據(jù)文件以及其他數(shù)據(jù)來(lái)確定。比如,可以通過(guò)計(jì)算待上傳數(shù)據(jù)文件與相關(guān)用戶(hù)共享數(shù)據(jù)的聯(lián)合的HASH值,將該 HASH值作為密鑰。通常來(lái)說(shuō),如果不利用明文數(shù)據(jù)文件,則很難得到用于解密數(shù)據(jù)密鑰以獲得存儲(chǔ)密鑰的密鑰。
在本發(fā)明一實(shí)施例中,用于加密存儲(chǔ)密鑰以獲得數(shù)據(jù)密鑰的密鑰和用于解密數(shù)據(jù)密鑰以獲得存儲(chǔ)密鑰的密鑰不同。該加解密算法可以是對(duì)稱(chēng)算法,也可以是非對(duì)稱(chēng)算法。t匕如,可以利用不對(duì)非對(duì)稱(chēng)密鑰對(duì)取代圖3所示實(shí)施例中的對(duì)稱(chēng)密鑰。上述實(shí)施例中的任何密鑰,包括用于加密數(shù)據(jù)的密鑰和/或用于解密數(shù)據(jù)的密鑰,用于加密生成個(gè)人密鑰的密鑰和/或用于解密個(gè)人密鑰的密鑰,用于加密生成數(shù)據(jù)密鑰的密鑰和/或用于解密數(shù)據(jù)密鑰的密鑰,可以是不對(duì)稱(chēng)的公/私鑰對(duì),也可以是對(duì)稱(chēng)密鑰對(duì)。在以上實(shí)施例中,每個(gè)加密或解密步驟即可以由服務(wù)器來(lái)執(zhí)行,也可以有客戶(hù)端來(lái)執(zhí)行。比如,如果某步驟描述由服務(wù)器來(lái)執(zhí)行加解密,實(shí)質(zhì)性,本領(lǐng)域技術(shù)人員也可以將其替換為客戶(hù)端來(lái)執(zhí)行,反之亦然。舉例說(shuō)明,步驟206也可以是:客戶(hù)端上傳未加密數(shù)據(jù)到服務(wù)器端,服務(wù)器端使用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密。又比如步驟303和步驟304可以是:“步驟303,客戶(hù)端基于待上傳的數(shù)據(jù)文件和預(yù)定義算法計(jì)算對(duì)稱(chēng)密鑰;步驟304,客戶(hù)端利用對(duì)稱(chēng)密鑰解密數(shù)據(jù)密鑰以獲得存儲(chǔ)密鑰,利用用戶(hù)的加密密鑰加密存儲(chǔ)密鑰得到用戶(hù)的個(gè)人密鑰,將個(gè)人密鑰發(fā)送到服務(wù)器”。如果在某實(shí)施例中,服務(wù)器端短暫接觸到明文數(shù)據(jù)文件或存儲(chǔ)密鑰,那么在使用后立即刪除。本領(lǐng)域技術(shù)人員同時(shí)可以理解,由客戶(hù)端來(lái)執(zhí)行所有與明文數(shù)據(jù)文件或存儲(chǔ)密鑰相關(guān)的操作,其安全性將更高。在本發(fā)明一實(shí)施例中,用戶(hù)A具有加密密鑰ekA和相應(yīng)的解密密鑰,用戶(hù)B具有加密密鑰ekB和相應(yīng)的解密密鑰dkB。當(dāng)用戶(hù)A上傳未被存儲(chǔ)過(guò)的數(shù)據(jù)X時(shí),該方法包括如下步驟:步驟401:用戶(hù)A側(cè)的客戶(hù)端計(jì)算數(shù)據(jù)X的HASH值hX,將該HASH值hX發(fā)給服務(wù)器端;步驟402:服 務(wù)器查詢(xún)其所存儲(chǔ)的所有數(shù)據(jù)的HASH值,并確認(rèn)其存儲(chǔ)的數(shù)據(jù)中沒(méi)有任何一個(gè)數(shù)據(jù)的HASH值為hX;步驟403:客戶(hù)端使用存儲(chǔ)加密密鑰ekS加密數(shù)據(jù)X,以獲得加密數(shù)據(jù)Y,并將數(shù)據(jù)Y發(fā)送到服務(wù)器;步驟404:客戶(hù)端基于數(shù)據(jù)X和預(yù)定義算法計(jì)算加密密鑰ekX,利用密鑰ekX加密與ekS對(duì)應(yīng)的存儲(chǔ)解密密鑰dkS得到數(shù)據(jù)密鑰kX,將密鑰kX發(fā)送到服務(wù)器;步驟405:客戶(hù)端使用密鑰ekA加密密鑰dkS以獲得用戶(hù)A的個(gè)人密鑰kA,將密鑰kA發(fā)送到服務(wù)器;步驟406:服務(wù)器保存HASH值hX、數(shù)據(jù)Y、密鑰kX以及密鑰kA ;在某一實(shí)施例中,步驟403至步驟405也可以是:步驟403:客戶(hù)端上傳數(shù)據(jù)X到服務(wù)器;步驟404:服務(wù)器利用存儲(chǔ)加密密鑰ekS加密數(shù)據(jù)X以獲得加密數(shù)據(jù)Y,基于數(shù)據(jù)X和預(yù)定義算法計(jì)算加密密鑰ekX,利用密鑰ekX加密與密鑰ekS對(duì)應(yīng)的解密密鑰dkS以獲得數(shù)據(jù)密鑰kX,使用密鑰ekA加密密鑰dkS獲得用戶(hù)A的個(gè)人密鑰kA ;步驟405:服務(wù)器刪除了數(shù)據(jù)X和密鑰dkS。當(dāng)用戶(hù)B期望上傳一個(gè)服務(wù)端已經(jīng)存儲(chǔ)過(guò)的數(shù)據(jù)X時(shí),該方法進(jìn)一步包括:步驟501:位于用戶(hù)B側(cè)的客戶(hù)端計(jì)算數(shù)據(jù)X的HASH值hX,將該HASH值hX發(fā)給服務(wù)器端;
步驟502:服務(wù)器查詢(xún)其所存儲(chǔ)的所有數(shù)據(jù)的HASH值,并確認(rèn)其存儲(chǔ)的數(shù)據(jù)中包括有HASH值為hX的數(shù)據(jù)文件;步驟503:服務(wù)器將數(shù)據(jù)X的數(shù)據(jù)密鑰kX發(fā)送到客戶(hù)端;步驟504:基于客戶(hù)端側(cè)的數(shù)據(jù)X以及預(yù)定義的算法,客戶(hù)端計(jì)算解密密鑰dkX,利用密鑰dkX解密密鑰kX以獲取密鑰dkS,利用用戶(hù)B的個(gè)人密鑰ekB加密dkS以獲取用戶(hù)B的個(gè)人密鑰KB,將密鑰kB發(fā)送到服務(wù)器端;步驟505:服務(wù)器端保存密鑰kB。當(dāng)后續(xù)用戶(hù)A訪(fǎng)問(wèn)數(shù)據(jù)X時(shí),該方法進(jìn)一步包括:步驟601:服務(wù)器發(fā)送密文數(shù)據(jù)Y以及用戶(hù)A的個(gè)人密鑰發(fā)送到用戶(hù)A側(cè)的客戶(hù)端;步驟602:客戶(hù)端使用用戶(hù)A的解密密鑰dkA,解密密鑰kA獲得密鑰dkS ;步驟603:客戶(hù)端使用密鑰dkS解密密文數(shù)據(jù)Y,獲得明文數(shù)據(jù)X。在本發(fā)明一實(shí)施例中,密鑰ekA和dkA可以相同或不同,密鑰ekB和dkB可以相同或不同,密鑰ekS和dkS可以相同或不同,密鑰ekX和dkX可以相同或不同。密鑰eKS和dkS可以是隨機(jī)生成的密鑰。在本發(fā)明一實(shí)施例中,密鑰ekA、dkA、ekB和dkB可存儲(chǔ)在客戶(hù)端或服務(wù)器端。在本發(fā)明一實(shí)施例中,ekA及ekB為公鑰,在客戶(hù)端和服務(wù)器端各存了一份,而dkA和dkB為私鑰,存儲(chǔ)在客戶(hù)端。在上述描述中,雖然提到了用戶(hù)A側(cè)的客戶(hù)端以及用戶(hù)B側(cè)的客戶(hù)端,且在描述中兩者具有不同的功能,但本領(lǐng)域技術(shù)人`員可以理解,在具體實(shí)現(xiàn)中,某一個(gè)客戶(hù)端可以同時(shí)具有兩者的功能。在本發(fā)明一實(shí)施例中,還提供了一種存儲(chǔ)系統(tǒng),該系統(tǒng)包括服務(wù)器;其中,服務(wù)器端包括:第一加密模塊,用于利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密;以及利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰;其中,以數(shù)據(jù)文件所屬用戶(hù)的密鑰為解密密鑰對(duì)個(gè)人密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;存儲(chǔ)模塊,用于存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰;判斷模塊,用于在存儲(chǔ)用戶(hù)的數(shù)據(jù)文件前,判斷已存儲(chǔ)數(shù)據(jù)文件中是否存在相同的數(shù)據(jù)文件;如果已存儲(chǔ)的數(shù)據(jù)文件中不存在與待上傳文檔相同的數(shù)據(jù)文件,則通知第一加密模塊;否則通知密鑰授權(quán)模塊;密鑰授權(quán)模塊,用于在判斷模塊判斷的結(jié)果為是時(shí),利用該數(shù)據(jù)文件對(duì)數(shù)據(jù)密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,再利用用戶(hù)的密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密形成所述用戶(hù)的個(gè)人密鑰。本發(fā)明一實(shí)施例還提供了一個(gè)服務(wù)器,該服務(wù)器包括第一加密模塊、存儲(chǔ)模塊、密鑰授權(quán)模塊。在本發(fā)明一實(shí)施例中,該系統(tǒng)還進(jìn)一步包括客戶(hù)端,其中該客戶(hù)端包括:解密模塊,用于接收來(lái)自服務(wù)器發(fā)送的數(shù)據(jù)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密,得到存儲(chǔ)密鑰;第二加密模塊,用于利用所述用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密形成所述用戶(hù)的個(gè)人密鑰,將所述用戶(hù)的個(gè)人密鑰發(fā)送給服務(wù)器;在這種情況下,服務(wù)器端的密鑰授權(quán)模塊包括:發(fā)送子模塊,用于在判斷模塊判斷的結(jié)果為是時(shí),將數(shù)據(jù)密鑰發(fā)送給客戶(hù)端;接收子模塊,用于接收到來(lái)自客戶(hù)端的所述用戶(hù)的個(gè)人密鑰,將其發(fā)送給保存模塊保存。在本發(fā)明一實(shí)施例中,服務(wù)器端進(jìn)一步包括刪除模塊,用于在使用完未加密數(shù)據(jù)和存儲(chǔ)密鑰后,實(shí)時(shí)刪除該未加密數(shù)據(jù)和存儲(chǔ)密鑰。在本發(fā)明一實(shí)施例中,第一加密模塊位于客戶(hù)端。在本發(fā)明一實(shí)施例中,第一加密模塊還進(jìn)一步用于在利用存儲(chǔ)密鑰加密之前,生成隨機(jī)的存儲(chǔ)密鑰。在本發(fā)明另一實(shí)施例中,該客戶(hù)端包括:密鑰生成模塊,用于在判斷模塊判斷的結(jié)果為是時(shí),根據(jù)數(shù)據(jù)文件本身以及預(yù)定義算法計(jì)算出的對(duì)數(shù)據(jù)密鑰進(jìn)行解密的密鑰;將該密鑰發(fā)送給服務(wù)器。此時(shí),服務(wù)器端的密鑰授權(quán)模塊包括:接收 子模塊,用于接收來(lái)自客戶(hù)端根據(jù)數(shù)據(jù)文件本身以及預(yù)定義算法計(jì)算出的對(duì)數(shù)據(jù)密鑰進(jìn)行解密的密鑰;加解密子模塊,用于根據(jù)所述客戶(hù)端上傳的解密密鑰,解密數(shù)據(jù)密鑰得到存儲(chǔ)密鑰;再利用所述新用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密形成所述新用戶(hù)的個(gè)人密鑰。在本發(fā)明另一實(shí)施例中,以上客戶(hù)端還可以進(jìn)一步包括:Hash值計(jì)算模塊,用于計(jì)算新用戶(hù)的數(shù)據(jù)文件的Hash值,將此Hash上傳給服務(wù)器,以供服務(wù)器判斷模塊判斷已存儲(chǔ)數(shù)據(jù)文件中是否存在具有相同Hash值的數(shù)據(jù)文件。以下以?xún)蓚€(gè)具體的實(shí)施例來(lái)說(shuō)明本發(fā)明實(shí)施例所描述的存儲(chǔ)系統(tǒng)的結(jié)果示意圖。圖4為本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。如圖4所示,該系統(tǒng)包括客戶(hù)端和服務(wù)器端兩部分。其中,客戶(hù)端由Hash值計(jì)算模塊、解密模塊、第二加密模塊構(gòu)成;服務(wù)器端由第一加密模塊、存儲(chǔ)模塊、判斷模塊、密鑰授權(quán)模塊構(gòu)成,其中密鑰授權(quán)模塊由發(fā)送子模塊和接收子模塊構(gòu)成。具體各模塊及子模塊的作用和功能可以參考以上實(shí)施例描述。本發(fā)明另一實(shí)施例中,用戶(hù)側(cè)并沒(méi)有專(zhuān)用的客戶(hù)端,則以上實(shí)施例中所有模塊可均位于服務(wù)器端。圖5為本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。如圖5所示,該系統(tǒng)包括客戶(hù)端和服務(wù)器端兩部分。其中,客戶(hù)端由Hash值計(jì)算模塊、密鑰生成模塊構(gòu)成;服務(wù)器端由第一加密模塊、存儲(chǔ)模塊、判斷模塊、密鑰授權(quán)模塊構(gòu)成,其中密鑰授權(quán)模塊包括接收子模塊、加解密子模塊。具體各模塊及子模塊的作用和功能可以參考以上實(shí)施例描述。本發(fā)明另一實(shí)施例中,用戶(hù)側(cè)并沒(méi)有專(zhuān)用的客戶(hù)端,則以上實(shí)施例中所有模塊可均位于服務(wù)器端。本發(fā)明實(shí)施例還提供了一種存儲(chǔ)裝置,該裝置即為上述實(shí)施例描述的服務(wù)器。本發(fā)明實(shí)施例還提供了一種存儲(chǔ)客戶(hù)端,包括:
第一模塊,用于利用存儲(chǔ)加密密鑰ekS對(duì)數(shù)據(jù)文件X進(jìn)行加密,獲得密文數(shù)據(jù)Y ;第二模塊,用于利用用戶(hù)A的加密密鑰ekA加密與ekS對(duì)應(yīng)的解密密鑰dkS,獲得用戶(hù)A的個(gè)人密鑰kA ;以及利用與X相關(guān)的加密密鑰ekX加密dkS,獲得X的數(shù)據(jù)密鑰kX ;第三模塊,用于將Y、kA以及kX發(fā)送到服務(wù)器端存儲(chǔ);該客戶(hù)端進(jìn)一步包括:第四模塊,用于當(dāng)具有加密密鑰ekB以及相應(yīng)的解密密鑰dkB的用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),基于X計(jì)算與ekX對(duì)應(yīng)的解密密鑰dkX ;利用dkX解密kX獲得dkS ;利用ekB加密dkS獲取用戶(hù)B的個(gè)人密鑰kB ; 第五模塊,用于將kB發(fā)送到服務(wù)器存儲(chǔ)。在本發(fā)明一實(shí)施例中,該客戶(hù)端進(jìn)一步包括:第六模塊,用于當(dāng)用戶(hù)A訪(fǎng)問(wèn)X時(shí),利用dkA解密kA獲取dkS,利用dkS解密Y獲得X。本領(lǐng)域技術(shù)人員可以理解,雖然在上述實(shí)施例的描述中,該客戶(hù)端同時(shí)處理了用戶(hù)A和用戶(hù)B上傳數(shù)據(jù)的請(qǐng)求,實(shí)際上當(dāng)該客戶(hù)端位于某一個(gè)用戶(hù)側(cè),如用戶(hù)A側(cè)時(shí),第四模塊和第五模塊的作用又可被類(lèi)比描述為:第四模塊,用于當(dāng)用戶(hù)A期望再一次存儲(chǔ)服務(wù)器端已存儲(chǔ)的數(shù)據(jù)X’時(shí)(此時(shí)服務(wù)器端已存儲(chǔ)有數(shù)據(jù)X ‘對(duì)應(yīng)的kX’),基于X’計(jì)算與ekX’對(duì)應(yīng)的解密密鑰dkX’ ;利用dkX’解密數(shù)據(jù)V的kX’獲得dkS’;利用ekA加密dkS’獲取用戶(hù)A對(duì)應(yīng)數(shù)據(jù)X ‘的個(gè)人密鑰kA’ ;第五模塊,用于將kA’發(fā)送到服務(wù)器存儲(chǔ)。本發(fā)明一實(shí)施例還提供了一種存儲(chǔ)系統(tǒng),包括:第七模塊,用于利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密;第八模塊,用于利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰;其中,以數(shù)據(jù)文件所屬用戶(hù)的密鑰為解密密鑰對(duì)個(gè)人密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;第九模塊,用于存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰;第十模塊,用于當(dāng)用戶(hù)待上傳的數(shù)據(jù)文件與已存儲(chǔ)的數(shù)據(jù)文件相同時(shí),利用所述用戶(hù)待上傳的加密前的數(shù)據(jù)文件對(duì)已存儲(chǔ)的相同數(shù)據(jù)文件的數(shù)據(jù)密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,再利用所述用戶(hù)的密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密形成所述用戶(hù)的個(gè)人密鑰。在本發(fā)明一實(shí)施例中,所述第七模塊、第八模塊、第九模塊位于客戶(hù)端,所述第九模塊位于服務(wù)器端。其中,所述客戶(hù)端進(jìn)一步包括:第十一模塊,用于當(dāng)所述用戶(hù)訪(fǎng)問(wèn)自己的數(shù)據(jù)文件時(shí),接收來(lái)自服務(wù)器的所述用戶(hù)的個(gè)人密鑰,以所述用戶(hù)的密鑰對(duì)其個(gè)人密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,利用存儲(chǔ)密鑰對(duì)加密后的數(shù)據(jù)文件進(jìn)行解密獲得數(shù)據(jù)文件。在本發(fā)明一實(shí)施例中,所述第七模塊位于客戶(hù)端,所述第八模塊、第九模塊、第十模塊位于服務(wù)器端。其中,所述客戶(hù)端進(jìn)一步包括:第十二模塊,用于利用根據(jù)數(shù)據(jù)文件本身以及預(yù)定義算法計(jì)算出的對(duì)存儲(chǔ)密鑰進(jìn)行加密形成數(shù)據(jù)密鑰的加密密鑰;將所述加密密鑰、以及所述用戶(hù)的密鑰發(fā)送給服務(wù)器端;此時(shí),所述第八模塊用于利用所述加密密鑰以及所述用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰分別進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰。其中,所述第十模塊包括:第一子模塊,用于接收來(lái)自客戶(hù)端根據(jù)數(shù)據(jù)文件本身以及預(yù)定義算法計(jì)算出的對(duì)數(shù)據(jù)密鑰進(jìn)行解密的密鑰;第二子模塊,根據(jù)所述客戶(hù)端上傳的解密密鑰,解密數(shù)據(jù)密鑰得到存儲(chǔ)密鑰;再利用所述用戶(hù)的密鑰對(duì)存儲(chǔ)密鑰進(jìn)行加密形成所述用戶(hù)的個(gè)人密鑰。在本發(fā)明另一實(shí)施例中,所述第七模塊、第八模塊、第九模塊、第十模塊位于服務(wù)器端。在本發(fā)明一實(shí)施例中,該服務(wù)器進(jìn)一步包括:第十二模塊,用于判斷用戶(hù)待上傳的數(shù)據(jù)文件與已存儲(chǔ)的數(shù)據(jù)文件相同。本發(fā)明還進(jìn)一步提供了一種存儲(chǔ)裝置,即可以是上述實(shí)施例中描述服務(wù)器,也可以是上述實(shí)施例中描述 的客戶(hù)端。本領(lǐng)域技術(shù)人員可以理解,本發(fā)明的存儲(chǔ)方法、服務(wù)器、客戶(hù)端均可以設(shè)置并使用在單機(jī)(PC,單服務(wù)器)上,也可以設(shè)置并使用在分布式系統(tǒng),或其它結(jié)構(gòu)的系統(tǒng)上。上述實(shí)施例中所述的存儲(chǔ)方法、系統(tǒng)、服務(wù)器、客戶(hù)端均只為示意例子,每個(gè)實(shí)施例中的特征均可重新組合以形成新的實(shí)施例,所形成的新的實(shí)施例均包含在本發(fā)明的范圍內(nèi)。以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種存儲(chǔ)方法,其特征在于,用戶(hù)A具有加密密鑰ekA以及相應(yīng)的解密密鑰dkA,當(dāng)存儲(chǔ)用戶(hù)A的數(shù)據(jù)X時(shí),該存儲(chǔ)方法包括: 利用存儲(chǔ)加密密鑰ekS對(duì)數(shù)據(jù)文件X進(jìn)行加密,獲得密文數(shù)據(jù)Y ;利用ekA加密與ekS對(duì)應(yīng)的解密密鑰dkS,獲得用戶(hù)A的個(gè)人密鑰kA ; 利用與X相關(guān)的加密密鑰ekX加密dkS,獲得X的數(shù)據(jù)密鑰kX ; 存儲(chǔ)Y、kA以及kX ; 其中,當(dāng)具有加密密鑰ekB以及相應(yīng)的解密密鑰dkB的用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),該方法進(jìn)一步包括: 基于X計(jì)算與ekX對(duì)應(yīng)的解密密鑰dkX ;利用dkX解密kX獲得dkS ; 利用ekB加密dkS獲取用戶(hù)B的個(gè)人密鑰kB ; 存儲(chǔ)kB。
2.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括: 當(dāng)用戶(hù)A訪(fǎng)問(wèn)X時(shí),利用dkA解密kA獲取dkS,利用dkS解密Y獲得X。
3.如權(quán)利要求1所述 的方法,其特征在于,進(jìn)一步包括: 當(dāng)用戶(hù)B存儲(chǔ)數(shù)據(jù)時(shí),判斷已存儲(chǔ)的數(shù)據(jù)中是否存在與待存儲(chǔ)數(shù)據(jù)相同的數(shù)據(jù)文件。
4.如權(quán)利要求3所述的方法,其特征在于,所述判斷已存儲(chǔ)的數(shù)據(jù)中是否存在與待存儲(chǔ)數(shù)據(jù)相同的數(shù)據(jù)文件包括: 判斷已存儲(chǔ)數(shù)據(jù)文件中存在與所述用戶(hù)待上傳的數(shù)據(jù)文件具有相同Hash值的數(shù)據(jù)文件。
5.如權(quán)利要求1所述的方法,其特征在于,當(dāng)存儲(chǔ)用戶(hù)A的數(shù)據(jù)X時(shí),位于用戶(hù)A側(cè)的客戶(hù)端CA利用ekS加密X獲得Y,基于X以及預(yù)定義算法計(jì)算ekX,利用ekA加密dkS獲得kA,利用ekX加密dkS獲得kX,將Y、kA以及kX發(fā)送到服務(wù)器端存儲(chǔ)。
6.如權(quán)利要求5所述的方法,其特征在于,所述ekS為客戶(hù)端CA隨機(jī)產(chǎn)生的。
7.如權(quán)利要求5所述的方法,其特征在于,當(dāng)用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),位于用戶(hù)B側(cè)的客戶(hù)端cB從所述服務(wù)器接收kX,計(jì)算dkX ;利用dkX解密kX獲得dkS ;利用ekB加密dkS獲取用戶(hù)B的個(gè)人密鑰kB ;將kB發(fā)送到服務(wù)器端存儲(chǔ)。
8.如權(quán)利要求7所述的方法,其特征在于,當(dāng)用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),該方法進(jìn)一步包括: 客戶(hù)端cB計(jì)算X的HASH值hX ; 將hX發(fā)送給所述服務(wù)器; 所述服務(wù)器將HASH值hX與已存儲(chǔ)的數(shù)據(jù)文件的HASH值進(jìn)行比較,以判斷已存儲(chǔ)數(shù)據(jù)文件中是否存在與X相同的數(shù)據(jù)文件。
9.如權(quán)利要求5所述的方法,其特征在于,當(dāng)用戶(hù)A訪(fǎng)問(wèn)X時(shí),該方法進(jìn)一步包括: 客戶(hù)端CA從所述服務(wù)器接收Y以及kA ; 利用dkA解密kA獲取dkS ; 利用dkS解密Y獲得X。
10.如權(quán)利要求1所述的方法,其特征在于,服務(wù)器從位于用戶(hù)A側(cè)的客戶(hù)端CA接收X和ekA,所述服務(wù)器利用ekS加密X獲得Y,基于X以及預(yù)定義算法計(jì)算ekX,利用ekA加密dkS獲得kA,利用ekX加密dkS獲得kX,存儲(chǔ)Y、kA以及kX,同時(shí)刪除X和dkS。
11.如權(quán)利要求10所述的方法,其特征在于,所述CA為瀏覽器。
12.如權(quán)利要求1所述的方法,其特征在于,當(dāng)用戶(hù)A訪(fǎng)問(wèn)X時(shí),該方法進(jìn)一步包括: 服務(wù)器利用dkA解密kA獲取dkS ;利用dkS解密Y獲得X ;并在使用后刪除X。
13.如權(quán)利要求1所述的方法,其特征在于,當(dāng)用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),服務(wù)器從位于用戶(hù)B側(cè)的客戶(hù)端cB接收X,基于X和預(yù)定義算法計(jì)算dkX,利用dkX解密kX獲得dkS ;利用ekB加密dkS獲取kB ;并刪除X。
14.如權(quán)利要求1所述的方法,其特征在于,通過(guò)抽取X中特定位置的信息,或通過(guò)計(jì)算X以及通過(guò)用戶(hù)A和用戶(hù)B確認(rèn)的或共享的數(shù)據(jù)的HASH來(lái)計(jì)算dkX。
15.如權(quán)利要求1所述的方法,其特征在于,所述dkS和ekS,ekX和dkX,或ekA和dkA為對(duì)稱(chēng)密鑰對(duì),或分別為非對(duì)稱(chēng)密鑰的加密密鑰和解密密鑰。
16.—種存儲(chǔ)服務(wù)器,其特征在于,包括: 第一加密模塊,用于利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密;以及利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰;其中,以數(shù)據(jù)文件所屬用戶(hù)的密鑰為解密密鑰對(duì)個(gè)人密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰; 存儲(chǔ)模塊,用于存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰; 密鑰授權(quán)模塊,用于在判斷模塊判斷的結(jié)果為是時(shí),利用該數(shù)據(jù)文件對(duì)數(shù)據(jù)密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,再利用用戶(hù)的密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密形成所述用戶(hù)的個(gè)人密鑰;刪除模塊,用于刪除明文數(shù)據(jù)文件以及存儲(chǔ)密鑰。
17.如權(quán)利要求1 6所述的服務(wù)器,其特征在于,進(jìn)一步包括: 判斷模塊,用于在存儲(chǔ)用戶(hù)的數(shù)據(jù)文件前,判斷已存儲(chǔ)數(shù)據(jù)文件中是否存在相同的數(shù)據(jù)文件;如果已存儲(chǔ)的數(shù)據(jù)文件中不存在與待上傳文檔相同的數(shù)據(jù)文件,則通知第一加密模塊;否則通知密鑰授權(quán)模塊。
18.—種存儲(chǔ)客戶(hù)端,其特征在于,包括: 第一模塊,用于利用存儲(chǔ)加密密鑰ekS對(duì)數(shù)據(jù)文件X進(jìn)行加密,獲得密文數(shù)據(jù)Y ; 第二模塊,用于利用用戶(hù)A的加密密鑰ekA加密與ekS對(duì)應(yīng)的解密密鑰dkS,獲得用戶(hù)A的個(gè)人密鑰kA ;以及利用與X相關(guān)的加密密鑰ekX加密dkS,獲得X的數(shù)據(jù)密鑰kX ; 第三模塊,用于將Y、kA以及kX發(fā)送到服務(wù)器端存儲(chǔ); 該客戶(hù)端進(jìn)一步包括: 第四模塊,用于當(dāng)具有加密密鑰ekB以及相應(yīng)的解密密鑰dkB的用戶(hù)B期望再一次存儲(chǔ)數(shù)據(jù)X時(shí),基于X計(jì)算與ekX對(duì)應(yīng)的解密密鑰dkX ;利用dkX解密kX獲得dkS ;利用ekB加密dkS獲取用戶(hù)B的個(gè)人密鑰kB ; 第五模塊,用于將kB發(fā)送到服務(wù)器存儲(chǔ)。
19.如權(quán)利要求18所述的客戶(hù)端,其特征在于,進(jìn)一步包括: 第六模塊,用于當(dāng)用戶(hù)A訪(fǎng)問(wèn)X時(shí),利用dkA解密kA獲取dkS,利用dkS解密Y獲得X。
全文摘要
本發(fā)明公開(kāi)了一種存儲(chǔ)方法、服務(wù)器和客戶(hù)端。其中該方法包括利用存儲(chǔ)密鑰對(duì)數(shù)據(jù)文件進(jìn)行加密存儲(chǔ);利用兩種不同加密方式對(duì)存儲(chǔ)密鑰進(jìn)行加密形成個(gè)人密鑰和數(shù)據(jù)密鑰;其中,以數(shù)據(jù)文件所屬用戶(hù)的密鑰為解密密鑰對(duì)個(gè)人密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;以加密前的數(shù)據(jù)文件為解密密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行解密后可以獲得存儲(chǔ)密鑰;存儲(chǔ)加密后的數(shù)據(jù)文件、個(gè)人密鑰和數(shù)據(jù)密鑰;在存儲(chǔ)新用戶(hù)的數(shù)據(jù)文件前,判斷已存儲(chǔ)數(shù)據(jù)文件中是否存在相同的數(shù)據(jù)文件;如果之前已保存過(guò)同樣的數(shù)據(jù)文件,則不重復(fù)存儲(chǔ)該數(shù)據(jù)文件,利用該數(shù)據(jù)文件對(duì)數(shù)據(jù)密鑰進(jìn)行解密獲得存儲(chǔ)密鑰,再利用新用戶(hù)的密鑰對(duì)該存儲(chǔ)密鑰進(jìn)行加密形成所述新用戶(hù)的個(gè)人密鑰。利用本發(fā)明實(shí)施例提供的技術(shù)方案,既可以避免相同數(shù)據(jù)文件的重復(fù)存儲(chǔ),又要保證任意其他用戶(hù)包括云存儲(chǔ)服務(wù)商都無(wú)法訪(fǎng)問(wèn)到明文數(shù)據(jù)。
文檔編號(hào)H04L29/08GK103237040SQ20121040882
公開(kāi)日2013年8月7日 申請(qǐng)日期2012年10月23日 優(yōu)先權(quán)日2012年3月19日
發(fā)明者王東臨 申請(qǐng)人:天津書(shū)生投資有限公司