簡體   English   中英

適用於iPhone的安全遠程密碼實施

[英]Secure Remote Password Implementation for iPhone

我一直在閱讀斯坦福大學的安全遠程密碼協議 ,它看起來非常適合iPhone應用程序運行的環境。 不幸的是,我無法找到協議的良好Objective-C實現。 據我所知, SDK中加密庫也沒有實現它。

有誰知道這樣的實現?

如果做不到的話,你認為最好的選擇是什么? 我可以嘗試將OpenSSL構建到我的應用程序中 ,但對於這一小塊來說,這感覺真的很重要 我可以嘗試將JavaScriptJava實現轉換為Objective-C,但這違反了加密的#1規則(使用已知的,經過測試的實現)。

幾個后續項目:首先,它應該從上下文中顯而易見,但我將需要一些與閉源商業用法兼容的東西(我鏈接到的JavaScript實現,我后來注意到,是AGPL)。

此外,假設我最終使用OpenSSL,我很難找到使用它來執行SRP的示例。 他們的網站聲稱代碼在那里,但我無法在OpenSSL文檔中找到任何證據,或者在源代碼中貪圖(v 0.9.8k)。 (或者我是否認真地誤讀了一些內容,我仍然需要將其中一個補丁應用到OpenSSL源代碼?)

編輯:

此時我真正可以使用的是即用型代碼,相當完整的配方,或者在OpenSSL中使用SRP的某種示例。 我很確定我可以通過協議文檔從頭開始拼湊一些東西,但我真的試圖避免重新發明輪子,如果我可以幫助它。

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)

在iOS平台上實施SRP需要OpenSSL,所以一個好方法是通過pod安裝OpenSSL。

有被稱為hoccer一個很好的C實現SRP的CSRP

我已為此實現編寫了一個iOS包裝器,您可以在此處找到它。 但我必須提到csrp已經很好地實現並從其文檔中自我解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM