【问题标题】:Handling bad data during decryption (TripleDES, .NET)在解密期间处理不良数据(TripleDES、.NET)
【发布时间】:2012-07-05 14:51:14
【问题描述】:

我为用户编辑文件的系统设置了 enc/dec 进程。如果加密文件被恶意修改,我希望能够处理它并说“哦解密失败,将从一个干净的文件开始”......类似的东西。但我不确定如何以不停止程序执行的方式处理异常。

重申一下,我在解密完全有效的数据方面没有问题。我遇到了带有实际错误数据的错误数据错误,我只是想知道如何优雅地处理它。发生错误时,CryptoStream 无法关闭文件,因此我无法用纯文本文件覆盖它或将其用于任何其他内容。

顺便说一句,这是 LabView 中使用的 .NET 代码。此处无法真正粘贴代码。

【问题讨论】:

  • 你能抓住那个特定的异常并在 catch 块中处理它吗?
  • 在 .NET 中确定。但是 LabView 有点棘手,因为它没有其他语言(我知道,>语言)中典型的错误处理机制。不过我现在正在研究这个。
  • 啊,所以这是一个 LabView 问题...无法帮助您。但是,我知道有人是 LabView 人。我会告诉他你的问题。
  • 谢谢。我想我可能只是尝试阅读labview给我的错误字符串并基本上形成一个“ghetto”catch块(即,如果发生错误并且源说“无效长度”/“错误数据”,放弃一切,否则执行其他一切) .

标签: c# encryption labview tripledes


【解决方案1】:

处理恶意修改的唯一可靠方法是使用包含身份验证的加密方案,例如在某些协议中越来越流行的 AES-GCM。如果只是填充了加密的密文,您可以更改数据,如果运气好(大约 1/256)或尝试几次,数据看起来仍然有效。也不是每个软件都可以安全地填充/取消填充。

您至少必须发布用于任何人的 API,以告诉您如何处理特定异常。

【讨论】:

  • 实际上我确实包括身份验证,有点。在加密时,我对数据计算 SHA512,然后将其与成功解密的数据进行检查。如果它被篡改,我会提醒该程序的用户并让他们选择删除数据,但我仍然先解密它......不确定这是否聪明。由于使用场景,我实际上并不太担心安全性,我只是想阻止典型的员工试图弄乱文件。如果他们真的想要它,他们就会得到它,因为我也必须将密钥存储在程序中......
  • 总比没有好,但我们必须了解整个方案才能知道它是否正确。例如,如果您将其存储在加密区域之外,您将泄露信息,因为您可以根据哈希检查纯文本字符串。有很多方法可以破坏专有方案。与其说是如果坏了,不如说是坏了多少。
  • 哈希与加密数据一起存储在单独的文件中。如果有人想蛮力 Sha-512 做我的客人。
  • 我不必这样做。对于短消息,我会简单地猜测纯文本并根据您的 SHA-512 哈希进行检查。
  • 大声笑......不幸的是,SHA 是不可延展的,所以祝你好运猜测整个文本文件。它大约有 2 KB 大,所以... 2^16000 种不同的猜测?我可以向你保证,这个文件不值得。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
相关资源
最近更新 更多