1. 活動基本信息
1)題目:
【區(qū)塊鏈技術工坊46期】橢圓曲線密碼學簡介
2)議題:
目前區(qū)塊鏈項目如火如荼,幾乎所有的區(qū)塊鏈都會用到錢包,我們也經常聽說橢圓曲線這個密碼學術語,那么它們之間有沒有什么關系?“加密貨幣”,到底是不是加了密的貨幣?為什么***和以太坊等眾多區(qū)塊鏈項目選用的是橢圓曲線而不是RSA?大名鼎鼎的Sony PS3上的私鑰是如何被盜的?請報名者帶好筆記本電腦,且看PPIO區(qū)塊鏈開發(fā)工程師蔣鑫的技術分享。
議題綱要:
1)橢圓曲線的重要性
2)RSA算法回顧
3)群論
4)橢圓曲線上加法的定義
5)基于橢圓曲線的簽名和驗簽
6)安全性問題
7)ECC與RSA的比較
3)嘉賓:
蔣鑫,PPIO區(qū)塊鏈高級開發(fā)工程師,7年安卓系統(tǒng)開發(fā)經驗,2年安全開發(fā)經驗,1年區(qū)塊鏈開發(fā)經驗,南京大學碩士畢業(yè)。曾組織“安卓安全小分隊(ASS)”發(fā)現第二個Android Master Key漏洞。
4)活動定位
區(qū)塊鏈技術工坊系列活動,由HiBlock,下筆有神科技,兄弟區(qū)塊鏈,HPB芯鏈,墨客聯合主辦,聚焦于深度分享區(qū)塊鏈知識,實現小會技術交友。
區(qū)塊鏈技術工坊一直以來堅持4F原則:
- Frency - 每周三晚上一次;
- Focus - 聚焦區(qū)塊鏈技術分享;
- Fun - 20人以內會前做自我介紹,分享有深度的技術內容,技術交友;
- Feedback - 會后有活動實錄文章和合影照片,深度對接業(yè)務交流;
通過技術工坊,連接了廣大區(qū)塊鏈項目和開發(fā)者,搭建了技術交友和知識傳播的平臺。
2.會議實錄
RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。
RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。
在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然解密密鑰SK是由公開密鑰PK決定的,由于無法計算出大數n的歐拉函數phi(N),所以不能根據PK計算出SK。
正是基于這種理論,1978年出現了著名的RSA算法,它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網絡服務器中注冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常采用傳統(tǒng)加密方法與公開密鑰加密方法相結合的方式,即信息采用改進的DES或IDEA密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息后,用不同的密鑰解密并可核對信息摘要。
RSA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現今的三十多年里,經歷了各種攻擊的考驗,逐漸為人們接受,截止2017年被普遍認為是最優(yōu)秀的公鑰方案之一。
SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048bits長的密鑰,其他實體使用1024比特的密鑰。RSA密鑰長度隨著保密級別提高,增加很快。下表列出了對同一安全級別所對應的密鑰長度。
一、ECDSA概述
橢圓曲線數字簽名算法(ECDSA)是使用橢圓曲線密碼(ECC)對數字簽名算法(DSA)的模擬。ECDSA于1999年成為ANSI標準,并于2000年成為IEEE和NIST標準。
它在1998年既已為ISO所接受,并且包含它的其他一些標準亦在ISO的考慮之中。與普通的離散對數問題(discrete logarithm problem DLP)和大數分解問題(integer factorization problem IFP)不同,橢圓曲線離散對數問題(elliptic curve discrete logarithm problem ECDLP)沒有亞指數時間的解決方法。因此橢圓曲線密碼的單位比特強度要高于其他公鑰體制。
數字簽名算法(DSA)在聯邦信息處理標準FIPS中有詳細論述,稱為數字簽名標準。它的安全性基于素域上的離散對數問題。橢圓曲線密碼(ECC)由Neal Koblitz和Victor Miller于1985年發(fā)明。它可以看作是橢圓曲線對先前基于離散對數問題(DLP)的密碼系統(tǒng)的模擬,只是群元素由素域中的元素數換為有限域上的橢圓曲線上的點。
橢圓曲線密碼體制的安全性基于橢圓曲線離散對數問題(ECDLP)的難解性。橢圓曲線離散對數問題遠難于離散對數問題,橢圓曲線密碼系統(tǒng)的單位比特強度要遠高于傳統(tǒng)的離散對數系統(tǒng)。因此在使用較短的密鑰的情況下,ECC可以達到于DL系統(tǒng)相同的安全級別。這帶來的好處就是計算參數更小,密鑰更短,運算速度更快,簽名也更加短小。因此橢圓曲線密碼尤其適用于處理能力、存儲空間、帶寬及功耗受限的場合。
二、ECDSA原理
ECDSA是ECC與DSA的結合,整個簽名過程與DSA類似,所不一樣的是簽名中采取的算法為ECC,最后簽名出來的值也是分為r,s。
簽名過程如下:
1、選擇一條橢圓曲線Ep(a,b),和基點G;
2、選擇私有密鑰k(k<n,n為G的階),利用基點G計算公開密鑰K=kG;
3、產生一個隨機整數r(r<n),計算點R=rG;
4、將原數據和點R的坐標值x,y作為參數,計算SHA1做為hash,即Hash=SHA1(原數據,x,y);
5、計算s≡r - Hash * k (mod n)
6、r和s做為簽名值,如果r和s其中一個為0,重新從第3步開始執(zhí)行
驗證過程如下:
1、接受方在收到消息(m)和簽名值(r,s)后,進行以下運算
2、計算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。
3、驗證等式:r1 ≡ r mod p。
4、如果等式成立,接受簽名,否則簽名無效。
1. 密碼強度比較
Symmetric | ECC | RSA |
---|---|---|
80 | 163 | 1024 |
112 | 233 | 2240 |
128 | 283 | 3072 |
192 | 409 | 7680 |
這是學術界普遍認可的密碼強度對照表。比如,3072-bit的RSA密碼強度,大約相當于283-bit的ECC密碼強度,大約相當于128-bit的對稱密碼算法的強度。換句話說,攻擊分組加密算法AES-128的難度,與攻擊數字簽名RSA-3072的難度相當。此外,我們應注意到,從RSA-1024到RSA-3072,模數長度增長了200%,但密碼強度僅增強了50%左右;拿密碼哈希函數來比較,這個安全強度的增長只是相當于從SHA1增強到SHA-256。
2. 性能比較
筆者基于開源的tommathlib實現了ECDSA(符合ANSI X9.62標準)和RSA簽名算法(符合PKCS#1 v2.1, e=65537)。
_ | Verify | Sign |
---|---|---|
RSA-1024 | 12 us | 511 us |
RSA-2048 | 30 us | 3270 us |
ECDSA-192 | 590 us | 490 us |
表中數據是筆者基于自己的開發(fā)機器(Intel Xeon CPU E5520 @ 2.27GHz)上單線程運行得出的實驗結果。對于ECDSA來說,生成簽名與驗證簽名的開銷相差不大,而對于RSA來說,驗證簽名比生成簽名要高效得多,這是因為RSA可以選用小公鑰指數,比如{3, 5, 17, 257 or 65537},而安全強度不變。如果只看單次操作,那么ECDSA的Sign操作比RSA的性能更好,而RSA的Verify要比ECDSA更好。
3. 結論
(1) RSA簽名算法適合于:Verify操作頻度高,而Sign操作頻度低的應用場景。比如,分布式系統(tǒng)中基于capability的訪問控制就是這樣的一種場景。
(2) ECDSA簽名算法適合于:Sign和Verify操作頻度相當的應用場景。比如,點對點的安全信道建立。
蔣鑫老師發(fā)布了一個ecc加密算法的樣例,其中部分內容標識為//TODO的是需要聯系者補充,以驗證你對ECC的理解。如果需要答案或者與蔣鑫老師交流,請掃描二維碼加群溝通。
源碼地址: https://github.com/PPIO/ppio-blockchain-code-talks
本次實錄紀要由輝哥(王登輝,下筆有神區(qū)塊鏈 CTO 王登輝,HiBlock上海合伙人)整理記錄,轉發(fā)務必注明出處及本段信息。
現場活動合影照片:
坐席左一女生為neutrino社區(qū)主管劉怡女士,坐席左二為本次分享嘉賓蔣鑫老師。
3. 下期活動宣傳
1)題目:
區(qū)塊鏈技術工坊47期】區(qū)塊鏈醫(yī)療方案和分布式認證介紹
2)議題:
北京眾享比特科技有限公司成立于2014年,是國內最早從事區(qū)塊鏈底層平臺和應用案例開發(fā)的技術服務公司。現為國家高新技術企業(yè)、中關村高新技術企業(yè),共取得了61項軟件著作權,已申請50項核心專利。在醫(yī)療方面眾享比特,團隊開發(fā)了區(qū)塊鏈處方藥分發(fā)平臺,解決處方藥單的“多重支付”問題——比如有些人會拿著一張藥單去各個藥房多次用醫(yī)保卡開藥,會造成騙保的情況。 本次技術工坊,我們就來聽聽他們在區(qū)塊鏈+醫(yī)療領域的解決方案和應用實踐吧。
議題綱要:
- 醫(yī)療信息化領域存在問題探討
- 區(qū)塊鏈助力處方藥信息流轉
- 醫(yī)療領域數據共享方案介紹
- 分布式身份認證系統(tǒng)
3)嘉賓:
崔志華是北京眾享比特科技有限公司上海分公司技術負責人,南京大學信息管理學院眾享科技區(qū)塊鏈實驗室研究員,曾任江蘇眾享金聯科技有限公司技術總監(jiān),HP物聯網專家,云架構師等;曾負責多個國內大型物聯網及區(qū)塊鏈等項目的開發(fā)和實施。在使用區(qū)塊鏈技術服務金融,醫(yī)療,電商等領域有深刻的認識和豐富的落地經驗,具備在復雜的商業(yè)場景中運用成熟的技術解決行業(yè)痛點。
4)時間/地點:
2019-06-12(周三晚上) 18:30 / 上海徐匯區(qū)龍華中路596號A座
5)活動報名海報
參會活動需要短信門禁,敬請報名參會,空降無法著落。
加入HiBlock技術微信群: