使用已加密 IBM Security
Directory Integrator 配置檔
簡介
若要為資料提供機密性,IBM® Security
Directory Integrator 可以加密配置檔、內容檔中的內容值、伺服器使用者登錄檔及 JavaScript 檔。
IBM Security
Directory Integrator 加密涉及加密轉換,其會使用金鑰或金鑰組。金鑰/金鑰組需要在金鑰儲存庫檔中進行管理。
加密轉換可以是公開金鑰加密或秘密金鑰加密。依預設,IBM Security
Directory Integrator 使用公開金鑰加密(秘密金鑰加密選項在 IBM Security
Directory Integrator 7.0 中引進。
在此之前,只支援公開金鑰加密)。
請參閱:
公開金鑰加密使用由公開金鑰及私密金鑰組成的金鑰組。公開金鑰用於加密,而私密金鑰用於解密。目前只有 RSA 密碼支援進行公開金鑰加密。可以使用標準 JRE 公用程式 keytool 及 Ikeyman 來產生及管理公開/私密金鑰組。如需使用關聯公開和私密金鑰管理憑證的相關資訊,請參閱管理金鑰、憑證及金鑰儲存庫。
IBM Security
Directory Integrator 資料加密是由下列系統內容配置的(這些內容可以在 global.properties 或 solution.properties 中設定):
- com.ibm.di.server.encryption.keystore包含用於加密之金鑰/金鑰組的金鑰儲存庫檔
- com.ibm.di.server.encryption.keystoretype:金鑰儲存庫檔的類型
- com.ibm.di.server.encryption.key.alias:金鑰儲存庫中金鑰/金鑰組的別名
- com.ibm.di.server.encryption.transformation:加密轉換的名稱;請參閱下方的附註
金鑰儲存庫的密碼及金鑰/金鑰組自己的密碼(如果與金鑰儲存庫密碼不同)都是在「伺服器」的隱藏檔中指定的(金鑰儲存庫的存取是由密碼保護的,會在建立金鑰儲存庫時進行定義,定義者為建立金鑰儲存庫的人員,且僅當提供現行密碼時才可變更。此外,金鑰儲存庫中的私密金鑰可以由自己的密碼進行保護)。
轉換的名稱可以是 RSA 或部分秘密金鑰轉換(例如,AES/CBC/PKCS5Padding)。轉換名稱中內容的詳細討論位於 http://www.ibm.com/developerworks/java/jdk/security/60/secguides/JceDocs/api_users_guide.html#trans;「Java™ 安全性」的一般資訊(IBM Security
Directory Integrator 所使用的內容)位於 http://www-128.ibm.com/developerworks/java/jdk/security/60/secguides/jsse2Docs/JSSE2RefGuide.html。
註:
- "com.ibm.di.server.encryption.*" 內容不只影響配置的加密,也影響內容檔、JavaScript 檔及「伺服器 API 使用者登錄」的加密。
- 如果您變更加密金鑰及(或)加密轉換,「伺服器」無法解密之前已加密的檔案。若要解決此問題,請使用舊金鑰解密舊檔案(您必須具有可用的舊金鑰才能這樣做),並使用新金鑰進行加密。檔案的加密及解密可以使用 cryptoutils 工具來完成。
- 標準 RSA 演算法具有其所能使用資料長度的限制。IBM Security
Directory Integrator 使用自訂方法,其會將輸入資料分割為足夠小的大小相等區塊,並分別加密每一個區塊。
- 在不同的加密執行時,使用 RSA 加密的資料會導致不同的密碼文字。此效果是 PKCS#1 填補綱目與 RSA 搭配使用的特性。
- 秘密金鑰(對稱的)密碼可以是區塊密碼或串流密碼。串流密碼一次加密一個訊息位元,而區塊密碼會使用許多位元,並將它們作為單一單位進行加密。區塊密碼(例如,AES)使用回饋模式(因此純文字的型樣不會保留為密文),以及填補綱目(允許加密資料,其長度不是密碼區塊大小的倍數)。串流密碼(例如,RC4)不使用回饋模式及填補綱目。
- 如果轉換涉及區塊密碼,則必須使用部分填補綱目(例如,"PKCS5Padding"),否則「伺服器」無法加密其長度不是密碼區塊大小倍數的資料。(串流密碼不使用填補,因此它們不會受到此限制的影響)。
- 金鑰/金鑰組的演算法必須符合所指定轉換中的演算法。例如,如果轉換是 RSA,則必須提供 RSA 金鑰組;如果轉換是 DES/ECB/PKCS5Padding,則您必須提供 DES 金鑰。您可以使用 keytool 公用程式產生新的秘密金鑰,請參閱 管理金鑰、憑證及金鑰儲存庫。
- JKS 金鑰儲存庫不支援秘密金鑰,因此如果您想要使用秘密金鑰加密,則應使用部分其他金鑰儲存庫類型,例如 JCEKS。
- 使用回饋模式中的區塊密碼時,其需要起始設定向量 (IV),已加密資料會具有起始設定向量的字首,並作為純文字。IV 無需保持秘密,但必須無法預期。這是為何針對正在加密的資料產生隨機 IV 的原因。產生隨機資料有時可能根據資源而定,因此如果效能是個問題,則可能要考量非 IV 回饋模式 (ECB)。
- 加密所支援的秘密金鑰轉換,視 Java 安全性提供者的功能而定。依預設,IBM Security
Directory Integrator 使用 IBMJCE 提供者。受支援的區塊密碼為:DES、AES、DESede (Triple DES)、Blowfish 及 RC2。它們可用於任何下列回饋模式 - ECB、CBC、CFB、OFB、PCBC。唯一可用的填補綱目為 "PKCS5Padding"。MARS 區塊密碼不應用於加密,因為它不支援填補 (http://www-128.ibm.com/developerworks/java/jdk/security/50/secguides/JceDocs/api/com/ibm/crypto/provider/Mars.html)。受支援的串流密碼是 RC4 及 ARCFOUR(基本為兩個不同名稱下的相同密碼)。SEAL 串流密碼需要大型金鑰(160 位元),因此在 IBM Security
Directory Integrator JRE 上配置未限定 IBM SDK 原則之後,才能使用該密碼 (http://www.ibm.com/developerworks/java/jdk/security/60/#sdkpol)。
分隔 PKI 加密及 SSL 的憑證
從頭建立已加密 IBM Security
Directory Integrator 配置檔
這是如何從頭建立已加密 IBM Security
Directory Integrator 配置檔。
使用 cryptoutil 指令行工具
- 使用「配置編輯器」建立一般的未加密 IBM Security
Directory Integrator 配置檔。
- 使用 cryptoutils 指令行工具來加密此配置檔,如 "IBM Security
Directory Integrator 加密公用程式" 一節中所述。
- 若要執行這個已加密配置檔,您必須在安全模式(如「伺服器安全模式」一節所述)中啟動 IBM Security
Directory Integrator 伺服器。
- 若要編輯這個已加密配置檔,您可以使用 "編輯已加密的 IBM Security
Directory Integrator 配置檔" 一節中所述兩個選項的其中一個。
編輯已加密的 IBM Security
Directory Integrator 配置檔
您可以首先使用 cryptoutils 指令行工具解密已加密的配置檔,如 "IBM Security
Directory Integrator 加密公用程式" 一節中所述。然後,您可以使用「配置編輯器」編輯解密的配置,最後再使用 cryptoutils 工具加密配置檔。