我覺得這個問題不至於到今天還“老生常談”,比特幣百科上很早以前就已經指出腦錢包並不安全,已經被淘汰:
傳統網站對於登錄失敗的頻率一般是有限制的,你不可能一下子提交幾百萬個密碼進行試錯,一般只要試錯三五次,就會被網站限制。
但是軟件總是很難避免存在漏洞,黑客有可能利用漏洞完全控制服務器、直接把整個數據庫“拖走”,爲了防止黑客“拖庫”後就可以直接讀出密碼的尷尬局面,才演化出密碼加鹽哈希保存這種方案。
而且這個哈希最好還得結合Key Derivation Function(KDF),這樣可以拖慢計算速度——對於網站自己來說,多出來的計算負擔小到可以忽略不計;但對於拖庫後試圖批量破解密碼的黑客來說,他每一次試錯都繞不開KDF,也就是說,黑客暴力試錯所需的運算量會暴增至原來的成千上萬倍。
比特幣的所有交易數據公開,所以,UTXO集合(可以理解爲所有地址餘額的數據庫)也是公開的——這就相當於網站已經被“拖庫”的情況,黑客的暴力試錯頻率完全不受限制,如果說有限制,那也只是受黑客能控制的軟硬件性能限制。
而且,比特幣腦錢包的情況,實際上相當於傳統網站管理員安全意識不佳的情況:只是哈希了一下,既沒有加鹽,也沒有KDF。
人腦想出的密碼往往很容易被猜中,換句話說就是“熵值低”,只需要搜索不太大的一片空間,就能掃到很多人自以爲別人猜不中的密碼。
更何況,破解比特幣地址是有明確經濟利益“激勵”的。
在以前的一屆DEFCON大會上,安全研究員Ryan Castellucci就展示了這麼一個看上去很長,也很“藝術”的腦錢包密碼:
how much wood could a woodchuck chuck if a woodchuck could chuck wood
它對應的地址應該是1GjjGLYR7UhtM1n6z7QDpQskBicgmsHW9k
(比特幣百科的Brainwallet詞條就引用了這個的資料)
這句woodchuck算是“腦殘包”嗎?
即便是如此藝術的密碼,照樣能被黑客的暴力破解工具不費多少力氣就掃到,這還是多年以前——想想看現在的旗艦顯卡性能相當於當初的多少倍。
我隨手用VanitySearch測試了一下,一個CPU核心每秒就能嘗試大約4百萬個私鑰。
像是唐詩三百首這種,把這些古詩的詩句挨個哈希嘗試一遍,你覺得現代的計算機需要多長時間就能完成?即便是每一句詩都替換掉一些字詞,也頂多相當於升級爲“唐詩三萬首”,本質上並沒有什麼區別。
你有多大的自信,能想出遠比這句“woodchuck”更復雜、更“藝術”的密碼?
你又何必要把資金安全依託在自己的“藝術細胞”和“自信心”上?
我經常說,這就有點像是bitcoinchallenge.codes那種解謎遊戲一樣,是和黑客玩智力競猜遊戲。也許有些謎題確實是長久以來都沒有人能猜中,但我覺得不能說這種“智力競猜遊戲”可以作爲通用、可靠的存幣方案。而且誰也保證不了是不是明天就會有人猜解出來。
與其絞盡腦汁去“設計謎題”,爲什麼不直接隨機生成一個呢?
而且,網上自稱“早期礦工”“存幣存了很多年”的帖子應該有不少吧,幾分真幾分假?反正我是說不準。
有人還提出,可以隨便挑一個電腦上的文件,取它的哈希值作爲密碼;或者,先把密碼哈希一次,再加上另一個密碼,最後才作爲腦錢包密碼輸入;或者就是加入所謂“右腦圖形記憶”……
諸如此類,在我看來,都只不過是花裏胡哨的腦錢包變體而已。這些花裏胡哨的腦錢包方案雖然有可能避過最簡單粗暴的掃描工具,但仍然不能避開腦錢包存在的本質問題——人腦想出的密碼熵值往往太低。
傳統的腦錢包只會生成單個地址私鑰。
然而,很顯然,重複使用一個地址對隱私是不利的,就連中本聰的比特幣白皮書的“隱私”這一章節裏,也有提到過這一點:
As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner.
在某些極端情況下,也許腦錢包會有用,就好像約翰·馬吉把膠片縫在大衣裏一樣,更何況,腦錢包連“縫進大衣”這個步驟都不需要。
如果你用的是BIP39或aezeed之類隨機生成的助記詞,用它導入HD錢包,那至少可以避開傳統腦錢包“人腦想出的密碼熵值低”和“重複使用同一個地址導致隱私性較差”這兩大問題。
不過,一般情況下,還是很不推薦使用(即使是隨機生成的)腦錢包的,因爲人的記憶往往不是那麼可靠。“忘詞=丟幣”這還是太悲催了。
文章來源:鏈節點
作者:BurntCoins