【韭菜幣讀】用Emoji科普公鑰與私鑰的基本原理
在區塊鏈的中,我們經常聽到這樣的詞彙——公鑰和私鑰。很多小白在學習區塊鏈知識時,還是容易被這些術語搞得一臉懵逼。韭菜幣讀系列此文謹獻給幣圈新朋友,希望能夠用Emoji幫助大家理解比特幣公鑰和私鑰的基本常識。(本文圖片來源:“Making Money Trustworthy-Bitcoin Explained,作者:Tess Rinearson)
研究密碼學的人們經常使用“愛麗絲”和“鮑勃”作為解釋概念的角色。今天,我將用他們來幫助解釋公鑰密碼學的基本邏輯。
首先,什麼是對稱加密。舉個例子,愛麗絲想交給鮑勃一個裝有祕密檔案的公文包。如果愛麗絲和鮑勃有互相匹配的鑰匙,事情很簡單:她可以將公文包上鎖,並用鑰匙把它鎖起來,然後將它給鮑勃。
當鮑勃收到公文包時,他會用自己的鑰匙解鎖,因為這兩把鑰匙相同,於是鮑勃會得到包中的祕密檔案。這個過程被稱為對稱加密。
但是通常而言,人們互相之間少有“同時擁有一把鎖的鑰匙”這種情況,因為要安全地傳遞鑰匙並不容易。或者說,如果愛麗絲有給鮑勃傳送鑰匙的私人且安全的方式,她同樣也可以用其來傳輸檔案本身。
所以,比較常見的方式為,愛麗絲和鮑勃不需要同時擁有一個鎖的鑰匙,而是他們彼此都有自己的鑰匙和自己的鎖,這意味著他們不需要考慮傳遞鑰匙的事情。
具體是這麼運作的:
愛麗絲用鑰匙鎖起了帶有掛鎖的公文包,並將其傳遞給鮑勃。當鮑勃收到愛麗絲的公文包時,他無法解開愛麗絲的掛鎖。但是,他將其添上了自己的掛鎖。
然後將其返還給愛麗絲:
然後愛麗絲用她的鑰匙將掛鎖從公文包上摘下來:
公文包上現在只有一個掛鎖:鮑勃的。愛麗絲再將公文包寄回給鮑勃:
最後鮑勃可以開啟他自己上鎖的公文包,並順利拿出裡面的檔案。
現在,愛麗絲和鮑勃不需要再分享同一把鑰匙。他們只需要擁有自己的掛鎖和自己的鑰匙。
但是如果對方不是你認為的那個人呢?萬一發生了什麼奇怪的事,比如鮑勃被一頭牛所取代了呢?
那麼接下來,將發生這樣的事情:
1. 愛麗絲把帶有掛鎖的公文包寄了出去。她以為寄給的是鮑勃,但是卻寄給了一頭奶牛。
2. 這頭牛,以驚人的靈巧度,將它的掛鎖鎖在了公文包上,然後將其寄回給愛麗絲。
3. 愛麗絲很高興看到公文包帶著“鮑勃”(實際上是奶牛的)掛鎖回來了,她開啟自己的掛鎖並將其寄送回去。
4. 這頭奶牛拿回公文包,開啟了自己的鎖。
5. 牛把祕密檔案吃掉了。
鑑於沒有人希望他們的祕密被一頭牛消化掉,所以我們需要採取一個步驟來保護機密資料:鮑勃確保愛麗絲知道他的掛鎖是什麼樣子,所以當她重新拿回公文包時,能夠驗證這個新鎖是否屬於鮑勃。
事實上,鮑勃能夠複製他的掛鎖的模樣,並將其公開。每個人都知道鮑勃的掛鎖是什麼樣子其實並不重要,畢竟他是唯一可以用鑰匙解鎖的人。同時,這能讓愛麗絲認出鮑勃的鎖。她可以在開啟自己的鎖之前,檢查第二個掛鎖是否真的屬於鮑勃。
如果我們需要處理的僅僅是物理掛鎖和金鑰,那是很難做到複製掛鎖和鑰匙的。但是當我們以數字化方式進行處理的時候,我們使用的是數字密碼和數字鎖,即數值。
在上面的例子中,掛鎖代表的數字是公開的,也可以叫做公鑰。鑰匙代表的數字是私有的。這個被稱為“私鑰”的私人數字可以用來“開啟”公共鎖。這種非對稱加密演算法,公鑰與私鑰是成對的,他們互相解密,因為加密和解密使用的金鑰不一樣,被稱為非對稱加密演算法。他們的關係如下:這即是比特幣所採用的公鑰密碼學。
人們保護私鑰,是因為私鑰可以解鎖任何相對應的公鎖。(在密碼學中,這種解鎖過程被稱為簽名)人們會公開他們的公鑰,這樣其他人就知道什麼被鎖住了。
在比特幣系統中,公共密碼學被用來證明所有權。用Emoji來表示具體的操作流程如下:
在比特幣的世界裡,愛麗絲需要傳遞給鮑勃的並不是一個掛鎖公文包,而是一個放著掛鎖和比特幣的“玻璃盒子”。
為了將比特幣傳遞給鮑勃,愛麗絲必須做兩件事:
1. 愛麗絲必須把鮑勃的掛鎖(公鑰)放在自己的箱子裡。這很簡單,因為鮑勃的掛鎖實際上是一個公開數值。這樣,鮑勃可以通過解鎖自己的掛鎖來證明自己的所有權。
2. 愛麗絲必須證明這個盒子放置的掛鎖是她的,而不是別人的。她需要用鑰匙(私鑰)開啟自己的掛鎖。
然後,當鮑勃決定將這些比特幣傳遞給另一個人(我們暫且稱他為卡洛斯)時,他會做同樣的事情:將卡洛斯的公鑰放置其中,然後用自己的私鑰簽署交易。
讓我們回到區塊鏈,私鑰本質上是32個byte組成的陣列,由256個0或者1隨機組成,識別性較差
地址是由公鑰產生的,公鑰經過多種加密演算法轉換成公鑰雜湊,公鑰雜湊經過Base58編碼生成地址。就如同愛麗絲把鮑勃的掛鎖放在盒子裡一樣。實際上,單個公鑰可以生成無限多個地址。因此,如果鮑勃希望每次都使用不同的地址,他也可以這麼做。
(圖片來自微信公眾號: 槿小喵)
讓我們回到我要轉給你5美元這件事情上。我把它傳送到你的比特幣地址上,你的比特幣地址以數字化的方式與你的私鑰相連,那麼你將在這個地址中獲取比特幣。
為了花掉這5美元,你需要進行一個新的交易,包括一個屬於收件人的地址,然後用你的私鑰簽署。這相當於把收件人的掛鎖掛在公文包上,然後開啟你的掛鎖。
總結:私鑰公鑰是成對出現,公鑰可以生成對應的唯一地址,這樣就能確認了該地址傳送的交易是否使用了對應的私鑰。這種做法有一個副作用,那就是,比特幣幾乎是匿名的。因為地址上使用的是“假名”。比特幣與你的名字無關,其所需要的是你的私鑰。換句話說,誰掌握了私鑰,就掌握了你地址上的財產,這也是為什麼進入區塊鏈行業一定會被提醒:私鑰一定要保管好。
韭菜幣讀往期回顧:
【韭菜幣讀】一文看懂區塊鏈-01篇
【韭菜幣讀】一文看懂比特幣-02篇
【韭菜幣讀】一文看懂比特幣-03篇
【韭菜幣讀】比特幣分叉整理:一文看懂比特幣家族史
【韭菜幣讀】三點鐘無眠區塊鏈大佬觀點分享(一)
http://www.jinniu.cn/focus-3-o-clock/
【韭菜幣讀】三點鐘無眠區塊鏈大佬觀點分享(二)
http://www.jinniu.cn/focus-3-o-clock-2/
【韭菜幣讀】如何看待Coinbase和Bitfinex實施隔離見證
相關文章
- [SSL]公鑰與私鑰典型應用
- 公鑰私鑰
- 私鑰與公鑰有何不同?
- 公鑰和私鑰
- 金鑰,私鑰,公鑰的區分
- 蘋果ios簽名的公鑰與私鑰蘋果iOS
- SSH 公鑰私鑰的生成管理
- php中的公鑰和私鑰PHP
- openSSL生成公鑰和私鑰
- 01_私鑰、公鑰和地址
- SSH公鑰私鑰認證原理
- php使用openssl生成公鑰私鑰PHP
- OpenSSL 公鑰私鑰加解密封裝解密封裝
- 使用openssl生成rsa公鑰和私鑰
- 支付介面教程——公鑰與私鑰,雙鑰加密和數字簽名加密
- 完成ssh無密碼的驗證,採用公鑰、私鑰密碼
- 區塊鏈之比特幣的私鑰,公鑰和地址是什麼?區塊鏈比特幣
- Mac 使用openssl生成RSA公鑰和私鑰Mac
- SSH-keygen rsa 金鑰對根據私鑰生成公鑰
- 【加密演算法】PFX檔案提取公鑰私鑰加密演算法
- 從Java金鑰庫讀取輸出私鑰Java
- MAC OSX 下 使用openssl 命令 生成RSA公鑰和私鑰Mac
- 非對稱加密演算法RSA中的公鑰和私鑰加密演算法
- 公鑰基礎設施和密碼學中的私鑰的角色密碼學
- TLS、SSL、CA 證書、公鑰、私鑰。。。今天捋一捋!TLS
- 私鑰和公鑰到底是誰來加密、誰來解密?加密解密
- 公鑰私鑰gitee都不行,新手小白破局(windows憑據)GiteeWindows
- 橢圓曲線加密演算法中公鑰與私鑰互換性分析加密演算法
- 使用公鑰/私鑰對設定免密的 Linux 登入方式Linux
- java中的使用RSA演算法進行公鑰加密私鑰解密 .Java演算法加密解密
- 把Java生成的RSA公鑰、私鑰轉換成.NET使用的XML格式JavaXML
- 使用公鑰和私鑰實現LINUX下免密登入Linux
- 【汽車科普】數字鑰匙及UWB鑰匙
- Mac OS上執行openssl命令操作,生成RSA私鑰和RSA公鑰Mac
- C# Rsa加密(私鑰加密、公鑰解密、金鑰格式轉換、支援超大長度分段加密)C#加密解密
- 個人保管私鑰的得與失
- 比特幣的私鑰【區塊鏈生存訓練】比特幣區塊鏈
- 私鑰的用途是什麼?