Хакер № 02/05 (74)

Воздушный дуршлаг
Антон Карпов
Хакер, номер #074, стр. 074-064-2
- Проверяет равенство c' = c(M'). Если оно верно, то M' = M, то есть полученное сообщение равно исходному.
Особенности реализации
WEP использует потоковый шифр RC4 для генерации ключевого потока. Это широко известный, проверенный алгоритм, и разработчики WEP поступили правильно, что не стали изобретать своих шифров. Очевидно, что протокол надежен исключительно благодаря потоковому шифру RC4. Используя этот шифр, отправитель генерирует ключевой поток (keystream) и ксорит этот поток с открытым текстом, получая шифртекст. Получатель генерирует тот же самый кейстрим и ксорит с ним шифртекст, получая исходный открытый текст. Операция XOR зеркально применяется два раза: P' = C xor K = P xor K xor K = P.
Значит, основным моментом является выбор ключа. Один из главных параметров - его длина. В момент разработки стандарта ограничение на длину ключа накладывалось запретом на экспорт стойкой криптографии за пределы США, окончательно снятым лишь в 2000 году, а также фактом использования WEP в маломощных портативных беспроводных устройствах (PDA, периферия). Так что длина ключа в первоначальной реализации WEP была 64 бита: 40 бит непосредственно на ключ, используемый абонентами, и 24 бита на вектор инициализации. Некоторые производители беспроводных устройств сразу же сочли такой размер ключа недостаточным и выпустили свой вариант расширенного WEP с длиной ключа 128 бит. На самом деле, естественно, ключ имеет длину 104 бита, а вектор инициализации - все те же 24 бита. По идее, безопасность достигается за счет того, что методом подбора очень трудно разгадать ключ k. Но, как ты увидишь в дальнейшем, ни классический WEP, ни WEP расширенный не создали должного уровня защищенности, несмотря на размер ключа.
Атаки на WEP
Хоть RC4 - вполне надежный алгоритм, его еще нужно уметь использовать. Так, никогда нельзя шифровать два разных сообщения одним и тем же ключевым потоком. Приведем пример. Предположим, открытые тексты P1 и P2 шифруются одним и тем же потоком K. Тогда
C1 = P1 xor K
C2 = P2 xor K
Но тогда
C1 xor C2 = P1 xor K xor P2 xor K = P1 xor P2
Таким образом, злоумышленник, способный перехватить два шифртекста, путешествующих по радиоканалу, применив к ним операцию XOR, получает в свои руки XOR-разность двух открытых текстов! И если он знает хотя бы часть одного открытого текста, он может вычислить и второй открытый текст, так как реальные сообщения обладают избыточностью, с помощью которой можно извлечь и P1, и P2, имея только P1 xor P2.
Повторное использование ключевого потока
Как уже упомянуто выше, ключевой поток WEP - RC4(v,k), то есть зависит только от v и k. K - фиксированный ключ, который для простоты эксплуатации обычно никогда не меняется. То есть ключевой поток зависит только от вектора инициализации (IV) v, который, напомню, пересылается по сети в открытом виде. Злоумышленник, прослушивая сеть долгое время, может заметить коллизию - шифрованный пакет с уже однажды использованным IV. Вспомни, что вектор инициализации имеет длину всего 24 бита. Таким образом, после 2^24 (около 16 миллионов) пакетов вектор инициализации ОБЯЗАТЕЛЬНО БУДЕТ ПОВТОРЕН. Отмечу, что длина фиксированного ключа k не играет в данном случае абсолютно никакой роли, так что данной проблеме подвержены как стандартная, так и расширенные реализации WEP. 16 миллионов пакетов для загруженной беспроводной сети - не так уж и много: так, в 802.11b-сети точка доступа, постоянно посылающая пакеты размером 1500 байт на скорости 11 мегабит в секунду, исчерпает все значения IV за 1500*8/(11*10^6)*2^24 = ~18000 секунд, или 5 часов.
Назад на стр. 074-064-1 Содержание Вперед на стр. 074-064-3
|
 |
|