Oracle TDE—Salt和加密数据

Oracle TDE—Salt和加密数据,oracle,encryption,salt,tde,Oracle,Encryption,Salt,Tde,对于Oracle TDE,可以选择将salt添加到纯文本(默认情况下)或忽略salt(使用NO salt)参数 我想知道salt在一个表中每行/记录是唯一的还是在一个表的所有行中都是通用的 有没有办法将加密值视为查询的结果?(打开钱包会给出实际的反加密值,我在没有打开钱包和设置主密钥的情况下尝试查询时出错) 关于你的问题: SALT是在行级别生成的随机值。众所周知,在密码学中,salt是一种加强加密数据安全性的方法,它在加密前向数据中添加一个随机字符串,使攻击者更难窃取。因为它是随机的,所以总是

对于Oracle TDE,可以选择将salt添加到纯文本(默认情况下)或忽略salt(使用NO salt)参数

  • 我想知道salt在一个表中每行/记录是唯一的还是在一个表的所有行中都是通用的
  • 有没有办法将加密值视为查询的结果?(打开钱包会给出实际的反加密值,我在没有打开钱包和设置主密钥的情况下尝试查询时出错)

  • 关于你的问题:

  • SALT是在行级别生成的随机值。众所周知,在密码学中,salt是一种加强加密数据安全性的方法,它在加密前向数据中添加一个随机字符串,使攻击者更难窃取。因为它是随机的,所以总是有非唯一性的可能性,但通常它应该是唯一的。这16个字节被添加到列中,您可以通过块的转储看到这一点。不能在索引列上使用SALT
  • 没有办法做到这一点,这正是TDE的目标。要查询数据,您需要打开钱包。当您的数据库包含使用TDE加密的表和列时,DBA通常会将钱包配置为自动登录,因此您不需要在重新启动后手动执行
  • 如果您想随意查询数据,无论是否加密,也不依赖钱包,您可以在包中使用DBMS_CRYPTO来存储数据,使用函数可以随意加密或解密。最后一点你有一个很好的例子


    谢谢你的回答。让我重新表述第一个问题,表中每一行的SALT是不同的,还是特定表中所有行的SALT都相同?每一行的SALT都不同,因为该值是随机的,并且是在运行时生成的。它专门添加在行的末尾,因此,如果禁用Oracle时知道需要从加密值中删除哪些字符,则需要salt对数据进行反加密,以便Oracle为每行存储salt,对吗?这里的上下文是,我试图看看是否可以为没有TDE atm的数据库实现加密/解密(但在应用程序级别)。我想看看我是否可以使用与Oracle相似的设计,因为它是一个主要的参与者。每个记录的salt是困难的,因为在对数据进行反加密之前,您需要查询salt,但任何标识都需要对记录进行加密。如果您想要实现加密/解密并拥有一些控制权,请使用自己的pl/sql代码,使用dbms_crypto(不含salt,也不使用TDE)