應用程式加密

此區段中所描述的功能允許實作將欄位儲存至資料庫時,設定要加密的欄位。此功能與使用者介面遮罩功能互斥。此功能也支援加密儲存在 CLOB 或 XML 資料欄內的特定元素。

下列各點強調加密功能的功能:

  • 加密金鑰是使用金鑰環定義。如需有關定義加密金鑰環的資訊,請參考欄位加密

  • 將欄位設為要加密時,加密資料會儲存於特殊加密欄位,此欄位不是來源欄位 (使用者介面上提供給使用者的欄位)。來源欄位會以遮罩形式擷取資料。因為需要特殊欄位才能支援加密,所以產品必須支援加密該欄位。

  • 對於必須允許搜尋的加密資料,系統支援擷取特殊欄位中的雜湊值。產品必須支援此功能。除了提供特殊欄位來擷取雜湊值之外,該資料的基準搜尋功能還必須滿足此組態。

  • 系統支援加密擷取為 XML 欄位內元素的資料。如果以產品所擁有的結構來提供 XML 欄位,則產品必須提供特定支援來擷取加密資料。

  • 為達到回溯相容性,系統也支援使用金鑰存放區定義的加密金鑰和雜湊金鑰。不建議您繼續使用此方法,但在「安裝指南」中可以找到有關在系統中定義金鑰存放區的進一步資訊。如需有關目前使用金鑰存放區時採用金鑰環功能的資訊,請參考從金鑰存放區移至金鑰環

下列各個區段提供支援架構所提供加密的其他相關資訊。如需詳細資訊,請參考管理指南中針對特定產品的安全性章節。

加密和遮罩資料

當產品為指定欄位啟用加密時,應建立特殊加密欄位以擷取加密值。因為加密為選擇性,所以來源欄位 (提供給使用者的欄位) 不應為此特殊加密欄位。如果已設定加密,則系統會在內部植入加密欄位。依預設,來源欄位將會植入星號。這樣一來,遮罩資料就是頁面上向使用者顯示的資料,而不是加密值。

下列各點強調系統在設定和未設定加密時的行為。例如,假設欄位是信用卡號碼。使用者會檢視並在欄位中植入欄位名稱 CC_NBR。資料表也有第二個欄位 ENCR_CC_NBR。使用者會植入信用卡號碼:

  • 如果未設定加密,將會使用輸入的信用卡號碼來更新 CC_NBR,且 ENCR_CC_NBR 將會是空的。請注意,在此情況下,實作可以選擇設定使用者介面遮罩

  • 如果已設定加密,將會使用 '*******************' 來更新 CC_NBR,且 ENCR_CC_NBR 將會包含加密值。標準欄位的星號將會填入完整欄位大小,上限為 50 個字元。

由於某些原因,如果不想要使用全部是星號的標準遮罩,則系統支援使用與用於使用者介面遮罩相同的「功能組態 - 資料遮罩」外掛點來提供明確遮罩演算法。

警告:與使用者介面遮罩不同,加密欄位的遮罩不是由安全性所驅動。所有加密資料之來源欄位中儲存的資料都應該進行遮罩處理。請確定不要在用於此遮罩類型的演算法中設定安全性授權邏輯。

功能選項組態

建立功能類型為加密的功能組態。對於您正在加密的每個來源欄位,輸入選項類型為欄位加密的選項。值將包含會參考適當加密金鑰環的記憶碼,以及與欄位相關的組態和其資料表位置。與使用者介面資料遮罩不同,資料加密的組態與資料儲存方式相關,而不是顯示方式。此外,每個項目可定義明確遮罩演算法來置換預設值,如果支援的話,還可定義雜湊欄位和雜湊金鑰環。

如需有關定義加密金鑰環的資訊,請參考欄位加密

對於儲存在資料表上特定資料欄中的資料,必須要有可擷取加密值的明確欄位。請指出資料表名稱、來源欄位名稱和加密欄位名稱,以及金鑰環:table='table_​name', field='fld_​name', encryptedField='encr_​fld_​name', keyRing='key ring code'

如果資料位於下階資料表,且只需要加密特定類型的資料時,還可以指定 "where" 子句。

例如,table='CI_​PER_​ID', field='PER_​ID_​NBR', encryptedField='ENCR_​PER_​ID_​NBR', keyRing='CM-SymmetricKey', where='ID_​TYPE_​CD='SSN''

對於儲存在記錄中某個 XML 欄中的資料,要加密的來源欄位必須參考其結構定義中某個中繼資料欄位名稱,以及可擷取加密資料和別名的元素:field='field_​name', encryptedField='encr_​field_​name', keyRing='key ring code'

新增遮罩演算法之參考的語法為 maskAlg='algorithm name'

新增用於擷取雜湊值以進行搜尋之組態的語法為 hashKeyRing='key ring code' hashField='HASH_​FLD_​NAME'

下列組態範例使用所有可能的選項 (特定遮罩演算法、where 子句和雜湊欄位支援):

table='CI_​​PER_​​ID', field='PER_​​ID_​​NBR', keyRing='CM-SymmetricKey', encryptedField='ENCR_​​PER_​​ID_​​NBR', hashKeyRing='CM-HashKey' hashField='HASH_​​PER_​​ID_​​NBR', where='ID_​​TYPE_​​CD=SSN', maskAlg='CM-PERIDMASK'

為達到回溯相容性,產品支援使用金鑰存放區定義加密金鑰。對於繼續使用此組態的實作,您可以參考別名或雜湊別名,而非金鑰環。以下是使用所有可能選項的組態範例,但使用別名而不是金鑰環。

table='CI_​​PER_​​ID', field='PER_​​ID_​​NBR', alias='aliasKey', encryptedField='ENCR_​​PER_​​ID_​​NBR', hashAlias='hashAliasKey' hashField='HASH_​​PER_​​ID_​​NBR', where='ID_​​TYPE_​​CD=SSN', maskAlg='CM-PERIDMASK'

此外,使用別名時可以選擇用特殊標記 (例如 ENC{}) 來「包裝」加密欄位,以表示欄位值已加密。這可透過設定 wrap="true" 或 wrap="false" 來指定。預設為「假」。除非您的程式碼中包含額外的處理來處理特殊標記,否則此項目應設為 false。

如需有關目前使用金鑰存放區時採用金鑰環功能的資訊,請參考從金鑰存放區移至金鑰環

依加密值搜尋

如果產品支援加密欄位的雜湊值來進行搜尋,則下列各點強調針對此用途的資料總管區域組態:

  • 使用者篩選值應該參考來源欄位,且應該包含額外的 encrypt= 記憶碼。例如:

    type=STRING
    label=PER_ID_NBR 
    encrypt=[CI_PER_ID,PER_ID_NBR,ID_TYPE_CD,F1]

    如需詳細資訊,請參考使用者篩選

  • SQL 應該在 WHERE 子句中包含雜湊值。請注意,因為加密為選擇性,所以包含依適用於加密之欄位搜尋的產品區域將會包含尋找來源欄位 (純文字格式) 或雜湊欄位中篩選的相符項。例如:

    WHERE
       [(F2) (ID.PER_ID_NBR =:F2 OR ID.HASH_PER_ID_NBR = :F2)]

自訂加密演算法

此功能僅適用於使用金鑰存放區的實作。不建議您繼續使用此組態。文字會保留在這裡以供參考。

雖然可以從金鑰存放區中的金鑰收集要與所指定金鑰搭配使用的加密演算法,但有時可能需要使用與演算法相關聯的額外資訊來加密或解密資料。

系統使用可用來調整加密行為的演算法資訊選項類型來提供加密功能類型的功能組態選項。

  • 您可以修改加密演算法的預設模式和填補值。

  • 如果將使用金鑰來數位簽署任何項目,則也可以指定金鑰的簽署演算法。

如需語法的相關明細,請參考功能選項類型的詳細描述。