應用密碼學

BLS 簽章

BLS(Boneh–Lynn–Shacham)簽章擅長一項非凡的把戲:成千上萬筆獨立簽章可以被壓縮成單一的短簽章,僅需一次驗證即可確認。以太坊的權益證明仰賴此特性,才能處理數十萬之譜的驗證者集合。

BLS 使用配對——一個雙線性映射 e: G1 x G2 -> GT,滿足 e(aP, bQ) = e(P, Q)^(ab)——建構於對配對友善的曲線上(以太坊用 BLS12-381)。要用私鑰 x 對訊息 m 簽章:把 m 雜湊到曲線上的點 H(m),計算簽章 sigma = x·H(m)。要用公鑰 P = xG 驗證:檢查 e(sigma, G) == e(H(m), P)。聚合的魔法在於:把許多簽章相乘,sigma_agg 為各 sigma_i 之積,若它們都簽署「同一」訊息,整批只需一次配對檢查 e(sigma_agg, G) == e(H(m), 各 P_i 之和) 即可驗證。

這正是以太坊驗證者每個時隙都對同一個區塊作證的原因:無論多少人簽署,他們的 BLS 簽章都聚合到約 96 位元組,搭配單一的合併公鑰。簽章是確定性的——沒有每次簽章的 nonce,因此 ECDSA 那種重用 nonce 的自傷風險根本不存在——而且很短。代價是:配對運算比 ECDSA 或 Schnorr 驗證更重,對「不同」訊息聚合簽章時每個相異訊息需要一次配對,且惡意金鑰攻擊必須以擁有證明或訊息增廣來阻擋。

對「同一」訊息的 BLS 聚合驗證幾乎免費;聚合「不同」訊息時每個相異訊息需一次配對。因此戲劇性的節省只在許多方簽署同一份內容時出現——正是驗證者作證的情境。

又稱
Boneh–Lynn–Shacham signature