【发布时间】:2014-08-17 13:03:03
【问题描述】:
注意:虽然我提到的是 H2,但这可能适用于任何 DBMS,
允许您将整个数据库存储在单个文件中; 和
公开其源代码。
我的担忧:
是否可以通过执行以下操作来侵入加密的 H2 数据库?
在某个表中存储一个非常大的清零 BLOB,大小为 100 KB。
检查新的 H2 数据库文件二进制文件并在页面/块边界附近寻找重复模式。页面/块大小可以从 H2 源代码中获得。如此获得的重复模式将是用于加密 H2 数据库的密钥。
一旦密钥暴露出来,黑客只需足够专注,然后进一步挖掘 H2 源并找出其表、列和行的确切结构。换句话说,从此时起,一切都暴露无遗。
我没有亲自研究过 H2 的源代码,也不是密码学专家,但这就是为什么我认为上述方法(或类似上述思路的一些技巧)可能有效:
出于性能原因,所有 DBMS 都以块(大小为 512 字节到 8 KB 的页面或块)读取/写入数据,H2 也是如此。
由于数百 KB 大小的 BLOB 将远远超过 DBMS 的页面/块大小,因此可以预期密码密钥(使用用户密码在内部生成)以小于页面大小的重复模式出现/块大小。
【问题讨论】:
-
任何暴露所描述行为的密码都被设计破坏了。
标签: security encryption h2