作者:蘇江,首發(fā)于《區(qū)塊鏈生存訓練》飯團
首先,傳統(tǒng)的加密方式肯定是對稱加密。
即:我向你發(fā)送一串信息,我用一定的規(guī)則(算法)把它加密,你接收到信息后,用同樣的的算法逆向解密。
明顯,這種方法必須只有你我知道這個算法規(guī)則,才能保證信息的安全。
但是有個問題,假設你我素未謀面,而且相距甚遠,不能悄悄話, 我可以向你傳送加密的消息,但是如何把加密的方法(算法)告訴你呢?不然你不知道算法規(guī)則你也無法解密,我也不可能直接就把解密方法直接發(fā)送給你,因為怕被截獲。那么,難道我得把加密方法再次加密?加密方法的加密方法如何再約定,這就成了一個循環(huán)的問題...
對稱加密需要雙方提前商定好解密方法,即保存好約定的密鑰,一旦密鑰被泄露,這種保密方法就不再安全,需要協(xié)商使用新的密鑰。
如果兩個人擴大成多個人,保存和傳遞密鑰就更比較麻煩,每次協(xié)商一個密鑰,復雜性更高,同時也有更大安全性的風險,如果一個人的密鑰泄露,那么整個群體的加密方式就失效了。
對稱加密有這種固有的缺點,直到1977年,一種非對稱加密的方法被設計了出來。
比如,我想發(fā)消息給你,于是,你把加密方法(公鑰)告訴我,甚至公開給大家,但你接受到消息之后,卻只有你自己(通過私鑰)才能解密,大家盡管擁有你的公鑰卻沒法解密,
這是怎么做到的呢?
這里引入上一個概念:哈希算法。
哈希算法有一個顯著的特點:
- 單向加密,不可逆。
即你無法通過結(jié)果值來逆向推導出最初值。
哈希算法是一種通過輸入任意長度字符,生成固定長度字符輸出的不可逆的算法。
公鑰與私鑰的關系就是:私鑰經(jīng)過單向的計算,生成公鑰。
公鑰就是由私鑰經(jīng)過類似哈希運算算法所得,即你無法通過公鑰來逆向推導出私鑰,但私鑰擁有者卻可以通過哈希運算來生成公鑰。
在非對稱加密算法中,主要有這兩種典型的代表:
- RSA算法
- 橢圓曲線算法
RSA算法的原理也很簡單:
比如,任意生成一個200位的數(shù)字,將他分解成兩個素數(shù)的乘機。我們知道,兩個素數(shù)相乘是非常容易的,當是根據(jù)結(jié)果來推導出兩個素數(shù)的值卻極其困難,即使是超級計算機也要耗費海量的時間和資源才能算得。這便是數(shù)學中的一種難以可逆的計算方法。
橢圓曲線則算法是另外一種非對稱加密的算法。
簡單來講,它是一個方程,在平面中呈現(xiàn)為曲線狀,同樣,它也是一個數(shù)學問題,單向計算很容易,逆向計算卻極其困難,橢圓曲線算法太復雜,一時半會真心看不懂...
再說回比特幣中的公鑰和私鑰的概念,對于普通老百姓經(jīng)常被這些概念弄糊涂。再來梳理下:
基于橢圓加密的原理,由私鑰是可以計算出公鑰的,再由公鑰經(jīng)過一系列數(shù)字簽名運算就會得到比特幣錢包地址。
1,私鑰是一個隨機數(shù),32個字節(jié)隨機生成。
2,通過使用橢圓曲線加密算法,生成公鑰,共65字節(jié)。
3,公鑰進行一系列的哈希運算,生成比特幣地址,具體過程參考知乎有專門的文章解釋,就不詳述了....
所以說,在比特幣這個系統(tǒng)里,你可以公開你的收款地址、公鑰,基于哈希運算這種密碼學原理,再加上可靠性極高的橢圓加密算法,目前任何計算機都幾乎不可能通過你的地址和公鑰來破解你的私鑰,從而保證了你財產(chǎn)的安全性。
我是蘇江,長期分享區(qū)塊鏈思考,歡迎加我微信與我交流:iamsujiang