Слияние

Операция используется для добавления k>0 участников к существующей группе из n>1 участников. Пусть m=n+k. Во время операции вырабатывается новый групповой ключ Sm, и Mm становится новым контролирующим группы. Предполагая, что Mn является текущим контролирующим группы, протокол выглядит следующим образом:
1.	Mn вырабатывает новое значение rn’ и вычисляет g r1…rn-1rn’. Затем это сообщение отправляется к Mn+1.
2.	Каждый участник Mj , j=n+1,…,m-1 вырабатывает число rj и вычисляет  gr1….rn’…rj . Это сообщение посылается Mj+1.
3.	После получения сообщения, Mm рассылает полученное значение всей группе
4.	После получения сообщения каждый участник Mi, i=1,2,…,m-1 группы вычисляет g(r1….rn’…rm-1)/ri и посылает его Mm.
5.	Mm вырабатывает rm и получает множество
M={ g Ki,m r1…rn’ … rm/ri | i[1,m-1]}.
Затем оно посылается группе.
6.	При получении сообщения шага (5) каждый Mi , i=1,2…m-1 вычисляет групповой ключ как   (gr1…rn’…rmKim / ri)Kim-1ri= g r1…rn’…rm= Sm. Аналогично, Mm вычисляет ключ, используя сообщение из шага (3).
Если k=2, то  шаг (2) не нужен, в остальном протокол выглядит также.
 Шаги требуют всего  k модульных экспоненцирований. Также, как и ранее, шаги (4) и (6) требуют по одному для каждого участника. Шаг (5) требует n+k-1 экспоненцирований. Число экспоненцирований для присоединения k участников равно n+2k+1. 

Операция присоединения также может быть использована для добавления k участников к группе. Это потребует повторить операцию присоединения k раз  – соответственно возрастает трудоемкость операции. Таким образом для массового добавления участников группы лучше использовать операцию слияния. Если использовать операцию слияния для добавления одного участника к группе, то получается на два экспоненцирования больше, чем для операции присоединения. Итак, присоединение используется для добавления одного участника к группе, а слияние – нескольких.