簡介
在OpenHarmony中,設備互信認證模塊作為安全子系統的子模塊,負責設備間可信關系的建立、維護、使用、撤銷等全生命周期的管理,實現可信設備間的互信認證和安全會話密鑰協商,是搭載OpenHarmony的設備進行可信互聯的基礎平臺能力。
設備互信認證模塊當前提供如下功能:
- 設備互信關系管理功能:統一管理設備互信關系的建立、維護、撤銷過程;支持各個業務創建的設備互信關系的隔離和可控共享。
- 設備互信關系認證功能:提供認證設備間互信關系、進行安全會話密鑰協商的能力,支持分布式軟總線實現互信設備間的組網。
為實現上述功能,設備互信認證模塊當前包含設備群組管理、設備群組認證和帳號無關點對點認證三個子模塊,其部署邏輯如下圖:
圖 1 子系統架構圖
其中,
- 設備群組管理服務:統一管理不同業務建立的本設備與其他設備間的互信關系,并對外提供設備互信關系的創建入口 ,完成信任建立后創建帳號無關設備群組,并將信任對象設備添加進群組;OpenHarmony上各業務可獨立創建相互隔離的設備間可信關系。
- 設備群組認證服務:支持已建立可信關系的設備間完成互信關系的認證及會話密鑰的協商。
- 帳號無關點對點設備互信認證:提供設備間基于共享秘密建立一對一互信關系的功能,并支持基于這種互信關系的認證密鑰協商。
- 認證協議庫:統一封裝不同類型的認證協議,支持多種輕量級以及標準認證協議實現。
共享秘密的使用要求和約束:
業務在設備間建立賬號無關點對點信任關系時,需要使用帶外共享的秘密信息,該秘密信息在共享方式、長度、復雜度以及時效性上均需符合安全要求。系統會對共享秘密的長度做約束,如不滿足,則無法進行賬號無關點對點信任關系的建立,規則如下:
協議 | 共享秘密(PIN碼)長度 |
---|---|
EC-SPEKE | >=6bit |
DL-SPEKE | >=6bit |
ISO | >=128bit |
目錄
/base/security/device_auth
├── default_config # 編譯配置文件
├── frameworks # 設備互信認證IPC代碼
├── interfaces # 對外接口目錄
├── test # 設備互信認證的接口測試用例
├── common_lib # C語言公共基礎庫
├── deps_adapter # 依賴組件適配器代碼
│ ├── key_management_adapter # 密鑰及算法適配層
│ └── os_adapter # 系統能力適配層
└── services # 設備互信認證服務層代碼
├── frameworks # 設備互信認證框架層代碼
├── data_manager # 設備互信群組信息管理模塊
├── identity_manager # 認證憑據管理模塊
├── legacy
│ ├── authenticators # 認證執行模塊
│ ├── group_auth # 設備群組認證服務
│ ├── group_manager # 設備群組管理服務
├── creds_manager # 憑據管理模塊
├── mk_agree # 設備級主密鑰協商
├── cred_manager # 賬號憑據插件管理模塊
├── key_agree_sdk # 密鑰協商sdk
├── privacy_enhancement # 隱私增強模塊
├── session_manager # 會話管理模塊
└── protocol # 認證協議庫
說明
接口說明
設備互信認證組件中,設備群組管理服務負責將不同業務建立的設備間可信關系抽象成一個個可信群組,對外提供統一的接口,包含群組創建、刪除、查詢等功能;設備群組認證服務基于已經建立過可信關系的設備群組,提供設備可信認證與端到端會話密鑰協商功能;同時提供群組無關,基于認證憑據的設備互信認證能力。
表 1 設備群組管理服務提供的API接口(DeviceGroupManager)功能介紹
[]()
[]()[]()接口名 | []()[]()描述 |
---|---|
[]()[]()const DeviceGroupManager *GetGmInstance() | []()[]()獲取設備群組管理的實例。 |
[]()[]()int32_t RegCallback(const char *appId, const DeviceAuthCallback *callback) | []()[]()注冊業務的監聽回調。 |
[]()[]()int32_t CreateGroup(int32_t osAccountId, int64_t requestId, const char *appId, const char *createParams) | []()[]()創建一個可信設備群組。 |
[]()[]()int32_t DeleteGroup(int32_t osAccountId, int64_t requestId, const char *appId, const char *disbandParams) | []()[]()刪除一個可信設備群組。 |
[]()[]()int32_t AddMemberToGroup(int32_t osAccountId, int64_t requestId, const char *appId, const char *addParams) | []()[]()添加成員到指定群組ID的可信設備群組。 |
[]()[]()int32_t DeleteMemberFromGroup(int32_t osAccountId, int64_t requestId, const char *appId, const char *deleteParams); | []()[]()從指定可信設備群組里刪除可信成員。 |
[]()[]()int32_t ProcessData(int64_t requestId, const uint8_t *data, uint32_t dataLen) | []()[]()處理綁定或者解綁的數據。 |
[]()[]()int32_t GetGroupInfo(int32_t osAccountId, const char *appId, const char *queryParams, char **returnGroupVec, uint32_t *groupNum) | []()[]()查詢可信設備群組信息。 |
表 2 設備群組認證模塊提供的API接口(GroupAuthManager)功能介紹
[]()
[]()[]()接口名 | []()[]()描述 |
---|---|
[]()[]()const GroupAuthManager *GetGaInstance() | []()[]()獲取設備群組認證的實例。 |
[]()[]()int32_t AuthDevice(int32_t osAccountId, int64_t authReqId, const char *authParams, const DeviceAuthCallback *gaCallback) | []()[]()認證可信設備。 |
[]()[]()int32_t ProcessData(int64_t authReqId, const uint8_t *data, uint32_t dataLen, const DeviceAuthCallback *gaCallback) | []()[]()處理認證的數據。 |
表 3 基于認證憑據的設備互信認證能力相關API接口功能介紹
[]()
[]()[]()接口名 | []()[]()描述 |
---|---|
[]()[]()int32_t StartAuthDevice(int64_t requestId, const char* authParams, const DeviceAuthCallback* callbak) | []()[]()指定認證憑據,觸發設備互信認證。 |
[]()[]()int32_t ProcessAuthDevice(int64_t requestId, const char* authParams, const DeviceAuthCallback* callbak) | []()[]()響應認證請求,處理認證數據。 |
[]()[]()int32_t CancelAuthRequest(int64_t requestId, const char* authParams) | []()[]()取消認證請求。 |
審核編輯 黃宇
-
API
+關注
關注
2文章
1485瀏覽量
61817 -
鴻蒙
+關注
關注
57文章
2310瀏覽量
42746 -
OpenHarmony
+關注
關注
25文章
3660瀏覽量
16158
發布評論請先 登錄
相關推薦
評論