Если вы хотите, чтобы C мог расшифровать все, что адресовано B, то самое простое — просто передать ключ дешифрования B C.
Еще есть что-то под названием перешифрование прокси это также соответствует духу «переадресации» зашифрованного текста. В перешифровании прокси есть алгоритм $\textsf{ProxyKey}(sk_B, pk_C) \to rk_{B\to C}$: он принимает закрытый ключ B и открытый ключ C в качестве входных данных и генерирует ключ повторного шифрования. $rk_{B \to C}$. Тот, у кого есть этот ключ повторного шифрования, может сделать $\textsf{ReEncrypt}(rk_{B \to C}, ctxt) \to ctxt'$, который принимает зашифрованный текст $ctxt$ адресовано $В$ и превращает его в $ctxt'$, шифрование того же самого, но адресованное $С$.
(Есть также варианты, где $\textsf{ProxyKey}$ нужен закрытый ключ обеих сторон.)
Важным отличием здесь является то, что лицо, которое «переадресует» зашифрованный текст («прокси»), может быть кем угодно, кроме B или C. Прокси, у которого есть только $rk_{B\to C}$ но тот, кто не знает закрытых ключей B или C, не может открывать шифротексты, адресованные B или C. Они могут только преобразовывать шифротексты для B в шифротексты для C (а не наоборот), не заглядывая внутрь.Предполагая, что прокси-сервер и C являются разными сторонами, тогда C может читать только те сообщения, адресованные B, которые прокси-сервер решит преобразовать.