Elliptic Curve Cryptography可以用作分组密码吗?

时间:2012-08-15 18:31:02

标签: encryption embedded elliptic-curve

我正在尝试使用非对称加密来加密固件。引导加载程序将解密并更新闪存。这是在32位CPU以60MHz执行的嵌入式设备上。

由于其各种优势,我想使用ECC。我是加密新手,我在ECIES中实现的os ECC理解是使用ECC进行密钥生成,并使用AES进行实际数据加密。由于代码和ram大小,我不能支持多种加密算法。

是否有ECC的实现可以像AES一样使用。我正在寻找的是使用“私钥”来加密固件,引导程序使用“公钥”来解密它。

感谢。

3 个答案:

答案 0 :(得分:2)

我不确定你完全理解ECIES包含的内容:

http://en.wikipedia.org/wiki/Integrated_Encryption_Scheme

这是相当多的工作,它需要大量的原语,包括至少一个对称原语,在我看来。这也许是AES。

答案 1 :(得分:2)

让我们从问题的最后一句开始:

  

我正在寻找的是使用“私钥”加密固件,引导程序使用“公钥”对其进行解密。

这里的术语有些混乱。私钥用于解密(或签名),公钥用于加密(或验证)。如果我理解正确,你想要的是引导程序验证固件上的签名,以便引导程序只接受自己正确签名的固件。

有各种不对称签名方案可用于此目的,包括一些基于椭圆曲线密码术的方案。例如,您可以使用ECDSA的OpenSSL实现(请参阅http://www.openssl.org/docs/crypto/ecdsa.html)。

我担心问题中没有足够的信息来正确选择最佳签名方案(如果需要保密,也可能是加密方案)。在任何情况下,良好的加密技术都不足以使系统安全,而安全实施等其他考虑因素也同样重要。

如果这对您来说很重要,并且您担心黑客可能会试图破解,我强烈建议您购买安全专业人员的服务。正确使用密码术是一项非常棘手的业务,需要全面了解系统 - 否则您可能会遇到类似this

的情况

答案 2 :(得分:2)

如果你寻找“身份验证”,你必须使用像EC这样的非对称算法,这通常是因为如果用户或进程想要更新“固件”,他应该通过他的“签名”来识别他自己到引导加载程序来检查谁请求此更新。

完成此操作后,引导加载程序将从安全内存加载对称密钥以解密您想要执行的操作。

因此,您有一个用于加密的对称密钥(AES),以及用于身份验证的非对称密钥(=您是谁?)。

注意:EC在32位CPU上执行60MHz加密时没有优势,除非您的应用程序需要非对称加密NOT身份验证,这是因为用户和引导加载程序之间的线路不安全。

因此,您可以使用bootloader的“公钥”来加密固件,而引导加载程序使用其“私钥”对其进行解密,但是,由于非对称算法的高计算,实现成本很高。

寻找“轻量级加密”,它通常适用于您的应用程序。