作者:UDFS / 來源:Ulord社區
UDFS節點入網認證流程
入網流程說明:
1)用戶A使用錢包按照要求向指定地址轉入一筆資金,獲得txid、voutid。
2)CA證書頒發過程:用戶A這時候可以開始部署UDFS的節點服務程序,并提供voutid、txid、secret三個關鍵信息到UDFS節點程序中。節點A初次嘗試連接網絡中的節點時,首先會向UCenter進行證書申請:
a)使用txid、voutid、secret向UCenter服務申請證書
b)UCenter服務會驗證txid、voutid的有效性
c)UCenter將voutid、txid、secret產生的公鑰(public key)、證書的有效期(period)以及UCenter本次簽名的所使用的私鑰版本號(licversion)進行hash運算
d)UCenter對hash運算的結果用自己的私鑰進行加密產生證書(license)
e)UCenter將license、licversion、period反饋給節點A
f)A保存好收到的license、licversion、period
3)節點A驗證period,確保自己的證書還在有效期內。否則重新進入流程2,重新進行申請。
4)節點A向UDFS網絡的引導節點B發起連接請求,一旦連接上之后便進入連接流程。這里要注意的是,為了進一步加強UDFS網絡的安全性,這里做了雙向認證。即雖然B已經在UDFS網絡中了,但是A在連接B的時候,A和B都要互相去驗證對方的身份。這里為描述方便,只簡述單項認證的過程:
a)B收到A連接上的消息后,立刻給A反饋一個隨機hashB。隨后等待A發來認證信息。
b)A用自己的secret對hashB進行簽名得到SignedHashB,發送txid、voutid、license、licversion、period、public key、SignedHashB給B。
c)B首先校驗period字段是否已經過期,如果過期則直接拒絕認證。
d)B開始對A發來的license進行校驗:根據liversion獲取UCenter本次解密需要用到的公鑰UCenterPublicKey,然后B用A提供的txid、voutid、licversion、public key、period進行hash運算,最后B使用ecdsa算法對hash、license、UCenterPublicKey三者進行認證,如果license合法,則證明license有效,同時也通過這種方式確認了public key。
e)B對hashB、public key、SignedHashB進行校驗,如果認證通過,則證明A的證書和其擁有的secret是同一個人的。
f)至此,已經可以確認A是合法的了。這里要說明一下為什么需要B先發送hashB過去。目的是為了避免有人拿到了A的證書,但是沒有A的secret,這時候為了冒充A,每次連接時都發送相同的SignedHashB來做認證。因此由B每次發送隨機的HashB就可以避免這種情況。
5)雙向認證在上述說明的基礎上,增加了A一旦連接上B,立即發送hashA給B,然后B對hashA做簽名之后發送認證信息給A,讓A來對B做認證的過程。只要任何一方認證不通過,都不允許加入。