我正在尝试将 ECC 合并到一个用于安全通信的 iPhone 应用程序中,但我很难找到一个合适的库/教程来说明如何在 Objective-c 中做到这一点。我读了这篇文章: 如何在 iOS 中使用 ECC 但它是在将近一年前发布的,没有任何回应。任何提示/建议将不胜感激
谢谢!
我正在尝试将 ECC 合并到一个用于安全通信的 iPhone 应用程序中,但我很难找到一个合适的库/教程来说明如何在 Objective-c 中做到这一点。我读了这篇文章: 如何在 iOS 中使用 ECC 但它是在将近一年前发布的,没有任何回应。任何提示/建议将不胜感激
谢谢!
根据我的经验,您可以使用 Nacl 库。这个库有curve25519椭圆曲线实现。这是最先进的和最快的库。
您还可以使用加密++。
在 Mac 库中快速搜索椭圆曲线加密产生了EllipticLicense,这是一个使用 EC 加密的 Mac 产品密钥生成/验证库。它使用 OpenSSL 对 EC 的支持,您也可以这样做。
请注意,Apple 已弃用其提供的 OpenSSL 动态库,因为兼容性问题会阻止它们保持最新状态,因此您需要从源代码中获取 OpenSSL并将其与您的应用程序捆绑在一起。
不幸的是,我找不到合适的文档,但也许您可以使用 Apple 的 CommonCrypto 框架?
这个标题很有希望:http: //opensource.apple.com/source/CommonCrypto/CommonCrypto-60027/Source/CommonCryptoSPI/CommonECCryptor.h
不幸的是,Security Transforms [1](应该使用的 iOS 内置框架和上面提到的帖子使用的那个)似乎不支持内置的椭圆曲线。你将不得不依赖一个非苹果实施ECC。
这不是你要的答案。但是,我的偏执迫使我建议您花时间真正了解 ECC 实施的具体细节。考虑一下这个关于NSA 后门的出版物。
如果您从文章中得到的仅此而已,请注意:“RSA Security 公开放弃 Dual_EC_DRBG”。
我查看了已验证各种 DRBG算法的供应商列表。似乎 Apple 直接为大多数平台和操作系统验证了 CRT_DRBG。在清楚的权利?不必要。如果您仔细观察,似乎有些供应商已经验证了 Dual EC DRBG,其技术可能已内置到 Apple 产品中。如何以及在哪里使用它?我无法确定这一点。
例如:向下滚动到验证号 309。我不确定我是否正确阅读。但我的看法是,Cummings 是(或打算成为)带有 ARM A8 内核和 iOS 5.0 的 Apple 移动设备的 OEM 供应商。他们验证了他们的加密通信模块,其中包括双 EC DRBG。什么时候使用?我所知道的是它说它既“启用又未启用”。什么时候?!不知道。请注意,还有其他几种“启用和未启用”的 DRBG 风格。这只能降低使用的概率。
看来底线是:
双 EC DRBG 可用于在未知数量的场景中在合格平台上使用 SHA 的加密函数中。
我们将不得不等待调查解决,以确保
当局怀疑它是后门。
祝你今天过得愉快。:)
PS 我忍不住关心 OpenSSL。我发现这篇文章揭示了有关如何澄清 OpenSSL 是否使用黑名单随机数生成器的未知数。