如題,以及隨機郵箱是怎麼生成的?這些可以被推廣到安卓上嗎?


我來舉個例子。

大家用過各種第三方網站的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時,蘋果才會給業務方發送「昵稱」和 「郵箱」, 如果業務方保存失敗,則無法再次獲取蘋果給的 「昵稱」和 「郵箱」


安卓用了這個功能還怎麼賣隱私?


推薦閱讀:
相关文章