Engine/GroupKeyReset
Functional Principle
Warning: this does NOT REFER to the reset of group encryption keys - these are device groups. Someone needs to fix the terminology so there isn’t a conflict.
A Group Key Reset is being initiated i.e. when a device is leaving a device group. Then all remaining devices need to agree for new group keys.
While a Group Key Reset devices are generating new keys and sending them to each other so all Group Identities have new keys.
Protocol
- The Group Key Reset is initiated by one device sending InitGroupKeyReset to the group.
- When a device is reading InitGroupKeyReset it is:
- Generating new Keys and Revocations for the then Default Keys of all Own Identities
- Sending GroupKeyReset attaching these Keys and Revocations, adding its Challenge
- When a device is reading GroupKeyReset it is:
- Importing all Keys and Revocations
- If the Challenge of the GroupKeyReset is greater than the Challenge of the device then it is reworking its Own Keys:
- If an Own Key already exists it is replacing it by the received Own Key
- If an Own Key does not already exist it is creating an Own Identity with this Key