Голосование:
1) Голосующие генерируют у себя пару ключей для участия в данном голосовании (vote_key), ключи не содержат никакой информации о голосующем; 2) Генерируют пакет "голоса", шифруют используя vote_key.private; 3) Генерируют пакет "участия", который подтверждает, что этот пользователь принял участие в голосовании, подписывают его master_key.private; 4) Распространяют их разными путями. При распространении пакеты подписываются используя transport_key.private так же включается временная отметка (transport_sign). 5) Принимающий пакеты (2) или (3) сохраняет в БД transport_sign (4). 6) Проверяет по транспортной подписи отправителя, что он входит в субъект, иначе игнорирует этот пакет с данными. 7) Если он является членом этого субъекта, удаляет из пакета (2) транспортную подпись отправителя (transport_sign), и создает свою, иначе оставляет пакет данных без изменений. 8) Передает получившиеся данные дальше.
Пункты (7) и (8) гарантируют, что без дополнительной информации нельзя определить получили вы пакет от первоисточника или он транзитный. Пункт (5) гарантирует, что если все транспортные подписи будут известны, можно определить первоисточник данных.
_________________ AF4B DFB0 0E41 2F7A 09FD 4971 96F0 B176 EA1C DD85
|