C# 将一个加密流封装在其他几个加密流中是否会提高安全性?

C# 将一个加密流封装在其他几个加密流中是否会提高安全性?,c#,windows-phone-7,cryptography,C#,Windows Phone 7,Cryptography,我正在为WindowsPhone7做一个项目,它存储高度安全的信息。此数据受密码保护。如果我在3个其他加密流中加密一个加密流(总共4个相互嵌入的加密流,每个加密流使用不同的方法生成密钥、初始化向量和salt)。这种方法是否足够安全,或者我是否需要更多加密流(每个加密流使用256位AES加密)?单个AES-256加密应该足够强大。4听起来有点偏执。有人对密码进行暴力破解或社会工程的可能性远远大于破解单个加密流的可能性,因为密码的比特空间通常比密钥小。多次加密密码所需的时间或精力增加了O(n)(您确

我正在为WindowsPhone7做一个项目,它存储高度安全的信息。此数据受密码保护。如果我在3个其他加密流中加密一个加密流(总共4个相互嵌入的加密流,每个加密流使用不同的方法生成密钥、初始化向量和salt)。这种方法是否足够安全,或者我是否需要更多加密流(每个加密流使用256位AES加密)?

单个AES-256加密应该足够强大。4听起来有点偏执。

有人对密码进行暴力破解或社会工程的可能性远远大于破解单个加密流的可能性,因为密码的比特空间通常比密钥小。多次加密密码所需的时间或精力增加了O(n)(您确实希望复杂性增加O(n^2)或更多)

但如果你需要超级安全的加密,不要采用你自己的策略,选择一个国防部标准(或同等标准)并实施它


为了进一步解释,AES是一种具有三种不同密钥长度的分组密码。策略的第一部分是确定要使用的密钥长度。你可以随机选择一个,或者选择最大的,但是你真的想根据你的情况选择最好的。接下来是AES的实际使用情况。由于它是一种分组密码,它会将相同的明文编码为相同的密文,因此您需要使用初始化向量和salt以及其他类似的技术来确保明文变成不同的密文

然后是如何从密码派生密钥,这可能很弱。如果每次都生成关键点,则可能意外地缩小了关键点空间并削弱了它。您还必须考虑使用的随机数生成器,因为它可能会生成可预测的值。如果您使用密码以某种方式解锁密钥存储,则您的数据仅与密钥存储一样受到保护。如果您仅在成功接收密码后才远程获取密钥,则可以防止对数据的离线攻击,并可以主动检测暴力攻击

最后是密码本身,这是迄今为止加密策略中最薄弱的一点。如果用户选择了弱密码,那么使用多少密码无关紧要。这就是为什么即使您仅使用单个128位AES加密对数据进行加密,攻击者也更有可能尝试泄露密码,而不是尝试破坏加密

选择一套经过测试的策略将比制定自己的策略更好,除非您计划在渗透测试和安全审计上花费必要的资金



为了好玩,请仔细阅读如何做

得到他的锡纸帽子一个人永远不会有足够的安全!锡箔是否会阻止思维探测器?您是否确保数据在内存中时保持保护?首先,您如何在手机上获取数据,以及如何访问数据?获取/猜测密码有多容易(你是让他们只选择任何旧密码,还是你对内容和长度有严格要求?)?您应该关注数据的整个生命周期和使用情况,而不仅仅是在生命周期的某个阶段数据的安全程度。此外,我还没有听说有人在同一数据的单一表单/存储上使用如此多级别的加密;它最终必须被解密才能显示在屏幕上,这样用户才能读取信息。在此阶段,任何系统上的信息都可能容易受到攻击,因为它最终必须以未加密的形式存储(在RAM中,以及在显示器上/通过耳机播放)。如果他们忘记密码、输入紧急“重置代码”或输入无效密码3次,则数据将从设备中删除。添加加密层不一定能提高安全性。如果你知道你在做什么,你可以。但是,如果你知道你在做什么,你就不会麻烦了。是的,但是你如何使用AES与国防部如何使用AES是不同的。如果你用AES加密某个东西,然后将密钥发布到维基百科上,你使用的是国防部级加密,但加密策略不符合标准。如果加密某个东西的所有方法都是“标准”的,那么,这难道不会使密钥更容易破解吗?请记住,国防部在其计算机上使用的特定安全协议可能不适用于Windows Phone 7,因为它仅依赖托管代码,而且并非所有的“标准”加密库都会在其上运行。您正在为不安全的设备编写代码。您的攻击者可能会对您的应用程序进行反向工程,并准确地找出您用来加密数据的方法——它们不是秘密。也就是说,随机决定四种加密数据的方法并不能保证安全性;选择一个经过审核的策略???美国国家安全局的数学天才们确保最大限度地防止攻击是你的最佳选择。它不仅仅是用于包括密钥派生、密钥管理和其他内容的算法。我可能会实现一些东西(正如您所提到的,随机数生成器可能不安全)通过安全的web服务实现纯随机数生成器,该服务通过无线信号生成随机数,使用RSA+AES对其进行加密,然后将其传输到设备。我还将(为了防止弱密码)按照Windows Server 2008 R2的要求强制执行标准密码强度,然后使用与TrueCrypt类似的隐藏卷,在输入某个其他密码时提供虚假数据,然后从设备中清除真正的加密数据。