客官:小二,我記得你之前說要給我講公鑰和私鑰的,我這就又來了。
小二(我):客官您來了,我當然記得,這就給您準備公鑰和私鑰的菜式,您稍等。
小二(我):客官您的公鑰和私鑰來了(微笑)。
客官:??公鑰和私鑰呢,不是上來了嗎?
小二(我):客官,這公鑰和私鑰都十分寶貴啊,我不能把我的公鑰和私鑰都給您了,咱們這的廚師也只做自己的公鑰和私鑰,我帶客官您去廚房,客官您自己做屬於自己的公鑰和私鑰,那麼這寶貴的公鑰和私鑰就屬於您的。
客官:做這公鑰和私鑰這般麻煩啊,也好,那你給我解釋解釋這公鑰和私鑰這般寶貝。
小二(我):好嘞。
在講公鑰和私鑰之前,我想講一下加密技術。
加密技術有兩種:乙個是對稱加密,乙個是非對稱加密。
1、對稱加密:是為我們所熟知的加密技術,現在很多的登入介面所用到的加密就是對稱加密這個對稱加密技術,使用者只擁有乙個金鑰,註冊用的是什麼金鑰登入就用什麼金鑰來登入進去。即加密和解密使用的是相同的金鑰。
我們由此可以看出對稱加密存在一種容易被破解的隱患,只要我獲取了使用者的密碼我就可以獲取該使用者的各種操作許可權(為所欲為),所以使用對稱加密,使用者需要增加密碼長度才能減少被破解而被獲取的可能,那麼黑客即使是暴力破密也需要些許時間才行。
所謂的加密技術,事實上是由金鑰和加密演算法組成的。演算法是將普通的文字(或者可以理解的資訊)與一串數字(金鑰)的結合,產生不可理解的密文的步驟,金鑰是用來對資料進行編碼和解碼的一種演算法。
2、非對稱加密:咱們這公鑰與私鑰的菜式就是來自這裡了。即非對稱加密需要兩個金鑰(公鑰和私鑰)。公鑰顧名思義就是公共金鑰,是可以分享出去的;私鑰的話就是使用者私密的不能給任何人的金鑰,當別人獲取到使用者的私鑰,同時又知道了該使用者的公鑰,呵呵,又可以(為所欲為)了。
所以既然公鑰可以是公開出去的,只要您的朋友需要傳送加密資訊給客官您,那麼客官可以把您自己的公鑰分享給您的朋友,那麼私鑰就必須是自己唯一的,不能給別人知道獲取,客官您得把這個私鑰當成是您的銀行卡密碼一樣珍惜儲存好,這公鑰就相當於客官您的銀行卡號,私鑰就是您的銀行卡密碼,呵呵(笑),銀行卡號可以分享給別人給您轉錢,銀行卡密碼吧,客官您都懂的(笑),如果給了別人,(為所欲為)。
在這裡小二我和客官都中場休息下,上張圖緩緩,順便喝杯水(笑)。
好了,客官我們可以繼續了。
小二我在這裡再擴充套件一下這非對稱加密的故事。首先我想先推薦一本書給客官您啊,這是我們客棧的推薦劵——《深網:google搜不到的世界》。這本書裡面為什麼提到了非對稱加密呢。我再給客官您開開小灶。
這本書的作者是匿名的,這名作者是位德國記者,因為這本書涉及比較多可能是的敏感問題,所以作者匿名了。為什麼說敏感,其實我們有必要認識一下深網是什麼?
深網在我所理解的定義裡是網際網路深處的網路。我解釋一下,我和客官您平時日常所上的網都是網際網路中的表面的網路,為什麼是表面的網路呢?這是因為我們平時所上的網載入速度都很快,刷,**就出來了。這是表面網路的特徵。
我們處在這個表面的網路其實就相當於小二我和客官您都赤果果的暴露在人前一樣,因為表面網所有的網路都可以被偵查到,並被竊取到其中的大量資料庫,一旦這些使用者資料被竊取到,要麼或許會自己行動威脅使用者,「你的所有資訊都在我手裡」,要麼把竊取到的使用者資料**在深網中賣給其他企業商,如保險公司,房地產公司,然後我們就會時不時收到各種推銷簡訊和**。或許這只是比較小的麻煩。那麼,我和客官您不就形同沒穿衣服暴露在公眾中嗎。
我們可以把網際網路比喻成一座冰山,那個我們所在的網路世界只是其冰山一角,只佔整個冰山的微小部分,而冰山那巨大的山體是大量的資料,組成全球網際網路,而這部分往往隱藏在水下,隱藏在暗處為人所不見,我們稱這部分為深網(deepweb)它由資料庫,被封閉的**和新的**組成,這些**在搜尋引擎是搜不到的,有人判斷我們使用搜尋引擎可以搜尋的網路占全網際網路10%,那就相當於有90%的**和資料都處在深網中。
深網載入的速度是很慢很慢的,且不說載入了,就是文字載入也得數秒數十秒,這很容易理解:冰山的主體都在水下,山體越深,其水壓就越強,客官您要下去這水下也得克服克服水壓和水中的阻力。至於真正載入速度慢的原理是什麼,小二我想留給客官您自己去看看這本書,裡面把這個過程寫得十分詳細生動,用了乙個搶劫銀行犯怎麼逃脫被追捕的例子說明白的,保證您能懂。
回到主題前,讓我們再次休息會,伸伸腰,彎彎腿,看張圖。
好了,終於要回歸主題了,公鑰和私鑰怎麼就被提到的呢。
在這個pgp軟體中,會給使用者生成一對金鑰,公鑰和私鑰。書中繼續解釋了怎麼通過公鑰和私鑰完成加密然後解密交流的。假如小二我和客官您都擁有了pgp軟體,都有自己的一對金鑰了,首先我們加密交流的條件就成立了。然後,假如小二我要給客官您要傳送資訊,有個前提條件:就是我和客官您都已經獲得對方的公鑰先,也就是我要知道客官您的銀行卡號我才能給您轉賬啊,所以我們雙方得都有公鑰了,這個公鑰可以是我們相互分享給對方,或者可以同過pgp伺服器有個類似**簿的東西記錄使用者的公鑰,只要搜尋對方的名字就能知道對方的公鑰,當然這就得要求對方已經把公鑰放到pgp**簿裡。
因為是我要給客官您發資訊,所以我得用您的公鑰來加密我給您寫的資訊,然後這些資訊就只能您才能看到,其他人是看不到的,因為這資訊使用您的公鑰加密給您的,所以只有使用您的私鑰解密了才能獲取到我裡面的內容,然後客官您回信給我的話就要用我的公鑰加密,然後我使用我的私鑰解密來檢視您給我寫的資訊。所以,這些資訊就只有我們兩個人知道,實現只有兩個人的交流。這只是因為客官您在的原因,我舉了個我倆發資訊交流的例子理解,書中的呢是兩人郵件加密的例子,都是乙個道理。
客官:小二啊,這說了這麼多的公鑰和私鑰的東西,那他在區塊鏈中又如何應用的?
小二(我):是的,所以接下來我就要說到它們在區塊鏈中有什麼用。
公鑰用來加密或驗證,私鑰用來解密或簽名,加密和解密是一對,驗證和簽名是一對。
在位元幣系統中,私鑰是32個位元組組成的陣列,有了私鑰就能生成公鑰和位元幣位址,就能花費對應位址的位元幣,而私鑰話費位元幣的方式就是對這個私鑰所對應的未花費的交易進行簽名。
說白了就是,在位元幣系統裡,位元幣位址是由公鑰通過進行雜湊運算得出來的,就是我們說的hash運算,而公鑰是由私鑰推算出來的,所以獲得私鑰就相當於獲得公鑰和位址了,所以私鑰必須保管好。
私鑰是對每一筆自己所發起的交易訊息進行簽名,來證明交易訊息的發布者是相應位元幣位址的所有者,也就是說,假如我向客官您發起交易,給您乙個位元幣,我需要用我的私鑰對我的位元幣進行簽名,證明這乙個位元幣是我給客官您的,這枚位元幣是從我錢包扣的,不是別人的位元幣。而這個用私鑰簽名就叫做數字簽名。
公鑰是給對方驗證的。我給客官您乙個位元幣,這一筆交易需要客官您用我的公鑰進行驗證,驗證這筆交易是由我發起,不是其他人的,然後驗證成功,這確實是有我用私鑰加密過的。然後完成我和客官您的交易了。這就是公鑰的驗證。
總結一下一筆交易過程的兩個物件都用公鑰和私鑰幹了什麼:
傳送者(例如小二我):用私鑰對資訊進行簽名,使用資訊接收方的公鑰對資訊加密。
接收方(例如客官):用資訊傳送者的公鑰驗證資訊傳送者的身份,使用私鑰對加密資訊解密
我給客官您看張圖或許會更清晰:
小二(我):這就是我所了解到的公鑰和私鑰了,不知客官是否理解,若客官有發現小二的錯誤,您儘管指出,小二我虛心受教(微笑)。
客官:嗯,現在腦袋可能裝了挺多東西,變得暈暈乎乎的了。
區塊鏈 學習筆記(二)
本章將介紹有關位元幣的基礎知識。非對稱加密 非對稱加密有兩把金鑰,一把公鑰一把私鑰。顧名思義,公鑰是公開的,任何人都能獲取,而私鑰是私密的,只有擁有者能使用。舉兩個例子來說明一下公私鑰是如何使用的 位元幣正是使用了非對稱加密的方式,你可以使用私鑰開啟錢包進行支付,而他人沒有你的私鑰,所以無法取走你的...
區塊鏈學習筆記
關於區塊鏈的概念早在2012年就聽說過了,但是當時並未引起重視,當下雖然很流行,但是仍無法看到應用在何方,粗略了解,先學習一點咯,只做一些筆記用來學習下吧 先過概念 區塊鏈是 分布式資料儲存 點對點傳輸 共識機制 加密演算法等計算機技術的新型應用模式。所謂 共識機制是區塊鏈系統中實現不同節點之間建立...
區塊鏈學習筆記 區塊鏈的模型架構
整理自 區塊鏈社會 龔鳴 自下而上分為資料層 網路層 共識層 激勵層 合約層 應用層。資料層封裝了底層資料區塊的鏈式結構,以及相關的非對稱公私鑰資料加密技術和時間戳等技術 網路層包括分布式組網機制 資料傳播機制和資料驗證機制等 共識層主要封裝網路節點的各類共識機制演算法 工作量證明機制pow 權益證...