Предположим, у меня есть сервер, который публикует информацию (например, через шину сообщений) четырем сторонам: A, B, C и D. Любой участник может обнаружить весь трафик в зашифрованном виде.Чтобы использовать эту информацию, очевидно, что ее необходимо будет расшифровать:
- Сторона А должна иметь возможность считывать всю информацию (т.е. дешифровать информацию, предназначенную для А, В и С)
- Сторона B должна иметь возможность считывать информацию, предназначенную для B и C
- Сторона C должна иметь возможность считывать только информацию, предназначенную для стороны C
- Сторона D должна иметь возможность считывать информацию дляB и D
Очевидно, что этого можно достичь, если полностью разделить пары открытого / секретного ключей для каждой стороны, а затем разделить секретные ключи в соответствии с требованиями, приведенными выше.К сожалению, это не масштабируется приятно для сотен сторон.
Есть ли лучший способ?
РЕДАКТИРОВАТЬ
По сути, я хотел бы, чтобы у каждого человека был свой закрытый ключ, а при шифровании сообщения я должен сказать, что этозашифрован с помощью key = A | B | C
, так что это означает, что человек с любым из ключей A, B или C может расшифровать его.Представьте себе сундук, к которому могут быть прикреплены n
замки, любой из которых может открыть сундук.