3

我对 C# 和加密比较陌生,所以请多多包涵。我正在开发一个存储大量数据的业务应用程序(在 C#、.NET 4.0、VS 2010 中),它还必须能够读取大量数据并对其进行过滤以显示它(主要在datagridview,有时只是一些计算......)。无论如何,数据都需要加密,并且必须可以仅加密和解密部分数据文件(以便从随机位置写入和读取)。速度至关重要(用户不应等待数据加载和显示),安全性次之。运行它的计算机将至少是双核 2.0+ Ghz 和至少 2GB RAM。

我考虑过使用一个相对较大(大约 1MB)的 xor pad,它将在运行时计算。我认为二进制与 xor 相结合的自定义文件设计应该提供相对较好的安全性和速度。但是现在我开始考虑使用更强大的东西,如果它仍然足够快,也许是 AES(可能是 .NET 实现:Rijindael 或 Serpent 或 Twofish)。那么你认为最好的是什么?在这种情况下,其他公司/开发商通常会使用什么?AES 有多快/多慢?I/O 操作已经很慢了,我不知道 AES 是否会使事情变得更糟,或者甚至可能不会被注意到。

或者您可能对如何足够快地加密数据有其他想法?

ps 我知道如果有人成功(!)调试或反汇编代码,他可以解密数据。

编辑:我只是为客户开发自定义应用程序,所以我不能强迫他们拥有更好的硬件,我可以推荐更好的硬件。我的软件将主要由 3 个部分组成,POS、服务器和某种管理器。如果您认为我的第一个想法(某种异或)是无用的,并且我应该使用更好的加密,请至少尝试估计哪种硬件(最小)会提供所需的结果(“足够快”=解密不应该对数据显示的影响,例如,如果加载数据并在 datagridview 中显示它需要 1 秒,那么解密应该不超过 1,2-1,3 秒)。

4

4 回答 4

6

安全第二

不要决定速度和安全性。尝试同时拥有它们!

Blowfish 或 Rijndael/AES 等加密算法的性能非常好(请参阅参考资料)。绝对投资更好的硬件!您的服务器设置并不是最先进的。事实上,我的笔记本比你的服务器设置更强大;)

硬件比开发人员小时便宜得多。坚持使用标准且经过广泛认可的加密技术!如果您的硬件是最先进的,并且您在加密/解密期间仍然面临瓶颈,那么是时候绞尽脑汁了。不是以前。

只是我的2美分。

更新

绝对推荐您的客户购买更好的硬件。我无法真正回答“什么硬件就足够了”,因为您没有真正指定哪种速度对于哪种数据加密/解密量是可接受的(这真的很难回答,因为它取决于很多因素)。我建议您(或您的公司)租用硬件以使用标准加密技术进行性能测试。一旦您找到适合他们需要的性能良好的硬件设置,请向您的客户提供这些性能测量。

于 2011-02-20T13:29:23.920 回答
4

首先,您应该调查流行算法给出的开销是否真的会成为问题。.NET 中算法的实现速度很快,您应该期望能够处理 50 - 400 MB/s 的原始数据(自然是一个非常粗略的数字……微笑)。如果您的数据源是 SQL 查询(通常是这样),您通常有一个数据源以低得多的速率提供数据,从而限制了加密/解密的性能影响。

有关性能的详细信息,您必须在应用程序中进行尝试。

我会购买一些更好的硬件,而是专注于密钥管理和其他棘手的问题——否则如果设置太容易破解,加密可能会被完全跳过。

于 2011-02-20T13:18:27.123 回答
2

2.0 GHz Core2 PC 应该能够使用 AES 以超过 120 MB/s(每秒一百二十兆字节)的速率加密或解密数据,使用OpenSSL中的实现,具有单核。这比现代硬盘或千兆以太网链路快。

安全方面,您对可重复使用的“xor pad”的想法纯属垃圾。不要那样做。

于 2011-02-21T13:36:16.517 回答
0

也许这篇文章可以帮助你。

此外,您需要足够快地定义...使其可测量,因为它是一个相对术语。

于 2011-02-20T13:19:38.247 回答