混合型數(shù)據(jù)庫如何加密

混合數(shù)據(jù)庫中大多都涉及到一些敏感數(shù)據(jù),但我們要對這些敏感數(shù)據(jù)進(jìn)行安全性的保護(hù),同時又不能喪失數(shù)據(jù)庫操作的高效和便捷性就變成了一項(xiàng)很重要的研究課題。為此,我們提出了一種混合型的數(shù)據(jù)庫的加密策略。

一、AES算法分析及改進(jìn)

AES加密算法是美國國家標(biāo)準(zhǔn)與技術(shù)研究所用于加密電子數(shù)據(jù)的規(guī)范。同時還是一個迭代的、對稱密鑰、分組型密碼算法,它可以使用128、192和256位密鑰,分組(16字節(jié))加密和解密數(shù)據(jù)。AES加密算法初始化時拷貝16字節(jié)的輸入數(shù)組到一個名為State(態(tài))的4×4字節(jié)矩陣中,算法的主循環(huán)對State矩陣執(zhí)行四個不同的操作:SubBytes(字節(jié)替換)、ShiftRows(行位移變換)、MixColumns(列混合變換)和AddRoundKey(密鑰加)。Sub Bytes例程是一個代替操作,它將State矩陣中的每個字節(jié)替換成一個由Sbox決定的新字節(jié)。ShiftRows是一個置換操作,它將State矩陣中的字節(jié)向左旋轉(zhuǎn)。MixColumns是一個代替操作,它用State字節(jié)列的值進(jìn)行數(shù)學(xué)域加和域乘的結(jié)果代替每個字節(jié)。

AES加密和解密算法使用了一個由種子密鑰字節(jié)數(shù)組生成的密鑰調(diào)度表W[]。該方法被稱之為密鑰擴(kuò)展例程KeyExpansion。從AES算法源代碼中我們可以得知密鑰擴(kuò)展的規(guī)律,以種子密鑰為128位、求第1輪輪密碼為例的推算公式如式1)。其中I、j關(guān)系為I∈[1,11],當(dāng)I=1時,j=0;當(dāng)1>1時,j= (1-1) ×4。

1

如果第i輪的密鑰w[j]、w[j+1]、w[j+2]、w[j+3]被竊取,根據(jù)以下規(guī)則‘如,由w[j]和ww[j+1]可算出w[j-3],由ww[j+1]和w[j+2]可算出w[j-2],由w[j+2]和w[j+3]]可算出w[j-l],由w[j]和w[j-l]可算出w[j-4]。這樣就可以得到i-l的密鑰w[j-4]、w[j-3]、w[j-2]、w[j-l],以此類推就可以得到整個W[]。

為了解決這個問題我們在KeyExpans ion方法中引入了用戶訪問權(quán)限值a(4字節(jié)),并采用式2)的推算公式,還以種子密鑰為128位、求第i輪輪密碼為例。i、j關(guān)系如式1)不變。

1

改進(jìn)后的AES算法在w[]的推算上更加簡單,在實(shí)現(xiàn)時也更加容易,在防破解和攻擊方面功能的增進(jìn)如表1所示:

1

改進(jìn)后的AES算法引入了用戶權(quán)限值a,雖然它增加了保存密碼的數(shù)量,但它卻大大的提高了數(shù)據(jù)庫系統(tǒng)的抗攻擊性。算法在實(shí)現(xiàn)上并沒有變得復(fù)雜,在運(yùn)行時也并沒有多占用系統(tǒng)資源,保持了數(shù)據(jù)庫系統(tǒng)的高效性。

二、加密策略及流程

所謂基于數(shù)據(jù)敏感度的混合型數(shù)據(jù)庫加密策略,其實(shí)就是根據(jù)實(shí)際需求將數(shù)據(jù)庫信息劃分為敏感數(shù)據(jù)巧1、非敏感數(shù)據(jù)、敏感關(guān)鍵字和非敏感關(guān)鍵字;其中的敏感數(shù)據(jù)采用上面所述改進(jìn)的AES算法進(jìn)行二次加密,第一次使用某一輪密鑰進(jìn)行加密,第二次使用主密鑰加密;對敏感關(guān)鍵字使用改進(jìn)的AES算法加密,使用DES算法對非敏感數(shù)據(jù)和非敏感關(guān)鍵字進(jìn)行加密。該策略的加密解密流程如圖1所示。

1

該策略在使用前將數(shù)據(jù)分類并編號,編號O代表非敏感數(shù)據(jù)和非敏感關(guān)鍵字,編號1代表敏感數(shù)據(jù),編號2代表敏感關(guān)鍵字。加密時采用如下步驟:

1)明文根據(jù)編號使用不同的加密算法,編號為O采用DES加密,為2采用改進(jìn)的AES加密,最后得到密文加密過程結(jié)束。如果編號為1則進(jìn)入第2)步;

2)選擇首次改進(jìn)AES加密的密鑰。設(shè)k=a mod 11,其中a為用戶訪問權(quán)限,11為128位AES算法的迭代輪數(shù),則在W[]中取從W[k×4]開始的連續(xù)4個元素做為密鑰,并進(jìn)行首次改進(jìn)AES加密。

3)使用主密鑰改進(jìn)AES二次加密,最后得到密文。

該策略的解密過程是加密的逆過程,只不過在使用改進(jìn)AES二次解密時先使用主密鑰解密,一再使用首次加密密鑰解密,首次加密密鑰的計算方法也同加密一樣。

三、加密策略系統(tǒng)實(shí)現(xiàn)

1、系統(tǒng)結(jié)構(gòu)圖

該加密策略系統(tǒng)主要由如圖2所示各模塊組成。數(shù)據(jù)劃分模塊的是由數(shù)據(jù)庫系統(tǒng)管理員進(jìn)行操作,功能是定義數(shù)據(jù)庫中各表及各表中字段的數(shù)據(jù)類型劃分和加密需求,以及數(shù)據(jù)庫各用戶的訪問權(quán)限的數(shù)字化,用戶權(quán)限和加密要求兩部分就是由該模塊產(chǎn)生的。用戶API是加密系統(tǒng)的用戶接口,主模塊是加解密系統(tǒng)的核心模塊,數(shù)據(jù)庫訪問接口主要是用來訪問后臺數(shù)據(jù)庫的。

1

2、系統(tǒng)操作及實(shí)現(xiàn)細(xì)節(jié)

該系統(tǒng)在運(yùn)行時首先由管理員操作數(shù)據(jù)劃分模塊產(chǎn)生用戶權(quán)限和加密要求。最終用戶權(quán)限被放在一個叫access[2][n]的二行n列的二維動態(tài)字符串?dāng)?shù)組中,access[0]存放的是用戶類型,access[l]的相應(yīng)位置存放用戶類型的數(shù)字化值,n值代表用戶權(quán)限的個數(shù),由管理員動態(tài)設(shè)置。加密要求則被存放在一張名為ecrptreq數(shù)據(jù)表中,該表記錄了數(shù)據(jù)庫中所有表的加密情況及各表中字段被劃分的類型及編號。

如果有用戶要對數(shù)據(jù)庫進(jìn)行查詢、修改、更新等操作,則在訪問數(shù)據(jù)庫內(nèi)容之前系統(tǒng)會根據(jù)所訪問的表名在ecrplreq表中查找該表是否被加密,如果沒有就直接訪問。如果加密則要根據(jù)表中各字段的類型編號調(diào)用主模塊中的相應(yīng)子模塊進(jìn)行加解密,然后再訪問數(shù)據(jù)庫。

該系統(tǒng)使用java語言實(shí)現(xiàn),用到的主要方法及數(shù)據(jù)聲明如下:

Public static strmg access[2] [n];//聲明用來存放用戶權(quán)限的數(shù)據(jù)

/*AES加密方法,參數(shù)依次為:明文、主密鑰、用戶權(quán)限術(shù)/

Public static byte[] AesEncrypt(Srring content, String Passwoud, String a);

/*AES解密方法,參數(shù)依次為:密文、主密鑰、,用戶權(quán)限術(shù)/

Public static byte[] AesDecrypt(byte[] content,S1ring Passwoud, String a);

/*AES二次加密方法,參數(shù)依次為:明文、輪密鑰、用戶權(quán)限術(shù)/

Public static byte[] AesEncryptTwo(String content, S1ring Passwoud, S1ring a);

/*AES二次解密方法,參數(shù)依次為:密文、主密鑰、用戶權(quán)限術(shù)/

Public static byte[] AesDecryptTwo(byteo content, String Passwoud,String a);

/*DES加密方法,參數(shù)依次為:明文、主密鑰術(shù)/

Public static byte[] DesEncryptTwo(String content, String Passwoud);

/*DES解密方法,參數(shù)依次為:密文、主密鑰術(shù)/

Public static byte[] DesDecrypt(byteo content, String Passwoucd);

小知識之AES加密算法

高級加密標(biāo)準(zhǔn)(英語:Advanced Encryption Standard,縮寫:AES),在密碼學(xué)中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。