電子商務(wù)系統(tǒng)中數(shù)據(jù)庫(kù)加密技術(shù)的應(yīng)用

電子商務(wù)系統(tǒng)是基于互聯(lián)網(wǎng)平臺(tái)的,從技術(shù)角度來(lái)說(shuō),互聯(lián)網(wǎng)是存在許多不安全因素的全球性網(wǎng)絡(luò)。電子商務(wù)本身的特點(diǎn)包括一開(kāi)放性、虛擬性、網(wǎng)絡(luò)化,這就對(duì)電子商務(wù)系統(tǒng)的安全性提出了嚴(yán)格的要求,就是要合理地解決網(wǎng)絡(luò)開(kāi)放性與安全性之間的矛盾口數(shù)據(jù)庫(kù)是電子商務(wù)系統(tǒng)的一個(gè)基礎(chǔ)平臺(tái),其中保存有大量重要數(shù)據(jù),而且為許多用戶所共享,因而數(shù)據(jù)庫(kù)的安全問(wèn)題也是開(kāi)發(fā)電子商務(wù)系統(tǒng)時(shí)非常重要的問(wèn)題。

一、加密數(shù)據(jù)庫(kù)模型的框架設(shè)計(jì)

模型采用典型的Client/Server結(jié)構(gòu)。在客戶端,我們要實(shí)現(xiàn)一個(gè)加密字典管理程序和一個(gè)測(cè)試平臺(tái)。加密字典管理程序的功能是:根據(jù)加密需要對(duì)加密字典中的數(shù)據(jù)進(jìn)行管理,例如對(duì)加密字段描述信息進(jìn)行維護(hù)、對(duì)授權(quán)用戶信息進(jìn)行維護(hù)、以及對(duì)數(shù)據(jù)密鑰進(jìn)行維護(hù),客戶平臺(tái)則完成對(duì)加密數(shù)據(jù)庫(kù)授權(quán)用戶的身份驗(yàn)證、數(shù)據(jù)庫(kù)用戶私鑰的解密,加密字段數(shù)據(jù)密鑰的解密,以及提出查詢需求。在服務(wù)器端,我們要實(shí)現(xiàn)一個(gè)加解密引擎,處理從客戶靖發(fā)來(lái)的對(duì)加密數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求并將結(jié)果返回給客戶端,模型的總體框架如下圖:

電子商務(wù)系統(tǒng)中數(shù)據(jù)庫(kù)加密技術(shù)的應(yīng)用

應(yīng)用系統(tǒng)創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用表之后,用戶通過(guò)運(yùn)行圖形化界面一加密字典管理程序,定義哪些應(yīng)用表中的哪些字段的數(shù)據(jù)需要加密。加密字典管理程序?qū)堰@些用戶定義信息存入加密字典中,應(yīng)用表加密后,用戶還可以使用加密字典管理程序修改加密定義,重新指定加密表或加密字段。數(shù)據(jù)庫(kù)加密、解密引擎是該系統(tǒng)的核心部件,負(fù)責(zé)在后臺(tái)完成數(shù)據(jù)的加密、解密處理。當(dāng)應(yīng)用程序向數(shù)據(jù)庫(kù)插入或更新數(shù)據(jù)時(shí),加解密引擎根據(jù)加密字典中的信息,確定當(dāng)前數(shù)據(jù)是否需要加密,如果需要加密,則對(duì)數(shù)據(jù)加密后再寫(xiě)入數(shù)據(jù)庫(kù)中。同樣當(dāng)應(yīng)用從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)時(shí),加密系統(tǒng)根據(jù)加密字典中的信息判定是否需要解密,如果需要解密,對(duì)數(shù)據(jù)進(jìn)行解密以后再交給應(yīng)用,存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)仍然是密文。加密字典管理程序是一個(gè)特殊的數(shù)據(jù)庫(kù)應(yīng)用。加密字典管理程序需要對(duì)數(shù)據(jù)字典進(jìn)行讀操作,對(duì)加密字典進(jìn)行寫(xiě)操作。數(shù)據(jù)字典和加密字典存儲(chǔ)在數(shù)據(jù)庫(kù)中并且是不加密的,為了加快執(zhí)行速度。

加密字典管理程序執(zhí)行這些操作時(shí)不通過(guò)加密、解密引擎直接與客戶端平臺(tái)通信。另一面,當(dāng)用戶提交數(shù)據(jù)加密的定義要求時(shí),加密字典管理程序通過(guò)加密、解密引擎,實(shí)現(xiàn)數(shù)據(jù)明文與密文之間轉(zhuǎn)換的功能。

當(dāng)用戶通過(guò)測(cè)試平臺(tái)登錄到加密數(shù)據(jù)庫(kù)并成功后,測(cè)試平臺(tái)會(huì)與加密字典進(jìn)行交互,從加密字典中找到該用戶的加密形式私鑰,并解密得到用戶私鑰。當(dāng)要訪問(wèn)到某個(gè)加密字段的時(shí)候,測(cè)試平臺(tái)也會(huì)從加密字典中找到相關(guān)的數(shù)據(jù)加密拷貝,并解密得到數(shù)據(jù)密鑰。當(dāng)在客戶端的測(cè)試平臺(tái)上執(zhí)行涉及到加密字段內(nèi)容的SQL語(yǔ)句時(shí),測(cè)試平臺(tái)會(huì)與加密解密引擎交互,將查詢需求轉(zhuǎn)由加解密引擎去處理。然后,加密解密引擎與加密字典以及DBMS核心交互,完成對(duì)數(shù)據(jù)的加解密,并將正確的結(jié)果返回到客戶端。

當(dāng)在測(cè)試平臺(tái)上提出的數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求不涉及到加密字段時(shí),客戶端測(cè)試平臺(tái)會(huì)跨過(guò)加密解密引擎,直接與DBNIS交互,完成對(duì)普通數(shù)據(jù)的訪問(wèn)。以下對(duì)各個(gè)設(shè)計(jì)模塊分別進(jìn)行描述。

二、加密字典管理

(一)結(jié)構(gòu)設(shè)計(jì)

加密字典管理是管理員定義加密字段的工具,它提供了用戶管理、加密字典配置、信息檢索、加密字典權(quán)限管理等功能,利用數(shù)據(jù)庫(kù)加密解密引擎完成對(duì)數(shù)據(jù)的加解密處理。數(shù)據(jù)庫(kù)加密系統(tǒng)對(duì)加密數(shù)據(jù)的所有操作均需要加密字典的支持,都需要以加密字典為基礎(chǔ)。在加密字段的添加和刪除過(guò)程中,需要調(diào)用加密字典配置、信息檢索以及加解密引擎模塊來(lái)實(shí)現(xiàn)。其流程如圖2.1所示。

電子商務(wù)系統(tǒng)中數(shù)據(jù)庫(kù)加密技術(shù)的應(yīng)用

(二)用戶登錄

用戶登錄是數(shù)據(jù)庫(kù)管理員啟動(dòng)加密字典管理程序質(zhì)必須通過(guò)的身份驗(yàn)證模塊,該模塊防止未授權(quán)人員使用加密字典管理程序,確保加密字典的安全。它主要包括用戶登錄、身份驗(yàn)證、口令加密功能。用戶身份認(rèn)證的流程如圖2.2所示,以提高系統(tǒng)用戶訪問(wèn)的安全性和可靠性。

電子商務(wù)系統(tǒng)中數(shù)據(jù)庫(kù)加密技術(shù)的應(yīng)用

(三)加密字典配置

管理員首先通過(guò)加密字典配置劃分應(yīng)用程序的用戶類(lèi)、數(shù)據(jù)類(lèi)以及每個(gè)用戶類(lèi)所擁有的數(shù)據(jù)類(lèi)的權(quán)限信息,并給合法用戶授權(quán);然后按照配置調(diào)用密鑰管理模塊完成用戶密鑰、用戶類(lèi)密鑰以及數(shù)據(jù)類(lèi)密鑰的生成分配以及存儲(chǔ)。加密信息配置表存放由管理員根據(jù)用戶需求定義的加密配置,實(shí)現(xiàn)向加密字典表中添加,更改或刪除加密字段的功能。它調(diào)用表信息檢索模塊和加密解密引擎,完成一個(gè)表的加密定義修改任務(wù)。該模塊是加密字典管理程序的主要功能模塊。

(四)信息檢索

該模塊從系統(tǒng)的數(shù)據(jù)字典中檢索出與某個(gè)表有關(guān)的各種信息,放入結(jié)構(gòu)變量,這些信息包括表名、表標(biāo)識(shí)、主鍵定義、字段定義等,供其他模塊使用。信息檢索函數(shù)的輸入是字段名稱和表名稱,輸出是滿足條件的表信息結(jié)構(gòu)體,該模塊被加密字典配置模塊調(diào)用,共同完成加密字段定義的變更。

三、數(shù)據(jù)加密解密引擎客戶端測(cè)試平臺(tái)的設(shè)計(jì)

在客戶端設(shè)定一個(gè)測(cè)試程序,來(lái)完成訪問(wèn)加密數(shù)據(jù)庫(kù)中數(shù)據(jù)的功能。在向服務(wù)器端發(fā)送真正的查詢或其它操作的請(qǐng)求之前,客戶端必須先完成用戶登錄等一系列工作。在我們的設(shè)計(jì)中,當(dāng)一個(gè)用戶輸入登錄信息(包括加密數(shù)據(jù)庫(kù)的信息,用戶名,口令)之后,程序會(huì)做以下工作。

(1)輸入的信息去與數(shù)據(jù)庫(kù)建立連接,若建立連接成功,則說(shuō)明用戶的用戶名與口令相符,用戶輸入的口令有效;如果建立連接失敗,則用戶名與口令不相符,終止并退出程序。

(2)輸入的口令進(jìn)行加密,執(zhí)行l(wèi)dD5加密算法,生成口令的MD5加密值。

(3)根據(jù)用戶名生成一個(gè)SQL查詢語(yǔ)句:

“SELECT encrypted_private_key master. dbo. Authorized User FrOm WHERE authorized_login_name=‘"&username&”’ ”

在應(yīng)用程序中執(zhí)行該SQL語(yǔ)句,就可以從加密字典中的Authorized User表取出用戶的密文形式私鑰。當(dāng)數(shù)據(jù)庫(kù)用戶還不是加密數(shù)據(jù)庫(kù)合法用戶時(shí),就不具有公鑰/私鑰對(duì)。此時(shí),客戶端程序會(huì)給出提示。

(4)針對(duì)上一步驟取到密文形式私鑰,執(zhí)行DES算法進(jìn)行解密,解密密鑰是步驟2得到的口令MD5加密值。得到用戶的私鑰,存入應(yīng)用程序的全局變量private_key中。

在客戶端程序中要訪問(wèn)到某個(gè)加密字段時(shí)。首先客戶端程序會(huì)先生成一個(gè)SQL語(yǔ)句,去查詢加密字典中的Encrypted_Table表、Encrypted_Column表、Authorized User表中的Encrypted_Key表。該SQL語(yǔ)句形式為:

“ SELECT k.encrypted_data_key Frommaster. dbo. Encrypted_Table t, llaster. dbo. Encrypted._ Columnc, master. dbo. Encrypted_Key kWHFRE

k. authorized_login_ID=I. authorized_login_ID and

k. encrypted_column_ID=c. encrypted—column ID and

t. encryptcd_table_ID=c* encrypted_table_ID and

t.original_table_name=川&tabkename&"’and

1.authorized_login_name=i一&username&”’

這樣,根據(jù)要查詢的表的表名,以及用戶名,就可以得到該表中針對(duì)加密字段的數(shù)據(jù)密鑰(密文形式)。要申明的一點(diǎn)是,如果數(shù)據(jù)庫(kù)用戶不是加密字段的授權(quán)用戶,則取到的將是空值。

在客戶端程序中執(zhí)行RSA算法,對(duì)取得的密文形式數(shù)據(jù)密鑰進(jìn)行解密,解密密鑰就是存儲(chǔ)在全局變量private_key中的用戶私鑰,得到數(shù)據(jù)密鑰,存入全局變景data_key中。

執(zhí)行用戶的訪問(wèn)要求。當(dāng)涉及到加密字段的訪問(wèn)時(shí),服務(wù)器就會(huì)利用視圖機(jī)制去執(zhí)行查詢操作,或者是執(zhí)行執(zhí)行插入/修改操作。當(dāng)視圖或觸發(fā)器中需要用到數(shù)據(jù)密鑰對(duì)密文數(shù)據(jù)進(jìn)行加密解密的時(shí)候,可以從應(yīng)用程序上下文中取得。

小知識(shí)之電子商務(wù)系統(tǒng)

電子商務(wù)通常是指是在全球各地廣泛的商業(yè)貿(mào)易活動(dòng)中,在因特網(wǎng)開(kāi)放的網(wǎng)絡(luò)環(huán)境下,基于瀏覽器/服務(wù)器應(yīng)用方式,買(mǎi)賣(mài)雙方不謀面地進(jìn)行各種商貿(mào)活動(dòng),實(shí)現(xiàn)消費(fèi)者的網(wǎng)上購(gòu)物、商戶之間的網(wǎng)上交易和在線電子支付以及各種商務(wù)活動(dòng)、交易活動(dòng)、金融活動(dòng)和相關(guān)的綜合服務(wù)活動(dòng)的一種新型的商業(yè)運(yùn)營(yíng)模式。