什么是在Oracle中进行加密的推荐方式?

问题描述:

我需要Oracle /安全专家的帮助。什么是在Oracle中进行加密的推荐方式?

我打算在Oracle数据库中进行加密/解密的功能。我打算使用dbms_cryptoAES256。我知道我应该将密钥文件存储在O/S中,并使用utl_file来读取它。

这是个好主意吗?这种方法有什么问题吗?例如。如果密钥文件由函数的10个调用者并发读取,utl_file是否会有问题?还有其他建议吗?

我相信这是一件很平常的事情。有谁知道我在哪里可以找到一个很好的样本,这样做?

由于这是与安全相关的,我宁愿遵循其他人遵循的一些标准。

如果您在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

由于您必须能够实时进行加密/解密,请参阅我的解答crypt和decrypt函数here

只有一个选择,我确信其他人有类似功能的链接,但这对我有效。

+0

从我的理解,建议DBMS_CRYPTO。 DBMS_OBFUSCATION_TOOLKIT适用于较旧的DB。此外,我需要通过将其存储在O/S中来保护密钥。 – Zesty

+0

@Zesty,是的,dbms_crypto是较新的软件包,所以你也应该考虑一下。您可以选择任何方法来存储/保护您选择的密钥,但我通常只将加密值存储在数据库中。 – tbone