iphone - iPhone 的安全远程密码实现

标签 iphone objective-c security cryptography openssl

我一直在阅读斯坦福大学的 Secure Remote Password protocol , 它看起来非常适合 iPhone 应用程序运行的那种环境。不幸的是,我没能找到该协议(protocol)的良好 Objective-C 实现。据我所知,也不会执行 crypto libraries in the SDK实现它。

有人知道这样的实现吗?

否则,您认为我最好的选择是什么?我可以尝试 build OpenSSL into my app ,但这感觉像是为这一小块添加的非常大的东西。我可以尝试翻译 JavaScriptJava Objective-C 中的实现,但这违反了加密的第一条规则(使用已知的、经过测试的实现)。

几个后续项目:首先,从上下文来看应该很明显,但我需要一些与闭源商业用途兼容的东西(我后来注意到,我链接到的 JavaScript 实现是AGPL)。

此外,假设我最终选择了 OpenSSL,我很难找到使用它来执行 SRP 的示例。他们的网站声称代码在那里,但我在 OpenSSL documentation 中找不到任何证据。 ,或搜索源代码 (v 0.9.8k)。 (或者我是否严重误读了一些东西,我仍然必须将 their patches 之一应用到 OpenSSL 源?)

编辑:

此时我真正可以使用的是现成的代码、相当完整的配方或某种在 OpenSSL 中使用 SRP 的示例。我很确定我可以用 protocol docs 从头开始​​拼凑一些东西,但我真的想避免重新发明轮子,如果我能帮助的话。

最佳答案

SRP-TLS 的 OpenSSL 和 GnuTLS 实现是我所知道的唯一维护的基于 C 的实现(TinySRP 自 2001 年以来没有更新,并且有许多针对它所基于的底层 OpenSSL 版本的安全通知,尽管我不知道它们是否会影响 TinySRP 本身)。

也就是说,我构建的每个 iPhone 项目最终都必须包含 OpenSSL 的副本以用于某些用途。我建议硬着头皮使用它。您链接到的说明工作正常。

就我个人而言,我使用同时具有 arm 和 x86 版本的 lipo 将 OpenSSL 构建到一个通用库中。这样我就可以为模拟器和设备链接到一个 .a。脂肪很容易。只需构建这两个库并将它们粘合在一起。这是我的 Makefile 中的规则:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo \
        -create \
        -arch armv6 iPhoneOS$(SDK_VER)/lib/$(1) \
        -arch i386 iPhoneSimulator$(SDK_VER)/lib/$(1) \
        -output iPhoneUniversal$(SDK_VER)/lib/$(1)

关于iphone - iPhone 的安全远程密码实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1523072/

相关文章:

iphone - 使用 YouTube API 提取 YouTube 视频链接

iphone - 我在 UITableView、cellForRowAtIndexPath 中收到重复项

iphone - XCode 编译器警告 : 'foo' may not respond to -bar

iphone - UIAlertView 不显示键盘

ios - 在执行某事之前等待完成 block

php - 保护PHP密码的哈希和盐值

java - 签名未根据凭证 key 进行验证

security - LDAP JWT OAuth 方案说明

iphone - 如何折叠/折叠 UITableView 的部分?

ios - 嵌套(for-)循环的奇怪性能问题