国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

AES算法在數(shù)據(jù)庫加密中的應(yīng)用*

2013-10-24 10:17:38
關(guān)鍵詞:明文解密字節(jié)

舒 濤

(四川省民族學(xué)院)

0 引言

對于數(shù)據(jù)庫系統(tǒng)來說,數(shù)據(jù)存儲的安全性是必須解決的問題,以防止數(shù)據(jù)的泄露、更改和破壞.當(dāng)前主流的大型數(shù)據(jù)庫系統(tǒng)如SQL Server、Oracle、DB2、Sybase、MySQL 等數(shù)據(jù)庫都提供了如身份識別、存取控制、隔離控制、數(shù)據(jù)庫審計等多種基于DBMS(Database Management System,數(shù)據(jù)庫管理系統(tǒng))的安全措施,但這些安全措施仍然難以有效阻止非法用戶通過竊取數(shù)據(jù)庫登錄密碼或利用操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)漏洞來繞過這些安全措施直接讀取或篡改數(shù)據(jù)庫中的內(nèi)容.為了防止用戶非法訪問數(shù)據(jù)庫內(nèi)容,必須對數(shù)據(jù)庫中存儲的重要數(shù)據(jù)進(jìn)行加密保護(hù).

對于數(shù)據(jù)庫的加密主要有以下幾個層次[1]:

(1)在操作系統(tǒng)層加密.由于DBMS是在操作系統(tǒng)之上,操作系統(tǒng)是將數(shù)據(jù)庫文件作為普通文件進(jìn)行處理的,操作系統(tǒng)無法識別數(shù)據(jù)庫文件的數(shù)據(jù)結(jié)構(gòu),也就無法合理地利用自身的加密功能對數(shù)據(jù)庫庫文件進(jìn)行加密.因此,目前在操作系統(tǒng)層對數(shù)據(jù)庫文件進(jìn)行加密還很難實現(xiàn).

(2)在DBMS內(nèi)核中進(jìn)行加密.該方法在對數(shù)據(jù)庫文件進(jìn)行物理存取之前來完成加密工作.這種加密方式的優(yōu)點是功能強并且不會影響DBMS的功能,可以實現(xiàn)DBMS和加密功能之間的整合.其缺點:一是加密和解密運算均在服務(wù)器端進(jìn)行,加重了數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),二是由于加密是在DBMS內(nèi)核中實現(xiàn),必須數(shù)據(jù)庫廠商提供技術(shù)支持并取得DBMS內(nèi)核的相關(guān)資料,但實際上要做到這些并不容易.

(3)在DBMS外層實現(xiàn)加密.該方法是將在DBMS外層加上一個數(shù)據(jù)庫加密系統(tǒng),所有對數(shù)據(jù)庫的訪問先由這個系統(tǒng)進(jìn)行處理.該方法的優(yōu)點是不涉及DBMS內(nèi)核,并且在數(shù)據(jù)傳輸時是以密文進(jìn)行傳輸?shù)?缺點是會影響數(shù)據(jù)庫系統(tǒng)的功能和運行效率.

針對以上在各個層次對數(shù)據(jù)庫進(jìn)行加密的優(yōu)缺點,筆者采用不涉及數(shù)據(jù)庫系統(tǒng)本身,而只對記錄內(nèi)容進(jìn)行加密的方法.

1 加密算法的選擇

在當(dāng)前信息安全領(lǐng)域用于數(shù)據(jù)加密的實用算法,按加密和解密是否使用同一密鑰或解密密鑰可由加密密鑰計算得出,可分為至對稱密鑰算法(Symmetric Algorithm)和非對稱密鑰算法(Asymmetric Algorithm)或稱公鑰算法(Public-Key Algorithm).

1.1 對稱密鑰算法

對稱密鑰算法的特點是加密和解密使用同一密鑰或者解密密鑰可由加密密鑰經(jīng)過計算得到.對稱密鑰算法根據(jù)加密方式不同分為序列算法和分組算法兩類.序列算法單獨加密每個位,它是通過將密鑰序列中每個位與每個明文位相加實現(xiàn)的,而分組算法則是每次使用相同的密鑰加密整個明文位分組來實現(xiàn).現(xiàn)在典型的對稱密鑰算法均是采用分組算法,如IDEA、DES、3DES、AES、RC5、RC6 等.

1.2 非對稱密鑰算法

非對稱密鑰算法也稱公鑰算法,其特點是用作加密的密鑰與用作解密的密鑰不同,而且解密密鑰也不能通過加密密鑰計算得到.在典型的公開密鑰算法RSA中,數(shù)據(jù)即可以用公鑰加密用私鑰進(jìn)行解密,也可以用私鑰加密用公鑰進(jìn)行解密.

考慮到數(shù)據(jù)庫中數(shù)據(jù)量較大,數(shù)據(jù)訪問也很頻繁,綜合考慮各種加密方法的安全性、加解密效率等多種因素,數(shù)據(jù)庫內(nèi)容加密宜采用對稱密鑰算法進(jìn)行加密,在本文中采用AES算法.

2 AES算法及實現(xiàn)

AES[2](Advanced Encryption Standard,高級加密標(biāo)準(zhǔn))是由美國國家標(biāo)準(zhǔn)和技術(shù)研究院(NIST)從1997年1月開始向全世界公開征集的用于代替DES(Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn))的數(shù)據(jù)加密標(biāo)準(zhǔn),并在2002年5月正式成為新的數(shù)據(jù)加密標(biāo)準(zhǔn).它選擇了由比利時科學(xué)家Joan Daemen和Vincent Rijmen提出的Rijndael算法作為加密算法.該算法是一種數(shù)據(jù)塊長度和密鑰長度均可進(jìn)行迭代分組的分組加密算法,密鑰長度和數(shù)據(jù)分組長度可分別為128、192、256位,而標(biāo)準(zhǔn)的AES密鑰長度為128位.AES相對于DES有很強的加密強度,采用128位密鑰的AES是采用56位密鑰的DES的1021倍,且當(dāng)前尚未出現(xiàn)針對AES的有效破解方法.

2.1 AES的加解密過程

AES的加密流程主要由輪密鑰加(Addroundkey)、字 節(jié) 置 換 (ByteSub)、行 移 動(ShiftRow)、列混合(MixColumn)這四個基本的操作完成,其步驟是:首先將明文映射到一個4×4字節(jié)的狀態(tài)矩陣(State),并進(jìn)行初始密鑰加運算;然后進(jìn)行 Nr次輪運算,各輪都將進(jìn)行ByteSub、ShiftRow、MixColumn、Addroundkey 這 4個基本操作,但在第Nr輪不做MixColumn;最后將State中的明文映射為密文 .解密過程與加密過程類似,主要區(qū)別有:使用密鑰序列的順序不同、置換盒不同、行移動方向不同、列混合系數(shù)不同,以及每輪變換中函數(shù)的使用順序不同.加密與解密流程如圖1所示.

2.2 AES算法的基本操作

AES算法主要由輪密鑰加(Addroundkey)、字節(jié)置換(ByteSub)、行移動(ShiftRow)、列混合(MixColumn)四個基本的操作組成.

(1)字節(jié)置換(ByteSub).字節(jié)置換是一種非線形變換,該置換包含一個作用在狀態(tài)字節(jié)上的S-盒.S-盒置換是一個雙向映射,即256個可能的輸入元素都與一個輸出元素一一對應(yīng).這個屬性允許我們唯一地逆轉(zhuǎn)S-盒,這也是解密操作所需要的.在軟件實現(xiàn)中,S-盒通常使用一個擁有固定項的、256位乘8位的查找表來實現(xiàn).

(2)行移動(ShiftRow).行移變換循環(huán)往復(fù)地將狀態(tài)矩陣的每一行的字節(jié)按如下方式循環(huán)移動:第二行向右移動三個字節(jié),將第三行向右移動兩個字節(jié),將第四行向右移動一個字節(jié).在行移變換中,狀態(tài)矩陣的第一行保持不變.行移動和列混合相互影響,經(jīng)過多輪變換后密碼信息將非常的混亂,增加了AES的擴散性.

(3)列混合(MixColumn).該操作是一個線性變換,它混淆了狀態(tài)矩陣的第一列.由于每個輸入字節(jié)都影響了四個輸出字節(jié),列混合操作是AES中的主要擴散元素,它與行移動操作組合使得三輪以后,狀態(tài)矩陣的每個字節(jié)都依賴于所有16個明文字節(jié)成為可能.

(4)輪密鑰加(Addroundkey).該操作是通過輸入16字節(jié)的當(dāng)前狀態(tài)矩陣和長度為128位的子密鑰,生成一個密鑰調(diào)度表.通過密鑰調(diào)度表中的前4行對狀態(tài)矩陣進(jìn)行按字節(jié)的XOR(異或)操作.

2.3 加解密實現(xiàn)算法

根據(jù)上述的加解密流程,下面采用偽Object Pascal語言對算法進(jìn)行描述.

3 加密后對數(shù)據(jù)訪問的影響

數(shù)據(jù)庫管理系統(tǒng)要完成對數(shù)據(jù)庫文件的管理和使用,必須要能夠正確識別部分?jǐn)?shù)據(jù),因此,在對數(shù)據(jù)庫加密內(nèi)容進(jìn)行加密時,不能對所有數(shù)據(jù)進(jìn)行加密.不能進(jìn)行加密的字段主要是以下三類:(1)索引字段;(2)表與表之間用于進(jìn)行關(guān)聯(lián)的字段;(3)具有主鍵約束和外鍵約束的字段.

數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行加密以后,數(shù)據(jù)庫管理系統(tǒng)的一些功能會受到限制甚至根本無法使用.受影響的功能主要有:(1)不能實現(xiàn)數(shù)據(jù)約束.(2)Select語句中的排序、統(tǒng)計類語句將不起作用.(3)數(shù)據(jù)庫管理系統(tǒng)中提供的系統(tǒng)函數(shù)無法對數(shù)據(jù)進(jìn)行加密處理.(4)一些數(shù)據(jù)庫管理工具中的開發(fā)功能將受到限制.

為了盡量減小數(shù)據(jù)加密后對數(shù)據(jù)管理的影響,針對上述受影響的功能,可采用一些措施進(jìn)行處理:

(1)解決不能實現(xiàn)數(shù)據(jù)約束的方法.增加一張數(shù)據(jù)表將已加密的字段的數(shù)據(jù)類型存放在該表中,再將這些已經(jīng)加密字段的類型都改成變長的字符類型,在給查詢時再進(jìn)行恢復(fù).

(2)解決SQL語句、系統(tǒng)函數(shù)、開發(fā)功能受限的方法.在數(shù)據(jù)操作前先建立一張局部臨時表,然后將加密后的數(shù)據(jù)進(jìn)行解密后存儲到該臨時表中.以后對數(shù)據(jù)的操作都在這張臨時表中進(jìn)行,操作完成后應(yīng)將臨時表及時刪除,以免造成數(shù)據(jù)泄密.

4 結(jié)束語

數(shù)據(jù)庫安全、操作系統(tǒng)安全、網(wǎng)絡(luò)安全共同組成了當(dāng)今信息安全的核心.數(shù)據(jù)庫內(nèi)容加密能夠有效地保證數(shù)據(jù)的安全,即使非法用戶竊取了數(shù)據(jù),也難以得到所需的信息.另外,數(shù)據(jù)庫內(nèi)容加密后數(shù)據(jù)庫管理員也無法看到明文,從而大大提高了數(shù)據(jù)的安全性.本文在分析數(shù)據(jù)庫加密的層次、加密算法的基礎(chǔ)上提出了采用AES對數(shù)據(jù)庫內(nèi)容進(jìn)行加密的方法來提高數(shù)據(jù)庫的安全,并對數(shù)據(jù)庫內(nèi)容加密后對數(shù)據(jù)庫管理的影響進(jìn)行了分析并給出了解決方法.

[1] 趙曉峰.幾種數(shù)據(jù)庫加密方法的研究與比較[J].計算機技術(shù)與發(fā)展,2007(2):219-222.

[2] Christof Paar,Jan Pelzl.深入淺出密碼學(xué):常用加密技術(shù)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2012.

[3] 魏嘉銀.多功能AES加密與解密軟件的設(shè)計與實現(xiàn)[J].計算機與數(shù)字工程,2011(6):93-97.

[4] 陳鐵英,陳華,劉瑜.基于三層次的數(shù)據(jù)庫加密應(yīng)用系統(tǒng)[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),2005(7):41-43,46.

[5] 弟宇鳴,陳榮樺,左廣霞.基于AES算法的加密模塊設(shè)計[J]. 電子設(shè)計工程,2013(2):53-55.

猜你喜歡
明文解密字節(jié)
解密“熱脹冷縮”
No.8 字節(jié)跳動將推出獨立出口電商APP
解密“一包三改”
少先隊活動(2020年9期)2020-12-17 06:17:31
炫詞解密
No.10 “字節(jié)跳動手機”要來了?
奇怪的處罰
簡談MC7字節(jié)碼
奇怪的處罰
四部委明文反對垃圾焚燒低價競爭
玛曲县| 潜江市| 泾源县| 托克托县| 康乐县| 铜鼓县| 宣武区| 梅州市| 北京市| 沅陵县| 天津市| 通州市| 资源县| 陇南市| 黑龙江省| 广河县| 石林| 尚义县| 分宜县| 都昌县| 宜兴市| 徐水县| 油尖旺区| 介休市| 泾阳县| 忻城县| 资兴市| 临高县| 沭阳县| 恭城| 永福县| 平谷区| 黄梅县| 衡水市| 长兴县| 湄潭县| 玛沁县| 安新县| 页游| 泾源县| 彰化县|