Azure Key Vault 是否支持 ECC(椭圆曲线加密)?
Does Azure Key Vault support ECC(Elliptic Curve Cryptography)?
Azure Key Vault 是否支持 ECC(椭圆曲线加密)?
好问题。我不相信 EEC 还受支持,Christos Matskas(MS Azure Dev)2017 年 3 月 17 日的博客指出:
“该服务目前支持对称 RSA 密钥,但在未来的版本中已经可以添加非对称和椭圆曲线密钥支持。可以使用该服务生成密钥,也可以选择导入现有密钥。对于使用该服务生成的密钥,有 2 种支持的算法:
- 简单 RSA
- RSA-HSM
此外,USER VOICE 至少有两个用户要求实现此功能,您也可以在这里添加您的反馈请求。
参考:
https://blogs.technet.microsoft.com/uktechnet/2017/03/17/application-security-with-azure-key-vault/
看来 Azure 现在支持椭圆曲线了。
有人在使用 F# 在线教程https://tomislav.tech/2018-01-31-ethereum-keyvault-generating-keys/
或者现在文档中也有一些信息。
此处未标记为完整https://feedback.azure.com/forums/216840-security-and-compliance/suggestions/10877748-ecc-support-for-azure-key-vault但最新评论说现在已支持。
是的。以下是我在 .NET 中使用 Microsoft.Azure.KeyVault.WebKey 导入 EC 密钥的方法。
构造JSON web key和azure KeyBundle:
JsonWebKey jwk = new JsonWebKey();
jwk.CurveName = JsonWebKeyCurveName.P256;
jwk.Kty = "EC";
jwk.D = ec_d; // ec_d is a 32-byte byte array representing the private key
jwk.X = ec_x; // ec_x is a 32-byte byte array representing the x coordinate
jwk.Y = ec_y; // ec_x is a 32-byte byte array representing the y coordinate
KeyBundle keyBundle = new KeyBundle
{
Key = jwk
};
构造请求:
string keyName = "testECkey1";
await kvClient.ImportKeyAsync(vault.Properties.VaultUri, keyName, keyBundle);
您需要先通过 Azure 的身份验证。我在这里使用了很多示例代码:https://github.com/Azure-Samples/key-vault-dotnet-authentication/blob/master/KeyVaultAuthSample.cs
一旦我找出正确的 jwk 参数,我就得到了错误 "EC key is not valid - bad crypto service output"
。事实证明,当我的字节需要大端时,我将字节向上推到小端,所以我只使用 Array.Reverse
.
此外,我必须手动从 EC public 键中提取 X 和 Y 坐标。这很有帮助:https://davidederosa.com/basic-blockchain-programming/elliptic-curve-keys/
Azure Key Vault 是否支持 ECC(椭圆曲线加密)?
好问题。我不相信 EEC 还受支持,Christos Matskas(MS Azure Dev)2017 年 3 月 17 日的博客指出:
“该服务目前支持对称 RSA 密钥,但在未来的版本中已经可以添加非对称和椭圆曲线密钥支持。可以使用该服务生成密钥,也可以选择导入现有密钥。对于使用该服务生成的密钥,有 2 种支持的算法:
- 简单 RSA
- RSA-HSM
此外,USER VOICE 至少有两个用户要求实现此功能,您也可以在这里添加您的反馈请求。
参考:
https://blogs.technet.microsoft.com/uktechnet/2017/03/17/application-security-with-azure-key-vault/
看来 Azure 现在支持椭圆曲线了。
有人在使用 F# 在线教程https://tomislav.tech/2018-01-31-ethereum-keyvault-generating-keys/
或者现在文档中也有一些信息。
此处未标记为完整https://feedback.azure.com/forums/216840-security-and-compliance/suggestions/10877748-ecc-support-for-azure-key-vault但最新评论说现在已支持。
是的。以下是我在 .NET 中使用 Microsoft.Azure.KeyVault.WebKey 导入 EC 密钥的方法。
构造JSON web key和azure KeyBundle:
JsonWebKey jwk = new JsonWebKey();
jwk.CurveName = JsonWebKeyCurveName.P256;
jwk.Kty = "EC";
jwk.D = ec_d; // ec_d is a 32-byte byte array representing the private key
jwk.X = ec_x; // ec_x is a 32-byte byte array representing the x coordinate
jwk.Y = ec_y; // ec_x is a 32-byte byte array representing the y coordinate
KeyBundle keyBundle = new KeyBundle
{
Key = jwk
};
构造请求:
string keyName = "testECkey1";
await kvClient.ImportKeyAsync(vault.Properties.VaultUri, keyName, keyBundle);
您需要先通过 Azure 的身份验证。我在这里使用了很多示例代码:https://github.com/Azure-Samples/key-vault-dotnet-authentication/blob/master/KeyVaultAuthSample.cs
一旦我找出正确的 jwk 参数,我就得到了错误 "EC key is not valid - bad crypto service output"
。事实证明,当我的字节需要大端时,我将字节向上推到小端,所以我只使用 Array.Reverse
.
此外,我必须手动从 EC public 键中提取 X 和 Y 坐标。这很有帮助:https://davidederosa.com/basic-blockchain-programming/elliptic-curve-keys/