iPhone的安全远程密码实现
我一直在读有关斯坦福的书,它看起来非常适合iPhone应用程序运行的环境。不幸的是,我还没有找到一个好的Objective-C协议实现。据我所知,政府也没有实施它 有人知道这样的实现吗 如果不行,你认为我最好的选择是什么?我可以尝试,但这感觉像是一个真正的大事情,以增加这一小部分。我可以尝试将or实现转换为Objective-C,但这违反了加密的#1规则(使用已知的、经过测试的实现) 两个后续项目:首先,从上下文来看可能很明显,但我需要一些与封闭源代码商业用法兼容的东西(我后来注意到,我链接到的JavaScript实现是AGPL) 另外,假设我最终使用OpenSSL,我很难找到一个使用它来进行SRP的示例。他们的网站声称代码就在那里,但我找不到任何证据,无论是在,还是在源代码(V0.9.8k)中。(还是我严重误读了一些东西,我仍然必须将其中一个应用于OpenSSL源代码?) 编辑:iPhone的安全远程密码实现,iphone,objective-c,security,cryptography,openssl,Iphone,Objective C,Security,Cryptography,Openssl,我一直在读有关斯坦福的书,它看起来非常适合iPhone应用程序运行的环境。不幸的是,我还没有找到一个好的Objective-C协议实现。据我所知,政府也没有实施它 有人知道这样的实现吗 如果不行,你认为我最好的选择是什么?我可以尝试,但这感觉像是一个真正的大事情,以增加这一小部分。我可以尝试将or实现转换为Objective-C,但这违反了加密的#1规则(使用已知的、经过测试的实现) 两个后续项目:首先,从上下文来看可能很明显,但我需要一些与封闭源代码商业用法兼容的东西(我后来注意到,我链接到的
在这一点上,我真正可以使用的是现成的代码、一个相当完整的配方,或者某种在OpenSSL中使用SRP的示例。我很确定我可以用从零开始拼凑一些东西,但如果我能帮上忙的话,我真的在努力避免重新发明轮子。SRP-TLS的OpenSSL和GnuTLS实现是我所知道的唯一维护的基于C的实现(TinySRP自2001年以来就没有更新过,而且有很多针对其所基于的底层OpenSSL版本的安全通知,尽管我不知道它们是否会影响TinySRP本身) 也就是说,我构建的每个iPhone项目最终都必须包含一个OpenSSL的副本。我建议您咬紧牙关,使用它。您链接的说明可以正常工作 就我个人而言,我使用lipo将OpenSSL构建到一个通用库中,lipo具有arm和x86版本。这样,我就可以链接到模拟器和设备的单个.a。lipo非常简单。只需构建两个库并将它们粘合在一起。以下是我的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)
在iOS平台上实现SRP需要OpenSSL,因此一个好方法是通过pods安装OpenSSL hoccer有一个很好的srp的C实现,叫做
我已经为这个实现编写了一个iOS包装,您可以找到。但是我必须提到,csrp已经得到了很好的实现,并从其文档中进行了自我解释。那么,设备的OpenSSL库最终有多大?(它的结构是否足够,链接器可以省略未使用的位?)libcrypto.a+libssl.a超过2.5M,但它们在最终二进制文件中并不代表任何类似的内容。如果我记得上次调查时,OpenSSL在最终二进制文件大小上增加了大约400-500k。比我想要的要多,但比我担心的要少。我试图减少OpenSSL中的文件数量以提高编译时间,因为我们只需要几个fOpenSSL的结构足以使链接器拆分,但对于编译器.YMMV来说还不够,这取决于您使用的函数。