楠木軒

n-n多籤與m-n多籤誰才是正在的Schnorr

由 卯秀珍 釋出於 經典

Schnorr 最大的特性是可以進行公鑰和簽名聚合(aggregate)。可以把多個簽名聚合成一個簽名,因此大大節省了多重簽名的位元組空間。這種聚合不但是同一個input,不同singer之間的簽名聚合,還可以是不同input之間的簽名聚合。

而在一些文章中對 Schnorr 多籤的解釋中出現如下的解釋就是錯誤的:

實際上,提到 Schnorr 多籤基本上是指:n-n 多籤,而不是 m-n 多籤。也就是舉例 3-3 多籤交易是可以的,而舉例 2-3 多籤則不行。

為什麼呢?

我們先看下《Simple Schnorr Multi-Signatures with Applications to Bitcoin》原文的一些解釋:

An obvious improvement is to replace the need for implementingn-of-nmultisignatures in an ad-hoc fashion with a constant-size multi-signature primitive like Bellare-Neven.

再如:

In the cryptographic literature, multi-signatures really only refers ton-of-npolicies.

Schnorr 多簽在比特幣中的應用原文也指出,這裡講的多籤是指 n-n 的多籤。而 Schnorr 應用到更廣泛的 m-n 多籤則需要 key trees, MAST 或者傳統門限模式。

也就是說對於 m-n 的多籤,並不能直接應用 Schnorr 簽名聚合功能,從而享受 Schnorr 所帶來的體積小的直接優勢。相反,對於 m-n 而言,若要使用 Schnorr 則要窮舉所有可能聚合的公鑰,對於像 5-7 這樣的模式,則有 2*7 = 14 種聚合方式,顯得相當麻煩、可操作性極低。

廣義多籤 vs 狹義多籤

我們經常會提到多籤(MultiSig),但很多時候場景不一樣,它所代表的含義也不一樣。例如:使用多籤可以提升資產的安全性嗎?回答:可以或不可以,都有道理。這就要看你在說哪一種多籤。

廣義多籤:廣義上的多籤,是我們經常說的 m-n 多籤,它是多人共同管理資產的一種方式。這種多籤體現的是一種權力的分配(資產處置權),它的目的是為了分配權力,而不是提升安全。

所以在這種場景下,多籤只是權力的體現,不是安全的提升。例如,你把你的個人資產做成了 2-2 的多籤(每方都是你自己)。那麼,你的資產安全是否會提升?

答案是否定的。這裡先不做過多解釋,也許有人會反對這個答案,我們先看下面關於狹義多籤的定義。

狹義多籤:接著上面的例子,如果你把 2-2 的多籤部署在兩臺不同伺服器上,由它們各自掌握一方私鑰,花費資產同時需要兩臺伺服器簽名。因為駭客破解其中一臺伺服器,並不能盜取資產,因此你的資產安全級別提升了。這就是狹義的多籤。因為兩臺伺服器均為你所有,它所體現的不是一種權力的分配,而是安全性的提升。(真實的環境中,我們會做成 3-5、4-7 等形式的多籤以提升災難恢復能力)。

從上面的定義可以看出,對於多籤,我們常有兩個目的:一個是權力的分配,另一個是安全的提升。而這兩個目的通常不會同時存在。因此,理清你在說哪一種多籤目的非常重要,而不是混為一談。

對於 Schnorr 多籤而言,一般是指 n-n 形式的狹義多籤。

比起 ECDSA,Schnorr 簽名所獨有的聚合優勢,的確會有讓其有很大的應用前景。但是對於廣義多籤而言,所起的作用並不會太大。

注:關於廣義和狹義多籤的定義只是個人為了便於理解多籤目的而起的名詞,因此它並不是特有術語。

文中所提 Schnorr 相關資料連結:

https://eprint.iacr.org/2018/068.pdf

https://blockstream.com/2018/01/23/en-musig-key-aggregation-schnorr-signatures/