适用于iPhone的安全远程密码实施

Six*_*tto 5 security iphone openssl cryptography objective-c

我一直在阅读斯坦福大学的安全远程密码协议,它看起来非常适合iPhone应用程序运行的环境.不幸的是,我无法找到协议的良好Objective-C实现.据我所知,SDK中加密库也没有实现它.

有谁知道这样的实现?

如果做不到的话,你认为最好的选择是什么?我可以尝试将OpenSSL构建到我的应用程序中,但对于这一小块来说,这感觉真的很重要.我可以尝试将JavaScriptJava实现转换为Objective-C,但这违反了加密的#1规则(使用已知的,经过测试的实现).

几个后续项目:首先,它应该从上下文中显而易见,但我将需要一些与闭源商业用法兼容的东西(我链接的JavaScript实现,我后来注意到,是AGPL).

此外,假设我最终使用OpenSSL,我很难找到使用它来执行SRP的示例.他们的网站声称代码在那里,但我无法在OpenSSL文档中找到任何证据,或者在源代码中贪图(v 0.9.8k).(或者我是否认真地误读了一些内容,我仍然需要将其中一个补丁应用到OpenSSL源代码?)

编辑:

此时我真正可以使用的是即用型代码,相当完整的配方,或者在OpenSSL中使用SRP的某种示例.我很确定我可以通过协议文档从头开始拼凑一些东西,但我真的试图避免重新发明轮子,如果我可以帮助它.

Rob*_*ier 5

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)
Run Code Online (Sandbox Code Playgroud)