Signal-Protocol
Signal Protocol JavaScript 庫中的 keyId 是什麼?
我正在嘗試為學校項目實現 Signal Protocol JavaScript 庫。在此頁面上, generatePreKey 函式將 keyId 作為參數。我找不到規範中的內容。有人能告訴我我必須從哪裡得到它,或者它只是一個我必須自己生成的隨機數嗎?
KeyHelper.generatePreKey(keyId).then(function(preKey) { store.storePreKey(preKey.keyId, preKey.keyPair); });
通常您僅將這些標識符用於永久儲存。您將不得不再次查找這些鍵,通常您會使用唯一標識符(例如標籤)來查找。這些通常不是隨機的,如果它們是隨機的,那麼它們應該是 128 位或更高以避免衝突(即兩個密鑰可能共享相同的數字)。
經過一些高級網際網路搜尋,我發現了以下花絮:
創建帳戶後,使用者可以將密鑰上傳到伺服器。和 public_keys 都是 Curve25519 Base64 編碼的
identity_key
公鑰,大小為 33 字節。客戶端在註冊時會發布 100 個預密鑰,見圖 4.2,但這不是限制。與這些密鑰一起,pre-key
將通過public_key
.key_id
是 3 個字節的標識符。之後有一個程式碼範例清楚地表明它是一個 24 位序列號,可能是無符號的,因此您可以為其提供一個非隨機數 [0, 2^24)。