Como funciona a segurança de grupo
Os grupos de pares exigem que cada membro tenha um certificado específico, que é chamado de GMC (Certificado de Membro do Grupo). O certificado GMC garante que todos os registros trocados entre pares sejam assinados digitalmente. A chave pública de um par está contida nas estruturas passadas como parte da comunicação entre pares, incluindo PEER_CREDENTIAL_INFO.
Um GMC pode ser emitido em uma cadeia. Por exemplo, um criador pode emitir um GMC para o administrador A, que pode emitir um GMC para o administrador B, que pode emitir um GMC para o membro M. A cadeia GMC resultante é: creator-A-B-M>>>, que tem um comprimento de 4. O comprimento da cadeia é importante, pois não pode ter mais de 24 anos. Se o 24º administrador em uma cadeia tentar emitir um GMC para um membro, PeerGroupIssueCredentials ou PeerGroupCreateInvitation retornará PEER_E_CHAIN_TOO_LONG.
Um GMC também pode ser emitido chamando PeerGroupIssueCredentials. Um GMC implica a associação do usuário no grupo para o qual o GMC é emitido e pode ter um tempo de vida finito ou infinito. A atividade de membro do grupo não pode ser maior do que o tempo de vida especificado no GMC.
Observação
O tempo de vida infinito do GMC está atualmente definido em 1000 anos.
A atividade de membro do grupo é limitada pelo tempo de vida do GMC e inclui o seguinte:
- Registrar operações – um par não pode publicar informações em um grupo após a expiração da associação do grupo ou publicar registros que tenham um tempo de vida maior do que o tempo de vida de associação de grupo do par.
- Operações de associação – um administrador de grupo não pode emitir uma associação que tenha um tempo de vida além da data especificada na associação de administrador do grupo. Por exemplo, se um administrador tiver 500 horas restantes em seu tempo de vida GMC, todas as associações emitidas deverão ser inferiores a 500 horas.
Como um membro do grupo não pode ter um tempo de vida maior do que o administrador que convida esse membro do grupo, é recomendável definir o tempo de vida gmc de um administrador como infinito ou por um tempo de vida muito longo. O criador do grupo tem um tempo de vida infinito por padrão.
Renovando a associação de grupo
Para renovar as credenciais de um administrador ou membro cujo tempo de vida gmc está pronto para expirar, você tem as duas opções a seguir:
Chame PeerGroupIssueCredentials e passe a identidade do membro cujo tempo de vida está pronto para expirar. Se as credenciais forem especificadas como NULL e as informações de associação do par estiverem disponíveis para o grupo, o tempo de renovação será definido com a mesma duração especificada nas credenciais de membro publicadas anteriormente. Se um período de duração diferente precisar ser especificado, uma nova estrutura de PEER_CREDENTIAL_INFO deverá ser fornecida que contenha a nova duração do tempo de vida e, em seguida, um novo GMC será publicado para o membro.
A função PeerGroupIssueCredentials usa opcionalmente o sinalizador PEER_GROUP_STORE_CREDENTIALS, que publica automaticamente as novas credenciais do membro no banco de dados do grupo. Quando o membro se conecta ao grupo na próxima vez, pela primeira vez ou depois de ficar offline, o membro obtém o GMC atualizado do banco de dados.
Chame PeerGroupCreateInvitation para passar a identidade do membro cujo tempo de vida gmc está pronto para expirar. Se a expiração especificada no convite for NULL, a duração do tempo de vida do GMC será a mesma do administrador GMC que emite associação. Se o criador especificar a expiração como NULL, um GMC com um tempo de vida infinito será emitido.
Se um par for emitido um GMC que expire antes do valor de tempo de vida de presença, os endereços do par não estarão disponíveis no PEER_MEMBER estruturas retornadas na enumeração iniciada por uma chamada para PeerGroupEnumMembers. Isso acontece porque as informações de presença não são publicadas nesse caso, mesmo que o sinalizador PEER_DISABLE_PRESENCE não esteja definido.