Чего то вы там мутите короче......
Что такое сертификат можно легко найти в инете (по крайней мере там будет написано лучще чем я объясню) Если коротко то это хранилище включаюшее в себя следующие основные части : название субьекта , открытая часть ассиметричного ключа (тут какой хотите такой ассиметричный ключ и вкладывайте - Диффи-Хелман, RSA либо при "особом желании" открытый ключ ГОСТа 2001
) , областей его применения и все это подписанно на закрытой части ключа либо самого субьекта (самоподписанный сертификат) либо на закрытой части ключа доверенного центра сертификации.
аутентификации приемников и генераторов -- применение сертификатов
обеспечение целостности данных -- все пакеты на уровне работы вашего протокола должны быть с MAC ом..
обеспечение конфиденциальности информации -- шифрование симметричным алгоритмом.
Так как данные ваш генератор должен рассылать мультикастом , то нужно обеспечить чтобы на приемниках были одинаковые сесионные ключи.
Предлагаю следующий протокол:
1) генерим пары открытый - закрытый ключ для приемников и генераторов, генерим сертификаты для генераторов и приемников подписанные на закрытом ключе ключе центра сертификации. Раздаем каждому ПР и ГЕН свои сертификаты + сертификат центра сертификации.
2) генератор случайным образом вырабатывает сессионный ключ для симмтричного алгоритма шифрования (и для вычисления MAC, если MAC строится тоже на симметричном алгоритме )
3) ПР если у него нет сесионного ключа (только включился или еще чего там) посылет пакет ГЕН на определенный порт содержащий просьбу выслать ему сесионный ключ + посылает свой сертификат
4) ГЕН получив пакет проверяет сертификат ПР (с помощью сертификата центра сертификации) шифрует сессионный ключ открытым ключем ПР (достает его из сертификата ПР
) добавляет свой сертификат, подписывает все это своим закрытым ключем и всю эту бодягу отправляет ПР.
(Если ктото пошлет сертификат ПР не зная закрытой части ключа ПР то в расшифровать сессионный ключ он всё равно не сможет.... )
5) ПР принимает пакет содержащий эти данные. Проверяет сертификат ГЕН (опять с помощью сертификата центра сертификации) проверяет подпись на пакете с помощью открытого ключа ГЕН (достает открытый ключ ГЕН из сертификата ) расшифровывает сесионный ключ симметричного алгоритма.
(пункты 3 4 5 позволяют произвести взяимную аутентификацию ГЕН и ПР и безопасно передать с ГЕН на ПР сессионнвй ключ)
6) Проводим пункты 3 4 5 для каждого приемников в итоге у всех приемников и ГЕН одинаковвй сесионнвй ключ
7) Шлем данные мультикастомс ГЕН шифруия их данным сессионным ключем который мы разослали всем ПР
, они их получают и расшифровывают))) Наступает счастье
8) Опять же вместе с сесионным ключем шифрования можно было передать ключ для вычисления MAC и на все пакеты с ГЕН на примники накладывать заодно и MAC
9) Ну там вводим всякие усложнени, типа изменения сесионного ключа после определенного к-ва переданной информации
И всякие другие приправы по вкусу.....
Писал вечером, думать влом, поэтому за весь вышестоящий бред ответственности не несу!!!!
Может чего-то не додумал, может где-то легче сделать можно...
PS Я вообще у меня с русским бяда, так что если где синтаксические или иные ошибки -- sorry !