【问题标题】:Add bitcoin private key to Azure Key Vault将比特币私钥添加到 Azure Key Vault
【发布时间】:2018-11-17 21:11:18
【问题描述】:
我有一个想法,将比特币/山寨币私钥作为加密密钥存储在 Azure Key Vault 中。 Azure Key Vault 允许使用其(例如散列或加密)执行一些加密方法,而无需从 Vault 中取出密钥。比特币使用 ECDSA 算法进行签名,Key Vault 也可以。如何将 btc 私钥导入 KeyVault?我使用 c#。
【问题讨论】:
标签:
c#
cryptography
bitcoin
azure-keyvault
【解决方案1】:
此时看来只能导入RSA密钥,不能导入BTC使用的secp256k1等EC类型的密钥。但是
您可以在受 HSM 保护的密钥保管库中生成自己的 secp256k1 密钥。然后您可以进行计算以确定关联的公钥和 BTC 地址,然后将您的所有 BTC 发送到该地址。一样的!
您甚至可以从 HSM 下载 secp256k1 密钥的加密备份,以便以后恢复它,但您永远不会知道私钥是什么。
【解决方案2】:
我能够使用以下代码将 PEM 格式的 secp256k1 私钥导入 KeyVault。
var client = new KeyClient(new Uri("https://myKeyVault.vault.azure.net"), new ClientSecretCredential("tenantid", "clientid", "clientSecret"));
var key = ECDsa.Create();
key.ImportFromPem(@"-----BEGIN EC PARAMETERS-----
....
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
...
-----END EC PRIVATE KEY-----
");
JsonWebKey jwk = new JsonWebKey(key, true);
await client.ImportKeyAsync("MyKey", jwk);
您需要设置应用注册并在密钥保管库中创建访问策略,以便能够按照此处所述进行导入
https://www.c-sharpcorner.com/blogs/fetching-secrets-from-key-vault-in-net-console-app