如题,以及随机邮箱是怎么生成的?这些可以被推广到安卓上吗?


我来举个例子。

大家用过各种第三方网站的QQ/微博/微信账号一键关联登录吧。Sign with Apple API就是跟这个一样,使用苹果的Apple ID进行登陆第三方网站。

不同点在于,你如果用QQ/微博/微信账号,注册登录了100个第三方网站,那他们大概率会对你的信息和偏好实施 「共享」 (这是非常婉转的说法了)。 腾讯也会对你注册的网站进行数据分析,俗称隐私裸奔。而Apple采取了随机生成隐私邮箱的方式,也就是虽然你用自己的同一个Apple ID来注册100个第三方网站,但是Apple 会自动帮你生成100个虚拟隐私邮箱,让这100个第三方网站,识别到你并 「分享」你的信息的门槛和难度大大提高。以此来规避你的信息被超低成本的在互联网上流通交易。

具体实施还要等iOS13正式发布出来的效果看。不排除很多第三方网站会禁止苹果虚拟邮箱进行注册和登录。


这个问题说简单也简单,就是iCloud自动生成了一个随机虚拟邮箱。通过Apple ID登陆证明你是你,然后app的广告邮件会通过虚拟邮箱推到真实的邮箱。说白了就是一个邮件forward。

关于邮箱地址生成原理,WWDC上放了图,看不出来什么规律,估计是随机数,空间大概算一下是3,656,158,440,062,976个地址(

36^10),理论上够了。

当然苹果的包装能力是很强的,做成专门的API体验就很好,邮箱名会和app绑定,不想要那个虚拟邮箱直接解绑就是,对用户透明。

Outlook邮箱也有类似的功能叫alias,可以申请多个不同的邮箱名,用一段时间不爽了可以解绑,缺陷就是封装不够到位而且有数量限制。

每个应用一个邮箱到底有什么用呢?最主要、直接的一点是,想不被骚扰的时候解绑就是了。更深层次的是,可以防止app之间结成联盟刻画用户画像。

当然app支持率,特别是国内令人怀疑。国内app大多想要一个手机号,虚拟邮箱意义不太大。当然日后sign-in With Apple ID如果支持虚拟手机号直接吹爆,然而中国工信部对实名比较严苛,但是苹果和中国政府深度合作,如果发生了什么事,可以反向追踪到真实手机号那问题就不大了。就是吧,互联网公司也是要恰饭的。。。

多的就不说了


你打车用的APP会给你和司机随机生成一个电话号码24小时内有用

这种类型的东西就像

现在有一人食的日料店也好什么店也罢 中间有一块帘子挡住你和对面的人 让你们都不知道对面是谁 他系统中的随机邮箱的变化就是那块帘子 可能你看到有个小哥哥小姐姐在吃饭 你数好他是第几个做到他的对面 但是他不知道你是谁

邮箱中你知道他是谁 可是对面不知道 如果邮箱不随机了 就相当于把帘子打开了 就成了面对面的邮箱发送了


经过对Sign with Apple API的实践,来回答下这个问题:

(如果不关心API过程,可以直接滑到总结部分)。

----------

实践素材:

  1. 两个苹果开发者账号。(必须为两个独立的账号,不能是同一个公司下的两个子账号)
  2. 文档:https://developer.apple.com/documentation/signinwithapplejs

实践过程:

  1. 代码:略
  2. 分别用两个苹果开发者账号,注册两个APP,并开通 SignInWithApple
  3. 生成并下载苹果开发者账号证书。(用于生成 client_secret)
  4. 用同一个AppleID 登录者两个 APP 并查看结果。

苹果最终返回结果:

  1. 登录成功后,苹果会通过前端返回用户的 name和 email ,且只会返回一次。
  2. 登录成功后,苹果会通过前端返回 id_token 和 code
  3. 后端,可以通过 code 和 client_secret 获取到另外一个 id_token

结果截图:

苹果返回的数据:

苹果返回的数据

其中,id_token 解密出来的结果:

id_token 解密结果

业务方处理结果:

  1. 通过id_token可以解析到 苹果的用户ID。(栏位为:sub)
  2. 只能通过前端获取到昵称邮箱。且只能获取一次。
  3. 不同的苹果开发者账号针对同一个用户,获取到的苹果用户ID不同。

总结,苹果是通过这种方式实现隐私保护的,且目前存在一些安全性问题:

  1. 用户在同一个APP下,第一次登录,苹果会让用户填写一个「昵称」,并将用户的邮箱通过前端发送给APP。第二次登录只能获取到用户id。
  2. 不同开发者所获取到的 苹果用户ID不同。
  3. 不同APP获取到的苹果「匿名邮箱」不同。
  4. 和Google或Facebook登录的不同是,苹果没有提供 userinfo 介面或其他任何介面,用户id仅能通过jwt进行传输。
  5. 和国内的微信, QQ等 OAuth 不同的是,苹果不提供UnionID机制。也就是说,无法跨开发者管理账户信息。
  6. 和 Google 不同的是,苹果提供「匿名邮箱」选项。
  7. 和Google,Facebook,Github等国外主流的三方登录不同的是,该功能是「收费的」,必须付费开通苹果开发者账号才能使用。这意味著网站已经实名关联到具体组织。无法像Google等组织那样的匿名性。对互联网的开放性不利。
  8. 最重要的是: 苹果登录和 Google,Facebook,Github登录有著本质的区别,前者只是共享用户ID,后者是OpenAPI,后者是互联网精神愿景的一部分。前者将数据垄断在自己的生态,后者允许用户决定自己数据的生态。

安全性问题:

  1. 苹果是将邮箱通过前端传递给业务方的。没有提供任何后端途径。则导致,业务方无法验证该邮箱的安全性。也就是说,为了确保邮箱一定是用户本人的,业务方后端,目前仍需要给用户发确认邮件。
  2. 只有第一次登录APP时,苹果才会给业务方发送「昵称」和 「邮箱」, 如果业务方保存失败,则无法再次获取苹果给的 「昵称」和 「邮箱」


安卓用了这个功能还怎么卖隐私?


推荐阅读:
相关文章