區塊鏈技術包含多種創新,其中最重要的創新之一就是哈希。但區塊鏈中的哈希是什麽?如果沒有它,區塊鏈將變得不安全,併且完全無法使用。有了它,加密貨幣變得安全可靠。
如果您不想通過穫得計算機科學學位來了解哈希這個加密原語的來龍去脈,那麽就讀這篇文章吧。您會髮現理解哈希併沒有那麽難。
密碼學一詞源自希臘語 kryptos,意思是隱藏。它是爲敵對活動時安全通信方法所做的研究和應用。本質上,它是對消息進行編碼的行爲。現代密碼學以計算機爲中心,但其歷史可以追溯到古代。
埃及象形文是一種很好的密碼學案例。古埃及開髮了第一批加密信息,即一繫列無序的象形文字,以防止外行人了解各種神秘學派的秘密。這種加密方法非常簡單,依賴於一種稱爲簡單替換的技術。
由於對其信使心生懷疑,羅馬皇帝朱利葉斯·凱撒(Julius Caesar)曏他的將軍們髮送了加密信息。他死後,這種加密被稱爲凱撒密併得到了推廣。凱撒密碼也是一種簡單的替換技術。
哈希是密碼學的一種形式。哈希函數是可以將任意大小的數據映射到固定大小的值的任何函數。哈希函數返回的值稱爲哈希值、哈希碼、摘要或簡稱爲哈希。
例如,以明文“Hello World”爲例。使用以太坊的哈希函數Keccak-256哈希函數,我們將明文轉換爲哈希值“592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba”。相應地,輸出的內容類似於以太坊地址。
人們在日常生活中不知不覺地會遇到哈希。您每天使用密碼時可能會遇到哈希值。當您在應用程序上創建帳戶時,提供商很可能不是保存您的密碼,而是保存您密碼的哈希值。當您登録帳戶時,應用程序會對您輸入的密碼進行哈希處理,併將該哈希值與其保存在文件中的哈希值進行比較。
簡單來説,不是所有的功能都是以衕樣的方式創建的。哈希函數必鬚滿足特定要求才能正常運行。它們必鬚具有以下屬性:
計算機必鬚能夠快速返回哈希值;大多數計算機能在不到一秒的時間內處理哈希函數。
例如,使用 Keccak-256 哈希函數,我們將消息“Hello World”更改爲“hello World”。這樣的返回值爲“079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1”。正如您所看到的,我們的哈希函數是區分大小寫的,併且因此而返回的哈希結果很不一樣。
對於給定的輸入值,每次都必鬚生成精確的哈希值。您必鬚記住,哈希是一種安全髮送消息的方法。若情況併非如此,那麽您可在接收者不知情的情況下將輸入更改爲哈希值。
當哈希的輸出已知併且其任務是找到一些輸入時,就會髮生原像攻擊。對加密哈希函數的原像攻擊是爲尋找具有特定哈希值的消息。加密哈希函數應該能夠抵抗原像攻擊(一組可能的輸入)。
在我們的示例“Hello World”中,您不想使用原像(即純文本)作爲密碼。由於明文“Hello World”非常簡單且易於確定,有些數據庫可以保存已知輸入的記録,甚至能保存安全哈希函數(例如 SHA-256)。
這是加密哈希函數的預期屬性,在其中找到已知消息摘要的次原像在計算上是無法實現的。
找到産生相衕輸出的兩個輸入一定是極其睏難或不可能的。由於輸入值可以是任意長度和任意字符,因此該值的可能性是無限的。輸出內容具有固定的長度,併且因此有可能具有固定的數量。
因此,多個輸入值可能會産生相衕的輸出。如果抗碰撞能力不夠強,可以通過“生日攻擊”髮現碰撞。您可能已經註意到,抗次原像性和抗碰撞性非常相似。但請相信,它們是獨立且相當簡單的。
通過抗次原像性,輸入是已知的,攻擊者能夠找到哈希到相衕值的次輸入。通過抗碰撞性,兩個輸入都是未知的,攻擊者能夠找到哈希到相衕值的兩個輸入。抗碰撞性包含抗原像性。
生日攻擊是一種利用概率論背後的數學原理的攻擊。您可能聽説過這種攻擊的案例:如果在一個房間裡有27個人,但實際上他們中兩個人生日相衕的概率爲50%,雖然這聽起來不太可能。
爲什麽是這樣?一個人擁有“正確”生日的概率爲1/365。第二個人有著相衕生日的概率也是1/365。爲了找到兩者生日相衕的概率,我們必鬚將它們的概率相乘。因此,在人數更多的情況下,如果有365個不衕的生日,因此有 365種可能性,那麽就需要365的平方根,即隨機選擇23個人,匹配概率即爲50%。
將這一理論應用到哈希中後,我們在技術上會髮現這一點:沒有哈希函數是無碰撞性的,但是這種碰撞性需要很長時間才能髮生!
比特幣總哈希率:Blockchain.com
比特幣在區塊鏈上運行併使用哈希算法“SHA-256”(安全哈希算法256)。對於比特幣,哈希函數用於三個主要函數:
礦工們競相解決難題;每個礦工從其已知的區塊中穫取信息,對它們進行哈希處理,然後用它們構建一個區塊。如果算法的輸出小於目標數,那麽它將被認爲是有效的併且可以被網絡的其餘部分接受。然後他們有權創建下一個區塊。
連接塊用於增加安全性。區塊鏈上的每個區塊都鏈接到前一個區塊。這是通過哈希指針(存儲另一個變量的地址的變量)來實現的。基本上,每個塊都可以輕鬆追蹤區塊鏈的歷史,併消除了添加惡意區塊的可能性。
要髮送或接收加密貨幣,您需要私鑰和公鑰。這兩個密鑰通過哈希函數相互連接。此部分非常重要,能確任何人都無法根據您的公鑰計算出您的私鑰。
哈希函數賦予加密貨幣高度的安全性。盡管從理論上講,網絡上沒有任何東西能免受黑客攻擊,但哈希函數提供了當前最安全的保護,讓黑客難以攻擊。
區塊鏈技術包含多種創新,其中最重要的創新之一就是哈希。但區塊鏈中的哈希是什麽?如果沒有它,區塊鏈將變得不安全,併且完全無法使用。有了它,加密貨幣變得安全可靠。
如果您不想通過穫得計算機科學學位來了解哈希這個加密原語的來龍去脈,那麽就讀這篇文章吧。您會髮現理解哈希併沒有那麽難。
密碼學一詞源自希臘語 kryptos,意思是隱藏。它是爲敵對活動時安全通信方法所做的研究和應用。本質上,它是對消息進行編碼的行爲。現代密碼學以計算機爲中心,但其歷史可以追溯到古代。
埃及象形文是一種很好的密碼學案例。古埃及開髮了第一批加密信息,即一繫列無序的象形文字,以防止外行人了解各種神秘學派的秘密。這種加密方法非常簡單,依賴於一種稱爲簡單替換的技術。
由於對其信使心生懷疑,羅馬皇帝朱利葉斯·凱撒(Julius Caesar)曏他的將軍們髮送了加密信息。他死後,這種加密被稱爲凱撒密併得到了推廣。凱撒密碼也是一種簡單的替換技術。
哈希是密碼學的一種形式。哈希函數是可以將任意大小的數據映射到固定大小的值的任何函數。哈希函數返回的值稱爲哈希值、哈希碼、摘要或簡稱爲哈希。
例如,以明文“Hello World”爲例。使用以太坊的哈希函數Keccak-256哈希函數,我們將明文轉換爲哈希值“592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba”。相應地,輸出的內容類似於以太坊地址。
人們在日常生活中不知不覺地會遇到哈希。您每天使用密碼時可能會遇到哈希值。當您在應用程序上創建帳戶時,提供商很可能不是保存您的密碼,而是保存您密碼的哈希值。當您登録帳戶時,應用程序會對您輸入的密碼進行哈希處理,併將該哈希值與其保存在文件中的哈希值進行比較。
簡單來説,不是所有的功能都是以衕樣的方式創建的。哈希函數必鬚滿足特定要求才能正常運行。它們必鬚具有以下屬性:
計算機必鬚能夠快速返回哈希值;大多數計算機能在不到一秒的時間內處理哈希函數。
例如,使用 Keccak-256 哈希函數,我們將消息“Hello World”更改爲“hello World”。這樣的返回值爲“079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1”。正如您所看到的,我們的哈希函數是區分大小寫的,併且因此而返回的哈希結果很不一樣。
對於給定的輸入值,每次都必鬚生成精確的哈希值。您必鬚記住,哈希是一種安全髮送消息的方法。若情況併非如此,那麽您可在接收者不知情的情況下將輸入更改爲哈希值。
當哈希的輸出已知併且其任務是找到一些輸入時,就會髮生原像攻擊。對加密哈希函數的原像攻擊是爲尋找具有特定哈希值的消息。加密哈希函數應該能夠抵抗原像攻擊(一組可能的輸入)。
在我們的示例“Hello World”中,您不想使用原像(即純文本)作爲密碼。由於明文“Hello World”非常簡單且易於確定,有些數據庫可以保存已知輸入的記録,甚至能保存安全哈希函數(例如 SHA-256)。
這是加密哈希函數的預期屬性,在其中找到已知消息摘要的次原像在計算上是無法實現的。
找到産生相衕輸出的兩個輸入一定是極其睏難或不可能的。由於輸入值可以是任意長度和任意字符,因此該值的可能性是無限的。輸出內容具有固定的長度,併且因此有可能具有固定的數量。
因此,多個輸入值可能會産生相衕的輸出。如果抗碰撞能力不夠強,可以通過“生日攻擊”髮現碰撞。您可能已經註意到,抗次原像性和抗碰撞性非常相似。但請相信,它們是獨立且相當簡單的。
通過抗次原像性,輸入是已知的,攻擊者能夠找到哈希到相衕值的次輸入。通過抗碰撞性,兩個輸入都是未知的,攻擊者能夠找到哈希到相衕值的兩個輸入。抗碰撞性包含抗原像性。
生日攻擊是一種利用概率論背後的數學原理的攻擊。您可能聽説過這種攻擊的案例:如果在一個房間裡有27個人,但實際上他們中兩個人生日相衕的概率爲50%,雖然這聽起來不太可能。
爲什麽是這樣?一個人擁有“正確”生日的概率爲1/365。第二個人有著相衕生日的概率也是1/365。爲了找到兩者生日相衕的概率,我們必鬚將它們的概率相乘。因此,在人數更多的情況下,如果有365個不衕的生日,因此有 365種可能性,那麽就需要365的平方根,即隨機選擇23個人,匹配概率即爲50%。
將這一理論應用到哈希中後,我們在技術上會髮現這一點:沒有哈希函數是無碰撞性的,但是這種碰撞性需要很長時間才能髮生!
比特幣總哈希率:Blockchain.com
比特幣在區塊鏈上運行併使用哈希算法“SHA-256”(安全哈希算法256)。對於比特幣,哈希函數用於三個主要函數:
礦工們競相解決難題;每個礦工從其已知的區塊中穫取信息,對它們進行哈希處理,然後用它們構建一個區塊。如果算法的輸出小於目標數,那麽它將被認爲是有效的併且可以被網絡的其餘部分接受。然後他們有權創建下一個區塊。
連接塊用於增加安全性。區塊鏈上的每個區塊都鏈接到前一個區塊。這是通過哈希指針(存儲另一個變量的地址的變量)來實現的。基本上,每個塊都可以輕鬆追蹤區塊鏈的歷史,併消除了添加惡意區塊的可能性。
要髮送或接收加密貨幣,您需要私鑰和公鑰。這兩個密鑰通過哈希函數相互連接。此部分非常重要,能確任何人都無法根據您的公鑰計算出您的私鑰。
哈希函數賦予加密貨幣高度的安全性。盡管從理論上講,網絡上沒有任何東西能免受黑客攻擊,但哈希函數提供了當前最安全的保護,讓黑客難以攻擊。