Опубликован: 20.02.2006 | Доступ: свободный | Студентов: 3335 / 381 | Оценка: 4.34 / 3.99 | Длительность: 21:22:00
ISBN: 978-5-9570-0022-1
Лекция 10:

Шифрование

Аннотация: Интернет – удивительная сеть. Она позволяет распространять информацию по всему миру. Но как быть, если требуется предоставить данные при помощи интернета только одному человеку? При передаче через всемирную сеть веб-страниц, электронной почты и паролей вся эта информация могут попасть к любому, кто ей заинтересуется. Вы спросите: "Кому это нужно?" В большинстве случаев, никому. Анонимность является мерой безопасности. Особенно, если речь идет о работе в сети интернет с домашнего компьютера.

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

О цифровых сертификатах

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

Используются три типа сертификатов.

  • Сертификаты сервера. Обеспечивают метод шифрования данных, передаваемых через сеть (посредством SSL), и методы идентификации для сервера. Эти методы дают клиенту уверенность в том, что сайт, который он посетил, является именно тем сайтом, за который он себя выдает.
  • Сертификаты клиента. Обеспечивают идентификацию клиента на сервере, что позволяет серверу определить, кем на самом деле является клиент. Это более мощная аутентификация по сравнению с базовой. Сертификаты клиентов не поддерживают шифрование данных.
  • Сертификаты подписывания кода. Обеспечивают метод цифрового "подписывания" приложения посредством цифрового идентификатора, созданного на основе содержимого приложения. Если в приложении происходят какие-либо изменения, то цифровой идентификатор становится не соответствующим этому приложению, о чем пользователь получает уведомление. Сертификаты подписывания кода не поддерживают шифрование приложения.

Ключи сертификатов

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

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

Существует два типа шифрования с использованием ключей. Они используются примерно в одинаковой степени.

  • Шифрование на симметричном ключе. Для шифрования и расшифровки данных используется один и тот же ключ. Эта форма шифрования более эффективна с точки зрения скорости. При этом обеспечивается некоторый уровень безопасности, поскольку принимающая сторона должна знать ключ для расшифровки информации. Главным недостатком шифрования на симметричном ключе является то, что при вскрытии ключа злоумышленник сможет расшифровать данные. Он даже сможет зашифровать их и отправить принимающей стороне, выдав себя за легитимного отправителя.
  • Шифрование на открытом ключе. Более сложный процесс с точки зрения использования ключей. IIS предоставляет на выбор два алгоритма шифрования на открытом ключе – DH (Diffie-Hellman) и RSA (сокр. от имен разработчиков Ron Rivest, Adi Shamir и Leonard Adleman). RSA используется чаще всего, поэтому в данной лекции мы рассмотрим именно этот алгоритм. При шифровании на открытом ключе создается пара ключей – открытый ключ и секретный ключ.

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

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

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

Мощность шифрования

Мощность шифрования зависит от длины ключа и типа шифра, используемого для шифрования. Сообщения, созданные при помощи 128-битного ключа, взломать в 3х1026 раз сложнее, чем сообщения, созданные при помощи 40-битного ключа. Это в некоторой степени объясняет то, почему правительство США раньше не разрешало экспортировать технологию, поддерживающую ключи длиной более 40 бит. В целях безопасности, правительство США отталкивалось от того факта, что оно сможет дешифровать перехваченные зашифрованные данные. Это гораздо сложнее сделать при использовании 128-битных ключей! Многое зависит и от того, какой именно шифр используется при шифровании данных. Например, данные, зашифрованные при помощи симметричного шифра (например, шифра DES – Data Encryption Standard) с применением 64-битного ключа, сопоставимы по уровню защищенности с сообщением, зашифрованным при помощи RSA на ключе длиной в 512 бит.

Примечание. В настоящее время правительство США разрешает экспорт 128-битных шифров во все страны, на которые не наложено соответствующее эмбарго.

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

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

Односторонний хэш. Односторонний хэш (иногда называется анализом сообщения) представляет собой набор данных для проверки полученного документа на предмет того, что он не был изменен с момента создания хэша. Алгоритм одностороннего хэша создает для документа набор уникальных данных. Документ отправляется вместе с созданным односторонним хэшем. При получении документ повторно обрабатывается алгоритмом хеширования. Новый хэш сопоставляется с хэшем, полученным вместе с документом. Если выявляются различия, то это означает, что документ был искажен. Добавление в документ одного-единственного символа или пробела основательно изменит результирующий хэш. Не существует способа восстановления документа только из одного хэша, по этой причине хэш и называется односторонним. Наиболее распространенными алгоритмами одностороннего хэширования являются алгоритм обработки сообщений MD5, созданный профессором института MIT Роном Ривестом (соавтором алгоритма шифрования RSA), и алгоритм безопасного хэширования SHA, разработанный Национальным институтом стандартов и технологий США (NIST) и Управлением национальной безопасности США (NSA). Алгоритм MD5 генерирует 128-битное значение, а алгоритм SHA – 160-битное.

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

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

Бюро сертификатов и доверие. Как убедиться в том, что открытый ключ, используемый для шифрования отправляемых данных, заслуживает доверия? Когда пользователь создает пару ключей открытый/секретный для использования на веб-сайте, он, по существу, запрашивает сертификат SSL x.509 (x.509 является стандартом, определенный в RFC 2459) у бюро сертификатов (т.е. у сервера, выпускающего сертификаты). Бюро сертификатов может авторизовать (уполномочить) любое количество подчиненных бюро сертификатов, те, в свою очередь, – другие бюро сертификатов и т.д. Первое бюро сертификатов в этой цепочке называется корневым бюро сертификатов. Возможно наличие только одного корневого бюро сертификатов в цепочке. При выпуске сертификата SSL создающее его бюро сертификатов проверяет корректность информации, отправленной запрашивающей стороной. Подробности этой проверки индивидуальны для каждого бюро сертификатов.

Использование бюро сертификатов на компьютере клиента

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

Проверка списка бюро сертификатов браузера. Можно просмотреть список бюро сертификатов, являющихся доверенными для браузера. Рассмотрим на примере Internet Explorer 6. Выполните следующие действия.

  1. В Internet Explorer выберите Tools\Internet Options (Сервис\Свойства браузера).
  2. Откройте вкладку Content (Содержание).
  3. В области Certificates (Сертификаты) нажмите на кнопку Certificates (Сертификаты).
  4. В окне Certificates (Сертификаты) (см. рис. 10.1) откройте вкладку Trusted Root Certification Authorities (Доверенные корневые бюро сертификатов); здесь присутствует перечень доверенных корневых бюро сертификатов.
Окно Certificates (Сертификаты) браузера Internet Explorer

Рис. 10.1. Окно Certificates (Сертификаты) браузера Internet Explorer

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

Для добавления доверенного корневого бюро сертификатов в Internet Explorer выполните следующие действия.

  1. Запросите сертификат у бюро сертификатов, доверие к которому нужно зафиксировать. Этот процесс индивидуален для каждой компании, имеющей свое бюро сертификатов, поэтому следует обратиться к администратору.
  2. Разместите сертификат в доступном месте, например, на локальном диске или в файловом расположении.
  3. Откройте окно Internet Options (Свойства браузера) либо из Панели управления, либо из самого браузера с помощью команды Tools\Internet Options (Сервис\Свойства браузера).
  4. Откройте вкладку Content (Содержание).
  5. Нажмите на кнопку Certificates (Сертификаты) в области Certificates (Сертификаты).
  6. Откройте вкладку Trusted Root Certification Authorities (Доверенные корневые бюро сертификатов).
  7. Нажмите на кнопку Import (Импорт), после чего откроется мастер импорта сертификатов (Certificate Import Wizard).
  8. В окне приветствия нажмите на кнопку Next (Далее).
  9. Нажмите на кнопку Browse (Обзор), затем выберите сертификат, полученный от бюро сертификатов.
  10. Нажмите на кнопку Next (Далее).
  11. Оставьте параметры по умолчанию в окне Certificates Store (Хранилище сертификатов).
  12. Нажмите на кнопку Next (Далее).
  13. Нажмите на кнопку Finish (Готово). Отобразится сообщение о том, что импортирование успешно завершено.
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Владимир Кирин
Владимир Кирин
Неполодки на ресурсе.При сдаче 7 теста, открывается пустое окно, и ничего не происходит.Поправте пожалуйста. При этом попытка считается защитана, перездача только через 30 мин. Использую браузер опера.
Александр Титов
Александр Титов
Россия, Москва
Игорь Соловьев
Игорь Соловьев
Россия, Братск