gpt4 book ai didi

security - H2 的安全问题

转载 作者:行者123 更新时间:2023-12-02 21:33:06 24 4
gpt4 key购买 nike

注意:虽然我提到的是 H2,但这可能适用于任何 DBMS,

  1. 允许您将整个数据库存储在单个文件中;

  2. 这使其源代码公开可用。

我的担忧:

是否可以通过执行以下操作来闯入加密的 H2 数据库?

  1. 在某个表中存储一个非常大的、已清零的 BLOB(大小为几百 KB)。

  2. 检查新的 H2 数据库文件二进制文件并在页面/ block 边界附近查找重复模式。页/ block 大小可以从H2源代码中获取。如此获得的重复模式将是用于加密 H2 数据库的 key 。

  3. 一旦 key 暴露,黑客只需要足够的专注,就可以进一步挖掘 H2 源并找出其表、列和行的确切结构。换句话说,从此时起,一切都暴露了。

我没有亲自研究过 H2 的源代码,也不是密码学专家,但这就是为什么我认为上述方法(或者沿着上述思路进行的一些黑客攻击)可能有效的原因:

  1. 出于性能原因,所有 DBMS 都以 block (大小为 512 字节到 8 KB 的页或 block )的形式读取/写入数据,H2 也是如此。

  2. 由于大小为数百 KB 的 BLOB 将远远超过 DBMS 的页面/ block 大小,因此可以预期加密 key (使用用户密码在内部生成)会以小于页面大小的重复模式出现/ block 大小。

最佳答案

好的加密算法不会受到这种攻击。

明文中的模式(这里是零的 BLOB)将在密文中消失。 secret key 在密文中不会以模式或其他方式容易地可见。使用分组密码时实现这一点的经典技术是使 block 的加密依赖于前一个 block 的密文。这里我指的 block 是密码算法中使用的 block ,通常长度为128位。

例如,您可以将明文 block 与前一个 block 加密的结果进行异或,这是来自维基百科的 CBC 模式的架构,它将当前 block 与加密之前的前一个 block 的结果进行异或。

CBC mode

正如您所看到的,即使您在每个明文 block 中输入所有零,您最终也会得到一个完全随机的结果。

这些只是示例,H2 中使用的实际混淆机制可能更复杂或涉及更多,具体取决于它们使用的算法。

关于security - H2 的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com