1      Угрозы информационным системам. Факторы, приводящие к информационным потерям

1.1      Введение

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

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

Угрозы можно классифицировать по разным признакам: по воздействию на основные характеристики ИС, по природе возникновения, по ориентации.

Требования к ИС:

Готовность — способность информационной системы обеспечить законным пользователям условия доступа к ресурсам в соответствии принятым режимом работы.

Надежность —  способность системы обеспечивать целостность и сохранность информации ее законных пользователей.

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

Угрозы информационной системе можно рассматривать с позиций их воздействия на эти характеристики ИС.  То есть бывают следующие угрозы для информационных систем, соответствующие нарушениям вышеуказанных требований к ИС: «отказ в обслуживании», «нарушение целостности (модификация)», «нарушение конфиденциальности».

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

Кроме того, угрозы могут быть классифицированы по ориентации: угрозы персоналу, материальным и финансовым ресурсам и информации, как составным элементам информационной системы.

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

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

К угрозам  в более широком смысле относятся:

— похищения и угрозы похищения сотрудников, персонала, членов их семей и близких родственников,

— убийства, сопровождаемые насилием, издевательствами и пытками;

— психологический террор, угрозы, запугивание, шантаж, вымогательство;

— грабежи с целью завладения денежными средствами, ценностями и документами.

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

— взрывов;

— обстрелов из огнестрельного оружия, сигнальных ракетниц, ручных гранатометов;

— минирования, в том числе с применением дистанционного управления;

— поджогов, бросков канистр и иных емкостей с легко воспламеняющейся жидкостью;

— нападения, вторжения, захваты, пикетирования, блокирования;

— акты вандализма, повреждения входных дверей, решеток, ограждений, витрин, мебели, а также транспортных средств личных и служебных.

Цель подобных акций:

— откровенный террор в отношении коммерческого предприятия;

— нанесение серьезного морального и материального ущерба;

— срыв на длительное время нормального функционирования;

— вымогательство значительных сумм денег или каких-либо льгот (кредиты, отсрочка платежей и т. п.) перед лицом террористической угрозы.

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

1.2      Осуществление угроз информационным ресурсам

Осуществление угроз информационным ресурсам может быть произведено:

·        методами, использующими психологические особенности людей;

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

·        путем подкупа лиц, непосредственно работающих на предприятии или структурах, непосредственно связанных с его деятельностью;

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

·        путем подслушивания конфиденциальных переговоров, ведущихся в служебных помещениях, служебном и личном автотранспорте, на квартирах и дачах;

·        через переговорные процессы с иностранными или отечественными фирмами, используя неосторожное обращение с информацией;

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

1.3      Факторы, приводящие к информационным потерям

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

·        Несчастные случаи, вызывают частичный или полный вывод из строя оборудования или информационного ресурса.

Причинами этого могут быть:

— пожары, взрывы, аварии;

— удары, столкновения, падения;

— воздействия агрессивных химических или физических сред;

— поломка элементов машин различного характера: механического, электрического, электронного и электромагнитного;

— последствия природных явлений (наводнения, бури, молнии, град, оползни, землетрясения и т. д.).

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

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

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

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

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

При диалоговом режиме дополнительно прибавляются ошибки восприятия, чтения, интерпретации содержания и соблюдения правил.

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

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

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

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

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

Нередко все начинается случайно, часто с небольшого правонарушения: обмана, воровства только для того, чтобы установить, что это не слишком трудное дело и в больших масштабах. Мошенничество часто совершается в корыстных целях, по договоренности с третьими лицами (сотрудничество).

·        Болтливость и разглашение. Эти действия, последствия которых не поддаются учету, относятся к числу трудно контролируемых и могут находиться в рамках от простого, наивного хвастовства до промышленного шпионажа в коммерческой деятельности.

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

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

1.4      Виды угроз информации

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

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

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

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

1.5      Источники возникновения угроз

Теперь перечислим угрозы информации, сгруппировав их по источнику возникновения:

·        вход в систему – неправильная идентификация и аутентификация

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

·        процессор –   неисправность защитных цепей, распространение опасного программного обеспечения, сбой в защитных функциях программы, неправильное управление доступом

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

·        накопители – кража, незаконное копирование, несанкционированный доступ, разрушение или удаление.

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

 

2      Криптография.  Симметричные алгоритмы шифрования.

2.1      Введение

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

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

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

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

Проблемой защиты информации путем ее преобразования занимается криптология (kryptos - тайный, logos - наука).

Криптология разделяется на два направления:

1.    криптографию,

2.    криптоанализ.

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

Современная криптография включает в себя четыре крупных раздела:

·                                                                                                                                                                                                                                 Симметричные криптосистемы.

·                                                                                                                                                                                                                                 Криптосистемы с открытым ключом.

·                                                                                                                                                                                                                                 Системы электронной подписи.

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

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

2.2      Терминология

Итак, криптография дает возможность преобразовать информацию таким образом, что ее прочтение (восстановление) возможно только при знании ключа.

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

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

В качестве примеров алфавитов, используемых в современных ИС можно привести следующие:

·                                                                                                                                                                                                                                 алфавит Z33 - 32 буквы русского алфавита и пробел;

·                                                                                                                                                                                                                                 алфавит Z256 - символы, входящие в стандартные коды ASCII и КОИ-8;

·                                                                                                                                                                                                                                 бинарный алфавит - Z2 = {0,1};

·                                                                                                                                                                                                                                 восьмеричный алфавит

·                                                                                                                                                                                                                                 шестнадцатеричный алфавит.

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

Дешифрование - обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.

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

Криптосистемы подразделяются на симметричные и асимметричные (другие названия:  несимметричные или системы с открытым ключом).

В симметричных криптосистемах для шифрования, и для дешифрования используется один и тот же ключ.

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

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

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

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

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

·                                                                                                                                                                                                                                 количество всех возможных ключей (не слабых);

·                                                                                                                                                                                                                                 среднее время, необходимое для криптоанализа.

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

Эффективность шифрования с целью защиты информации зависит от сохранения тайны ключа и криптостойкости шифра.

Шифром называют пару: алгоритм и ключ.

Метод «грубой силы» предполагает перебор всех возможных ключей.

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

2.3      Симметричные криптосистемы

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

2.4      Алгоритм Цезаря

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

Самый древний алгоритм, предложенный Юлием Цезарем. В настоящее время не может использоваться, так как его криптостойкость чрезвычайно мала.

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

Пример. Пусть дан алфавит «аяздкв бмл». Шаг равен 5. Исходный текст «задавака». Тогда результат шифрования: «бвмвавлв».

2.5      Алгоритм замены полиалфавитный

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

Пример. Пусть дан первый алфавит «аяздкв бмл», второй «яозеадивлкн» и третий «аколд кмзв». Пусть алфавиты используются по очереди. Шаг равен 5. Исходный текст «задавака». Тогда результат шифрования: «бквво лк».

2.6      Алгоритм замены с большим ключом

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

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

Но, к сожалению, этот способ неудобен для практического применения. Основная его проблема состоит в том, что для расшифрования требуется заранее некоторым секретным способом передать ключ. И чем больше ключ, тем проблематичнее передача. Можно, конечно, передать не сам ключ, а алгоритм его формирования. Но тогда этот алгоритм должен быть секретным.

Так, например, криптокарта Forteza, используемая агентами национальной безопасности США, базируется на том, что и отправитель и получатель одновременно генерируют одинаковый ключ, пользуясь неким аппаратным средством.

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

Пример 1. Пусть дан алфавит «аяздкв бмл». Ключ, то есть множество шагов: 1, 5, 3, 7, 2, 6, 4, 1, 7, 3, 3. Исходный текст «задавака». Тогда результат шифрования: «дв бб мя».

Пример 2. Пусть дан алфавит «аяздкв бмл». Задан ключ, то есть алгоритм его вычисления: для шифрования первого символа берется шаг, равный 2, а для каждого последующего – шаг, равный остатку от деления на 10 кода предыдущего исходного символа (номера в таблице ASCII). Исходный текст «задавака». Коды «з» - 231, «а» - 224, «д» - 228, «в» - 226, «к» - 234. Тогда результат шифрования: «ккякякмк». Т.к. здесь результат шифрования зависим от исходного текста, то такой алгоритм можно отнести к блоковым.

2.7      Перестановки.

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

Ключом данного алгоритма является множество пар переставляемых символом. Часто его задают в виде таблицы перемешивания.

Пример. Правило перестановок зададим следующее: первый символ исходного текста меняется местами с символом, номер которого задан в таблице первым. Второй символ уже не совсем исходного текста – с символом, номер которого задан в таблице вторым и т.д. Пусть задана таблица: 4, 3, 2. Если таблица заканчивается, начинается отсчет символов в шифруемом тексте с 1. Исходный текст «задавака». Покажем результат шифрования по шагам: 1 буква меняется местами с 4 «аадзвака», 2 с 3 «адазвака», 3 со 2 «аадзвака», 4 с 4 «аадзвака», 5 с 3 «аавздака», 6 со 2 «аавздака», 7 с 4 «аавкдаза», 8 с 3 «ааакдазв». Расшифрование проводится в обратном порядке.

2.8      Гаммирование.

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

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

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

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

Метод гаммирования становится бессильным, если злоумышленнику становится известен фрагмент исходного текста и соответствующая ему шифрограмма. Простым вычитанием по модулю получается отрезок гаммы. Это уже достаточно много! Кроме того, если гамма получена в результате работы генератора псевдослучайных чисел (то есть программно), то знание фрагмента псевдослучайной последовательности может оказаться (почти всегда!) достаточным для восстановления всей последовательности.  Фрагмент текста не обязательно должен быть украден. Злоумышленники может сделать предположение о содержании исходного текста. Так, если большинство посылаемых сообщений начинается со слов “СОВ. СЕКРЕТНО”, то криптоанализ всего текста значительно облегчается, т.к. 13 символов гаммы можно определить. Это следует учитывать при создании реальных систем информационной безопасности.

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

Рассмотрим пример гаммирования в общем виде. Пусть дан алфавит «абюя 123».  В этом алфавите символы пронумерованы от 0 до 7. Длина алфавита равна 8. Пусть у нас есть сообщение «а13» и гамма «ю2». Зашифруем:

а13        -> юяб

ю2ю

3      Криптография.  Несимметричные алгоритмы шифрования.

3.1      Системы с открытым ключом

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

3.2      Алгоритм Диффи-Хеллмана – протокол генерации секретного ключа.

Диффи и Хелман предложили для создания криптографических систем с открытым ключом функцию дискретного возведения в степень.

Необратимость преобразования в этом случае обеспечивается тем, что достаточно легко вычислить показательную функцию в конечном поле Галуа состоящим из p элементов. (p - либо простое число, либо простое в любой степени, конечное поле Галуа – числа от 0 до р-1). Вычисление же логарифмов в таких полях - значительно более трудоемкая операция. Операция «остаток от деления» позволяет оставаться в заданном диапазоне чисел, то есть в поле Галуа.

Если y=ax,, 1<x<p-1, где  - фиксированный элемент поля GF(p), то x=loga y над GF(p). Имея x, легко вычислить y. Для этого потребуется  log2(x) операций умножения.  Все операции выполняются по модулю р.

Обратная задача вычисления x из y будет достаточно сложной. Если p выбрано достаточно правильно (простое число или число, равное произведению двух простых чисел), то извлечение логарифма потребует количества операций:

L(p) = exp { (ln ln ln p)0.5 }

Для обмена информацией первый пользователь выбирает случайное число x1, равновероятное из целых 1...p-1. Это число он держит в секрете, а другому пользователю посылает число

y1 = ax mod p

Аналогично поступает и второй пользователь, генерируя x2 и вычислив y2, отправляя его первому пользователю. В результате этого они могут  вычислять k12 = ax1x2 mod p.

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

В отличие от алгоритма RSA, данный алгоритм не позволяет шифровать собственно информацию.

Не зная x1  и x2, злоумышленник может попытаться вычислить k12, зная только перехваченные y1  и y2. Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный и открытый вопрос в системах с открытым ключом. Простого решения до настоящего времени не найдено.

Алгоритм Диффи-Хелмана не имеет гарантированной нижней оценки трудоемкости раскрытия ключа.

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

Пример: пусть р=31, а=3. Первый пользователь пусть задумал число 7. Он вычисляет 3^7 mod 31=17 и посылает результат второму пользователю. Второй пользователь, в свою очередь, задумывает число 13, вычисляет 3^13 mod 31=24, отправляет результат первому пользователю. Сам же на основании полученного числа 17 вычисляет 17^13 mod 31=3. Первый же пользователь, получив число 24, вычисляет 24^7 mod 31 =3. Как видите, они оба сформировали один и тот же ключ: 3.

3.3      Описание системы с открытым ключом

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

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

Криптографические системы с открытым ключом используют так называемые  необратимые  или односторонние функции, которые обладают следующим свойством: при заданном значении x относительно просто вычислить значение f(x), однако если y=f(x), то нет простого пути для вычисления значения x.

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

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

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

1. Преобразование исходного текста должно быть необратимым (вычислительно невозможным) и исключать его восстановление на основе открытого ключа.

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

Алгоритмы шифрования с открытым ключом получили широкое распространение в современных информационных системах. Так, алгоритм RSA стал мировым стандартом де-факто для открытых систем.

Вообще же все предлагаемые сегодня криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований:

Разложение больших чисел на простые множители.

Вычисление логарифма в конечном поле.

Вычисление корней алгебраических уравнений.

Здесь же  следует отметить, что алгоритмы криптосистемы с открытым ключом (СОК) можно использовать в трех назначениях.

1. Как самостоятельные средства защиты передаваемых и хранимых данных, т.е. для шифрования.

2. Как средства для распределения ключей. Алгоритмы СОК более трудоемки, чем традиционные криптосистемы. Поэтому часто на практике рационально с помощью систем с открытым ключом распределять ключи, объем которых как информации незначителен. А потом с помощью обычных алгоритмов осуществлять обмен большими информационными потоками (как это сделано в файловой системе EFS).

3. Средства аутентификации пользователей и подтверждения целостности документов. Об этом будет рассказано в главе «Электронная подпись».

3.4      Алгоритм RSA

Несмотря на довольно большое число различных СОК, наиболее популярна - криптосистема RSA, разработанная в 1977 году и получившая название в честь ее создателей: Рона Ривеста, Ади Шамира и Леонарда Эйдельмана.

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

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

В настоящее время алгоритм RSA используется во многих стандартах, среди которых SSL, S-HTTP, S-MIME, S/WAN, STT.

Рассмотрим математические результаты, положенные в основу этого алгоритма.

Теорема 1. (Малая теорема Ферма.)

Если р - простое число, то     xp-1 = 1 (mod p)                              (1)

для любого х, простого относительно р, и   xp = х (mod p)  (2)   для любого х.

Определение. Функцией Эйлера j(n) называется число положительных целых, меньших n и простых относительно n.

N

2

3

4

5

6

7

8

9

10

11

12

j(n)

1

2

2

3

2

6

4

6

4

10

4

 

Теорема 2. Если n=pq, (p и q - отличные друг от друга простые числа), то

j(n)=(p-1)(q-1).

Теорема 3. Если n=pq, (p и q - отличные друг от друга простые числа) и х - простое относительно  р и q, то

xj(n) = 1 (mod n).

Следствие. Если n=pq, (p и q - отличные друг от друга простые числа) и е простое относительно j(n), то отображение  Еe,n: x®xe (mod n) является взаимно однозначным на Zn.

Очевиден и тот факт, что если е - простое относительно j(n), то существует целое d, такое, что   ed = 1 (mod j(n)) (3)

На этих математических фактах и основан популярный алгоритм RSA.

Итак, в реальных системах алгоритм RSA реализуется следующим образом: каждый пользователь выбирает два больших простых числа, и в соответствии с описанным выше алгоритмом выбирает два простых числа e и d. Как результат умножения первых двух чисел (p и q) устанавливается n.

{e,n} образует открытый ключ, а {d,n} - закрытый (хотя можно взять и наоборот).

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

3.5      Практическая реализация RSA

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

Важная проблема практической реализации - генерация больших простых чисел. Решение задачи «в лоб» состоит в генерации случайного нечетного большого числа n (нечетного) и проверка его делимости на множители от 3 вплоть до n0.5. В случае неуспеха следует взять n+2 и так далее. В теории чисел показано, что вероятность того, что число порядка n будет простым составляет 1/ln n.

В принципе в качестве p и q можно использовать «почти» простые числа, то есть числа для которых вероятность того, что они простые, стремится к 1. Но в случае, если использовано составное число, а не простое, криптостойкость RSA падает. Имеются неплохие алгоритмы, которые позволяют генерировать «почти» простые числа с уровнем доверия 2100.

Другая проблема - ключи какой длины следует использовать?

Для практической реализации алгоритмов RSA полезно знать оценки трудоемкости разложения простых чисел различной длины. В конце 1995 года удалось практически реализовать раскрытие шифра RSA для 500-значного ключа. Для этого с помощью сети Интернет было задействовано 1600 компьютеров.

Авторы RSA рекомендуют использовать следующие размеры n:

·      768 бит - для частных лиц;

·      1024 бит - для коммерческой информации;

·      2048 бит - для особо секретной информации.

Эта рекомендация была получена уже очень давно и требует корректировки в соответствии с ростом производительности компьютеров. Третий немаловажный аспект реализации RSA - вычислительный. Ведь приходится использовать аппарат арифметики больших чисел.

Криптографический пакет BSAFE 3.0  (RSA D.S.) на компьютере Pentium-90 осуществляет шифрование со скоростью 21.6 Кбит/c для 512-битного ключа и со скоростью 7.4 Кбит/c для 1024 битного. Самая «быстрая» аппаратная реализация обеспечивает скорости в 60 раз больше.

По сравнению с тем же алгоритмом DES, RSA требует в тысячи и сотни тысяч раз большее время.

3.6      Пример 1 RSA.

Рассмотрим небольшой пример, иллюстрирующий применение алгоритма RSA. Зашифруем сообщение “САВ”. Для простоты будем использовать маленькие числа (на практике применяются гораздо большие).

1.  Выберем p=3 и q=11.

2.  Определим n=3*11=33. Длина n тесно связана с размером алфавита. То есть в нашем алфавите может быть не более 33 символов.

3.  Найдем (p-1)(q-1)=20. Следовательно, в качестве d, взаимно простое  с 20, например, d=3.

4.  Выберем число е. В качестве такого числа может быть взято любое число, для которого удовлетворяется соотношение (е*3) (mod 20) = 1, например 7.

5.  Представим шифруемое сообщение как последовательность целых чисел с помощью отображения: А®1, В®2, С®3 (номера символов в алфавите). Тогда сообщение принимает вид (3,1,2). Зашифруем сообщение с помощью ключа {7,33}.

ШТ1 = (37) (mod 33) = 2187 (mod 33) = 9,

ШТ2 = (17) (mod 33) = 1 (mod 33) = 1,

ШТ3 = (27) (mod 33) = 128 (mod 33) = 29.

1.  Расшифруем полученное зашифрованное сообщение (9,1,29) на основе закрытого ключа {3,33}:

ИТ1 = (93) (mod 33) = 729 (mod 33) = 3,

ИТ2= (13) (mod 33) = 1 (mod 33) = 1,

ИТ3 = (293) (mod 33) = 24389 (mod 33) = 2.

3.7      Пример 2 RSA.

Пояснение:n - это количество возможных чисел. В рассмотренном ранее примере введен алфавит из 33 символов. Каждой букве этого алфавита сопоставляется номер, с которым и производится вычисление. Не очень интересная ситуация, так как каждая буква отдельно шифруется так же, как и в алгоритмах замены! Рассмотрим более интересный случай. Пусть дан алфавит, состоящий из трех символов «ABC» (берем небольшой, чтобы легче было посчитать результат). Тогда код каждой буквы - это число из интервала [0, 2]. Пусть код A=0, B=1, C=2, хотя можно было выбрать совершенно произвольно, так как  мы задаем алфавит!

Тогда все возможные сочетания символов в одной позиции дают числа от 0 до 2, то есть всего три варианта. Мы получили троичную систему счисления! Если в этой системе счисления записано «число» из двух позиций, то всех возможных вариантов будет 3*3=9 штук, то есть AA, AB, AC, BA, BB, BC, CA, CB, CC. Надеюсь, что для вас очевидно то, что количество трехзначных чисел в нашей системе счисления равно 3*3*3=9*3=27.

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

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

Пусть в алфавите m символов. Тогда мы имеем дело с m – ричной системой счисления, знаки которой – символы алфавита. Так как алфавит – это упорядоченная последовательность символов, то каждому символу однозначно сопоставляется его порядковый номер – количественная характеристика. Причем для левого символа номер будем считать равным 0, далее 1, 2 и т.д. до m-1.

Однозначные (одно символьные) числа в заданной системе счисления – это числа от 0 до m-1. Двузначные – число от 0 до m2-1. Трехзначные - от 0 до m3-1.  И т.д. Нам надо определить максимальную степень для основания системы счисления такую, чтобы полученное число оставалось еще меньше n. Можно это рассчитать через log.  На картинке ниже эта максимальная степень обозначена через k. Интересен оставшийся фрагмент числовой оси от mk до n. Это числа, с которыми нам тоже придется работать.

mk

mk+1

N

mk+1

 

 

 

 

Итак, на рисунке показаны следующие важные области чисел, с которыми нам придется работать в алгоритме RSA. Зеленая область (левая) – это числа от 0 до mk, где m – основание системы счисления (длина алфавита для передаваемых сообщений), k – количество позиций числа в заданной системе счисления.

Вернемся к задаче выделения фрагмента текста нужной длины. Мы уже знаем, что всегда можно взять k символов. Но иногда можно взять и фрагмент длиной k+1 символ. Как это определить? Это можно сделать двумя способами: а) посчитав количество; б) сравнив две строки.

Вариант а). Рассмотрим сначала первый способ, хотя он и не используется на практике.

У нас сейчас n – это некоторое число. Попробуем представить фрагмент текста тоже в виде числа. Так как мы имеем дело с обычной позиционной системой счисления, то k+1 – значное число = количество = x0*m0+ x1*m1+ x2*m2+… xk+1*mk+1. Если это число оказалось больше n (попало в красную зону), то следует взять фрагмент длиной k, то есть число x0*m0+ x1*m1+ x2*m2+… xk*mk.

К полученному числу применяем базовый алгоритм возведения в степень. Затем выделяем следующий фрагмент и т.д.

Каждое полученное число следует теперь снова представить в виде строки символов, то есть в виде числа в нашей системе счисления.

Вариант б).

Предыдущий вариант не применим на практике, так как мы имеем дело с очень большими числами, а работать с числами от 0 до n*n, применяя стандартные типы данных, мы не можем (нет соответствующих типов данных)! Следовательно, мы должны работать со строковой арифметикой, и потому определение фрагмента нужного размера сводится к задаче сравнения строк.

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

В соответствии с рассмотренными особенностями дискретного возведения в степень выполним расчет (шифрование – дешифрование) для сообщения ААБВВАААААА. Алфавит «АБВ». N=33, E=3, D=7.

Максимальная степень, в которую можно возвести длину алфавита, оставаясь в интервале чисел от 0 до N, это 3 (33 = 27 < 33). Это – базовая длина фрагмента (зеленая зона), хотя следует проверять и фрагменты длиной 4 символа с целью выяснения, не попало ли число в желтую зону. Это же можно получить, если представить N  в виде строки символов нашего алфавита:  N= 33 = 10203=БАВА. Таким образом, максимальная длина строки равна 4, хотя и не все 4-х символьные строки окажутся меньше N. Например, строка ББАА больше БАВА. Поэтому гарантированно меньшие числа представлены строками из трех символов.

Первый фрагмент.

ААБВ = В*30+Б*31+А*32+А*33 = 2*30+1*31+0*32+0*33=5

5 < 33, поэтому считаем 5E mod N = 53 mod 33 = 26

 

26

3

 

   2

8

3

 

2

2

 Представляем число 26 в символах нашего алфавита, то есть переводим в троичную систему счисления с заданным набором символов. То есть последовательно делим на 3, записывая остатки и частное от деления. А затем записываем цифры числа снизу вверх, выбирая сначала последнее частное, а затем остатки от деления. Получаем 222. В нашей системе счисления это выглядит как ВВВ.

Второй фрагмент.

ВААА = А*30+А*31+А*32+В*33 = 0*30+0*31+0*32+2*33= 54 Теперь 54 > 33, поэтому берем меньший фрагмент: ВАА = А*30+А*31+В*32 = 0*30+0*31+2*32= 18. Для него считаем 18E mod N = 183 mod 33 = 24. А теперь 24 переводим в нашу систему счисления, получаем 220, то есть получаем ВВА.

Третий фрагмент.

АААА = 0, после возведения в степень тоже 0. А вот теперь перед нами возникла проблема. Как представить 0? Ведь А, АА, ААА, АААА – это все 0. Проблема может быть разрешена только путем введения дополнительного соглашения: к передаваемому тексту всегда должна приписываться еще и длина этого текста. Это не очень хорошо, так как дает злоумышленнику некую информацию. Либо символ с кодом 0 объявляется как специальный и не используется в сообщениях, либо используется только как признак конца.

3.8      Пример 3 RSA.

Если же решить, что мы выбрали большое число N и можем работать с таким числом, представленным только в виде строки символов заданного алфавита, то выбор фрагмента и расчет выглядят по-другому.

Начнем с N. N=33, то есть в нашей системе счисления 33/3=11(0 остаток) 11/3=3(2) 3/3=1(0), то есть получает 1020 =БАВА.

E =3, то есть в нашей системе счисления 10 = БА.

D =7, то есть в нашей системе счисления 21 = ВБ.

Исходное сообщение ААБВВАААААА.

Очевидно, что длина фрагмента не превышает длину строки, представляющей число N, но может быть на 1 меньше. Определить это можно, реализовав строковое сравнение следующим образом: сравнить t-ые символы, начиная с символа с номером t=1 (слева). Если они равны, то перейти к символам с номером t=t+1. Та строка больше, чей очередной символ больше очередного символа из другой строки.

ААБВ < БАВА, что становится очевидным после сравнения левых символов (Б>А).

Таким образом, нам надо вычислить ААБВБА mod БАВА. Здесь нам надо воспользоваться символьной арифметикой (нами реализуемой в лабораторных работах).

3.9      Немного об арифметических операциях по модулю n.

Операция «остаток от деления на n» любому положительному числу сопоставляет число из интервала [0,n-1].  Если взять за исходный некоторый интервал длины n (количество чисел в интервале), то сопоставление будет взаимно однозначным.

Сдвиг этого интервала вправо по числовой оси на n или любое число кратное n приведет нас к интервалу, числа из которого сопоставляется с интервалом [0,n-1] точно таким же образом, что и исходный интервал. То есть операция «остаток от деления» инвариантна относительно смещения вправо на шаг, кратный длине интервала.

При выполнении всех операций по модулю n результат должен оставаться в области неотрицательных чисел, не превышающих n. Будем считать, что исходные числа правильные, то есть из интервала [0,n-1]. При выполнении арифметических операций промежуточный или конечный результат могут получиться в диапазоне     [–(n-1),(n-1)2]. В этом случае применяется операция вычисления остатка от деления на n, возможно дополненная сдвигом вправо по числовой оси на число, кратное n.

3.10   Сложение.

При обычном сложении двух чисел из интервала [0,n-1] имеем результирующий интервал [0, 2*(n-1)]. Применение к результату операции «остаток от деления» вернет результат в интервал [0, n-1].

3.11   Вычитание.

При обычном вычитании двух чисел из интервала [0, n-1] имеем результирующий интервал [-(n-1), n-1]. Применение к результату операции «остаток от деления» не даст верного результата, так как отрицательные числа перейдут в отрицательные, а положительные – в положительные. Поэтому сначала необходимо к результату добавить n (длину интервала), при этом произойдет сдвиг в положительную область: [1, 2*n-1]. А затем применить операцию  «остаток от деления», которая вернет результат в интервал [0, n-1].

3.12   Умножение.

При обычном умножении двух чисел из интервала [0, n-1] имеем результирующий интервал [0, (n-1)2]. Применение к результату операции «остаток от деления» вернет результат в интервал [0, n-1]. Если используются алгоритмы быстрого умножения, то к промежуточным результатам можно применять операцию «остаток от деления», снижая порядок чисел.

3.13   Деление.

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

 a/b mod n = (a*k)/(b*k) mod n = (a*k mod n)/(b*k mod n)

Если b*k mod n=1, то (a*k mod n)/(b*k mod n) = a*k mod n. Таким образом, требуется найти k. Это можно сделать, перебирая числа m, удовлетворяющие выражению b*k = m*n+1, причем m=1, 2, …, а k должно быть целое. Заметим, что предложенный метод поиска k не является единственным и наилучшим.

А=m1*m2*m3*…

B=n1*n2*n3*…

N=k1*k2*k3*…

Если А не делится нацело на В, то среди множителей найдется, по крайней мере, один не совпадающий.

3.14   Обратное по модулю.

Малая теорема Ферма утверждает, что an-1 mod n=1 для простого n и не кратного ему a.

Функция Эйлера φ(n) – количество целых положительных чисел, меньших n и взаимно простых с n. Эйлер показал, что для простого n  φ(n)=n-1, для n=p*q, где  p и q – простые числа, φ(n)=(p-1)*(q-1)=m.

an-1 mod n=1 по теореме Ферма. Для простого n aφ(n) mod n=1. Таким образом, обратное a по модулю n рассчитывается как aφ(n)-1 mod n.

3.15   Стандарт шифрования данных ГОСТ 28147-89

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

Более эффективным является отечественный стандарт шифрования данных.

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

3.16   Простые числа

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

Рассмотрим два алгоритма, с помощью которых можно разложить число на простые множители. Первый из них слишком прост и слабо отличается от метода простого перебора. Очевидно, что для больших чисел (очень больших, т.е. представляемых 512 и более битами, а не маленьких целых чисел, занимающих 32 или 64 бита) время расчета по этому алгоритму оказывается очень большим (его не трудно подсчитать, зная производительность процессора). Второй алгоритм интересен тем, что он гораздо быстрее определяет максимальный множитель. Этот вариант больше подходит, если надо доказать, что число простое.  В алгоритме используются только операции сложения и вычитания, что работает быстрее, чем умножение. Если один множитель числа N равен 1, а второй N, то это означает, что число простое.  Можно данный алгоритм использовать для нахождения всех множителей, тогда его надо применять неоднократно, сначала к исходному числу, затем к частному от деления на найденный множитель и т.д.

Алгоритм 1. При поиске простых множителей проверять надо вовсе не все числа, так как четные числа (кроме 2) не являются простыми. Известно правило, по которому достигается еще большее сокращение множества проверяемых чисел: кандидаты на простоту находятся в ряду натуральных чисел на местах через 2, затем через 4. Исключение составляют первые 6 чисел. Желтым цветом выделены простые числа, белым – те числа, которые в соответствии с нашим алгоритмом являются кандидатами, но не являются простыми.

1 2 3 5 7   11 13   17 19   23 25   29 31  35 37   41 43

Здесь расстояние между 7 и 11 равно 4, затем между 11 и 13 расстояние равно 2, далее между 13 и 17 расстояние равно 4.

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

Алгоритм 2. Задача разложения на множители решается в двух ситуациях: тогда, когда действительно нужны множители, и тогда, когда нас интересует ответ на вопрос «является ли число простым», при этом сами множители не нужны, но надо установить, есть ли они. Тогда можно применить следующий алгоритм, который находит наибольший множитель числа N, не превышающий ÖN.

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

Алгоритм использует интересное свойство числового ряда, которое Вы можете увидеть в представленной таблице:

Z

0

1

2

3

4

5

6

7

8

Z’=2*Z+1

1

3

5

7

9

11

13

15

17

Z2

0

1

4

9

16

25

36

49

64

Обратите внимание на то, что полный квадрат можно рассчитать следующим образом:

Z2i = Z2i-1 + Zi-1

Здесь i – номер столбца, изменяется от 1 с шагом +1. По таблице мы видим, что

12=1+02=1+0=1

22=3+12=3+1=4

32=5+22=5+4=9

42=7+32=7+9=16.

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

Вернемся к задаче поиска множителей. Попытаемся свести задачу поиска множителя к расчету квадратов (а квадраты будем считать, используя только сложение!).

Любое число N можно представить в виде произведения некоторых чисел U*V, так как значение одного из сомножителей может быть равно 1. Обозначим

, а .

Тогда

, , .

Таким образом, если мы подберем два полных квадрата, разность которых равна N, то мы сможем посчитать множители.

Число N может быть само полным квадратом, поэтому можно начать с x=ÖN и с y=0. В данном алгоритме не определяется способ расчета ÖN. Предполагается, что он (точнее, его приближенное значение) известен. На самом деле, можно начинать с любого значения, меньшего ÖN

Оперировать в алгоритме x и y не удобно, нам лучше работать с x’ = 2x+1,  y’=2y+1, так как, согласно указанным выше свойствам чисел, можно легко рассчитывать следующие квадраты x и y. Таким образом, приходим к следующему алгоритму.

Берем в качестве начального значения x’ = ÖN,  y’=2*0+1=1.  Заметим, что эти начальные значения не являются обязательными, можно начинать с любого x и с любого y, требуется только соблюдение следующих условий: x>y, y>=0, x<=ÖN. Такие начальные условия гарантируют, что максимальный множитель не будет пропущен. В случае если x близок к ÖN, алгоритм быстрее завершается.

Теперь надо вычислить величину невязки r по формуле, расположенной ниже.


Очевидно, что если r=0, то это означает, что мы нашли пару x,y, удовлетворяющую условиям задачи, то есть мы нашли U, V (их нетрудно вычислить по указанным выше формулам).


Если r отрицательное, следовательно, x мало,  поэтому, надо взять следующее значение x: x=x+1,  а посчитать квадрат нового x  мы можем, воспользовавшись указанными выше свойствами.

Если r положительное, следовательно, y мало,  поэтому, надо взять следующее значение y: y=y+1. При этом, очевидно, r надо уменьшить на y (подставьте в формулу).

Окончательно, алгоритм состоит в следующем. Задаем начальные значения для r, x’, y’. Повторяем, пока r<>0: если r<0, увеличиваем x’ на 2 и пересчитываем r=r+x’, иначе увеличиваем y’= y’+2, r=r-y’.

В заключении следует сказать о том, почему алгоритм закончится. На каждом шаге мы изменяем на 1 только x или только y. Следовательно, V непрерывно растет. Если оно станет равно N, то U=1 и при этом r=0.

4      Электронная подпись

В чем состоит проблема аутентификации данных?

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

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

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

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

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

Итак, пусть имеются два пользователя А и Б. Рассмотрим, от каких нарушений и действий злоумышленника должна защищать система аутентификации.

Отказ (ренегатство).

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

Модификация (переделка).

Б изменяет сообщение и утверждает, что измененное сообщение послал ему А.

Подделка.

Б формирует сообщение и утверждает, что данное  сообщение послал ему А.

Активный перехват.

В перехватывает сообщения между А и Б с целью их скрытой модификации. Для защиты от модификации, подделки и маскировки, выполненных третьим лицом, используются цифровые подписи.

Маскировка (имитация).

В посылает Б сообщение от имени А. В этом случае для защиты также используется электронная подпись.

Повтор.

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

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

4.1      ЭЦП - зашифрованный текст

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

Предположим, что d,p,q - секретные, а е, n=pq - открытые.  Тогда, сообщение передаваемое от А к Б, А шифрует своим закрытым ключом, а затем открытым ключом Б. Полученное сообщение Б сначала расшифровывает с помощью своего закрытого ключа, а затем с помощью открытого ключа А. Таким образом, у Б появляется сообщение, посланное ему А.

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

Недостаток – четырежды работает несимметричный алгоритм шифрования, что очень долго для сообщения реальной длины. Скрытие текста, возможно, и не требовалось!

4.2      ЭЦП - открытый текст

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

В 1991 г. Национальный институт стандартов и технологии (NIST) предложил для появившегося тогда алгоритма цифровой подписи DSA (Digital Signature Algorithm) стандарт DSS (Digital Signature Standard), в основу которого положены алгоритмы Эль-Гамаля и RSA. В РФ принятые стандарты цифровой подписи Р38 и Р39, также как и ГОСТ 28147-89 имеют гриф ДСП.

4.3      Использование хэш-функций

Недостатком рассмотренной электронной подписи на основе алгоритма RSA является низкая производительность. Напомним, что по сравнению с симметричными алгоритмами, несимметричные алгоритмы работают в 1000 и 10000 медленнее! Возможным решением является применение специальной эффективно вычислимой функции, называемой хэш-функцией или функцией хэширования. Входом этой функции является сообщение, а выходом – слово фиксированной длины, много меньшей, чем длина исходного сообщения (обычно, 14-50 символов). Функция хэширования обладает следующими свойствами: по хэш невозможно восстановить текст, любое изменение текста приводит к непредсказуемому изменению хэш.

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

4.4      Сертификация

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

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

А кто подтвердит подлинность сертификата, то есть открытого ключа центра сертификации? Доверять подписывающей стороне получатель может на основании того, что ее ключ был подписан третьей стороной. То есть у центра сертификации должен быть сертификат. Таким образом возникает иерархия доверия. Очевидно, что некоторый ключ должен быть корнем иерархии (то есть ему мы доверяем не потому, что он кем-то подписан, а потому, что мы верим a-priori, что ему можно доверять). В централизованной инфраструктуре ключей имеется очень небольшое количество корневых ключей сети (например, облеченные полномочиями государственные агенства; их также называют сертификационными агенствами - certification authorities). В распределенной инфраструктуре нет необходимости иметь универсальные для всех корневые ключи, и каждая из сторон может доверять своему набору корневых ключей (скажем, своему собственному ключу и ключам, ею подписанным). Эта концепция носит название сети доверия (web of trust) и реализована, например, в PGP (система шифрования, используемая для почтовых сообщений).

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

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

Опишем схему сертификации. Пусть Ц – центр сертификации, которому доверяют А и Б. Ц распространяет свой открытый ключ (при помощи защищенного канала или не электронным путем).

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

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

Возможный вариант предложенной схемы: А сам формирует пару «открытый – закрытый ключ» и отправляет Ц данные о себе и свой открытый ключ.

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

4.5      Имитовставка или MAC-код

Алгоритмы хэширования очень похожи на блоковые алгоритмы шифрования типа DES.

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

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

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

4.6       Шифрование больших сообщений и потоков данных

Эта проблема появилась сравнительно недавно с появлением средств мультимедиа и сетей с высокой пропускной способностью, обеспечивающих передачу мультимедийных данных.

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

-       факсимильная, видео и речевая связь;

-       голосовая почта;

-       системы видеоконференций.

Объем передаваемой информации разных типов можно представить на условной диаграмме.

 

Объем

информации

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 


Потоковое шифрование данных

Наиболее очевидным является побитовое сложение входящей последовательности (гаммирование) с некоторым бесконечным или периодическим ключом, получаемым, например, от генератора ПСЧ Примером стандарта потокового шифрования является RC4, разработанный Ривестом. Однако технические подробности этого алгоритма держатся в секрете.

Другим, иногда более эффективным методом потокового шифрования является шифрование блоками. Т.е. накапливается фиксированный объем информации (блок), а затем преобразованный некоторым криптографическим методом передается в канал связи.

4.7      Шифрование, кодирование и сжатие информации

Эти три вида преобразования информации используются в разных целях, что можно представить в таблице.

Вид преобразования

Цель

Изменение объема информации после преобразования.

Шифро-вание

·      передача конфиденциальной информации;

·      обеспечение аутентификации и защиты от преднамеренных изменений;

обычно не изменяется, увеличивается лишь на длину цифровой  подписи

Помехо-устойчивое кодирование

·      защита от искажения помехами в каналах связи

·      часто преобразование типа сигнала

увеличивается

Сжатие (компрессия)

·      сокращение объема передаваемых или хранимых данных

уменьшается

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

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

Другая возможность - комбинирование алгоритмов шифрования и сжатия информации. Задача сжатия состоит в том, чтобы преобразовать сообщение в пределах одного и того же алфавита таким образом, чтобы его длина (количество букв алфавита) стала меньше, но при этом сообщение можно было восстановить без использования какой-то дополнительной информации. Наиболее популярные алгоритмы сжатия - RLE, коды Хаффмана, алгоритм Лемпеля-Зива. Для сжатия графической и видеоинформации используются алгоритмы JPEG и MPEG.

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

4.8      Аппаратные шифраторы.

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

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

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

Наиболее часто в качестве генератора гаммы используется  широко известный регистр сдвига с обратными связями (линейными или нелинейными). Минимальный период порождаемой последовательности равен 2N-1 бит. Для повышения качества генерируемой последовательности можно предусмотреть специальный блок управления работой регистра сдвига. Такое управление может заключаться, например, в том, что после шифрования определенного объема информации содержимое регистра сдвига циклически изменяется.

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

Большинство зарубежных серийных средств шифрования основано на американском стандарте DES. Отечественные же разработки, такие как, например, устройство КРИПТОН, используют отечественный стандарт шифрования.

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

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

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

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

Управление ключами - информационный процесс, включающий в себя три элемента: генерацию ключей; накопление ключей; распределение ключей.

5.1      Генерация ключей

В самом начале разговора о криптографических методах было сказано, что не стоит использовать неслучайные ключи с целью легкости их запоминания. В серьезных ИС используются специальные аппаратные и программные методы генерации случайных ключей. Как правило, используют датчики псевдослучайных чисел. Однако степень случайности их генерации должна быть достаточно высокой. Идеальным генераторами являются устройства на основе “натуральных” случайных процессов. Например, появились серийные образцы генерации ключей на основе белого радиошума. Другим случайным математическим объектом являются десятичные знаки иррациональных чисел, например p или е, которые вычисляются с помощью стандартных математических методов.

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

5.2      Накопление ключей

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

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

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

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

Вопрос обновления ключевой информации связан и с третьим элементом управления ключами - распределением ключей.

5.3      Распределение ключей

Распределение ключей - самый ответственный процесс в управлении ключами. К нему предъявляются два требования: оперативность и точность распределения, скрытность распределяемых ключей.

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

Распределение ключей между пользователями реализуются двумя разными подходами:

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

2. Прямой обмен ключами между пользователями информационной системы. В этом случае проблема состоит в том, чтобы надежно удостоверить подлинность субъектов.

В обоих случаях должна быть гарантирована подлинность сеанса связи. Это можно обеспечить двумя способами:

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

2. Механизм отметки времени (“временной штемпель”). Он подразумевает фиксацию времени для каждого сообщения. В этом случае каждый пользователь ИС может знать, насколько “старым” является пришедшее сообщение. При передаче отметки времени следует использовать шифрование, чтобы быть уверенным, что ответ послан не злоумышленником и штемпель отметки времени не изменен. При использовании отметок времени встает проблема допустимого временного интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с “временным штемпелем” в принципе не может быть передано мгновенно. Кроме этого компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы. Какое запаздывание (или убегание вперед) “штемпеля” считать подозрительным? Поэтому в реальных ИС, например, в системах оплаты кредитных карточек, где используемый интервал составляет от одной до нескольких минут, большое число известных способов кражи электронных денег основано на “вклинивании” в этот промежуток с подложными запросами на снятии денег.

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

5.4      Использование “блуждающих ключей”

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

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

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

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

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

Наиболее доступным является использование полей Галуа (операции по модулю n). За счет возведения в степень порождающего элемента можно последовательно переходить от одного числа к другому. Эти числа принимаются в качестве ключей. Позже мы изучим протокол SKEY, основывающийся на указанном принципе. Ключевой информацией в данном случае является исходный элемент, который перед началом связи должен быть известен и отправителю и получателю. Надежность таких методов должна быть обеспечена с учетом известности злоумышленнику используемого правила смены ключей, т.е. Знание правила не должно давать возможности вычисления очередного ключа.

 

Hosted by uCoz