5.1. Общие понятия

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

Криптография позволяет реализовать следующие механизмы защиты информации:

· шифрование данных, передаваемых по каналам связи или хранимых в базах данных;

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

· идентификацию (опознавание) субъекта или объекта системы (сети);

· аутентификацию (проверку подлинности) субъекта или объекта сети;

· контроль (разграничение) доступа к ресурсам системы (сети).

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

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

Законный получатель, приняв зашифрованный текст С, расшифровывает его с помощью обратного преобразования D = Ек-1 и получает исходное сообщение в виде открытого текста (М):

DK (С) = Ек-1к (М)) = М.

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

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

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

ЕК :  → .

Параметр К (ключ) выбирается из конечного множества , называемого пространством ключей.

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

1) симметричные криптосистемы (с одним ключом);

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

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

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

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

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

· открытый ключ K1 используется для зашифрования информации. Вычисляется из секретного ключа К2;

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

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

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

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

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

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

Для блочных шифров единицей шифрования является блок из нескольких байтов. Результат шифрования зависит от всех исходных байтов этого блока. Блочное шифрование применяется при пакетной передаче информации и кодировании файлов. Блочные шифры шифруют целые блоки информации (от 4 до 32 байт) как единое целое – это значительно увеличивает стойкость преобразований к атаке полным перебором и позволяет использовать различные математические и алгоритмические преобразования.

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

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

Методы взлома

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

· взлом с помощью простого перебора всех возможных вариантов (brute force attack). Как видно из названия, этот метод сводится к последовательному пере­бору всех вариантов;

· взлом с помощью анализа (analytic attack). Данный метод основывается на изуче­нии алгоритма с целью выявления его слабых мест. Обнаружив такие недостат­ки, можно снизить порядок сложности задачи путем выполнения тех или иных математических преобразований;

· взлом с использованием статистических данных (statistical attack). Суть данного метода состоит в определении архитектурных недостатков алгоритма с помо­щью определения статистических показателей зашифрованного текста. Стати­стическими показателями могут быть такие факты, как, например, более высо­кая вероятность того, что встроенный генератор случайных чисел постоянного запоминающего устройства помеща­ет в ключевой поток 1, а не 0;

· взлом по реализации (implementation attack). Даже если алгоритм очень надежен, это еще не означает, что так же надежна его аппаратная или программная реа­лизация. Именно на этом факте и основывается данный метод взлома. В 1995 году студент университета в Беркли установил, что в реализации алгоритма шифрования, который используется в браузере Netscape (несмотря на то, что в нем применяется 128-битовая криптопеременная), инициализирующим значе­нием (seed value) является системное время. Таким образом, применив систему с подобным генератором, он смог сгенерировать нужные ключи и взломать код;

· взлом по времени (timing attack). Данный метод взлома основывается на замере времени, которое уходит на расшифровку сообщения.

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

Если предпринятые криптоаналитические атаки не достигают поставленной цели и криптоаналитик не может, не имея подлинного ключа, вывести М из С или С’ из М’, то полагают, что такая криптосистема является криптостойкой.

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

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

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

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

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

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

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

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

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