一組研究人員發現,基於Javascript的錢包應用程序生成的舊比特幣地址存在安全隱患。
研究人員發現,黑客可以利用Javascript缺陷,竊取存儲在錢包應用程序生成的舊比特幣地址中的比特幣。使用密碼暴力破解,網路犯罪分子可以獲得這些比特幣地址的私鑰,並獲取存放在其中的錢包和比特幣所有權。
Javascript SecureRandom()函數中的熵不足
這個漏洞主要來自於生成比特幣地址和私鑰的Javascript SecureRandom()函數,比特幣地址是一串以“1”或“3”開頭的字母和數字組合代碼,它指定了比特幣支付的目的地,類似於電子郵件地址。私鑰就像是密碼,與比特幣地址存在數學聯繫。
來自Linux Foundation的一位匿名貢獻者指出,JavascriptSercureRandom()函數並不是真正隨機的(註:random是隨機的含義)。此外,英國Unix系統專家大衛·格蘭德(David Gerard)也發現了這個問題,並且在許多加密夥伴論壇上就該問題展開了討論。
研究人員之所以普遍認為這個函數並非是真正的隨機,是因為它生成的加密密鑰熵級別很低。熵指的是系統的隨機程度,熵值越高,密碼被暴力破解的難度就越大。
大衛·格蘭德認為,Javascript SercureRandom()函數生成的密鑰熵值小於48位,因此其生成的密鑰應該很容易被破解。
獲得更安全的比特幣地址
大衛·格蘭德發現,2013年之前的BitAddress錢包服務和2014年之前的Bitcoinjs生成的許多比特幣地址,很可能會受到這一漏洞的影響。大衛·格蘭德還透露,目前使用GitHub熵的舊版軟體庫生成的錢包軟體,可能也存在問題。
倫敦大學學院計算機科學系研究員Mustafa Al-Bassam表示,許多舊的比特幣錢包應用程序都使用jsbn.js加密庫來生成比特幣地址,2013年以前的版本很可能使用了易受攻擊的SecureRandom()函數,而破解這些比特幣地址的私鑰需要大約一周時間就能完成。
因此,大衛·格蘭德建議擁有此類地址的比特幣持有者使用較新的工具創建新地址,並且將資金從舊地址轉移到新地址,以保證安全。