Недавно я узнал об обмене McCallum-Relyea, который позволяет использовать метод условного депонирования ключей без фактической передачи ключа.
Он был разработан в RedHat и используется сильный запах и скоба утилиты (и далее описанные здесь), чтобы обеспечить автоматическую расшифровку, в частности, для зашифрованного корневого раздела для машин Linux. Таким образом, клиентская машина может загрузить и расшифровать свой диск только в том случае, если она находится в сети, где она может получить доступ к серверной машине.
Я не нашел никакого анализа этого протокола, поэтому мне было интересно, какой уровень безопасности он предлагает по сравнению с более традиционным методом, таким как сервер, хранящий ключ и передающий его по каналу TLS, а также есть ли какие-либо недостатки в биржа, которая может быть использована.
Биржа представляет собой модифицированную/расширенную версию ECDH, которая работает следующим образом:
На стороне сервера сначала создается долгоживущая пара ключей EC с закрытым ключом. $s$ и открытый ключ $S = [s]G$.
Клиент, желающий защитить сообщение $ млн $, генерирует закрытый ключ $с$ и открытый ключ $C = [c]G$. Затем клиент запрашивает ключ с сервера по каналу открытого текста. Сервер отвечает $S$ подписал с $s$. Пользователь на стороне клиента проверяет ключ сервера каким-то внеполосным методом и записывает хэш ключа сервера. Затем клиент выполняет половину обмена ECDH, чтобы получить $K = [c]S = [cs]G$. $К$ затем используется (прямо или косвенно) для шифрования $ млн $ через симметричный шифр, после чего клиент отбрасывает $К$ и $с$ и сохраняет только $С$. На данный момент клиент не может расшифровать $ млн $ без сервера.
Когда клиент хочет расшифровать $ млн $, он создает эфемерную пару ключей $е$ и $E = [e]G$, затем вычисляет $Х = С + Е$ и отправляет $Х$ на сервер. Затем сервер выполняет половину обмена ECDH с $Х$ и $s$ чтобы генерировать $Y = [s]X$ и передает $Y$ вернуться к клиенту, используя $S$ чтобы подписать сообщение.
Получив $Y$ с сервера и проверки подписи сервера, клиент затем выполняет другую половину ECDH с $S$ и $е$ вычислять $Z = [e]S$. Затем клиент рассчитывает:
Y - Z = sX - eS
= s(C + E) - eS
= sC + sE - es
= скГ + сЭГ - ЭсГ
= scG
= К
Чтобы восстановить $К$ и расшифровать $ млн $.