In a distributed systems, all agents are expected to use the same key to encrypt information. The system is completely distributed, no agent is privileged, agents can come and leave.
Each agent is holding a key, and I want any agent to be able replacing the key at once. That is, from some time t, all agents will use a new key K' instead of previous key K.
Connection is reliable (tcp), but more versatile solution should also be considered.
Is there a standard algorithm to do that?
I’m missing a textbook of similar consensus algorithm.
My idea:
- All agents will connect in a circle.
- Each agent will send the new key to his neighbours, once he got one, with the time of the key’s creation.
- When an agent is receiving a new key, it’ll compare the creation date of the two keys and will discard the older.
- When an agent throws his previous key – he’ll send his new key to his neighbours.
If I get it right, you want to have an agreement protocol. Depending on you assumptions (e.g., synchronization, possible faults, etc.) there are lots of such protocols.
E.g., im many cases are simpe group communication protocols (e.g., ISIS) sufficient, for more sophisticated fault modes you need Byzantine Agreement.