Oracle DBMS_随机被认为是危险的?

Oracle DBMS_随机被认为是危险的?,oracle,security,Oracle,Security,我们的数据库团队希望从公共数据库中随机撤销对DBMS_的执行,以解决安全问题。如果你使用谷歌,一些安全专家认为这个包是危险的,但不能说明原因。Ingram和Shaul的书“实用的Oracle安全性”指出 …在 函数用于加密密钥生成,可能导致 加密数据泄露 甲骨文文档说 DBMS_RANDOM不用于加密 。。。而且 DBMS_CRYPTO.RANDOMBYTES。。。返回一个原始值,该值包含 加密安全的伪随机字节序列,可以 用于生成加密密钥的随机材料 因此,DMBS_RANDOM似乎可以生成伪随机

我们的数据库团队希望从公共数据库中随机撤销对DBMS_的执行,以解决安全问题。如果你使用谷歌,一些安全专家认为这个包是危险的,但不能说明原因。Ingram和Shaul的书“实用的Oracle安全性”指出

…在 函数用于加密密钥生成,可能导致 加密数据泄露

甲骨文文档说

DBMS_RANDOM不用于加密

。。。而且

DBMS_CRYPTO.RANDOMBYTES。。。返回一个原始值,该值包含 加密安全的伪随机字节序列,可以 用于生成加密密钥的随机材料

因此,DMBS_RANDOM似乎可以生成伪随机数(只要您不使用它来伪造密码)。究竟为什么这对公众来说太危险了

编辑: 刚找到一个新的,声称

DBMS_RANDOM:允许在不需要安全管理加密密钥的情况下加密数据


这也是无稽之谈,不是吗?

当使用DBMS_RANDOM生成加密密钥时,DBMS_RANDOM不应授予PUBLIC的原因是攻击者可以使用它来确定密钥生成中的种子值和/或模式,这些种子值和/或模式可用于确定加密数据的密钥。这就是它可能导致加密数据泄露的原因。这当然不是一个容易的攻击,但对于具有足够处理能力的人来说是可能的


DBMS_RANDOM不应用于加密,因为它太可预测。对于加密密钥生成,只应使用安全的随机函数。这些函数试图通过测量白噪声之类的东西并从中产生值来获得尽可能随机的结果。

对我来说似乎有点落后。如果他们使用dbms_random作为加密密钥,那么他们应该解决这个问题,而不是撤销对dbms_random的授权。除了“安全问题”之外,他们还有其他原因吗?没有。我找到了另一个来源:“…列出了默认情况下分配给公共角色的最危险的包…”DBMS_RANDOM:此包可用于加密存储的数据。一般来说,大多数用户不应该拥有加密数据的特权,因为如果密钥没有安全地生成、存储和管理,加密数据可能是不可恢复的。这没有意义,不是吗?很有趣。所以DBMS_RANDOM只是一个安全风险,如果我们将其用于加密(忽略针对它的建议)?否则,我想它是完全安全的。@JeffreyKemp是的,你是对的。许多人忽视(或不知道)反对将其用于加密的建议,因此这可能是一个问题them@Freedom_Ben但为什么攻击者需要在DBMS_PUBLIC上执行?文档中描述了种子:>默认情况下,使用当前用户名、当前时间到秒以及当前会话初始化包@wolφi这一点的关键是“默认情况下”。种子可以更改,因此它不一定是“当前用户名、当前到秒的时间以及当前会话”。而且攻击者可能不知道这些项目的所有值。但是,是的,这是一个糟糕的安全种子。这就是为什么医生们说不要将其用于加密。有趣的是,一些超级黑客在拉斯维加斯的视频扑克游戏中使用了同样的攻击方式。他们买了一台机器,通过它无数次地注入价值,直到找到种子。种子被机器用来生成玩家的卡片。通过这样做,他们可以预测什么样的牌会提前到来,所以他们知道什么时候折叠,什么时候放大。因为所有的机器都使用同一种种子,所以他们知道每台机器下一步会发生什么。很酷的故事:-)