簡介 本文將介紹在Oracle高級安全性選項中所實施的,Oracle所固有的網絡加密和數據整合性保護。它檢驗相關的安全性威脅,解釋加密和整合性檢查處理的細節,并說明所需要的安裝和配置工作。 除本文將介紹的加密和整合性功能之外,Oracle高級安全性還利用加密套接字協議層(SSL)保證網絡安全,并利用為OracleSSLInternet Inter-ORB PRotocol (IIOP)提供保證。這些實施(它們不在本文涉及的范圍之內)可以使用戶在公共的要害性基礎設施(PKI)中運轉。這種選擇余地意味著安全的網絡遵循用于實施SSL的互聯網工程工作小組(IETF)標準。而且,Oracle高級安全性可利用加密和數據整合性檢查來維護瘦java 數據庫連接性(JDBC)客戶端的通訊。本文并不涉及這些特點,它只限于介紹在Oracle高級安全性中檢驗Oracle所固有的網絡加密和整合性檢查的內容。 安全性威脅 在當今互聯網的計算時代,許多有價值的和敏感的數據通常是通過不安全的方式和渠道在傳播。任何時候,當信息不論是互聯網還是在一個組織的內聯網等網絡中傳輸時,它們都是易于受到攻擊的。對數據的非法竊取正以加速的速率展開。一個可以通過以太網插口或一個布線室訪問網絡的個體可以監視和獲得數據。硬件數據嗅探器不再是粗笨和昂貴的了。PC卡插到PC機中可以有效地監視網絡的通信量和信息包的內容。 然而更輕易做到的,因此也是更具威脅的是基于軟件的嗅探器。數據嗅探軟件可以從互聯網上下載,它可以把網絡的通信量和個人信息包的內容暴露給網絡中的任何人。在網絡中任何人都可免費使用的一些軟件中就有網絡嗅探器,它可在幾乎所有的協議中非法獲得通訊信息。網絡中不懷好意的用戶可以將這種軟件下載到他/她的PC中,然后馬上就能把它轉化成信息包的嗅探器。一旦取得這種訪問,攻擊者可以偷竊敏感的歸私人所有的信息,它甚至可以破壞一個企業的運轉。 所有的數據都面臨著被攻擊的風險:所有的信息包都可被讀,修正或刪除。Oracle高級安全性的網絡安全性特性注重了這些方面,并保證在網絡中傳輸的所有數據的隱私性和整合性。Oracle高級安全性通過使用加密和數據整合性檢查,保衛著所有通訊量和信息內容的安全。 第一部分:加密和鑰匙鍵治理 Oracle高級安全性中的加密功能將所有的明碼文本數據轉化為密碼文本。一旦被加密,密碼文本將以密碼的方式在網絡中傳遞,在這種方式中,假如沒有正確的鑰匙鍵就幾乎不可能把密碼文本轉換回相應的純文本。這些加密服務可以防止那些能夠訪問你的網絡的人偷窺你的數據。Oracle高級安全性提供了三種聞名的,經過驗證的計算方法可以加密Oracle的網絡通訊量: *數據加密標準()DES *Triple DES (3DES, 2Key 和3Key) *RC4 ( 40-, 56-, 128-, 256-) 每一種計算方法都答應選擇鑰匙鍵的長度。鑰匙鍵的長度越長,將會產生更強大的加密。Oracle高級安全性提供了56位鑰匙鍵的標準DES和40位鑰匙鍵的DES。它也支持帶有112位鑰匙鍵的2-key Triple DES和168位鑰匙鍵的3-key Triple DES。最后,它提供帶有256-, 128-, 56- 和40-位鑰匙鍵的RSA Dat的。a Security Inc. RC4 美國出口治理條例(EAR)已經做出變更,答應Oracle公司將Oracle高級安全性的一個版本在全球范圍內銷售。該產品的早期版本只提供較短鑰匙鍵長度的版本,而且根據用戶所在國家的不同而不同。目前版本包括了所有計算方法和鑰匙鍵長度,以前該版本只適用于美國本土。而且,現在使用該產品早期版本的用戶可以升級到該產品的國內版。 對Oracle高級安全性的正式評估已經開始實施,著重于它固有的加密實施。它可以在遵守U.S. Federal Information Processing Standard (FIPS) 140-1 Level 2(美國聯邦信息處理標準(FIPS)140-1 第二級)的模式下進行配置。遵守FIPS 140-1標準表示該軟件已經通過了獨立專家的評估,可以保證加密技術運用適當。Level 2是一個軟件產品所能獲得的最高級別。
鑰匙鍵的生成
加密技術是建立在產生加密鑰匙鍵的基礎之上的。“秘密”鑰匙鍵只有發送方和接收方把握。這些“秘密鑰匙鍵”在網絡事物處理的一端對信息加密,而在另一端解密信息。這種加密處理的安全性高度依靠于所生成的秘密鑰匙鍵。 The process of key prodUCtion and data encryption consist of the following steps: 鑰匙鍵的生成過程和數據加密過程由以下步驟組成: 1. 計算方法的交流 2. 在客戶端和服務器端產生充足的隨機數 3. 利用Diffie-Hellman公共鑰匙鍵交換技術生成第一話路鑰匙鍵 4. 利用密碼協議和OracleDiffie-Hellman鑰匙鍵重疊,驗證用戶并生成第二話路鑰匙鍵 5. 全數據流的加密 計算方法的交流 處理的第一階段是客戶端和服務器端計算方法的交流。
隨機數的產生 Oracle高級安全性使用Diffie-Hellman的交換方法產生話路鑰匙鍵。該處理由客戶端和服務器端雙方生成隨機數開始。根據重復的序列,隨機性可有助于免遭攻擊。用戶定義的SQLNET.ORA配置文件參數“sqlnet.crypto_seed=n8xi6svxlsu3bc”就是生成隨機數的種子之一。其他的種子包括系統時間和一個基于操作系統(OSD)的變量。 圖2. 生成隨機數的種子 OSD的值可能基于操作系統中有效的硬件生成器。一旦這些種子有效,隨機數生成器將產生一個最終的隨機數。由于硬件隨機數生成器缺乏統一的標準,包括在內的ORACLE許多加密系統都依靠于PRNG生成加密鑰匙鍵。該過程在相互連接的雙方產生,從而使客戶端和服務器端都可以生成它們自己獨特的隨機數。 生成Diffie-話路鑰匙鍵Hellman 一旦隨機數被生成,Diffie-Hellman計算方法將產生話路鑰匙鍵。該鑰匙鍵將在客戶端和服務器端同時產生,無需通過網絡傳遞。話路鑰匙鍵可利用方程式gc mod p, gs mod p and gsc mod 來p產生,其中 c 客戶端生成的隨機數= s = 服務器端生成的隨機數 g = 已經在服務器端表示的數量級在300-512 位的一個基數 p = 已經在服務器端表示的數量級在300-512 位的一個模數 值s 和c 是通過三個種子,在客戶端和服務器端分別產生的隨機數。值g 和p是已在服務器端存在的值,但可以通過命令naegen進行選擇。 圖3. Diffie-Hellman公共鑰匙鍵交換 鑰匙鍵生成的傳輸順序通過圖3所示客戶端/服務器端方框中的小數字來確定,如下所示: 1. 客戶端根據所支持的計算方法的清單傳輸一個連接請求。 2. 服務器端根據第一符合的計算方法和客戶端的鑰匙鍵大小決定將采用的計算方法。 3. 服務器利用服務器端的隨機數s計算值gs 。mod p 4. 服務器向客戶端傳輸值g,p,gs mod p,即將采用的計算方法,以及初始向量IV。 5. 客戶端利用隨機數c 計算gc ,mod p 該值將被傳遞到服務器。 6. 現在雙方都已經獲得了值g,p,gs mod p,和gc ,mod p因此可以計算mod p。 7. 客戶端和服務器端都對gcs mod p應用一個函數以生成話路鑰匙鍵。該函數根據所選擇的計算方法的不同而不同。選擇Triple DES與選擇RC4將導致不同的計算方法。 8. 話路鑰匙鍵在客戶端和服務器端被建立起來。 鑰匙鍵交換的最終結果是主話路鑰匙鍵。主話路鑰匙鍵可被用于加密所有的網絡通信。但是,該鑰匙鍵輕易受到網絡中人的攻擊,從而威脅到系統的安全性。 網絡中人的攻擊 假如有人正在監聽網絡通訊,他/她不可能捕捉話路鑰匙鍵,因為它不會通過導線來傳送。
但是,在鑰匙鍵交換設計中存在一個缺陷,即易受到“網絡中人”的攻擊的薄弱環節。在網絡中的人唯一可以得到的信息是交換的元素:g,p,gs mod p,和gc mod p。假如擁有Diffie-Hellman計算方法,他/她就能利用這些值去生成兩個鑰匙鍵,一個用于客戶端另一個用于服務器端。盡管這兩個鑰匙鍵可能不同,但第三方仍然可以偽裝成好似客戶端之于服務器端或服務器端之于客戶端。第三方可以侵入通訊中,并愚弄客戶端和服務器端以獲得需要繼續交流的信息。 假如第三方能夠仿效客戶端和客戶端并擁有Diffie-Hellman計算方法,它就能生成兩個鑰匙鍵,一個用于客戶端另一個用于服務器端。盡管這兩個鑰匙鍵不同,第三方仍可愚弄客戶端和