我可以增量加密文件吗?

信息安全 加密 AES
2021-08-28 14:42:33

有没有办法增量加密文件?问题是我通过 Internet 一次收到一个文件块(它是一个客户端-服务器应用程序,我通过 WCF 服务发送字节数组)并且我不知道下一个块何时到达(如果有的话)它的大小是多少。我所知道的只是我无法将它存储到 RAM 中,我需要立即对其进行加密并将其附加到之前的块中。

约束:

  • 我不能强加一个块大小;
  • 我想(如果可能的话)解密文件,就像它被加密为单个文件一样;
  • 如果不对它们进行加密,我就无法存储这些块;
  • 我无法存储各种块大小,也无法将块存储到不同的文件中;
  • 我正在使用 AES 算法;
  • 我不能换工作。

有什么想法或建议吗?

1个回答

是的。大多数对称密钥加密算法都支持流模式,您可以在消息到达时对其进行增量加密。这包括 CTR 模式、CBC 模式和大多数其他模式。

类似地,大多数消息认证代码 (MAC) 在生成 MAC 时支持流式操作模式。另一方面,在验证 MAC 时,虽然您可以流式处理数据,但在处理完所有数据之前,您无法检查 MAC 是否有效,因此您无法对任何块的内容进行操作,直到您'已经全部收到并验证了整个文件上的 MAC 是有效的。

在您的情况下,还有另一种可能更简单的解决方案:一旦数据块到达,就对其进行加密,并存储所有加密的块。当你想解密时,解密每个块,然后连接结果。如果您遵循这种方法,请确保在每个块中包含序列号和文件名,以便它们无法重新排序。此外,请确保使用经过身份验证的加密(一如既往)。这种方法可能更简单,因此可能更适合您的需求。