【问题标题】:AES Encryption and key storage?AES加密和密钥存储?
【发布时间】:2011-01-03 11:13:35
【问题描述】:

几年前,当我第一次接触到 ASP.net 和 .NET Framework 时,我构建了一个非常简单的在线文件存储系统。 该系统使用 Rijndael 加密将加密的文件存储在服务器的硬盘上,并使用 HttpHandler 将这些文件解密并发送给客户端。

作为我第一个使用 ASP.net 和数据库的项目之一,对整个事情的工作原理不太了解(以及落入same trap described by Jeff Atwood on this subject),我决定将新生成的密钥和 IV 与每个文件一起存储进入数据库。

为了让事情更清楚一点,加密只是为了保护文件不被直接访问服务器,并且密钥不是由用户输入的密码生成的。

我的问题是,假设我不想为所有文件保留一个密钥,我应该如何存储加密密钥以获得最佳安全性?什么被认为是最佳实践? (即:在不同的服务器上,在纯文本文件上,加密)。

另外,这种加密算法中使用的初始化向量是什么?它应该在系统中保持不变吗?

【问题讨论】:

    标签: asp.net encryption


    【解决方案1】:

    密钥应该受到保护和保密,就这么简单。实施不是。值得信赖的供应商以大笔的价格出售密钥管理系统,因为解决问题困难

    您当然不想为每个用户使用相同的密钥,使用的密钥越多“越容易”破解它,或者至少有一些信息泄漏。 AES 是一种分组密码,它将数据拆分为多个块,并将最后一个块加密的结果提供给下一个块。初始化向量是算法的初始输入,因为在起始点没有什么可开始的。使用具有相同密钥的随机 IV 可以降低信息泄露的风险——加密的每条数据都应该不同。

    如何存储密钥取决于系统的架构方式。我刚刚完成了一个 KMS,其中密钥远离主系统,加密和解密功能通过 WCF 公开。您以纯文本形式发送并获得对密钥的引用和返回的密文——这样 KMS 负责系统中的所有密码学。在您的情况下,这可能是矫枉过正。如果用户在您的系统中输入密码,那么您可以使用它来生成密钥对。然后,这个密钥对可用于加密该用户的密钥存储 - XML、SQL 等,并用于解密用于保护数据的每个密钥。

    如果不了解您的系统是如何配置的,或者它的用途,除了“必须保护密钥,不得重复使用密钥和 IV”之外,很难推荐任何其他内容。

    【讨论】:

    • 次要观察:“AES 是一种分组密码,它将数据分成多个块,并将最后一个块加密的结果提供给下一个块。”您正在描述 CBC a 安全使用 AES 的方法。还有其他安全解决方案——并非都需要初始化向量。
    【解决方案2】:

    http://web.archive.org/web/20121017062956/http://www.di-mgt.com.au/cryptoCreditcard.html 上有一篇非常好的文章,涵盖了 IV 和盐渍问题以及上面提到的 ECB 问题。

    诚然,它仍然没有完全涵盖“我在哪里存储密钥”,但是在阅读和消化它之后,希望它不会是解决方案的巨大飞跃......

    【讨论】:

    【解决方案3】:

    作为一个很好的解决方案,您可以将您的密钥/IV 对存储在一个表中:

    ID                    Key           IV
    skjsh-38798-1298-hjj  FHDJK398720== HFkjdf87923==
    

    当您保存加密值时,请同时保存 ID 和随机 Salt 值。

    然后,当您需要解密该值时,使用与数据一起存储的 id 和 salt 来查找 key/iv 对。

    您需要确保围绕密钥存储有一个良好的安全模型。如果您使用 SQL Server,请不要将 SELECT 权限授予从应用程序访问数据库的用户。您不会想授予某人访问整个表格的权限。

    【讨论】:

    • 如果您将 SQL Server 本身定义为固有安全并且在其中存储的密钥符合您的安全要求,那么这是一个非常好的解决方案。这可以通过在 sql server 上启用透明数据加密来进一步采取措施,以防止有人将数据库从服务器上复制出来,或者物理地占用硬盘驱动器以绕过所有软件访问控制的攻击。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2011-10-14
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多