
8.2. Защищенные каналы 491
ему результата ничто не будет угрожать. Подобные атаки могут произойти в слу-
чае успешного взлома злоумышленником одного или нескольких серверов.
Способом защиты клиента от подобных атак является сбор ответов всех сер-
веров с идентификацией каждого из них. Если ответы невзломанных (то есть аутен-
тифицированных) серверов составляют большинство, клиент может считать, что
ответ корректен. К сожалению, подобный подход нарушает прозрачность репли-
кации серверов.
В [376] было предложено решение для защищенного реплицируемого серве-
ра, позволяющее сохранить прозрачность репликации. Достоинство такого под-
хода состоит в том, что клиенты остаются в неведении о реальных репликах и
поэтому значительно проще скрытно добавлять и удалять реплики. Мы вернем-
ся к вопросу управления защищенными группами ниже, при обсуждении вопро-
сов управления ключами.
Смысл защищенных и прозрачно реплицируемых серверов кроется в том, что
пдзыъдс^тся разделением секрета {secret
sharing).
При разделении секрета ни один
из нескольких пользователей (или процессов) не знает секрета целиком, секрет
может быть открыт только в случае их совместной работы. Такие схемы могут
быть очень удобными. Рассмотрим, например, запуск ракеты с ядерной боего-
ловкой. Это действие требует подтверждения как минимум двумя людьми. Каж-
дый из них имеет собственный закрытый ключ, причем для пуска он должен ис-
пользоваться в паре с другим. Попытка пуска с помощью единственного ключа
ни к чему не приведет.
В случае защищенных реплицируемых серверов при поиске ответа максимум
k из N серверов могут дать неверный ответ, а из этих k максимум c<k серверов
могут быть действительно взломаны злоумышленником. Отметим, что это тре-
бование предполагает, что служба устойчива к k ошибкам. Этот вопрос мы обсу-
ждали в предыдущей главе. Разница состоит в том, что сейчас серверы, которые
работают ошибочно, взломаны намеренно.
Теперь рассмотрим ситуацию, когда серверы активно реплицируются. Други-
ми словами, запрос рассылается всем серверам одновременно, после чего обраба-
тывается каждым из них. Каждый сервер генерирует ответ, который возвращает-
ся клиенту. В случае защищенной реплицируемой группы серверов предполага-
ется, что каждый сервер сопровождает свой ответ цифровой подписью. Если г,
—
ответ сервера 5,, то пусть
тс1(Г{)
обозначает дайджест сообщения, вычисленный
сервером 5/. Этот дайджест подписан закрытым ключом
iC^
сервера 5,.
Представим себе, что мы хотим защитить клиента от максимум с взломанных
серверов. Другими словами, группа серверов должна быть в состоянии скрыть
последствия взлома максимум с серверов, оставаясь при этом в состоянии сгене-
рировать ответ, которому клиент сможет доверять. Если подписи отдельных сер-
веров можно скомбинировать таким образом, чтобы построение правильной под-
писи для результата требовало минимум с +
1
подписей, это решает проблему.
Другими словами, мы хотим, чтобы реплицируемые серверы создавали секрет-
ную правильную подпись так, чтобы с взломанных серверов были не в состоя-
нии собрать эту подпись без помощи минимум одного «честного» сервера.
В качестве примера рассмотрим группу из пяти реплицируемых серверов, ко-
торые должны быть в состоянии выдержать взлом двух из них и давать при этом