這篇文章的標題是《增強區塊鏈隱私:零知識證明在安全交易中的作用》,首發於Coinpedia金融科技新聞

介紹

我們生活在一個信息的世界中,數據是新石油。因此,依賴數據,一切皆有可能。這種以數據為驅動的現實帶來了重大責任,特別是在確保私密和敏感信息保持保護方面。區塊鏈技術是一種強大的工具,它優先考慮透明性而非隱私。雖然透明性對於去中心化系統的信任至關重要,但它可能會暴露敏感細節,這在涉及機密交易或個人信息的應用中並不總是可取的。

為了克服這些限制,開發者引入了一系列隱私增強技術,如零知識證明(ZKP)、zk-SNARK、像Monero和Zcash這樣的隱私貨幣,以及同態加密(HE)等先進加密技術。

這些技術在透明性和用戶保密性之間保持平衡。

在這篇文章中,我們將探討這些隱私增強工具如何工作,以及它們在區塊鏈開發中的應用。

那麼讓我們開始吧!

你可能會想,區塊鏈是技術領域中最安全和最透明的選擇,對吧?但它仍然有一些缺陷。例如,讓我們考慮比特幣,它是一種透明的貨幣(公共區塊鏈)。你的地址是假名的。但有一個問題!礦工仍然可以在數據正式上鏈之前訪問區塊鏈上的數據。可怕吧?!

因此,為了避免所有此類情況,我們選擇隱私增強選項,其中之一就是ZPK。讓我們來看看它!

零知識證明和zk-SNARK

什麼是零知識證明?

零知識證明是一種加密協議,其中有一個證明者和一個驗證者。這裡,證明者必須說服驗證者某個陳述是真實的,而不透露任何其他事實或信息,除了該陳述是真實的這一事實。

讓我們通過舉一個現實生活的例子來更直觀地理解這一點:

那麼,假設你有一個朋友Carl,他是色盲,你有兩個球(一個紅色和一個綠色),你需要他區分這兩個球,而不實際揭示哪個球是什麼顏色。

所以在這裡你是證明者,Carl是驗證者。現在你要求Carl將兩個球放在後面,他可以隨機挑選一個球,然後向你提出一個簡單的問題:我有沒有交換這些球?這個過程可以反覆進行,Carl應該以50%的概率會相信(“完整性”)這些球的確是不同顏色的。

正如名稱所示,你證明了你的陳述的有效性,而你的朋友永遠不會知道哪個球是綠色的,哪個是紅色的;實際上,他對如何區分這些球一無所知。因此,這種知識也可以轉移給第三方。

代碼示例:

# 簡單的ZKP模擬from hashlib import sha256# 假設證明者知道“秘密”密碼secret_password = “blockchain_rocks”hash_of_secret = sha256(secret_password.encode()).hexdigest()# 證明者想要在不揭示“secret_password”的情況下證明知識def prove_knowledge(guessed_password):    return sha256(guessed_password.encode()).hexdigest() == hash_of_secret# 驗證者通過匹配哈希來確認證明者的知識print(prove_knowledge(“blockchain_rocks”)) # 返回True而不揭示“secret_password”

zk-SNARKs:零知識簡潔非互動知識論證

zk-SNARK代表零知識簡潔非互動知識論證。這是一種證明構建,其中證明者必須在不與驗證者互動的情況下證明真相或其擁有權。這只是ZKP的更具體版本。當兩方之間沒有任何通信的可能性時,zk-SNARK更有用,例如在線交易而沒有實時通信。

這個概念有點難以理解,簡而言之,我們可以說你告訴另一個人你知道他們的秘密,而不告訴實際的秘密是什麼,而是證明它。

你知道嗎?zk-SNARK在Zcash中實現,這是一種以其隱蔽交易而聞名的隱私貨幣?

練習:用libsnark構建一個zk-SNARK

使用libsnark設置和驗證一個簡單的zk-SNARK,或者參考庫的文檔以獲取有關zk-SNARK證明構建的示例項目。

現在問題是這個非互動式零知識證明是如何工作的?

  • 設置:zk-SNARK需要一次性設置加密密鑰,用於構建證明。

  • 證明生成:證明者使用私密信息生成一個簡潔的證明,可以公開驗證。

  • 驗證:驗證者可以確認證明者擁有某些知識,而無需知道細節。

隱私貨幣

隱私貨幣是專門設計用來優先考慮隱私並隱藏用戶身份的加密貨幣。

Monero

Monero(XMR)是一種具有增強隱私的加密貨幣。它使用一種特殊的區塊鏈來隱藏交易細節,使外部人員幾乎無法看到誰在發送或接收Monero、發送了多少或任何賬戶餘額。這保持匿名性,確保所有單位的Monero都是可替代的。

可替代(可互換):意味著一個Monero始終等於另一個,沒有可追蹤的歷史。

Monero如何確保私密交易?

Monero 實施了獨特的技術如下,以確保私密交易。讓我們來看看這些技術:

環簽名:將用戶的交易簽名與其他簽名結合,以模糊真實來源。

代碼示例:

import random# 參與者的公鑰列表participants = [“Alice”, “Bob”, “Charlie”, “Dave”]# 隨機選擇一個參與者作為“發送者”sender = random.choice(participants)# 將發送者的簽名與其他簽名混合mixed_signatures = random.sample(participants, len(participants))print(“環簽名組:”, mixed_signatures)print(“發送者(隱藏):”, sender)

隱匿地址:為每筆交易創建獨特的、一用即棄的地址,確保只有發送者和接收者知道目的地。

環保密交易(RingCT):隱藏交易金額,以防止第三方將交易聯繫起來。

  • 另請參閱:

  •   區塊鏈擴展簡化:高效的第一層和第二層解決方案指南

  •   ,

Zcash

Zcash(ZEC)是一種基於比特幣代碼庫的隱私貨幣。它與比特幣共享許多相似之處,如常規和透明交易,但也提供了隱蔽交易的選項。

隱蔽交易:Zcash中的隱蔽交易是使用一種稱為zk-SNARK(零知識簡潔非互動知識論證)的加密方法來保持交易細節完全保密的私密交易。

因此,Zcash支持透明和隱蔽交易,使用T地址(透明地址,類似標準比特幣)和Z地址(隱蔽地址,隱藏交易細節)。

Zcash的隱蔽交易非常適合需要保密的場景,例如供應鏈管理中的B2B交易,數據隱私至關重要。

設置

# 安裝Zcash客戶端sudo apt-get update && sudo apt-get install zcash# 創建隱蔽地址zcash-cli z_getnewaddress# 發送到隱蔽地址zcash-cli z_sendmany

同態加密及其在區塊鏈中的角色

同態加密(HE)是一種加密類型,它讓你在數據仍然加密的情況下進行計算。這意味著你不需要解密數據來使用它。當你最終解密結果時,這就像你在原始的未加密數據上進行計算一樣。

這項技術對於隱私特別有用,因為它允許敏感數據在外部伺服器(如雲端)上存儲和處理,而不暴露數據。

有兩種主要的同態加密技術類型:

  • 部分同態加密(PHE):部分HE僅允許對數據進行特定操作,例如加法和乘法。

  • 完全同態加密(FHE):FHE支持對加密數據進行任意操作。但它是資源密集型的。

範例代碼:

from seal import EncryptionParameters, SEALContext, IntegerEncoder# 設置加密參數parms = EncryptionParameters(scheme_type.BFV)parms.set_poly_modulus_degree(1024)parms.set_coeff_modulus(coeff_modulus_128(1024))# 加密加法的示例encrypted_sum = add_encrypted_values(enc1, enc2)print(“加密總和:”, encrypted_sum)

結論

隱私增強技術,如零知識證明(ZKP)、zk-SNARK、隱私貨幣和同態加密,正在重新定義區塊鏈中可能實現的平衡,創造隱私與透明之間的必要平衡。對於開發者來說,這種演變帶來了令人興奮的機會。通過將這些隱私功能整合到去中心化的應用中,開發者可以滿足金融、醫療和物聯網等行業的需求,這些行業需要保密性。

持續學習,祝編碼愉快!!