问题标签 [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.
encryption - USB令牌PKI解密
我正在寻找用于非对称解密目的的 USB 令牌解决方案。服务器使用定期轮换的数据加密密钥 (DEK) 对敏感数据进行加密,该密钥与加密数据一起存储,并使用 USB 令牌 (KEK) 的预分发公钥对其自身进行加密。
用户(Web 浏览器客户端)使用用户名和密码登录到单页应用程序。用户然后插入 USB 令牌,这将触发以下序列:
- 从服务器检索加密的 DEK
- 使用 USB 令牌私钥解密 DEK
- 使用 DEK 从服务器检索数据
我研究过Yubikey之类的解决方案,但它似乎更关注用户身份验证而不是密码服务。以便携式格式实现基于硬件的密码的正确产品是什么?昂贵的 HSM 是毫无疑问的,因为多个用户应该拥有一个便携式令牌的实例。此外,每个实例都应包含相同的私钥。
security - HSM 和自定义模块
我们正在实施安全关键系统,其中需要符合 FIPS 140-2的HSM(硬件安全模块)来生成和存储密钥材料、执行加密/解密并运行自定义代码,并为自定义模块设置以下要求:
- 模块通过 RPC 可用
- 模块可以访问所有 HSM 密钥和服务
- 模块具有内存和持久存储(均为 1+ MB)
- 模块内存是安全的(FIPS 140-2 3+ 级)
至于 HSM 服务本身,需要:
- 支持AES、RSA和HMAC
- 有键的别名
- 通过PKCS11接口生成具有别名的新密钥
- 通过PKCS11接口检索具有别名的公钥和证书
- 通过PKCS11接口删除具有别名的密钥
由于 NDA 导致有关 HSM 产品的可用信息非常少,因此很难评估要求和选项。任何标准或供应商特定的解决方案(例如Utimaco )是否满足这些要求?
android - 为每个应用程序安装生成唯一的加密密钥或盐
我正在研究如何在 Android 设备上安全地存储敏感数据。当然,没有 100% 安全的方法,我希望尽可能安全。
我已经阅读了官方的建议。
举个例子,我有一个存储文本的应用程序(例如私人日记)。文本存储在 xml 文件中,该文件使用存储在 Android KeyStore 中的密钥进行加密 (aes256)。
这应该意味着数据安全地存储在加密的 xml 文件中。root 用户仍然可以从 KeyStore 访问密钥并对其进行解密,或者在应用程序解密后获取数据。
但是,这也意味着每个应用程序都使用相同的密钥。所以我可以在我的手机上安装该应用程序并使用我的密钥来解密来自其他手机的 xml 日记文件。
问题是,如何创建每个应用程序安装唯一的密钥或至少是盐?
security - 在 Google Apps 脚本中管理 API 机密的适当方法是什么?
如果我编写了一个谷歌应用程序脚本,并且在脚本中我需要调用第三方 API 或进行数据库调用,那么管理 API 密钥和密码的适当方法是什么?
如果我将脚本作为 API 发布但不共享对包含 Google Apps 脚本的 Google Drive 位置的访问权限,那么将机密直接放在脚本中是否有任何风险
c# - Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider[48] 读取密钥环时出错
仅当我在共享主机上部署 ASP .NET Core 2.1 Web 应用程序时才会出现此问题。我将 Azure Key Vault 与 PersistKeysToFileSystem 一起使用。
Web App 在我的开发机器和 Azure App 上运行良好,无论是否使用 PersistKeysToFileSystem 的 Azure Key Vault。
fail: Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider[48]
An error occurred while reading the key ring.
System.Net.Http.HttpRequestException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask``1.get_Result()
at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask``1.get_Result()
at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask``1 creationTask)
at System.Threading.Tasks.ValueTask``1.get_Result()
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task``1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Azure.KeyVault.KeyVaultCredential.ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Azure.KeyVault.KeyVaultClient.WrapKeyWithHttpMessagesAsync(String vaultBaseUrl, String keyName, String keyVersion, String algorithm, Byte[] value, Dictionary``2 customHeaders, CancellationToken cancellationToken)
at Microsoft.Azure.KeyVault.KeyVaultClientExtensions.WrapKeyAsync(IKeyVaultClient operations, String keyIdentifier, String algorithm, Byte[] key, CancellationToken cancellationToken)
at Microsoft.AspNetCore.DataProtection.AzureKeyVault.AzureKeyVaultXmlEncryptor.EncryptAsync(XElement plaintextElement)
at Microsoft.AspNetCore.DataProtection.AzureKeyVault.AzureKeyVaultXmlEncryptor.Encrypt(XElement plaintextElement)
at Microsoft.AspNetCore.DataProtection.XmlEncryption.XmlEncryptionExtensions.EncryptIfNecessary(IXmlEncryptor encryptor, XElement element)
at Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.IInternalXmlKeyManager.CreateNewKey(Guid keyId, DateTimeOffset creationDate, DateTimeOffset activationDate, DateTimeOffset expirationDate)
at Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.CreateNewKey(DateTimeOffset activationDate, DateTimeOffset expirationDate)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider.CreateCacheableKeyRingCore(DateTimeOffset now, IKey keyJustAdded)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider.Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.ICacheableKeyRingProvider.GetCacheableKeyRing(DateTimeOffset now)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider.GetCurrentKeyRingCore(DateTime utcNow)
Hosting environment: Production
c# - 使用 C# 从 Azure 中的授权密钥功能级别授权中检索密钥
我需要通过代码而不是门户获取密钥。为此,我在 Google 中找到了 REST API。这是Azure Key management API的链接,但我们需要进行身份验证。
我们必须仅使用 C# 来开发所有这些。
encryption - 无人值守/自动化 Linux 设备密钥管理(用于访问更新服务器的证书)
我目前正在为我的雇主开发定制的媒体中心/盒子产品。它基本上是一个运行 Raspian 的 Raspberry Pi 3b+,配置为通过apt
. apt
该设备使用设备上预装的证书,通过私有、安全的存储库访问专有应用程序的二进制文件。
目前,设备上的证书设置为永不过期,但今后,我们希望将证书配置为每 4 个月过期一次。我们还计划为我们运送的每台设备部署一个唯一证书,以便可以撤销证书(即,如果客户报告设备被盗)。
有没有办法通过apt
或 OpenStack/Barbican KMS 来:
- 定期更新设备上 apt-repo 访问的证书。
- 如果我们需要设备能够下载敏感数据,例如客户信息的内存缓存副本,请在设备上设置密钥加密密钥 (KEK)。
- 如果当前使用的密钥已过期(即用户超过 4 个月未将设备连接到互联网),请提供一种机制,以便在设备上部署新密钥。试图绕过这个,因为设备现在(在这种状态下)有一个过期的证书,我无法确定如何让它被信任来拉一个新的。
- 允许跟踪、撤销和停用密钥。
谢谢你。
java - 与四方交换 Diffie Helman 密钥
我正在尝试修改三方之间的示例 Deffie Helman 密钥交换。这是代码。
在此结束时,只有 3 个结果匹配,而第四个结果不同。我在这里做错了什么?
amazon-web-services - 如何安全地存储 Amazon KMS 的亚马逊访问令牌
我正在探索亚马逊 KMS 托管服务,存储主密钥和数据密钥似乎很安全。我能够使用 AWS KMS API / CLI 从加密的数据密钥中将数据密钥解密为纯文本。
但我有一个担心,要访问亚马逊 KMS 以解密数据密钥,我需要传递访问令牌和加密的数据密钥。
那么我可以在哪里安全地存储亚马逊访问令牌和加密数据密钥?
任何想法表示赞赏。
谢谢,
哈利
.net - 如何使用 .NET 和 Tpm2Lib 在磁盘上保留 tpm 密钥?
而是使用 tpm 有限的非易失性内存,我想将生成的 tpm 密钥保留在我的硬盘上。最好的方法是什么?
我正在使用 Microsoft 的 Tpm2Lib 到 .NET,并且我正在 linux OS 上实现该解决方案。