Saturday, October 1, 2022

Wireless lan security. Глава 2. Основные функции безопасности и механизмы их обеспечения.

 В этой главе раскрыты основные темы, с которыми вы столкнетесь при изучении беспроводных сетей - от криптографии до различных протоколов безопасности, используемых в технологии. Также в главе рассматриваются некоторые примитивы криптографии, составные части механизмов безопасности и идеи, лежащие в их основе. 

Подробное рассмотрение каждой темы потребовало бы отдельной книги, поэтому в этой части мы попытались изложить суть концепций. Также вы получите представление об уязвимостях, которые подробнее описываются в следующих частях. 

В этой книге под деталями (механикой) подразумевается  функция (например, конфиденциальность), а механизмы определены как подробное описание технологий, протоколов и их реализаций (например, шифрование, форматы сообщений для обмена важной информацией и ключами). 


Механика обеспечения безопасности.


Основными функциями безопасности являются конфиденциальность, целостность и доступность. В случае беспроводных сетей (и не только их) необходимо также реализовать такие функции, как аутентификация, авторизация и контроль доступа. Зачастую доступность рассматривается как функция качества обслуживания, а не проблема безопасности. Криптография, в некотором смысле, является механизмом обеспечения безопасности. В контексте беспроводной связи интерес представляют цифровая подпись, шифрование и управление ключами. Далее приведен список формальных определений основных функций безопасности:

        Конфиденциальность - это возможность отправлять и получать данные без угрозы разглашения какой-либо части этих данных неуполномоченным лицам в процессе их передачи.

Механизмы конфиденциальности: симметричное и асимметричное шифрование.

Целостность - это возможность отправлять и получать данные без угрозы модификации любой части этих данных неуполномоченными лицами, которую не заметил бы отправитель или получатель.Если пользоваться только функцией целостности, то данные можно изменить, но благодаря этой функции фальсификация будет обнаружена.

Механизмы обеспечения целостности: цифровые подписи с использованием однонаправленных хэш-функций. 

Доступность - это возможность отправлять и получать данные. Например, если система подверглась DoS атаке, это становится невозможным.

Механизмы: в основном это способы обнаружения и предотвращения Dos атак.

Аутентификация - это установление личности отправителя или получателя. Любая проверка целостности информации или обеспечение конфиденциальности бессмысленны, если личность отправляющей или принимающей стороны не установлена должным образом.

Механизмы: протоколы различных уровней, такие как 802.1х, RADIUS, PAP/CHAP, MS-CHAP и т.д.

Авторизация - это определение действий, доступных пользователю после идентификации, т.е. его прав доступа. Как правило, авторизация тесно связана с аутентификацией. Можно возразить, что авторизация не всегда требует аутентификации, но в этой книге они связаны: авторизация обычно следует за любой процедурой аутентификации.

Механизмы: различные протоколы.

Контроль доступа - это возможность управлять доступом сущностей к ресурсам на основе различных свойств: атрибутов, результата аутентификации, политик и т.д.

Механизмы: списки контроля доступа в AP.

Шифрование - это возможность преобразования данных или открытого текста в бессмысленную последовательность символов (шифротекст) по какому-либо алгоритму. Расшифровка - это процедура обратного преобразования шифротекста в данные, имеющие смысл.

Механизмы: главная проблема аутентификации и авторизации в беспроводной среде - это надежность методов, используемых при установлении личности объекта.

Вторая проблема - надежное обеспечение конфиденциальности среды и соединения. В случае беспроводной связи средой является воздух, что усложняет обеспечение конфиденциальности, поскольку кто угодно может пассивно прослушивать передачу.  Важно отметить, что в беспроводной среде шифрование является необходимым условием надежной аутентификации. Беспроводные домены используют такие механизмы, как WEP, CKIP, TKIP.

        Управление ключами.

Определение: Ключ - это цифровой код, который можно использовать для шифрования, расшифровки и подписи информации. Приватные ключи хранятся в тайне, а публичные должны распространяться безопасным способом. Управление ключами подразумевает процесс распределения ключей для упомянутых процессов (например, обмен ключами). 

Механизмы: Проблема беспроводных сетей - безопасное и масштабируемое распространение ключей в автоматическом режиме.

Далее механизмы обеспечения безопасности будут рассмотрены более детально.


Механизмы обеспечения конфиденциальности.


Конфиденциальность достигается с помощью шифрования данных. При шифровании используется как парадигма симметричных ключей, так и ассиметричных.


Шифрование симметричным ключом.


Также его называют шифрованием закрытым ключом. Для шифрования и расшифровки сообщения используется общий ключ и один и тот же криптографический алгоритм.

Примечание: Симметричное шифрование обладает меньшей вычислительной сложностью по сравнению с ассиметричным и, следовательно, даёт преимущество в производительности. Для любого массового шифрования симметричное будет предпочтительным методом.

На рисунке 2-1 изображены два пользователя: Алиса и Боб, которым нужно безопасно связываться друг с другом. Они должны договориться, какой криптографический алгоритм будут использовать для шифрования и дешифровки, а также согласовать общий - закрытый - ключ для использования с выбранным алгоритмом. Для этих целей существуют специальные протоколы согласования ключей. 

рисунок 2-1.




Алгоритмы симметричного шифрования делятся на две категории:


Блочный шифр - за одну итерацию обрабатывается блок, обычно размер блока 64 бита, но это требование не является абсолютным.

Потоковый шифр - обрабатывает по одному биту последовательно.


Следует отметить, что вы не можете выбирать, какой метод использовать для конкретного алгоритма. Алгоритмы, применяемые в беспроводных сетях, используют блочный шифр, поэтому мы рассмотрим этот метод и связанные с ним проблемы.


Примечание: современные алгоритмы безопасности WLAN используют Advanced Encryption Standard (AES), использующий потоковый метод, но по-прежнему полезно понимать и учиться на уязвимостях "классических" алгоритмов.

                Режимы шифрования.

При использовании блочного шифра необходимо разбить исходное сообщение на блоки по 64 бита, а затем преобразовать их в последовательность зашифрованного текста. Здесь рассматривается четыре основных механизма соединения блоков. Эти механизмы определяют способ объединения открытого текста, закрытого ключа и шифротекста для генерации потока шифротекста, который будет передан получателю. Речь идет о следующих режимах шифрования: Electronic codebook (ECB), Cipher block chaining (CBC), Cipher feedback (CFB), Output feedback (OFB).

Механизм ECB - режим электронной кодовой книги - шифрует каждый блок отдельно, но использует один и тот же ключ, в результате чего одинаковый текст будет трансформирован в одинаковый шифротекст. Например, если злоумышленник знает открытый текст и соответствующий шифротекст, он сможет понять по крайней мере часть сообщения. Ещё одна уязвимость метода - это возможность перехватчика анализировать и выполнять сопоставление с образцом. Намного более простая уязвимость заключается в том, что перехватчик может распознать изменение исходной информации по изменению шифротекста и сделать выводы, не зная содержимого. Например, пусть кто-то отслеживает автоматические транзакции платежных ведомостей определенного сотрудника в банк. Предположим, что сумма зарплаты каждый раз одинаковая, и каждое сообщение, зашифрованное в режиме ECB будет выглядеть одинаково. Но если шифротекст изменится, злоумышленник может сделать вывод, что получатель зарплаты, возможно, был повышен в должности, если сумма выросла.


Примечание: помните, что в контексте беспроводной связи у шифрования одна и только одна задача: не дать перехватчику прочесть передаваемое сообщение (или, если на то пошло, сделать какие-либо умозаключения на  основании перехваченных пакетов).


Из-за того, что злоумышленник может перехватывать пакеты и анализировать их позже, задача обеспечения конфиденциальности становится намного сложнее, поэтому целью является обеспечение конфиденциальности в течение ограниченного промежутка времени. Стойкость алгоритма зависит от того, как долго данные должны быть нечитаемыми. 


Ещё одной уязвимостью является утечка информации через сопоставление с шаблоном и распознавание модификации фиксированных данных. Злоумышленник может перехватывать пакеты, передаваемые беспроводным способом, анализировать их на предмет изменений и делать умозаключения об исходной информации. Поэтому конфиденциальность в беспроводной сети динамическая, и достичь её сложнее, чем в статической среде. 


Остальные три алгоритма: CBC, CFB, и OFB - обладают свойствами, позволяющими добавлять элемент случайности в шифротекст. При отправке блоков одинакового открытого текста, зашифрованного с помощью этих алгоритмов, вы получите на выходе каждый разные блоки шифротекста. Большинство алгоритмов с закрытым ключом используют один из этих четырех режимов для обеспечения дополнительной безопасности передаваемых данных. 


В режиме CBC (сцепление блоков шифротекста) текущий блок суммируется по модулю 2 с предыдущим. Так как у первого блока нет предыдущего, он суммируется с вектором инициализации (IV). IV - это блок зашифрованных случайных данных, используемый в качестве первого блока в последовательности. 


В режиме обратной связи по шифротексту - CFB - для суммирования используется не открытый текст, а шифротекст предыдущего блока.


Режим обратной связи по выходу - OFB - аналогичен CFB,  но блоки, с которыми суммируются части исходного сообщения, генерируются случайно и не зависят от предыдущих частей открытого текста.


Примечание: в беспроводных сетях для достижения случайности используется потоковый шифр с вектором инициализации. В случае WEP IV отправляется в виде открытого текста с зашифрованными данными. Как вы увидите позднее, одна из слабых сторон в безопасности беспроводной сети связана с реализацией алгоритма шифрования и с тем, как обрабатывается IV.


Алгоритмы симметричного шифрования.


На сегодняшний день наиболее широко используются следующие алгоритмы:


AES (Advanced Encryption Standard) - был создан при попытке Министерства Торговли США разработать стандарт шифрования нового поколения. Дополнительную информацию можно найти на сайте Национального Института Стандартов и Технологий: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf  На данный момент AES является самым надежным алгоритмом шифрования, поэтому все новые реализации протоколов требуют его поддержки. Например, спецификация  IEEE 802.11i требует шифрования AES.


DES (Data Encryption Standart ) был наиболее широко распространен. Он работает с 64-битными блоками сообщений. Для преобразования 64-битного входного блока в 64-битный выходной алгоритм использует серию процедур. В стандартном виде алгоритм использует 64-битные ключи, из которых 56 бит выбираются случайно, остальные 8 - биты четности (по одному на каждый 7-битный блок 56-битового случайного значения). DES широко использовался в коммерческих приложениях и может работать в четырех режимах: ECB, CBC, CFB, OFB. Но обычно DES работает либо в режиме СВС, либо CFB.

Примечание: стандартная длина ключа для DES 64 бита. Из-за  правил экспорта вы увидите, что 40-битовый ключ тоже является стандартным. В 40-битовом DES все биты ключа, кроме сорока, раскрываются благодаря реализации механизма связи. Например, можно реализовать 40-битовый DES предваряя каждое сообщение теми же 24 битами ключа, которые используются для шифрования. 40-битовый DES используется исключительно для контроля экспорта ключей правительства США. Технически нет никаких оснований не использовать постоянно стандартный DES. 


3DES (тройной DES) является альтернативой DES, затрудняющей брутфорс, которую можно использовать с программами, созданными для DES. 3DES обрабатывает блоки размером 64 бит и осуществляет шифрование, расшифровку и снова шифрование. 3DES может использовать один, два или три разных ключа. Преимущество одного ключа в обратной совместимости с DES: в этом случае алгоритмы 3DES и стандартный DES аналогичны, за исключением увеличения времени, требуемого для обработки. 3DES определен только для режима ECB, в основном из соображений производительности: скорость приносится в жертву безопасности алгоритма. Как DES, так и 3DES находятся в свободном доступе.


RC4 - шифр Ривеста 4. Это проприетарный алгоритм, изобретенный Роном Ривестом и принадлежащий компании RSA Data Security. Он часто используется с 128-битовым ключом, хотя размер ключа может меняться. RC4 использует блочный шифр. Он не запатентован, но защищён как коммерческая тайна. Однако, он просочился в интернет в 1994 г. Поскольку правительство США разрешает экспорт при длине закрытого ключа 40 бит и меньше, в некоторых реализация длина ключа очень небольшая. RC4 используется в WEP.


IDEA (International Data Encryption Algorithm) разработан в качестве замены DES. Он оперирует блоками по 64 бита, но использует 128-битовый ключ. Как и стандартный DES, IDEA может функционировать во всех четырех режимах:  ECB, CBC, CFB, и OFB. Алгоритм запатентован и требует лицензии для коммерческого использования.


Симметричное шифрование чаще всего используется для конфиденциальности, поскольку большая часть алгоритмов с симметричным ключом было разработано для аппаратных реализаций и оптимизировано для одновременного шифрования больших объемов данных. Симметричное шифрование имеет ряд трудностей:


Частый обмен закрытыми ключами во избежание их компрометации.

Безопасное создание закрытых ключей.

Безопасное распространение закрытых ключей.

Для облегчения распространения закрытых ключей обычно используется асимметричное шифрование. Обычно для безопасного получения и обмена закрытыми ключами используется алгоритм Диффи-Хеллмана, который объясняется далее в этой главе в разделе "Управление ключами".


Асимметричное шифрование.


Часто этот вид шифрования называют шифрованием открытым ключом. Для шифровки и расшифровки может использоваться либо один и тот же алгоритм, либо разные, но дополняющие друг друга. Требуются два разных, но взаимосвязанных значения ключей: открытый и закрытый. Если открытый текст зашифрован открытым ключом, его можно расшифровать только с помощью закрытого, и наоборот.


Ниже перечислены некоторые из наиболее распространенных случаев применения алгоритмов с открытым ключом.
Это обеспечение целостности данных, конфиденциальности данных, безотказности с подтверждением отправителя; а также аутентификация отправителя.
Конфиденциальность данных и аутентификация отправителя могут быть достигнуты при использовании алгоритма с открытым ключом.  Рисунок 2-2 демонстрирует, каким образом это происходит.


Рисунок 2-2. Обеспечение целостности и конфиденциальности данных с помощью шифрования с открытым ключом.






тентификации отправителя данных Алиса и Боб должны предпринять следующие шаги:

Шаг 1. Алиса и Боб создают свои личные пары ключей: открытый и закрытый.
Шаг 2. Алиса и Боб обмениваются открытым ключами.

Шаг 3. Алиса пишет Бобу сообщение и шифрует его открытым ключом Боба.
Зашифрованное сообщение отправляется по сети. Шаг 4. Боб расшифровывает сообщение своим закрытым ключом.            
        Шаг 5. Боб пишет ответ, шифрует его открытым ключом Алисы и шлёт зашифрованный
ответ по сети.
        Шаг 6. Алиса расшифровывает ответ своим закрытым ключом.

Конфиденциальность данных обеспечивается, когда Алиса отправляет первое сообщение, так как
только Боб может его расшифровать с помощью своего закрытого ключа. Целостность данных
также обеспечивается, поскольку для модификации сообщения злоумышленнику потребуется
закрытый ключ Боба. Кроме того, целостность и конфиденциальность обеспечиваются и для
ответа, поскольку доступ к закрытому ключу имеется у Алисы, и только она может изменить или
расшифровать сообщение с его помощью.
Однако, такой обмен не слишком надежен, поскольку злоумышленник может притвориться
Алисой и отправить сообщение Бобу, зашифрованное его открытым ключом, который является
широко доступным. Важно убедиться, что сообщение отправила именно Алиса. Далее показано,
как криптография с открытым ключом решает эту проблему и обеспечивает аутентификацию
отправителя и безотказность с подтверждением личности отправителя.
        Шаг 1. Алиса создаёт свои пары ключей.

Шаг 2. Алиса и Боб обмениваются открытыми ключами.
Шаг 3. Алиса пишет Бобу сообщение, шифрует его своим закрытым ключом и отправляет Бобу.
Шаг 4. Боб расшифровывает сообщение открытым ключом Алисы.
Шаг 5. Боб пишет ответ, шифрует его своим закрытым ключом и отправляет Алисе.
Шаг 6. Алиса расшифровывает ответ открытым ключом Боба.
Здесь сообщения шифруются закрытыми ключами. Аутентификация достигается за счет того, что закрытые ключи есть только соответственно у Боба и Алисы. Также это обеспечивает безотказность: Боб и Алиса не смогут отрицать отправку сообщения, если их закрытые ключи не были скомпрометированы. Это, конечно, вызывает споры о том, насколько честны Алиса и Боб: они могут отказаться от своих сообщений, просто заявив, что ключ был скомпрометирован.
Примечание: этот сценарий предполагает безопасный внеполосной обмен открытыми ключами между Алисой и Бобом. Это имеет смысл для однократного обмена данными между двумя объектами, но не масштабируется для большого количества объектов.


Если вы хотите использовать асимметричную криптографию для аутентифицированного обмена с обеспечением целостности и конфиденциальности данных, необходимо двойное шифрование. Алиса сперва шифрует свое сообщение Бобу его открытым ключом, а затем - своим закрытым. Первое сообщение может расшифровать кто угодно и получить встроенный шифротекст.  Но расшифровать шифротекст может только Боб своим закрытым ключом.


Примечание: для асимметричного шифрования критично, чтобы закрытый ключ хранился в тайне. Если он будет скомпрометирован, злоумышленник может выдать себя за вас, отправлять и принимать ваши сообщения. 
Для генерации открытых/закрытых ключей используются сложные механизмы, но в результате они дают два случайных числа большой разрядности, одно из которых становится открытым ключом, а другое - закрытым. Генерация ключей интенсивно нагружает процессор, так как эти числа и их произведение должны соответствовать строгим математическим критериям для сохранения уникальности каждой пары ключей.
Примечание: никакой математический критерий не гарантирует уникальности пары, есть лишь гарантия того, что не будут созданы слабые ключи. Алгоритмы с открытым ключом редко используются для обеспечения конфиденциальности данных, так как имеют ограничения в производительности, требуют большого объема вычислений и плохо поддаются аппаратной оптимизации. Вместо этого  их обычно используют в приложениях, включающих аутентификацию с использованием цифровых подписей и управлении ключами. Открытые ключи также используются для шифрования симметричных сеансовых ключей, чтобы ими можно было обмениваться или отправлять их по общедоступной сети без компрометации. Некоторые из широко применяемых асимметричных алгоритмов: алгоритм Рона Ривеста, Ади Шамира, Леонарда Адлемана и Эль Гамаль.

Сильные и слабые стороны алгоритмов шифрования.

Обсуждение не может быть полным без рассмотрения сильных и слабых сторон, а также аспектов производительности различных алгоритмов шифрования.
Одна из задач - выбор между блочным и потоковым шифром. Общий подход таков: поскольку аппаратура различает отдельные биты, для аппаратного шифрования более эффективны потоковые шифры. Для программного подходит блочный шифр в режиме CBC и выше.
С этим вопросом связан и выбор между симметричным и асимметричным шифрованием. Симметричные алгоритмы намного быстрее асимметричных, и, как следствие, больше подходят для шифрования премлемого объема данных. Таким образом, обычно генерируются симметричные сеансовые ключи, которыми безопасно обмениваются. Протоколы обмена ключами используют асимметричные алгоритмы для обмена сеансовыми и другими симметричными ключами.


Следующий аспект - длина ключей и криптографическая стойкость алгоритмов. Криптостойкость - это, в целом, время, усилия и ресурсы, необходимые для взлома ключа. Стойкость очень сильно зависит от существующих современных технологий, особенно с вычислительной мощностью, так что это относительное понятие. На самом деле, механизмы безотказности - такие как спецификации ETSI - имеют функционал "повторного шифрования" данных, рассчитанный на использования по прошествии времени, когда стойкость оригинального шифрования уменьшается благодаря технологическим достижениям.Этот функционал рассчитан на долгосрочное использование. 
Количество бит ключа для безопасного шифрования в конкретной среде может быть спорным вопросом. Чем больше пространство ключей - диапазон всех возможных значений ключа, - тем сложнее взломать его простым перебором. Брутфорс атака заключается в том, что к алгоритму применяются все комбинации битов ключа до тех пор, пока сообщение не будет расшифровано. Таблица 2-1 демонстрирует количество вариантов, которые нужно перебрать для исчерпания всех возможных ключей указанной длины.
Таблица 2-1. Комбинации битов для брут-форс атаки

Длина ключа (бит)

Число комбинаций

40

240= 1,099,511,627,776

56

256= 7.205759403793 * 1016

64

264= 1.844674407371 * 1019

112

2112= 5.192296858535 * 1033

128

2128= 3.402823669209 * 1038

 

Стремление использовать как можно более длинные ключи естественно, так как это затрудняет их взлом, но чем длиннее ключ, тем больше вычислительных мощностей может потребовать процесс шифрования и дешифровки. Целью является сделать так, чтобы стоимость взлома ключа превысила стоимость информации, которую он защищает.
    Примечание: если вы собираетесь обмениваться конфиденциальными сообщениями на международном уровне, вы должны понимать текущую политику правительства и знать соответствующие правила. Во многих странах существуют спорные регламенты на длину ключа, допустимую для применения в алгоритмах шифрования. Имейте в виду, что контроль экспорта зашифрованных сообщений в США имеет много тонкостей.
Ещё одна тема для обсуждения - вектор инициализации. WEP использует алгоритм RC4 с разрядностью вектора 24 бит. 24-битовый IV даёт 16 миллионов комбинаций, так что теоретически, прежде чем отследить повторное использование ключа с IV, нужно перехватить миллионы пакетов. Но исследователи доказали, что на самом деле коллизия ключей может произойти примерно на 5000-м пакете. Этот факт и другие уязвимости обсуждаются в главе 6  - "Уязвимости в беспроводных сетях".


механизмы обеспечения целостности.


Цель этих механизмов - обнаружение любых изменений в последовательности битов. В следующих двух разделах рассматриваются механизмы обеспечения целостности, использующие хэш-функции и цифровые подписи. Механизм цифровой подписи использует хэш-функции с последующим шифрованием полученного хэша.


Хэш-функции.


Хэш-функция принимает сообщение произвольной длины и выдаёт код фиксированной длины. Этот код называется хэшем или дайджестом оригинального сообщения, поступившего на вход хэш-функции. Для того чтобы алгоритм хэширования считался криптографически пригодным - то есть безопасным, - он должен обладать следующими свойствами:
Он должен быть последовательным, т.е. одни и те же входные данные должны всегда давать на выходе один и тот же хэш.

Он должен быть случайным или создавать видимость случайности, чтобы не было возможности угадать исходное сообщение.
Хэши должны быть уникальными, т.е. не должно быть вероятности, что два сообщения дадут на выходе один и тот же дайджест.
Хэш должен быть односторонним, т.е. должно быть чрезвычайно сложно, если вообще возможно, установить входное сообщение по значению его хэш-функции.
Односторонние хэш-функции обычно используются для создания цифрового отпечатка сообщения или файла. Подобно отпечатку человеческого пальца, хэш уникален и, таким образом, обеспечивает целостность и подлинность сообщения. 
Давайте рассмотрим механизм использования хэш-функций. Рисунок 2-4 проливает свет на процедуру. Алиса и Боб используют одностороннюю Хэш-функцию, чтобы убедиться, что исходное сообщение не было подделано в процессе передачи.


Рисунок 2-4. Использование односторонней хэш-функции для обеспечения целостности данных.






Для обеспечения целостности Алиса и Боб предпринимают следующие шаги:
Шаг 1. Алиса создает сообщение и передает его на вход односторонней хэш-функции.
Шаг 2. Результат хэш-функции добавляется в качестве отпечатка к сообщению, которое отправляется Бобу.
Шаг 3. Боб разделяет сообщение и отпечаток и подает текст сообщения на вход такой же хэш-функции, какую использовала Алиса.
Шаг 4. Если хэши совпадают, Боб может быть уверен, что сообщение не было подделано.
Проблема такого упрощенного подхода заключается в том, что можно подделать отпечаток, то есть он подвержен атакам MitM - Man in the Middle.
Примечание:  атака MitM -  человек посередине - подразумевает объект, который прослушивает предположительно защищенное соединение и выдает себя за отправителя или получателя. Этот объект перехватывает сообщение отправителя, добавляет свое содержимое и создает правильный хэш для модифицированного сообщения. Получатель, не подозревая о посреднике, проверяет хэш, который, разумеется, будет верным, и приходит к выводу, что измененное сообщение было послано отправителем. Эта схема работает, поскольку не защищен сам хэш.
Чтобы эффективно использовать хэши в качестве отпечатков, нужно совмещать их с технологией открытых ключей для создания цифровых подписей, которая рассматривается в следующей часть главы.
Распространенными хэш-функциями являются: алгоритм Message Digest 4 (MD4), Message Digest 5 (MD5), Secure Hash Algorithm (SHA). MD4/5 были созданы Роном Ривестом из Массачусетского Технологического Института. В современных продуктах в основном используются MD5 и SHA, основанные на MD4. MD5 обрабатывает входные данные блоками по 512 бит и выдает дайджест длиной 128 бит. SHA также работает с блоками по 512 бит, но дайджест содержит 160 разрядов. SHA сильнее нагружает процессор и может работать несколько медленнее, чем MD5.


Цифровые подписи.


Цифровая подпись - это зашифрованный дайджест сообщения, который добавляется к документу. Она используется для того, чтобы подтвердить личность отправителя и целостность документа. Цифровые подписи основаны на комбинации асимметричного шифрования и надежных алгоритмов односторонней хэш-функции. На рисунке 2-5 показано создание цифровой подписи.


Рисунок 2-5. Создание цифровой подписи.







Чтобы создать цифровую подпись, Боб должен сделать следующее:
Шаг 1. Боб создает пару ключей: открытый/закрытый.
Шаг 2. Боб передаёт открытый ключ Алисе.
Шаг 3. Боб пишет Алисе сообщение и подаёт его на вход односторонней хэш-функции.
Шаг 4. Получившийся на выходе хэш Боб шифрует своим закрытым ключом, получая в результате цифровую подпись.
Алисе Боб отсылает комбинацию документа и цифровой подписи. На рисунке 2-6 показан процесс верификации цифровой подписи.


Рисунок 2-6. Верификация цифровой подписи.






Алиса как принимающая сторона должна совершить следующие действия, чтобы убедиться, что сообщение действительно отправлено Бобом (т.е. верифицировать цифровую подпись):
Шаг 1. Алиса разделяет полученное сообщение на документ и цифровую подпись. 
Шаг 2. Алиса использует открытый ключ Боба для расшифровки цифровой подписи, получая в результате дайджест исходного сообщения.
Шаг 3. Алиса сравнивает дайджесты, чтобы убедиться, что они совпадают.


Если дайджест, вычисленный Алисой из исходного сообщения совпадает с расшифрованным дайджестом Боба, то целостность документа подтверждена, и аутентификация отправителя пройдена.
Примечание: начальный обмен открытым ключом должен выполняться надежным образом с обеспечением безопасности. Это критически важно и является основной причиной использования цифровых сертификатов. Цифровой сертификат - это сообщение, подписанное закрытым ключом доверенной третьей стороны, в котором утверждается, что конкретный открытый ключ принадлежит лицу с определенным именем или объекту с определенными атрибутами. Если начальный обмен ключами не был безопасным, то злоумышленник может выдать себя за отправителя. Например, если А - шпион, и подслушав телефонный разговор, он узнает, что вы собираетесь передать кому-то свой открытый ключ по электронной почте, то он может перехватить ваше сообщение и подменить ваш открытый ключ своим, таким образом  получив возможность подделывать ваши сообщения. В реальности если вы отсылаете кому-то свой открытый ключ, то каковы шансы, что это кому-то небезразлично? Кого это должно волновать, если от этого не зависит тайна или деньги? Если вас это беспокоит, вы всегда можете позвонить получателю и удостоверить подлинность данных. При этом вы можете столкнуться с некоторыми вопросами и проблемами.
Цифровая подпись не обеспечивает конфиденциальность содержания сообщения. Однако, зачастую более важно удостоверить подлинность отправителя, нежели скрыть содержание сообщения. Вероятно, вам может понадобиться аутентификация и гарантия целостности сообщения, но не конфиденциальность, например, когда обновления таблиц маршрутизации передаются в базовой сети. Содержание таблиц может не быть конфиденциальным, но важно убедиться, что обновление инициировано доверенным источником. Ещё одним примером важности аутентификации отправителя является онлайн-торговля и банковские транзакции, для которых подтверждение происхождения обязательно, прежде чем предпринимать какие-либо действия.


Некоторыми из наиболее распространенных алгоритмов создания цифровых подписей с помощью открытых ключей являются алгоритмы Рона Ривеста, Ади Шамира и Леонарда Адлемана (RSA), а также Стандарт Цифровой Подписи (Digital Signature Standatd, DSS). DSS был предложен NIST и основан на алгоритме открытого ключа Эль-Гамаля. По сравнению с RSA, DSS быстрее генерирует ключи, имеет примерно такую же производительность при создании подписей, но гораздо медленнее проверяет подписи.



Управление ключами.


Управление ключами является сложной задачей в безопасной связи скорее из-за человеческого фактора, нежели с технической точки зрения. В мире беспроводной связи двумя важными факторами являются масштабируемость и управляемость. На данный момент беспроводные технологии используют симметричное шифрование. Для небольшого количество точек доступа (AP) и клиентов разумно создать ключ и ввести его вручную. Однако, для большинства крупных предприятий этот механизм неудобен и является устаревшим.
Распространенным способом для распределенного создания закрытых сеансовых ключей является алгоритм Диффи-Хеллмана. Этот алгоритм позволяет двум сторонам создать общий закрытый ключ, который будет известен только этим двум сторонам, даже если они общаются по незащищенному каналу. Затем этот закрытый ключ используется для шифрования данных с помощью асимметричного алгоритма, который они предпочитают. На рисунке 2-7  показана работа алгоритма Диффи-Хеллмана.


Рисунок 2-7. Создание закрытого ключа с помощью алгоритма Диффи-Хеллмана.





Алгоритм Диффи-Хеллмана состоит из следующих шагов.
Шаг 1. Алиса инициирует обмен данными и передает Бобу два больших числа - p и q.
Шаг 2. Алиса выбирает большое случайное целое число Xa и вычисляет значение следующего выражения: Ya=qXa mod p 
Шаг 3. Боб выбирает большое случайное целое число Xb  и вычисляет значение выражения:
 Yb=qXb mod p
Шаг 4. Алиса отправляет Ya Бобу, а Боб отправляет Yb Алисе.
Шаг 5. Алиса вычисляет значение выражения: Z = (YB)Xamod p
Шаг 6. Боб вычисляет значение: Z = (YA)Xb mod p
В результате у обоих есть разделяемый закрытый ключ Z = Z = qXaXb mod p.
Безопасность алгоритма основана на двух сложных математических задачах:

1. Злоумышленнику нужно вычислить дискретный логарифм, чтобы найти Xa и Xb - то есть рассчитать значение Xa по известному q^Xa или Xb по q^Xb.


2. Злоумышленнику нужно перемножать большие простые числа. Большими можно считать числа порядка 100-200 разрядов. Простыми должны быть p,q и (p-1)/2.


Управление ключами и начальное доверие - обширные области, которые до сих пор развиваются.



        Создание и распространение открытых ключей.


Создание пар ключей для асимметричных алгоритмов - сложная процедура. Ключи должны соответствовать строгим правилам, определяемым алгоритмом, которые должны гарантировать уникальность каждой пары ключей. Уникальность гарантируется "статистически" - т.е. вероятность того, что независимо будут сгенерированы одинаковые ключи, астрономическая. Сложность генерации пар ключей заключается в установке ряда параметров, удовлетворяющих требованиям алгоритма (например, простые числа для RSA и многих других алгоритмов). Сама по себе генерация или нахождение больших простых чисел обладает высокой вычислительной сложностью.


Примечание:

Идеально, если конечный пользователь (человек или объект, идентифицируемый ключом), генерирует пару ключей сам. Закрытый ключ должен видеть только его владелец. В корпоративных средах, где это может быть непрактично, или где требуется депонирование ключей, применяются различные правила. Но все технические решения должны предполагать опцию создания ключей самими объектом приоритетной, чтобы закрытый ключ был известен только его создателю.


Проблемами являются безопасное распространение публичных ключей и аутентификация объекта, который дал вам ключ. При небольшом количестве узлов беспроводной сети можно созвониться и передать открытые ключи при личной встрече. Цифровые сертификаты позволяют масштабировать процедуру распространения публичных ключей. Технология цифровых сертификатов требует доверенной третьей стороны - центров сертификации. 


Цифровые сертификаты


Цифровой сертификат - это сообщение, снабженное цифровой подписью, которое обычно используется для подтверждения подлинности открытого ключа какого-либо объекта. Сертификаты требуют общего формата и в значительной степени основаны на стандарте ITU-T X.509. ITU-T (МСЭ-t) - это сектор стандартизации Международного союза электросвязи. Этот орган стандартизации выпустил много общих стандартов, таких как серии v.32, V.42, и V.90 для передачи данных по телефонным сетям с использованием модемов; серия Х - передача данных, серия Н - для аудиовизуальных мультимедийных систем. Общий формат сертификата X.509 V3 включает следующие элементы:


Номер версии

Серийный номер сертификата

Информация об алгоритме эмитента

Эмитент сертификата

Срок действия сертификата (дата начала и конца действия)

Открытый ключ субъекта

Информация об асимметричном алгоритме субъекта

Цифровая подпись выпустившего сертификат центра

Другие необязательные параметры.


Цифровые сертификаты являются способом проверки подлинности публичных ключей и вполне могут стать механизмом обеспечения возможности единого входа в корпоративную сеть. Но аспект развертывания этой технологии находится в зачаточном состоянии. Формат сертификатов в основном уже определён, но необходимо убедиться в подлинности сертификатов, их управляемости и согласованной семантической интерпретации. Под семантикой подразумеваются ответы на такие вопросы, как "чему можно и чему нельзя доверять?", "какой уровень доверия предполагает сертификат?".


Некоторые (в том числе один из рецензентов книги) не согласны с тем, что технология цифровых сертификатов находится в зачаточном состоянии. SSL/TLS - один из широко используемых криптографических стандартов, предполагает цифровые сертификаты. Это зрелая технология, но корпоративное развертывание аутентификации систем или пользователей с помощью цифровых сертификатов до сих пор не реализовано массово.


Центры сертификации.

Как уже упоминалось, Центр Сертификации (ЦС, Certificate Authority, CA) - это доверенная третья сторона, которая ручается за подлинность сертификата. ЦС должен регистрировать, распространять и удалять (отзывать) сертификаты, когда содержащаяся в них информация становится недействительной. Рисунок 2-8 демонстрирует, как Боб может получить надёжным способом открытый ключ Алисы, используюя ЦС.



Рисунок 2-8. Получения открытого ключа, используя ЦС




Пусть действительный сертификат Алисы хранится в ЦС, и Боб безопасным способом получил открытый ключ Центра Сертификации. Чтобы надежным способом получить открытый ключ Алисы, Боб должен предпринять следующие шаги:
Шаг 1. Боб запрашивает сертификат Алисы у ЦС.
Шаг 2. ЦС присылает сертификат Алисы, подписанный закрытым ключом центра.
Шаг 3. Боб получает сертификат и проверяет его цифровую подпись.
Шаг 4. Поскольку публичный ключ Алисы есть в сертификате, у Боба теперь имеется его "нотариально заверенная" версия.
В основе этой схемы - безопасное распространение открытых ключей ЦС между пользователями. Всё ещё ведутся дискуссии по поводу того, кто должен поддерживать ЦС в интернете. Интерес в предоставлении услуг ЦС выразили многие организации, в том числе финансовые институты, правительственные учреждения и поставщики приложений. В любом случае, это решения основано на доверии. Некоторый корпорации могут захотеть иметь собственную контролируемую инфраструктуру сертификатов, другие предпочтут аутсорсинг. Существует проблема стоимости: цены сторонних ЦС слишком высоки для многих предприятий.
Теперь, когда мы рассмотрели некоторые детали механизмов обеспечения  конфиденциальности и целостности, а также некоторые способы обмена ключами, давайте сменим тему и перейдём на следующий уровень: аутентификация и идентификация.