精品久久伊人99热超碰,中文字幕+乱码+中文乱码,亚洲 自拍 色综合图区,男女十八禁啪啪无遮挡床震,樱花草社区在线播放

安全生成以太坊ETH靚號(hào)錢包地址教程

18
okx

免責(zé)聲明:本文旨在傳遞更多市場(chǎng)信息,不構(gòu)成任何投資建議。文章僅代表作者觀點(diǎn),不代表MarsBit官方立場(chǎng)。

小編:記得關(guān)注哦

來源:Cocoa

原文標(biāo)題:安全生成以太坊ETH靚號(hào)錢包地址教程(GPU顯卡加速無漏洞版)

近期區(qū)塊鏈領(lǐng)域黑客攻擊事件頻發(fā),其中有一個(gè)很讓Cocoa感興趣的就是Wintermute 錢包因靚號(hào)地址的問題損失約 1.6 億美元,具體說來話長(zhǎng),可以參見慢霧的這篇分析。

0.背景簡(jiǎn)介

關(guān)于什么是靚號(hào)地址這里簡(jiǎn)單解釋一下,以太坊錢包的地址是一個(gè)由0x開頭40個(gè)隨機(jī)字符的16進(jìn)制字符串,比如V神的錢包地址就是
0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B,很難記憶,也沒有個(gè)性特色。

因此有人就別出心裁,通過暴力枚舉的方式,試圖找到好看的靚號(hào)地址,比如0x888888開頭,或者為了節(jié)約合約部署的費(fèi)用,使用0x00000開頭的地址。

Profanity就是這樣一個(gè)靚號(hào)地址生成工具(這里還有個(gè)諧音梗,在英文中靚號(hào)地址叫vanity address,vanity是“虛榮”的意思,Profanity的本意是“臟話”,但取了antiy的后綴諧音)。Profanity的特點(diǎn)就是使用了GPU,所以比其他工具更快地找到靚號(hào)地址。

總之,原項(xiàng)目因?yàn)榇嬖诼┒?,目前倉(cāng)庫(kù)已關(guān)閉,而且也不推薦使用,但發(fā)現(xiàn)漏洞的1inch幫人幫到底、送佛送上天,提供了船新版本的無漏洞Profanity2,繼續(xù)滿足大家的虛榮心。

但個(gè)人感覺1inch安全功夫了得,文檔水平太爛,Cocoa貴為期末考試滿分的密碼學(xué)小王子,都看了5分鐘才理解到底怎么用。廢話少說,以下就是使用教程。

1.編譯代碼

考慮到私鑰的安全性,這類項(xiàng)目建議從官方源碼編譯使用,不過Profanity2有個(gè)創(chuàng)新改進(jìn),下面會(huì)提。

1inch這次提供的是Linux下編譯的代碼,在Windows下編譯需要改一個(gè)地方,主要是把Dispatcher.cpp中的以下代碼修改掉。

#include

另外還涉及到OpenCL的SDK以及編譯環(huán)境搭建的問題,總之這里就假設(shè)你已經(jīng)拿到了可執(zhí)行程序。

2.本地生成密鑰對(duì)

Profanity2的一大改進(jìn)就是將原來直接生成私鑰、再計(jì)算公鑰的步驟,改成:

  • 先生成密鑰對(duì)(私鑰A+公鑰A)
  • 然后把公鑰A放到程序去跑,生成私鑰B
  • 最后把私鑰A和私鑰B數(shù)學(xué)相加,得到私鑰C

這個(gè)私鑰C對(duì)應(yīng)的公鑰C就是你想要的的靚號(hào)了。

其中的數(shù)學(xué)原理Cocoa還沒深入研究,大致猜測(cè)就是先用一個(gè)安全可靠的工具(如openssl)生成密鑰對(duì),再通過程序暴力試出一個(gè)偏差量,使私鑰加上這個(gè)偏差量可以導(dǎo)出靚號(hào)公鑰。

這樣的一個(gè)好處就是Profanity2可以交由第三方或者云端來運(yùn)行,因?yàn)樽罱K的私鑰C,是由私鑰A和私鑰B相加得到的(其中私鑰A是你自己本地安全生成的,只要保護(hù)好私鑰A,別人就猜不到私鑰C,因此也就安全了)。

因此首先要生成私鑰A和公鑰A,官方提供了命令,在Linux下直接執(zhí)行即可:

$ openssl ecparam -genkey -name secp256k1 -text -noout -outform DER | xxd -p -c 1000 | sed 's/41534e31204f49443a20736563703235366b310a30740201010420/Private Key: /' | sed 's/a00706052b8104000aa144034200/'$'\nPublic Key: /'

上述命令執(zhí)行完成后,屏幕上便會(huì)顯示出Private Key和Public Key,分別就是私鑰A和公鑰A,請(qǐng)注意私鑰A一定要保管好。

3.使用公鑰A去跑出私鑰B

將上面步驟得到的Public Key去掉開頭的04也就是公鑰A,放到Profanity2中去跑,命令如下:

profanity2 --matching
c0c0aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -z 公鑰A(記得去掉前面的04)

稍等一會(huì)就會(huì)跑出來一個(gè)私鑰B,過程和原版Profanity類似。

4.最終計(jì)算得到靚號(hào)地址對(duì)應(yīng)的私鑰C

拿到私鑰B(這個(gè)公開也無所謂)后,我們只要加上私鑰A(這個(gè)要保護(hù)好),即可得出最終靚號(hào)地址對(duì)應(yīng)的私鑰C了。

官方給了兩個(gè)命令,分別是shell的和python的,因?yàn)槲业膋ali好像沒有bc,所以用了python的那個(gè)。其中私鑰A記得前面加上0x。(Cocoa吐槽:尼瑪那個(gè)PRIVATE_KEY_A + PRIVATE_KEY_B 我足足理解了1分鐘才知道是數(shù)學(xué)上的加法)

(echo 'ibase=16;obase=10' && (echo '(PRIVATE_KEY_A + PRIVATE_KEY_B) % FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F' | tr '[:lower:]' '[:upper:]')) | bc

$ python3

hex((PRIVATE_KEY_A + PRIVATE_KEY_B) % 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F)

最后就得到一個(gè)0x開頭的私鑰C,導(dǎo)入metamask等錢包就可以看到我們的靚號(hào)地址啦。

附贈(zèng)章節(jié):漏洞原理簡(jiǎn)介

以太坊的私鑰是32字節(jié)(也就是256位)的,但是原版Profanity在生成這個(gè)256位的私鑰時(shí),僅采用了4字節(jié)(也就是32位)的隨機(jī)數(shù)作為偽隨機(jī)數(shù)生成器的seed。

這是小弟第一篇區(qū)塊鏈安全文章,歡迎各位大佬批評(píng)指教。我的twitter:@featherye

歐易

歐易(OKX)

用戶喜愛的交易所

幣安

幣安(Binance)

已有賬號(hào)登陸后會(huì)彈出下載

進(jìn)群交流|歐易官網(wǎng)