Византийские серверы — это концепция, основанная на проблеме византийских генералов, которая иллюстрирует проблемы достижения консенсуса в распределенных вычислительных системах, где компоненты могут выходить из строя и существует несовершенная информация. В контексте систем хранения византийские серверы представляют собой узлы хранения, которые могут проявлять произвольное или вредоносное поведение, включая отправку конфликтующей информации в разные части системы, отсутствие ответа или активные попытки повредить данные или манипулировать ими. Такое поведение представляет собой серьезную угрозу безопасности и надежности систем хранения данных, особенно тех, которые основаны на распределенной архитектуре.
Проблема византийских генералов, впервые предложенная Лесли Лэмпортом, Робертом Шостаком и Маршаллом Писом в 1982 году, описывает сценарий, в котором группа генералов должна договориться об общей стратегии, чтобы избежать неудачи. Однако некоторые генералы могут быть предателями, предоставляя ложную информацию, чтобы помешать консенсусу. Применительно к компьютерным системам византийские сбои относятся к произвольным сбоям, которые могут возникнуть в любой части системы, включая ошибки программного обеспечения, сбои оборудования или злонамеренные атаки.
В системах хранения византийские серверы могут подорвать целостность, доступность и конфиденциальность данных. Эти угрозы можно классифицировать следующим образом:
1. Угрозы целостности: Византийские серверы могут повредить данные, хранящиеся в системе. Это повреждение может быть незаметным, например, изменение нескольких битов данных, или более серьезным, например, полная замена данных ложной информацией. Проблема в том, что византийские серверы большую часть времени могут вести себя корректно, что затрудняет немедленное обнаружение повреждений. Например, в распределенной файловой системе, если византийский сервер изменяет содержимое файла, другие клиенты, обращающиеся к тому же файлу, могут получить неверные данные, что приводит к потенциальной потере данных или ошибкам приложения.
2. Угрозы доступности: Византийские серверы могут нарушить доступность данных, отказываясь отвечать на запросы или предоставляя ответы с задержкой. Если в распределенной системе хранения подмножество серверов становится византийским, это может привести к ситуации, когда система не сможет достичь необходимого кворума для выполнения операций чтения или записи, что фактически сделает данные недоступными. Например, в службе облачного хранения, если несколько узлов хранения перестают отвечать на запросы из-за византийского поведения, пользователи могут столкнуться со значительными задержками или полной невозможностью доступа к своим хранимым данным.
3. Угрозы конфиденциальности: Византийские серверы могут передавать конфиденциальную информацию неавторизованным лицам. Это может произойти, если сервер был скомпрометирован злоумышленником, который затем похитил данные, или если сервер намеренно передает данные неавторизованным лицам. В случае, когда хранится конфиденциальная личная информация или служебные деловые данные, такие нарушения могут привести к серьезным нарушениям конфиденциальности и финансовым потерям.
Чтобы снизить риски, связанные с византийскими серверами, было разработано несколько стратегий и протоколов. К ним относятся:
– Византийские протоколы отказоустойчивости (BFT): Эти протоколы созданы для достижения консенсуса при наличии византийских ошибок. Одним из наиболее известных протоколов BFT является «Практическая византийская отказоустойчивость» (PBFT), который позволяет распределенной системе допускать, чтобы до одной трети ее компонентов были византийскими. PBFT работает, имея несколько реплик данных и требуя, чтобы определенное количество реплик согласовали состояние данных, прежде чем какая-либо операция будет считаться зафиксированной. Это гарантирует, что даже если некоторые реплики являются византийскими, система все равно сможет работать правильно.
– Стирающее кодирование и избыточность: Благодаря использованию стирающего кодирования и избыточному хранению данных на нескольких серверах системы хранения могут противостоять византийским ошибкам. Стирающее кодирование разбивает данные на фрагменты и кодирует их избыточной информацией, так что даже если некоторые фрагменты будут повреждены или потеряны, исходные данные можно будет восстановить. Такой подход повышает отказоустойчивость и обеспечивает доступность данных, несмотря на наличие византийских серверов.
– Криптографические методы: Использование криптографических методов, таких как цифровые подписи и хэш-функции, может помочь обнаружить и предотвратить повреждение данных византийскими серверами. Например, клиенты могут подписывать свои данные перед их сохранением, а серверы хранения могут проверять подписи при получении. Любое изменение со стороны византийского сервера приведет к несоответствию подписи, что предупредит систему о потенциальном повреждении.
– Аудит и мониторинг: Регулярный аудит и мониторинг серверов хранения могут помочь обнаружить византийское поведение. Постоянно проверяя целостность и доступность данных, системы хранения могут идентифицировать и изолировать византийские серверы. Для обеспечения целостности данных можно использовать такие методы, как протоколы запроса-ответа, где серверы должны доказать, что они все еще обладают правильными данными.
– Системы репликации и кворума: Репликация данных на нескольких серверах и использование подходов на основе кворума для операций чтения и записи могут смягчить влияние византийских ошибок. Система кворума требует, чтобы определенное количество серверов согласовали операцию до ее выполнения. Это гарантирует, что даже если некоторые серверы являются византийскими, они не смогут в одиночку нарушить работу системы.
Примером практической реализации византийской отказоустойчивости является блокчейн-платформа Hyperledger Fabric, которая использует вариант PBFT для достижения консенсуса между своими узлами. В этой системе транзакции предлагаются клиентами, одобряются группой узлов, а затем упорядочиваются и проверяются механизмом консенсуса, который допускает византийские ошибки. Это гарантирует, что даже если некоторые узлы являются вредоносными или неисправными, целостность и согласованность блокчейна будут сохранены.
Другим примером является Spanner от Google, глобально распределенная база данных, которая использует комбинацию репликации, систем кворума и синхронизированных часов для достижения высокой доступности и согласованности. Хотя архитектура Spanner не предназначена специально для византийской отказоустойчивости, она обеспечивает устойчивость к определенным типам сбоев и обеспечивает целостность и доступность данных в географически распределенных центрах обработки данных.
Наличие византийских серверов в системах хранения требует комплексного подхода к безопасности, сочетающего в себе множество методов и протоколов. Используя византийские протоколы отказоустойчивости, избыточность, криптографические методы, аудит и системы кворума, системы хранения могут добиться устойчивости к произвольному и вредоносному поведению, демонстрируемому византийскими серверами. Это обеспечивает целостность, доступность и конфиденциальность данных даже в условиях сложных атак и сбоев.
Другие недавние вопросы и ответы, касающиеся Безопасность передовых компьютерных систем EITC/IS/ACSS:
- Каковы некоторые проблемы и компромиссы, связанные с внедрением аппаратных и программных средств защиты от атак по времени при сохранении производительности системы?
- Какую роль предсказатель ветвления играет в атаках по таймингу процессора и как злоумышленники могут манипулировать им для утечки конфиденциальной информации?
- Как программирование с постоянным временем может помочь снизить риск атак по времени в криптографических алгоритмах?
- Что такое спекулятивное выполнение и как оно повышает уязвимость современных процессоров к атакам по времени, таким как Spectre?
- Как тайминговые атаки используют изменения во времени выполнения для получения конфиденциальной информации из системы?
- Чем концепция согласованности разветвления отличается от согласованности выборки-изменения и почему согласованность разветвления считается самой сильной достижимой согласованностью в системах с ненадежными серверами хранения?
- Каковы проблемы и потенциальные решения для реализации надежных механизмов контроля доступа для предотвращения несанкционированных изменений в общей файловой системе на ненадежном сервере?
- В контексте ненадежных серверов хранения, каково значение ведения согласованного и поддающегося проверке журнала операций и как этого можно достичь?
- Как криптографические методы, такие как цифровые подписи и шифрование, могут помочь обеспечить целостность и конфиденциальность данных, хранящихся на ненадежных серверах?
- Как такие протоколы, как STARTTLS, DKIM и DMARC, способствуют безопасности электронной почты и какова их роль в защите электронной почты?
Посмотреть больше вопросов и ответов в EITC/IS/ACSS Advanced Computer Systems Security