比特幣橢圓曲線加密生成公鑰
1. 為什麼區塊鏈私鑰 中的字母只有a-f之間
私鑰:實際上是一組隨機數,關於區塊鏈中的隨機數我們已經介紹過了
公鑰:對私鑰進行橢圓曲線加密演算法生成,但是無法通過公鑰倒推得到私鑰。公鑰的作用是在和對方交易時,使用自己的私鑰加密信息,然後對方使用自己的公鑰解密獲得原始信息,這個過程俗稱簽名。
地址:由於公鑰太長,在交易中不方便使用,就對公鑰哈希進行SHA256、RIPEMD160、Base58演算法加密生成地址
首先使用隨機數發生器生成一個『私鑰』。後續的公鑰、地址都會由私鑰生成,所以一句話概括私鑰的重要性:"誰掌握了私鑰, 誰就掌握了該錢包的使用權!"
『私鑰』經過橢圓曲線演算法(SECP256K1)演算法加密生成了'公鑰'。這是一種非對稱單向加密演算法,知道私鑰可以算出公鑰,但知道公鑰卻無法反向算出私鑰
『公鑰』經過單向Hash演算法(SHA256、RIPEMD160)生成『公鑰Hash』
將一個位元組的地址版本號連接到『公鑰哈希』頭部(對於比特幣網路的pubkey地址,這一位元組為「0」),然後對其進行兩次SHA256運算,將結果的前4位元組作為『公鑰哈希』的校驗值,連接在其尾部。
將上一步結果使用BASE58進行編碼(比特幣定製版本),就得到了『錢包地址』。
2. 比特幣地址和密鑰之間有什麼關系
在接收或發送比特幣時都會用到比特幣地址,是由數字和字母組成的字元串。
比特幣是建立在密碼學基礎之上的,因此其地址也是匿名的,所以極大的保證地址的安全性,而私鑰是用來保護用戶對比特幣的所有權。
兩者都是為了保證用戶賬號安全性而存在的。
3. 什麼是比特幣加密技術
比特幣和區塊鏈的誕生需要依賴於很多核心技術的突破:一是拜占庭容錯技術;二是非對稱加密技術;三是點對點支付技術。下面會依次介紹。
拜占庭容錯技術
比特幣和區塊鏈誕生的首要難點在於如何創建分布式共識機制,也就是菜斯利·蘭伯特等人1982年提出的拜占庭將軍問題。所謂拜占庭將軍問題是指,把戰爭中互不信任的各城邦軍隊如何達成共識並決定是否出兵的決策過程。延伸至計算機領域,試圖創建具有容錯性的分布式系統,即使部分節點失效仍可確保系統正常運行,也可讓多個基於零信任基礎的節點達成共識,並確保信息傳遞的一致性。
中本聰所提到的「拜占庭將軍問題」解決方法起始於亞當﹒拜克在1997年發明的哈希現金演算法機制,起初該設計是用於限制垃圾郵件發送與拒絕服務攻擊。2004年,密碼朋克運動早期和重要成員哈爾·芬尼將亞當﹒拜克的哈希現金演算法改進為可復用的工作量證明機制。他們的研究又是基於達利亞·馬凱與邁克爾·瑞特的學術成果:拜占庭容錯機制。正是哈爾·芬尼的可復用的工作量證明機制後來成為比特幣的核心要素之一。哈爾·芬尼是中本聰的最早支持者,同時也是第一筆比特幣轉賬的接受者,在比特幣發展的早期與中本聰有大量互動與交流。
非對稱加密技術
比特幣的非對稱加密技術來源於以下幾項密碼學的技術創新:1976年,Sun公司前首席安全官Whitfield Diffie與斯坦福大學教授Martin Hell,在開創性論文《密碼學的新方向》首次提出公開鑰匙密碼學的概念,發明了非對稱加密演算法。1978年省理工學院的倫納德·阿德曼、羅納德·李維斯特、阿迪·薩莫爾三名研究人員,共同發明了公開鑰匙系統「RSA」可用於數據加密和簽名,率先開發第一個具備商業實用性的非對稱RSA加密演算法。1985年,Neal Koblitz和Victor Miller倆人,首次提出將橢圓曲線演算法(ECC),應用於密碼學,並建立公鑰加密的演算法,公鑰密碼演算法的原理是利用信息的不對稱性,公鑰對應的是私鑰,私鑰是解開所有信息的鑰匙,公鑰可以由私鑰反推算出。ECC能夠提供比RSA更高級別的安全。比特幣使用的就是橢圓曲線演算法公鑰用於接收比特幣,而私鑰則是比特幣支付時的交易簽名。這些加密演算法奠定了當前非對稱加密理論的基礎,被廣泛應用於網路通信領域。但是,當時這些加密技術發明均在NSA嚴密監視的視野之內。NSA最初認為它們對國家安全構成威脅,並將其視為軍用技術。直到20世紀90年代末,NSA才放棄對這些非對稱加密技術的控制,RSA演算法、ECC演算法等非對稱加密技術最終得以走進公眾領域。
不過,中本聰並不信任NSA公布的加密技術,在比特幣系統中沒有使用RSA公鑰系統,原因除了ECC能夠提供比RSA更高級別的安全性能外,還擔心美國安全部門在RSA留有技術後門。2013年9月,斯諾登就曾爆料NSA採用秘密方法控制加密國際標准,比特幣採用的RSA可能留有後門,NSA能以不為人知的方法弱化這條曲線。所幸的是,中本聰神一般走位避開了RSA的陷阱,使用的加密技術不是NSA的標准,而是另一條鮮為人知的橢圓曲線,這條曲線並不在美國RSA的掌握之下。全世界只有極少數程序躲過了這一漏洞,比特幣便是其中之一。
4. 比特幣錢包地址是如何得到的不是比特幣地址而是錢包地址!
首先,你應該在大腦中想像出一個「錢包」的概念。你的bitcoin都放在你的「錢包」中一個錢包可以包含很多很多......很多個地址。地址的形式就是形如。
利用比特幣錢包中生成的比特幣地址你可以接收來自他人的比特幣,你也可以將你帳戶上的比特幣轉到他人的比特幣地址上面。比特幣地址就像銀行卡號一樣,具有支付、轉賬、提現功能,但在轉賬時,你只有知道別人的比特幣地址才能進行比特幣轉賬。
如果我們把比特幣錢包簡單比作成銀行卡賬戶的話,那麼比特幣錢包地址就可以看成是銀行卡賬號。不同的是,比特幣地址是可以不存儲在網路上的,更是可以獨立於你的錢包而存在的。
(4)比特幣橢圓曲線加密生成公鑰擴展閱讀:
比特幣地址是一串由 26位到34位字母和數字字元串組成的。 看上去像一堆亂碼一樣,說白了這個就像你的銀行卡卡號一樣。 通過區塊鏈查可以查每個比特幣地址的所有轉賬記錄,公開透明。
比特幣錢包地址生成:通過隨機選出256位二進制數字,形成私鑰,然後通過加密函數來生成地址。這個生成方向是單向的。也就是你知道了地址是無法通過解密方法來計算出私鑰的。就目前的人類計算機運算能力無法破解,你可以很放心地把地址公布到網上。
參考鏈接:比特幣|網路
5. 知道私鑰怎麼提幣
有了私鑰,我們就可以使用橢圓曲線乘法這個單向加密函數產生一個公鑰(K)。
有了公鑰(K),我們就可以使用一個單向加密哈希函數生成比特幣地址(A)。
H3
私鑰
私鑰就是一個隨機選出的數字而已。一個比特幣地址中的所有資金的控製取決於相應私鑰的所有權和控制權。在比特幣交易中,私鑰用於生成支付比特幣所必需的簽名以證明資金的所有權。私鑰必須始終保持機密,因為一旦被泄露給第三方,相當於該私鑰保護之下的比特幣也拱手相讓了。私鑰還必須進行備份,以防意外丟失,因為私鑰一旦丟失就難以復原,其所保護的比特幣也將永遠丟失。
比特幣私鑰只是一個數字。你可以用硬幣、鉛筆和紙來隨機生成你的私鑰:擲硬幣256次,用紙和筆記錄正反面並轉換為0和1,隨機得到的256位二進制數字可作為比特幣錢包的私鑰。該私鑰可進一步生成公鑰。
H3
公鑰
通過橢圓曲線演算法可以從私鑰計算得到公鑰,這是不可逆轉的過程:K = k * G。其中k是私鑰,G是被稱為生成點的常數點,而K是所得公鑰。其反向運算,被稱為「尋找離散對數」——已知公鑰K來求出私鑰k——是非常困難的,就像去試驗所有可能的k值,即暴力搜索。
H3
比特幣地址
比特幣地址是一個由數字和字母組成的字元串,可以與任何想給你比特幣的人分享。由公鑰(一個同樣由數字和字母組成的字元串)生成的比特幣地址以數字「1」開頭。下面是一個比特幣地址的例子:
在交易中,比特幣地址通常以收款方出現。如果把比特幣交易比作一張支票,比特幣地址就是收款人,也就是我們要寫入收款人一欄的內容。一張支票的收款人可能是某個銀行賬戶,也可能是某個公司、機構,甚至是現金支票。支票不需要指定一個特定的賬戶,而是用一個普通的名字作為收款人,這使它成為一種相當靈活的支付工具。與此類似,比特幣地址的使用也使比特幣交易變得很靈活。比特幣地址可以代表一對公鑰和私鑰的所有者,也可以代表其它東西,比如「P2SH
(Pay-to-Script-Hash)」付款腳本。
6. 比特幣地址是怎麼產生的
比特幣使用橢圓曲線演算法生成公鑰和私鑰,選擇的是secp256k1曲線。生成的公鑰是33位元組的大數,私鑰是32位元組的大數,錢包文件wallet.dat中直接保存了公鑰和私鑰。我們在接收和發送比特幣時用到的比特幣地址是公鑰經過演算法處理後得到的,具體過程是公鑰先經過SHA-256演算法處理得到32位元組的哈希結果,再經過RIPEMED演算法處理後得到20位元組的摘要結果,再經過字元轉換過程得到我們看到的地址。這個字元轉換過程與私鑰的字元轉換過程完成相同,步驟是先把輸入的內容(對於公鑰就是20位元組的摘要結果,對於私鑰就是32位元組的大數)增加版本號,經過連續兩次SHA-256演算法,取後一次哈希結果的前4位元組作為校驗碼附在輸入內容的後面,然後再經過Base58編碼,得到字元串。喬曼特區塊鏈專業站鏈喬教育在線是從事區塊鏈相關培訓,且獲得教育部認證的區塊鏈專業培訓工作站。
7. 公鑰與私鑰的區別與應用。
現實生活中,我要給依依轉1個比特幣,我需要在比特幣交易平台、比特幣錢包或者比特幣客戶端裡面,輸入我的比特幣錢包地址、依依的錢包地址、轉出比特幣的數量、手續費。然後,我們等十分鍾左右,礦工處理完交易信息之後,這1個比特幣就成功地轉給依依了。
這個過程看似很簡單也很便捷,跟我們現在的銀行卡轉賬沒什麼區別,但是,你知道這個過程是怎樣在比特幣系統裡面實現的嗎?它隱藏了哪些原理呢?又或者,它是如何保證交易能夠在一個安全的環境下進行呢?
我們今天就來講一講。
對於轉出方和接收方來講,也就是我和依依(我是轉出方,依依是接收方)我們都需要出具兩個東西:錢包地址、私鑰。
我們先說錢包地址。比特幣錢包地址其實就相當於銀行卡、支付寶賬號、微信錢包賬號,是比特幣支付轉賬的「憑證」,記錄著平台與平台、錢包與錢包、錢包與平台之間的轉賬信息。
我們在使用銀行卡、支付寶、微信轉賬時都需要密碼,才能夠支付成功。那麼,在比特幣轉賬中,同樣也有這么一個「密碼」,這個「密碼「被稱作「私鑰」。掌握了私鑰,就掌握了其對應比特幣地址上的生殺大權。
「私鑰」是屬於「非對稱加密演算法」裡面的概念,與之對應的還有另一個概念,名叫:「公鑰」。
公鑰和私鑰,從字面意思我們就可以理解:公鑰,是可以公開的;而私鑰,是私人的、你自己擁有的、需要絕對保密的。
公鑰是根據私鑰計算形成的,比特幣系統使用的是橢圓曲線加密演算法,來根據私鑰計算出公鑰。這就使得,公鑰和私鑰形成了唯一對應的關系:當你用了其中一把鑰匙加密信息時,只有配對的另一把鑰匙才能解密。所以,正是基於這種唯一對應的關系,它們可以用來驗證信息發送方的身份,還可以做到絕對的保密。
我們舉個例子講一下,在非對稱加密演算法中,公鑰和私鑰是怎麼運作的。
我們知道,公鑰是可以對外公開的,那麼,所有人都知道我們的公鑰。在轉賬過程中,我不僅要確保比特幣轉給依依,而不會轉給別人,還得讓依依知道,這些比特幣是我轉給她的,不是鹿鹿,也不是韭哥。
比特幣系統可以滿足我的上述訴求:比特幣系統會把我的交易信息縮短成固定長度的字元串,也就是一段摘要,然後把我的私鑰附在這個摘要上,形成一個數字簽名。因為數字簽名裡面隱含了我的私鑰信息,所以,數字簽名可以證明我的身份。
完成之後,完整的交易信息和數字簽名會一起廣播給礦工,礦工用我的公鑰進行驗證、看看我的公鑰和我的數字簽名能不能匹配上,如果驗證成功,都沒問題,那麼,就能夠說明這個交易確實是我發出的,而且信息沒有被更改。
接下來,礦工需要驗證,這筆交易花費的比特幣是否是「未被花費」的交易。如果驗證成功,則將其放入「未確認交易」,等待被打包;如果驗證失敗,則該交易會被標記為「無效交易」,不會被打包。
其實,公鑰和私鑰,簡單理解就是:既然是加密,那肯定是不希望別人知道我的消息,所以只能我才能解密,所以可得出:公鑰負責加密,私鑰負責解密;同理,既然是簽名,那肯定是不希望有人冒充我的身份,只有我才能發布這個數字簽名,所以可得出:私鑰負責簽名,公鑰負責驗證。
到這里,我們簡單概括一下上面的內容。上面我們主要講到這么幾個詞:私鑰、公鑰、錢包地址、數字簽名,它們之間的關系我們理一下:
(1)私鑰是系統隨機生成的,公鑰是由私鑰計算得出的,錢包地址是由公鑰計算得出的,也就是:私鑰——公鑰——錢包地址,這樣一個過程;
(2)數字簽名,是由交易信息+私鑰信息計算得出的,因為數字簽名隱含私鑰信息,所以可以證明自己的身份。
私鑰、公鑰都是密碼學范疇的,屬於「非對稱加密」演算法中的「橢圓加密演算法」,之所以採用這種演算法,是為了保障交易的安全,二者的作用在於:
(1)公鑰加密,私鑰解密:公鑰全網公開,我用依依的公鑰給信息加密,依依用自己的私鑰可以解密;
(2)私鑰簽名,公鑰驗證:我給依依發信息,我加上我自己的私鑰信息形成數字簽名,依依用我的公鑰來驗證,驗證成功就證明的確是我發送的信息。
只不過,在比特幣交易中,加密解密啦、驗證啦這些都交給礦工了。
至於我們現在經常用的錢包APP,只不過是私鑰、錢包地址和其他區塊鏈數據的管理工具而已。錢包又分冷錢包和熱錢包,冷錢包是離線的,永遠不聯網的,一般是以一些實體的形式出現,比如小本子什麼的;熱錢包是聯網的,我們用的錢包APP就屬於熱錢包。
8. 比特幣演算法原理
比特幣演算法主要有兩種,分別是橢圓曲線數字簽名演算法和SHA256哈希演算法。
橢圓曲線數字簽名演算法主要運用在比特幣公鑰和私鑰的生成過程中,該演算法是構成比特幣系統的基石。SHA-256哈希演算法主要是運用在比特幣的工作量證明機制中。
比特幣產生的原理是經過復雜的運演算法產生的特解,挖礦就是尋找特解的過程。不過比特幣的總數量只有2100萬個,而且隨著比特幣不斷被挖掘,越往後產生比特幣的難度會增加,可能獲得比特幣的成本要比比特幣本身的價格高。
比特幣的區塊由區塊頭及該區塊所包含的交易列表組成,區塊頭的大小為80位元組,由4位元組的版本號、32位元組的上一個區塊的散列值、32位元組的 Merkle Root Hash、4位元組的時間戳(當前時間)、4位元組的當前難度值、4位元組的隨機數組成。擁有80位元組固定長度的區塊頭,就是用於比特幣工作量證明的輸入字元串。不停的變更區塊頭中的隨機數即 nonce 的數值,並對每次變更後的的區塊頭做雙重 SHA256運算,將結果值與當前網路的目標值做對比,如果小於目標值,則解題成功,工作量證明完成。
比特幣的本質其實是一堆復雜演算法所生成的一組方程組的特解(該解具有唯一性)。比特幣是世界上第一種分布式的虛擬貨幣,其沒有特定的發行中心,比特幣的網路由所有用戶構成,因為沒有中心的存在能夠保證了數據的安全性。
9. 怎麼注冊比特幣賬戶地址
先要隨機生成一個私鑰,私鑰通過橢圓曲線加密演算法生成公鑰,公鑰再通過哈希演算法生成地址。
與銀行開戶不同,比特幣的賬戶無需申請注冊,可隨機生成。
你的私鑰就相當於賬戶加密碼,不能泄露給他人,地址相當於賬戶名,可以給別人,用於轉賬。
助記詞一定程度上也相當於私鑰。
下載一個錢包,它會隨機生成一個私鑰或者助記詞,然後你就可以擁有你的比特幣賬戶了。
比特幣簡介
比特幣(Bitcoin)的概念最初由中本聰在2008年11月1日提出,並於2009年1月3日正式誕生。
根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。比特幣的交易記錄公開透明。點對點的傳輸意味著一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。
P2P的去中心化特性與演算法本身可以確保無法通過大量製造比特幣來人為操控幣值。基於密碼學的設計可以使比特幣只能被真實的擁有者轉移或支付。
這同樣確保了貨幣所有權與流通交易的匿名性。比特幣其總數量非常有限,具有稀缺性。該貨幣系統曾在4年內只有不超過1050萬個,之後的總數量將被永久限制在2100萬個。
2021年6月,薩爾瓦多通過了比特幣在該國成為法定貨幣的《薩爾瓦多比特幣法》法案。9月7日,比特幣正式成為了薩爾瓦多的法定貨幣,成為世界上第一個賦予數字貨幣法定地位的國家。
2021年9月24日,中國人民銀行發布進一步防範和處置虛擬貨幣交易炒作風險的通知。通知指出,虛擬貨幣不具有與法定貨幣等同的法律地位。
2021年11月9日,Bitstamp平台報價顯示,比特幣首次突破68000美元/枚。11月10日,比特幣首次逼近6.9萬美元/枚。
10. bitcoin私鑰是如何產生的
比特幣地址和私鑰是怎樣生成的?比特幣使用橢圓曲線演算法生成公鑰和私鑰,選擇的是secp256k1曲線。生成的公鑰是33位元組的大數,私鑰是32位元組的大數,錢包文件wallet.dat中直接保存了公鑰和私鑰。我們在接收和發送比特幣時用到的比特幣地址是公鑰經過演算法處理後得到的,具體過程是公鑰先經過SHA-256演算法處理得到32位元組的哈希結果,再經過RIPEMED演算法處理後得到20位元組的摘要結果,再經過字元轉換過程得到我們看到的地址。這個字元轉換過程與私鑰的字元轉換過程完成相同,步驟是先把輸入的內容(對於公鑰就是20位元組的摘要結果,對於私鑰就是32位元組的大數)增加版本號,經過連續兩次SHA-256演算法,取後一次哈希結果的前4位元組作為校驗碼附在輸入內容的後面,然後再經過Base58編碼,得到字元串。