首页 > 数字化 > 正文

苹果的iMessage 如何使用?iMessage 信息如何发送和接收信息?

2020-11-20 15:42:20来源:苹果官网  

用户通过输入一个地址或姓名来开始一次新的 iMessage 对话。如果他们输入一个电话号码或电子邮件地址,设备就会与Apple 身份识别服务 (IDS)进行联系,来提取与该联系人相关联的所有设备的公钥和 APNs 地址。如果用户输入的是一个名字,设备首先会使用用户的“通讯录” App 来收集与该名字相关联的电话号码和电子邮件地址,然后再从 IDS 中获取公钥和 APNs 地址。

对于每个接收者的设备,用户发出的信息都会单独进行加密。接收设备的公共加密密钥和签名密钥取自 IDS。发送设备针对每个接收设备生成一个 88 位随机值,并将其用作 HMAC-SHA256 密钥,以构成一个派生于发送者和接收者公钥以及明文的 40 位值。88 位值和 40 位值串联构成 128 位密钥,并在 CTR 模式下使用 AES 加密连带的信息。接收方使用 40 位值验证解密后明文的完整性。此信息独有的 AES 密钥采用接收设备上用于加密公钥的 RSA-OAEP(算法)进行加密。之后使用 SHA-1 对加密的信息文本和加密的信息密钥进行混编,该哈希值会使用发送设备的专用签名密钥通过 ECDSA 签名。从iOS 13和iPadOS 13.1起,设备可能使用 ECIES 加密,而不是 RSA 加密。

针对每部接收设备所生成的每条信息包含加密的信息文本、加密的信息密钥和发送者的数字签名。信息然后会分派至 APNs 以进行发送。时间戳和 APNs 路由信息等元数据则不加密。与 APNs 的通信使用前向保密 TLS 频道加密。

APNs 最多只能转发大小为 4KB 或 16KB 的信息,具体取决于 iOS 或 iPadOS 的版本。如果信息文本过长,或者附件中有照片等文件,那么附件会使用 AES 在 CTR 模式下通过随机生成的 256 位密钥进行加密并上传至 iCloud。附件的 AES 密钥、其统一资源标识符 (URI)以及加密形式的 SHA-1 哈希值会作为 iMessage信息的内容发送给收件人。常规的 iMessage信息加密会保护以上内容的机密性和完整性,具体如下图所示。

iMessage 信息如何发送和接收信息。

iMessage 信息如何发送和接收信息。

对于小组对话,每一位接收者及其设备之间都会重复此过程。

对于接收方,每台设备接收到的是 APNs 发来的信息的副本,而且如有需要,设备会从 iCloud 提取附件。如果发送人的电话号码或电子邮件地址与接收者的通讯录相匹配,则会在可能的情况下显示一个名字。

与所有推送通知一样,信息在发出之后就会从 APNs 中删除。然而与其他 APNs 通知不同的是,如果设备不在线,iMessage 信息会列入队列等待发送。信息会被储存最长 30 天。

责任编辑:hnmd003

相关阅读

推荐阅读