專利名稱:一種安卓操作系統(tǒng)上的文件保密系統(tǒng)及其保密方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)終端設(shè)備技術(shù)領(lǐng)域,尤其涉及在安卓操作系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)安全保密的技術(shù)領(lǐng)域。
背景技術(shù):
隨著科學(xué)技術(shù)的發(fā)展以及產(chǎn)品的不斷成熟,移動(dòng)終端設(shè)備發(fā)展迅猛,目前無(wú)論在工作,生活,娛樂(lè)都被大量普遍的使用。而目前基于安卓操作系統(tǒng)的智能移動(dòng)終端設(shè)備由于其開(kāi)放性與可擴(kuò)展性成為行業(yè)的佼佼者。同時(shí)由于安卓操作系統(tǒng)在工作,生活,娛樂(lè)扮演著越來(lái)越重要的角色,安卓操作系統(tǒng)的數(shù)據(jù)安全就顯得尤為重要?,F(xiàn)有安卓操作系統(tǒng)自身并沒(méi)有提供數(shù)據(jù)安全機(jī)制,數(shù)據(jù)都是以非加密的方式存儲(chǔ)在存儲(chǔ)介質(zhì)中。一旦存有重要數(shù)據(jù)或私人秘密的安卓設(shè)備丟失,或上網(wǎng)時(shí)中病毒或木馬導(dǎo)致系統(tǒng)被入侵,所有數(shù)據(jù)將會(huì)完全暴露在他人面前,后果不堪設(shè)想。所以安卓操作系統(tǒng)的數(shù)據(jù)安全問(wèn)題是個(gè)及關(guān)重要的問(wèn)題。目前在安卓操作系統(tǒng)上,數(shù)據(jù)安全方案主要是通過(guò)第三方軟件來(lái)確保。通過(guò)第三方軟件將普通文件加密,確保即使設(shè)備丟失,也不會(huì)泄露重要數(shù)據(jù)?,F(xiàn)有的數(shù)據(jù)安全方案實(shí)現(xiàn)基本原理是讀取普通文件然后根據(jù)加密算法加密文件中的數(shù)據(jù)并寫(xiě)入新文件,然后再刪除原有普通文件。這種方式簡(jiǎn)單有效,卻有若干缺陷, 由于本身是第三方軟件,所以比較容易被攻破或竄改,也容易受病毒影響,一旦被攻破或竄改,將豪無(wú)安全可言。同時(shí)現(xiàn)有第三方加密軟件加密過(guò)的文件不對(duì)其他軟件透明,使得使用起來(lái)不是十分方便。當(dāng)其他軟件需要訪問(wèn)加密文件時(shí)則需要手動(dòng)解壓文件。而且第三方加密軟件通常使用的加密算法単一,而且在對(duì)大批量文件加密時(shí)使用単一密鑰加密。一旦加密算法被知道,攻擊者可以通過(guò)豐富的加密文件進(jìn)行推測(cè)破解,有安全隱患。總結(jié)而言,現(xiàn)有安卓操作系統(tǒng)上的文件保密系統(tǒng)主要存在以下問(wèn)題
1、加密功能的通用性不夠強(qiáng),無(wú)法在多個(gè)應(yīng)用之間共享加密數(shù)據(jù),或只能加密應(yīng)用自有數(shù)據(jù)。2、加密文件無(wú)法對(duì)其他第三方應(yīng)用程序的透明,使用不方便。即第三方應(yīng)用程序必須通過(guò)增加專門解密動(dòng)作才能訪問(wèn)數(shù)據(jù)。3、加密的安全性不夠好,加密算法単一,加密大量文件時(shí)使用単一密鑰,加密程序本身容易被攻破。
發(fā)明內(nèi)容
本發(fā)明的一種安卓操作系統(tǒng)上的文件保密系統(tǒng)旨在解決目前安卓操作系統(tǒng)上現(xiàn)有保密工具的不足,采用與以往安卓操作系統(tǒng)上加密方案完全不同的設(shè)計(jì)與實(shí)現(xiàn)方式。本發(fā)明安全系數(shù)較高,對(duì)其他第三方應(yīng)用程序透明,是ー種通用的文件加密技術(shù)方案。本發(fā)明提供了一種安卓操作系統(tǒng)上的文件保密系統(tǒng),其用于將數(shù)據(jù)加密后再傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)去存儲(chǔ)或者將實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)中的數(shù)據(jù)解密后再傳出,如圖1所示,其包括保密箱用戶界面模塊(101)、保密箱本地代碼模塊(102)、保密箱工具庫(kù)模塊(103)和加密文件子系統(tǒng)(104)。該保密箱用戶界面模塊(101),用于獲取用戶加密或解密的屬性信息,包括密鑰、加密類型(如aes或des)和密鑰長(zhǎng)度,提供與用戶進(jìn)行交互的用戶界面接ロ,并調(diào)用下層的保密箱本地代碼模塊;
該保密箱本地代碼模塊(102),用于獲取用戶界面模塊(101)的加密或解密的屬性信息,調(diào)用下層的保密箱工具庫(kù)模塊(10 并將加密或解密的屬性信息傳遞給工具庫(kù)模塊 (103);
該保密箱工具庫(kù)模塊(103),用于獲取本地代碼模塊(10 的加密或解密的屬性信息并將其注入到內(nèi)核,然后加載或卸載加密文件子系統(tǒng);
保密箱工具庫(kù)模塊(10 還可以對(duì)本地代碼模塊(10 中加密或解密屬性信息中的密鑰進(jìn)行散列得到散列碼,使得該密鑰以散列碼的形式存儲(chǔ)并注入到內(nèi)核,例如可以對(duì)該密鑰進(jìn)行加salt散列(如SHA512)得到salt散列碼。該加密文件子系統(tǒng)(104),是ー層虛擬的文件系統(tǒng),用于根據(jù)保密箱工具庫(kù)模塊 (103)中的加密或解密的屬性信息將任何寫(xiě)入的數(shù)據(jù)進(jìn)行加密或者將任何讀出的數(shù)據(jù)進(jìn)行解密。本發(fā)明還提供了ー種利用上述文件保密系統(tǒng)進(jìn)行文件保密的方法,將數(shù)據(jù)加密后再傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)去存儲(chǔ)或者將實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)中的數(shù)據(jù)解密后再傳出,具體包括以下步驟
步驟Sl 創(chuàng)建保密箱,獲取保密箱加密或解密的屬性信息,包括密鑰、加密類型和密鑰長(zhǎng)度;
步驟S2 打開(kāi)或關(guān)閉保密箱,通過(guò)保密箱本地代碼模塊去調(diào)用保密箱工具庫(kù)模塊將保密箱的屬性信息注入到內(nèi)核,然后加載或卸載加密文件子系統(tǒng);
在本步驟S2中還可以對(duì)加密或解密屬性信息中的密鑰進(jìn)行散列得到散列碼,使得該密鑰以散列碼的形式存儲(chǔ)并注入到內(nèi)核,例如可以對(duì)該密鑰進(jìn)行加salt散列(如SHA512) 得到salt散列碼;
步驟S3 如果保密箱是打開(kāi)的,則根據(jù)加密或解密的屬性信息將任何寫(xiě)入的數(shù)據(jù)進(jìn)行加密或者將任何讀出的數(shù)據(jù)進(jìn)行解密;如果保密箱是關(guān)閉的,則任何寫(xiě)入或讀出的數(shù)據(jù)都是非加密狀態(tài)。本發(fā)明的技術(shù)效果是
1、本發(fā)明支持文件粒度的加密,即用戶可以選擇對(duì)哪些文件或目錄加密。而且,應(yīng)用程序不用關(guān)心文件是否被加密,可以完全透明地訪問(wèn)加密文件。2、本發(fā)明無(wú)需預(yù)先保留足夠的空間,用戶可以隨時(shí)加密或恢復(fù)文件。3、本發(fā)明對(duì)單個(gè)加密文件更改密鑰和加密算法比較容易。4、本發(fā)明對(duì)不同的文件可以使用不同的加密算法和密鑰,増大了破解的難度。5、本發(fā)明只有加密文件才需要特殊的加密/解密處理,普通文件的存取沒(méi)有額外開(kāi)銷。6、本發(fā)明加密文件轉(zhuǎn)移到別的物理介質(zhì)上吋,沒(méi)有額外的加密/解密開(kāi)銷。
圖1為本發(fā)明安卓保密文件系統(tǒng)的總體架構(gòu)。圖2為本發(fā)明安卓保密文件系統(tǒng)的工作流程圖; 圖3為本發(fā)明安卓文件保密方法的工作流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一歩詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明安卓操作系統(tǒng)上的文件保密系統(tǒng)的總體架構(gòu)如圖1所示。本發(fā)明從上到下共四個(gè)層組成,分別是保密箱(CryptBox)用戶界面模塊(101)、保密箱本地代碼 (cryptbox-jni)模塊(102)、保密箱工具庫(kù)(ecutils)模塊(10 和加密文件子系統(tǒng) (ecryptfs) (104)。層次之間不跨層調(diào)用,這樣的層次設(shè)計(jì)有利于系統(tǒng)的穩(wěn)定性以及代碼的可靠性。層次之間各司其職,出現(xiàn)問(wèn)題,容易找到問(wèn)題所在。保密箱用戶界面模塊(101),是安卓應(yīng)用程序模塊,其用于創(chuàng)建用戶界面,創(chuàng)建安卓服務(wù)與用戶交互,獲取用戶輸入。而具體與加密有關(guān)的操作通過(guò)安卓操作系統(tǒng)的JNI傳給用C寫(xiě)的保密箱本地代碼模塊(cryptbox-jni庫(kù))(102)。cryptbox-jni庫(kù)是用安卓NDK開(kāi)發(fā)的ー個(gè)jni庫(kù),作為保密箱的本地適配層。保密箱本地代碼模塊對(duì)應(yīng)于保密箱,用干與下層的保密箱工具庫(kù)模塊溝通。主要提供如下操作保密箱創(chuàng)建,保密箱關(guān)閉,保密箱屬性修改;其中創(chuàng)建保密箱操作,主要通過(guò)保密箱工具庫(kù)模塊提供的功能將用戶輸入的密碼注入到內(nèi)核,然后根據(jù)用戶輸入加載加密文件子系統(tǒng);關(guān)閉保密箱,主要用于卸載加密文件子系統(tǒng)。保密箱工具庫(kù)(ecutils)模塊(103)是針對(duì)安卓操作系統(tǒng)開(kāi)發(fā)的一套加密文件子系統(tǒng)的封裝庫(kù),是安卓保密箱的核心,其封裝了加密文件子系統(tǒng)的核心操作,用于處理加密文件子系統(tǒng)所需信息以及加載加密文件子系統(tǒng)。保密箱工具庫(kù)模塊(I03)將用戶輸入的密鑰進(jìn)行加salt散列得到散列碼,得到的散列碼就是用戶密碼的存儲(chǔ)形式。用戶輸入的密鑰可進(jìn)行散列存儲(chǔ),否則很容易被黑客通過(guò)各種方式竊取你存儲(chǔ)的密鑰。而如果直接對(duì)密碼進(jìn)行散列,那么黑客可以對(duì)通過(guò)獲得這個(gè)密碼散列值,然后通過(guò)查散列值字典,得到某用戶的密碼。加salt散列可以一定程度上解決這ー問(wèn)題。所謂加salt方法,就是加點(diǎn)“佐料”。往密碼里加點(diǎn)“佐料”,比如在密碼后面加段數(shù)據(jù)構(gòu)成新的密碼。這里使用的核心散列算法是SHA512。使用SHA512算法迭代散列“加salt密碼” 一定次數(shù)后,得到需要的散列碼。生成的散列碼即是加密文件子系統(tǒng)(ecryptfs) (104)獲取的密鑰,創(chuàng)建ecryptfs 密鑰并注入到內(nèi)核。加密文件子系統(tǒng)(104)的密鑰是由內(nèi)核的keystore模塊保存,用數(shù)據(jù)結(jié)構(gòu) ecryptfs—auth—tok 來(lái)表不
struct ecryptis—auth—tok t
uintl6_t version; /氺 ecryptfs 白勺片反本號(hào)氺/ uintl6_t token_type; /*token 的類型 */ uint32 t flags; /* 標(biāo)志位 */struct ecryptfs_session_key session—key; /氺會(huì)!·舌^ife 氺/ uint8_t reserved[32] ; /* 保留字節(jié) */ union {
struct ecryptfs_password password; /* 米用對(duì)稱カロ密時(shí)的密碼 */ struct ecryptfs_private_key private—key; /* 如果使用非對(duì)稱カロ密時(shí)的
私鑰*/
} token; ) _attribute_ ((packed));
該數(shù)據(jù)結(jié)構(gòu)中的password成員是一個(gè)struct ecryptfs_password結(jié)構(gòu)體。 struct ecryptfs_password {
int32_t password_bytes;/* 密碼字節(jié)數(shù) */
int32_t hash_algo;/* 散列標(biāo)志 */
int32_t hash_iterations;1 ^ ^ feiK */
int32_t session_key_encryption_key_bytes ; /氺會(huì)i舌密書(shū)月字節(jié)數(shù)氺/ int32_t flags;/* 標(biāo)識(shí) */
uint8_t session_key_encryption_key /* 會(huì)詁カロ密密鑰 */; uint8_t signature [ECRYPTFS_PASSWORD_SIG_SIZE + 1];/* 簽名 */
uint8_t salt[ECRYPTFS_SALT_SIZE];/* 加 salt 值 */
}
創(chuàng)建數(shù)據(jù)結(jié)構(gòu)eCryptfS_auth_tok,將散列碼拷貝到該數(shù)據(jù)結(jié)構(gòu)的password成員的 session_key_encryption_key字段中,這個(gè)就是加密文件子系統(tǒng)用來(lái)加密的密鑰。加 salt散列時(shí)使用的salt值拷貝到token, password, salt字段中,加密文件子系統(tǒng)將會(huì)使用 salt。等 ecryptis_auth_tok 白勺 token, password. session_key_encryption_key_bytes 字段設(shè)置為512,因?yàn)槭褂肧HA512算法,散列值長(zhǎng)度為512。將eCryptfS_auth_tok的 token_type字段設(shè)置為0表示是密鑰類型的token。將生成的散列碼的前8個(gè)字節(jié)拷貝到 ecryptf s_auth_tok 白勺 token, password, signature jJ1 段中作為個(gè) ecryptf s_auth_tok 的標(biāo)識(shí)。將 ecryptfs_auth_tok 的 token, password. hash_algo 字段設(shè)置為 PGP_DIGEST_ ALG0_SHA512,表示使用的SHA512算法。ecryptfs_auth_tok生成好之后,以散列碼前8個(gè)字節(jié)作為標(biāo)識(shí),通過(guò)add_key系統(tǒng)調(diào)用將ecryptfS_auth_tok注入到內(nèi)核。保密箱工具庫(kù)模塊(10 通過(guò)系統(tǒng)調(diào)用mount來(lái)加載加密文件子系統(tǒng)(104)。加載加密文件子系統(tǒng)需要傳遞多個(gè)參數(shù)以使得加密文件子系統(tǒng)正常工作。參數(shù)“sig=XXXX” 傳遞給加密文件子系統(tǒng),作為eCryptfS_aUth_tok的標(biāo)識(shí),也就是散列碼的前8個(gè)字節(jié)。加密文件子系統(tǒng)的密鑰是由內(nèi)核keystore模塊保存。前面已經(jīng)將eCryptfS_auth_t0k注入到內(nèi)核中了,加密文件子系統(tǒng)通過(guò)標(biāo)識(shí)獲取ecryptfS_auth_tok。參數(shù)“Cipher=XXX”傳遞給加密文件子系統(tǒng)使用的加密方式,可以有多種加密方式可選,如aes,des等加密算法。參數(shù)“ecryptfS_key_byteS=XXX”為加密方式使用的密鑰字節(jié)數(shù),例如用aes_U8算法加密, 則密鑰比特?cái)?shù)為16字節(jié)。加密文件子系統(tǒng)(104)加載成功之后,往文件系統(tǒng)中寫(xiě)任何數(shù)據(jù)都是加密過(guò)的,對(duì)應(yīng)用程序完全透明。加密文件子系統(tǒng)處于內(nèi)核層,它根據(jù)加載文件子系統(tǒng)時(shí)的參數(shù)來(lái)決定加密所用的加密方法以及密鑰長(zhǎng)度。它在數(shù)據(jù)要寫(xiě)入文件系統(tǒng)的時(shí)候,先進(jìn)行數(shù)據(jù)的加密,然后再將數(shù)據(jù)寫(xiě)入實(shí)際存儲(chǔ)文件系統(tǒng)。加密文件子系統(tǒng)(104)通過(guò)將加密服務(wù)集成到文件系統(tǒng)這ー層面來(lái)解決上面的問(wèn)題。加密文件的內(nèi)容一般經(jīng)過(guò)對(duì)稱密鑰算法加密后以密文的形式存放在物理介質(zhì)上,即使文件丟失或被竊取,在加密密鑰未泄漏的情況下,非授權(quán)用戶幾乎無(wú)法通過(guò)密文逆向獲得文件的明文,從而保證了高安全性。與此同時(shí),授權(quán)用戶對(duì)加密文件的訪問(wèn)則非常方便, 不需要用戶進(jìn)行加解密操作,通過(guò)open,read, write等函數(shù)就可以訪問(wèn)文件中被加密過(guò)的內(nèi)容。用戶通過(guò)初始身份認(rèn)證后,對(duì)加密文件的訪問(wèn)和普通文件沒(méi)有什么區(qū)別,就好像該文件并沒(méi)有被加密過(guò),這是因?yàn)榧用芪募酉到y(tǒng)自動(dòng)地在后臺(tái)做了相關(guān)的加密和解密的エ 作。加密文件子系統(tǒng)是ー層虛擬的文件系統(tǒng),在實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)與用戶接ロ之間, 是ー個(gè)中間層,將用戶傳入的數(shù)據(jù)加密然后傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)。由于加密文件子系統(tǒng)一般工作在內(nèi)核態(tài),普通的攻擊比較難于奏效。如圖2所示,在安卓系統(tǒng)中應(yīng)用程序不能直接訪問(wèn)物理設(shè)備。加密的過(guò)程需要將數(shù)據(jù)交給內(nèi)核,由內(nèi)核來(lái)負(fù)責(zé)將數(shù)據(jù)寫(xiě)入物理介質(zhì)。應(yīng)用程序通過(guò)write調(diào)用將數(shù)據(jù)寫(xiě)入內(nèi)核。而在內(nèi)核里,由文件系統(tǒng)接收應(yīng)用程序?qū)懭氲臄?shù)據(jù)。文件系統(tǒng)負(fù)責(zé)對(duì)物理設(shè)備的抽象,將物理設(shè)備抽象成文件。本發(fā)明中,數(shù)據(jù)不是直接傳給實(shí)際抽象物理設(shè)備的文件系統(tǒng), 而是ー個(gè)虛擬的加密文件子系統(tǒng)。當(dāng)數(shù)據(jù)傳入到加密文件子系統(tǒng)中,加密文件系統(tǒng)采用公開(kāi)加密算法對(duì)數(shù)據(jù)進(jìn)行加密。然后再將加密過(guò)的數(shù)據(jù)當(dāng)成一般數(shù)據(jù)寫(xiě)入實(shí)際存儲(chǔ)的文件系統(tǒng)。最后實(shí)際存儲(chǔ)的文件系統(tǒng)才將數(shù)據(jù)寫(xiě)入物理設(shè)備。解密的過(guò)程完全相反,物理設(shè)備里存儲(chǔ)的是加密過(guò)的數(shù)據(jù),抽象物理設(shè)備的文件系統(tǒng)將加密過(guò)的數(shù)據(jù)作為文件組織起來(lái)。文件系統(tǒng)將單個(gè)文件中的數(shù)據(jù)傳入加密文件子系統(tǒng),加密文件子系統(tǒng)此時(shí)進(jìn)行解密,然后將解密后的數(shù)據(jù)通過(guò)read函數(shù)傳給應(yīng)用程序。如圖3所示,本發(fā)明還提供了ー種利用上述文件保密系統(tǒng)進(jìn)行文件保密的方法, 將數(shù)據(jù)加密后再傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)去存儲(chǔ)或者將實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)中的數(shù)據(jù)解密后再傳出,該方法包括以下步驟
步驟Sl 創(chuàng)建保密箱,獲取保密箱加密或解密的屬性信息,包括密鑰、加密類型(如 aes或des)和密鑰長(zhǎng)度;
步驟S2:打開(kāi)或關(guān)閉保密箱,將保密箱的屬性信息注入到內(nèi)核,然后加載或卸載加密文件子系統(tǒng);
在本步驟S2中還可以對(duì)加密或解密屬性信息中的密鑰進(jìn)行散列得到散列碼,使得該密鑰以散列碼的形式存儲(chǔ)并注入到內(nèi)核,例如可以對(duì)該密鑰進(jìn)行加salt散列(如SHA512) 得到salt散列碼;
步驟S3 如果保密箱是打開(kāi)的,則根據(jù)加密或解密的屬性信息將任何寫(xiě)入的數(shù)據(jù)進(jìn)行加密或者將任何讀出的數(shù)據(jù)進(jìn)行解密;如果保密箱是關(guān)閉的,則任何寫(xiě)入或讀出的數(shù)據(jù)都是非加密狀態(tài)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種安卓操作系統(tǒng)上的文件保密系統(tǒng),其特征在干,其用于將數(shù)據(jù)加密后再傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)去存儲(chǔ)或者將實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)中的數(shù)據(jù)解密后再傳出,其包括保密箱用戶界面模塊(101)、保密箱本地代碼模塊(10 、保密箱工具庫(kù)模塊(103)和加密文件子系統(tǒng)(104);該保密箱用戶界面模塊(101),用于獲取用戶加密或解密的屬性信息,包括密鑰、加密類型和密鑰長(zhǎng)度,提供與用戶進(jìn)行交互的用戶界面接ロ,并調(diào)用下層的保密箱本地代碼模塊;該保密箱本地代碼模塊(102),用于獲取用戶界面模塊(101)的加密或解密的屬性信息,調(diào)用下層的保密箱工具庫(kù)模塊(10 并將加密或解密的屬性信息傳遞給工具庫(kù)模塊 (103);該保密箱工具庫(kù)模塊(103),用于獲取本地代碼模塊(10 的加密或解密的屬性信息并將其注入到內(nèi)核,然后加載或卸載加密文件子系統(tǒng);該加密文件子系統(tǒng)(104),是ー層虛擬的文件系統(tǒng),用于根據(jù)保密箱工具庫(kù)模塊(103) 中的加密或解密的屬性信息將任何寫(xiě)入的數(shù)據(jù)進(jìn)行加密或者將任何讀出的數(shù)據(jù)進(jìn)行解密。
2.根據(jù)權(quán)利要求1所述的文件保密系統(tǒng),其特征在于,保密箱工具庫(kù)模塊(103)對(duì)密鑰進(jìn)行散列得到散列碼,使得該密鑰以散列碼的形式存儲(chǔ)并注入到內(nèi)核,以使該散列碼成為加密文件子系統(tǒng)的加密算法要使用的密鑰。
3.根據(jù)權(quán)利要求2所述的文件保密系統(tǒng),其特征在干,所述保密箱的密鑰加salt散列得到salt散列碼。
4.根據(jù)權(quán)利要求3所述的文件保密系統(tǒng),其特征在干,所述進(jìn)行加salt散列采用的散列算法是SHA512。
5.根據(jù)權(quán)利要求1所述的文件保密系統(tǒng),其特征在干,所述加密類型為aes或des。
6.ー種根據(jù)權(quán)利要求1所述的文件保密系統(tǒng)進(jìn)行文件保密的方法,其特征在于,將數(shù)據(jù)加密后再傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)去存儲(chǔ)或者將實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)中的數(shù)據(jù)解密后再傳出,具體包括以下步驟步驟Sl 創(chuàng)建保密箱,獲取保密箱加密或解密的屬性信息,包括密鑰、加密類型和密鑰長(zhǎng)度;步驟S2 打開(kāi)或關(guān)閉保密箱,通過(guò)保密箱本地代碼模塊去調(diào)用保密箱工具庫(kù)模塊將保密箱的屬性信息注入到內(nèi)核,然后加載或卸載加密文件子系統(tǒng);步驟S3 如果保密箱是打開(kāi)的,則根據(jù)加密或解密的屬性信息將任何寫(xiě)入的數(shù)據(jù)進(jìn)行加密或者將任何讀出的數(shù)據(jù)進(jìn)行解密;如果保密箱是關(guān)閉的,則任何寫(xiě)入或讀出的數(shù)據(jù)都是非加密狀態(tài)。
7.根據(jù)權(quán)利要求6所述的文件保密的方法,其特征在干,步驟S2中對(duì)密鑰進(jìn)行散列得到散列碼,使得該密鑰以散列碼的形式存儲(chǔ)并注入到內(nèi)核。
8.根據(jù)權(quán)利要求7所述的文件保密的方法,其特征在干,對(duì)該密鑰進(jìn)行加salt散列得到salt散列碼。
9.根據(jù)權(quán)利要求8所述的文件保密的方法,其特征在干,加salt散列采用的散列算法是 SHA512。
10.根據(jù)權(quán)利要求6所述的文件保密的方法,其特征在干,所述加密類型為aes或des。
全文摘要
本發(fā)明涉及移動(dòng)終端設(shè)備技術(shù)領(lǐng)域,具體公開(kāi)了一種安卓操作系統(tǒng)上的文件保密系統(tǒng)及其保密的方法。該文件保密系統(tǒng)用于將數(shù)據(jù)加密后再傳給實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)去存儲(chǔ)或者將實(shí)際存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)中的數(shù)據(jù)解密后再傳出,該文件保密系統(tǒng)包括保密箱用戶界面模塊、保密箱本地代碼模塊、保密箱工具庫(kù)模塊和加密文件子系統(tǒng)。該保密系統(tǒng)提供給用戶一個(gè)安全性高,使用方便的數(shù)據(jù)加密工具。它能夠支持文件粒度的加密,無(wú)需預(yù)先保留足夠的空間,對(duì)單個(gè)加密文件更改密鑰和加密算法比較容易,不同的文件可以使用不同的加密算法和密鑰,只有加密文件才需要特殊的加密/解密處理,加密文件轉(zhuǎn)移到別的物理介質(zhì)上時(shí),沒(méi)有額外的加密/解密開(kāi)銷。
文檔編號(hào)G06F21/24GK102567688SQ201110389820
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者于朋, 蘭雨晴, 劉崢嶸, 夏穎, 李斌 申請(qǐng)人:中標(biāo)軟件有限公司