有人可以在不提供私鑰的情況下驗證錢包是他們的錢包嗎?
我需要 100% 確定地知道有人可以告訴我“這是我的錢包”並向我證明。我當然可以簡單地獲取他們的私鑰/腦錢包片語,還有其他方法嗎?
是的,您可以使用大多數比特幣客戶端(包括比特幣核心)中可用的“消息簽名”。如果我用我的地址簽名“我是 Meni Rosenfeld,我正在向 user127317 證明這是我的地址”,那麼您可以確定它是我的。
是的。比特幣使用非對稱密鑰加密,因此自然的方法是讓使用者使用(而不是透露)他們的密鑰,這種方式只能使用公鑰進行驗證。唯一的缺點是公鑰會被洩露——在某種意義上,比特幣比非對稱密鑰密碼學的大多數其他用途更安全,因為這只發生在使用比特幣地址的私鑰進行交易或簽名之後。但是一般的想法是,如果公鑰確實是公開的,那麼非對稱密鑰密碼術仍然是安全的(除非有重大的數學或物理突破,例如大型量子電腦,否則這應該是正確的)。
最簡單的方法是詢問您想要證明他對比特幣地址的所有權的使用者,以便從中轉移比特幣。如果他能遵守,顯然他可以控制它——或者欺騙其他人移動它們。因此,如果您真的 100% 確定,您將不得不要求將該地址的所有比特幣轉移到您的一個地址(專門為此交易創建),大概是您會立即歸還它們的承諾。這仍然比要求客戶透露他的私鑰要好一些,這將允許您隨時擁有該地址的任何比特幣,而不僅僅是在此一次性驗證期間。然而,這個方案唯一真正的優勢是你不需要解釋太多,因為任何比特幣使用者都會知道如何轉移比特幣,
還有另一種選擇,簽名,Meni Rosenfeld 在他的回答中已經解釋過。任何比特幣客戶端都將允許使用者創建自定義簽名,但您可能需要對其進行教育,因為它還不是常用功能。還有一個可用性問題是簽名不會自動傳輸,因此您必須要求使用者共享(即複製並粘貼它)。最後,您只能驗證使用者是否使用您期望的比特幣地址簽署了您要求他發送的確切消息——如果事實證明這不是他所做的,除了重申您將需要完全相同的文本,無需編輯、額外的換行符等。
儘管使用簽名存在這些實際障礙,但它們具有巨大的優勢,不僅你永遠不需要對比特幣本身進行信任,而且還有不可否認性:你可以要求任何類型的聲明(例如在 Meni Rosenfeld 的範例中) ,並且通過簽名,您可能(儘管我不是律師)實現了不可否認性,因為只有擁有用於簽名的比特幣地址的私鑰的人才能創建這樣的簽名。因此,如果有任何事情上法庭,簽署聲明的人會發現很難支持其他人創建簽名的任何主張——他必須要麼說這畢竟不是他的比特幣地址,要麼他的錢包被偷了,但黑客並沒有費心拿走他的比特幣,而是創建了這個簽名。