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