Signature

簽名大小

  • June 20, 2022

我想知道每個簽名的 1 位數據的數字簽名的大小通常是多少。我試圖弄清楚如果我只發送消息或數據包中的數據與發送簽名數據時消息的大小如何增加。

注意我是密碼學的新世界,所以如果我的問題聽起來太幼稚,請不要介意。

有兩種類型的簽名方案:

  • 帶有消息恢復的簽名 - 越來越少見,以及
  • 附上簽名。

帶有附錄的簽名的“附錄”部分通常具有恆定的大小,除了 Falcon 之類的,它使用像 Huffman 編碼這樣的熵編碼來減小簽名大小。

而且我希望 RSA 不是您在職業生涯中會遇到的唯一簽名方案 - RSA 是雙射排列,它可以用作小消息的“帶有消息恢復的簽名”。大多數簽名方案將首先散列消息(以一種或另一種方式) - 消息可以長或短 - 然後使用私鑰應用公式將消息的散列與公鑰相關聯。

數字簽名的大小(即簽名生成過程輸出的密碼的大小)實際上與簽名的消息及其大小無關,因為簽名的是消息的散列。該簽名大小取決於簽名系統、它的參數和簽名的裝飾(通常簽名前面有標頭、ASN.1 或其他,這就是簽名;也許它被編碼為字元而不是字節,將其大小增加一個因子,例如十六進制的 2 或 base64 的 4/3)。在下文中,我忽略了這種裝飾。

對於 RSA 和基於分解難度的簽名方案,簽名通常是公共模數的大小,2048 位(即 256 字節)是目前推薦的最小值,例如 112 到 128 位對稱安全性。

對於DSA、ECDSA、EdDSA…等主流簽名,基於離散對數問題在一些循環群中的難度 $ q $ 元素,與 $ q\approx 2^{2b} $ 為了 $ b $ 位安全,簽名通常是 $ 4b $ (即 128 位安全性的 64 字節簽名)。短 Schnorr 簽名將其減少到 $ 3b $ 但是以犧牲安全性為代價:合法的密鑰持有者可以準備具有不同含義和相同簽名的消息(這是可修復的,但不是主流)。

理論上使用基於配對的方案 BLS 可以進一步減小簽名大小,降至 $ 2b $ 漸近地;但這是以犧牲速度為代價的,不是主流,而且在最接近標準的情況下,尺寸是 $ 3b $ ,可與短 Schnorr 簽名相媲美。


數字簽名的大小成本是與未簽名版本相比,簽名消息要大多少。提供消息恢復的簽名方案允許將部分消息嵌入簽名中,因此成本低於簽名大小。對於另一種最常見的簽名類型,成本等於簽名大小:帶有附件的簽名方案,其中籤名獨立於消息,例如附加。

對於 RSA,ISO/IEC 9796-2 簽名方案允許將成本減少到一個雜湊寬度加上兩個字節,例如,任何消息的成本為 34 字節,至少 222 字節,256 字節的簽名用於 2048 位公共模數和SHA-256(成本可以進一步減半,降至接近 $ b $ -bit,請參閱 Louis Granboulan 的OPSSR,但這不是主流)。

對於基於某個組中離散對數問題難度的簽名,最小成本似乎是 $ 3b $ -少量。一個這樣的系統是 ISO/IEC 9796-3 的 Abe-Okamoto(但與 Short Schnorr Signature 相比,它並沒有提高成本,這可能是它沒有被廣泛使用的原因)。另一個是 ANSI X9.92-1-2009 的 ECPVS(它對隨機消息具有相同的成本,但可以降低具有固有冗餘的消息的成本,而無需訴諸壓縮)。

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