当前位置:WooYun(白帽子技术社区) >> 移动终端安全 >> 关于iphone的push功能安全

关于iphone的push功能安全

xsser (十根阳具有长短!!) | 2012-12-23 22:55

iphone允许软件push消息,消息可能是敏感的,该过程并没有需要用户交互输入账号密码的地方

那么是如何保证这个消息的安全性的,如何识别该消息是哪个手机和哪个用户乃至哪个应用的?

分享到:
  1. 1#
    回复此人 感谢
    123 (v2ex) | 2012-12-24 10:11

    首先,Notifications消息是分local和push两种的。不是所有的都是push消息:)

    只讨论iOS上的push的话,iOS上使用的消息管理一般是Apple Push Notification Service。这是由苹果统一提供的push服务。包括OS X也是使用这套框架的。

    这套框架需要开发者提供一套Provider与Apple Push Notification Service(APNS)进行通讯,用下图表现更加直观:
    Apple Push Notification Service

    具体流程就参考图片,我就不多说了。唯一性上是通过Provider在提供推送时需提供手机的标识(unique device certificate),这个UDC会随同push消息发送给APNS。APNS会根据手机标识发送给特定手机。

    iPhone在开启Push的时候,会连接 APNS建立一条TLS加密链接。因为每一台正常的iPhone都有一个独有的UDC,而APNS也有一个服务器证书。两者建立的时候,会验证彼此的证书有效性。

    TLS链接一旦建立,在没有数据的情况下,只需要每隔15分钟进行一次保活的握手。而一旦因为意外原因导致链接中断,iPhone会不断重新尝试建立TLS链接,直到成功。

  2. 2#
    回复此人 感谢
    123 (v2ex) | 2012-12-24 10:15

    开发手册: https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction/Introduction.html

  3. 3#
    回复此人 感谢
    GaRY | 2012-12-24 10:19

    @123 手机可以通过UDC确定了,应用怎么确定?

  4. 4#
    回复此人 感谢
    xsser (十根阳具有长短!!) | 2012-12-24 10:33

    iPhone在开启Push的时候,会连接 APNS建立一条TLS加密链接。因为每一台正常的iPhone都有一个独有的UDC,而APNS也有一个服务器证书。两者建立的时候,会验证彼此的证书有效性。

    服务端验证客户端的权限是靠的udc,这玩意儿泄露了就完了是么?

  5. 5#
    回复此人 感谢
    123 (v2ex) | 2012-12-24 10:38

    @GaRY iOS to Apps具体没看过,猜测是用过应用的GUID或者其他确定的。因为应用需要didRegisterForRemoteNotificationsWithDeviceToken函数注册Notifications。
    @xsser 理论上说,如果重复的话会把相同的信息推送给相同的两个手机。具体没有测试过,可以测试一下

  6. 6#
    回复此人 感谢
    123 (v2ex) | 2012-12-24 10:43

    @xsser 或者只有第一个会收到。还是老话题,不越狱就不会被泄露

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录