Сурков Л.В. - Туннелирование соединений с использованием протокола SSL (1075635), страница 2
Текст из файла (страница 2)
Для того чтобы предотвратить остановку секрета (pre_master_secret) в памятикомпьютера на время дольше, чем необходимо, секрет должен быть переведен в общийсекрет (master_secret) настолько быстро, на сколько это возможно. Параметры клиентадолжны быть совместимы с теми, которые поддерживает сервер для того, чтобы работалобмен ключами.Протокол записи (Record Layer)Протокол записи — это уровневый протокол.
На каждом уровне сообщения включаютполя для длины, описания и проверки. Протокол записи принимает сообщения, которыенужно передать, фрагментирует данные в управляемые блоки, разумно сжимает данные,применяя MAC (message authentication code), шифрует и передаёт результат. Полученныеданные он расшифровывает, проверяет, распаковывает, собирает и доставляет к болееверхним уровням клиента.Существует четыре протокола записи: протокол рукопожатия (handshake protocol),протокол тревоги (alert protocol), протокол изменения шифра (the change cipher specprotocol), протокол приложения (application data protocol).
Если SSL реализация получаеттип записи, который ей неизвестен, то эта запись просто игнорируется. Любой протоколсозданный для использования совместно с SSL должен быть хорошо продуман, так какбудет иметь дело с атаками на него. Заметим, что из-за типа и длины записи, протокол незащищен шифрованием. Внимание следует уделить тому, чтобы минимизировать трафик.Протокол рукопожатия (handshake)5МГТУ им.
БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01SSL клиент и сервер договариваются об установлении связи с помощью процедурырукопожатия. Во время рукопожатия клиент и сервер договариваются о различныхпараметрах, которые будут использованы, чтобы обеспечить безопасность соединения.1) Рукопожатие начинается тогда, когда клиент подключается к SSL серверу.Запрос безопасного соединения представляет собой список поддерживаемыхшифров и хэш-функций.2) Из этого списка сервер выбирает самый сильный шифр и хэш-функцию,которую он также поддерживает, и уведомляет клиентов о принятомрешении.3) Сервер отсылает это решение в виде цифрового сертификата.
Сертификат,обычно, содержит имя сервера, доверенный Центр Сертификации, иоткрытый ключ шифрования сервера. Клиент может связаться с сервером,который выдал сертификат (доверенного центра сертификации, выше) иубедиться, что сертификат является подлинным прежде чем продолжить.4) Для того, чтобы сгенерировать ключи сеанса, используется безопасноесоединение. Клиент шифрует случайное число с помощью открытого ключа(ОК) сервера и отправляет результат на сервер. Только сервер в состояниирасшифровать его (с его закрытым ключом (ЗК)), и только этот факт делаетключи скрытыми от третьей стороны, так как только сервер и клиент имелидоступ к этим данным. Клиент знает открытый ключ и случайное число, асервер знает закрытый ключ и (после расшифровки сообщения клиента)случайное число.
Третья сторона, возможно, знает только открытый ключ,если закрытый ключ не был взломан.5) Из случайного числа обе стороны создают ключевые данные дляшифрования и расшифровывания.На этом рукопожатие завершается, и начинается защищенное соединение, котороезашифровывается и расшифровывается с помощью ключевых данных. Если любое изперечисленных выше действий не удается, то рукопожатие SSL не удалось, и соединениене создается.Протокол изменения параметров шифрования6МГТУ им.
БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01(The Change Cipher Spec Protocol)Он существует для сигнализации перехода в режим шифрования. Протокол содержитединственное сообщение, которое зашифровано и сжато при текущем установленномсоединении. Сообщение состоит только из одного бита со значением 1.struct { enum { change_cipher_spec(1), (255) } type; } ChangeCipherSpec;Сообщение изменения шифра посылается и клиентом и сервером для извещенияпринимающей стороны, что последующие записи будут защищены в соответствии сновым договоренным CipherSpec и ключами.
Принятие этого сообщения заставляетполучателя отдать приказ уровню записи незамедлительно копировать состояниеотложенного чтения в состояние текущего чтения. Сразу после послания этого сообщения,тот, кто послал должен отдать приказ уровню записи перевести режим отложенной записив режим текущей записи. Сообщение изменения шифра посылается во времярукопожатия, после того как параметры защиты были переданы, но перед тем как будетпослано сообщение ‘finished’.Протокол тревоги (Alert Protocol)Один из типов проверки, поддерживаемых в протоколе SSL записи, — это протоколтревоги.
Сообщение тревоги передаёт трудности, возникшие в сообщении, и описаниетревоги. Сообщение тревоги с критическим уровнем незамедлительно прерываетсоединение. В этом случае другие соединения, соответствующие сессии, могут бытьпродолжены, но идентификатор сессии должен быть признан недействительным. Как идругие сообщения, сообщение тревоги зашифровано и сжато, как только указано текущеесостояние соединения.Протокол приложения (Application Data Protocol)Сообщение приложения данных работает на уровне записи. Он фрагментируется,сжимается и шифруется на основе текущего состояния соединения.
Сообщения считаютсяпрозрачными для уровня записи.Ошибки в протоколе SSLВ протоколе SSL обработка ошибок очень проста. Когда ошибка обнаружена, тот, ктоеё обнаружил, посылает об этом сообщение своему партнёру. Неустранимые ошибкитребуют от сервера и клиента разрыва соединения. Протокол SSL определяет следующиеошибки:Unsupported_Certificate_Type_Error: такая ошибка возникает, когда клиент/серверполучает тип сертификата, который не поддерживается.
Ошибка устранима (только дляаутентификации клиента).7МГТУ им. БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01No_Cipher_Error: ошибка возникает, когда сервер не может найти размер ключа илишифр, который поддерживается также и клиентом. Ошибка неустранима.Bad_Certificate_Error:такаяошибкавозникает,когдасертификатсчитаетсяпринимающей стороной плохим.
Это означает, что или некорректна подпись сертификата,или его значение некорректно. Ошибка устранима (только для аутентификации клиента).No_Certificate_Error: если послано сообщение Request_Certificate, то эта ошибка можетбыть прислана по причине того, что клиент не имеет сертификата. Ошибка устранима.Перечислим некоторые виды атак, которые могут быть предприняты против протоколаSSL. Однако, SSL устойчив к этим атакам:Раскрытие шифровКак известно, SSL зависит от различных криптографических параметров.
Шифрованиес открытым ключом RSA необходимо для пересылки ключей и аутентификациисервера/клиента. Однако в качестве шифра используются различные криптографическиеалгоритмы. Таким образом, если осуществить успешную атаку на эти алгоритмы, то SSLне может уже считаться безопасным. Атака на определенные коммуникационные сессиипроизводится записью сессии, и потом, в течение долгого времени подбирается ключсессии или ключ RSA.
SSL же делает такую атаку невыгодной, так как тратится большоеколичество времени и денег.Злоумышленник посерединеТакже известна как MitM (Man-in-the-Middle) атака. Предполагает участие трехсторон: сервера, клиента и злоумышленника, находящегося между ними. В даннойситуации злоумышленник может перехватывать все сообщения, которые следуют в обоихнаправлениях, и подменять их. Злоумышленник представляется сервером для клиента иклиентом для сервера. В случае обмена ключами по алгоритму Диффи-Хелмана даннаяатака является эффективной, так как целостность принимаемой информации и ее источникпроверить невозможно.
Однако такая атака невозможна при использовании протоколаSSL, так как для проверки подлинности источника (обычно сервера) используютсясертификаты, заверенные центром сертификации.Атака будет успешной, если: Сервер не имеет подписанного сертификата. Клиент не проверяет сертификат сервера. Пользователь игнорирует сообщение об отсутствии подписи сертификатацентром сертификации или о несовпадении сертификата с кэшированным.Атака отклика8МГТУ им.
БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01Злоумышленник записывает коммуникационную сессию между сервером и клиентом.Позднее, он пытается установить соединение с сервером, воспроизводя записанныесообщения клиента. Но SSL отбивает эту атаку при помощи особого уникальногоидентификатора соединения (ИС). Конечно, теоретически третья сторона не в силахпредсказать ИС, потому что он основан на наборе случайных событий. Однако,злоумышленник с большими ресурсами может записать большое количество сессий ипопытаться подобрать «верную» сессию, основываясь на коде nonce, который послалсервер в сообщение Server_Hello.
Но коды nonce SSL имеют, по меньшей мере, длину 128бит, а значит, злоумышленнику необходимо записать 2127 кодов nonce, чтобы получитьвероятность угадывания 50 %. Но 2127 достаточно большое число, чтобы сделать этиатаки бессмысленными.Атака против протокола рукопожатияЗлоумышленник может попытаться повлиять на обмен рукопожатиями для того, чтобыстороны выбрали разные алгоритмы шифрования, а не те, что они выбирают обычно. Изза того, что многие реализации поддерживают 40-битное экспортированное шифрование,а некоторые даже 0-шифрование или MAC-алгоритм, эти атаки представляют большойинтерес.Для такой атаки злоумышленнику необходимо быстро подменить одно или болеесообщений рукопожатия.