我需要能够向外部设备证明它正在与iphone上的应用程序通话。我可以通过蓝牙连接到设备,但设备如何知道它正在与正确的应用程序进行通信?手机上的任何应用都可以建立蓝牙连接或使用现有连接,因此我们需要一些方法来验证手机上的应用是来自我们公司。
这些问题很接近,但答案并没有解决这个问题
我考虑使用apple healthkit,因为ios可以将数字签名添加到应用程序写入healthkit的记录中。应用程序可以接受来自外部设备的挑战,将记录写入包含挑战的healthkit,并通过ios进行数字签名,然后回读该签名记录并发送到外部设备。
记录包含应用程序包ID并由操作系统签名,因此外部设备可以检查记录是否包含质询,并且包ID来自我们公司并验证数字签名。设备上的另一个应用程序无法伪造包含挑战,捆绑ID和数字签名的此记录。
这种方法存在问题,例如苹果可能拒绝滥用健康套件,并且需要用户允许读写健康包。