Эти и другие недостатки разработки сделали WEP очень легким для компрометации. Первая практическая демонстрация того, что WEP был сломан, состоялась, когда Адам Стабблфилд был молодым сотрудником компании AT&T (Stubblefield и др., 2002). Он мог реализовать и проверить атаку, описанную Fluhrer и др. (2001) за одну неделю, большая часть которой была потрачена на убеждение менеджеров купить ему WiFi карту для использования в эксперименте. Программы, взламывающие пароли WEP за одну минуту, теперь свободно доступны, поэтому использование WEP не поощряется. Он запрещает обычный доступ, но не обеспечивает никакой реальной формы безопасности. Группа 802.111 спешно собралась, когда стало ясно, что WEP был сломан. В результате был создан формальный стандарт от июня 2004 года.
Теперь мы опишем 802.11i, который обеспечивает реальную безопасность, если правильно настроен и правильно используется. Существует два обычных сценария, в которых используется WPA2. Первый — это корпоративное использование, когда у компании есть отдельный сервер для аутентификации, хранящий имена пользователей и пароли, которые используются, чтобы определить, имеет ли право клиент получить доступ к сети. В этом случае клиенты используют стандартные протоколы для того, чтобы аутентифицировать себя и войти в сеть. Основные стандарты — это 802.1X, где точка доступа позволяет клиенту вести диалог с сервером аутентификации и наблюдать результат, и EAP (Extendable Authentication Protocol — расширенный протокол аутентификации) (RFC 3748), который описывает, как взаимодействуют клиент и аутентификационный сервер. EAP является средой, а другие стандарты определяют сообщения протокола. Мы не будем подробно рассказывать о деталях данного обмена, в кратком обзоре они не имеют значения.
Второй сценарий — домашнее использование в условиях, где нет аутентификационного сервера. Вместо него есть единый общий пароль, который используется клиентами для доступа в беспроводную сеть. Эта система менее сложная, чем в случае с аутентификационным сервером, именно поэтому она используется в домашних условиях и в маленьких фирмах, но она и менее надежная. Основная разница состоит в том, что при наличии аутентификационного сервера каждый клиент получает ключ для шифрования трафика, неизвестный другим клиентам. При едином общем пароле для каждого клиента создается свой ключ, но у всех клиентов одинаковый пароль, и они могут узнать ключи друг друга, если захотят.
Ключи, использующиеся для шифрования трафика, рассчитываются как часть аутентификационного опознавания. Опознование происходит сразу после того, как клиент связывается с беспроводной сетью и проходит аутентификацию на аутентификационном сервере, если он есть. В начале опознавания у клиента есть либо общий пароль сети, либо пароль для аутентификационного сервера. Пароль используется для получения основного ключа. Но основной ключ не используется прямым образом для шифрования пакетов. Существует стандартная криптографическая практика создавать новый ключ для каждого периода использования, менять ключ для разных сеансов и держать основной ключ в секретности. При опознавании рассчитывается именно ключ сеанса.
Ключ сеанса рассчитывается при четырехпакетном опознавании, показанном на рис. 8.27. Во-первых, AP (Access Point — точка доступа) посылает случайный номер для идентификации. Случайные номера, использующиеся только один раз в протоколах безопасности, таких как этот, называются nonces (нонсы — временные значения), это сокращение выражения «number used once» — «номер, использующийся только один раз». Клиент также выбирает свой собственный временный номер. Он использует временный номер, адрес MAC и адрес AP, а также основной ключ, чтобы вычислить ключ сеанса, Ks. Ключ сеанса разбивается на отрезки, каждый из которых используется для различных целей, но мы опустили эту деталь. Теперь у клиента есть ключи сеанса, а у AP нет. Клиент посылает свой временный номер AP, AP производит тот же самый расчет, чтобы получить ключ сеанса. Временные номера могут быть посланы открытым способом, так как на основании них невозможно рассчитать ключи без дополнительной, секретной информации. Сообщение от клиента защищено проверкой целостности, которая называется MIC (Message Integrity Check — проверка целостности сообщения), данная проверка основывается на ключе сеанса. AP может установить, что MIC верный и сообщение действительно пришло от клиента, после того как она рассчитает сессионные ключи. MIC это просто другое название кода аутентификации сообщения, как в HMAC. Название MIC часто используется вместо протоколов безопасности, чтобы не путать с адресами MAC (Medium Access Contol — контроль доступа к среде).
Рис. 8.27. Четырехпакетное опознавание и генерация сеансового ключа в 802.11i
В последнем из двух сообщений AP выдает клиенту общий ключ KG, и клиент подтверждает подлинность сообщения. Получение данных сообщений позволяет клиенту удостовериться, что у AP есть верные ключи сеанса, и наоборот. Общий ключ используется для передачи трафика по 802.11 LAN. Так как в результате опознавания оказывается, что у каждого клиента есть свои ключи шифрования, ни один из этих ключей не может быть использован AP для передачи пакетов всем клиентам беспроводной сети; надо будет послать отдельную копию со своим ключом каждому клиенту. Вместо этого используется общий ключ, так что широковещательный трафик может быть послан один раз и получен всеми клиентами. Этот ключ должен обновляться по мере того, как клиенты уходят из сети и присоединяются к ней.
Наконец, мы подходим к той части, где ключи используются для обеспечения безопасности. Два протокола могут быть использованы в 802.11 i для обеспечения конфиденциальности, цельности и аутентификации. Как и WPA, один из протоколов, TKIP (Temporary Key Integrity Protocol — временный протокол целостности ключа) был временным решением. Он был разработан для того, чтобы увеличить безопасность старых и медленных карт 802.11, так что безопасность у него, по крайней мере, выше, чем у WEP. Однако его сейчас тоже можно взломать, так что лучше использовать другой рекомендованный протокол — CCMP. Что означает CCMP? Это сокращение от Counter mode with Cipher block chaining message authentication code protocol — режим счетчика с протоколом аутентификации в режиме сцепления обратной связи. Мы будем называть его CCMP. Вы можете называть его как хотите.
CCMP работает довольно прямым путем. Он использует шифрование AES с помощью ключа и блоков размером 128 бит. Ключ выводится из ключа сеанса. Чтобы обеспечить конфиденциальность, сообщения зашифровываются с помощью AES в режиме счетчика. Мы обсуждали режимы шифров в разделе 8.2.3. Эти режимы предотвращают шифрование каждый раз одинаковых сообщений в одинаковые наборы бит. Режим счетчика подмешивает счетчик в процесс шифрования сообщения. Чтобы обеспечить целостность, сообщение, включая поля заголовков, кодируется шифром в режиме обратной связи, и последний блок из 128 бит сохраняется как MIC. Затем и сообщение (закодированное в режиме счетчика) и MIC высылаются. И клиент, и AP могут осуществлять данную кодировку или проверить ее при получении беспроводного пакета. Для широковещательных или групповых сообщений данная процедура применяется с использованием группового ключа.
Безопасность в системах Bluetooth
Радиус действия систем Bluetooth значительно меньше, чем сетей 802.11, поэтому взломщику не удастся произвести атаку, оставив ноутбук в припаркованной рядом со зданием машине, однако вопрос безопасности важен и тут. Например, предположим, что компьютер Алисы оборудован беспроводной клавиатурой стандарта Bluetooth. Если не установить систему защиты, то Труди, находясь за стенкой, в соседнем офисе, сможет без труда прочесть все, что набирает Алиса, включая исходящую почту. Можно захватить все, что передается на беспроводной принтер, если расположиться неподалеку от него (включая входящую почту и конфиденциальные бумаги). К счастью, в Bluetooth есть рабочая схема защиты, нарушающая планы всевозможных личностей типа Труди. Ниже мы опишем основные черты этой схемы.