Meta向社群開源了匿名憑證服務(Anonymous Credential Service,ACS),這是一個高可用的多租戶服務,供客戶端能夠以去識別化的方式,進行使用者身分驗證。

ACS可以應用的情境有很多,Meta以自家的日誌紀錄應用來解釋開發ACS的原因。Meta在日誌紀錄實施資料最小化精神,僅收集支援服務所需要的最少資料,目標是要在提高用戶體驗的同時,收集和使用更少的資料。

在Meta大多數日誌紀錄用例中,用戶身分並非必要,因此需要從日誌紀錄資料中排除,官方提到,移除身分驗證是刪除可辨識碼的一種方法,但是這樣卻會使系統容易受到包括資料注入等攻擊。為此Meta建立了一個更好的去識別身分驗證方法ACS,從高層次來看,ACS透過將身分驗證分為權杖發行和權杖兌換(Token Redemption)兩個階段,來進行去識別化身分驗證。

在權杖發行階段,客戶端透過身分驗證的通道聯繫伺服器發送權杖,伺服器會簽署權杖並將其送回,接著去識別化身分驗證,也就是權杖兌換階段,客戶端使用去識別化通道提交資料,並使用權杖的變異形式,而非以用戶ID進行身分驗證。

匿名憑證協定建立在VOPRF(Verifiable Oblivious Pseudorandom Function)和盲簽名技術之上。以日誌紀錄為例,Meta將工作流程拆分成兩個步驟解決日誌去識別化的問題,首先客戶端會經過身分驗證,連線到伺服器進一步獲得匿名憑證,之後每當客戶端需要上傳日誌的時候,便會連同匿名憑證和日誌,一起發送到伺服器未經身分驗證的連接中,而匿名憑證便用做客戶端真實性的證明。

Meta解釋,之所以這個協定有效,是因為業務資料和身分驗證資料分離,業務資料使用非盲權杖發送,而身分資料則使用盲權杖發送。不過權杖發行和權杖兌換不會同時發生,客戶端可以將權杖儲存數小時甚至數天,當客戶端想要紀錄資料卻沒有權杖,可以獲取權杖並且立刻進行兌換,只不過這兩步驟會在單獨的請求中,避免任何人可從資料中推斷出使用者身分。

但要將匿名憑證用於現實的大規模系統仍需要解決一些挑戰,第一是權杖兌換的計數,在理想情況,一個憑證應該只能兌換一次,但是在實作中,由於要減少伺服器負擔,Meta接受多次兌換憑證,Meta使用安全的計數服務來限制權杖兌換次數。

另外,匿名憑證協議需要一個金鑰對,伺服器使用金鑰對權杖進行簽章,以便驗證兌換請求,客戶端則需要一個對應的公鑰來解鎖權杖,Meta提到,金鑰輪換對於ACS來說非常重要,這能夠減輕萬一使用者在獲得憑證才遭竊產生的影響。

Meta在ACS儲存庫釋出了一個可擴充C函式庫,其主要元件包括VOPRF協定,用於客戶端權杖盲化、非盲化,以及生成用於權杖兌換的共享秘密。ACS儲存庫還有屬性金鑰衍生函式、離散日誌證明,Meta還用C++實作了用於演示的伺服器和客戶端程式。

熱門新聞

Advertisement