是否可以通過擁有私鑰只計算一個字節的公鑰?
假設我們有一個已知的公鑰,我們想用諸如暴力破解之類的壞方法找到它的私鑰。
是否有可能不是計算整個公鑰來檢查它是否與目標匹配,而是只計算第一個(或任何一個)字節(或多個字節)以及所述字節是否與目標的第一個字節匹配以計算完整的公鑰?
如果部分計算所需的時間少得多,那麼實現這一點將是有意義的。
我知道找到任何東西的機率是天文數字,並且有更好的方法來做到這一點。這僅用於教育目的。
比特幣中使用的公鑰類型(即 X9 風格的 EC)的標準表示之一是“未壓縮”形式,其第一個八位字節(見下文)始終為04(以區別於其他形式)。因此,您無需任何計算即可確定所有公鑰的一個字節,但這提供了關於私鑰的準確零、zilch、nada 資訊。
同樣要超級迂腐,“字節”不是固定大小。它可以小到 1 位(尤其是在 PDP-6 和 -10 上,它們具有可變字節欄位指針,但現在只存在於文字博物館中)。然而,當今大多數非專業人士可用於程式的電腦始終具有 8 位字節,因此許多人甚至無法想像其他可能性。(這就是為什麼正確編寫的標準使用 ‘octet’ 而不是 ‘byte’ 當它們專門表示 8 位時。)
因此,大概您的意思是公鑰的有意義部分(即任一座標)中的一個 8 位字節。那麼答案是:不;如果不進行點乘法,則無法計算任一座標的任何部分,這總是會產生所有兩個座標。有幾種不同的方法可以進行這種乘法,速度不同,但沒有一種方法可以通過產生部分結果來加速。
但是讓我們考慮一個理想的情況:您設計和製造您自己的完全定制的晶片,它可以在一納秒內完成 secp256k1 基點乘法;這可能只花費幾十億美元。你擁有 10 億個這樣的晶片(地球上幾乎每人一個)和數千個由你擁有和控制的發電廠,還有足夠的燃料供需要它的類型使用。搜尋 secp256k1 私鑰空間需要 2,000 萬億萬億年(使用美國萬億 = 10^12)——時間如此之長,以至於與宇宙的整個存在相比,更不用說地球,是無法察覺的小.