Алгоритмы симметричной криптографии (такие как DES), успешно применялись для защиты информации до 1977 г. Позже на смену симметричным алгоритмам пришли криптоалгоритмы с открытым распределением ключей. Основоположниками этого направления стали Уитфилд Диффи и Мартин Хеллман. Сегодня существует уже новое направление — квантовая криптография, основанная на законах квантовой физики. Последние разработки в области квантовой криптографии позволяют создавать системы, обеспечивающие практически стопроцентную защиту ключа и ключевой информации. Вместе с криптографией развивается и криптоанализ — наука о способах взлома шифров. Тайнопись — способ, позволяющий передавать секретные сообщения от одного человека к другому. Для защиты информации применяется ряд мер. К ним относятся: организационные средства защиты, основанные на законодательных и нормативных документах по безопасности информации; аппаратные средства защиты — различные электронные и электронно-механические устройства, выполняющие самостоятельно или в комплексе с другими средствами те или иные функции защиты; криптографические средства защиты — специальные средства и методы преобразования информации, в результате которых маскируется ее содержание. Как же сохранить информацию в тайне при ее передаче? Для решения этой задачи существует три возможности: 1. создать абсолютно надежный, недоступный для других людей канал связи между абонентами; 2. использовать общедоступный канал связи, но скрыть сам факт передачи информации; 3. использовать общедоступный канал связи, но передавать по нему нужную информацию в таком преобразованном виде, чтобы восстановить се мог только адресат. Разработкой средств и методов скрытия факта передачи сообщения занимается специальная наука — стеганография. Разработкой же методов преобразования информации с целью ее защиты от незаконных пользователей занимается криптография. Мы будем рассматривать только методы криптографической защиты данных. Основной объект криптографии схематически может быть представлен следующим образом A П B Здесь А и В — это удаленные друг от друга законные пользователи защищаемой информации, которые хотят обмениваться информацией по общедоступному каналу связи, а П — незаконный пользователь («противник»), который хочет перехватывать передаваемые по каналу связи сообщения и пытаться извлечь из них интересующую его информацию. Cхема считается моделью типичной ситуации, в которой применяются криптографические методы защиты информации. Криптография занимается методами преобразования информации, которые бы не позволили противнику извлечь ее из перехватываемых сообщений. При этом по каналу связи передается уже не сама защищаемая информация, а результат ее преобразования с помощью шифра. Криптография — прикладная наука о методах и способах преобразования информации с целью ее защиты от незаконных пользователей. Шифрование — процесс применения шифра к защищаемой информации, т. е. преобразование защищаемой информации в шифрованное сообщение с помощью определенных правил, содержащихся в шифре. Дешифрование — процесс, обратный шифрованию, т. е. преобразование шифрованного сообщения в защищаемую информацию с помощью определенных правил, содержащихся в шифре. Шифр — совокупность обратимых преобразований множества возможных открытых данных во множество возможных шифртекстов, осуществляемых по определенным правилам с применением ключей. Ключ — конкретное секретное состояние некоторого параметра (параметров), обеспечивающее выбор одного преобразования из совокупности возможных для используемого метода шифрования. Это — сменный элемент шифра. Открытый текст — сообщение, текст которого необходимо сделать непонятным для посторонних (зашифровать его). Вскрытие (взламывание) шифра — процесс получения защищаемой информации (открытого текста) из шифрованного сообщения без знания точного шифра. Атака на шифр — попытка вскрытия шифра. Стойкость шифра — способность шифра противостоять всевозможным атакам на него. Все криптоалгоритмы (алгоритмы шифрования) подразделяготся па группы в зависимости от выбранного для классификации признака. Основная схема классификации криптоалгоритмов Классификация криптоалгоритмов по характеру используемого ключа Классификация криптоалгоритмов по характеру воздействий, производимых над данными Клод Шенон – основоположник современной криптографии Он дал определение абсолютно стойкого шифра и указал возможные методы взлома криптоалгоритма. Для определения теоретической секретности Клод Шеннон сформулировал следующие вопросы: 1. Насколько устойчива система, если криптоаналитик противника не ограничен временем и обладает всеми необходимыми средствами для анализа криптограмм? 2. Имеет ли криптограмма единственное решение? 3. Какой объем шифртекста необходимо перехватить крип-тоаналитику, чтобы решение стало единственным? Описание всех вариантов возможностей противника при вскрытии шифра: противник знает шифр и имеет возможности для его предварительного изучения; противник знает некоторые характеристики открытых текстов (защищаемой информации) — тематику сообщений, их стиль, стандарты, форматы и т. д.; противник может перехватывать все шифрованные сообщения, но не имеет соответствующих им открытых текстов; противник может перехватывать все шифрованные сообщения и добывать соответствующие им открытые тексты; противник имеет доступ к шифру (но не к ключам!) и потому может шифровать и дешифровать любую информацию. В любом случае противник будет стремиться найти самое слабое звено, чтобы с наименьшими затратами добраться до нужной ему информации. А значит, законные пользователи тоже должны учитывать это обстоятельство в своей стратегии защиты: бессмысленно делать какое то звено очень «прочным», если существуют заведомо более слабые звенья. Это утверждение называют принципом «равнопрочности защиты». Например, при вскрытии шифра обычно стараются поставить в соответствие наиболее часто встречающимся символам криптограммы буквы, вероятность появления которых в определенном тексте является наибольшей. Это — вероятностный подход к вскрытию шифров. Облегчить задачу криптоаналитику может и знание элементов использованного способа шифрования (например, есть ли разбивка на слова, какой длины используется ключ и т. д.). Многие виды шифров могут быть раскрыты с помощью статистического анализа, так как все естественные языки имеют характерное частотное распределение букв. Одним из наиболее часто используемых приемов криптоаналитика является метод вероятных слов. Вероятные слова — это слова, части слов и выражения, которые можно ожидать в перехваченном шифртексте вследствие того, что они характерны для данного источника сообщений. В качестве вероятных слов можно рассматривать общеупотребительные слова или отдельные слоги, которые характерны для данного языка. Например, для английского языка можно использовать такие вероятные слова, как «the», «that», «and», «-tion». Для русского языка в качестве вероятных слов могут выступать предлоги и союзы. Предполагая, что некоторая часть шифртекста является вероятным словом, криптоапалитик получает часть ключа, которая затем используется для расшифровки других частей шифртекста. Если другие части шифртекста становятся понятными, то предположение, принятое при использовании вероятпого слова, подтверждается. Однако задача криптоаналитика значительно усложняется, если он имеет дело с равномерным распределением символов в шифртексте. Поэтому при построении шифров стремятся обеспечить равномерность символов шифртекста. Математические основы криптографии. Комбинаторика Комбинаторика занимается разного рода наборами (выборками), которые можно образовать из элементов некоего конечного множества. Некоторые элементы комбинаторики были известны в Индии еще во II в. до н. э. Как научная дисциплина комбинаторика сформировалась в XVII в.: французский автор А. Такке посвятил сочетаниям и перестановкам целую главу в книге «Теория и практика арифметики» (1656 г.). Термин «комбинаторика» стал употребляться после опубликования Лейбницем в 1665 г. работы «Рассуждение о комбинаторном искусстве», в которой впервые дано научное обоснование теории сочетаний и перестановок. Изучением размещений впервые занимался Я. Бернулли во второй части своей книги «Ars corijectandi» («Искусство предугадывания») в 1713 г. Современная символика сочетаний была предложена разными авторами учебных руководств только в XIX в. Для криптографии важными являются такие алгоритмы комбинаторики как правило умножения, выборки и перестановки. На этих алгоритмах основываются способы формирования секретных ключей для симметричных шифров. Правило умножения Если выбор объекта происходит в два этапа и на первом этапе существует п возможностей, о на втором — т возможностей, то итоговое количество вариантов выбора равно п х m. Пример Необходимо узнать, сколько пятибуквенных слов можно построить, используя весь русский алфавит. Решение В русском алфавите 33 буквы. Необходимо построить произвольное пятибуквенное слово. Первую букву можно выбрать 33 способами, вторую — 33, третью — 33, четвертую — 33 и пятую — также 33 способами. По правилу умножения, общее количество таких слов будет равно: 33х33х33х33х33 = 335. Выборки Пусть имеется n объектов, и мы выбираем из них т объектов. Это и есть выборки. Количество выборок зависит от следующих факторов: считаем ли мы различными выборки из одинаковых элементов, но идущих в разном порядке (например, считаем ли мы выборки «abc» и «cab» одинаковыми или различными); возможно ли выбирать уже выбранный элемент повторно (например, в алфавите «abc» с возможностью повторного выбора элемента могут существовать выборки: «ааЬ», «ссс», «abb» и т. д.). Рассмотрим случай, когда элемент не может быть выбран повторно. Это — выборки без возвращения. Количество вариантов при использовании выборок без возвращения можно рассчитать по формуле: m = n(n-1)(n-2)... (n-m + 1) An Алгоритм выбора 1. На первом этапе у пас есть возможность выбрать один элемент из n. Это можно сделать п различными способами. 2.На втором этапе можно выбрать только один из оставшихся n-1 элементов, так как один из элементов уже выбран. 3.На m-м этапе можно выбрать из n-m + 1 оставшихся элементов. 4.По правилу произведения получаем количество всех возможных вариантов путем умножения количества вариантов, полученных на этапах с 1 по m. Пример Из группы в 20 человек нужно выбрать пятерых для участия в конкурсе. Решение Очевидно, что каждый человек может быть выбран не более одного раза. В дайной задаче n = 20 и m = 5. Сначала мы выбираем одного из 20, потом — одного из 19 (т. е. из п -1), одного из 18 (т. е. из n - 2), одного из 17 (т. е. из п - 3) и одного из 16 (т. е. из nm + 1). Всего возможных вариантов выбора: 20 x 19 x 18 x 17 x 16 = 1860480. Рассмотрим теперь случай, когда выборка может содержать какой-то элемент более одного раза. Это — выборки с возвращением. Пусть имеется n-буквенный алфавит. Вопрос: сколько m-буквенных слов можно получить в этом алфавите? Ответ: пт. Пример Из 5 букв «а», «б», «в», «г» и «д» составить все трехбуквенные слова. Решение Первую букву слова можно выбрать 5 способами, вторую — 5 способами и третью — 5 способами, так как элемент может быть выбран повторно. Всего вариантов: 5x5x5 = 53. Перестановки Часто требуется не выбирать какие-либо элементы, а просто изменять их порядок следования. Для этого применяются перестановки. Перестановка — это выборка n элементов из n возможных, в которой элемент не может быть выбран повторно. Для вычисления возможного количества перестановок используется формула: Pn=Ann=n(n-1)(n-2) … (n-n + 1) = n! Чтобы говорить о перестановках, введем понятие «факториал числа». Факториал числа — произведение всех натуральных чисел от 1 до этого числа. Факториал нуля равен 1. Факториал обозначается как n! Пример 3! =1*2*3 = 6. 5!=1*2*3*4*5 = 120. Пример Сколько можно получить пятибуквенных слов в алфавите «абвгд» Решение Так как нужно построить пятибуквенное слово, то этапов выбора элементов будет 5. Всего возможных вариантов: 5x4x3x2x1 = 5! =120. Математические основы криптографии. Построение ключей Придумывание хорошего шифра — дело трудоемкое и дорогостоящее. Поэтому желательно увеличить «время жизни» хорошего шифра и использовать его для шифрования как можно большего количества сообщений. Но при этом возникает опасность, что противник уже вскрыл шифр и спокойно читает защищаемую информацию. Если же в шифре есть сменный ключ, то, заменив его, можно сделать так, что разработанные противником методы уже не дадут ожидаемого эффекта. Безопасность защищаемой информации определяется в первую очередь ключом. Сам шифр считается известным противнику и доступным для предварительного изучения. Но применяемые в шифрах преобразования информации зависят от ключа. Поэтому у противника появляется новая задача — определить ключ, после чего можно легко прочитать зашифрованные этим ключом сообщения. Законные же пользователи, прежде чем обмениваться шифрованными сообщениями, должны тайно от противника обменяться ключами или установить одинаковый ключ на обоих концах канала связи. Ключ — это произвольный набор символов из данного алфавита, длина которого определяется при разработке метода шифрования. Алфавит — используемый набор символов. Например, алфавит русского языка состоит из 33 строчных и стольких же заглавных букв кириллицы. Алфавит математики — это десять цифр и знаки математических операций. Чтобы оценить стойкость криптоалгоритма, основываясь на длине ключа, необходимо подсчитать, сколько времени будет затрачено взломщиком для перебора всех возможных вариантов ключей для данного алгоритма. Пример Пусть ключ может содержать в себе 5 символов, а каждый символ может встречаться в ключе только один раз. Ключ построен в латинском строчном алфавите. Для составления и проверки одного ключа взломщику требуется 30 секунд. Сколько времени просуществует шифр с таким ключом? Решение Существует 7893600 возможных вариантов ключа. Для проверки всех ключей потребуется 7 893 600 * 30 = 236 808 000 секунд, или 2 740 суток. Ключи в двоичной системе счисления Каждый символ имеет собственный код в таблице ASCII-кодов (ASCII — American Standard Code for International Interchange). Если в качестве ключа берется последовательность символов, то ей можно всегда поставить в соответствие последовательность чисел. Некоторые алгоритмы в качестве ключа используют последовательность двоичных кодов, что позволяет применять к открытому тексту такие операции, как побитовое сложение и вычитание. Чтобы получить двоичный ключ, нужно каждому его элементу поставить в соответствие код из таблицы ASCII и затем перевести каждый полученный код в двоичную систему счисления. Пример Пусть ключом будет слово «текст». Соответствующая этому ключу последовательность кодов из таблицы ASCII: 226, 165, 170, 225, 226. Двоичный ключ будет выглядеть так: 1110001010100101101010101010000110100010.