返回介绍

天网 MAZE 的信用卡机制

发布于 2024-10-03 16:34:03 字数 1909 浏览 0 评论 0 收藏 0

由于每个 Peer 都要同时与多个服务器通讯,我们采用了一种类似信用卡机制的分布式认证算法,来确保用户身份认证的安全性和有效性。参考 Kerberos 机制,我们有信用卡发放机构(TGS: Ticket Grant Server),称之为用户管理服务器,由它进行用户注册和发放信用卡。用户持有效的信用卡访问其他的服务器,其他的服务器检查信用卡上的数字签名来验证 身份,判断是否允许进行某项操作。一个正常的从注册到登录的流程如下:

image-20200108003228403

图 3 分布式认证机制

  1. Peer 首先登录到用户管理服务器,申请一个 Maze UID 账号,申请时把登录密码保存在用户管理服务器上。
  2. 账户申请完毕之后,Peer 向用户管理服务器请求这个 Maze 账户的身份认证数据包,同时提交自己的 Maze 服务端口、自己看到的本地 IP 地址。
  3. 用户管理服务器在身份认证数据包中记录 Peer 的 Maze UID、从用户管理服务器看到的外部 IP、Maze 服务端口、是否在局域网内(根据 Peer 提交的自己看到本地 IP 和心跳服务器看到 Peer 的外部 IP 是 否一致判断)、用户级别、信用卡失效时间等信息,用系统签名私钥密码对数据包进行数字签名,把整个数据包和其数字签名(我们把它称之为信用卡)用 Peer 的登录密码进行加密,把加密后的证书返回给 Peer。整个算法可以用下列公式表示:

     

    Certificate = Maze ID + IPoutside + Portservice + InGatewayOrNo + Level + ExpireTime …
    Ticket = Certificate + Sign system-private-key (Certificate)
    EncryptedTicket = Ecrypt peer-password (Ticket)
    
  4. 如果用户在 Peer 端有正确的登录密码,就可以把加密的数据包解密,从而获得有数字签名的信用卡。

Ticket = Decrypt peer-password (EncryptedTicket)

  1. 当 Peer 需要访问其他的服务器(如心跳服务器等)时,出示这个信用卡,服务器用系统签名公钥密码检查数字签名是否正确,以及是否已经过期,如果检查失败,要求 Peer 重新申请新的信用卡,否则允许下一步操作,也就是登录成功。

这种基于信用卡机制的分布式身份认证算法,可以保证用户密码只在注册初期出现,此后并不在网上明文传送;系统签名密码则只在用户管理服务器上出现,因而从客户端很难破解,这些方法都保证了用户身份认证的安全性。

总结

​ 用户注册时,经过了 1 次摘要,1 次非对称加密,1 次对称加密:

  1. 用户服务器生成证书。证书的组成,Certificate = Maze ID + IPoutside + Portservice + InGatewayOrNo + Level + ExpireTime。
  2. 然后对证书作数字签名。数字签名过程:由证书得到数字摘要,然后对数字摘要进行非对称加密,私钥由用户服务器自己保存,形成数字签名 (Sign system-private-key (Certificate))。
  3. 对 Certificate+数字签名= Ticket 用 peer 密码进行对称加密。最后将这个加密 Ticket 发送回客户端。

​ 用户登陆时,向服务器发出请求,服务器返回 EncryptedTicket。用户则用登陆密码对 EncryptedTicket 进行解密,如果解密成功,就能得到证书+数字签名。用服务器的公钥就能验证是否来自服务器,登陆成功。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文