是否无法保护此系统

时间:2016-02-25 18:49:44

标签: security encryption cryptography

我在课程作业规范中遇到了一个看似不可能完成的任务,整个班级都在苦苦思索,我会尽量简明扼要地总结:

  1. 一个文件有一个“读”和“写”密码,密码不一样。
  2. 如果用户知道文件名的“写入”密码,则可以编写或创建文件。
  3. 同样,如果用户知道“读取”密码,则可以阅读该文件的内容。
  4. 整个程序的源代码可供系统的任何攻击者使用,因为该程序通过USB传递给用户。
  5. 似乎无法创建密钥库,因为无法输入主密码来存储每个文件的密钥。
  6. 明文中不得出现任何密钥/密码。
  7. 命令的形式为java -e文件pass1和java -d文件pass2,分别用于写入和读取,无法传入两个密码。
  8. 到目前为止我的想法:

    1. 我在源代码中存储了哈希和盐渍的密码,这是非常安全的(据规范而言)
    2. 我不能使用AES(或任何对称)密钥,因为它对于读写来说是相同的。因此,如果只有一个天真的密钥用于读/写,“读取”用户可以轻松获取他们的AES密钥,因此他们可以欺骗进行写操作。
    3. 我无法保留文件的副本并使用两个AES密钥加密,因为这会使文件不同步。所以说用户1写入文件1,如何只使用一个加密文件的读取副本read key跟踪更改,而不是解密写入部分。
    4. 生成公钥/私钥对使我无法存储它们,因为我需要使用主密码加密密钥库 - 规范禁止使用任何命令,而是使用他们规定的命令。
    5. 我的问题是......这不可能吗?还是有办法。我和整个班级都被困了一个星期。我的教授声称有一个解决方案。

1 个答案:

答案 0 :(得分:0)

这是该模块的一名示威者所暗示的解决方案。

我们可以使用散列密码和盐渍密码来保护随机生成的两个AES密钥实例。

...我甚至不会评论这是多么不安全,任何使用该系统的攻击者都可以使用哈希和盐,他们可以制作他们自己的程序实例,但不检查密码哈希,但在任何情况下,它们都可以随时进行RAM检查,因为它是基于USB的。