關鍵|《Wisdom Chain文檔知識庫》之Schnorr籤名算法

2021-01-21 金色財經區塊鏈

English

Schnorr Signature Algorithm of Wisdom Chain DocumentKnowledge Base

This article comes from the official Twitter of Wisdom Chain

URL:

https://twitter.com/Wisdom_Chain/status/1301382987762806784?s=20

In the last chapter, we talked about the aggregatesignature used in WisdomChain is the signature aggregation of each key generated by the parties using Schnorr signature. Now let's learn about the past and present of the Schnorr signature algorithm.

Schnorr Signature Algorithm was first proposed by German Cryptologist Claus Schnorr in 2008. In cryptography, it is a digital signature scheme, which is famous for its simplicity and efficiency. Its security is based on the intractability of some discrete logarithm problems. Schnorr's principle is described as follows:

The numbers are represented in lowercase letters, for example: a = 42. At the same time, we will use some points on the elliptic curve. These points are pairs of large numbers satisfying elliptic curve equation.

We will use capital letters to represent these points, such as A= (4,68). Some algebraic operations can be performed on points on elliptic curves. The above two points can be added together and we can get approximately random third points, which is expressed as: C=A+B. A point can be added to itself many times: D = C + C + C.

When we talk about a point adding itself many times, we call it "multiply by a number": D = 3 C. Obviously, if we add a point A to itself many times (or multiplied by a large number) and get a point B, if we only know the original point A and the result point B, it is quite difficult to calculate the large number multiplied by A. The "difficulty" here means that if we want to calculate this "big number", we can not simply divide B by A, we can only guess a value x continuously and calculate whether x A equals B.

So if the value of X is very large, even greater than the sum of all the atoms in the universe, it will take an unacceptable time to guess the value of X. At the same time, if someone holds the correct x, calculating x*A is very fast. This asymmetry will be the premise of our discussion.

Alice holds the private key x, then selects a random number r and the origin G on the elliptic curve, calculates R: = r G, public key X: = xG, uses the hash function to obtain a random number e: = Hash (R,X, message), and then calculates s: = e * x + r.

Alice sends Bob R, X, message, and point values s, Bob verifies s G equals R+e X. In fact, not only is Bob, but anyone in the world can prove this proof by itself. Once s G=R+e X passes validation, it can prove that Alice holds X of private key and generates a legal signature: (s, e).

Finally, to create a signature from this proof, Alice needs to customize a hash function to hash the message she signed. In this case, it is necessary to make sure that the signature calculated for one message cannot be reused for another message.

This customization process can be achieved by simply hashing R, X and signature information

e:=Hash(R,X,Message)

A good hash function will return a completely different hash value even if only one character is changed, making it impossible to calculate the value of S.

The brief description of Schnorr Signature Protocol is as follows:

Setup:x: random number (aka private key)G := common pointX: x*G(aka public key)Sign:r : random number (aka nonce)R: r* G(aka commitment)e : Hash(R, x, message)(aka challenge)s:=r+e*x(aka response)return (R, x, s, message)((S, e) aka signature)Verify:receive (R, x, s, message)e := Hash(R, x, message)S1:= R+e*XS2 :=s*Greturn OK if S1 qeuals S2

Based on this, developers can add more complex concepts in the future, such as WisdomChain aggregated signatures. The advantage of aggregatesignature is that all the input involved in a transaction can be completed by only one merge signature, which greatly reduces the amount of data processing and makes the network faster and more efficient.

簡體中文

本文來自Wisdom Chain官方Twitter

URL:

https://twitter.com/Wisdom_Chain/status/1301382987762806784?s=20

01

Schnorr籤名算法簡介

Schnorr籤名算法最初是由德國密碼學家ClausSchnorr於2008年提出的,在密碼學中,它是一種數字籤名方案,以其簡單高效著稱,其安全性基於某些離散對數問題的難處理性。

02

Schnorr的原理描述

下面用小寫字母表示數字,比如:a=42。同時我們將使用一些橢圓曲線(ellipticcurve)上的點。這些點是一些滿足橢圓曲線方程的大數對。

我們將用大寫字母來表示這些點,比如:A=(4,68)。橢圓曲線上的點可進行一些代數運算。其上兩個點可以相加可以得到近似隨機的第三個點,表示為:C=A+B。某個點可以與自身相加多次:D=C+C+C。

當我們講一個點與自身相加多次時,我們稱其為「乘以一個數」:D=3 C。顯而易見的,如果將一個點A與自身相加很多次(或者說將其乘以一個很大的數)然後得到一個點B,如果我們只是知道原始點A和結果點B,計算出與A相乘的這個大數是相當困難的。這裡的「困難」意思是,如果要計算出這個「大數」,我們不能簡單的用B除以A,只能不斷的猜測一個值x,計算是否x A等於B。

所以如果這個x的值非常大,甚至大於宇宙中所有原子數目的和,猜測這個x的值將花費一個難以接受的時間。同時如果某人持有正確的x,計算x*A是非常迅速的。這種非對稱性將作為我們討論的前提。

Alice持有私鑰x,然後選擇一個隨機數r,以及橢圓曲線上的原點G,計算出R:=r G,公鑰X:=xG,使用哈希函數獲取一個隨機的用於驗證的數字e:=Hash(R,X,message),然後計算s:=e*x+r。

Alice給Bob發送點R,X,message,和點數值s,Bob驗證s G等於R+e X。事實上,不僅是Bob,這個世界上的任何人都可以獨自對這一證明進行驗證。一旦s G=R+e X通過了驗證,既可以證明Alice持有私鑰x,並生成了一個合法的籤名:(s,e)。

最終,如果要將籤名從這一證明中創造出來,Alice需要定製一個哈希函數來對她籤名的消息的進行哈希計算。這樣的話需要確定針對一個消息所計算出的籤名,不能被復用給另外一個消息。

03

R,X與籤名信息

這個定製過程可以簡單的通過將R,X和籤名信息進行哈希來做到:

e:=Hash(R,X,Message)

一個良好的哈希函數,會在哪怕僅有一個字符有更改的情況下,也會返回完全不同的哈希值,使得計算出s的值是不可能的任務。

Schnorr籤名協議的簡潔描述如下:

Setup:x: random number (aka private key)G := common pointX: x*G(aka public key)Sign:r : random number (aka nonce)R: r* G(aka commitment)e : Hash(R, x, message)(aka challenge)s:=r+e*x(aka response)return (R, x, s, message)((S, e) aka signature)Verify:receive (R, x, s, message)e := Hash(R, x, message)S1:= R+e*XS2 :=s*Greturn OK if S1 qeuals S2

基於此,開發者在未來可以添加更複雜的概念,比如WisdomChain聚合籤名。聚合籤名優勢就在於將一筆交易中所有涉及的輸入只需要一個合併籤名就可以完成,大大減少了數據處理量,使網絡速度更快,更加高效。

關注Wisdom Chain動態

Twitter:@Wisdom_Chain微博:WisdomChain知乎:智慧鏈技術社區Facebook:WisdomChainTelegram:@WisdomPublicChain相關資源

WIsdom Chain公鏈文檔知識庫:https://docs.wisdchain.com/#/

Wisdom Chain官網:

https://wisdchain.io/

Wisdom Chain技術論壇:

http://tech.wisdchain.io/

Wisdom Chain開原始碼庫:

https://github.com/WisedomChainGroup

Wisdom Chain區塊瀏覽器:

https://scan.wisdchain.com

本文來源: 微信公眾號/ 作者:WisdomChain中文社區

相關焦點

  • 深度|《Wisdom Chain文檔知識庫》之多重籤名
    Privacy: using Schnorr aggregate signature can improve the privacy of data on the chain.Use of aggregatesignatureIn the privacy protection of wisdomchain's latest white paper, we see the use of aggregate signatures.
  • 解析 |《Wisdom Chain文檔知識庫》之條件支付
    Zero knowledge proof and blockchain can be used at this time.Later, when Bitcoin was born, we found that it could be done by using the characteristics of blockchain.How is conditional payment realized in Wisdom Chain?
  • 為什麼選擇在Wisdom Chain上發token
    在以太坊上使用ERC-20標準構建智能合約,至少應當包含以下內容:①合約的名字:用來為合約/代幣命名②合約的標誌:類似ETH之於以太坊,作用等同於股票代碼③小數位:定義代幣的分割性,如果小數位為0代表代幣不可分,小數位最高為18位(即小數點後18位)
  • 首發| 火線視點:為什麼Schnorr籤名被譽為比特幣Segwit後的最大...
    ,從而提高驗證效率;不過,它也有一些不足之處,在於:(1)用戶在使用前需要多輪交互;(2)籤名會消耗一些額外帶寬和計算資源;(3)籤名對隨機數的隨機性要求非常高。作為一項可能會替代橢圓加密算法ECDSA籤名機制的技術更新,Schnorr籤名是比特幣底層技術開發的重要裡程碑之一。此次代碼加入後,意味著這項技術已經基本成型,接下來需要等待社區確定軟分叉的正式激活時間,不過此時間點目前尚未有定論。
  • 以VON CHAIN為例,技術小白怎麼看懂黑貓Github開原始碼庫?
    其實啊,要判斷一個項目是不是真的有技術實力並沒有大家想像中那麼難,你只要在它們公開的Github開原始碼庫中查看幾個數據,項目大概的開發水平也心裡有數了。案例:雖然VON CHAIN是2020年年底才正式上線,但我們從黑貓GITHUB開原始碼庫中可以發現,VON從2019年已經開始上傳、更新代碼,而且代碼一直以來更新都非常頻繁,從開源的代碼庫中可以看到技術團隊一直堅持更新,幾乎每日都有上傳新的開發文檔。
  • SimpleChain 奇點(Singularity) 星辰時代 主網升級公告
    This is a full-scale upgrade covering main-chain performance, cross-chain communication and sub-chain modules.
  • PyTorch實現,GitHub4000星:微軟開源的CV庫
    機器之心報導編輯:魔王、陳萍本文介紹了微軟開源的計算機視覺庫,它囊括了計算機視覺領域的最佳實踐、代碼示例和豐富文檔。近年來,計算機視覺領域突飛猛進,在人臉識別、圖像理解、搜索、無人機、地圖、半自動和自動駕駛方面得到廣泛應用。而這些應用的核心部分是視覺識別任務,如圖像分類、目標檢測和圖像相似度。
  • tf籤名的代價與tf籤名的重要知識
    許多ios開發者通常在內部測試階段使用企業籤名和超級籤名,實際上,除了這兩種快速的內部測試方法外,還有tf籤名。這是一種蘋果認可的內部測試分發模式,他更安全、更穩定,tf籤名價格比許多開發者想像的便宜,讓我們來談談tf籤名價格和其他重要的知識,這些知識是開發者在籤名時必須了解的。
  • 如何高效快速準確地完成ML任務,這4個AutoML庫了解一下
    選自TowardsDataScience作者:Andre Ye機器之心編譯編輯:陳萍、杜偉AutoML 是當前深度學習領域的熱門話題。只需要很少的工作,AutoML 就能通過快速有效的方式,為你的 ML 任務構建好網絡模型,並實現高準確率。簡單有效!
  • 數據科學和機器學習的最佳Python庫
    預建庫: Python有100多個預建庫,用於實現各種ML和深度學習算法。因此,每次您要在數據集上運行算法時,只需要做的就是用單個命令安裝和加載必要的程序包。預先構建的庫的示例包括NumPy,Keras,Tensorflow,Pytorch等。
  • 最好的Python機器學習庫
    驅動機器學習的算法相當複雜,包括了很多的數學知識,所以自己動手去實現它們(並保證其正常運行)將會是一件很困難的任務。幸運地是,有很多聰明的、有奉獻精神的人為我們做了這個困難的工作,因此我們只需要專注於手邊的應用程式即可。這並不是一個詳盡無遺的清單。有很多代碼並未在此列出,在這裡我只會發布一些非常相關或知名的庫。下面,來看看這份清單吧。
  • 中科院趙軍帶你認識:知識圖譜的關鍵技術
    該報告首先介紹知識圖譜的發展脈絡,特別是與傳統知識表示方法的區別和聯繫,然後介紹知識圖譜構建和應用中的關鍵技術,進而討論知識圖譜及其構建與應用中的關鍵技術如何服務於大數據環境下的推薦系統,最後簡要介紹基於知識圖譜的推薦系統的前沿學術進展。
  • 就能學會以太坊 JSON API 基礎知識!
    作者 | Nicolas Schapeler責編 | Carol出品 | 區塊鏈大本營(ID:blockchain_camp)前幾天,作者遇到了這樣一種情況,需要在一個讓web3.py幾乎不可能工作的環境中使用Python與Ethereum網絡進行通信。
  • 港中文開源視頻動作分析庫MMAction,目標檢測庫算法大更新
    機器之心報導參與:李亞洲、杜偉昨日,香港中文大學多媒體實驗室(MMLab)OpenMMLab 發布動作識別和檢測庫 MMAction,同時也對去年發布的目標檢測工具箱 mmdetection 進行了升級,提供了一大批新的算法實現。
  • 知識管理工具選石墨、語雀還是Baklib呢?
    企業知識庫因使用對象的不同大致有以下兩種作用:企業內部企業知識庫使信息和知識結構化,有利於知識的存儲和使用!知識庫幫助企業間信息系統進行有效對接和協作,提高員工工作用效率。知識庫可以幫助企業實現對客戶知識的有效管理。減小客服壓力,同時節約了員工的培訓成本。
  • TF籤名是什麼,TF籤名必須要知道的知識
    TF籤名是什麼?很多iOS開發者對於TF籤名上架應該都不陌生了,TF籤名又叫TF上架,是蘋果官方的內測應用分發平臺,所以穩定性非常高,受到很多開發者的青睞。TF籤名要知道的知識TF籤名的應用支持內部測試和外部測試,內部測試需要使用邀請碼,外部測試人員只需要點擊開發者的公開邀請連結,就可以下載應用。外部測試者和開發者不必來自相同組織。任何用戶都可以通過郵件被邀請成為測試者。內部測試者必須是開發者帳號的成員,並擔任Admin、Legal或Technical角色。
  • 28335DSP的FFT算法時間
    經過多次傳輸,當採樣數據達到一定數量時,產生DMA中斷,算法就在該中斷函數內完成。整個方案的大致框架如下圖:算法每次更新的數據量為90點,而算法處理的數據長度為128點,這是因為計算過程中需要數據重疊。數據採樣頻率約為54kHz,DMA中斷間隔即90點數據採樣的時間約為1.6ms,所以算法時間要小於1.6ms才能保證實時性。
  • 並行算法庫清單: 附各算法代碼實例!
    【IT168 資訊】並行算法採用並行程式語言NESL實現,該語言是卡內基梅隆大學Scandal項目中開發的一種程式語言。對於每個算法,團隊給出了一個簡短的描述以及複雜性評估(就工作和深度而言)。  在很多情況下,NESL代碼已經設置完畢,可以使用FORMs基本接口來運行算法。隨意更改數據或算法,並提交修改後的版本。
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    比如最經典、使用人數最多的matplotlib庫,其有著十多年的歷史積累,可生成高質量出版級別的圖形,它幾乎已經成了事實上的Python繪圖標準庫。再比如在matplotlib庫基礎上衍生的其它繪圖庫,如seaborn、ggplot、plotnine等等,甚至還有其它的一些庫如底層使用JavaScript 實現的開源可視化庫pyecharts等,這些庫都比較容易使用,幾行代碼就可畫出來漂亮的圖形。
  • 編輯PDF文檔多面手 福昕PDF套件新體驗!
    圖21 頁面導航欄2.9 無需費心比較文檔 不同之處自動列出來  有時候用戶需要比較兩份文檔到底有哪些不同(比如做了哪些修改難道要同時打開兩份文檔來進行費時費力的逐頁比較?  無需如此麻煩,只需要使用福昕PDF套件的"比較文檔"功能,就可以自動的進行兩個文檔之間的比較。並且福昕PDF套件會給出比較結果數據以及標註出兩份文檔間不同之處。