组安全性的工作原理

对等组要求每个成员都有一个特定的证书,该证书称为组成员证书 (GMC) 。 GMC 证书可确保对等方之间交换的所有记录都经过数字签名。 对等方的公钥包含在作为对等方之间通信的一部分传递的结构中,包括 PEER_CREDENTIAL_INFO

可以在链中颁发 GMC。 例如,创建者可以向管理员 A 颁发 GMC,后者可以将 GMC 颁发给管理员 B,后者可以向成员 M 颁发 GMC。生成的 GMC 链为:creator-A-B-M>>>,其长度为 4。 链长度很重要,因为它不能超过 24。 如果链中的第 24 位管理员尝试向成员颁发 GMC, 则 PeerGroupIssueCredentialsPeerGroupCreateInvitation 将返回PEER_E_CHAIN_TOO_LONG。

还可以通过调用 PeerGroupIssueCredentials 来颁发 GMC。 GMC 表示为其颁发 GMC 的组中的用户成员身份,可以具有有限或无限的生存期。 组成员活动不能超过 GMC 中指定的生存期。

注意

无限 GMC 生存期目前设置为 1000 年。

 

组成员活动受 GMC 生存期限制,包括以下内容:

  • 记录操作 - 组成员身份过期后,对等方无法发布组中的信息,或发布生存期超过对等组成员身份生存期的记录。
  • 成员身份操作 - 组管理员颁发的成员身份的生存期不能超过组管理员成员身份中指定的日期。 例如,如果管理员的 GMC 生存期还剩 500 小时,则所有颁发的成员资格必须少于 500 小时。

由于组成员的生存期不能超过邀请该组成员的管理员,因此建议将管理员的 GMC 生存期设置为无限期或很长的生存期。 默认情况下,组创建者具有无限生存期。

续订组成员身份

若要续订其 GMC 生存期已过期的管理员或成员的凭据,可以使用以下两个选项:

  • 调用 PeerGroupIssueCredentials 并传递其生存期已准备好过期的成员的标识。 如果凭据指定为 NULL ,并且对等方的成员身份信息可供组使用,则续订时间将设置为之前发布的成员凭据中指定的持续时间。 如果必须指定不同的持续时间,则必须提供包含新生存期的新 PEER_CREDENTIAL_INFO 结构,然后为成员发布新的 GMC。

    PeerGroupIssueCredentials 函数可以选择采用 PEER_GROUP_STORE_CREDENTIALS 标志,该标志会自动在组数据库中发布成员的新凭据。 当成员下次(第一次或脱机后)连接到组时,该成员将从数据库获取更新的 GMC。

  • 调用 PeerGroupCreateInvitation 以传递其 GMC 生存期已准备好过期的成员的标识。 如果邀请中指定的过期时间为 NULL,则 GMC 的生存期与颁发成员身份的管理员 GMC 相同。 如果创建者将过期时间指定为 NULL,则会发出具有无限生存期的 GMC。

    如果向对等颁发了在存在生存期值之前过期的 GMC,则对等节点的地址在调用 PeerGroupEnumMembers 发起的枚举中返回的PEER_MEMBER结构中不可用。 发生此情况的原因是,即使未设置PEER_DISABLE_PRESENCE标志,也不会发布状态信息。