一個 Aries Agent 通常是由以下的組件構成的
密鑰管理服務 Key Management Service(KMS)
原來在 Indy 中被稱為數(shù)字錢包,在 Aries 中被稱為 KMS。KMS 就是用來存儲像 DIDs,密鑰,可驗證的憑證以及其他私有信息的一個數(shù)據(jù)庫。
SQLite 實現(xiàn)的 KMS 可以用來做一個小型的 agent,或者是手機的 agent。PostgreSQL 實現(xiàn)的 KMS 可以用于企業(yè)級的應用。不管是兩種中的哪個,其存儲的數(shù)據(jù)都是經過加密的。
因為存儲在 KMS 里的數(shù)據(jù)都是加密的,那么數(shù)據(jù)是如何被加密和解密的呢?通常是通過運行著 agent 的設備的硬件來處理的,比如手機上的指紋服務,人臉識別服務。所以所有的需要使用存儲在 KMS 中的密鑰才能進行的操作,比如創(chuàng)建、存儲、驗證數(shù)據(jù)等,都只能通過調用 KMS 的代碼以及上邊所講的使用運行 agent 的設備硬件提供的密鑰來實現(xiàn),這樣可以避免密鑰被暴漏給其他人或者程序。
Agent 通信接口
Agent 通信接口負責在 agent 間建立連接,發(fā)送和接收消息。Aries 使用 DIDComm(DID Communication)協(xié)議來在 agent 間進行通信的。
賬本接口
Agent 需要提供跟賬本進行互動的接口,比如查詢、插入 DIDs 等。一個 Aries 賬本接口一般會分為三部分:
- DID resolver:負責處理接收到的 DID,到賬本中取回 DID 文檔(DIDDoc)
- 賬本寫入機制:負責如何向賬本中寫入數(shù)據(jù)
- 可驗證憑證的處理:負責處理可驗證的憑證
控制器 controller
Controller 就是為不同業(yè)務服務的應用程序,他提供了業(yè)務規(guī)則。對于一個手機 agent,它會設計針對不同的操作應該觸發(fā)指定的服務。對于一個頒發(fā)/驗證憑證的 agent,controller 可能會是一個企業(yè)已有的數(shù)據(jù)庫系統(tǒng),從中提取元數(shù)據(jù)并生成新的憑證數(shù)據(jù)。這個對于企業(yè)(憑證頒發(fā)者)以及個人(數(shù)據(jù)持有者)都是有好處的,企業(yè)擁有高質量的數(shù)據(jù),不需要再進行人工的審核校驗,對于個人來說,具有高質量的數(shù)據(jù),不需要手動輸入以及更快速的回復,不需要再次手動檢驗。