2010-08-11 153 views
1

當Apple的遠程應用程序嘗試連接本地網絡上的Mac(運行iTunes)(使用WiFi)時,用戶需要輸入由iPhone提供的密碼作爲安全措施。這種方法已被許多其他應用程序採用(例如,Rowmote,Pastebot,...)。有沒有提供這種工作方式的API?用蘋果電腦連接iPhone/iPad(蘋果方式)

假設Bonjour正在發揮作用,iPhone如何檢查在Mac上輸入的密碼是否正確,而不解決Mac正在發佈的NSNetService?或者,iPhone解析Mac發佈的NSNetService,並在處理可能通過NSNetService發送的任何其他數據包(密碼以外的數據包)之前等待密碼被確認。

我有我的問題的解決方案,但我想知道是否有一個我忽略的API提供了一個現成的解決方案。

建議和指針是受歡迎的。

由於提前,

巴特

回答

0

我不相信這是蘋果爲這個提供的API。我只需使用Bonjour API在兩個設備之間建立連接,然後隨機創建一個4位密碼並向其他設備請求。另一個設備提供一個UI來詢問用戶密碼,然後將其傳回並等待答案。如果它們匹配,則設備會在下次連接時存儲彼此的標識符以跳過此過程。

編輯:感謝tc指出這個實現不完全安全。現在我有一臺設備創建一個唯一的隨機密碼,並將其發送到另一臺設備,然後存儲密碼的SHA1哈希以供將來參考。然後,其他設備存儲密碼,並在每次連接進行身份驗證時將其發回。用戶爲了讓設備知道他們將來互相信任,會執行一次數字代碼事情,但現在爲了讓反向工程師連接到設備,他們必須知道設備的標識符和密碼一個有效的連接設備。 (或者他們必須能夠訪問這兩個設備並執行數字代碼;顯然,沒有辦法阻止任何人這樣做)。

+1

-1沒有安全感!如果有人反向設計你的協議,設備標識符可以被僞造。 – 2010-08-11 17:40:44

+0

那麼避免必須反覆進行密碼認證的更好方法是什麼? – 2010-08-11 17:44:47

+0

兩個問題: 1)這意味着你建立一個實際的連接來發送Mac密碼請求。對? 2)我想知道蘋果如何設法將所有運行iTunes的Mac電腦發送到與通行碼請求相同的網絡上(以iTunes形式出現在iTunes中)。它連接到所有的Mac嗎?謝謝你的評論! – 2010-08-11 17:50:50