基于第三方的安全文件存儲和共享系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息處理技術(shù)領(lǐng)域,尤其涉及一種基于第三方的安全文件存儲和共享系統(tǒng)及方法。
【背景技術(shù)】
[0002]現(xiàn)在越來越多的個人用戶或者是機構(gòu)用戶使用第三方服務(wù)來存儲數(shù)據(jù)。第三方存儲服務(wù)可以為用戶提供多種益處,包括成本低廉、使用方便、靈活存儲、附加服務(wù)和對數(shù)據(jù)的集中訪問。
[0003]許多用戶想要確保自己存儲在第三方的信息不會被第三方機構(gòu)隨意獲取。因此,用戶希望將自己的數(shù)據(jù)在提交給第三方之前進行加密處理。例如,由于隱私問題,可能個人用戶希望對發(fā)送給第三方存儲供應(yīng)商的數(shù)據(jù)進行加密。類似的,一些機構(gòu)用戶可能希望對發(fā)送給第三方存儲供應(yīng)商的數(shù)據(jù)加密以便確保遵守內(nèi)部或者外部數(shù)據(jù)保護要求,諸如政府法律法規(guī)、與其他組織的合作協(xié)議等,并且對于用戶來說我們往往希望我們的數(shù)據(jù)可以進行相互之間共享。因此,基于第三方存儲的用戶數(shù)據(jù)加密存儲和解密下載以及加密數(shù)據(jù)共享成為了現(xiàn)在迫切需要解決的問題。用戶需要通過靈活的訪問控制策略,實現(xiàn)權(quán)限的靈活設(shè)置,從而控制數(shù)據(jù)的共享范圍,以及在與用戶通信過程中保證數(shù)據(jù)的機密性。
[0004]通常我們加密文件使用一個密鑰,加密與解密都使用同一個密鑰,因為這種方式加密文件具有較高的效率,但是當我們想將文件共享給其他用戶時,并且想讓他閱讀到文件內(nèi)容,我們必須將密鑰一起交予對方,他才能得到共享的文件。但是安全的密鑰交付在單一密鑰使用情況下是非常難以實現(xiàn)的。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種基于第三方的安全文件存儲和共享系統(tǒng)及方法,旨在解決基于第三方的存儲中,無法很好保證用戶數(shù)據(jù)機密性以及加密后的文件方便快速的共享給其他用戶的問題。
[0006]本發(fā)明的目的在于提供一種基于第三方的安全文件存儲和共享系統(tǒng)及方法,所述基于第三方的安全文件存儲和共享系統(tǒng)及方法對用戶端文件的加密上傳和用戶解密下載文件,當文件在加密上傳后將用戶文件密鑰獲取到用戶端,在用戶端對文件密鑰進行解密然后再用對方的公鑰重新進行加密生成新的文件密鑰,然后上傳至服務(wù)端存儲,對方使用文件時使用私鑰解密文件密鑰進而再解密文件獲得最終文件。
[0007]進一步,所述基于第三方的安全文件存儲和共享系統(tǒng)及方法具體包括以下步驟:
[0008]步驟一,系統(tǒng)初始化:
[0009]用戶A與用戶B在首次登錄系統(tǒng)時進行初始化;
[0010]用戶A與用戶B在完成初始化后即進行登陸系統(tǒng),登陸過程如下:
[0011]用戶登錄系統(tǒng),用戶端將自動獲取存儲于第三方存儲機構(gòu)的密鑰文件,并通過對注冊信息進行哈希計算獲取到口令密鑰,通過口令密鑰解密密鑰文件,對密鑰文件進行解析后分別獲得用戶主密鑰與用戶私鑰,并將主密鑰與私鑰存儲于用戶端;
[0012]步驟二,文件加密上傳;
[0013]步驟三,密文共享;
[0014]步驟四,文件下載解密;
[0015]步驟五,注銷:
[0016]當需要注銷時,用戶端會自動清除存儲于用戶端的主密鑰與用戶私鑰。
[0017]進一步,在步驟一中所述初始化過程包括:
[0018]第一步,用戶進入注冊界面,按要求提供用戶名與口令進行注冊,然后用戶端會根據(jù)注冊信息在用戶端通過哈希函數(shù)生成符合對稱加密密鑰長度要求的用戶口令密鑰;
[0019]第二步,用戶端會通過本地函數(shù)調(diào)用在本地生成大小為m的安全隨機數(shù),隨機數(shù)作為用戶的主密鑰,m的大小根據(jù)對稱加密算法對密鑰長度的要求來進行確定,與此同時也在本地生成用戶的非對稱加密的密鑰對;
[0020]第三步,將生成的用戶主密鑰與用戶私鑰通過口令密鑰進行加密,生成密文狀態(tài)的密鑰文件,將文件通過編碼后上傳至第三方平臺機構(gòu)進行存儲,存儲至用戶注冊信息列表中;
[0021]第四步,將生成的公鑰直接上傳至用戶注冊信息列表中,進行存儲從而完成注冊。
[0022]進一步,在步驟二中所述文件上傳過程包括:
[0023]第一步,用戶A選擇需要加密上傳的文件,然后由用戶端隨機生成一個安全的隨機數(shù),長度符合對稱加密密鑰長度,將隨機數(shù)作為文件密鑰;
[0024]第二步,通過使用文件密鑰對所選文件進行加密,并將加密結(jié)果緩存在本地;
[0025]第三步,文件密鑰通過用戶主密鑰進行加密,并且將加密后的文件密鑰通過文件拼接的方式拼接到通過第二步加密后的文件前,組成一個新的文件,前m字節(jié)為加密后的文件密鑰,m字節(jié)后為加密后的文件內(nèi)容;
[0026]第四步,用戶A將新組成的加密文件上傳至服務(wù)端進行存儲。
[0027]進一步,在步驟三中所述文件共享具體包括:
[0028]第一步,用戶A首先在自己的存儲空間內(nèi)選擇需要共享的文件,設(shè)置文件屬性為共享,提供用戶查詢的窗口,當用戶A在窗口內(nèi)輸入用戶B的用戶名后用戶端自動發(fā)送查詢請求到服務(wù)端查詢用戶B是否存在,如果用戶B存在則將返回一個確認信息以及用戶B的公鑰;
[0029]第二步,用戶A通過發(fā)送請求獲取當前所要共享文件的加密后的文件密鑰,第三方平臺機構(gòu)接收到請求后則會將第三方平臺機構(gòu)中存儲的當前文件密態(tài)的文件密鑰發(fā)送給用戶A ;
[0030]第三步,用戶A接收到文件的文件密鑰后,通過存儲在本地的主密鑰解密獲取文件的明文狀態(tài)的文件密鑰;
[0031]第四步,通過使用在第一步中獲取到的用戶B的公鑰對明文的文件密鑰進行加密處理,形成新密態(tài)的文件密鑰;
[0032]第五步,用戶A的用戶端自動將新加密得到的密鑰通過可視化編碼為字符串,然后將編碼后的密鑰上傳到第三方平臺機構(gòu),并在共享文件信息列表中插入一條記錄用來存儲密鑰以及相關(guān)信息;
[0033]第六步,第三方平臺機構(gòu)根據(jù)共享文件信息列表對用戶B進行文件標記,使得用戶B能夠在自己的存儲空間中看到并識別出共享文件。
[0034]進一步,在步驟四中所述文件下載具體包括:
[0035]共享文件的下載解密:
[0036]第一步,用戶B在自己的文件列表內(nèi)選擇接受到的共享文件,發(fā)送下載請求;
[0037]第二步,第三方平臺機構(gòu)根據(jù)下載請求判斷該文件是否為共享文件,如果是共享文件則將存儲于共享文件信息列表中的文件密鑰發(fā)送給用戶B,同時將請求的共享文件發(fā)送到用戶B進行緩存;
[0038]第三步,用戶端將使用獲取到的用戶私鑰對第二步中獲取到的文件密鑰進行解密,從而獲取到文件密鑰,通過使用文件密鑰對文件進行解密獲取到明文的原始文件;
[0039]非共享文件的下載解密:
[0040]第一步,用戶A或者B選擇需下載的非共享文件,發(fā)送下載請求;
[0041]第二步,第三方平臺機構(gòu)根據(jù)下載請求判斷該文件是否為共享文件,如果不是共享文件,則將請求的文件發(fā)送到用戶A或者B進行緩存;
[0042]第三步,用戶端獲取緩存的文件頭部信息,并通過用戶的主密鑰解密頭部信息,獲取得到明文的文件密鑰,通過明文的文件密鑰解密獲取明文的原始文件,從而完成下載。
[0043]本發(fā)明的另一目的在于提供一種基于第三方的安全文件存儲和共享系統(tǒng),所述基于第三方的安全文件存儲和共享系統(tǒng)包括:
[0044]用于存儲數(shù)據(jù)的第三方存儲機構(gòu)的服務(wù)端;
[0045]用于進