Содержание 1. Теоретические основы криптографии 91.1. Общие сведения по классической криптографии 91.2. Стойкость алгоритмов шифрования 121.3. Общая классификация алгоритмов шифрования 161.4. Реализация алгоритмов шифрования 181.4.1. Программная реализация 191.4.2. Аппаратная реализация 191.4.3. Программно-аппаратная реализация 201.5. Криптография и стеганография 212. Обзор основных алгоритмов шифрования 222.1. Симметричные криптосистемы 222.1.1. Шифрование с использованием операции XOR 232.1.2. Стандарты блочного шифрования. Алгоритм DES 232.1.3. Стандарты блочного шифрования. Алгоритм ГОСТ 252.2. Ассиметричные алгоритмы шифрования. Стандарт ассиметричного шифрования RSA 283. Ключевая информация 313.1. Генерация ключей 323.1.1. Детерминированные методы 323.1.2. Недетерминированные методы 333.1.3. Генерация сеансовых ключей 333.1.4. Генерация ключей на основе пароля пользователя 333.2. Накопление (хранение) ключей 343.3. Распределение ключей 344. Электронная цифровая подпись 364.1. Общие сведения об электронной цифровой подписи 364.2. Алгоритмы цифровой подписи 384.2.1. Цифровая подпись Эль-Гамаля 384.2.2. Алгоритм DSA 394.2.3. Слепая подпись Чаума 405. Хэш-функции и хэширование 415.1. Общие сведения 415.2. Типы хэш-функций 425.3. Требования к хэш-функциям. 425.4. Стойкость хэш-функций. 435.5. Алгоритмы хэширования 435.5.1. Алгоритм MD5 435.5.2. Алгоритм безопасного хэширования SHA 446. Краткое введение в криптоанализ 466.1. Почему криптосистемы ненадежны 476.2. Виды атак на криптоалгоритмы 486.3. Методы современного криптоанализа 506.3.1. Нетехнические методы взлома (Social Hacking) 506.3.2. Метод частотного анализа 506.3.3. Атака методом "грубой силы" (Brute Force Attack) 516.3.4. Метод встречи посередине 526.3.5. Метод Полларда 536.3.6. Дифференциальный криптоанализ 536.3.7. Линейный криптоанализ 54Заключение 55Литература 56 ВведениеПроблема защиты информации путем преобразований, исключающих ее прочтение посторонним лицом, волновало человечество с давних времен. Криптография исторически зародилась из потребности передачи секретной информации. История криптографии – ровесница истории письменности. Более того, первоначально письменность сама по себе была криптографической системой, т.к. в древнем обществе ей владели только избранные (например, жрецы). С широким распространением письменности криптография стала формироваться как самостоятельная наука, которая длительное время была связана только с разработкой специальных методов преобразования информации с целью ее представления в форме, недоступной для злоумышленника. С позиций сегодняшнего дня ее методы рассматриваются всего лишь как некоторые ухищрение, чем как строгая научная дисциплина. Цель: дать методы обеспечения конфиденциальности и аутентичности информации, а также методы ее криптоанализа. Задача: подать информацию в таком виде, чтобы было доступно и понятно всем людям, также подробно рассмотреть все моменты с алгоритмами шифрования. Современная криптография базируется на самых последних достижениях фундаментальных наук, и в первую очередь, математики. Сегодня в теоретической криптографии используются понятия и результаты таких разделов математики, как алгебра, теория чисел, теория сложности алгоритмов и вычислений, теория кодирования и т.д., а задачи ее далеко выходят за рамки только лишь сокрытия информации. В настоящее время в связи с бурным развитием международной глобальной сети Internet и массовым применением компьютерных информационных технологий, криптография решает следующие задачи: Защита информации от несанкционированного чтения Давно известно, что информация может быть настоящим сокровищем. Именно поэтому часто много усилий затрачивается как на ее охрану, так и на ее добывание. Информацию нужно защищать в тех случаях, когда есть опасения, что она станет доступной посторонним, которые могут обратить ее во вред законному пользователю. Информация, которая нуждается в защите, возникает в самых разных жизненных ситуациях. В таких случаях говорят, что она содержит тайну и является защищаемой, приватной, конфиденциальной, секретной. Наиболее типичные примеры – это государственная, военная, коммерческая, юридическая, врачебная тайна и т.д. Защищаемая информация имеет следующие признаки: Имеется определенный круг законных пользователей, которые имеют право владеть информацией; Имеются незаконные пользователи, которые стремятся овладеть информацией с тем, чтобы обратить ее себе во благо, а законным пользователям во вред. Основными задачами защиты пользовательской информации являются: Обеспечение конфиденциальности информации; Обеспечение целостности информации; Обеспечение достоверности информации; Обеспечение оперативности доступа к информации; Обеспечение юридической значимости информации, представленной в виде электронного документа; Обеспечение неотслеживаемости действий клиента. Дадим краткую расшифровку этих понятий:Конфиденциальность – свойство информации быть доступной только ограниченному кругу пользователей информационной системы, в которой циркулирует данная информация. Под целостностью понимается свойство информации или программного обеспечения сохранять свою структуру и/или содержание в процессе передачи и хранения.Достоверность – свойство информации, выражающееся в строгой принадлежности объекту, который является ее источником, либо тому объекту, от которого эта информация принята.Оперативность – способность информации или некоторого информационного ресурса быть доступным для конечного пользователя в соответствии с его временными потребностями.^ Юридическая значимость означает, что документ обладает юридической силой. С этой целью субъекты, которые нуждаются в подтверждении юридической значимости передаваемого сообщения, договариваются о повсеместном принятии некоторых атрибутов информации, выражающих ее способность быть юридически значимой. Данное свойство особенно актуально в системах электронных платежей.Неотслеживаемость – способность совершать некоторые действия в информационной системе незаметно для других субъектов. Актуальность данного требования стала очевидной благодаря появлению таких понятий, как электронные деньги и Internet-banking. Следует отметить, что объем мероприятий по защите обрабатываемых и передаваемых данных зависит прежде всего от величины предполагаемого ущерба, который может выражаться в прямой (затраты на покупку нового программного обеспечения в случае нарушения его целостности) или в опосредованной (затраты от простоя в информационной системе банка) форме. При современном уровне развития техники сами средства связи, а также разработка средств перехвата информации требуют очень больших затрат. Защита от навязывания ложных сообщений (умышленных и непреднамеренных) Главным образом, эта задача связана с таким понятием, как имитозащита. Она состоит в формировании в зависимости от некоторого секретного ключа специальной дополнительной информации, называемой имитовставкой, которая передается вместе с криптограммой. Дело тут в том, что само по себе шифрование данных недостаточно для защиты от навязывания ложного сообщения, хотя во многих случаях законный получатель, анализируя семантику сообщения, может легко определить, что криптограмма была модифицирована или подменена. Однако при искажении цифровых данных обнаружить факт изменения данных по семантике крайне сложно. Одним из способов защиты от навязывания ложных сообщений путем целенаправленного или случайного искажения шифртекста и является имитозащита. Для вычисления имитовставки используется алгоритм, задающий зависимость имитовставки от каждого бита сообщения. Чем больше длина имитовставки, тем меньше вероятность того, что искажение шифртекста не будет обнаружено. Нарушитель может модифицировать шифртекст, но поскольку он не знает секретного ключа, то не сможет вычислить новое значение имитовставки, соответствующее искаженному сообщению. Нарушитель либо не меняет имитовставки, либо подменяет ее на случайное значение. Если используется алгоритм с хорошими криптографическими свойствами, то вероятность того, что факт изменений не будет обнаружен законным получателем, составляет , где n – длина имитовставки в битах. Аутентификация законных пользователей Она заключается в распознавании законных пользователей, после чего им предоставляются определенные права доступа к ресурсам вычислительных и информационных систем. Частным вариантом аутентификации является парольная защита входа в компьютерную систему. Для того, чтобы система защиты могла идентифицировать легальных пользователей, в памяти ЭВМ хранятся образцы их паролей, вычисленные по специальному криптографическому алгоритму, реализующему так называемую одностороннюю (On-Way) функцию . Основное требование к ней состоит в том, чтобы сложность вычисления значения функции по аргументу была низкой, а обратная операция – запредельно сложной (практически неосуществимой за 10 лет при использовании всех вычислительных ресурсов человечества). Контроль целостности информации Это обнаружение любых несанкционированных изменений информации, например, данных или программ, хранимых в компьютере. Имитозащита, в сущности, является важным частным случаем контроля целостности информации, передаваемой в виде шифртекста. Контроль основан на выработке по некоторому криптографическому закону кода обнаружений модификаций (КОМ), имеющего значительно меньший объем, чем охраняемая информация. Основным требованием к алгоритму вычисления КОМ является задание зависимости значения КОМ от каждого бита двоичного представления всех символов исходного текста. Аутентификация информации Это установление санкционированным получателем того факта, что полученное сообщение санкционированным отправителем. Соблюдение заранее оговоренного протокола (набора правил и процедур) должно обеспечить максимальную вероятность этого факта. Очевидно, что при этом контролируется и целостность сообщения на возможность подмены или искажения. В симметричных криптосистемах аутентификация осуществляется с применением одного или нескольких секретных ключей и защитных контрольных сумм. В ассиметричных криптосистемах аутентификация выполняется с использованием открытых ключей. Электронная цифровая подпись (ЭЦП) Как уже было отмечено, криптографическими методами можно обеспечить не только конфиденциальность, но и проконтролировать целостность передаваемых или хранимых данных. Контроль целостности в основном производится путем расчета некоторой "контрольной суммы" данных. Математиками и инженерами, работающими в области передачи данных и теории кодирования, разработано множество алгоритмов, рассчитывающих контрольные суммы передаваемых данных. Основой этих алгоритмов также являются односторонние функции. Электронная подпись в общем виде представляет собой контрольную сумму документа, зашифрованную секретным ключом с помощью хэш-функции. В процедуре генерации ЭЦП используются ассиметричные криптографические алгоритмы, основанные на двух ключах: открытом (Public) и личном (Private). Проверка ЭЦП документа сводится к вычислению хэш-суммы документа, ее расшифровке и сравнению двух величин. Если значения вычисленной и сохраненной в подписи хэш-сумм совпали, то считается, что подпись под документом верна. Более подробно ЭЦП будут рассмотрены позднее. Перечислим остальные задачи, решаемые современной криптографией, не вдаваясь, однако, в их подробное описание. Системы тайного электронного голосования Электронные деньги Электронная жеребьевка Защита от отказа факта приема сообщения Одновременное подписание контракта Защита документов и ценных бумаг от подделки (электронные водяные знаки) Как видно из всего вышесказанного, актуальность криптографии в настоящий момент достаточно высока, поскольку в условиях информационного общества защищать свои личные сведения необходимо не только спецслужбам и крупным коммерческим фирмам, но и одиночным пользователям. Исходя из этого, в своей работе мы постараемся в доступной форме осветить основные вопросы и положения современной криптографии, дать по возможности их теоретическое обоснование, а также рассмотреть такую важную тему, как устойчивость криптографических алгоритмов к попыткам взлома и остановиться на наиболее употребительных методах раскрытия шифрованного текста.^ 1. Теоретические основы криптографии 1.1. Общие сведения по классической криптографии Прежде чем перейти к рассмотрению практического применения криптографических преобразований, необходимо уделить внимание вопросам, которые в рамках криптографии давно признаются классическими, а именно основам построения систем засекреченной связи. Под системой засекреченной связи будем понимать систему передачи информации, в которой смысл передаваемой информации скрывается с помощью криптографических преобразований. При этом сам факт передачи информации не утаивается. В основе каждой системы засекреченной связи – использование алгоритмов шифрования как основного средства сохранения конфиденциальности. В качестве информации, подлежащей защите, будут рассматриваться тексты, построенные на некотором алфавите. Под этими терминами понимается следующее.^ Алфавит – конечное множество используемых для кодирования информации знаков.Текст – упорядоченный набор, составленный из символов алфавита. В качестве алфавитов можно привести следующие: Алфавит Z33 – 32 буквы русского алфавита и пробел; Алфавит Z256 – символы, входящие в стандартные коды ASCII и КОИ-8 Бинарный алфавит Z2 = {0,1} Зашифрование – процесс криптографического преобразования множества открытых текстов в множество закрытых (шифрованных) текстов.Расшифрование – процесс криптографического преобразования закрытых сообщений в открытые.Дешифрование – процесс нахождения открытого сообщения, соответствующего заданному закрытому при неизвестном криптографическом преобразовании. Первые два процесса управляются с помощью некоторой секретной информации сравнительно малого размера, называемой секретным ключом. Ключ используется для управления процессом криптографического преобразования и является легко сменяемым элементом криптосистемы. Ключ может быть заменен пользователями в произвольный момент времени, тогда как сам алгоритм шифрования является долговременным элементом криптосистемы и связан с длительным этапом разработки и тестирования. Абстрактно систему засекреченной связи можно описать как множество отображений множества открытых сообщений в множество закрытых. Выбор конкретного типа преобразования определяется ключом зашифрования (или расшифрования). Отображения должны обладать свойством взаимооднозначности, т.е. при расшифровании должен получаться единственный результат, совпадающий с первоначальным открытым сообщением (см. рис. 1.1) Ключи зашифрования и расшифрования могут в общем случае быть различными, хотя для простоты рассуждений предположим, что они идентичны. Множество, из которого выбираются ключи, называется ключевым пространством. Совокупность процессов зашифрования, множества открытых сообщений, множества возможных закрытых сообщений и ключевого пространства называется алгоритмом шифрования. Совокупность процессов расшифрования, множества возможных закрытых сообщений, множества открытых сообщений и ключевого пространства называется алгоритмом расшифрования.Рисунок 1. Общая структура системы засекреченной связиРаботу системы засекреченной связи можно описать следующим образом: Из ключевого пространства выбирается ключ зашифрования K и отправляется по надежному каналу передачи. К открытому сообщению C, предназначенному для передачи, применяют конкретное преобразование Fk, определяемое ключом K, для получения зашифрованного сообщения M: M = Fk(C). Полученное зашифрованное сообщение M пересылают по каналу передачи данных. На принимающей стороне к полученному сообщению M применяют конкретное преобразование Dk, определяемое из всех возможных преобразований ключом K, для получения открытого сообщения C: C = Dk(M). Для современных криптографических систем защиты информации сформулированы следующие общепринятые требования: зашифрованное сообщение должно поддаваться чтению только при наличии ключа; число операций, необходимых для определения использованного ключа шифрования по фрагменту шифрованного сообщения и соответствующего ему открытого текста, должно быть не меньше общего числа возможных ключей; число операций, необходимых для pасшифpовывания информации путем пеpебоpа всевозможных ключей должно иметь строгую нижнюю оценку и выходить за пределы возможностей современных компьютеров (с учетом возможности использования сетевых вычислений); знание алгоритма шифрования не должно влиять на надежность защиты; незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при использовании одного и того же ключа; стpуктуpные элементы алгоритма шифрования должны быть неизменными; дополнительные биты, вводимые в сообщение в процессе шифрования, должны быть полностью и надежно скрыты в шифрованном тексте; длина шифрованного текста должна быть равной длине исходного текста; не должно быть простых и легко устанавливаемых зависимостей между ключами, последовательно используемыми в процессе шифрования; любой ключ из множества возможных должен обеспечивать надежную защиту информации; алгоритм должен допускать как пpогpаммную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования. Между людьми происходит интенсивный обмен информацией, причем часто на большие расстояния. Для осуществления такого обмена существуют различные виды общедоступных технических каналов связи: телеграф, телефон, радио, телевидение. Технический канал связи при этом априорно считается ненадежным, т.е. любое зашифрованное сообщение может быть перехвачено незаконным пользователем. В криптографии рассматривается некоторый злоумышленник (оппонент, криптоаналитик противника, нарушитель, нелегальный пользователь), который осведомлен об используемых криптографических методах, алгоритмах, и пытается вскрыть их. Вскрытие криптосистемы может заключаться, например, в несанкционированном чтении информации, формировании чужой подписи, изменении результатов голосования, нарушении тайны голосования, модифицировании данных, которое не будет замечено законным пользователем. Разнообразные действия оппонента в общем случае называются криптографической атакой (нападением). Специфика криптографии состоит в том, что она направлена на разработку методов, обеспечивающих стойкость к любым действиям злоумышленника. Центральным является вопрос, насколько надежно решается та или иная криптографическая проблема. Ответ на этот вопрос непосредственно связан с оценкой трудоемкости каждой конкретной атаки на криптосистему. Решение такой задачи, как правило, чрезвычайно сложно и составляет самостоятельный предмет исследований, называемый криптоанализом. Криптография и криптоанализ образуют единую область науки – криптологию, которая в настоящее время является новым разделом математики, имеющим важные приложения в современных информационных технологиях.^ 1.2. Стойкость алгоритмов шифрования Центральным понятием для криптографии является понятие стойкости шифра. К сожалению, получение строгих доказуемых оценок стойкости конкретного шифра остается нерешенной проблемой. Это объясняется отсутствием необходимых для решения такой проблемы математических результатов. Поэтому стойкость конкретного шифра оценивается путем возможных попыток его вскрытия и зависит от квалификации криптоаналитиков, атакующих шифр. Процедуру атаки на шифр с целью выяснения его стойкости называют проверкой стойкости. Для каждого открытого сообщения существует априорная вероятность выбора, поскольку механизм выбора открытых сообщений можно представить как некоторый вероятностный процесс. Аналогично выбор каждого ключа тоже имеет априорную вероятность. Противник, перехватывающий сообщения, может вычислить апостериорные вероятности как появления открытого сообщения, так и вероятность появления ключа. Набор апостериорных вероятностей представляет собой систему принадлежащих противнику сведений об используемых ключах и передаваемых открытых сообщениях. Причем перед началом перехвата шифрованных сообщений противник имеет в своем распоряжении некоторый набор априорных вероятностей об открытых сообщениях и ключах. На заре развития криптографии надежность сохранения информации в тайне определялась лишь секретностью самого метода преобразования. Понятно, что в наше время секретность алгоритма не может обеспечить его безусловную стойкость, т.е. невозможность чтения криптограммы противником, обладающим бесконечными вычислительными ресурсами. Поскольку секретные алгоритмы недоступны для широкомасштабных криптоаналитических исследований, то по сравнению с открытыми алгоритмами имеется значительно более высокая вероятность того, что впоследствии будут найдены эффективные методы их взлома. В связи с этим в настоящее время наиболее широко используются открытые алгоритмы, прошедшие длительное тестирование и обсуждение в криптографической литературе1. Наряду с развитием криптографических систем совершенствовались и методы, позволяющие восстанавливать исходное сообщение исходя из шифртекста и другой известной информации. Успехи этих методов приводили к ужесточению требований к криптографическим алгоритмам. Голландский криптограф Керкхофф (1835 – 1903) впервые сформулировал правило стойкости шифра, в соответствии с которым: Весь механизм преобразований считается известным злоумышленнику; Надежность алгоритма должна определяться только неизвестным значением секретного ключа. Второе требование означает, что оппонент не сможет разработать методы, позволяющие снять защиту или определить истинный ключ, за время, существенно меньшее, чем время полного (тотального) перебора всего множества возможных секретных ключей. Правило Керкхоффа стимулировало появление более качественных шифрующих алгоритмов. Можно сказать, что в нем содержится первый элемент стандартизации в области криптографии. В настоящее время это правило интерпретируется более широко: все долговременные элементы системы защиты должны предполагаться известными потенциальному злоумышленнику. В последнюю формулировку криптосистемы входят как частный случай систем защиты. Итак, что же понимается под стойкостью алгоритма шифрования? Под раскрытием системы засекреченной связи мы будем понимать одну из следующих планируемых противником операций, направленных на достижение этой цели:^ Полное раскрытие. Противник находит путем вычислений секретный ключ системы;Нахождение эквивалентного алгоритма. Противник находит алгоритм, функционально эквивалентный алгоритму шифрования, не имея при этом представления об используемом секретном ключе;Нахождение открытого сообщения. Противник находит открытое сообщение, соответствующее одному из перехваченных зашифрованных;^ Частичное раскрытие. Противник получает частичную информацию об используемом ключе или открытом сообщении. Каждой из определенных выше целей соответствует свой объем знаний об используемом ключе или переданном открытом сообщении. Чтобы увеличить его, противнику необходимо иметь достаточное количество перехваченных зашифрованных сообщений. Вот почему он осуществляет ряд атак на используемую систему засекреченной связи. Исходя из вышесказанного, под стойкостью алгоритма шифрования будем понимать способность алгоритма противостоять всем возможным атакам на него. На практике получение противником требуемых для вскрытия алгоритма апостериорных вероятностей зависит от наличия у него определенных возможностей, среди которых можно отметить следующие: Противник знает сам шифр и имеет возможности для его предварительного изучения; Противник знает некоторые характеристики открытых текстов – тематику сообщений, их стиль, стандарты, форматы и т.д. Противник может перехватывать все зашифрованные сообщения, но не имеет соответствующих им открытых текстов; Противник может перехватывать все шифрованные сообщения и добывать соответствующие им открытые тексты; Противник имеет доступ к шифру (но не к ключам) и может зашифровывать и дешифровывать любую информацию. Теоретически нет такого шифра, который нельзя было бы взломать2. Любой ключ к зашифрованному сообщению, в конце концов, можно подобрать. Вопрос только в том, сколько времени на это понадобится. В большинстве случаев оказывается, что со временем сообщение просто утрачивает свою актуальность (см. таблицу 1), а потому по истечении этого периода его расшифровка злоумышленником не может нанести вреда отправителю и получателю сообщения.Таблица 1. Время жизни некоторых типов информации ^ Тип информации Время жизни Военная тактическая информация минуты/часы Заявления о выпуске продукции дни/недели Долгосрочные бизнес-продукции Годы Производственные секреты десятилетия Секрет создания ядерного оружия более 40 лет Информация о разведчиках более 50 лет Личная информация более 50 лет Дипломатическая тайна более 65 лет Информация о переписи населения 100 лет Стойким считается тот алгоритм, который для своего вскрытия требует от противника практически недостижимых вычислительных ресурсов или недостижимого объема перехваченных зашифрованных сообщений или времени раскрытия, которое превышает время жизни интересующей его информации. Но поскольку методики взлома шифров непрерывно совершенствуются, нужно быть готовым к адекватному ответу злоумышленникам. Увеличение длины ключа является одним из наиболее радикальных методов противостояния попыткам взлома. Чем длиннее ключ, чем большее количество комбинаций случайных значений в нем, тем больше времени понадобится злоумышленнику на перебор вариантов. Соотношение между длиной ключа и количеством возможных комбинаций носит экспоненциальный характер (удлинение ключа на один бит удваивает количество возможных комбинаций значений ключа и таким образом, в среднем удваивает время на отыскание нужного значения перебором). Удвоение же длины ключа значительно увеличивает степень защиты сообщения. Необходимую сложность ключа в классических криптографических системах вычислить несложно, если знать технические возможности источника угрозы. Например, одиночка вручную переберет 100 ключей, следовательно, тысячи вариантов ключей достаточно. Это приблизительно 10 бит или 3 – 5 букв. Если же источник угрозы – крупная богатая фирма (которая может нанять криптоаналитиков, суперЭВМ), ясно, что такой длины ключа уже недостаточно. Пусть противник обеспечит проверку 106 вариантов ключей в секунду. Следовательно, число вариантов ключей должно составлять 22 десятичные цифры, а это 70 бит или 30 – 35 букв. Приведем примеры зависимостей между возможностями злоумышленника и длиной ключа.^ Таблица 2. Сравнительный анализ времени, затрачиваемого различными группами злоумышленников на нахождение ключа методом перебора ^ Тип атакующего Бюджет Средства Время на подбор ключа Необходимая длина ключа 40 бит 56 бит Хакеры Небольшой ЭВМ 1 неделя Невозможно 45 400$ FPGA3 5 часов 38 лет 50 Небольшие фирмы 10000$ FPGA 12 минут 18 месяцев 55 Корпоративные департаменты 300000$ FPGA 24 секунды 19 дней 60 ASIC4 18 секунд 3 дня Большие компании 10000000$ FPGA 7 секунд 13 часов 70 ASIC 0,005 секунды 6 минут Число необходимых ключей можно вычислить по формуле: N = время жизни ключа/скорость подбора ключа/шанс взлома5 Раскрытие очень длинного ключа методом тотального перебора в реальных условиях невозможно. Однако не исключена возможность создания принципиально нового метода атаки на шифр.^ 1.3. Общая классификация алгоритмов шифрования В основе криптографических алгоритмов лежат математические преобразования, позволяющие добиваться высокой практической стойкости большинства алгоритмов. Было доказано, что в криптографии существуют только два основных типа преобразований - замены и перестановки, все остальные являются лишь комбинацией этих двух типов. Таким образом, есть криптографические алгоритмы, построенные на основе замены, перестановки и объединения этих двух преобразований. В перестановочных шифрах символы открытого текста изменяют свое местоположение. С другой стороны, в шифрах замены один символ открытого текста замещается символом зашифрованного текста. В классической криптографии различают четыре типа шифров замены:шифры простой замены (моноалфавитные шифры). Один символ открытого текста заменяется одним символом зашифрованного текста;шифры сложной замены. Один символ открытого текста заменяется одним или несколькими символами зашифрованного текста, например: “А” может быть заменен ”С” или ”РО4Е”;шифры блочной замены. Один блок символов открытого текста заменяется блоком закрытого текста, например: “АВС” может быть заменен ”СРТ” или ”КАР”;полиалфавитные шифры замены, в которых к открытому тексту применяются несколько шифров простой замены. Классическая криптография, в частности теория связи, в секретных системах, основанная К. Шенноном, исходила из того, что ключи, используемые соответственно для шифрования и расшифрования, являются секретными и одинаковыми, и передача их должна осуществляться по надежному каналу обмена ключевой информации. Подобные алгоритмы были названы симметричными, так как зашифрование и расшифрование происходит на одинаковых ключах. Однако развитие теории построения алгоритмов шифрования с открытыми ключами, родоначальниками которой стали У. Диффи и М. Хеллман6, положила начало повсеместному использованию асимметричных алгоритмов шифрования, в которых ключи зашифрования и расшифрования различны в зависимости от применения один из ключей будет открытым, то есть общедоступным, а другой необходимо хранить в секрете. Разновидностью таких криптосистем являются системы ЭЦП, тайного электронного голосования, защиты от навязывания ложных сообщений, электронной жеребьевки и ряд других криптосистем. Спустя некоторое время симметричные алгоритмы были разделены на два больших класса – блочные и поточные. В первых открытый текст разбивается на блоки подходящей длины, и каждый блок шифруется. В поточных алгоритмах каждый символ открытого текста зашифровывается независимо от других и расшифровывается таким же образом. Иначе говоря, преобразование каждого символа открытого текста меняется от одного символа к другому, в то время как для блочных алгоритмов в рамках шифрования блока используется одно и тоже криптографическое преобразование.^ Рисунок 2. Классификация алгоритмов шифрованияГлавная идея, воплощенная в алгоритмах поточного шифрования заключается в выработке на основе секретного ключа последовательности символов из входного алфавита, с которым работает алгоритм шифрования. Это могут быть как, например, символы английского языка, так и цифры десятичной системы исчисления, при этом входной текст преобразуется в соответствии с выбранным алфавитом. Следует учесть, что такая последовательность имеет длину, которая равна открытому тексту. Ее иногда называют гаммой. Зашифрование и расшифрование может, например, осуществляться путем модульного суммирования символа открытого текста с символом гаммы. Стойкость поточных алгоритмов шифрования зависит от того, насколько выработанная гамма будет обладать свойством равновероятности появления очередного символа. Поточные алгоритмы обладают высокой скоростью шифрования, однако при их программном использовании возникают определенные трудности, что сужает область их практического применения. Следует отметить, что в последние годы на базе совершенствования электронных технологий появились новые теоретические разработки в области квантовой криптографии, основанной на принципах неопределенности Гейзенберга.^ 1.4. Реализация алгоритмов шифрования Проблема реализации методов защиты включает два аспекта: разработку средств, реализующих криптографические алгоритмы; методику использования этих средств. Любой криптографический метод может быть реализован тремя методами: программным, аппаратным, либо программно-аппаратным. Перед тем, как перейти непосредственно к рассмотрению достоинств и недостатков перечисленных типов реализации, сформулируем общие требования к реализации криптографических алгоритмов. Современные алгоритмы шифрования должны удовлетворять следующим условиям: должны быть адаптированные к новейшей программно-аппаратной базе (например, алгоритмы блочного шифрования в программной реализации должны быть адаптированы к операциям с 64-разрядными числами); объем ключа должен соответствовать современным методам и средствам дешифрования зашифрованных сообщений; операции зашифрования и расшифрования должны по возможности быть простыми, чтобы удовлетворять современным требованиям по скоростным характеристикам; не должны допускать появления постоянно увеличивающегося числа ошибок; должны сводить к минимуму объем сообщения в ходе выполнения операций шифрования.^ 1.4.1. Программная реализация Возможность программной реализации обусловлена тем, что все методы криптографического преобразования формальны и могут быть представлены в виде конечной алгоритмической процедуры. К достоинствам программной реализации можно отнести ее гибкость и переносимость. Другими словами, программа, написанная под одну операционную систему, может быть модифицирована под любой тип операционной системы. Кроме того, обновить программное обеспечение можно с меньшими временными и финансовыми затратами. К тому же многие современные достижения в области криптографических протоколов недоступны для реализации в виде аппаратных средств. К недостаткам программных средств криптографической защиты следует отнести возможности вмешательства в действие алгоритмов шифрования и получения доступа к ключевой информации, хранящейся в общедоступной памяти. Эти операции обычно выполняются при помощи простого набора программных инструментариев. Так, например, во многих операционных системах осуществляется аварийный дамп памяти на жесткий диск, при этом в памяти могут находиться ключи, найти которые не составит труда. Таким образом, слабая физическая защищенность программных средств является одним из основных недостатков подобных методов реализации алгоритмов шифров