2010-08-11 149 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