Защита
Аутентификация является одной тех из задач, которые людям приходится многократно решать ежедневно, поэтому даже ваши реальные, лояльные пользователи или клиенты могут оказаться измотанными. Важно разработать средства защиты, которые хорошо проверяют подлинность, не перегружая людей чрезмерно.
Ни один фактор в отдельности не работает хорошо для аутентификации людей, и использование более одного фактора – лучший способ преодолеть эти недостатки. (Я подразумеваю, что должны использоваться несколько типов факторов, например «Что у вас есть» и «Что вы знаете», а не многократное повторение или вариации «Что вы знаете».) Мы обсуждали эти факторы в целом выше, в разделе «Аутентификация людей компьютерами», и я хотел бы вернуться к «Что вы знаете».
«Что вы знаете»
Защита систем паролей включает в себя управление тем, что люди выбирают в качестве пароля, работу с реальностью повторного их использования, понимание, что другие сайты будут сливать их, и, следовательно, необходимость безопасного хранения паролей.
«Защитники» должны ожидать, обнаруживать словарные атаки и реагировать на них. Полезно обновлять список распространенных паролей каждый год. Я вполне уверен, что мы наблюдали всплеск использования паролей murderhornet (оса-убийца) в 2020 году и covid в 2021-м.
Офлайн-атаки на «Что вы знаете» основаны на прямом доступе к копии базы данных аутентификации. Хорошо спроектированные базы данных аутентификации используют множество итераций криптографического хэша и хранят не сам пароль, а значение его хэша. Хэш-функция спроектирована таким образом, что нет возможности перейти от выхода к входу. (Это называется атакой нахождения прообраза на хэш-функцию.) Если на вашей платформе есть функции для установки и проверки паролей, они, вероятно, сделают это за вас. Нюансы защиты хранимых аутентификаторов очень познавательны, если вы хотите углубиться в защиту, но простой ответ – используйте Argon2, победителя конкурса по хэшированию паролей. Вам также нужно будет использовать «соль» (случайное значение для каждого пароля, хранящееся в открытом виде), чтобы два пользователя, использующие один и тот же пароль, имели разную хранимую информацию для проверки подлинности. (Подробнее смотрите в главе 7.)
Если вы используете другие секреты (улица, на которой вы выросли), то необратимый хэш накладывает требование точных совпадений. Вы можете скорректировать ответы людей перед проверкой (изменить «Улицу» или «ул.» на «улицу») в качестве альтернативы сохранению ответов в виде простого текста.
Аутентичные жесты – «Что вы сделали»
Настольные операционные системы раньше рассматривали все программное обеспечение, запущенное «от имени вошедшего в систему пользователя», как эквивалентное. Программа могла прочитать или записать все ваши файлы. Программы-вымогатели любят такие функции. Теперь все эволюционировало, и путь развития, с упором на «аутентичные жесты», описан в главе 6. Если вы разрабатываете платформу, подумайте, полезно ли отличать физический ввод от виртуального.
Возможность борьбы со спуфингом зависит от типа программного обеспечения. Если ваши клиенты используют веб-браузер, вы не можете контролировать, куда этот браузер переходит. Создатели подключенных устройств часто имеют больше контроля. Их устройствам может потребоваться подключение только к небольшому количеству пунктов назначения, и эти места назначения могут находиться под контролем производителя устройства. Такой тип управления позволяет указать сертификаты или удостоверяющий центр (УЦ), которые являются доверенными. (Это чревато поломкой в случае потери сертификатов или недоступности УЦ.) Подмена локальных файлов, к которым имеет доступ только ваше приложение, относительно проста, но становится сложнее по мере того, как доступ к этим файлам осуществляется по сети.
Заключение
Давайте вернемся к вопросу о том, как R2-D2 узнает, что нужно проиграть голограмму принцессы Леи, говорящей: «Помогите, Оби-Ван Кеноби». Возможно, будучи оперативником высокого уровня, дроид ведет биометрическую базу данных доверенных участников Повстанческого альянса? В этом случае очень важно убрать его с корабля подальше от Империи: в случае его захвата клад может быть найден судебно-медицинскими экспертами, и все повстанцы могут быть немедленно разоблачены. Неприкосновенность частной жизни важна для многих людей. Сохранение конфиденциальности списков членов или клиентов имеет значение, даже если вы не сражаетесь с Галактической Империей.
В самом широком смысле, поскольку мы разрешаем действия в зависимости от того, какая учетная запись используется и какие полномочия ей предоставлены, мы должны убедиться, что люди и компьютеры достаточно хорошо аутентифицированы.
2Вмешательство и целостность
Когда «Тысячелетний сокол» улетает со «Звезды смерти», Хан справедливо беспокоится о том, что все было слишком просто. На это есть две причины: Оби-Ван вмешался в работу источника питания притягивающего луча, и целостность самого «Сокола» тоже была нарушена – на борту установили маяк слежения.
Введение
Вмешательство, когда полученные вами данные уже не те, которые хранились или были отправлены, представляет угрозу целостности этих данных. Наиболее распространенными способами вмешательства являются нарушения целостности хранилища и сбои целостности коммуникаций, но существует также множество способов вмешательства в целостность процесса или физическую целостность устройства. Случается вмешательство в работу систем после успешной атаки. Существуют также вопросы целостности в распределенных системах и вопросы атомарности в системах баз данных. Средства защиты целостности могут защитить вас как от преднамеренного вмешательства, так и от отказов в надежности, вызванных космическими лучами, механическими или логическими сбоями или другими случайными факторами.
Бывают ситуации, когда целостность хранилища или связи нарушается из-за того, что вы общаетесь не с тем файлом или не с тем сервером. Когда это вредоносное действие, а не ошибка, каждая из таких ситуаций может быть вызвана спуфингом, что приводит к тем же проблемам, что и нарушение целостности, но ваши файлы не затронуты, а правильный сервер предоставил бы вам правильный ответ. Целостность также связана с проблемой доступности, когда целью атаки является удаление файла.
Объекты вмешательства
Когда «Тысячелетний сокол» прятался в астероидном поле, к нему цеплялись создания, известные как миноки, что могло повредить целостность энергетических систем и корпуса корабля. Любое вмешательство происходит в том или ином контексте. Что-то оказывается повреждено или нарушено, и это может быть хранилище, связь или время. Существует также вмешательство в процесс, которое немного отличается.
Когда вы открываете файл на локальном компьютере, вы ожидаете, что этот файл будет таким, каким вы его оставили. Вы бы хотели, чтобы это было так, даже после краха системы по любой из причин. Если вы обнаружите в нем мусор, это случайное нарушение целостности. В файлы, которыми вы владеете и которые заблокировали, только вы можете вносить изменения (ну, вы и root). Конечно, есть файлы, которые намеренно доступны для записи более чем одному человеку или учетной записи.
Вы можете рассмотреть возможность использования цифровых подписей для защиты важных файлов, таких как двоичные файлы, что является прекрасной защитой. Вам нужно будет проверить, по крайней мере, кто подписал файл, а также, воможно, соответствует ли подпись или дата вашим ожиданиям. Если вы этого не сделаете, вы подвергнетесь атаке с откатом версии вперед или назад. То есть если у вас есть подпись для Microsoft Word 11.2, который полностью пропатчен, и кто-то может заменить ее на 11.1, то проверка целостности «тот ли это файл, который нам нужен?» недоопределена.
К хранилищам данных относятся совместно используемая память, базы данных, файловые системы, облачные хранилища, архивные системы, такие как магнитные ленты или компакт-диски, а также стикеры (памятные записки). Атаки в меньшей степени зависят от типа хранилища, за исключением того, что тип хранилища коррелирует с тем, насколько сильно он привязан к системе. Хранилища данных связаны с конкретным компьютером с разной степенью прочности. Файловые системы часто находятся на дисках внутри компьютера, но иногда на съемных носителях или подключены по сети. Записи хранятся в R2‐D2 и транспортируются через места, полные мерзавцев. (Откровенно говоря, шокирует тот факт, что системы повстанцев, используемые для анализа планов «Звезды смерти», не подверглись атакам программ-вымогателей.) Чаще всего информация хранится на самом краю грузовика на носителях, готовых упасть, или в почте, где она имеет свойство пропадать.
Когда злоумышленники физически владеют хранилищем данных, они могут обойти защиту операционной системы. Но даже если они этого не сделают, то могут обойти ядро, получив доступ к памяти или устройствам на физическом уровне, обойти проверки целостности или убедить сбитого с толку представителя выполнить операции записи за них. Если ваше хранилище данных находится в облаке, то ваша целостность зависит от изоляции по отношению к другим облачным пользователям.
Хранилище имеет ограничения, в том числе емкость. Когда диск заполнен, можно удалить самую раннюю или самую последнюю информацию. (Думаю, вы можете проявить изобретательность и выбросить данные наугад или из середины.) Если вы собираетесь алгоритмически ограничить использование хранилища, учтите, что решение о хранении журналов за N недель в последний раз пересматривалось как для Windows, так и для Linux в 1990-х годах, когда диски стоили доллары за мегабайт.