Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone的安全远程密码实现_Iphone_Objective C_Security_Cryptography_Openssl - Fatal编程技术网

iPhone的安全远程密码实现

iPhone的安全远程密码实现,iphone,objective-c,security,cryptography,openssl,Iphone,Objective C,Security,Cryptography,Openssl,我一直在读有关斯坦福的书,它看起来非常适合iPhone应用程序运行的环境。不幸的是,我还没有找到一个好的Objective-C协议实现。据我所知,政府也没有实施它 有人知道这样的实现吗 如果不行,你认为我最好的选择是什么?我可以尝试,但这感觉像是一个真正的大事情,以增加这一小部分。我可以尝试将or实现转换为Objective-C,但这违反了加密的#1规则(使用已知的、经过测试的实现) 两个后续项目:首先,从上下文来看可能很明显,但我需要一些与封闭源代码商业用法兼容的东西(我后来注意到,我链接到的

我一直在读有关斯坦福的书,它看起来非常适合iPhone应用程序运行的环境。不幸的是,我还没有找到一个好的Objective-C协议实现。据我所知,政府也没有实施它

有人知道这样的实现吗

如果不行,你认为我最好的选择是什么?我可以尝试,但这感觉像是一个真正的大事情,以增加这一小部分。我可以尝试将or实现转换为Objective-C,但这违反了加密的#1规则(使用已知的、经过测试的实现)

两个后续项目:首先,从上下文来看可能很明显,但我需要一些与封闭源代码商业用法兼容的东西(我后来注意到,我链接到的JavaScript实现是AGPL)

另外,假设我最终使用OpenSSL,我很难找到一个使用它来进行SRP的示例。他们的网站声称代码就在那里,但我找不到任何证据,无论是在,还是在源代码(V0.9.8k)中。(还是我严重误读了一些东西,我仍然必须将其中一个应用于OpenSSL源代码?)

编辑:


在这一点上,我真正可以使用的是现成的代码、一个相当完整的配方,或者某种在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来说还不够,这取决于您使用的函数。