2009-10-06 5 views
5

私はスタンフォードのSecure Remote Password protocolについて読んできました。それは、iPhoneアプリが動作する環境の種類に最適です。残念ながら、私はプロトコルの良いObjective-C実装を見つけることができませんでした。また、私が知る限り、crypto libraries in the SDKを実装してください。iPhone用のセキュアなリモートパスワードの実装

誰もそのような実装を知っていますか?

私の最善の策は何だろうと思いますか?私はbuild OpenSSL into my appを試すことができましたが、それは本当に大きなのような感じですこの小さな小片に追加するもの。 JavaScriptまたはJavaの実装をObjective-Cに変換しようとする可能性がありますが、これは暗号の第1のルールに違反しています(テスト済みの実装を使用してください)。

フォローアップアイテムのカップル:まず、コンテキストからは明らかになるはずですが、クローズドソースの商用利用と互換性のあるものが必要です(リンク先のJavaScript実装、 AGPLです)。

また、私がOpenSSLになってしまえば、SRPを使用する例を見つけるのが本当に困っています。彼らのサイトはコードがそこにあると主張していますが、OpenSSL documentation、またはソースコードをグレープする(v 0.9.8k)のいずれの証拠も見つけられません。 (または私は真剣に物事を誤読だ、と私はまだOpenSSLのソースにtheir patchesのいずれかを適用する必要がありますか?)

編集:私は本当にこの時点で使用することができますことは、すぐに使用できるコードです

、かなり完成したレシピ、またはOpenSSLでSRPを使用する例などです。 protocol docsで最初から一緒に何かをまとめることができると私は確信していますが、私が助けることができれば、本当にホイールの再発明を避けようとしています。

答えて

5

SRS-TLSの実装は、私が知っている唯一のCベースのものです(TinySRPは2001年以来更新されておらず、それに基づいた基礎となるOpenSSLバージョンに対して多くのセキュリティ通知があります)私がTinySRP自体に影響を与えるかどうかはわかりませんが)。

私が作ったすべてのiPhoneプロジェクトには、最終的に、何か他のもののためにOpenSSLのコピーが含まれていなければならないと言われました。私は弾丸を噛んで使用することをお勧めします。リンクしている指示は正常に動作します。

個人的には、私はarmとx86バージョンの両方を持つlipoを使ってOpenSSLをユニバーサルライブラリに構築します。そうすれば、シミュレータとデバイスの両方に単一の.aをリンクすることができます。リポはとても簡単です。 2つのライブラリを構築し、それらを一緒に接着してください。ここに私の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) 
+0

デバイスのOpenSSLライブラリはどのくらい大きくなってしまいますか? (リンカが未使用のビットを残すことができるように十分に構造化されていますか?) –

+0

libcrypto.a + libssl.aは2以上です。5Mであるが、最終バイナリのようなものではない。私が調査した最後のことを覚えていれば、OpenSSLは最終的なバイナリサイズに約400〜500kを追加しました。私が望む以上に、私が恐れていたほどではありません。コンパイル時間を改善するためにOpenSSLのファイル数を減らそうとしましたが、いくつかの関数しか必要ではなかったので、すぐには使えませんでした。 OpenSSLは、リンカーが分裂するのに十分な構造ですが、コンパイラーにとっては十分ではありません。 YMMVはあなたが使用する機能に依存します。 –

3

IOSプラットフォームにおけるSRPの実装は、OpenSSLが必要なので、良い方法は、ポッド経由でOpenSSLをインストールすることです。

hoccerのsrpのC実装はcsrpといいます。

この実装用にiOSラッパーを作成しました。このラッパーはhereです。しかし、私は、csrpは既にそのドキュメントからよく実装され、自己説明されていると言及する必要があります。

関連する問題