问题标签 [symmetric-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
8239 浏览

security - 对称密钥存储

我的公司将为我们的客户存储敏感数据,并将使用托管的 .NET 加密算法类之一对数据进行加密。大部分工作已经完成,但我们还没有弄清楚如何/在哪里存储密钥。我做了一些简单的搜索和阅读,看起来硬件解决方案可能是最安全的。有人对密钥存储解决方案或方法有任何建议吗?


谢谢大家的回复。

spoulson,问题实际上是您提到的两个“范围”。我想我应该更清楚。

数据本身以及对其进行加密和解密的逻辑都被抽象到 ASP.NET 配置文件提供程序中。此配置文件提供程序允许加密的配置文件属性以及纯文本属性。加密属性值的存储方式与纯文本值完全相同 - 明显的例外是它们已被加密。

也就是说,出于以下三个原因之一,需要能够召唤钥匙:

  1. 在授权服务器上运行的授权 Web 应用程序需要对数据进行加密。
  2. 与#1 相同,但用于解密数据。
  3. 我们业务团队的授权成员需要查看加密数据。

我想象的方式是没有人真正知道密钥 - 会有一个软件控制数据的实际加密和解密。也就是说,密钥仍然需要来自某个地方

完全披露——如果你还不能说,我以前从来没有做过这样的事情,所以如果我完全不知道这应该如何工作,请告诉我。

0 投票
4 回答
8655 浏览

sql-server - SQL Server 2005 - 在不同的服务器上恢复加密的数据库

我已经备份了一个加密数据库(对称密钥/证书)并将其恢复到另一台服务器上。

不幸的是,我们在解密时遇到了问题……希望有人能提供帮助。

在恢复的数据库中,我可以在 SSMS 中看到对称密钥和证书,但是当我尝试使用证书打开密钥(通过证书 CertB 打开对称密钥 KeyA 解密)时,我收到以下非常描述性的错误:

Msg 15466, Level 16, State 1, Line 1 解密时出错。

有任何想法吗?

提前致谢。

0 投票
1 回答
572 浏览

.net - 如何包装/存储 TripleDESCryptoServiceProvider 的密钥

我正在使用 DES 加密,我想存储 TripleDESCryptoServiceProvider 的密钥。

但是密钥由(Key + IV)组成,

我试图将它们保存在 XML 文件中

但由于 IV 在 XML 中包含无效字符“=”而出现异常。

有没有更好的方法来存储对称加密密钥?

0 投票
1 回答
2476 浏览

encryption - 为什么更改三重 DES 密钥或初始值中的一位不会给出不同的加密数据?

我正在使用 pyDes 加密一些数据。我想证明,即使您更改密钥或初始值中的一位,加密的数据也会完全不同。我设置了 16 字节密钥以将最后一个字符更改 +/- 1,从而导致至少一位不同。但是,即使我这样做了,3 个不同的加密数据实例也并非完全不同。

如果我只对键或初始值进行小的更改,其中一个断言似乎会失败;我已经看到了两者d1 != d2并且d1 != d3失败取决于我改变什么。我还尝试更改'Hello''Hello' * 50确保不仅仅是输入数据太短的情况。

如果我制作完全随机的键,则断言通过。使用如上所示的程序,d1 != d3失败(这些键相距一位;k1-k2 相差 2 位)。

我绝不是加密专家,但如果两个密钥仅相隔一位就产生相同的加密数据,那么这意味着暴力破解密钥所需的努力只是减少了两倍,对吧?

我错过了一些明显的东西吗?Triple DES 是否不应该为非常相似的密钥提供唯一的结果?或者这是 PyDes 中的一个错误?也许其他人可以在另一个实现中确认这种行为?


@Chris Jester-Young 的答案是密钥中的某些位是奇偶校验位。事实证明,根据这篇文章

请注意,虽然 DES 的输入密钥长度为 64 位,但 DES 使用的实际密钥长度仅为 56 位。每个字节中的最低有效(最右边)位是奇偶校验位,应设置为每个字节中始终有奇数个 1。这些奇偶校验位被忽略,因此仅使用每个字节的七个最高有效位,导致密钥长度为 56 位。这意味着三重 DES 的有效密钥强度实际上是 168 位,因为三个密钥中的每一个都包含 8 个在加密过程中不使用的奇偶校验位。

(重点是我的)

这些奇偶校验位正是我在示例中更改的位。

谢谢克里斯!

0 投票
2 回答
1048 浏览

.net - Rijndael托管密钥生成

我需要加密数据并将其存储在一个文件中,然后才能将其解密回来。为此,我正在使用 RijndaelManaged 类。现在我不想将密钥硬编码在代码中。经过一番谷歌搜索后,我发现了这种方法 -

这里生成了密钥,然后所有其他值(如密码、盐和 IV)都被硬编码。我没有让用户输入密码的选项,因此我还必须对这些值进行硬编码。那么这真的安全吗?一些黑客不能使用工具找到这些硬编码的值并找出关键吗?

0 投票
4 回答
3400 浏览

c# - SQL 对称密钥并从 C# 打开它

我正在尝试通过对称密钥加密 SQL Server 中的数据。当用户通过 Web 表单提交数据时,我希望使用我保存在 SQL Server 中的对称密钥对数据进行加密。我试图找出如何做到这一点。目前,我运行以下命令:

这很好用 - 但是,当我尝试从我的 Web.Config 文件中打开密钥时,我得到一个错误。

C#代码:

Web.Config 文件

来自 try/catch 语句的错误:

错误号:102,错误消息:“myKey”附近的语法不正确。在:-2146232060 和 System.Data.SqlClient.SqlErrorCollection

问题/问题:

  • 为什么我会收到错误消息?
  • 我应该以不同的方式访问密钥或加密数据吗?

另外:我尝试将密钥名称从“myKey”更改为“myKeya”或类似的名称,然后出现此错误:

错误号:15151,错误消息:找不到对称密钥“myKeya”,因为它不存在或您没有权限。在:-2146232060 和 System.Data.SqlClient.SqlErrorCollection

当然,我使用的是与“myKey”不同的词,但我检查了我使用的词是否是任何类型的关键字,并且在 google、bing 和 msdn 的任何搜索中都没有出现......所以我我想我在那里很安全。这也提示我数据库实际上正在接收请求,但它需要一些不同风格的密钥。嗯……

0 投票
2 回答
2713 浏览

sql-server-2008 - SQL Server 2008 + PCI 合规性?与 PCI 以及对称密钥有关!

我以前从未处理过 PCI 合规性问题。我一直在阅读他们的文件,上面说我需要保护信用卡号、有效期和持卡人姓名。从未存储安全代码。

在他们的文档中,它只是说保护。这是说我需要加密数据库中的这 3 列吗?我认为只有数字是需要加密的数据。无论哪种方式,我都很好。

如果我需要加密所有三列,我是否共享一个证书并拥有 3 个对称密钥,或者我只需要一个,并且在所有 3 列上都使用该对称密钥?我问的原因是在加密列的 BoL 文档中,密钥是专门以他们正在加密的列命名的。

感谢所有的帮助!

0 投票
1 回答
8548 浏览

sql - 如何复制 SQL Server 对称密钥?

我们有一个带有对称密钥(数据库->安全->对称密钥)的数据库的服务器。我们有一个备份的重复数据库,我们将其用作测试数据库,但我们没有这个密钥。

如何复制此对称密钥(或制作一个与旧密钥完全相同的新密钥)并将其放入现有数据库中?它必须具有与另一个相同的值和键名。

这是在 SQL Server 2008 上。

替代文字

0 投票
1 回答
35895 浏览

algorithm - 为什么 AES 比 DES 更安全?

我开始学习加密算法,并且了解上述算法的工作原理。AES的密钥长度更长吗?AES 加密的哪些步骤使其比 DES 更不容易受到攻击?

0 投票
2 回答
1639 浏览

encryption - 为什么在对对称算法的蛮力攻击中,在尝试一半后有 50% 的机会找到密钥?

任何密码学文本都提到,在对对称算法的蛮力攻击中,有 50% 的机会在尝试一半后找到密钥。

例如,使用 56 位密钥的 DES 在前 2 55次尝试后将有 50% 的机会找到密钥。

为什么在针对任何对称加密算法的暴力攻击中,经过一半的尝试后有 50% 的机会找到密钥?它的数学证明是什么?