问题标签 [key-management]

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 投票
1 回答
927 浏览

c# - 在 ubuntu 服务器中部署时的 AspNet Core 问题

我在 Ubuntu 服务器(16.04.1 LTS(GNU/Linux 4.4.0-97-generic x86_64))中提供了几个 aspnet 核心应用程序,这些应用程序一直运行良好,它们的 webapi 配置非常相似,但是昨天我发布其中一个有问题(只是另一个像魅力一样工作),我收到一个错误,老实说我不明白,主要是因为我不记得做过与错误消息相关的任何更改,我浪费了很多小时,我要疯了。我最近将 aspnet 核心版本从 1.1 升级到 2.0。

这是我的 Program.cs

我附上错误跟踪:

0 投票
0 回答
70 浏览

java - 处理加密密钥

我有一个我写的小应用程序,它使用用户创建的对称加密密钥来加密文件,并且不确定如何在程序中使用密钥。

需要明确的是,我不想将此密钥永久存储在任何地方,但显然我需要将它作为字符串或其他东西传递,否则我们根本无法用它做任何事情。

我的一些具体问题是:

  1. 将密钥用作字符串是否安全,或者像字节数组这样的东西更可取?

  2. 我认为我们不希望将解密文件保存在文件系统中的任何位置,这意味着它们必须加载到堆(或堆栈?)中。为此,需要在整个程序期间重复使用密钥。我们是否应该避免将其存储为类/实例变量?

  3. 当我们关闭程序时,我们应该如何处理我们的关键变量?是否应该手动覆盖?

0 投票
1 回答
379 浏览

c# - 如何处理 azure 密钥库中的密钥轮换

我必须在我的应用程序中实现密钥轮换。我有一些想法如何做到这一点,但我不确定该解决方案是否一切正常。

好的,让我们开始吧。我的应用程序中有几个地方使用 KeyVaultClient(Azure KeyVault 客户端)进行解密。它工作得很好。在我的应用程序中有一些使用 KeyVaultClient 进行加密的地方。现在(仍处于开发阶段)我正在使用硬编码参数(vaultBaseUrl,keyName,keyVersion)。但我想更进一步,将这个参数移动到 app.config 文件中。

这里的问题开始了如何处理 keyVersion 变量(我认为我可以轻松地将其余部分存储在 app.config 文件中,不是吗?)我有几个想法:

对于加密:

  1. 我可以将当​​前的 keyVersion 存储在 app.config 中,并在每次加密数据时使用这个值。
  2. 我可以从 KeyVaultClients 中读取所有密钥(GetKeysAsync),然后按活动标志过滤它们并按到期日期排序。最后用最新的。

对于解密:

  1. 我可以将用于加密的 keyVersion 存储在加密数据中(我正在转换为 Base64String 的加密结果)。我的意思是我可以在字符串结果中添加 32 个字符(keyVersion)前缀。
  2. 没有更多的想法,也许使用 app.config 中的 keyVersion,但它会产生密钥旋转问题。

也许有一些工具/库可以为我处理这一切?:p

目前,新密钥由管理员手动插入。在接下来的阶段中,我将为此实施计划任务。

0 投票
1 回答
1141 浏览

amazon-web-services - 定价使用 KMS 加密 RDS

我想从 Amazon Web Service 加密我的 RDS 实例,但我不知道定价的解释。

它表示 AWS Key Management Service 的每个 API 请求每 10,000 个请求的成本为 0.03 美元。

每个查询都意味着一个 API 请求或每个连接?

希望您能够帮助我。

0 投票
1 回答
901 浏览

.net - 使用 AngularJS 和 .net 的密码加密技术和安全密钥传输

我有一个使用 AngularJs 1.5 作为前端和 .net 框架作为后端的应用程序。在我的应用程序中,我必须将用户名和密码存储在来自前端的数据库中。要求是:

  1. AngularJs 将加密密码并将其发送到后端
  2. 在后端,加密的密码将存储在数据库中。
  3. 在后端代码中,有一个地方我们必须调用第三方 Web API,并且必须传递用户名和密码的解密形式以进行身份​​验证。

简而言之,前端应该加密密码,后端应该有能力解密它。

我分析了许多密码安全交易的技术。

  1. 哈希:这是安全传输密码的最佳方法。但问题是,我们无法将哈希密码反转为其原始形式。根据我的要求,我必须将哈希密码反转为其原始形式,因为我们有将原始形式的密码传递给第三方 API 进行身份验证。
  2. 对称算法使用相同的密钥进行解密和加密,因此需要将密钥安全地共享给前端和后端。如果我们对两边的键值进行硬编码,这不是一个好方法。
  3. 非对称算法分别使用公钥和私钥进行加密和解密。所以我认为这比上述两种技术安全得多。因为拥有公钥的入侵者无法解密密码。

我是使用 AngularJS 处理加密和解密的新手。我的查询是关于密钥处理的。我们如何在前端和后端安全地存储密钥,而不是在代码中硬编码它们。有没有安全的方法来共享这些密钥。哪种算法最适合我的要求?(根据我的分析,我发现不对称是满足此要求的更好选择)。

0 投票
1 回答
151 浏览

azure - 是否可以更新已部署的 VM 以使用 Azure KeyVault?

我已经在 Azure 中部署了大约 200 多个 VM(Windows 和 Linux)。我想知道是否可以使用 Powershell 或 Azure CLI 来更新虚拟机以使用 KeyVault 作为密码/密钥管理器。

0 投票
1 回答
764 浏览

mysql - MariaDB 通过 AWS KMS 插件进行静态加密 - 密钥轮换不起作用?

我已通过AWS Key Management Service (KMS) Plugin设置MariaDB 进行静态加密

除了关键的循环之外,一切似乎都有效。

我根据附加的配置文件配置了以下选项:

/etc/my.cnf

/etc/my.cnf.d/aws_key_management.cnf

如您所见,我已将所有密钥设置为轮换 usingaws_key_management_rotate_key = -1并将密钥年龄设置为 1 using innodb_encryption_rotate_key_age = 1,但我可以从密钥/var/lib/mysql/版本 1 中的密钥中看到,尽管这些设置已经实施了多天,但仍在使用:

:文件名最后的.n后缀代表密钥版本)

我唯一能想到的是,我对innodb_encryption_rotate_key_age以天为单位的理解不正确?这个选项的文档可以在下面看到,并且根本没有提到这个数值使用的度量单位是什么?

innodb_encryption_rotate_key_age

描述:在后台重新加密密钥早于 >this 的任何页面。设置加密时,此变量必须设置为非零 > 值。否则,当您通过 innodb_encrypt_tables >MariaDB 启用加密时,MariaDB 将无法自动加密任何未加密的表。

谁能解释为什么会这样以及为什么我的钥匙不旋转?

MariaDB 版本

AWS KMS 插件版本

0 投票
0 回答
522 浏览

java - 如何尽可能实现与服务器无关的 KMS 客户端?

给定一个必须从密钥管理系统 ( KMS)获取私钥(主要是 RSA 密钥)的应用程序,这可能是一个硬件安全模块 ( HSM),如果没有办法知道,实现这种客户端的最佳方法是什么提前KMS执行应用程序将不得不处理?


子问题来自主要问题:

  1. 是否有一个统一的客户端库试图缩小不同实现之间的差距?
    • 至少以KMIP(密钥管理互操作性协议)实现为目标的一个就是一个很好的例子。
    • 它适用于什么语言?同一个图书馆的目标越多越好。
    • 是否有一个Java(我的应用程序将在什么上运行,但我试图让问题保持开放)?
  2. 如果没有或很少针对多个服务器实现,是否有针对特定实现的特定客户端?我主要考虑的是SMBs(中小型企业)大公司中最常用的那些。
    • 它适用于什么语言?同一个图书馆的目标越多越好。
    • 有一些Java吗?
  3. 如果这些都不存在,或者如果没有用于最需要的实现的客户端库,那么设计应用程序以在未来轻松适应其他实现同时专注于第一个实现的最佳方法是什么?
    • 我想首先关注一个KMIP合规的是个好主意?
  4. 互联网上是否有实际的工作代码示例?甚至UML图表?这种资源感觉相当稀缺。
  5. 我只是愚蠢地认为所有存在并且所有这些实现实际上都使用RESTfulAPI 并且所有东西都必须在客户端实现以适应各种服务器实现吗?

奖金问题:

谷歌的合规与否?似乎并非如此,但我实际上无法找到 clear或 clear 。Cloud Key Management Service KMIPyesno


其他有用的资源:

0 投票
0 回答
277 浏览

security - JWE 密钥管理模式的优缺点

我一直在搜索,但没有找到合适的地方,它们是关于 JWE 密钥管理的问题。

场景

服务器要向客户端发送敏感数据,它选择使用对称算法对数据进行加密,使用对称密钥,即内容加密密钥(CEK)。
客户端将检索 CEK 以解密加密数据,但 CEK 无法与加密数据一起以明文形式发送,因此需要对 CEK 进行加密。

方法

JWE规范定义了不同的密钥管理模式如下

  1. 密钥包装:使用对称加密算法为目标接收者加密 CEK。
    密钥包装图

  2. 密钥加密:使用非对称加密算法为目标接收者加密 CEK。
    密钥加密图

  3. 直接密钥协议:使用密钥协议算法来挑选 CEK。
    直接密钥协议图

  4. Key Agreement with Key Wrapping:密钥协商算法用于使用对称加密算法挑选对称 CEK。
    与密钥包装图的密钥协议

  5. 直接加密:使用用户定义的对称共享密钥作为 CEK(无密钥派生或生成)。
    直接加密图

问题

  1. 每种模式的优缺点是什么?
  2. 每种模式在什么情况下更可取?

任何帮助或建议将不胜感激,非常感谢。

0 投票
0 回答
441 浏览

openssl - 如何使 PKCS12 (PKCS#12) 在 .p12 容器中包含多个私钥?

我使用 Openssl 创建了一个存储私钥、服务器证书和 CACertificate(自签名)的 PKCS12 .p12 容器,并且能够成功导出/解析它们。

但我想知道如何将多个 Private key 添加到同一个容器中。例如 - 我有 2 组服务器证书和 2 个私钥,我需要将它们添加到单个 .p12 容器中。从那个 .p12 容器中,我想分别解析和提取两个私钥以及 2 个服务器证书。

链接中,提到可以这样做,但没有关于如何实现它的答案。

我怎样才能做到这一点?如何将私钥(PK1 和 PK2)和服务器证书(C1、C2)保存到 .p12 中并使用 OpenSsl 提取它们?