Signal-Protocol

Signal Protocol JavaScript 庫中的 keyId 是什麼?

  • July 27, 2020

我正在嘗試為學校項目實現 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)。

引用自:https://crypto.stackexchange.com/questions/82113