作者: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做认证的过程。只要任何一方认证不通过,都不允许加入。