2011-10-11 99 views
5

我需要Oracle /安全專家的幫助。什麼是在Oracle中進行加密的推薦方式?

我打算在Oracle數據庫中進行加密/解密的功能。我打算使用dbms_cryptoAES256。我知道我應該將密鑰文件存儲在O/S中,並使用utl_file來讀取它。

這是個好主意嗎?這種方法有什麼問題嗎?例如。如果密鑰文件由函數的10個調用者併發讀取,utl_file是否會有問題?還有其他建議嗎?

我相信這是一件很平常的事情。有誰知道我在哪裏可以找到一個很好的樣本,這樣做?

由於這是與安全相關的,我寧願遵循其他人遵循的一些標準。

回答

3

如果您在Oracle數據庫企業版具有Oracle高級安全性,已經存儲在database.Take看看數據的透明數據加密(TDE):

http://download.oracle.com/docs/cd/B19306_01/network.102/b14268/asotrans.htm

您可以檢查出同時此鏈接:

http://www.oracle-base.com/articles/10g/TransparentDataEncryption_10gR2.php

總結的最後一頁:

  • 安裝程序:創建數據庫文件和用戶。

    CONN SYS /密碼AS SYSDBA

    CREATE TABLESPACE tde_test DATAFILE '/u01/oradata/DB10G/tde_test.dbf' SIZE 128K AUTOEXTEND ON NEXT 64K;

    CREATE USER test IDENTIFIED BY test DEFAULT TABLESPACE tde_test; ALTER USER測試QUOTA UNLIMITED ON tde_test; GRANT CONNECT TO測試; GRANT CREATE TABLE TO測試;

  • 加密數據:如何創建加密列。您必須創建一個錢包來保存加密密鑰。將以下條目添加到服務器上的sqlnet.ora文件中,並確保已創建指定的目錄。

    ENCRYPTION_WALLET_LOCATION = (SOURCE =(METHOD = FILE)(METHOD_DATA = (DIRECTORY =/U01 /應用/ ORACLE /管理/ DB10G/encryption_wallet /)))

您必須創建和opne錢包:

CONN sys/password AS SYSDBA 
ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "myPassword"; 

然後你就可以創建表與所需的列進行加密或不:

CREATE TABLE tde_test (
    id NUMBER(10), 
    data VARCHAR2(50) ENCRYPT 
) 
TABLESPACE tde_test; 

我希望這對你有所幫助。

+0

+1謝謝。這是有用的信息,但是,我需要的是一對加密/解密功能。我必須能夠實時加密/解密。數據不一定駐留在表格中。 – Zesty

+1

不客氣;)... mmm,以及DBMS_OBFUSCATION_TOOLKIT如何?它包含使用數據加密標準(DES)或三重DES算法加密/解密數據的功能。 – Aitor

+0

據我所知,推薦使用DBMS_CRYPTO。 DBMS_OBFUSCATION_TOOLKIT適用於較舊的DB。此外,我需要通過將其存儲在O/S中來保護密鑰。 – Zesty

1

由於您必須能夠實時進行加密/解密,請參閱我的解答crypt和decrypt函數here

只有一個選擇,我確信其他人有類似功能的鏈接,但這對我有效。

+0

從我的理解,建議DBMS_CRYPTO。 DBMS_OBFUSCATION_TOOLKIT適用於較舊的DB。此外,我需要通過將其存儲在O/S中來保護密鑰。 – Zesty

+0

@Zesty,是的,dbms_crypto是較新的軟件包,所以你也應該考慮一下。您可以選擇任何方法來存儲/保護您選擇的密鑰,但我通常只將加密值存儲在數據庫中。 – tbone

相關問題