跳轉到

PCC 目標

訂定好目標之後,再去實作細節,否則容易把方向走偏。 我們接著就來看看對 PCC 來說,哪些是指引道路的大方向。

無狀態計算使用者資料

PCC 只有在收到使用者個請求時,才會去使用個資。 個資在回傳請求後就不會在任何地方被保留,包括日誌和除錯時,這代表 Apple 員工也沒有能力取得使用者的個資。 注意措辭,這裡是指沒有能力,不是沒有權限,我個人認為只有做到讓任何人都沒有「能力」才是真正的保護。 這裡就代表 PCC 內的安全性和隱私性不能依賴於外部系統,例如負載均衡器不能做 TLS offload。

在一些需要使用快取的場景,PCC 會利用使用者給予的金鑰把個資加密後儲存, 只有在使用者下次請求且夾帶該金鑰時,這個快取才可能被解密並取得。 使用者的金鑰會定期去更新,這代表快取是可以透過使用者端強制撤除的。

沒辦法使用高權限的操作

Apple 員工在進行維護時,無法提升自身權限來做特殊操作,例如所有程序的記憶體取得, 或者讓特定程序擁有更高的權限。

無法做定向性攻擊

一般的系統架構中,我們可以透過一些零日攻擊劫持特定服務的 server, 接著利用其中的資料庫帳號密碼,竊取所有的使用者資料。 這時,我就只需要攻擊特定的 server 即可,不需要連資料庫都進行劫持,這就是定向性攻擊。

如果攻擊者需要針對多個系統進行劫持才能得到使用者的資料,這時系統架構的安全性將大大提升。 PCC 的其中一個目標便是讓攻擊者無法做定向性攻擊。

可驗證的開放式架構

研究員需要驗證兩件事,一個是運行在 PCC 的程式是安全且保護隱私的, 另一個是確保真的有使用公開的程式在 PCC 中。 需要注意的是所謂的開放式,可能代表僅提供第三方可靠的安全性機構進行驗證,而非開源。