林秀麗
摘 要:應(yīng)用數(shù)據(jù)庫的領(lǐng)域越來越廣泛,數(shù)據(jù)的保密機制不可忽視,數(shù)據(jù)要安全就必須采取相關(guān)措施,通常數(shù)據(jù)加密是數(shù)據(jù)安全的最后一道關(guān)卡。文章主要從教學(xué)的角度闡述數(shù)據(jù)加密原理、數(shù)據(jù)加密解密方法,避免數(shù)據(jù)被泄露、被修改。
關(guān)鍵詞:數(shù)據(jù)庫;加密;解密
數(shù)據(jù)的安全措施在現(xiàn)實應(yīng)用中有很多,如:隔離數(shù)據(jù)庫、角色授權(quán)、審核、密碼等,本文講解SQL Server應(yīng)用中的數(shù)據(jù)加密[1]。
1 數(shù)據(jù)加密原理
數(shù)據(jù)加密是保護數(shù)據(jù)的一種有效機制。目的是將明文即原始數(shù)據(jù)轉(zhuǎn)變成不可直接讀的密文。原理是:明文同密鑰的值捆綁一起經(jīng)過數(shù)學(xué)公式處理完成其數(shù)據(jù)加密,變成密文不可讀。接收方若要想讀取數(shù)據(jù),必須用正確的解密密鑰和反向的數(shù)學(xué)過程完成解密。
加密密鑰的長短決定了加、解密運算的復(fù)雜性,同時也影響計算機處理時間的長短,以及存儲空間與成本。
最主要的加密類型有兩種:(1)對稱加密。特點是使用相同的密鑰進行文件加密和解密,即對稱密碼編碼技術(shù)。加解密過程,通信雙方都用同一密鑰即公共密鑰加解密,如:甲、乙通信,甲將自己明文信息用公鑰加密成密文,乙收到密文后用公鑰解密成明文。常用的加密算法有RC2,3DES,IDEA,AES。密鑰短,破譯難,使用起來便捷。(2)非對稱加密。特點是加解密雙方各自有一個密鑰對,分別稱為私鑰和公鑰。加解密過程,如甲、乙通信,甲將自己的私鑰保密公鑰告訴乙,乙也同樣保密自己的私鑰公鑰告訴甲,甲向乙發(fā)送信息時用乙的公鑰加密,乙收到密文后用自己的私鑰解密變成明文。乙向甲發(fā)送信息采用相同的方法加解密數(shù)據(jù)。常用的加密算法有RSA和DSA。非對稱加密同對稱加密相比,算法強度要復(fù)雜得多,因加密與解密密鑰不同,一致認為非對稱加密比對稱加密更安全,但加密速度要慢很多。所以對大量數(shù)據(jù)進行加、解密時一般使用對稱加密。
SQL Server支持3種類型加密,且已內(nèi)置。對稱加密、非對稱加密以及另一種形式的非對稱加密證書加密。
SQL Server的加密結(jié)構(gòu)是分層進行的,自上而下分別為:WINDOWS級別和SQL Server級別使用服務(wù)主密鑰對下級的數(shù)據(jù)庫進行加密;數(shù)據(jù)庫級別使用數(shù)據(jù)庫主密鑰對數(shù)據(jù)進行加密。進行加密時,都是上級層使用對稱密鑰(見圖1)、非對稱密鑰(見圖2)、證書的組合對下級層加密[2]。
圖2 非對稱加密
2 數(shù)據(jù)加解密方法
數(shù)據(jù)庫的實際應(yīng)用中常有一些敏感數(shù)據(jù),必須要將其加密,避免泄露,如:銀行卡卡號、用戶的各種密碼、職工的工資甚至一些機密文件等。保存加密后的數(shù)據(jù),即使被盜了數(shù)據(jù),對方也無法查看敏感數(shù)據(jù),因沒有解密的密鑰[3-4]。
以下通過一個案例講述數(shù)據(jù)加、解密。本案例的數(shù)據(jù)庫為測試數(shù)據(jù)庫SALES,其中EMPLOYEE職工表中有職工的工資WAGES要保密,通過對稱加密算法對WAGES列數(shù)據(jù)進行加密,步驟如下。
2.1 服務(wù)主密鑰
服務(wù)主密鑰是第一次用它來加密其他密鑰時自動生成,此密鑰是加密保護本地計算機密鑰而被使用的。主服務(wù)密鑰的打開權(quán)限只有創(chuàng)建它的操作系統(tǒng)賬戶或有權(quán)限訪問服務(wù)賬戶的用戶才可以。
2.2 數(shù)據(jù)庫主密鑰的創(chuàng)建
數(shù)據(jù)庫主密鑰用于數(shù)據(jù)庫級別加密。此密鑰不能自動生成,由管理員創(chuàng)建,且主密鑰對每個數(shù)據(jù)庫只建一次。代碼如下:
use SALES
go
create master key
ENCRYPTION BY PASSWORD=' enter @your@ secret @code.';
2.3 證書APCERT的創(chuàng)建
證書的頒發(fā)和簽名由證書機構(gòu)CA完成。證書是驗證身份的一種方式,常含有以下信息:證書序列號,是唯一的;證書主題,即標識符信息;證書有效期;證書發(fā)行者簽名等。
USE SALES ;
go
CREATE CERTIFICATE APCRT
WITH SUBJECT = 'ENTER APCRT PASSWORD!',
EXPIRY_DATE = '2015/1/3';
go
2.4 對稱密鑰PKEY的創(chuàng)建
對稱密鑰是用來加密保密數(shù)據(jù)。使用才創(chuàng)建的證書APCERT,AES 256加密算法對此密鑰進行加密。
use SALES
go
create symmetric key PKEY
with algorithm=aes_256
encryption by certificate APCRT;
2.5 打開對稱密鑰
只有對稱密鑰打開才能綁定到會話進行數(shù)據(jù)加、解密。
use SALES
go
open symmetric key PKEY
decryption by certificate APCRT
2.6 加密成密文
用于數(shù)據(jù)加密的函數(shù)ENCRYPTBYKEY(),用于數(shù)據(jù)解密的函數(shù)DECRYPTBYKEY()。兩函數(shù)使用的都是對稱密鑰。
—用加密的函數(shù)ENCRYPTBYKEY()加密成密文
use SALES
go
create table employee
(Employee_ID char(4)NOT NULL primary key,
password varbinary(500) not null)
go
select * from employeeendprint
go
insert into employee values ('E1',ENCRYPTBYKEY(KEY_GUID ('PKEY'),'p@ssword1'))
insert into employee values ('E2',ENCRYPTBYKEY(KEY_GUID ('PKEY'),'pp'))
insert into employee values ('E3',ENCRYPTBYKEY(KEY_GUID ('PKEY'),'aaa'))
go
select * from employee
go
—用解密的函數(shù)DECRYPTBYKEY()解密出明文
SELECT Employee_ID ,password from employee
select Employee_ID ,CONVERT (varchar(50),decryptbykey(password)) from employee
go
2.7 關(guān)閉對稱密鑰
注意:加密的函數(shù)ENCRYPTBYKEY()同解密的函數(shù)DECRYPTBYKEY()只有在密鑰打開的情況下才有效。
CLOSE SYMMETRIC KEY PKEY;
GO
3 結(jié)語
網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)庫技術(shù)都在不斷發(fā)展,數(shù)據(jù)庫安全是一個永久性問題,入侵技術(shù)不斷提高,數(shù)據(jù)庫安全技術(shù)的提升勢在必行。針對數(shù)據(jù)庫安全技術(shù)的新問題、新情況,加強研究數(shù)據(jù)庫安全必須首先從一線的課堂教學(xué)深入加強,在思想上對安全技術(shù)重視起來,讓安全技術(shù)穩(wěn)步發(fā)展。
[參考文獻]
[1]王永樂,徐書欣.SQL Server2008數(shù)據(jù)庫管理及應(yīng)用[M].北京:清華大學(xué)出版社,2011.
[2]李愛武.SQL Server2008數(shù)據(jù)庫技術(shù)內(nèi)幕[M].北京:中國鐵道出版社,2012.
[3]俞榕剛.SQL Server 2012實施與管理實戰(zhàn)指南[M].北京:電子工業(yè)出版社,2013.
[4]徐慧.數(shù)據(jù)庫技術(shù)與應(yīng)用[M].北京:北京理工大學(xué)出版社,2010.endprint