Azure Key Vault是否支持ECC(椭圆曲线加密)?
答案 0 :(得分:1)
现在支持Azure中的Elliptic Curve。
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未标记为已完成,但最新评论显示现在已支持。
答案 1 :(得分:0)
好问题。我不相信EEC得到支持,2017年3月17日的Christos Matskas(MS Azure Dev)博客声明:
“该服务目前支持对称RSA密钥,但在将来的版本中已经有添加非对称和椭圆曲线密钥支持的范围。可以使用该服务生成密钥,也可以选择导入现有密钥。使用该服务,有两种类型的支持算法:
此外,USER VOICE至少有两个用户请求要求实现此功能,您也可以在此处添加反馈请求。
参考:
https://blogs.technet.microsoft.com/uktechnet/2017/03/17/application-security-with-azure-key-vault/
答案 2 :(得分:0)
是。以下是我在.NET中使用Microsoft.Azure.KeyVault.WebKey导入EC密钥的方法。
构建JSON Web密钥和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公钥中提取X和Y坐标。这很有用:https://davidederosa.com/basic-blockchain-programming/elliptic-curve-keys/