"Все, что необходимо для обеспечения безопасности - это качественное шифрование". Это утверждение можно слышать повсеместно. Если информация защищена шифрованием, никто не в силах ее прочесть или изменить. Если мы используем шифрование, то знаем, с кем имеем дело, поэтому шифрование можно интерпретировать и как аутентификацию.
Все звучит довольно красиво, и, как правило, оправдывается на деле при использовании шифрования. Шифрование, несомненно, является важнейшим средством обеспечения безопасности. Механизмы шифрования помогают защитить конфиденциальность и целостность информации. Механизмы шифрования помогают идентифицировать источник информации. Тем не менее, само по себе шифрование не является решением всех проблем. Механизмы шифрования могут и должны являться составной частью полнофункциональной программы по обеспечению безопасности. Действительно, механизмы шифрования, являются широко используемыми
Тем не менее, шифрование является только задерживающим действием. Известно, что любая система шифрования может быть взломана. Речь идет о том, что для получения доступа к защищенной шифрованием информации может потребоваться очень много времени и большое количество ресурсов. Принимая во внимание этот факт, злоумышленник может попытаться найти и использовать другие слабые места во всей системе в целом.
В данной лекции будет рассказываться об основных понятиях, связанных с шифрованием, и о том, как использовать шифрование в целях обеспечения безопасности информации. Мы не будем подробно рассматривать математическую основу шифрования, поэтому от читателя не потребуется больших знаний в этой области. Тем не менее, мы рассмотрим несколько примеров, чтобы разобраться в том, как различные алгоритмы шифрования используются в хорошей
Шифрование представляет собой сокрытие информации от неавторизованных лиц с предоставлением в это же время авторизованным пользователям доступа к ней. Пользователи называются авторизованными, если у них есть соответствующий ключ для дешифрования информации. Это очень простой принцип. Вся сложность заключается в том, как реализуется весь этот процесс.
Еще одной важной концепцией, о которой необходимо знать, является то, что целью любой системы шифрования является максимальное усложнение получения доступа к информации неавторизованными лицами, даже если у них есть зашифрованный текст и известен алгоритм, использованный для шифрования. Пока неавторизованный пользователь не обладает ключом, секретность и целостность информации не нарушается.
С помощью шифрования обеспечиваются три состояния безопасности информации.
Термины, связанные с шифрованием
Перед тем как начать детальный рассказ о шифровании, приведем определения некоторых терминов, которые будут использоваться в обсуждении. Во-первых, мы будем иметь дело с терминами, обозначающими компоненты, участвующие в шифровании и дешифровании. На рисунке 12.1 показан общий принцип, согласно которому осуществляется шифрование.
(рис 12.1) Общий принцип шифрованияСуществуют также четыре термина, которые необходимо знать:
Атаки на систему шифрования
Системы шифрования могут подвергнуться атакам тремя следующими способами:
При проведении атаки на алгоритм криптоаналитик ищет уязвимости в методе преобразования
Атаки "грубой силы" являются попытками подбора любого возможного ключа для преобразования шифра в
Последний тип атак, реализуемый с использованием уязвимостей в компьютерной системе, как правило, не обсуждается в контексте шифрования. Тем не менее, на практике проще атаковать саму компьютерную систему, чем алгоритм шифрования. Продумайте, к примеру, следующую ситуацию: алгоритм является мощным и имеет длинный ключ, и для его раскрытия с помощью атаки "грубой силы" потребуются оборудование стоимостью в миллионы долларов и масса времени. Однако организация, использующая этот алгоритм, передает ключи в удаленные местоположения через обычную электронную почту. Если известно, когда именно передается ключ, то легче будет перехватить сообщение и выяснить этот ключ.
Еще более ярким примером уязвимости является пакет шифрования, используемый многими пользователями. Этот пакет использует мощные алгоритмы шифрования для зашифровки электронной почты и файлов. Атаки на такую систему нельзя легко осуществить с помощью алгоритмов или атак "грубой силы". Тем не менее, ключ пользователя находится в файле на его компьютере. Файл защищен паролем. Принимая во внимание тот факт, что большинство пользователей не используют в своих паролях комбинации случайных символов, гораздо проще угадать пароль пользователя или получить его с помощью атак "грубой силы", чем получить таким же способом ключ пользователя.
Из этого необходимо сделать вывод о том, что система ничуть не меньше влияет на общую безопасность шифров, чем алгоритм шифрования и ключ.
Существует два основных типа шифрования: с секретным ключом и с открытым ключом. При шифровании с секретным ключом требуется, чтобы все стороны, имеющие право на прочтение информации, имели один и тот же ключ. Это позволяет свести общую проблему безопасности информации к проблеме обеспечения защиты ключа. Шифрование с открытым ключом является наиболее широко используемым методом шифрования. Он обеспечивает конфиденциальность информации и гарантию того, что информация остается неизменной в процессе передачи.
В чем суть шифрования на секретном ключе?
Шифрование на секретном ключе также называется симметричным шифрованием, так как для шифрования и дешифрования данных используется один и тот же ключ. На рисунке 12.2 показан базовый принцип шифрования с секретным ключом. Как видно из рисунка, отправитель и получатель информации должны иметь одинаковый ключ.
(рис 12.2) Шифрование с секретным ключомШифрование с секретным ключом обеспечивает конфиденциальность информации в зашифрованном состоянии. Расшифровать сообщение могут только те лица, которым известен ключ. Любое изменение в сообщении, внесенное во время передачи, будет обнаружено, так как после этого не удастся правильно расшифровать сообщение. Шифрование с секретным ключом не обеспечивает аутентификацию, поскольку любой пользователь может создавать, шифровать и отправлять действительное сообщение.
В общем, шифрование с секретным ключом быстро и легко реализуется с помощью аппаратных или программных средств.
Подстановочные шифры
Подстановочные шифры существуют уже около 2500 лет. Самым ранним примером является шифр Атбаш. Он возник примерно в 600 году до н.э. и заключался в использовании еврейского алфавита в обратном порядке.
Юлий Цезарь использовал подстановочный шифр, который так и назывался - шифр Цезаря. Этот шифр заключался в замещении каждой буквы другой буквой, расположенной в алфавите на три буквы дальше от шифруемой. Таким образом, буква A преобразовывалась в D, B преобразовывалась в E, а Z преобразовывалась в C.
Из этого примера видно, что подстановочный шифр обрабатывает за один раз одну букву
Подстановочные шифры имеют один большой недостаток - неизменная частота букв в исходном алфавите. В английском языке, например, буква "E" является наиболее часто используемой. Если заменить ее другой буквой, то чаще всего будет использоваться новая буква (при рассмотрении большого числа сообщений). При помощи такого анализа подстановочный шифр может быть взломан. Дальнейшая разработка анализа частоты вхождений букв позволяет получить наиболее часто встречающиеся комбинации из двух и трех букв. С помощью такого анализа можно взломать любой подстановочный шифр, если атакующий получит достаточное количество шифрованного текста.
Одноразовые блокноты
Одноразовые блокноты (One-
Одноразовые блокноты используются в информационных средах с очень высоким уровнем безопасности (но только для коротких сообщений). Например, в Советском Союзе
| Сообщение | S | E | N | D | H | E | L | P |
| Буквы, замененные соответствующими числами | 19 | 5 | 14 | 4 | 8 | 5 | 12 | 16 |
| Одноразовый блокнот | 7 | 9 | 5 | 2 | 12 | 1 | 0 | 6 |
| Добавление |
26 | 14 | 19 | 6 | 20 | 6 | 12 | 22 |
| Шифрованный текст | Z | N | S | F | T | F | L | V |
Еще одним важным моментом, связанным с
Внимание!
Некоторые современные системы шифрования также используют что-то вроде
Data Encryption Standard (DES)
Алгоритм
DES использует ключ длиной 56 бит. Используются 7 бит из байта, восьмой бит каждого байта используется для

(рис 12.4) Блок-схема алгоритма DES(рис 12.3) Алгоритм генерации подключа DESНа блок-схеме алгоритма DES изображены несколько блоков, в которых происходит перестановка. Рассматриваемый стандарт шифрования предусматривает специальное переупорядочивание битов для каждой перестановки. То же самое относится к алгоритму генерации подключа. Для перестановочной выборки 1 и 2 предусмотрено определенное переупорядочивание битов. На рисунке 12.3 также изображена функция вызова f. В этой функции находятся S-блоки. S-блоки представляют собой блоки табличного поиска (также определенные в стандарте), изменяющие 6-битные выходные данные на 4-битные.
Алгоритм DES может функционировать в четырех режимах.
Были раскрыты несколько атак, требующих меньше вычислительных мощностей, нежели исчерпывающий поиск (дифференциальный и
Тройной DES
В 1992 году исследования показали, что DES можно использовать трижды для обеспечения более мощного шифрования. Так родилась концепция тройного алгоритма DES (
(рис 12.5) Блок-схема алгоритма шифрования TDESПримечание
Шифрование паролей
Стандартная схема шифрования паролей UNIX является разновидностью DES. Хотя функция шифрования пароля представляет собой в действительности
У каждого пользователя есть свой пароль. Алгоритм использует первые восемь символов пароля. Если пароль длиннее восьми символов, он усекается. Если пароль короче восьми символов, он дополняется. Пароль преобразуется в 56-битное число с помощью первых 7 бит каждого символа. После этого система выбирает 12.битное число на базе системного времени. Этот элемент называется "крупинкой соли" или расширением. Расширение и пароль используются в качестве входных данных в функции шифрования паролей (см. рис. 12.6).
(рис 12.6) Функция шифрования пароля UNIXРасширение используется для изменения одной из таблиц перестановки в алгоритме DES (перестановка E) любым из 4096 различных способов, в зависимости от числа единиц в двенадцати битах. Начальный
Конечные выходные данные преобразуются в 11 символов, а расширение преобразуется в 2 символа и помещается перед конечными данными выхода.
Главной уязвимостью этой системы является то, что она основана на выборе пароля. Так как большинство пользователей компьютеров используют пароли, состоящие из символов нижнего регистра, мы имеем общее число возможных комбинаций, равное 268. Это значительно больше, чем 255 возможных ключей DES, поэтому взлом такого шифра посредством "грубой силы" займет гораздо меньше времени и вычислительных ресурсов для раскрытия паролей в системе Unix.
Примечание
Большая часть систем Unix теперь обеспечивает возможность использования теневых
Расширенный стандарт шифрования Rijndael
Взамен DES
Так как этот стандарт был одобрен,
Другие алгоритмы шифрования с секретным ключом
В различных системах безопасности используются и другие алгоритмы шифрования с секретным ключом. Из них можно выделить следующие.
(рис 12.7) Схема работы цикла алгоритма RijndaelЛюбой из этих алгоритмов может использоваться в средствах обеспечения безопасности информации. Все эти алгоритмы, как правило, являются достаточно мощными для использования в общих целях.
Внимание!
Имейте в виду, что общий уровень
Шифрование с открытым ключом является более поздней технологией, чем шифрование с секретным ключом. Главным различием между этими двумя технологиями является число ключей, используемых при шифровании данных. В шифровании с секретным ключом для шифрования и дешифрования данных используется один и тот же ключ, в то время как в алгоритмах шифрования с открытым ключом используются два ключа. Один ключ используется при шифровании информации, другой - при дешифровке.
В чем заключается шифрование с открытым ключом?
На рисунке 12.8 показана базовая схема шифрования с открытым ключом (
На практике один ключ называют секретным, а другой - открытым. Секретный ключ содержится в тайне владельцем пары ключей. Открытый ключ передается вместе с информацией в открытом виде. Еще одной особенностью шифрования с открытым ключом является то, что если у абонента имеется один из ключей пары, другой ключ вычислить невозможно. Именно поэтому открытый ключ передается в открытом виде.
(рис 12.8) Шифрование с открытым ключомЕсли важно обеспечить конфиденциальность, шифрование выполняется с открытым ключом. Таким образом, расшифровать информацию может только владелец ключа, так как секретный ключ содержится в тайне самим владельцем. Если необходимо осуществлять аутентификацию, владелец ключевой пары шифрует данные с использованием секретного ключа. Корректно дешифровать информацию можно только с помощью правильного открытого ключа, передаваемого в открытом виде, и поэтому только владелец пары ключей (иными словами, хранитель секретного ключа) может отправлять информацию. Целостность информации при передаче защищается в обоих случаях.
Целостность информации после передачи может быть проверена, если исходная информация была зашифрована с помощью секретного ключа владельца.
Недостатком систем шифрования с открытым ключом является то, что они требуют больших вычислительных мощностей и, следовательно, являются намного менее быстродействующими, нежели системы с секретным ключом. Тем не менее, если скомбинировать шифрование с открытым и секретным ключами, получится гораздо более мощная система шифрования. Система шифрования с открытым ключом используется для обмена ключами и аутентификации абонентов по обе стороны соединения. Система шифрования с секретным ключом затем используется для шифрования остального трафика.
Алгоритм обмена ключами Диффи-Хеллмана
Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) разработали свою систему шифрования с открытым ключом в 1976 г. Система Диффи-Хеллмана (Diffie-Hellman) разрабатывалась для решения проблемы
P1 и P2 ) требуется установить между собой безопасное соединение, для которого необходимо согласовать ключ шифрования.P1 и P2 принимают к использованию два больших целых числа a и b, причем 1 < a < b.P1 выбирает случайное число i и вычисляет I = ai mod b. P1 передает I абоненту P2.P2 выбирает случайное число j и вычисляет J = aj mod b. P2 передает J абоненту P1.P1 вычисляет k1 = Ji mod b.P2 вычисляет k2 = Ij mod b.k1 = k2 = ai*j mod b, следовательно, k1 и k2 являются секретными ключами, предназначенными для использования при передаче других данных.Примечание
В приведенных выше уравнениях "mod" означает остаток. Например, 12 mod 10 = 2. Два - это остаток от деления 12 на 10.
Если злоумышленник прослушивает трафик, передаваемый по кабелю, то ему будут известны a, b, I и J. Тем не менее, остаются в секрете i и j. Уровень i при известном I = ai mod b. Эта задача называется задачей дискретного логарифмирования и считается очень сложной (т. е. с помощью современного вычислительного оборудования ее решить практически невозможно), если числа очень велики. Следовательно, a и b необходимо выбирать очень тщательно. Например, оба числа b и (b - 1)/2 должны быть простыми и иметь длину не менее 512 бит. Рекомендуемая длина чисел составляет 1024 бит.
Алгоритм обмена ключами Диффи-Хеллмана используется во многих системах безопасности для реализации обмена ключами, используемыми для дополнительного трафика. Недостатком системы Диффи-Хеллмана является то, что она может быть уязвима для P1 и P2, подключить его к каналу связи и осуществлять перехват всей передаваемой информации, то он сможет выполнять обмен данными с P2, выдавая себя за P1, и с P1 под видом P2. Таким образом, обмен ключами будет происходить между P1 и злоумышленником и между P2 и злоумышленником. Тем не менее, осуществление такой атаки требует большого объема ресурсов, и в реальном мире такие атаки происходят редко.
(рис 12.9) Атака посредником на алгоритм Диффи-Хеллмана Алгоритм RSA
В 1978 г. Рон Ривест, Ади Шамир и Лен Адельман разработали алгоритм шифрования Rivest-Shamir-Adleman (RSA) с открытым ключом. В отличие от
Базовый алгоритм, позволяющий обеспечить конфиденциальность данных, очень прост.
Шифрованный текст = (открытый текст)e mod n
Открытый текст = (шифрованный текст)d mod n
Секретный ключ = {d, n}
Открытый ключ = {e, n}
Безопасность обеспечивается сложностью вычисления d при наличии известных e и n. Подразумевается, что владелец пары ключей сохраняет секретный ключ в тайне, и что открытый ключ передается в открытом виде. Следовательно, если информация зашифрована с помощью открытого ключа, дешифровать ее может только владелец ключевой пары.
Также следует заметить, что алгоритм может быть обращен для обеспечения аутентификации отправителя. В этом случае алгоритм будет иметь следующий вид.
Шифрованный текст = (открытый текст)d mod n
Открытый текст = (шифрованный текст)e mod n
Секретный ключ = {d, n}
Открытый ключ = {e, n}
В целях аутентификации владелец шифрует информацию с использованием секретного ключа. Это может делать только владелец ключевой пары, так как секретный ключ содержится в тайне. Любое лицо может дешифровать информацию и удостовериться в том, что данные поступили именно от владельца ключевой пары.
Генерация ключей RSA
При генерировании ключей RSA необходимо соблюдать тщательность. Чтобы сгенерировать ключевую пару RSA, выполните следующие шаги:
p и q и содержите их в секрете.n = pq .ф(n) = (p - 1)(q - 1).e, чтобы оно было взаимно простым по отношению к ф(n).d, чтобы (d)(e) = 1 mod ф(n) и d < ф(n).Примечание
Число n должно содержать порядка 200 знаков или больше. Тогда оба числа p и q должны иметь длину, по крайней мере, 100 знаков. Ключи для использования на практике должны иметь длину 1024 бит. В случае с секретной информацией рекомендуется использовать ключи длиной 2048 бит и более.
Реальный пример работы RSA
Имейте в виду, что мною выбраны числа, которые относительно легко проверить при выполнении данного примера. В реальном мире в
p = 11 и q = 13.n = pq . Имеем n = 11 * 13 = 143.ф(n) = (p - 1)(q - 1) = (11 - 1)(13 - 1) = 10 * 12 = 120.ф(n). Здесь было выбрано значение e = 7.d, чтобы (d)(e) = 1 mod ф(n). Следовательно, (d)(7) = 1 mod 120 ; d должно также быть меньше 120. Находим, что d = 103. (103 умножаем на 7 и получается 721. 721 делим на 120 и получаем 6 с остатком 1.)Для выполнения непосредственно шифрования и дешифрования используем исходные формулы.
Шифрованный текст = (открытый текст)e mod n Открытый текст = (шифрованный текст)d mod n
Предположим, что нужно отправить сообщение "9". С помощью формулы шифрования получаем следующее:
Шифрованный текст = (9)7 mod 143 = 48.
При получении зашифрованной информации она подвергается обработке алгоритмом дешифрования:
Открытый текст = (48)103 mod 143 = 9.
Другие алгоритмы с открытым ключом
Существуют некоторые алгоритмы с открытым ключом, имеющие такие же свойства, как RSA и
Алгоритм Эль-Гамаля
Эль-Гамаль (Taher Elgamal) разработал вариант системы Диффи-Хеллмана. Он усовершенствовал
Алгоритм цифровой подписи
Алгоритм
Шифрование с использованием эллиптических кривых
Вопросы для самопроверки
Цифровые подписи - это не цифровые изображения рукописных подписей. Цифровые подписи - это форма шифрования, обеспечивающая аутентификацию. Популярность цифровых подписей постоянно растет, и они были разрекламированы как способ перехода на полностью электронную информационную среду. Президент США Билл Клинтон даже издал закон об использовании цифровых подписей как легальных подписей. Но даже несмотря на это, цифровые подписи вводят многих людей в недоумение.
Что такое цифровая подпись?
Как уже говорилось, цифровые подписи - это не изображения рукописных автографов, поставленных на бумажном документе. Цифровая подпись - это метод аутентификации электронной информации посредством шифрования.
Как говорилось в параграфе, посвященном шифрованию с открытым ключом, если информация шифруется с использованием секретного ключа, принадлежащего определенному лицу, то только это лицо может осуществлять дешифрование информации. Следовательно, мы знаем, что информация поступила от этого лица, если дешифрование информации проведено успешно с использованием ключа, принадлежащего этому лицу. Если дешифрование проведено успешно, мы также знаем, что в процессе передачи она не была изменена, поэтому также обеспечивается целостность данных.
С помощью цифровой подписи можно еще больше повысить уровень этой защиты и обезопасить информацию от изменения после получения и дешифрования. На рис. 12.10 показано, каким образом может быть выполнена эта задача. Во-первых, информация обрабатывается с помощью анализа сообщений или
Когда информация принимается получателем, он может обработать ее той же самой
Безопасность и полезность цифровых подписей зависит от двух важнейших элементов:
Примечание
Если пользователь не защищает свой секретный ключ, то он не может быть уверен в том, что этот ключ используется исключительно им. Если какое-либо лицо также использует секретный ключ этого пользователя, нет никаких гарантий того, что рассматриваемые данные подписаны только действительным пользователем.
(рис 12.10) Функционирование цифровых подписейБезопасные хеш-функции
Для использования цифровых подписей необходимы безопасные
Второму условию не так-то просто удовлетворить. Рассматриваемые контрольные суммы должны быть меньше по размеру, нежели информация, для обеспечения простоты подписывания, хранения и передачи информации. Если это условие удовлетворяется, то одной и той же контрольной сумме должно соответствовать большое число различных фрагментов информации. Безопасность функций обеспечивается способом связи всех битов в исходных данных со всеми битами контрольной суммы. Таким образом, если один бит информации изменяется, то также изменяется большое количество битов в контрольной сумме.
Безопасные
Управление ключами является самой неприятной задачей при использовании любой системы шифрования. Ключи представляют собой самые важные объекты во всей системе, так как если злоумышленник получает ключ, у него появляется возможность расшифровывать все данные, зашифрованные с помощью этого ключа. В некоторых случаях также удается получить последующие ключи. Управление ключами заключается не только в защите их при использовании. Данная задача предусматривает создание надежных ключей,
Ключи и инфраструктура, необходимая для управления ими соответствующим образом, могут значительно повлиять на возможность использования организацией системы шифрования. При рассмотрении в деталях каждого из моментов, связанных с шифрованием, необходимо иметь в виду, что определенные здесь моменты должны тысячекратно преумножаться, чтобы соответствовать требованиям настоящей инфраструктуры шифрования.
Создание ключей
Очевидно, что ключи должны создаваться с особой тщательностью. Некоторые ключи обеспечивают недостаточную производительность при работе с
Большая часть систем шифрования обеспечивают некоторый метод генерирования ключей. Иногда пользователям позволяется выбирать ключ посредством выбора пароля. В данном случае полезно проинструктировать пользователей по поводу использования надежных паролей, содержащих числа и специальные символы. В противном случае общее пространство ключей значительно уменьшается (это позволяет быстрее проводить поиск при атаке "грубой силой").
Некоторые ключи выбираются из случайных чисел. К сожалению, существует очень немного генераторов истинно случайных чисел. Большинство из них генерируют
Также может быть необходимым выбрать правильную длину ключа. В некоторых алгоритмах используются ключи фиксированной длины (например, в алгоритме DES используется ключ длиной 56 бит). Другие алгоритмы могут использовать ключи переменной длины. Чем длиннее ключ, тем выше уровень обеспечиваемой безопасности. Например, 1024-битный ключ RSA более надежен, чем 512.битный ключ RSA. Тем не менее, таким образом нельзя сопоставлять надежность ключа RSA с надежностью ключа DES. В таблице 12.2 представлены относительные степени надежности ключей для различных алгоритмов шифрования.
Чтобы получить представление о том, насколько надежны ключи на практике, вспомните машину
Внимание!
Информация о длине безопасных ключей, представленная в этой лекции, является актуальной на момент написания этой книги. С течением времени будут производиться все более мощные компьютеры и открываться новые математические возможности, вследствие чего длины ключей также будут меняться.
Распространение ключей
После
| Шифрование с секретным ключом(DES, | Шифрование с открытым ключом(RSA, Диффи-Хеллман) | Шифрование посредством |
|---|---|---|
| 40 бит | - | - |
| 56 бит | 400 бит | - |
| 64 бит | 512 бит | - |
| 80 бит | 768 бит | - |
| 90 бит | 1024 бит | 160 бит |
| 120 бит | 2048 бит | 210 бит |
| 128 бит | 2304 бит | 256 бит |
Такой подход может быть полезным, если удаленные сайты расположены в небольшом удалении. Но что если удаленные сайты расположены на других континентах? Проблема приобретает намного более серьезный характер.
Тем не менее, существует частичное решение этой проблемы, заключающееся в использовании алгоритма обмена ключами Диффи-Хеллмана для распространения множества
Любой ключ, используемый в течение продолжительного периода времени, требует обеспечения основательных мер предосторожности. Нельзя использовать алгоритм обмена ключами Диффи-Хеллмана для передачи пар ключей RSA. В случае с парами ключей RSA один ключ должен содержаться в секрете, а другой может находиться в открытом состоянии. Открытый ключ должен публиковаться так, чтобы предотвратить его подмену (см. раздел ниже "Сертификация ключей"). Если пары ключей генерируются центральным бюро сертификатов, секретный ключ должен безопасно передаваться владельцу ключевой пары. Если пара ключей генерируется владельцем, открытый ключ должен передаваться в центральное бюро сертификатов с обеспечением мер безопасности.
Примечание
Если ключевые пары генерируются центральным бюро сертификатов, то возможность использования секретного ключа для аутентификации находится под вопросом, так как центральному бюро сертификатов ключ уже может быть известен. При создании и распространении секретных ключей необходимо соблюдать особую внимательность.
Сертификация ключей
Если ключи некоторым образом передаются в удаленное место расположения, они должны проверяться при получении на предмет того, не подверглись ли они вмешательству в процессе передачи. Это можно делать вручную либо использовать некоторую форму цифровой подписи.
Открытые ключи предназначены для публикации или передачи другим пользователям и должны сертифицироваться как принадлежащие владельцу ключевой пары. Сертификация осуществляется с помощью центрального бюро сертификатов (CA). В данном случае CA предоставляет цифровую подпись на открытом ключе, и благодаря этому CA с доверием воспринимает тот факт, что открытый ключ принадлежит владельцу ключевой пары (см. рис. 12.11).
Внимание!
Без правильной сертификации ключа и его владельца злоумышленник может внедрить собственные ключи и, таким образом, преодолеть защиту всей передаваемой и аутентифицируемой информации.
(рис 12.11) Сертификация открытого ключа в бюро сертификатов Защита ключей
Открытые ключи открытой ключевой пары не требуют защиты конфиденциальности. Они лишь требуют обеспечения защиты целостности посредством использования сертификатов. Секретный ключ открытой ключевой пары должен все время сохраняться в тайне.
Если злоумышленник получает копию секретного ключа, у него появляется возможность чтения всего
Необходимо обеспечивать защиту всех ключей системы, использующей секретные ключи. Если ключ содержится в файле, этот файл должен быть защищен в любом месте, где бы он не находился (включая архивные носители). Если ключ находится в памяти, необходимо предпринимать меры по защите пространства памяти от исследования пользователями или процессами. Аналогично, в случае с
Аннулирование ключей
Сроки действия ключей ограничены. Сеансовый ключ может существовать только в данном конкретном сеансе.
Тем не менее, ключи могут быть утеряны и раскрыты. При этом владелец ключа должен проинформировать других пользователей о том, что ключ больше не является действительным и не подлежит использованию. В системе шифрования с секретным ключом при раскрытии ключа (если пользователи системы знают об этом) пользователи могут сообщить друг другу об этом и начать использовать новый ключ.
В системе шифрования с открытым ключом дела обстоят несколько иначе. Если пара ключей несанкционированно раскрывается и аннулируется, не существует определенного способа информирования всех потенциальных пользователей открытого ключа о том, что ключ недействителен. В некоторых случаях открытые ключи публикуются на серверах ключей. Лицо, желающее связаться с владельцем ключа, может зайти на сервер для получения сертифицированного открытого ключа. Если ключ раскрыт и аннулирован, каким образом об этом узнает стороннее лицо? Решением этой проблемы является периодическое посещение сервера ключей для выяснения того, был ли он отменен; владелец ключа должен размещать информацию об аннулировании ключа на всех потенциальных серверах ключей. Серверы ключей должны содержать данную информацию об отмене ключей до тех пор, пока не истечет срок действия оригинального сертификата.
Концепция доверия является основополагающим принципом информационной безопасности и шифрования в частности. Для работы шифрования необходима уверенность в том, что ключ шифра не будет раскрыт, и что используемый алгоритм шифрования является достаточно мощным. В случае с аутентификацией и цифровыми подписями необходима также уверенность в том, что открытый ключ на самом деле принадлежит тому, кто его использует.
Возможно, самой серьезной проблемой, связанной с доверием, является его установление и поддержание. Для обеспечения доверия в среде с открытым ключом используются две основные схемы - иерархия и сеть. У обеих схем есть как преимущества, так и недостатки.
Иерархия
Иерархическая
(рис 12.12) Иерархическая модель доверияМы рассмотрели довольно простой случай. Если пользователю User1 нужно проверить информацию от пользователя User3, все несколько усложняется. CA1 не знает о пользователе User3, в отличие от CA2. Тем не менее, пользователь User1 не доверяет CA2, так как это бюро сертификатов напрямую не принадлежит цепочке пользователя User1. Следующий уровень вверх по цепочке - CA4. Пользователь User1 может верифицировать информацию от пользователя User3 посредством проверки с помощью CA4 следующим образом.
Как видите, все довольно быстро усложняется. Представьте себе, какой объем операций по верификации необходимо было бы производить, если бы пользователю User1 нужно было верифицировать данные, поступившие от пользователя User4. Две цепочки не пересекаются вплоть до CA9! Так реализована сертификация в X.509. Иерархия устанавливается таким образом, чтобы между любыми двумя нижними объектами могла быть создана цепочка сертификатов.
С теоретической точки зрения все выглядит неплохо. Однако на практике все иначе. Одной из причин, по которой данная технология не функционировала, заключается в том, что не существовало реальных CA корневого уровня. CA корневого уровня - это наивысшая точка в иерархии. В одно время было принято считать, что в каждой стране должно быть свое бюро сертификатов корневого уровня. Также предполагалось, что компании, выпускающие кредитные карты, должны стать корневыми CA, или что каждая организация должна иметь свое собственное CA. На практике почти ничего не было реализовано. Возникал еще один вопрос, который представлял собой потенциальную проблему: сколько CA должны сертифицировать каждого конечного пользователя? Если конечный пользователь живет в стране А, обладает кредитной картой компании B и работает в организации C, должны ли все три объекта подписывать один и тот же сертификат?
Установка CA
В некоторых организациях считается, что создание внутреннего CA (и соответствующей инфраструктуры с открытым ключом) необходимо в их деловой модели. Если это действительно так, существует несколько вопросов, которые необходимо решить, прежде чем устанавливать бюро сертификатов.
Вопрос к эксперту
Вопрос. Существуют ли CA общего пользования?
) и Thawte (http://www.thawte.com/) являются наиболее яркими примерами таких CA. Организация может создать пару открытого ключа, например для веб-сервера, и отправить открытый ключ в CA. CA создает сертификат и предоставляет его организации. CA получает прибыль от предоставления этой услуги. Использование таких сертификатов можно наблюдать при посещении многих защищенных сайтов в интернете. Так как открытые ключи CA известны большей части веб-браузеров, сертификат веб-сайта верифицируется с помощью открытого ключа CA.
Примечание
Системы, используемые в CA, и сертификаты CA (в особенности секретные ключи CA) должны быть хорошо защищены, так как CA является "сердцем" системы. Меры, предпринимаемые для защиты секретного ключа CA, как правило, требуют, чтобы разблокировку секретного ключа производили два человека.
Как видно из списка, приведенного выше, при разработке CA возникает целый ряд вопросов. Если организация достаточно крупная или имеет большое число объектов нижних уровней (т. е. пользователей), администрирование сертификатов пользователей будет отнюдь не простой задачей. Перед подписыванием сертификата нужно будет проверить личность каждого пользователя. Срок действия сертификатов будет периодически истекать, и, следовательно, будет возникать потребность в издании новых сертификатов. Некоторые сертификаты придется аннулировать.
Аннулирование сертификатов
Если организация использует только одно CA, все не так сложно, однако при этом CA должно быть постоянно доступным. Если иерархия CA имеет большие размеры (как на рис. 12.12), то проблема приобретает комплексный характер. Пользователь User1 может сообщить CA о том, что его сертификат аннулирован, и CA1 может обнародовать эту информацию, но как эта информация дойдет до пользователя User4 от CA6?
Сеть
Сеть с доверием представляет собой альтернативную
В данной модели не существует центрального бюро сертификатов. Если пользователю User1 требуется верифицировать информацию, поступающую от пользователя User2, он запрашивает
Теперь рассмотрим ситуацию, в которой User1 получает информацию от User3. Пользователь User3 не известен пользователю User1, но у пользователя User3 есть сертификат, подписанный пользователем User2. Таким образом, рассматриваемая модель распространяется на всю компьютерную сеть. Единственным решением, которое должно приниматься в процессе работы, является число переходов, которому доверяет пользователь. Как правило, это число равно 3 или 4. Кроме того, может возникнуть ситуация, в которой для установления доверия другому пользователю есть два пути. Например, User2 может использовать два пути установления доверия с пользователем User5: один через пользователя User3 и другой через пользователя User4. Так как оба пользователя User3 и User4 сертифицируют пользователя User5, пользователь User2 может быть уверен в сертификате пользователя User5.
(рис 12.13) Сеть модели доверияГлавной проблемой, связанной с данной моделью доверия, является недостаток масштабируемости. Так как модель сети состоит из двусторонних взаимоотношений, каждый пользователь должен иметь некоторое число таких взаимосвязей, чтобы пользоваться в сети каким-либо доверием. На практике такие взаимосвязи могут отсутствовать, так как большинство пользователей работают с небольшим числом связей и редко выходят на уровень трех или четырех переходов.
Большим преимуществом модели "сеть" является то, что реализация инфраструктуры не требует больших затрат. Каждый пользователь ответственен за свой собственный сертификат и за верификацию других сертификатов. Организация может создать центральное
Этот проект предназначен для того, чтобы продемонстрировать использование шифрования в информационной системе для обеспечения аутентификации, конфиденциальности и целостности. В данном проекте подразумевается применение как систем шифрования с секретным ключом (AES), так и систем с открытым ключом (RSA или Диффи-Хеллмана).
В организации, на которую вы работаете, требуется принимать транзакции от партнера. К сожалению, используемая внутри организации система не поддерживает работу с коммерческими VPN, и поэтому в организации создается система шифрования в своем собственном специально разработанном приложении. Вам поручено внести предложения по поводу того, как должна работать система шифрования. В своем текущем состоянии система транзакций принимает TCP-соединение от партнера организации, оценивает поступающие данные и делает соответствующие записи в базе данных. После этого сервер передает подтверждение в систему партнера через то же самое соединение. Информация при передаче должна сохраняться в секрете, а также защищаться от несанкционированного изменения. Сервер должен осуществлять аутентификацию инициатора транзакции, так как только одна система в сети партнера авторизована для инициирования транзакций.
Шаг за шагом
Выводы
Выбор типа системы шифрования - довольно простая задача. Имейте в виду, что аутентификация может обеспечиваться шифрованием обоих типов, однако при использовании шифрования с секретным ключом имеет место ряд ограничений. Значительно усложнить систему могут аспекты, связанные с управлением ключами. Помните, что здесь речь шла об одной системе, и не требовалась разработка расширяемой и масштабируемой системы.
Не стоит опасаться наложения ограничений на другие аспекты системы. Помните, что шифрование - не панацея, и поэтому его использование подразумевает соответствие этим требованиям при решении некоторых проблем безопасности.
"Все, что необходимо для обеспечения безопасности - это качественное шифрование". Это утверждение можно слышать повсеместно. Если информация защищена шифрованием, никто не в силах ее прочесть или изменить. Если мы используем шифрование, то знаем, с кем имеем дело, поэтому шифрование можно интерпретировать и как аутентификацию.
Все звучит довольно красиво, и, как правило, оправдывается на деле при использовании шифрования. Шифрование, несомненно, является важнейшим средством обеспечения безопасности. Механизмы шифрования помогают защитить конфиденциальность и целостность информации. Механизмы шифрования помогают идентифицировать источник информации. Тем не менее, само по себе шифрование не является решением всех проблем. Механизмы шифрования могут и должны являться составной частью полнофункциональной программы по обеспечению безопасности. Действительно, механизмы шифрования, являются широко используемыми
Тем не менее, шифрование является только задерживающим действием. Известно, что любая система шифрования может быть взломана. Речь идет о том, что для получения доступа к защищенной шифрованием информации может потребоваться очень много времени и большое количество ресурсов. Принимая во внимание этот факт, злоумышленник может попытаться найти и использовать другие слабые места во всей системе в целом.
В данной лекции будет рассказываться об основных понятиях, связанных с шифрованием, и о том, как использовать шифрование в целях обеспечения безопасности информации. Мы не будем подробно рассматривать математическую основу шифрования, поэтому от читателя не потребуется больших знаний в этой области. Тем не менее, мы рассмотрим несколько примеров, чтобы разобраться в том, как различные алгоритмы шифрования используются в хорошей
Шифрование представляет собой сокрытие информации от неавторизованных лиц с предоставлением в это же время авторизованным пользователям доступа к ней. Пользователи называются авторизованными, если у них есть соответствующий ключ для дешифрования информации. Это очень простой принцип. Вся сложность заключается в том, как реализуется весь этот процесс.
Еще одной важной концепцией, о которой необходимо знать, является то, что целью любой системы шифрования является максимальное усложнение получения доступа к информации неавторизованными лицами, даже если у них есть зашифрованный текст и известен алгоритм, использованный для шифрования. Пока неавторизованный пользователь не обладает ключом, секретность и целостность информации не нарушается.
С помощью шифрования обеспечиваются три состояния безопасности информации.
Термины, связанные с шифрованием
Перед тем как начать детальный рассказ о шифровании, приведем определения некоторых терминов, которые будут использоваться в обсуждении. Во-первых, мы будем иметь дело с терминами, обозначающими компоненты, участвующие в шифровании и дешифровании. На рисунке 12.1 показан общий принцип, согласно которому осуществляется шифрование.
(рис 12.1) Общий принцип шифрованияСуществуют также четыре термина, которые необходимо знать:
Атаки на систему шифрования
Системы шифрования могут подвергнуться атакам тремя следующими способами:
При проведении атаки на алгоритм криптоаналитик ищет уязвимости в методе преобразования
Атаки "грубой силы" являются попытками подбора любого возможного ключа для преобразования шифра в
Последний тип атак, реализуемый с использованием уязвимостей в компьютерной системе, как правило, не обсуждается в контексте шифрования. Тем не менее, на практике проще атаковать саму компьютерную систему, чем алгоритм шифрования. Продумайте, к примеру, следующую ситуацию: алгоритм является мощным и имеет длинный ключ, и для его раскрытия с помощью атаки "грубой силы" потребуются оборудование стоимостью в миллионы долларов и масса времени. Однако организация, использующая этот алгоритм, передает ключи в удаленные местоположения через обычную электронную почту. Если известно, когда именно передается ключ, то легче будет перехватить сообщение и выяснить этот ключ.
Еще более ярким примером уязвимости является пакет шифрования, используемый многими пользователями. Этот пакет использует мощные алгоритмы шифрования для зашифровки электронной почты и файлов. Атаки на такую систему нельзя легко осуществить с помощью алгоритмов или атак "грубой силы". Тем не менее, ключ пользователя находится в файле на его компьютере. Файл защищен паролем. Принимая во внимание тот факт, что большинство пользователей не используют в своих паролях комбинации случайных символов, гораздо проще угадать пароль пользователя или получить его с помощью атак "грубой силы", чем получить таким же способом ключ пользователя.
Из этого необходимо сделать вывод о том, что система ничуть не меньше влияет на общую безопасность шифров, чем алгоритм шифрования и ключ.
Существует два основных типа шифрования: с секретным ключом и с открытым ключом. При шифровании с секретным ключом требуется, чтобы все стороны, имеющие право на прочтение информации, имели один и тот же ключ. Это позволяет свести общую проблему безопасности информации к проблеме обеспечения защиты ключа. Шифрование с открытым ключом является наиболее широко используемым методом шифрования. Он обеспечивает конфиденциальность информации и гарантию того, что информация остается неизменной в процессе передачи.
В чем суть шифрования на секретном ключе?
Шифрование на секретном ключе также называется симметричным шифрованием, так как для шифрования и дешифрования данных используется один и тот же ключ. На рисунке 12.2 показан базовый принцип шифрования с секретным ключом. Как видно из рисунка, отправитель и получатель информации должны иметь одинаковый ключ.
(рис 12.2) Шифрование с секретным ключомШифрование с секретным ключом обеспечивает конфиденциальность информации в зашифрованном состоянии. Расшифровать сообщение могут только те лица, которым известен ключ. Любое изменение в сообщении, внесенное во время передачи, будет обнаружено, так как после этого не удастся правильно расшифровать сообщение. Шифрование с секретным ключом не обеспечивает аутентификацию, поскольку любой пользователь может создавать, шифровать и отправлять действительное сообщение.
В общем, шифрование с секретным ключом быстро и легко реализуется с помощью аппаратных или программных средств.
Подстановочные шифры
Подстановочные шифры существуют уже около 2500 лет. Самым ранним примером является шифр Атбаш. Он возник примерно в 600 году до н.э. и заключался в использовании еврейского алфавита в обратном порядке.
Юлий Цезарь использовал подстановочный шифр, который так и назывался - шифр Цезаря. Этот шифр заключался в замещении каждой буквы другой буквой, расположенной в алфавите на три буквы дальше от шифруемой. Таким образом, буква A преобразовывалась в D, B преобразовывалась в E, а Z преобразовывалась в C.
Из этого примера видно, что подстановочный шифр обрабатывает за один раз одну букву
Подстановочные шифры имеют один большой недостаток - неизменная частота букв в исходном алфавите. В английском языке, например, буква "E" является наиболее часто используемой. Если заменить ее другой буквой, то чаще всего будет использоваться новая буква (при рассмотрении большого числа сообщений). При помощи такого анализа подстановочный шифр может быть взломан. Дальнейшая разработка анализа частоты вхождений букв позволяет получить наиболее часто встречающиеся комбинации из двух и трех букв. С помощью такого анализа можно взломать любой подстановочный шифр, если атакующий получит достаточное количество шифрованного текста.
Одноразовые блокноты
Одноразовые блокноты (One-
Одноразовые блокноты используются в информационных средах с очень высоким уровнем безопасности (но только для коротких сообщений). Например, в Советском Союзе
| Сообщение | S | E | N | D | H | E | L | P |
| Буквы, замененные соответствующими числами | 19 | 5 | 14 | 4 | 8 | 5 | 12 | 16 |
| Одноразовый блокнот | 7 | 9 | 5 | 2 | 12 | 1 | 0 | 6 |
| Добавление |
26 | 14 | 19 | 6 | 20 | 6 | 12 | 22 |
| Шифрованный текст | Z | N | S | F | T | F | L | V |
Еще одним важным моментом, связанным с
Внимание!
Некоторые современные системы шифрования также используют что-то вроде
Data Encryption Standard (DES)
Алгоритм
DES использует ключ длиной 56 бит. Используются 7 бит из байта, восьмой бит каждого байта используется для

(рис 12.4) Блок-схема алгоритма DES(рис 12.3) Алгоритм генерации подключа DESНа блок-схеме алгоритма DES изображены несколько блоков, в которых происходит перестановка. Рассматриваемый стандарт шифрования предусматривает специальное переупорядочивание битов для каждой перестановки. То же самое относится к алгоритму генерации подключа. Для перестановочной выборки 1 и 2 предусмотрено определенное переупорядочивание битов. На рисунке 12.3 также изображена функция вызова f. В этой функции находятся S-блоки. S-блоки представляют собой блоки табличного поиска (также определенные в стандарте), изменяющие 6-битные выходные данные на 4-битные.
Алгоритм DES может функционировать в четырех режимах.
Были раскрыты несколько атак, требующих меньше вычислительных мощностей, нежели исчерпывающий поиск (дифференциальный и
Тройной DES
В 1992 году исследования показали, что DES можно использовать трижды для обеспечения более мощного шифрования. Так родилась концепция тройного алгоритма DES (
(рис 12.5) Блок-схема алгоритма шифрования TDESПримечание
Шифрование паролей
Стандартная схема шифрования паролей UNIX является разновидностью DES. Хотя функция шифрования пароля представляет собой в действительности
У каждого пользователя есть свой пароль. Алгоритм использует первые восемь символов пароля. Если пароль длиннее восьми символов, он усекается. Если пароль короче восьми символов, он дополняется. Пароль преобразуется в 56-битное число с помощью первых 7 бит каждого символа. После этого система выбирает 12.битное число на базе системного времени. Этот элемент называется "крупинкой соли" или расширением. Расширение и пароль используются в качестве входных данных в функции шифрования паролей (см. рис. 12.6).
(рис 12.6) Функция шифрования пароля UNIXРасширение используется для изменения одной из таблиц перестановки в алгоритме DES (перестановка E) любым из 4096 различных способов, в зависимости от числа единиц в двенадцати битах. Начальный
Конечные выходные данные преобразуются в 11 символов, а расширение преобразуется в 2 символа и помещается перед конечными данными выхода.
Главной уязвимостью этой системы является то, что она основана на выборе пароля. Так как большинство пользователей компьютеров используют пароли, состоящие из символов нижнего регистра, мы имеем общее число возможных комбинаций, равное 268. Это значительно больше, чем 255 возможных ключей DES, поэтому взлом такого шифра посредством "грубой силы" займет гораздо меньше времени и вычислительных ресурсов для раскрытия паролей в системе Unix.
Примечание
Большая часть систем Unix теперь обеспечивает возможность использования теневых
Расширенный стандарт шифрования Rijndael
Взамен DES
Так как этот стандарт был одобрен,
Другие алгоритмы шифрования с секретным ключом
В различных системах безопасности используются и другие алгоритмы шифрования с секретным ключом. Из них можно выделить следующие.
(рис 12.7) Схема работы цикла алгоритма RijndaelЛюбой из этих алгоритмов может использоваться в средствах обеспечения безопасности информации. Все эти алгоритмы, как правило, являются достаточно мощными для использования в общих целях.
Внимание!
Имейте в виду, что общий уровень
Шифрование с открытым ключом является более поздней технологией, чем шифрование с секретным ключом. Главным различием между этими двумя технологиями является число ключей, используемых при шифровании данных. В шифровании с секретным ключом для шифрования и дешифрования данных используется один и тот же ключ, в то время как в алгоритмах шифрования с открытым ключом используются два ключа. Один ключ используется при шифровании информации, другой - при дешифровке.
В чем заключается шифрование с открытым ключом?
На рисунке 12.8 показана базовая схема шифрования с открытым ключом (
На практике один ключ называют секретным, а другой - открытым. Секретный ключ содержится в тайне владельцем пары ключей. Открытый ключ передается вместе с информацией в открытом виде. Еще одной особенностью шифрования с открытым ключом является то, что если у абонента имеется один из ключей пары, другой ключ вычислить невозможно. Именно поэтому открытый ключ передается в открытом виде.
(рис 12.8) Шифрование с открытым ключомЕсли важно обеспечить конфиденциальность, шифрование выполняется с открытым ключом. Таким образом, расшифровать информацию может только владелец ключа, так как секретный ключ содержится в тайне самим владельцем. Если необходимо осуществлять аутентификацию, владелец ключевой пары шифрует данные с использованием секретного ключа. Корректно дешифровать информацию можно только с помощью правильного открытого ключа, передаваемого в открытом виде, и поэтому только владелец пары ключей (иными словами, хранитель секретного ключа) может отправлять информацию. Целостность информации при передаче защищается в обоих случаях.
Целостность информации после передачи может быть проверена, если исходная информация была зашифрована с помощью секретного ключа владельца.
Недостатком систем шифрования с открытым ключом является то, что они требуют больших вычислительных мощностей и, следовательно, являются намного менее быстродействующими, нежели системы с секретным ключом. Тем не менее, если скомбинировать шифрование с открытым и секретным ключами, получится гораздо более мощная система шифрования. Система шифрования с открытым ключом используется для обмена ключами и аутентификации абонентов по обе стороны соединения. Система шифрования с секретным ключом затем используется для шифрования остального трафика.
Алгоритм обмена ключами Диффи-Хеллмана
Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) разработали свою систему шифрования с открытым ключом в 1976 г. Система Диффи-Хеллмана (Diffie-Hellman) разрабатывалась для решения проблемы
P1 и P2 ) требуется установить между собой безопасное соединение, для которого необходимо согласовать ключ шифрования.P1 и P2 принимают к использованию два больших целых числа a и b, причем 1 < a < b.P1 выбирает случайное число i и вычисляет I = ai mod b. P1 передает I абоненту P2.P2 выбирает случайное число j и вычисляет J = aj mod b. P2 передает J абоненту P1.P1 вычисляет k1 = Ji mod b.P2 вычисляет k2 = Ij mod b.k1 = k2 = ai*j mod b, следовательно, k1 и k2 являются секретными ключами, предназначенными для использования при передаче других данных.Примечание
В приведенных выше уравнениях "mod" означает остаток. Например, 12 mod 10 = 2. Два - это остаток от деления 12 на 10.
Если злоумышленник прослушивает трафик, передаваемый по кабелю, то ему будут известны a, b, I и J. Тем не менее, остаются в секрете i и j. Уровень i при известном I = ai mod b. Эта задача называется задачей дискретного логарифмирования и считается очень сложной (т. е. с помощью современного вычислительного оборудования ее решить практически невозможно), если числа очень велики. Следовательно, a и b необходимо выбирать очень тщательно. Например, оба числа b и (b - 1)/2 должны быть простыми и иметь длину не менее 512 бит. Рекомендуемая длина чисел составляет 1024 бит.
Алгоритм обмена ключами Диффи-Хеллмана используется во многих системах безопасности для реализации обмена ключами, используемыми для дополнительного трафика. Недостатком системы Диффи-Хеллмана является то, что она может быть уязвима для P1 и P2, подключить его к каналу связи и осуществлять перехват всей передаваемой информации, то он сможет выполнять обмен данными с P2, выдавая себя за P1, и с P1 под видом P2. Таким образом, обмен ключами будет происходить между P1 и злоумышленником и между P2 и злоумышленником. Тем не менее, осуществление такой атаки требует большого объема ресурсов, и в реальном мире такие атаки происходят редко.
(рис 12.9) Атака посредником на алгоритм Диффи-ХеллманаАлгоритм RSA
В 1978 г. Рон Ривест, Ади Шамир и Лен Адельман разработали алгоритм шифрования Rivest-Shamir-Adleman (RSA) с открытым ключом. В отличие от
Базовый алгоритм, позволяющий обеспечить конфиденциальность данных, очень прост.
Шифрованный текст = (открытый текст)e mod n
Открытый текст = (шифрованный текст)d mod n
Секретный ключ = {d, n}
Открытый ключ = {e, n}
Безопасность обеспечивается сложностью вычисления d при наличии известных e и n. Подразумевается, что владелец пары ключей сохраняет секретный ключ в тайне, и что открытый ключ передается в открытом виде. Следовательно, если информация зашифрована с помощью открытого ключа, дешифровать ее может только владелец ключевой пары.
Также следует заметить, что алгоритм может быть обращен для обеспечения аутентификации отправителя. В этом случае алгоритм будет иметь следующий вид.
Шифрованный текст = (открытый текст)d mod n
Открытый текст = (шифрованный текст)e mod n
Секретный ключ = {d, n}
Открытый ключ = {e, n}
В целях аутентификации владелец шифрует информацию с использованием секретного ключа. Это может делать только владелец ключевой пары, так как секретный ключ содержится в тайне. Любое лицо может дешифровать информацию и удостовериться в том, что данные поступили именно от владельца ключевой пары.
Генерация ключей RSA
При генерировании ключей RSA необходимо соблюдать тщательность. Чтобы сгенерировать ключевую пару RSA, выполните следующие шаги:
p и q и содержите их в секрете.n = pq .ф(n) = (p - 1)(q - 1).e, чтобы оно было взаимно простым по отношению к ф(n).d, чтобы (d)(e) = 1 mod ф(n) и d < ф(n).Примечание
Число n должно содержать порядка 200 знаков или больше. Тогда оба числа p и q должны иметь длину, по крайней мере, 100 знаков. Ключи для использования на практике должны иметь длину 1024 бит. В случае с секретной информацией рекомендуется использовать ключи длиной 2048 бит и более.
Реальный пример работы RSA
Имейте в виду, что мною выбраны числа, которые относительно легко проверить при выполнении данного примера. В реальном мире в
p = 11 и q = 13.n = pq . Имеем n = 11 * 13 = 143.ф(n) = (p - 1)(q - 1) = (11 - 1)(13 - 1) = 10 * 12 = 120.ф(n). Здесь было выбрано значение e = 7.d, чтобы (d)(e) = 1 mod ф(n). Следовательно, (d)(7) = 1 mod 120 ; d должно также быть меньше 120. Находим, что d = 103. (103 умножаем на 7 и получается 721. 721 делим на 120 и получаем 6 с остатком 1.)Для выполнения непосредственно шифрования и дешифрования используем исходные формулы.
Шифрованный текст = (открытый текст)e mod n Открытый текст = (шифрованный текст)d mod n
Предположим, что нужно отправить сообщение "9". С помощью формулы шифрования получаем следующее:
Шифрованный текст = (9)7 mod 143 = 48.
При получении зашифрованной информации она подвергается обработке алгоритмом дешифрования:
Открытый текст = (48)103 mod 143 = 9.
Другие алгоритмы с открытым ключом
Существуют некоторые алгоритмы с открытым ключом, имеющие такие же свойства, как RSA и
Алгоритм Эль-Гамаля
Эль-Гамаль (Taher Elgamal) разработал вариант системы Диффи-Хеллмана. Он усовершенствовал
Алгоритм цифровой подписи
Алгоритм
Шифрование с использованием эллиптических кривых
Вопросы для самопроверки
Цифровые подписи - это не цифровые изображения рукописных подписей. Цифровые подписи - это форма шифрования, обеспечивающая аутентификацию. Популярность цифровых подписей постоянно растет, и они были разрекламированы как способ перехода на полностью электронную информационную среду. Президент США Билл Клинтон даже издал закон об использовании цифровых подписей как легальных подписей. Но даже несмотря на это, цифровые подписи вводят многих людей в недоумение.
Что такое цифровая подпись?
Как уже говорилось, цифровые подписи - это не изображения рукописных автографов, поставленных на бумажном документе. Цифровая подпись - это метод аутентификации электронной информации посредством шифрования.
Как говорилось в параграфе, посвященном шифрованию с открытым ключом, если информация шифруется с использованием секретного ключа, принадлежащего определенному лицу, то только это лицо может осуществлять дешифрование информации. Следовательно, мы знаем, что информация поступила от этого лица, если дешифрование информации проведено успешно с использованием ключа, принадлежащего этому лицу. Если дешифрование проведено успешно, мы также знаем, что в процессе передачи она не была изменена, поэтому также обеспечивается целостность данных.
С помощью цифровой подписи можно еще больше повысить уровень этой защиты и обезопасить информацию от изменения после получения и дешифрования. На рис. 12.10 показано, каким образом может быть выполнена эта задача. Во-первых, информация обрабатывается с помощью анализа сообщений или
Когда информация принимается получателем, он может обработать ее той же самой
Безопасность и полезность цифровых подписей зависит от двух важнейших элементов:
Примечание
Если пользователь не защищает свой секретный ключ, то он не может быть уверен в том, что этот ключ используется исключительно им. Если какое-либо лицо также использует секретный ключ этого пользователя, нет никаких гарантий того, что рассматриваемые данные подписаны только действительным пользователем.
(рис 12.10) Функционирование цифровых подписейБезопасные хеш-функции
Для использования цифровых подписей необходимы безопасные
Второму условию не так-то просто удовлетворить. Рассматриваемые контрольные суммы должны быть меньше по размеру, нежели информация, для обеспечения простоты подписывания, хранения и передачи информации. Если это условие удовлетворяется, то одной и той же контрольной сумме должно соответствовать большое число различных фрагментов информации. Безопасность функций обеспечивается способом связи всех битов в исходных данных со всеми битами контрольной суммы. Таким образом, если один бит информации изменяется, то также изменяется большое количество битов в контрольной сумме.
Безопасные
Управление ключами является самой неприятной задачей при использовании любой системы шифрования. Ключи представляют собой самые важные объекты во всей системе, так как если злоумышленник получает ключ, у него появляется возможность расшифровывать все данные, зашифрованные с помощью этого ключа. В некоторых случаях также удается получить последующие ключи. Управление ключами заключается не только в защите их при использовании. Данная задача предусматривает создание надежных ключей,
Ключи и инфраструктура, необходимая для управления ими соответствующим образом, могут значительно повлиять на возможность использования организацией системы шифрования. При рассмотрении в деталях каждого из моментов, связанных с шифрованием, необходимо иметь в виду, что определенные здесь моменты должны тысячекратно преумножаться, чтобы соответствовать требованиям настоящей инфраструктуры шифрования.
Создание ключей
Очевидно, что ключи должны создаваться с особой тщательностью. Некоторые ключи обеспечивают недостаточную производительность при работе с
Большая часть систем шифрования обеспечивают некоторый метод генерирования ключей. Иногда пользователям позволяется выбирать ключ посредством выбора пароля. В данном случае полезно проинструктировать пользователей по поводу использования надежных паролей, содержащих числа и специальные символы. В противном случае общее пространство ключей значительно уменьшается (это позволяет быстрее проводить поиск при атаке "грубой силой").
Некоторые ключи выбираются из случайных чисел. К сожалению, существует очень немного генераторов истинно случайных чисел. Большинство из них генерируют
Также может быть необходимым выбрать правильную длину ключа. В некоторых алгоритмах используются ключи фиксированной длины (например, в алгоритме DES используется ключ длиной 56 бит). Другие алгоритмы могут использовать ключи переменной длины. Чем длиннее ключ, тем выше уровень обеспечиваемой безопасности. Например, 1024-битный ключ RSA более надежен, чем 512.битный ключ RSA. Тем не менее, таким образом нельзя сопоставлять надежность ключа RSA с надежностью ключа DES. В таблице 12.2 представлены относительные степени надежности ключей для различных алгоритмов шифрования.
Чтобы получить представление о том, насколько надежны ключи на практике, вспомните машину
Внимание!
Информация о длине безопасных ключей, представленная в этой лекции, является актуальной на момент написания этой книги. С течением времени будут производиться все более мощные компьютеры и открываться новые математические возможности, вследствие чего длины ключей также будут меняться.
Распространение ключей
После
| Шифрование с секретным ключом(DES, | Шифрование с открытым ключом(RSA, Диффи-Хеллман) | Шифрование посредством |
|---|---|---|
| 40 бит | - | - |
| 56 бит | 400 бит | - |
| 64 бит | 512 бит | - |
| 80 бит | 768 бит | - |
| 90 бит | 1024 бит | 160 бит |
| 120 бит | 2048 бит | 210 бит |
| 128 бит | 2304 бит | 256 бит |
Такой подход может быть полезным, если удаленные сайты расположены в небольшом удалении. Но что если удаленные сайты расположены на других континентах? Проблема приобретает намного более серьезный характер.
Тем не менее, существует частичное решение этой проблемы, заключающееся в использовании алгоритма обмена ключами Диффи-Хеллмана для распространения множества
Любой ключ, используемый в течение продолжительного периода времени, требует обеспечения основательных мер предосторожности. Нельзя использовать алгоритм обмена ключами Диффи-Хеллмана для передачи пар ключей RSA. В случае с парами ключей RSA один ключ должен содержаться в секрете, а другой может находиться в открытом состоянии. Открытый ключ должен публиковаться так, чтобы предотвратить его подмену (см. раздел ниже "Сертификация ключей"). Если пары ключей генерируются центральным бюро сертификатов, секретный ключ должен безопасно передаваться владельцу ключевой пары. Если пара ключей генерируется владельцем, открытый ключ должен передаваться в центральное бюро сертификатов с обеспечением мер безопасности.
Примечание
Если ключевые пары генерируются центральным бюро сертификатов, то возможность использования секретного ключа для аутентификации находится под вопросом, так как центральному бюро сертификатов ключ уже может быть известен. При создании и распространении секретных ключей необходимо соблюдать особую внимательность.
Сертификация ключей
Если ключи некоторым образом передаются в удаленное место расположения, они должны проверяться при получении на предмет того, не подверглись ли они вмешательству в процессе передачи. Это можно делать вручную либо использовать некоторую форму цифровой подписи.
Открытые ключи предназначены для публикации или передачи другим пользователям и должны сертифицироваться как принадлежащие владельцу ключевой пары. Сертификация осуществляется с помощью центрального бюро сертификатов (CA). В данном случае CA предоставляет цифровую подпись на открытом ключе, и благодаря этому CA с доверием воспринимает тот факт, что открытый ключ принадлежит владельцу ключевой пары (см. рис. 12.11).
Внимание!
Без правильной сертификации ключа и его владельца злоумышленник может внедрить собственные ключи и, таким образом, преодолеть защиту всей передаваемой и аутентифицируемой информации.
(рис 12.11) Сертификация открытого ключа в бюро сертификатовЗащита ключей
Открытые ключи открытой ключевой пары не требуют защиты конфиденциальности. Они лишь требуют обеспечения защиты целостности посредством использования сертификатов. Секретный ключ открытой ключевой пары должен все время сохраняться в тайне.
Если злоумышленник получает копию секретного ключа, у него появляется возможность чтения всего
Необходимо обеспечивать защиту всех ключей системы, использующей секретные ключи. Если ключ содержится в файле, этот файл должен быть защищен в любом месте, где бы он не находился (включая архивные носители). Если ключ находится в памяти, необходимо предпринимать меры по защите пространства памяти от исследования пользователями или процессами. Аналогично, в случае с
Аннулирование ключей
Сроки действия ключей ограничены. Сеансовый ключ может существовать только в данном конкретном сеансе.
Тем не менее, ключи могут быть утеряны и раскрыты. При этом владелец ключа должен проинформировать других пользователей о том, что ключ больше не является действительным и не подлежит использованию. В системе шифрования с секретным ключом при раскрытии ключа (если пользователи системы знают об этом) пользователи могут сообщить друг другу об этом и начать использовать новый ключ.
В системе шифрования с открытым ключом дела обстоят несколько иначе. Если пара ключей несанкционированно раскрывается и аннулируется, не существует определенного способа информирования всех потенциальных пользователей открытого ключа о том, что ключ недействителен. В некоторых случаях открытые ключи публикуются на серверах ключей. Лицо, желающее связаться с владельцем ключа, может зайти на сервер для получения сертифицированного открытого ключа. Если ключ раскрыт и аннулирован, каким образом об этом узнает стороннее лицо? Решением этой проблемы является периодическое посещение сервера ключей для выяснения того, был ли он отменен; владелец ключа должен размещать информацию об аннулировании ключа на всех потенциальных серверах ключей. Серверы ключей должны содержать данную информацию об отмене ключей до тех пор, пока не истечет срок действия оригинального сертификата.
Концепция доверия является основополагающим принципом информационной безопасности и шифрования в частности. Для работы шифрования необходима уверенность в том, что ключ шифра не будет раскрыт, и что используемый алгоритм шифрования является достаточно мощным. В случае с аутентификацией и цифровыми подписями необходима также уверенность в том, что открытый ключ на самом деле принадлежит тому, кто его использует.
Возможно, самой серьезной проблемой, связанной с доверием, является его установление и поддержание. Для обеспечения доверия в среде с открытым ключом используются две основные схемы - иерархия и сеть. У обеих схем есть как преимущества, так и недостатки.
Иерархия
Иерархическая
(рис 12.12) Иерархическая модель доверияМы рассмотрели довольно простой случай. Если пользователю User1 нужно проверить информацию от пользователя User3, все несколько усложняется. CA1 не знает о пользователе User3, в отличие от CA2. Тем не менее, пользователь User1 не доверяет CA2, так как это бюро сертификатов напрямую не принадлежит цепочке пользователя User1. Следующий уровень вверх по цепочке - CA4. Пользователь User1 может верифицировать информацию от пользователя User3 посредством проверки с помощью CA4 следующим образом.
Как видите, все довольно быстро усложняется. Представьте себе, какой объем операций по верификации необходимо было бы производить, если бы пользователю User1 нужно было верифицировать данные, поступившие от пользователя User4. Две цепочки не пересекаются вплоть до CA9! Так реализована сертификация в X.509. Иерархия устанавливается таким образом, чтобы между любыми двумя нижними объектами могла быть создана цепочка сертификатов.
С теоретической точки зрения все выглядит неплохо. Однако на практике все иначе. Одной из причин, по которой данная технология не функционировала, заключается в том, что не существовало реальных CA корневого уровня. CA корневого уровня - это наивысшая точка в иерархии. В одно время было принято считать, что в каждой стране должно быть свое бюро сертификатов корневого уровня. Также предполагалось, что компании, выпускающие кредитные карты, должны стать корневыми CA, или что каждая организация должна иметь свое собственное CA. На практике почти ничего не было реализовано. Возникал еще один вопрос, который представлял собой потенциальную проблему: сколько CA должны сертифицировать каждого конечного пользователя? Если конечный пользователь живет в стране А, обладает кредитной картой компании B и работает в организации C, должны ли все три объекта подписывать один и тот же сертификат?
Установка CA
В некоторых организациях считается, что создание внутреннего CA (и соответствующей инфраструктуры с открытым ключом) необходимо в их деловой модели. Если это действительно так, существует несколько вопросов, которые необходимо решить, прежде чем устанавливать бюро сертификатов.
Вопрос к эксперту
Вопрос. Существуют ли CA общего пользования?
) и Thawte (http://www.thawte.com/) являются наиболее яркими примерами таких CA. Организация может создать пару открытого ключа, например для веб-сервера, и отправить открытый ключ в CA. CA создает сертификат и предоставляет его организации. CA получает прибыль от предоставления этой услуги. Использование таких сертификатов можно наблюдать при посещении многих защищенных сайтов в интернете. Так как открытые ключи CA известны большей части веб-браузеров, сертификат веб-сайта верифицируется с помощью открытого ключа CA.
Примечание
Системы, используемые в CA, и сертификаты CA (в особенности секретные ключи CA) должны быть хорошо защищены, так как CA является "сердцем" системы. Меры, предпринимаемые для защиты секретного ключа CA, как правило, требуют, чтобы разблокировку секретного ключа производили два человека.
Как видно из списка, приведенного выше, при разработке CA возникает целый ряд вопросов. Если организация достаточно крупная или имеет большое число объектов нижних уровней (т. е. пользователей), администрирование сертификатов пользователей будет отнюдь не простой задачей. Перед подписыванием сертификата нужно будет проверить личность каждого пользователя. Срок действия сертификатов будет периодически истекать, и, следовательно, будет возникать потребность в издании новых сертификатов. Некоторые сертификаты придется аннулировать.
Аннулирование сертификатов
Если организация использует только одно CA, все не так сложно, однако при этом CA должно быть постоянно доступным. Если иерархия CA имеет большие размеры (как на рис. 12.12), то проблема приобретает комплексный характер. Пользователь User1 может сообщить CA о том, что его сертификат аннулирован, и CA1 может обнародовать эту информацию, но как эта информация дойдет до пользователя User4 от CA6?
Сеть
Сеть с доверием представляет собой альтернативную
В данной модели не существует центрального бюро сертификатов. Если пользователю User1 требуется верифицировать информацию, поступающую от пользователя User2, он запрашивает
Теперь рассмотрим ситуацию, в которой User1 получает информацию от User3. Пользователь User3 не известен пользователю User1, но у пользователя User3 есть сертификат, подписанный пользователем User2. Таким образом, рассматриваемая модель распространяется на всю компьютерную сеть. Единственным решением, которое должно приниматься в процессе работы, является число переходов, которому доверяет пользователь. Как правило, это число равно 3 или 4. Кроме того, может возникнуть ситуация, в которой для установления доверия другому пользователю есть два пути. Например, User2 может использовать два пути установления доверия с пользователем User5: один через пользователя User3 и другой через пользователя User4. Так как оба пользователя User3 и User4 сертифицируют пользователя User5, пользователь User2 может быть уверен в сертификате пользователя User5.
(рис 12.13) Сеть модели доверияГлавной проблемой, связанной с данной моделью доверия, является недостаток масштабируемости. Так как модель сети состоит из двусторонних взаимоотношений, каждый пользователь должен иметь некоторое число таких взаимосвязей, чтобы пользоваться в сети каким-либо доверием. На практике такие взаимосвязи могут отсутствовать, так как большинство пользователей работают с небольшим числом связей и редко выходят на уровень трех или четырех переходов.
Большим преимуществом модели "сеть" является то, что реализация инфраструктуры не требует больших затрат. Каждый пользователь ответственен за свой собственный сертификат и за верификацию других сертификатов. Организация может создать центральное
Этот проект предназначен для того, чтобы продемонстрировать использование шифрования в информационной системе для обеспечения аутентификации, конфиденциальности и целостности. В данном проекте подразумевается применение как систем шифрования с секретным ключом (AES), так и систем с открытым ключом (RSA или Диффи-Хеллмана).
В организации, на которую вы работаете, требуется принимать транзакции от партнера. К сожалению, используемая внутри организации система не поддерживает работу с коммерческими VPN, и поэтому в организации создается система шифрования в своем собственном специально разработанном приложении. Вам поручено внести предложения по поводу того, как должна работать система шифрования. В своем текущем состоянии система транзакций принимает TCP-соединение от партнера организации, оценивает поступающие данные и делает соответствующие записи в базе данных. После этого сервер передает подтверждение в систему партнера через то же самое соединение. Информация при передаче должна сохраняться в секрете, а также защищаться от несанкционированного изменения. Сервер должен осуществлять аутентификацию инициатора транзакции, так как только одна система в сети партнера авторизована для инициирования транзакций.
Шаг за шагом
Выводы
Выбор типа системы шифрования - довольно простая задача. Имейте в виду, что аутентификация может обеспечиваться шифрованием обоих типов, однако при использовании шифрования с секретным ключом имеет место ряд ограничений. Значительно усложнить систему могут аспекты, связанные с управлением ключами. Помните, что здесь речь шла об одной системе, и не требовалась разработка расширяемой и масштабируемой системы.
Не стоит опасаться наложения ограничений на другие аспекты системы. Помните, что шифрование - не панацея, и поэтому его использование подразумевает соответствие этим требованиям при решении некоторых проблем безопасности.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.