Итак, список операций, выполняемых протоколом, выглядит следующим образом:
Для простоты, считается, что последний участник группы является контролирующим группы (это может быть легко исправлено и не является критическим требованием).
Присоединение
Операция добавляет нового участника Mn+1 к группе из n участников. Во время операции вычисляется новый групповой ключ Sn+1 , и Mn+1 становится новым контролирующим группы. Предполагая, что Mn
является текущим контролирующим группы, протокол выглядит следующим образом:
1. Mn вырабатывает новое значение rn’ и получает множество[2]
чисел
M={g r1…rn’/ri | iÎ[1,n-1]} È{
g r1…rn-1 }È{ g r1…rn’ }
Затем M посылается Mn+1.
2. После получения сообщения Mn+1 вырабатывает число rn+1 и вычисляет значение g Ki,n+1r1…rn’rn+1/ri
для всех i из [1,n]. Затем это множество рассылается всей группе.
3. При получении каждый Mi вычисляет групповой ключ как
(g Ki,n+1r1…rn’rn+1/ri)K-1i,n+1ri= g r1…rn’rn+1= Sn+1. А Mn+1 вычисляет ключ, используя сообщение из шага (1).
Шаги (1) и (2) требуют n экспоненцирований, шаг (3) требует одно экспоненцирование для каждого участника группы. Общее число экспоненцирований для получения ключа равно 2n+1 (считается, что на третьем шаге экспоненцирования происходят одновременно и по времени равны одному).
Слияние
Операция используется для добавления k>0 участников к существующей группе из n>1 участников. Пусть m=n+k. Во время операции вырабатывается новый групповой ключ Sm, и Mm становится новым контролирующим группы. Предполагая, что Mn