Giả sử chúng ta có một nhóm với n thành viên là M1, M2, …,Mn, đầu tiên các thành viên Mi và Mi+1 sẽ trao đổi khóa DH cho nhau với i=1...n. Sau bƣớc này ta sẽ có n/2 nhóm nhỏ gồm các cây con T1,T2…Tn/2, mỗi cây gồm một nút gốc và hai nút lá. Đối với mỗi cây con này ta chọn các thành viên gắn với nút là ngoài cùng bên phải
làm nút “bảo đảm”. Các nút “bảo đảm” của các cây con Ti và Ti+1 lại tiến hành gửi broadcasts toàn bộ khóa công khai cho nhau và các nút gốc của hai cây con sẽ tiến hành trao đổi khóa DH cho nhau tạo thành một cây mới với hai nút gốc cũ là hai nút nội bộ. Nếu một cây con nào không tìm thấy cây nào để trao đổi khóa DH thì nó giữ nguyên sẽ không làm gì cả. Quá trình cứ lặp lại nhƣ vậy đến khi nào chỉ còn một nhóm duy nhất.
Ví dụ : Giả sử ban đầu trong một nhóm ta có 6 thành viên là M1, M2, M3, M4, M5, M6. Ở vòng đầu tiên các thành viên M1 và M2, M3 và M4, M5 và M6 lần lƣợt trao đổi khóa DH cho nhau và tạo thành 3 cây TI1, TI2, TI3.
Bƣớc tiêp theo TI1 và TI2 sẽ gửi broadcasts toàn bộ khóa công khai của 2 cây cho toàn bộ các thành viên. Sau đó TI1 và TI2 sẽ hợp lại tạo thành một nhóm mới là TII1, còn cây TI3 sẽ giữ nguyên không làm gì và đổi tên thành cây TII2.
Ở vòng cuối cùng TII1 và TII2 sẽ gộp lại thành một cây TGDH cuối cùng là TIII bao gồm tất các thành viên của nhóm.
Hình 2.17: Quá trình khởi tạo một cây TGDH với 6 thành viên Việc tính toán khởi tạo nhóm khóa theo thuật toán sau :
[+] Đầu tiên tất cả các thành viên Mi với i=1…n sẽ gửi broadcasts cho toàn mạng khóa bki của mình.
[+] Tiếp theo các thành viên sẽ tiến hành tạo cây TDGH nhƣ trên đã nói. Để tiết kiệm chi phí bộ nhớ nó sẽ loại bỏ toàn bộ các bkeys, chỉ giữ lại bkeys của bản thân và hàng xóm của nó.
Mỗi thành viên (l,v) với v lẻ sẽ tạo một danh sách gồm các nút (l-i, v/2i) thỏa mãn:
1<i<l
Phần nguyên của v/2i-1 và v/2i-2 là số lẻ hoặc nút đó là một nút lá
Mỗi thành viên v lẻ sẽ tính toán khóa bkeys của nút nội bộ gắn với nó rồi gửi broadcasts cho toàn mạng. Sau đó các thành viên với v lẻ sẽ loại bỏ khỏi danh sách nút nội bộ gắn với nó (nút cha).
[+] Trong bƣớc tiếp theo mỗi thành viên trong mạng sau khi nhận đƣợc các khóa bkeys ở bƣớc trên sẽ tự mình tính toán các khóa bkeys trên đƣờng dẫn đến nút gốc (0,0). Nếu nút nào nằm trong danh sách của thành viên ở bƣớc trên thì khi tính toán bkeys của nó, thành viên đó sẽ gửi broadcasts cho toàn mạng và loại bỏ nút đó khỏi danh sách.
[+] Sau các bƣớc trên thì mỗi thành viên đều nắm đƣợc tất các bkeys trên đƣờng dẫn đến nút gôc (0,0). Các thành viên sẽ tự động tính toán ra khóa chung cả nhóm
Ví dụ : Trở lại với hình vẽ trên với 6 nút thành viên là M1, M2, M3, M4, M5, M6. [+] Ở bƣớc thứ nhất khi các thành viên gửi broadcasts cho toàn mạng khóa bki của mình. Các thành viên chỉ giữ lại các bkeys cần thiết.
M1 và M2 giữ lại bk(3,0) và bk(3,1). M3 và M4 giữ lại bk(3,2) và bk(3,2). M5 và M6 giữ lại bk(2,2) và bk(2,3). Các nút M1, M3, M5 do v chẵn nên không cần làm gì cả. Các nút M2, M4, M6 sẽ lập danh sách của mình M2 có {(2,0)} M4 có {(2,1), (1,0)} M6 có {(1,1)}
[+] Bƣớc tiếp theo M2, M4, M6 sẽ tính toán các bkeys của các nút cha tƣơng ứng là bk(2,0), bk(2,1), bk(1,1) và gửi broadcasts các bkeys đó cho toàn mạng. Đồng thời các nút tƣơng ứng (2,0), (2,1), (1,1) sẽ bị loại bỏ khỏi danh sách.
[+] Trong bƣớc 3, các nút M1, M2, M3, M4 sau khi nhận đƣợc các bkeys ở bƣớc trên sẽ tự tính ra bk(1,0). Do nút (1,0) nằm trong danh sách của nút M4 nên M4 sau khi tính ra bk(1,0) sẽ gửi broadcasts nó cho toàn mạng.
[+] Sau khi các thành viên có đủ các khóa bkeys sẽ tự tính ra khóa dung chung cả nhóm.