螞蟻區塊鏈第8課 如何創建新的賬戶,獲取私鑰和identity標識?

1,摘要

在創建TEE硬件隱私合約鏈(標準合約鏈)的時候,配套已經創建了一個證書對和2個公私鑰對,對應了這1個賬號(duncanwang)。不理解輝哥說什麼的參考《螞蟻區塊鏈第4課 如何創建TEE硬件隱私合約鏈?》文章的描述。
但是,智能合約運行中,一般會涉及賬戶切換等操作,那就需要創建新的賬戶的需求了。
參考本文指導,輝哥完成了需要的4個新賬戶的創建,包括ella,ouyang,dingheng,daming賬號。

2,本地創建公私鑰對

2.1 螞蟻BAAS的賬戶理解

大部分人理解以太坊的賬戶體系,一個以太坊地址包括一個公鑰,一個私鑰(加密過的),是固定的。但是在螞蟻BAAS系統中,並不存在地址ADDRESS這個概念。它使用identity來表示賬戶體系,一個identity有2對公私鑰對,其中一個是恢復公私鑰對,想得挺周到的,雙重防丟失。

2.2 本地運行密鑰生成工具

螞蟻BaaS 平臺提供 Java 版本的本地密鑰服務。輝哥在WINDOWS環境下操作測試完成。

  1. 準備 Java 運行環境,1.7 版本或以上。
  2. 下載密鑰生成工具(點擊此處 下載)。
  3. 運行命令 java -jar baas-crypto-tool-1.0.0.jar --server.port=8080 啓動密鑰服務。

服務運行截圖

2.2 生成公私鑰對

啓動密鑰服務之後,在瀏覽器中訪問 http://localhost:8080/api/crypto/generateUserKey?algo=ec&isPkcs8=true&password=${password} 生成 userkey.zip 文件包。解壓該 .zip 包後得到 user.keypub.txt。其中,user.key 爲用戶私鑰(加密過的),pub.txt 中的內容爲用戶公鑰。

注意:

目前生產公私鑰對的密碼要求比較嚴,必須包含大小寫,數字和特殊字符,否則會有出錯報警。例如{“errorMsg”:"must contains number,a-z,A-Z and *^&"} ,輝哥改爲例如http://localhost:8080/api/crypto/generateTlsKey?algo=rsa&isPkcs8=true&password=2015Juban 以上告警才消失。
螞蟻專家孫善祿說,後面生成密碼限制改爲要求寬鬆一點。

可以執行該命令兩次,生成兩個公私鑰對,一個用做賬戶的公私鑰對,另一個用做恢復該賬戶的公私鑰對。
輝哥本地生成了2組公私鑰對。

問:如何得到解密後的私鑰你呢?
答:
在非WINDOWS環境下,例如UBUNTU環境下,採用第二步,第三步方法獲得解密後的私鑰。


//第一步:生成java sdk 可用的 user key文件
openssl ecparam -name secp256k1 -genkey | openssl pkcs8 -topk8 -v1 pbeWithSHA1And3-KeyTripleDES-CBC -passout pass:123abc -out user.key
//第二步:生成DER格式的key文件,臨時使用
openssl ec -passin pass:123abc -in user.key -outform DER -out user.der
//第三步:得到公鑰的16進制結果,去baas創建賬戶時候使用
cat user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

3,創建新賬號

在區塊鏈創新大賽 > 趕緊去開發 > 管理 > 賬戶管理 頁面,

創建新賬號入口

點擊“添加賬號”按鈕,其中的公鑰對就是剛纔生產的2個pub.txt文件裏面的密碼。

添加賬號

注意:
(1)直接複製過來即可,不要加0x關鍵字哦;
(2)不同賬號的公鑰/恢復公鑰可以重複;
所以輝哥一口氣用相同的公鑰/恢復公鑰把所有需要的賬號ella, ouyang, dingheng,daming全部創建好了。

4,如何生成賬號的identity標識

螞蟻區塊鏈的identity類似於以太坊系統的ADDRESS,是鏈上唯一的表示,其是根據賬號名稱做sh256算法產生的。
例如,在站長工具網站http://tool.chinaz.com/tools/hash.aspx中輸入賬號名字duncanwang,獲得其identity爲0x4983bcbaf60b9c90dc9d9a0b38a8931aad9a444acaa2adcbc61c5e3e218c49e1

根據上面方法,得到以下角色的identity爲
管理者 - test002 identity:
0xd6b1f9e8a0da740fa04245a41b78eba7be9214cf96e7f6594899706e64050d20
管理者 - ella identity:
0xfb2cb45b6b443241e38145b6445a6e0ebee0410d19e71d9fd0adf5fc382d49e5
操作員 - duncanwang identity:
0x4983bcbaf60b9c90dc9d9a0b38a8931aad9a444acaa2adcbc61c5e3e218c49e1
觀察員 - ouyang identity:
0xe26ef3b9bb0244244935f0176e2e4b5b623be3634276ee897810a380ae8c1314
市民 - dingheng identity:
0xccaa69e5e5583f2e34885450669c518a6febcdec9040a4d0a2d41cd9f8f8ca40

5,如何生成解密的私鑰信息?

在第2章中獲得的user.key的私鑰爲加密後的私鑰,不能用於CLOUD IDE切換賬號時的私鑰,需要轉換爲32字節的解密私鑰纔可以使用。
總的來說,在Ubuntu等linux環境下完成第2步,第3步就可以獲得32字節的解密後私鑰了。

//第一步:生成java sdk 可用的 user key文件
openssl ecparam -name secp256k1 -genkey | openssl pkcs8 -topk8 -v1 pbeWithSHA1And3-KeyTripleDES-CBC -passout pass:123abc -out user.key
//第二步:生成DER格式的key文件,臨時使用
openssl ec -passin pass:123abc -in user.key -outform DER -out user.der
//第三步:得到公鑰的16進制結果,去baas創建賬戶時候使用
cat user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

用此方法,可以獲得dunwang,ell等賬號的解密私鑰。

(1)dunwang
使用duncanwang_client.key文件,出來的私鑰被輝哥篡改防泄漏。

openssl ec -passin pass:2015jusanban -in duncanwang-user.key -outform DER -out duncanwang-user.der

cat duncanwang-user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

Private Key: 46f9c8c5037a92aefd811b350a42dc63591fb772ea2c104b89ccb48e1784c76c
Public Key: 90fbc786b3b51f78e2934e50ef58e26687f4125d7969de0d4aeeb2d4c2b607a3d58eacaaf75166ff15e6b62391d42a952c45574a3b1a617db3bd3edd549f5383

(2) ella/ouyang/dingheng
使用ella-user.key文件,出來的私鑰被輝哥篡改防泄漏。

openssl ec -passin pass:2015Jusanban_ -in ella-user.key -outform DER -out ella-user.der


cat ella-user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

Private Key: 2ac3bd8673454a6de00fc8915b5f2676084d2e6c74d3a0fdf34b5e63ead6e019
Public Key: 245139b08877a8bd128939ba397d63f229456d4a2cdd9ec9572d62ddc3b2955d8ba88974d8cef3309740f65c4a44bb80f9278e59ab01455f851ea734c84b27e8

6,參考

(1)合約鏈:本地生成證書請求和公私鑰對
https://tech.antfin.com/docs/2/73764

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章