Fuchsia 藍牙子系統保留任何連線成功的通訊端資訊 與 Fuchsia 相關聯。繫結資訊 包括配對密鑰 (例如加密金鑰),以及所用對等端的相關中繼資料 建立連線
永久連接儲存空間是由
bt-gap
元件。資料使用
stash
程式庫。保留資料有兩種:主機資料以及
繫結資料。
JSON 結構定義
核心藍牙系統會以 JSON 格式儲存持續性資料。本節說明 序列化資料的格式。
基本類型
本節說明其他結構定義重複使用的類型結構定義。所有結構定義都會是 以 JSON 物件形式表示
地址
代表藍牙裝置地址
鍵 | 值類型 | 說明 |
---|---|---|
類型 | 字串 | public 或 random |
value | 數字陣列 (8 位元) | 6 個八位元裝置位址,按小端位元組順序排列 |
以下範例代表值為 FF:FF:00:00:00:01
的隨機位址:
{
"type": "random"
"value": [1, 0, 0, 0, 255, 255]
}
安全性屬性
配對密鑰的藍牙連線安全性屬性。適用對象 例如由對等互連人員透過 系統會將未驗證的臨時金鑰視為「未驗證」。
鍵 | 值類型 | 說明 |
---|---|---|
已驗證 | 布林值 | true :如果已啟用 MITM 防護功能 |
secureConnections | 布林值 | 如果密鑰是透過安全連線配對進行交換,則傳回 true |
encryptionKeySize | 數字 (8 位元) | 用於交換作業的加密金鑰大小 |
範例:
{
"authenticated": false,
"secureConnections": true,
"encryptionKeySize": 16
}
鍵
128 位元數字,代表與配對相關的密鑰。使用這個結構定義的通用鍵 是本機裝置的身分識別解析金鑰 (IRK)。
Key 在使用時,代表本機產生的金鑰,以供日後發行使用。
鍵 | 值類型 | 說明 |
---|---|---|
value | 數字陣列 (8 位元) | 16 個八位元金鑰 (按小端位元組順序排列) |
同類應用程式鍵
128 位元金鑰,代表來自對等點的配對相關密鑰。採用此模型的通用金鑰 是對等點的身分識別解析金鑰 (IRK)。
每個鍵都有 128 位元的值 (例如金鑰) 和安全性屬性, ,表示金鑰發布時的連線安全性。
鍵 | 值類型 | 說明 |
---|---|---|
安全性 | 安全性屬性 | 發布過程中的連結安全性 |
value | 數字陣列 (8 位元) | 基礎為 16 個八位元組的金鑰,按小端位元組順序排列 |
以下範例代表保護 MITM 值 0x100f0e0d0c0b0a090807060504030201
的金鑰:
{
"security": {
"authenticated": true,
"secureConnections": false,
"encryptionKeySize": 16
},
"value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
}
長期金鑰
128 位元金鑰,用來建立加密連線。這個結構定義可以用來表示 能源長期金鑰 (LTK)。
「長期金鑰」對等金鑰的安全性屬性不只代表 連線,以及金鑰本身的安全性。
鍵 | 值類型 | 說明 |
---|---|---|
金鑰 | 對等鍵 | 加密金鑰。 |
海豚 | 數字 (16 位元) | 加密分隔線 |
rand | 數字 (64 位元) | 隨機值 |
範例:
{
"key": {
"security": {
"authenticated": true,
"secureConnections": false,
"encryptionKeySize": 16
},
"value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
},
"ediv": 48879,
"rand": 9223372036854775807
}
代管資料
Fuchsia 藍牙系統與一或多個藍牙控制器相容。系統 將藍牙主機子系統執行個體化 (bt-host) 每個可用的控制器Fuchsia 針對使用中的 Bt 主機儲存部分中繼資料。
鍵 | 值類型 | 說明 |
---|---|---|
irk (選填) | 金鑰 | 發布至 bt-host 所有對等點的身分解析金鑰 |
範例:
{
"irk": {
"value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
}
}
繫結資料
透過標準藍牙配對與 Fuchsia 系統建立關聯的每個對等點 這道程序被視為與 Fuchsia 系統建立聯繫。Fuchsia 保留各個 建立繫結,方便日後在連線時重建加密連結,不必重複 安全性和配對程序。Fuchsia 保留其他中繼資料,以加快 連線建立流程。
LE 和 BR/EDR 傳輸分別定義了不同的 JSON 物件結構定義。Fuchsia 系統可能會 保留 LE 資料或 BR/EDR 資料,或同時根據特定傳輸的同類支援(例如: 雙模式對等互連可能會導致這兩種傳輸的繫結資料)。
LE 連線參數
鍵 | 值類型 | 說明 |
---|---|---|
connectionInterval | 數字 (16 位元) | 控制器時間段的連線間隔 |
connectionLatency | 數字 (16 位元) | 控制器時間片段的連線延遲 |
supervisionTimeout | 數字 (16 位元) | 控制器時間片段中的監督逾時時間 |
LE 債券資料
鍵 | 值類型 | 說明 |
---|---|---|
connectionParameters (選用) | LE Connection 參數 | 對等互連的偏好連線參數 |
PeerLtk (選用) | 長期金鑰 | 由同業分配的長期金鑰 |
localLtk (選填) | 長期金鑰 | 在本機產生並發布至對等互連端的長期金鑰 |
irk (選填) | 對等鍵 | 同業的身分解析金鑰 |
巴西/EDR 債券資料
鍵 | 值類型 | 說明 |
---|---|---|
rolePreference (選填) | 字串 | "leader" 或 "follower" |
linkKey (選填) | 對等鍵 | 連結加密金鑰 |
services | 字串陣列 | 已快取找到的服務 UUID |
繫結資料結構定義
鍵 | 值類型 | 說明 |
---|---|---|
書籍 ID | 數字 | 64 位元不透明對等互連 ID |
地址 | 地址 | 對等點的識別地址 |
hostAddress | 地址 | 對等互連的本機 bt-host 身分位址 |
名稱 (選填) | 字串 | 完整或簡稱的「本地名稱」與對等互連節點的其他部分 |
le (選填) | LE 債券資料 | 低功耗傳輸的繫結資料 |
bredr (選填) | 巴西/EDR 債券資料 | BR/EDR 傳輸的繫結資料 |
範例:
{
"identifier": 1,
"address: {
"type": "random",
"value": [202, 202, 254, 202, 239, 190]
},
"hostAddress": {
"type": "public",
"value": [1, 2, 3, 4, 5, 6]
},
"name": "My Device",
"le": {
"peerLtk": {
"key": {
"security": {
"authenticated": true,
"secureConnections": false,
"encryptionKeySize": 16
},
"value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
},
"ediv": 0,
"rand": 0,
},
},
"bredr": {
"rolePreference": "follower",
"linkKey": {
"security": {
"authenticated": true,
"secureConnections": true,
"encryptionKeySize": 16
},
"value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
},
"services": [
"0000110a-0000-1000-8000-00805f9b34fb",
"0000110b-0000-1000-8000-00805f9b34fb"
]
}
}