|
Windows Vista. Я впервые использую
эти два слова в статье, поэтому напоминаю себе пятилетнего ребенка,
который гуляет по магазину игрушек с чеком, в котором не проставлена
сумма покупки. Тут можно о многом поговорить, многое исследовать,
развить обсуждения по огромному количеству вопросов.
Некоторое время тому назад я читал блог гуру по
безопасности Брюса Шнайера (Bruce Schneier) и наткнулся на нечто,
что для меня в тот момент было совершенно новым – BitLocker™. Я
быстро понял, что эта функция предназначалась для криптографических
возможностей Windows Vista®—и тут же
напрягся – «О нет, Windows Vista занимается криптографией? Вряд ли
это приведет к чему-то хорошему. И даже если что-то и получается,
наверняка где-то есть проколы.»
Существует некоторое количество исторических
аргументов (подтвержденных или нет) относительно того, почему не
стоит полагаться на функции безопасности, встроенные в Windows®. Но я пишу эту статью по другой причине. Я,
напротив, хочу подробно рассказать о том, почему я думаю, что
существует ряд причин дать BitLocker шанс. Также я бы хотел сказать
пару слов о философии, обеспечивающей жизнеспособность
криптографического программного обеспечения и оборудования.
Но не надо ошибаться: Я не предлагаю BitLocker в
качестве панацеи для всех вопросов безопасности – BitLocker всего
лишь один из кусочков головоломки безопасности. Его целью является
обеспечение отказоустойчивости при определенных моделях угроз.
Например, BitLocker очень хорошо подходит для
случаев с пропавшими (или украденными) портативными компьютерами.
Мобильные пользователи постоянно носят с собой различную
конфиденциальную информацию – в поездах и самолетах, ресторанах и
отелях, домашних офисах и филиалах компаний. Эта информация хранится
на их портативных компьютерах и других мобильных устройствах,
которым зачастую не хватает настоящей защиты, что ставит под угрозу
хранящиеся на них данные. Так что происходит с данными, если один из
ваших пользователей оставит где-нибудь свой портативный
компьютер?
Если человек небрежен, это очень сложно
исправить. К счастью, можно свести к минимуму неприятности, которые
с этим связаны. Компания понесет значительно меньшие убытки при
замене портативного компьютера в сравнении с убытками при раскрытии
конфиденциальной информации. Именно для обеспечения этого вида
безопасности и предназначен BitLocker.
Сомнения в достоверности
Здесь я хочу обсудить BitLocker с интересной
точки зрения. Дело в том, что я сам еще не проводил испытания этой
программы. Я знаю, что вы можете подумать: как человек, который даже
не использовал BitLocker, может судить о нем и уж тем более сказать
что-то ценное? Прошу вас потерпеть. На самом деле я собираюсь
обсудить криптографию с более высокого уровня, а также философии
разработки, необходимые для успешного решения проблемы.
Все началось с моего прочтения блога Брюса
Шнайера. Предположим, вы хотите посмотреть новый фильм. Вы строите
некоторые предположения о фильме на основе рекламного ролика и
актерского состава. Разумеется, хороший актерский состав не может
гарантировать то, что и фильм будет хорошим. Однако, он может многое
сказать о фильме и о том, что можно от этого фильма ожидать. Кто там
снимается – Крис Рок и Бен Стиллер? Или Кейт Уинслет и Джонни
Депп?
Точно так же, когда я вижу, как известный и
уважаемый в международном масштабе гуру безопасности обсуждает в
своем блоге BitLocker, я могу сделать ряд предположений. Для начала
я предполагаю, что эта новая технология либо достаточно хороша,
чтобы заслужить его упоминание, либо настолько плоха, что он хочет
сообщить об этом всем. К моему удивлению, окончательный вердикт
Брюса Шнайера был положительным.
Одно предложение в его записях выделялось особо:
«У этой системы нет обходных путей». Это довольно сильное заявление.
Оно выглядело очень уверенно и включало в себя ссылку на блог группы
Microsoft®, занимающейся целостностью
систем. Я воспользовался этой ссылкой и нашел высказывания Нильса
Фергюсона (Niels Ferguson), разработчика программ безопасности
корпорации Майкрософт, отрицающего слухи о том, что Майкрософт
специально предусмотрел обходные пути в BitLocker для
правоохранительных органов. Фергюсон прямо заявил, что обходные пути
неприемлемы, и он не будет участвовать ни в одном проекте, который
их поддерживает. (Он также объяснил, что даже если бы корпорация
Майкрософт была вынуждена включить обходные пути по настоянию
правоохранительных органов, она либо объявила бы об этом публично,
либо же вовсе отказалась от этой функции.)
Имя автора – Нильс Фергюсон – объясняет
уверенность Шнайера и передает эту уверенность и мне. Фергюсон –
человек, который знает, о чем говорит, а его репутация
свидетельствует о том, что его словам можно доверять. Брюс Шнайер и
Нильс Фергюсон являются авторами книги «Практическая криптография»
(основополагающего труда по применению хорошей криптографии, просто,
правильно и безопасно), а также разработчиками блочного шифра,
Twofish – 128-разрядной сети Feistel, которая заслужила признание в
криптоанализе, став финалистом процесса отбора AES (Advanced
Encryption Standard, улучшенного стандарта шифрования).
Разумеется, даже если к проекту добавлен надежный
криптограф, нет гарантии, что окончательная версия продукции будет
безопасной. Даже мастера этого дела иногда могут сделать пару
промахов. Однако, вне зависимости от успехов BitLocker, вы можете,
по крайней мере, быть уверены, что в его создании были задействованы
надежные стратегии проектирования.
Говоря о промахах, существуют добросовестные
попытки, предпринимаемые разработчиками, ничего не смыслящими в
криптографии, и недобросовестные попытки тех, кто наиболее
заинтересован в том, чтобы как можно быстрее выпустить продукцию.
Обе попытки, вне зависимости от намерений, не решают проблемы
безопасности. Вышесказанное, тем не менее, не относится к BitLocker.
В этом случае удачу предвещает участие в процессе хотя бы одного
компетентного криптографа и достаточных ресурсов, поддерживающих
проект.
Несколько слов
о доверии
Не так давно Фил Циммерман (Phil Zimmerman),
создатель шифрования PGP, поделился со мной несколькими
практическими методами. Если бы когда-нибудь был опубликован труд
под названием «Принципы безопасности для разработчиков», его советы
наверняка были бы самыми ценными. Хотя они и не относятся конкретно
к BitLocker, но философии проектирования, на которых они основаны,
могут применяться к практически любому криптографическому решению.
Возможно, вам они покажутся очевидными или чересчур навязчивыми.
Однако, учитывая текущее положение вещей с безопасностью, о них
стоит упомянуть отдельно.
При разработке криптографической инфраструктуры
разработчик должен использовать простые, правильные и безопасные
методы. Хотя ошибок избежать все равно не удастся, они не должны
восприниматься как нечто естественное и попросту сбрасываться со
счетов. Разработчик должен твердо придерживаться принципа самых
высоких требований. Циммерман советует «работать так, как если бы
одна ошибка стоила кому-нибудь жизни». Думаете, это преувеличение?
На ежегодной конференции по компьютерной безопасности в 2005 году
NSA криптограф Брайан Сноу (Brian Snow) (ныне находящийся на пенсии)
сказал: «Устройство, отвечающее за безопасность, должно быть
функционально и надежно. Мы не проводим бета-тесты на клиентах. Если
моя продукция не будет работать должным образом, кто-нибудь может
умереть.» Запомните – ошибки могут повлечь за собой не только
денежные расходы.
Пользователи заслуживают гарантии надежности.
Доверие пользователей необходимо заслужить – и поддерживать.
Циммерман заявляет об этом весьма четко: «Заслужите доверие
пользователей. Как только вы возьмете на себя эту ответственность,
вы уже не сможете сложить ее с себя». Таким образом, компания дает
пользователям гарантию и поддерживает свою репутацию надежного
производителя. В случае утраты репутации ее практически невозможно
восстановить.
Я надеюсь, корпорация Майкрософт учитывала эти
принципы при разработке BitLocker (или любой другой продукции,
относящейся к этой области). Вышесказанным я хотел объяснить, почему
я думаю, что Майкрософт все сделала правильно и создала технологию
шифрования, которую следует воспринимать серьезно.
Простой человек и его слон
Elephant
По сути BitLocker – это то, как Windows Vista (и
особенно выпуски Enterprise и Ultimate) шифрует все данные
системного тома. Это приложение может показаться весьма
незамысловатым, но необходимо учитывать ограничения. Поскольку
BitLocker шифрует данные по каждому сектору, а шифрованный текст не
может быть больше открытого текста, практически не остается места ни
для чего другого – например специальных данных (числа или строки,
используемых только один раз для проверки подлинности), вектора
инициализации (IV) или кода проверки подлинности сообщений (MAC). Я
предвидел вероятность появления таких ограничений и условий, которые
они накладывают, но я также знал, что проблема проверки подлинности
сообщений не будет выпущена из виду.
BitLocker полагается на то, что часто называют
упрощенной проверкой подлинности. Компромисс не так консервативен,
как вам бы хотелось, поскольку предполагает, что шифрованный текст
после обработки будет представлять собой бессмысленный открытый
текст. Другими словами, если шифрованный текст будут обрабатывать,
он скорее вызовет сбой системы, чем позволит конкуренту добиться
выполнения каких-либо функций.
Группа Майкрософт, занимавшаяся BitLocker, знала,
что совершенно новый блочный шифр потребует больше времени для
анализа, чем это приемлемо, однако существующие разработки либо не
были достаточно хорошо изучены, либо оказались недостаточно
эффективными. Поэтому для шифрования Майкрософт выбрала AES в режиме
CBC (цепочки шифрованных блоков), который я буду называть AES-CBC.
Этот шифр неотличим для выбранной модели атаки с открытым текстом
(сокращенно IND-CPA), но не сохраняет целостности. А поскольку нет
места также и для MAC, а CBC – это режим конфиденциальности, то
можно говорить о полном отсутствии сохранения целостности. По этому
сигналу в нашу посудную лавку входит слон Elephant.
Новый компонент Elephant содержит два диффузора,
разработанных для обработки существенно лучшей упрощенной проверки
подлинности, чем чистый AES-CBC. (Должен, тем не менее, отметить,
что возможно применение AES-CBC без Elephant для тех, кто должен
придерживаться строгих политик соответствия стандартам.) Хотя
упрощенная проверка подлинности не всегда является идеальной, она
предлагает наиболее подходящее решение в условиях существующих
ограничений, а Elephant призван использовать ситуацию по максимуму.
Каким образом все это работает?
На рис. 1 приведен порядок понимания. При
шифровании открытый текст при помощи XOR объединяется с ключом
сектора. Затем текст проходит через два диффузора без ключей. После
этого текст шифруется при помощи AES-CBC. Ключ сектора и AES-CBC
требуют ключевой материал и, таким образом, оба получают ключи –
независимо друг от друга. Этот метод упрощает формализацию проверки
сокращения безопасности конструкции AES-CBC и Elephant по сравнению
с AES-CBC. Elephant – это новый базовый элемент, а новые элементы
обычно вызывают недоверие до тех пор, пока они тщательно не
проанализированы. Этот подход, тем не менее, уравновешивает весы,
поскольку BitLocker может показать, что AES-CBC с Elephant атаковать
не намного легче, чем AES-CBC без него.
Рис. 1 Упрощенная проверка подлинности с использованием
Elephant
Ключ сектора и компоненты AES-CBC оба получают
256 битов ключевого материала, увеличивая длину ключа до 512 битов.
По умолчанию эти компоненты используют только 128 битов ключевого
материала каждый, что означает, что некоторый ключевой материал не
используется. Причиной этого является то, что гораздо легче
выбросить биты, которые вам не нужны, чем изменить инфраструктуру
управления ключами по мере изменения длины ключа.
Длиной блока может стать любая степень двойки, в
пределах от 512 до 8192 битов. Для того, чтобы гарантировать, что
любое изменение результатов шифрованного текста приведет к случайным
изменениям во всем открытом тексте сектора, блок шифрования создан
для работы с изменяющимся размером блока. Более того, если он будет
вести себя как настраиваемый блочный шифр (как описывают Лисков,
Ривест и Вагнер) с несколько изменяющимся от сектора к сектору
алгоритмом, оппонент не сможет успешно перенести шифрованный текст
из одного сектора в другой.
Время покажет
Размышления о криптографической безопасности
BitLocker могут увести в сторону от более масштабной проблемы.
Надежность BitLocker не обязательно означает, что он будет в
состоянии выполнять свою работу. Причиной этого является то, что
BitLocker – не отдельная программа, а лишь одно из многих дополнений
Windows Vista. Майкрософт заявляет, что BitLocker плотно
интегрирован в Windows Vista. Однако, если существует такая плотная
интеграция с операционной системой, не означает ли это, что сбой в
работе одного из компонентов может привести к сбою или снижению
надежности BitLocker?
Лично я верю в модульный принцип и изолированные
сбои. Плотная интеграция без модульного принципа приведет к
осложнениям. Разумеется, этого может не произойти с Windows Vista и
BitLocker, однако только время – и подробный анализ – покажет, так
ли это на самом деле.
Так что я думаю о BitLocker? Я снимаю шляпу перед
группой Майкрософт, занимающейся целостностью систем, за работу с
надежными криптографами, которые четко выполняют свои обязанности.
Совершенно очевидно, что эта функция была разработана для
шифрования, а не для маркетинговой кампании. Поэтому я заявляю, что
BitLocker следует воспринимать серьезно. Я не говорю о том, является
ли он действительно надежным. Это будет ясно только со временем и по
результатам применения. Многие элементы шифрования и протоколы были
взломаны. Но, по крайней мере, группа целостности систем Майкрософт
дала нам понимание и платформы, на которых можно создать более
совершенные решения.
|
|