【问题标题】:How secure are apple APNS push notifications?苹果 APNS 推送通知的安全性如何?
【发布时间】:2015-12-19 14:02:15
【问题描述】:

有谁知道 Apple 的 APN 推送通知服务中的漏洞在哪里?

我们可以确保我们的通知安全地发送给 Apple,所以我们只需要知道它们是否可以从那时起被拦截?

动机: 我们已经构建了一个 iOS 消息应用程序,我们正在将其作为 100% 安全的解决方案,具有一些以前从未在安全性方面被利用的功能。

【问题讨论】:

  • 推送通知只不过是通知应用程序它有数据/信息要查看。您不发送实际数据本身。
  • @BlackFrog 可以在通知的有效载荷中发送 2kb 的数据
  • 您可以发送 2kb 的数据,但如果您担心安全性,您将只发送一个标识符。当应用程序接收到该标识符时,应用程序随后会连接到服务器以获取实际数据本身。同样,您认为 APRS 的哪一部分易受攻击?
  • 我同意这是正常的做事方式。我只需要知道是否有任何理由我们不应该在推送通知中发送消息正文。如果最终用户可以阅读通知中的消息,那会更好,我只需要确保从安全角度来看这是可以的。黑客有没有现成的方法来拦截通知是我的主要问题

标签: ios security push-notification apple-push-notifications


【解决方案1】:

Apple 去年发布了UNNotificationServiceExtension,允许开发人员通过 APNS 发送完全加密的通知负载,然后让最终用户设备上的应用程序在显示通知之前自行进行解密(或加载任何其他支持数据) :

UNNotificationServiceExtension 类提供通知服务应用程序扩展的入口点,它允许您在将远程通知传递给用户之前对其内容进行自定义。 Notification Service 应用程序扩展不提供任何自己的 UI。相反,它会在适当类型的通知发送到用户设备时按需启动。您使用此扩展程序来修改通知的内容或下载与扩展程序相关的内容。例如,您可以使用扩展来解密加密的数据块或下载与通知相关的图像。

我的团队正在对此进行进一步调查,作为以完全符合 HIPAA 的方式发送有用通知的一种方式,Apple 无法查看通知的明文。我们很乐观。

【讨论】:

  • 您的调查发现了什么?
  • 对于最安全的应用程序,考虑到 Apple 员工和国家行为者的威胁向量(例如 NSA 如何渗透 Google),那么您可以:1) 使用 UNNotificationServiceExtension 2) 向消息 3 添加对数随机延迟) 当实际消息不存在时,以概率 α=0.1 随机发送 APNS 4) 当消息实际存在时,以概率 β=0.9 发送 APNS。
  • 我们能够使用 UNNotificationServiceExtension 功能成功实现端到端加密推送通知。
【解决方案2】:

看看this article:

设备本身与推送云服务的连接是 当然是通过 TLS 通道保护的。

...

但实际的文字和其他内容呢? 与应用云推送消息一起发送的元数据 为安装在设备上的应用提供服务。 如何保护?事情 这里是它总是如上所述在运输中是安全的,但是 消息本身在这些传输之间采用明文形式

这就是用户隐私的问题。所有推送云 服务拥有通过他们的系统发送的每条推送消息, 以明文形式

也就是说,他们有能力分析、查看、分享/出售 数据。 而且他们有被入侵和丢失数据的风险 给网络犯罪分子

因此,一般而言,如果您希望安全起见,请不要通过推送通知发送任何敏感数据。相反,只需使用推送通知作为同步机制,以便告诉应用需要以您可以控制的安全方式获取新数据。

【讨论】:

  • 仅供参考 - 那篇文章写于 2014 年。那篇文章的作者在 2017 年 2 月 4 日发表了以下评论:“使用 iOS 10,您可以在从服务器,然后有一个钩子在手机上解密它,然后才显示在锁屏/通知中心/等。”
  • 我读过this post about OneSignal's and its data policy(它对它的开放性令人惊讶)。但是,如果 OneSignal 能够获得your app user's phone nr, ip addr(locations), browsing behaviour, etc 并分享(出售)给他们的合作伙伴——我怎么能确定谷歌、苹果、亚马逊等公司没有使用用户数据进行同样的业务(无论他们的政策如何)?作为开发者,我们需要承认,我们有责任在我们的应用用户和从中获利的科技公司之间建立数据链接
【解决方案3】:

简答:您不应将敏感数据包含在通知负载中。

更多细节:尽管 APNs 使用两个信任级别强制执行端到端、加密验证和身份验证,但根据 Apple documentation,您不应在有效负载中包含敏感数据

因为不能保证远程通知的传递,所以永远不要 包括敏感数据或可以通过其他方式检索的数据 你的有效载荷。相反,使用通知来提醒用户新的 信息或作为您的应用有数据等待它的信号。

例如,电子邮件应用程序可以使用远程通知来标记 应用程序的图标或提醒用户有新电子邮件可用 特定帐户,而不是发送电子邮件的内容 直接地。收到通知后,应用程序应打开一个 直接连接到您的电子邮件服务器以检索电子邮件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2011-09-19
    • 2011-05-19
    相关资源
    最近更新 更多