【问题标题】:Elliptic Curve Crypto in iOSiOS 中的椭圆曲线加密
【发布时间】:2013-02-01 17:25:52
【问题描述】:

我正在尝试将 ECC 合并到用于安全通信的 iPhone 应用程序中,但我很难找到合适的库/教程来说明如何在 Objective-c 中执行此操作。我读了这篇文章: How to use ECC in iOS 但它是在将近一年前发布的,没有任何回应。任何提示/建议将不胜感激

谢谢!

【问题讨论】:

  • 一定要Objective-C吗?您可以使用众多 C ECC 库之一吗?
  • 乔尔说了什么;只需使用 C API 并根据需要将其包装在 Objective-C 中。 NSData 非常方便地提供对缓冲区的访问。
  • 啊,这完全有道理,刚刚发现:github.com/x2on/OpenSSL-for-iPhone/blob/master/include/openssl/… 谢谢!
  • @JustinRushing 我正在为这个库而苦苦挣扎——尤其是加载从外部传入的证书。如果您能抽出 5 分钟时间发布代码 sn-p 以说明您的使用方式,将不胜感激。
  • @PassKit,我没有加载我在代表 publicX 和 publicY 的字符串中获取的证书文件。不过,这是我的加密类中的一些辅助方法:pastebin.com/3JBbzpX6

标签: ios objective-c cryptography elliptic-curve


【解决方案1】:

不幸的是,Security Transforms [1](应该使用的 iOS 内置框架和上面提到的帖子使用的那个)似乎不支持内置的椭圆曲线。你必须依赖ECC 的非苹果实现。

[1]http://developer.apple.com/library/mac/#documentation/Security/Conceptual/SecTransformPG/SecurityTransformsBasics/SecurityTransformsBasics.html

【讨论】:

  • 你确定吗? Apple 将 ECC 和 AES 组合用于 iOS 上的几乎所有加密。绝对可以做到,唯一的问题是他们是否将其暴露给开发人员。
【解决方案2】:

很遗憾,我找不到合适的文档,但也许您可以使用 Apple 的 CommonCrypto 框架?

这个标题很有希望: http://opensource.apple.com/source/CommonCrypto/CommonCrypto-60027/Source/CommonCryptoSPI/CommonECCryptor.h

【讨论】:

  • 那个头是“SPI”,苹果的术语意思是私有接口。这些功能不会向客户端应用程序开发人员公开。不过,您可以向 Apple 提交bug report,要求他们在需要时公开这些功能。
【解决方案3】:

在 Mac 库中快速搜索椭圆曲线加密得到了EllipticLicense,这是一个使用 EC 加密的 Mac 产品密钥生成/验证库。它使用 OpenSSL 对 EC 的支持,您也可以这样做。

请注意,Apple 已弃用他们提供的 OpenSSL 动态库,因为兼容性问题会阻止他们保持最新状态,因此您需要获取 OpenSSL from the source 并将其与您的应用程序捆绑在一起。

【讨论】:

    【解决方案4】:

    这不是您要的答案。但是,我的偏执迫使我建议您花时间真正了解 ECC 实施的具体细节。请考虑在NSA back door 上发布此出版物。

    如果您从文章中得到的仅此而已,请注意:“RSA Security 公开放弃 Dual_EC_DRBG”。

    我查看了list of vendors that had validated various DRBG 算法。似乎 Apple 直接为大多数平台和操作系统验证了 CRT_DRBG。在清楚的权利?不必要。如果您仔细观察,似乎有些供应商已经验证了 Dual EC DRBG,其技术可能已内置到 Apple 产品中。如何以及在哪里使用它?我无法确定这一点。

    例如:向下滚动到验证号 309。我不确定我是否正确阅读。但我的看法是,Cummings 是(或打算成为)带有 ARM A8 内核和 iOS 5.0 的 Apple 移动设备的 OEM 供应商。他们验证了他们的加密通信模块,其中包括双 EC DRBG。什么时候使用?我所知道的是它说它既“启用又未启用”。什么时候?!不知道。请注意,还有其他几种“启用和未启用”的 DRBG 风格。这只能降低使用的概率。

    看来底线是:

    • 双 EC DRBG 可用于使用 在未知数量的情况下,合格平台上的 SHA。

    • 我们必须等待调查的结果才能确定
      当局怀疑是后门。

    祝你有美好的一天。 :)

    附:我不禁担心 OpenSSL。我发现this post 揭示了有关如何澄清 OpenSSL 是否使用黑名单随机数生成器的未知数。

    【讨论】:

    • 添加了 -1,因为 NIST 的发现非常特定于(缓慢、有问题的)随机数生成器。它与例如无关。 ECIES。
    • 如果您担心 NSA 后门,为什么不简单地使用带有他们未声明的值的曲线?例如 Ed25519。由于密钥大小,RSA 在某些情况下并不实用
    【解决方案5】:

    根据我的经验,您可以使用 Nacl 库。这个库有curve25519椭圆曲线实现。这是最先进的和最快的库。

    你也可以使用crypto++。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      相关资源
      最近更新 更多