
Криптографические методы и средства защиты информации
Февраль
14th, 2011
Администратор
Наука, занимающаяся вопросами безопасной связи (т.е посредством зашифрованных сообщений называется Криптологией (kryptos — тайный, logos — наука). Она в свою очередь разделяется на два направления криптографию и криптоанализ.
Криптография — наука о создании безопасных методов связи, о создании стойких (устойчивых к взлому) шифров. Она занимается поиском математических методов преобразования информации.
Криптоанализ — данный раздел посвящен исследованию возможности чтения сообщений без знания ключей, т. е. связана непосредственно со взломом шифров. Люди, занимающиеся криптоанализом и исследованием шифров называются криптоаналитиками.
Шифр — совокупность обратимых преобразований множества открытых текстов (т.е. исходного сообщения) на множество зашифрованных текстов, проводимых с целью их защиты. Конкретный вид преобразования определяется с помощью ключа шифрования.
Определим еще несколько понятий, которые необходимо усвоить, чтобы чувствовать себя уверенно. Во-первых, зашифрование — процесс применения шифра к открытому тексту. Во-вторых, расшифрование — процесс обратного применения шифра к зашифрованному тексту. И в третьих, дешифрование — попытка прочесть зашифрованный текст без знания ключа, т.е. взлом шифротекста или шифра. Здесь следует подчеркнуть разницу между расшифрованием и дешифрованием. Первое действие проводится законным пользователем, знающим ключ, а второе — криптоаналитиком или мощным хакером.
Криптографическая система — семейство преобразований шифра и совокупность ключей (т.е алгоритм + ключи). Само по себе описание алгоритма не является криптосистемой. Только дополненное схемами распределения и управления ключами оно становится системой. Примеры алгоритмов — описания DES, ГОСТ28.147-89. Дополненые алгоритмами выработки ключей, они превращаются в криптосиситемы. Как правило, описание алгоритма шифрования уже включает в себя все необходимые части.
Современные криптосистемы классифицируют следующим образом:
Криптосистемы могут обеспечивать не только секретность передаваемых сообщений, но и их аутентичность (подлинность), а также подтверждение подлинности пользователя.
Симметричные криптосистемы (с секретным ключом — secret key systems)- данные криптосистемы построены на основе сохранения в тайне ключа шифрования. Процессы зашифрования и расшифрования используют один и тот же ключ. Секретность ключа является постулатом. Основная проблема при применении симметричных криптосистем для связи заключается в сложности передачи обоим сторонам секретного ключа. Однако данные системы обладают высоким быстродействием. Раскрытие ключа злоумышленником грозит раскрытием только той информации, что была зашифрована на этом ключе. Американский и Российский стандарты шифрования DES и ГОСТ28.147-89, кандидаты на AES — все эти алгоритмы являются представителями симметричных криптосистем.
Асимметричные криптосистемы (системы открытого шифрования — о.ш., с открытым ключом и т.д.- public key systems) — смысл данных криптосистем состоит в том, что для зашифрования и расшифрования используются разные преобразования. Одно из них — зашифрование — является абсолютно открытым для всех. Другое же — расшифрование — остается секретным. Таким образом, любой, кто хочет что-либо зашифровать, пользуется открытым преобразованием. Но расшифровать и прочитать это сможет лишь тот, кто владее секретным преобразованием. В настоящий момент во многих асимметричных криптосистемах вид преобразования определяется ключом. Т.е у пользователя есть два ключа — секретный и открытый. Открытый ключ публикуется в общедоступном месте, и каждый, кто захочет послать сообщение этому пользователю — зашифровывает текст открытым ключом. Расшифровать сможет только упомянутый пользователь с секретным ключом. Таким образом, пропадает проблема передачи секретного ключа (как у симметричных систем). Однако, несмотря на все свои преимущества, эти криптосистемы достаточно трудоемки и медлительны. Стойкость асимметричных криптосистем базируется, в основном, на алгоритмической трудности решить за приемлимое время какую-либо задачу. Если злоумышленнику удастся построить такой алгоритм, то дискредетирована будет вся система и все сообщения, зашифрованые с помощью этой системы. В этом состоит главная опасность асимметричных криптосистем в отличие от симметричных. Примеры — системы о.ш. RSA, система о.ш. Рабина и т.д.
Одно из основных правил криптографии (если рассматривать ее коммерческое применение, т.к. на государственном уровне все несколько иначе) можно выразить следующим образом: взлом шифра с целью прочесть закрытую информацию должен обойтись злоумышленнику гораздо дороже, чем эта информация стоит на самом деле.
Тайнопись
Тайнописью называются приемы, с помощью которых содержание написанного скрывалось от тех, кто не должен был прочитать текст.
Начиная с самых древних времен, человечество обменивалось информацией, отсылая друг другу бумажные письма. В Древнем Великом Новгороде необходимо был сворачивать свои берестяные грамоты словами наружу — только таким образом они могли перевозиться и храниться, в противном случае они разворачивались самопроизвольно из-за изменения уровня влажности. Это было похоже на современные почтовые карточки, в которых текст, как известно, также открыт для чужих взоров.
Пересылка берестяных сообщений была очень широко распространена, однако имела один серьезный недостаток — содержимое посланий никак не было защищено корыстных интересов ни от праздного любопытства некоторых людей. В связи с этим со временем эти послания стали свертывать особым способом — так, чтобы текст сообщения оказался изнутри. Когда же и это оказывалось недостаточным, письмо стали запечатывать восковой, а в более позднее время сургучной персональной печатью. Подобные печати почти всегда были не столько и не только в моде, сколько в каждодневном обиходном употреблении. Обычно печати исполнялись в виде перстней с выпуклыми картинками. В античном отделе Эрмитаже хранится их великое множество.
По уверениям некоторых историков, печати были изобретены китайцами, хотя древние камеи Вавилона, Египта, Греции и Рима практически ничем не отличаются от печатей. Воск в давние времена, а сургуч и и в наши могут помочь поддерживать тайны почтовой переписки.
Точных дат и абсолютно бесспорных данных о тайнописи в древности сохранилось очень и очень мало, поэтому на нашем сайте многие факты представлены путем художественного анализа. Однако, вместе с изобретением шифров существовали, разумеется, и способы сокрытия текста от посторонних глаз. В древней Греции, к примеру, для этого как-то раз обрили раба, нанесли надпись на его голове, и, после того как волосы отросли, отправили с поручением к адресату.
Шифрова́ние — способ преобразования открытой информации в закрытую и обратно. Применяется для хранения важной информации в ненадёжных источниках или передачи её по незащищённым каналам связи. Согласно ГОСТ 28147-89, шифрование подразделяется на процесс зашифровывания и расшифровывания.
Стеганогра́фия (от греч. στεγανός — скрытый и греч. γράφω — пишу, буквально «тайнопись») — это наука о скрытой передаче информации путём сохранения в тайне самого факта передачи.
В отличие от криптографии, которая скрывает содержимое секретного сообщения, стеганография скрывает само его существование. Стеганографию обычно используют совместно с методами криптографии, таким образом, дополняя её.
Основные принципы компьютерной стеганографии и области её применения
К. Шеннон дал нам общую теорию тайнописи, которая является базисом стеганографии как науки. В современной компьютерной стеганографии существует два основных типа файлов: сообщение— файл, который предназначен для скрытия, и контейнер—файл, который может быть использован для скрытия в нем сообщения. При этом контейнеры бывают двух типов. Контейнер—оригинал (или “Пустой” контейнер) — это контейнер, который не содержит скрытой информации. Контейнер—результат (или “Заполненный” контейнер) — это контейнер, который содержит скрытую информацию. Под ключом понимается секретный элемент, который определяет порядок занесения сообщения в контейнер.
Основными положениями современной компьютерной стеганографии являются следующие:
1. Методы скрытия должны обеспечивать аутентичность и целостность файла.
2. Предполагается, что противнику полностью известны возможные стеганографические методы.
3. Безопасность методов основывается на сохранении стеганографическим преобразованием основных свойств открыто передаваемого файла при внесении в него секретного сообщения и некоторой неизвестной противнику информации — ключа.
4. Даже если факт скрытия сообщения стал известен противнику через сообщника, извлечение самого секретного сообщения представляет сложную вычислительную задачу.
В связи с возрастанием роли глобальных компьютерных сетей становится все более важным значение стеганографии. Анализ информационных источников компьютерной сети Internet позволяет вделать вывод, что в настоящее время стеганографические системы активно используются для решения следующих основных задач:
1. Защита конфиденциальной информации от несанкционированного доступа; 2. Преодоление систем мониторинга и управления сетевыми ресурсами; 3. Камуфлирования программного обеспечения; 4. Защита авторского права на некоторые виды интеллектуальной собственности.
Криптографическая стойкость (или криптостойкость) — способность криптографического алгоритма противостоять возможным атакам на него. Атакующие криптографический алгоритм используют методы криптоанализа. Стойким считается алгоритм, который для успешной атаки требует от противника недостижимых вычислительных ресурсов, недостижимого объёма перехваченных открытых и зашифрованных сообщений или же такого времени раскрытия, что по его истечению защищенная информация будет уже не актуальна, и т. Д
Типы криптостойких систем шифрования
Абсолютно стойкие системы
Доказательство существования абсолютно стойких алгоритмов шифрования было выполнено Клодом Шенноном и опубликовано в работе «Теория связи в секретных системах».[1] Там же определены требования к такого рода системам:
ключ генерируется для каждого сообщения (каждый ключ используется один раз)
ключ статистически надёжен (то есть вероятности появления каждого из возможных символов равны, символы в ключевой последовательности независимы и случайны)
длина ключа равна или больше длины сообщения
исходный (открытый) текст обладает некоторой избыточностью (является критерием оценки правильности расшифровки)
Стойкость этих систем не зависит от того, какими вычислительными возможностями обладает криптоаналитик. Практическое применение систем, удовлетворяющих требованиям абсолютной стойкости, ограничено соображениями стоимости и удобства пользования.
Некоторыми аналитиками утверждается, что Шифр Вернама является одновременно абсолютно криптографически стойким и к тому же единственным[источник не указан 360 дней] шифром, который удовлетворяет этому условию.
Достаточно стойкие системы
В основном применяются практически стойкие или вычислительно стойкие системы. Стойкость этих систем зависит от того, какими вычислительными возможностями обладает криптоаналитик. Практическая стойкость таких систем базируется на теории сложности и оценивается исключительно на какой-то определенный момент времени и последовательно c двух позиций:
вычислительная сложность полного перебора
известные на данный момент слабости (уязвимости) и их влияние на вычислительную сложность.
В каждом конкретном случае могут существовать дополнительные критерии оценки стойкости.
Сложность алгоритма позволяет оценить, насколько быстро растет его трудоёмкость с увеличением объема входных данных. Под трудоемкостью понимается количество элементарных операций, которые необходимо выполнить для решения задачи с помощью данного алгоритма. Обычно оценка сложности алгоритма представляется в виде O(f(N)), где O – функция сложности, а N – число обрабатываемых наблюдений или примеров. Наименее затратными являются алгоритмы, для которых функция сложности имеет вид f(N) = C и f(N) = C*N, где С – константа. В первом случае вычислительные затраты не зависят от количества обрабатываемых данных, а во втором – линейно возрастают. Самыми затратными являются алгоритмы, сложность которых имеет степенную и факториальную зависимости от числа обрабатываемых наблюдений.
Длина ключа
Количество информации в ключе, как правило, измеряется в битах.
Для современных симметричных алгоритмов (AES, CAST5, IDEA, Blowfish, Twofish) основной характеристикой криптостойкости является длина ключа. Шифрование с ключами длиной 128 бит и выше считается сильным, так как для расшифровки информации без ключа требуются годы работы мощных суперкомпьютеров. Для асимметричных алгоритмов, основанных на проблемах теории чисел (проблема факторизации — RSA, проблема дискретного логарифма — Elgamal) в силу их особенностей минимальная надёжная длина ключа в настоящее время — 1024 бит. Для асимметричных алгоритмов, основанных на использовании теории эллиптических кривых (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002), минимальной надёжной длиной ключа считается 163 бит, но рекомендуются длины от 191 бит и выше.
В этой методологии и для шифрования, и для расшифровки отправителем и получателем применяется один и тот же ключ, об использовании которого они договорились до начала взаимодействия. Если ключ не был скомпрометирован, то при расшифровке автоматически выполняется аутентификация отправителя, так как только отправитель имеет ключ, с помощью которого можно зашифровать информацию, и только получатель имеет ключ, с помощью которого можно расшифровать информацию. Так как отправитель и получатель — единственные люди, которые знают этот симметричный ключ, при компрометации ключа будет скомпрометировано только взаимодействие этих двух пользователей. Проблемой, которая будет актуальна и для других криптосистем, является вопрос о том, как безопасно распространять симметричные (секретные) ключи.
Алгоритмы симметричного шифрования используют ключи не очень большой длины и могут быстро шифровать большие объемы данных.
Порядок использования систем с симметричными ключами:
Безопасно создается, распространяется и сохраняется симметричный секретный ключ.
Отправитель создает электронную подпись с помощью расчета хэш-функции для текста и присоединения полученной строки к тексту
Отправитель использует быстрый симметричный алгоритм шифрования-расшифровки вместе с секретным симметричным ключом к полученному пакету (тексту вместе с присоединенной электронной подписью) для получения зашифрованного текста. Неявно таким образом производится аутентификация, так как только отправитель знает симметричный секретный ключ и может зашифровать этот пакет. Только получатель знает симметричный секретный ключ и может расшифровать этот пакет.
Отправитель передает зашифрованный текст. Симметричный секретный ключ никогда не передается по незащищенным каналам связи.
Получатель использует тот же самый симметричный алгоритм шифрования-расшифровки вместе с тем же самым симметричным ключом (который уже есть у получателя) к зашифрованному тексту для восстановления исходного текста и электронной подписи. Его успешное восстановление аутентифицирует кого-то, кто знает секретный ключ.
Получатель отделяет электронную подпись от текста.
Получатель создает другую электронную подпись с помощью расчета хэш-функции для полученного текста.
Получатель сравнивает две этих электронных подписи для проверки целостности сообщения (отсутствия его искажения)
Доступными сегодня средствами, в которых используется симметричная методология, являются:
Kerberos, который был разработан для аутентификации доступа к ресурсам в сети, а не для верификации данных. Он использует центральную базу данных, в которой хранятся копии секретных ключей всех пользователей.
Сети банкоматов (ATM Banking Networks). Эти системы являются оригинальными разработками владеющих ими банков и не продаются. В них также используются симметричные методологии.
Сравнение с асимметричными криптосистемами
Достоинства
скорость (по данным Applied Cryptography — на 3 порядка выше)
простота реализации (за счёт более простых операций)
меньшая требуемая длина ключа для сопоставимой стойкости
изученность (за счёт большего возраста)
Недостатки
сложность управления ключами в большой сети. Означает квадратичное возрастание числа пар ключей, которые надо генерировать, передавать, хранить и уничтожать в сети. Для сети в 10 абонентов требуется 45 ключей, для 100 уже 4950, для 1000 — 499500 и т. д.
сложность обмена ключами. Для применения необходимо решить проблему надёжной передачи ключей каждому абоненту, так как нужен секретный канал для передачи каждого ключа обеим сторонам.
Для компенсации недостатков симметричного шифрования в настоящее время широко применяется комбинированная (гибридная) криптографическая схема, где с помощью асимметричного шифрования передаётся сеансовый ключ, используемый сторонами для обмена данными с помощью симметричного шифрования.
Важным свойством симметричных шифров является невозможность их использования для подтверждения авторства, так как ключ известен каждой стороне.
В этой методологии ключи для шифрования и расшифровки разные, хотя и создаются вместе. Один ключ делается известным всем, а другой держится в тайне. Хотя можно шифровать и расшифровывать обоими ключами, данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом.
Все асимметричные криптосистемы являются объектом атак путем прямого перебора ключей, и поэтому в них должны использоваться гораздо более длинные ключи, чем те, которые используются в симметричных криптосистемах, для обеспечения эквивалентного уровня защиты. Это сразу же сказывается на вычислительных ресурсах, требуемых для шифрования, хотя алгоритмы шифрования на эллиптических кривых могут смягчить эту проблему. Брюс Шнейер в книге «Прикладная криптография: протоколы, алгоритмы и исходный текст на C» приводит следующие данные об эквивалентных длинах ключей.
Длина симметричного ключа |
Длина открытого ключа |
56 бит |
384 бит |
64 бита |
512 бит |
80 бит |
768 бит |
112 бит |
1792 бита |
128 бит |
2304 бита |
Для того чтобы избежать низкой скорости алгоритмов асимметричного шифрования, генерируется временный симметричный ключ для каждого сообщения и только он шифруется асимметричными алгоритмами. Само сообщение шифруется с использованием этого временного сеансового ключа и алгоритма шифрования/расшифровки, описанного в пункте 2.1.1.1. Затем этот сеансовый ключ шифруется с помощью открытого асимметричного ключа получателя и асимметричного алгоритма шифрования. После этого этот зашифрованный сеансовый ключ вместе с зашифрованным сообщением передается получателю. Получатель использует тот же самый асимметричный алгоритм шифрования и свой секретный ключ для расшифровки сеансового ключа, а полученный сеансовый ключ используется для расшифровки самого сообщения.
В асимметричных криптосистемах важно, чтобы сеансовые и асимметричные ключи были сопоставимы в отношении уровня безопасности, который они обеспечивают. Если используется короткий сеансовый ключ ( например, 40-битовый DES), то не имеет значения, насколько велики асимметричные ключи. Хакеры будут атаковать не их, а сеансовые ключи. Асимметричные открытые ключи уязвимы к атакам прямым перебором отчасти из-за того, что их тяжело заменить. Если атакующий узнает секретный асимметричный ключ, то будет скомпрометирован не только текущее, но и все последующие взаимодействия между отправителем и получателем.
Порядок использования систем с асимметричными ключами:
Безопасно создаются и распространяются асимметричные открытые и секретные ключи (см. раздел 2.2 ниже). Секретный асимметричный ключ передается его владельцу. Открытый асимметричный ключ хранится в базе данных X.500 и администрируется центром выдачи сертификатов (по-английски — Certification Authority или CA). Подразумевается, что пользователи должны верить, что в такой системе производится безопасное создание, распределение и администрирование ключами. Более того, если создатель ключей и лицо или система, администрирующие их, не одно и то же, то конечный пользователь должен верить, что создатель ключей на самом деле уничтожил их копию.
Создается электронная подпись текста с помощью вычисления его хэш-функции. Полученное значение шифруется с использованием асимметричного секретного ключа отправителя, а затем полученная строка символов добавляется к передаваемому тексту (только отправитель может создать электронную подпись).
Создается секретный симметричный ключ, который будет использоваться для шифрования только этого сообщения или сеанса взаимодействия (сеансовый ключ), затем при помощи симметричного алгоритма шифрования/расшифровки и этого ключа шифруется исходный текст вместе с добавленной к нему электронной подписью — получается зашифрованный текст (шифр-текст).
Теперь нужно решить проблему с передачей сеансового ключа получателю сообщения.
Отправитель должен иметь асимметричный открытый ключ центра выдачи сертификатов (CA). Перехват незашифрованных запросов на получение этого открытого ключа является распространенной формой атаки. Может существовать целая система сертификатов, подтверждающих подлинность открытого ключа CA. Стандарт X.509 описывает ряд методов для получения пользователями открытых ключей CA, но ни один из них не может полностью защитить от подмены открытого ключа CA, что наглядно доказывает, что нет такой системы, в которой можно было бы гарантировать подлинность открытого ключа CA.
Отправитель запрашивает у CA асимметричный открытый ключ получателя сообщения. Этот процесс уязвим к атаке, в ходе которой атакующий вмешивается во взаимодействие между отправителем и получателем и может модифицировать трафик, передаваемый между ними. Поэтому открытый асимметричный ключ получателя «подписывается» CA. Это означает, что CA использовал свой асимметричный секретный ключ для шифрования асимметричного отркытого ключа получателя. Только CA знает асимметричный секретный ключ CA, поэтому есть гарантии того, что открытый асимметричный ключ получателя получен именно от CA.
После получения асимметричный открытый ключ получателя расшифровывается с помощью асимметричного открытого ключа CA и алгоритма асимметричного шифрования/расшифровки. Естественно, предполагается, что CA не был скомпрометирован. Если же он оказывается скомпрометированным, то это выводит из строя всю сеть его пользователей. Поэтому можно и самому зашифровать открытые ключи других пользователей, но где уверенность в том, что они не скомпрометированы?
Теперь шифруется сеансовый ключ с использованием асимметричного алгоритма шифрования-расшифровки и асимметричного ключа получателя (полученного от CA и расшифрованного).
Зашифрованный сеансовый ключ присоединяется к зашифрованному тексту (который включает в себя также добавленную ранее электронную подпись).
Весь полученный пакет данных (зашифрованный текст, в который входит помимо исходного текста его электронная подпись, и зашифрованный сеансовый ключ) передается получателю. Так как зашифрованный сеансовый ключ передается по незащищенной сети, он является очевидным объектом различных атак.
Получатель выделяет зашифрованный сеансовый ключ из полученного пакета.
Теперь получателю нужно решить проблему с расшифровкой сеансового ключа.
Получатель должен иметь асимметричный открытый ключ центра выдачи сертификатов (CA).
Используя свой секретный асимметричный ключ и тот же самый асимметричный алгоритм шифрования получатель расшифровывает сеансовый ключ.
Получатель применяет тот же самый симметричный алгоритм шифрования-расшифровки и расшифрованный симметричный (сеансовый) ключ к зашифрованному тексту и получает исходный текст вместе с электронной подписью.
Получатель отделяет электронную подпись от исходного текста.
Получатель запрашивает у CA асимметричный открытый ключ отправителя.
Как только этот ключ получен, получатель расшифровывает его с помощью открытого ключа CA и соответствующего асимметричного алгоритма шифрования-расшифровки.
Затем расшифровывается хэш-функция текста с использованием открытого ключа отправителя и асимметричного алгоритма шифрования-расшифровки.
Повторно вычисляется хэш-функция полученного исходного текста.
Две эти хэш-функции сравниваются для проверки того, что текст не был изменен.
Особенности системы
Применение
Алгоритмы криптосистемы с открытым ключом можно использовать[7]
Как самостоятельные средства для защиты передаваемой и хранимой информации
Как средства распределения ключей. Обычно с помощью алгоритмов криптосистем с открытым ключом распределяют ключи, малые по объёму. А саму передачу больших информационных потоков осуществляют с помощью других алгоритмов.
Как средства аутентификации пользователей.
Преимущества
Преимущество асимметричных шифров перед симметричными шифрами состоит в отсутствии необходимости предварительной передачи секретного ключа по надёжному каналу.
В симметричной криптографии ключ держится в секрете для обеих сторон, а в асимметричной криптосистеме только один секретный.
При симметричном шифровании необходимо обновлять ключ после каждого факта передачи, тогда как в асимметричных криптосистемах пару (E,D) можно не менять значительное время.
В больших сетях число ключей в асимметричной криптосистеме значительно меньше, чем в симметричной.
Недостатки
Преимущество алгоритма симметричного шифрования над несимметричным заключается в том, что в первый относительно легко внести изменения.
Хотя сообщения надежно шифруются, но «засвечиваются» получатель и отправитель самим фактом пересылки шифрованного сообщения.[8]
Несимметричные алгоритмы используют более длинные ключи, чем симметричные. Ниже приведена таблица, сопоставляющая длину ключа симметричного алгоритма с длиной ключа несимметричного алгоритма с аналогичной криптостойкостью:
Длина симметричного ключа, бит |
Длина несимметричного ключа, бит |
56 |
384 |
64 |
512 |
80 |
768 |
112 |
1792 |
128 |
2304 |
Процесс шифрования-расшифрования с использованием пары ключей проходит на два-три порядка медленнее, чем шифрование-расшифрование того же текста симметричным алгоритмом.
В чистом виде асимметричные криптосистемы требуют существенно больших вычислительных ресурсов, потому на практике используются в сочетании с другими алгоритмами.
Для ЭЦП сообщение предварительно подвергается хешированию, а с помощью асимметричного ключа подписывается лишь относительно небольшой результат хеш-функции.
Для шифрования они используются в форме гибридных криптосистем, где большие объёмы данных шифруются симметричным шифром на сеансовом ключе, а с помощью асимметричного шифра передаётся только сам сеансовый ключ.
В криптографии линейным криптоанализом называется метод криптоаналитического вскрытия, использующий линейные приближения для описания работы шифра.
Линейный криптоанализ был изобретён японским криптологом Мицуру Мацуи (Mitsuru Matsui). Предложенный им в 1993 г. (на Еврокрипте-93) алгоритм был изначально направлен на вскрытие DES и FEAL. Впоследствии линейный криптоанализ был распространён и на другие алгоритмы. На сегодняшний день наряду с дифференциальным криптоанализом является одним из наиболее распространённых методов вскрытия блочных шифров. Разработаны атаки на блочные и потоковые шифры.
Открытие линейного криптоанализа послужило толчком к построению новых криптографических схем.
Принцип работы
Криптоанализ происходит в два шага. Первый — построение соотношений между открытым текстом, шифротекстом и ключом, которые справедливы с высокой вероятностью. Второй — использование этих соотношений вместе с известными парами открытый текст — шифротекст для получения битов ключа.
Защита от линейного криптоанализа
Для атаки на блочный шифр с помощью линейного криптоанализа достаточно, как было описано выше, получить линейное соотношение, существенно смещённое по вероятности от 1/2. Соответственно, первая цель при проектировании шифра, стойкого к атаке, — минимизировать вероятностные смещения, убедиться, что подобное соотношение не будет существовать. Другими словами, необходимо сделать так, чтобы при любом изменении текста или ключа в получающемся шифротексте ровно половина бит меняла своё значение на противоположное, причём каждый бит изменялся с вероятностью 1/2. Обычно это достигается путём выбора высоко нелинейных S-боксов и усилением диффузии.
Данный подход обеспечивает хорошее обоснование стойкости шифра, но чтобы строго доказать защищённость от линейного криптоанализа, разработчикам шифров необходимо учитывать более сложное явление — эффект линейных оболочек (linear hull effect).
Несколько более общая теория доказательства защищённости от класса атак, основанных на линейном криптоанализе, базируется на понятии декорреляции. Теория предполагает, чтобы устройство являлось так называемым декорреляционным модулем, эффективно блокирующим распространение традиционных линейных и дифференциальных характеристик. Следует заметить, что шифры, которые оптимальны против некоторого узкого класса атак, обычно слабы против других типов атак.
Управление ключами (УК) является настолько важной и развитой областью криптографии, что требует отдельного и детального рассмотрения. На системы УК возлагается огромный набор различных функций, обеспечение самых разных базовых и вновь приобретенных свойств криптосистем, которые ими укомплектованы. Подобные схемы могут выполнять хранение, пересылку, шифрование (то есть обеспечение конфиденциальности), аутентификацию, «сдачу на хранение» (депонирование) и разделение ключей. Единственным общим свойством систем УК является то, что как результат разнообразных трансформаций они должны снабдить криптосистему ключом (симметричным или асимметричным), на котором и будет произведен основной процесс шифрования документа. Техническая реализация систем управления открытыми ключами (англ. PKI — Public Key Infrastructure) описана в главе 22.
В зависимости от того, какой тип ключа генерирует в итоге система УК, производится их деление на системы управления, симметричными ключами и системы управления асимметричными ключами. Системы управления симметричными ключами делятся в свою очередь на системы с наличием начальных мастер-ключей и системы с нулевой начальной информацией. Как отдельный материал рассмотрены системы депонирования ключей и системы разделения секрета. К сожалению, данный раздел не может охватить даже половины различных схем УК и криптографических протоколов на их основе — на сегодняшний день исследователями разработано более сотни различных схем. Все чаще и чаще встречающееся сейчас введение третьего субъекта криптоопераций — доверенных лиц с различными функциями и полномочиями — породило целую волну протоколов, обеспечивающих новые свойства криптосистем (апеллируемость, подтверждение даты/времени подписания, депонирование ключей и т. п.). Рассмотрим только несколько наиболее нтересные и часто применяемых на практике схемы.
С предварительной частичной установкой
С предварительной частичной установкой
Все системы управления симметричными ключами вне зависимости от того, сколько участников задействовано в процессе, классифицируются в первую очередь на системы, в которых между субъектами уже установлены защитные каналы (то есть присутствуют секретные мастер-ключи), и на системы в которых этого канала нет. В первом случае основной целью системы управления ключами является либо генерация ключей сеансов, либо обновление ключевой информации, либо, что чаще всего требуется, обмен секретным ключом между двумя абонентами, которые до этого напрямую подобного ключа не имели, хотя цепочка доверенных связей (например, через общего знакомого) уже существовала. Во втором случае, когда два пользователя не обладают никакой общей секретной информацией, им необходимо установить ключ, причем таким образом, чтобы прослушивающий весь обмен сообщениями злоумышленник не смог создать свою «третью» копию ключа.
Случай, когда два абонента уже могут общаться между собой по защищенному каналу, и при этом желают обменяться «свежей» ключевой информацией на самом деле не содержит практически никаких тонкостей. Необходимо только уделить внимание невозможности переотправки злоумышленником перехваченного ранее пакета с такой же информацией. Для этого в систему вводятся автоинкрементные счетчики и/или штампы даты/времени.
Несколько больший интерес представляют системы с тремя субъектами: двумя абонентами и доверенным сервером ключей. В этом случае считается, что сервер обслуживает большое количество равноправных клиентов, с каждым из них у сервера уже установлен защищенный канал связи, т. е. обмен ключами произошел. Теперь на определенном этапе функционирования системы у двух клиентов сервера, никогда до этого не общавшихся, возникло желание обменяться некоей приватной информацией.
В подобной ситуации классический протокол установления ключа сеанса выглядит примерно следующим образом — рис. 20.9. Вызывающий абонент обозначен А, вызываемый абонент — В, доверенный сервер — S, ключ которым априори обменялись А и S — «A-S», ключ между абонентом В и S — «B-S».
Рис. 20.9. Запрос коммуникационного ключа у доверенного сервера
Ключи без предварительной установки
Схемы обмена (выработки) секретного ключа между двумя абонентами, не имевшими до этого защищенного канала, занимают отдельную и очень интересную нишу в современной криптографии. Задача у протоколов этого класса — создать на основе сообщений, передаваемых по открытым каналам связи, у двух абонентов идентичную ключевую информацию, причем сделать это так, чтобы любое третье лицо, законспектировавшее все прошедшие переговоры, этого ключа получить не смогло. На первый взгляд задача кажется совсем неразрешимой, но методы достижения этой цели существуют и при этом весьма надежны. Основой для подобных протоколов являются схемы, очень напоминающие асимметричное шифрование.
Первая схема выработки секретного ключа носит название схемы Шамира по фамилии ее создателя. Первоначально все стороны, участвующие в обмене ключей по данной схеме, договариваются о большом простом числе Р (не являющимся секретом), обладающим теми же свойствами, что и в схеме Эль-Гамаль. Любые два абонента (А и В), желающие создать секретный, ключ сеанса:
Создают соответственно два больших случайных числа (а и б), а также их инверсии по модулю р (а-1 modpи b-1 mod p) и держат их на своих системах в секрете.
Вызывающая сторона генерирует ключ сеанса k(k< р-2) и возводит его в степень а по модулю р, после чего отправляет полученное выражение вызываемому абоненту: M1=ka mod p.
Вызываемая сторона возводит полученное сообщение в степень bи отправляет обратно: М2 = (M1b mod p) = (kab mod p}.
Вызывающая сторона дешифрует полученное число инверсией числа а и отправляет обратно: МЗ = (М2-b mod р) = (kb mod p).
Наконец, абонент В дешифрует последнее сообщение инверсией числа b и получает желаемый ключ сеанса: k= (МЗ-b mod p) = (k mod p).
Асимметричная криптография, которая, казалось бы, решила проблему конфиденциальности сообщений без предварительной передачи секретного ключа по защищенному каналу, оказывается, всего лишь перенесла эту проблему в несколько иную область. При поверхностном взгляде на асимметричную систему кажется — «ищи в сети открытый ключ получателя шифруй им сообщение и — конфиденциальность достигнута». Но вот тут как раз появляется злоумышленник-посредник — это он гипотетически мог расположить на множестве серверов в сети свой открытый ключ под именем абонента-получателя и свой почтовый адрес. В дальнейшем при получении любого письма он дешифрует его своим закрытым ключом, читает и пересылает истинному получателю, зашифровав уже на настоящем открытом ключе, который он действительно знает. Не спасают при этом и схемы ЭЦП, если злоумышленник подменил открытые ключи как отправителя, так и получателя. Эти соображения приводят к тому, что предварительный защищенный канал все-таки необходим — для передачи открытого ключа и почтового адреса или хотя бы какого-либо подтверждающего блока данных (например, хэш-суммы открытого ключа).
Однако, асимметричные технологии сделали гораздо больший прорыв в схемах распространения ключей, чем симметричные — были изобретены сертификаты. Сертификатом называется блок информации, содержащий данные, уникально идентифицирующие абонента, его открытый ключ и транспортный адрес, причем этот блок информации подписан с помощью ЭЦП другого лица. Абонент, о котором идет речь в сертификате, называется владельцем ключа, субъект сети, поставивший подпись под сертификатом — заверяющим лицом (в законе РФ «Об электронно-цифровой подписи» – удостоверяющий центр). Предположим, абонент А никогда не общался с абонентом С и не может проверить подлинность его открытого ключа, но и А и С общались с неким абонентом В — тогда В может выступить заверяющим лицом и подписать сертификат на владельца ключа С. Тогда абонент А, получив сертификат и проверив подпись В, в чьем открытом ключе он уверен, может отныне полагаться и на открытый ключ абонента С.
В чем же заключается тот самый «прорыв» в схеме распространения ключей? Самое замечательное свойство сертификатов в том, что их использование можно объединять в цепочку. Действительно, предположим, двум желающим пообщаться абонентам А и D не удалось найти общего знакомого, но выяснилось, что А знает некоего В, a D знает некоего С, которые знакомы между собой. Значит, В может отправить А сертификат о ключе С, а С может отправить А сертификат о ключе D. В итоге А получает уверенность в том, что открытый ключ D, имеющийся у него на руках, истинен. Таким образом, была построена цепочка доверия, которая по своей сути представляет тот самый предварительный защищенный канал между А и D (отправителем и получателем), но канал этот был собран (и причем по очень несложной и надежной схеме) из нескольких уже существовавших очищенных каналов. Возможность подобного построения защищенного канала «по требованию» из нескольких коротких, уже существовавших, и есть преимущество открытой криптографии.
В настоящее время развитие описанной схемы по всему миру идет очень интенсивно. Наметились следующие основные тенденции. Во-первых, стали появляться субъекты, чьей единственной функцией является хранение и заверение ключей — центры сертификации (англ. Certification Authority —СА). Во-вторых, в процесс создания цепочек доверия стали активно включатся крупные производители программного обеспечения. Действительно, если пользователь ЭВМ приобретает лицензионное ПО в фирменной запечатанной коробке с голограммой и другими физическими степенями защиты, то задача подделки открытого ключа, находящегося на этом диске, становится на порядок более сложной. А имея несколько надежных открытых ключей крупных производителей ПО, пользователь уже в состоянии строить множество цепочек доверия к миллионам абонентов. И сами производители ПО получают в качестве дивидендов возможность аутентично присылать обновления программ по сети, подписанными теми же ключами, чьи открытые половинки были размещены на первоначальном компакт-диске.
Депонирование ключей
Депонированием ключей называется возможность прочтения зашифрованных сообщений абонента строго ограниченным кругом третьих лиц без его согласия. В подавляющем числе случаев этой группой являются либо уполномоченные государственные служащие (спецслужбы и суды), либо служба безопасности предприятия, на котором он работает. Существуют две основные схемы депонирования ключей. Первая заключается в передаче секретного ключа (при симметричном шифровании) либо закрытого ключа (в асимметричных схемах) ответственному органу на хранение. Согласно второй — шифрование каждой порции данных производится на сеансовом ключе, но сам ключ сеанса, кроме того что шифруется мастер-ключом абонента, дополнительно шифруется открытым ключом ответственного органа и прилагается к тому же сообщению.
Схемы имеют разные свойства и различные области применения. Очевидно, что первая схема гораздо более жесткая — у абонента полностью исчезает возможность передать сообщение без его просмотра ответственными лицами (кроме как сменить ключ или шифрующую систему целиком). По второй схеме пользователь потенциально может и не выполнить депонирующую фазу криптопротокол а — следовательно, применять подобную схему можно только там, где вмешательство абонента в процесс шифрования невозможно, либо там, где ему самому невыгодно отправлять сообщения без депонирования ключа. Вторая схема позволяет одновременно депонировать ключ нескольким сторонам — ведь шифровать ключ сеанса можно несколько раз разными открытыми ключами, каждая депонирующая запись добавляет только около 30 байт к сообщению. Кроме того, в схеме с ключом сеанса, если у абонента есть такое право, очень легко можно реализовать выбор им того круга лиц, которые смогут прочесть сообщение в экстренном случае.
Среди наиболее известных реализаций первой схемы — государстве программа США по установке программно-аппаратного комплекса шифрования CLIPPER. Устройство представляет собой микросхему, работающую на криптоалгоритме Skipjack. В микросхему зашит уникальный индикатор и секретный ключ, копия которого разделена на две части и хранится в двух различных ведомствах США. Разработка и внедрение этого проекта вызвали широкий резонанс общественности США. Классическим примером второй схемы депонирования ключей является технология фирмы Microsoft — Encrypted File System (EFS) (файловая система с шифрованием). Первой ОС, в которую была встроена EFS, является Microsoft Windows 2000. Любой пользователь персональной ЭВМ, с установлено на ней EFS, может выбрать набор файлов, которые при хранении на диске будут шифроваться секретным ключом пользователя. Шифрование производится с помощью ключа сеанса, т. е. секретный ключ пользователя играет роль мастер-ключа. Однако, кроме шифрования мастер-ключом пользователя, копии ключа сеанса шифруются дополнительно открытым ключом администратора этой персональной ЭВМ и открытыми ключами тех пользователей, которых администратор определил в группу «восстановления ключей» данному пользователю. Таким образом, к каждому файлу в EFS, кроме привычного зашифрованного ключа сеанса, добавляются несколько записей депонирования (или, в терминах Microsoft, — восстановления) ключей.
Криптология довольно четко делится на две части: криптографию (шифрование) и криптоанализ. Криптограф пытается найти методы обеспечения секретности и(или) аутентичности (подлинности) сообщений. Криптоаналитик пытается выполнить обратную задачу, раскрывая шифр или подделывая кодированные сигналы таким образом, чтобы они были приняты как подлинные. Исходное сообщение, которому криптограф применяет свое искусство, называется открытым текстом, а результат его работы — шифрованным текстом сообщения — шифртекстом, или криптограммой. Для управления процессом шифрования криптограф всегда использует секретный ключ. Часто (но не всегда) он передает этот секретный ключ каким-либо надежным способом (например, в «дипломате», пристегнутом наручниками к руке курьера) человеку (или машине), которому он собирается позднее послать криптограмму, составленную с использованием этого ключа.
Почти общепринятое допущение в криптографии состоит в том, что криптоаналитик противника имеет полный текст криптограммы. Кроме того, криптограф почти всегда руководствуется правилом, впервые сформулированным голландцем Керкхоффом: стойкость шифра должна определяться только секретностью ключа. Иными словами, правило Керкхоффа состоит в том, что весь механизм шифрования, кроме значения секретного ключа, известен криптоаналитику противника. В случае, если криптограф принимает только эти два допущения, то он разрабатывает систему, стойкую при анализе на основе только шифрованного текста. В случае, если к тому же криптограф допускает, что криптоаналитик противника сможет достать несколько отрывков открытого текста и соответствующего ему шифрованного текста, образованного с использованием секретного ключа, то разрабатывается система, стойка при анализе на основе открытого текста. Криптограф может даже допустить, что криптоаналитик противника способен ввести свой открытый текст и получить правильную криптограмму, образованную с использованием секретного ключа (анализ на основе выбранного открытого текста), или предположить, что криптоаналитик противника может подставить фиктивные криптограммы и получить текст, в который они превращаются при расшифровании (анализ на основе выбранного шифртекс-та), или допустить обе эти возможности (анализ на основе выбранного текста). Разработчики большинства современных шифров обеспечивают их стойкость к анализу на основе выбранного открытого текста даже в том случае, когда предполагается, что криптоаналитик противника сможет прибегнуть к анализу на основе шифртекста.
Термины
Чтобы яснее представлять себе область знаний, занимающуюся шифрованием/дешифровкой, рассмотрим подробнее терминологию.
В настоящее время проблемами защиты информации занимается криптология (kryрtos — тайный, logos — наука). Криптология разделяется на два направления — криптографию и криптоанализ. Цели этих двух направлений криптологии прямо противоположны.
Криптография — наука о защите информации от несанкционированного прочтения ее посторонними лицами. Криптография занимается разработкой и исследованием методов шифрования информации.
Под шифрованием понимается такое преобразование информации, которое делает исходные данные нечитаемыми и трудно раскрываемыми без знания специальной секретной информации — ключа. В результате шифрования открытый текст превращается в шифрограмму и становится нечитаемым без использования дешифрирующего преобразования. Шифрограмма может называться иначе: зашифрованный текст, криптограмма, шифровка или шифртекст. Шифрограмма позволяет скрыть смысл передаваемого сообщения.
Сфера интересов криптоанализа противоположная — разработка и исследование методов дешифрования (раскрытия) шифрограммы даже без знания секретного ключа.
Под ключом понимается секретная информация, определяющая, какое преобразование из множества возможных шифрующих преобразований выполняется в данном случае над открытым текстом.
Шифрование — преобразование информации, в результате которого исходный текст, который носит также название открытого текста, заменяется закрытым (шифрованным) текстом, то есть шифрограммой.
Дешифрование — обратный шифрованию процесс. На основе ключа зашифрованный текст (шифрограмма, шифровка) преобразуется в исходный открытый текст.
Процесс получения криптоаналитиками открытого сообщения из шифрованного сообщения без заранее известного ключа называется вскрытием или взломом шифра.
Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом, волновала человеческий ум с давних времен. История криптографии — ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была криптографической системой, так как в древних обществах ею владели только избранные. Священные книги Древнего Египта, Древней Индии тому примеры.
Криптографические методы защиты информации — это специальные методы шифрования, кодирования или иного преобразования информации, в результате которого ее содержание становится недоступным без предъявления ключа криптограммы и обратного преобразования. Криптографический метод защиты, безусловно, самый надежный метод защиты, так как охраняется непосредственно сама информация, а не доступ к ней (например, зашифрованный файл нельзя прочесть даже в случае кражи носителя). Данный метод защиты реализуется в виде программ или пакетов программ.
Современная криптография включает в себя четыре крупных раздела:
Симметричные криптосистемы. В симметричных криптосистемах и для шифрования, и для дешифрования используется один и тот же ключ. (Шифрование — преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом, дешифрование — обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный);
Криптосистемы с открытым ключом. В системах с открытым ключом используются два ключа — открытый и закрытый, которые математически связаны друг с другом. Информация шифруется с помощью открытого ключа, который доступен всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения.( Ключ — информация, необходимая для беспрепятственного шифрования и дешифрования текстов.);
Электронная подпись. Системой электронной подписи. называется присоединяемое к тексту его криптографическое преобразование, которое позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения.
Управление ключами. Это процесс системы обработки информации, содержанием которых является составление и распределение ключей между пользователями.
Основные направления использования криптографических методов — передача конфиденциальной информации по каналам связи (например, электронная почта), установление подлинности передаваемых сообщений, хранение информации (документов, баз данных) на носителях в зашифрованном виде.
Требования к криптосистемам
Процесс криптографического закрытия данных может осуществляться как программно, так и аппаратно. Аппаратная реализация отличается существенно большей стоимостью, однако ей присущи и преимущества: высокая производительность, простота, защищенность и т.д. Программная реализация более практична, допускает известную гибкость в использовании. Для современных криптографических систем защиты информации сформулированы следующие общепринятые требования:
зашифрованное сообщение должно поддаваться чтению только при наличии ключа;
число операций, необходимых для определения использованного ключа шифрования по фрагменту шифрованного сообщения и соответствующего ему открытого текста, должно быть не меньше общего числа возможных ключей;
число операций, необходимых для расшифровывания информации путем перебора всевозможных ключей должно иметь строгую нижнюю оценку и выходить за пределы возможностей современных компьютеров (с учетом возможности использования сетевых вычислений);
знание алгоритма шифрования не должно влиять на надежность защиты;
незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при использовании одного и того же ключа;
структурные элементы алгоритма шифрования должны быть неизменными;
дополнительные биты, вводимые в сообщение в процессе шифрования, должен быть полностью и надежно скрыты в шифрованном тексте;
длина шифрованного текста должна быть равной длине исходного текста;
не должно быть простых и легко устанавливаемых зависимостью между ключами, последовательно используемыми в процессе шифрования;
любой ключ из множества возможных должен обеспечивать надежную защиту информации;
алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования.
Рассмотрение задач из сферы криптографии начнем с задачи защиты данных, передаваемых по открытым каналам связи в наиболее полной постановке: В системе имеются две легальные стороны — «отправитель» и «получатель». Информационный процесс заключается в передаче сообщения от первого второму и считается протекающим нормально, если получатель получит сообщение без искажений, кроме него никто не ознакомится с содержанием сообщения, и если стороны не будут выставлять претензий друг другу. В задаче также присутствует злоумышленник, имеющий доступ к каналу передачи данных и стремящийся добиться отклонений от нормального течения процесса. Кроме того, каждая из легальных сторон может предпринять злоумышленные действия в отношении другой стороны. Перечислим возможные угрозы:
1. Угрозы со стороны злоумышленника. 1.1. Ознакомление с содержанием переданного сообщения. 1.2. Навязывание получателю ложного сообщения — как полная его фабрикация, так и внесение искажений в действительно переданное сообщение. 1.3. Изъятие переданного отправителем сообщения из системы таким образом, чтобы получатель не узнал о факте передачи сообщения; 1.4. Создание помех для нормальной работы канала передачи связи, то есть нарушение работоспособности канала связи.
2. Угрозы со стороны законного отправителя сообщения: 2.1. Разглашение переданного сообщения. 2.2. Отказ от авторства в действительности переданного им сообщения. 2.3. Утверждение, что некоторое сообщение отправлено получателю когда в действительности отправка не производилась.
3. Угрозы со стороны законного получателя сообщения: 3.1. Разглашение полученного сообщения. 3.2. Отказ от факта получения некоторого сообщения когда в действительности оно было им получено. 3.3. Утверждение, что некоторое сообщение получено от отправителя когда в действительности предъявленное сообщение сфабриковано самим получателем.
Как правило, угроза работоспособности канала связи (угроза 1.4) наиболее эффективно достигается нарушением физической среды передачи данных (разрушение линий передачи и узлов обработки данных) или созданием помех («глушение» радиосигнала, бомбардировка системы большим количеством ложных сообщений — «спам», и т.д.). Близко к ней находится угроза 1.3 — изъятие сообщения из канала связи. Эффективной защиты криптографическими средствами от этих угроз не существует, поэтому они обычно не рассматривается в работах по криптографии, проблема решается другими методами. Так, для устранения угрозы 1.3 обычно используется квитирование — высылка получателем отправителю квитанции (подтверждения) на полученное сообщение. Также в рамках криптографии отсутствует решение, которое бы устранило угрозы 2.1 и 3.1 — разглашение секретных данных одной из легальных сторон со «списыванием» этого на другую сторону или на ненадежность канала связи.
Оказалось, что сформулированная выше задача за вычетом угроз 1.3, 1.4, 2.1, 3.1 может быть разделена на три подзадачи, которые решаются независимо друг от друга и характеризуются собственными наборами угроз из приведенного списка:
· «классическая задача криптографии» — защита данных от разглашения и искажения при передаче по открытому каналу связи; · «подпись электронного документа» — защита от отказа от авторства сообщения; · «вручение заказного письма» — защита от отказа от факта получения сообщения;
Рассмотрим более подробно понятие злоумышленник. Как было отмечено в предыдущем выпуске, злоумышленник в криптографии есть персонифицированный набор целей по отклонению информационного процесса от его штатного протекания, и возможностей по достижению этих целей. Рассмотрение проблемы ведется в предположении, что злоумышленник действует наилучшим возможным в его ситуации образом. В качестве злоумышленников могут выступать:
· законные участники процесса; · субъекты, не являющиеся законными участниками процесса, но имеющие доступ к информации, передаваемой и обрабатываемой в ходе осуществления информационного взаимодействия и могущие повлиять на его протекание.
Если законные участники процесса не могут выступать в качестве злоумышленников, такой процесс называется «информационным взаимодействием со взаимным доверием сторон друг другу«, понятно, что в противном имеет место «процесс информационного взаимодействия в условии отсутствия взаимного доверия сторон«. Классы методов защиты процессов обоих типов существенно отличаются друг от друга, вторая задача сложнее — общеизвестно, что практически любую систему намного легче защитить от проникновения извне, чем от злоумышленных действий со стороны ее законных пользователей.
Надо отметить, что когда речь идет о взаимном доверии сторон, имеется в виду нечто большее, чем просто отношение субъектов информационного взаимодействия друг к другу. При определении этого должны рассматриваться многие факторы, например среда и окружение, в которых они работают. Для иллюстрации сказанного рассмотрим задачу защиты программного обеспечения компьютерных систем от несанкционированной модификации, которая обычно решается следующим образом:
1. При инсталляции и «легальной» модификации программ для каждой защищаемой единицы (обычно это исполняемый файл) вырабатывается контрольный код, являющийся «дальним родственником» обыкновенной контрольной суммы.
2. В соответствии с некоторым регламентом (например, при каждой загрузке системы, или один раз в определенный промежуток времени, или перед запуском программы на выполнение) проверяется соответствие защищаемой единицы контрольному коду.
Если компьютер действительно персональный, то оба эти действия выполняет один и тот же человек, но требования к «чистоте» среды совершенно различные. Первое действие выполняется при добавлении в систему нового программного обеспечения или перенастройке уже существующего, что в большинстве реальных узкоспециализированных систем происходит достаточно редко. Необходимым условием выполнения этой операции является отсутствие «закладок» в п/о, вырабатывающем контрольный код. «Чистая» среда обычно создается загрузкой операционной системы с носителя, физически защищенного от записи — единожды сформированного и выверенного, и с тех пор остающегося неизменным.
Второе действие осуществляется значительно чаще, и по определению, может выполняться в не столь «чистой» среде. Поэтому, даже если обе процедуры выполняет один и тот же человек, с точки зрения задачи это все равно два различных субъекта, и пользователь-создатель контрольного кода не должен доверять пользователю-проверяющему. В силу вышеизложенного для решения данной задачи больше подходят схемы, основанные на электронно-цифровой подписи, эффективно работающие в условиях отсутствия взаимного доверия сторон, нежели использование криптографической контрольной комбинации на основе симметричных шифров.
Задачи, решаемые криптографическими методами, отличаются друг от друга следующим:
· характером защищаемого информационного взаимодействия; · целями злоумышленников; · возможностями злоумышленников.
Простейший случай информационного взаимодействия — это передача данных от одного субъекта другому. Соответственно, самая распространенная задача из сферы защиты — защита передаваемой по каналам связи или хранимой в компьютерной системе информации, она исторически самая первая и до сих пор наиболее важная. Впрочем, необходимо добавить, что в последнее время в связи с проникновением электронных технологий во многие сферы жизни человека и общества возникают и принципиально новые проблемы. Одни из них первичны, такие, как уже упомянутая проблема защиты данных в каналах связи. Другие вторичны и существуют только в рамках конкретного решения той или иной первичной задачи. Например, «открытое распределение ключей» — совместная выработка двумя субъектами в ходе сеанса связи по открытому каналу общего секретного ключа таким образом, чтобы злоумышленники, «прослушивающие» канал, не смогли получить тот же самый ключ.
Рассмотрение задач из сферы криптографии начнем с задачи защиты данных, передаваемых по открытым каналам связи в наиболее полной постановке: В системе имеются две легальные стороны — «отправитель» и «получатель». Информационный процесс заключается в передаче сообщения от первого второму и считается протекающим нормально, если получатель получит сообщение без искажений, кроме него никто не ознакомится с содержанием сообщения, и если стороны не будут выставлять претензий друг другу. В задаче также присутствует злоумышленник, имеющий доступ к каналу передачи данных и стремящийся добиться отклонений от нормального течения процесса. Кроме того, каждая из легальных сторон может предпринять злоумышленные действия в отношении другой стороны. Перечислим возможные угрозы:
1. Угрозы со стороны злоумышленника. 1.1. Ознакомление с содержанием переданного сообщения. 1.2. Навязывание получателю ложного сообщения — как полная его фабрикация, так и внесение искажений в действительно переданное сообщение. 1.3. Изъятие переданного отправителем сообщения из системы таким образом, чтобы получатель не узнал о факте передачи сообщения; 1.4. Создание помех для нормальной работы канала передачи связи, то есть нарушение работоспособности канала связи.
2. Угрозы со стороны законного отправителя сообщения: 2.1. Разглашение переданного сообщения. 2.2. Отказ от авторства в действительности переданного им сообщения. 2.3. Утверждение, что некоторое сообщение отправлено получателю когда в действительности отправка не производилась.
3. Угрозы со стороны законного получателя сообщения: 3.1. Разглашение полученного сообщения. 3.2. Отказ от факта получения некоторого сообщения когда в действительности оно было им получено. 3.3. Утверждение, что некоторое сообщение получено от отправителя когда в действительности предъявленное сообщение сфабриковано самим получателем.
Что такое криптографический протокол
Протокол — это последовательность шагов, которые предпринимают две или большее количество сторон для совместного решения задачи. Все шаги следуют в порядке строгой очередности, и ни один из них не может быть сделан прежде, чем закончится предыдущий. Кроме того, любой протокол подразумевает участие, по крайней мере, двух сторон. В одиночку можно, например, смешать и выпить коктейль, но к протоколу это не имеет никакого отношения. Поэтому придется угостить кого-нибудь сделанным коктейлем, чтобы его приготовление и дегустация стали настоящим протоколом. И наконец протокол обязательно предназначен для достижения какой-то цели.
Протоколы имеют и другие отличительные черты:
Криптографическим протоколом называется такой, в основе которого лежит криптографический алгоритм. Однако целью криптографического протокола зачастую является не только сохранение информации в тайне от посторонних. Участники криптографического протокола могут быть близкими друзьями, у которых нет друг от друга секретов, а могут являться настолько непримиримыми врагами, что каждый из них отказывается сообщить другому. какое сегодня число. Тем не менее, им может понадобиться поставить свои подписи под совместным договором или удостоверить свою личность. В этом случае криптография нужна, чтобы предотвратить или обнаружим, подслушивание посторонними лицами, не являющимися участниками протокола, а также не допустить мошенничества. Поэтому часто требуется, чтобы криптографический протокол обеспечивал следующее: его участники не могут сделать или узнать больше того, что определено протоколом. Зачем нужны криптографические протоколы В повседневной жизни нам приходится сталкиваться с протоколами буквально на каждом шагу — играя в любые игры, делая покупки в магазинах или голосуя на выборах. Многими протоколами нас научили пользоваться родители, школьные учителя и друзья. Остальные мы сумели узнать самостоятельно. В настоящее время люди все чаще контактируют друг с другом при помощи компьютеров. Компьютеры же, в отличие от большинства людей, в школу не ходили, у них не было родителей, да и учиться самостоятельно они не в состоянии. Поэтому компьютеры приходится снабжать формализованными протоколами, чтобы они смогли делать то, что люди выполняют особо не задумываясь. Например, если в магазине не окажется кассового аппарата, вы нее равно сможете купить в нем необходимую вещь. Однако такое кардинальное изменение протокола поставило бы бедный компьютер в полный тупик. Большинство протоколов, которые люди используют при общении друг с другом с глазу на глаз, хорошо себя зарекомендовали только потому, что их участники имеют возможность вступить в непосредственный контакт. Взаимодействие с другими людьми через компьютерную сеть, наоборот, подразумевает анонимность. Будете ли вы играть с незнакомцем в преферанс, не видя, как он тасует колоду и раздает карты? Доверите ли вы своп деньги совершенно постороннему человеку, чтобы он купил вам что-нибудь в магазине? Пошлете ли вы свой бюллетень голосования по почте, зная, что с ним сможет ознакомиться любой из почтовых работников и потом рассказать всем о ваших нетрадиционных политических пристрастиях? Думаю, что нет. Глупо считать, что компьютерные пользователи ведут себя более честно, чем абсолютно случайные люди. То же самое касается и сетевых администраторов, и проектировщиков компьютерных сетей. Большинство из них и в самом деле честные люди, однако есть и такие, кто может причинить нам большие неприятности. Поэтому так нужны криптографические протоколы. использование которых позволяет защититься от непорядочных людей. Распределение ролей Чтобы описание протоколов было более наглядным, имена их участников однозначно определяют роли, им уготованные. Пусть Антон и Борис принимают участие во всех двухсторонних протоколах. Как правило, начинает выполнение шагов, предусмотренных протоколом, Антон, а ответные действия предпринимает Борис. Если протокол является грех- или четырехсторонним, исполнение соответствующих ролей берут на себя Владимир и Георгий. Об остальных персонажах подробнее будет рассказано позже. Роли, которые играют участники протоколов Антон- Первый участник протоколов Борис- Второй участник протоколов Владимир- Участник трех- и четырехсторонних протоколов Георгий- Участник четырехсторонних протоколов Дмитрий- Доверенное лицо, наделенное правами арбитра Зиновий- Злоумышленник Кирилл- Контролер Олег- Охранник Петр- Подслушивает за участниками протоколов Сергей- Свидетель Протокол с арбитражем Арбитр — участник протокола, которому остальные участники полностью доверяют, предпринимая соответствующие действия для завершения очередного шага протокола. Это значит, что у арбитра нет личной заинтересованности в достижении тех или иных целей, преследуемых участниками протокола, и он не может выступить на стороне любого из них. Участники протокола также принимают на веру все, что скажет арбитр, и беспрекословно следуют всем его рекомендациям. В протоколах, которым мы следуем в повседневной жизни, роль арбитра чаще играет адвокат. Однако попытки перенести протоколы с адвокатом в качестве арбитра из повседневной жизни в компьютерные сети наталкиваются на существенные препятствия. Легко довериться адвокату, про которого известно, что у него незапятнанная репутация, и с которым можно установить личный контакт. Однако если два участника протокола не доверяют друг другу, арбитр, не облаченный в телесную оболочку и существующий где-то в недрах компьютерной сети, вряд ли будет пользоваться у них доверием. Расценки за услуги, оказываемые адвокатом, известны. Кто и каким образом будет оплачивать издержки за аналогичные услуги арбитра в компьютерной сети? Введение арбитра в любой протокол увеличивает время, затрачиваемое на реализацию этого протокола. Поскольку арбитр контролирует каждый шаг протокола, его участие и очень сложных протоколах может стать узким местом при их реализации. Увеличение числа арбитров позволяет избавиться от данного узкого места, однако одновременно возрастут и накладные расходы на реализацию протокола. В силу того, что все участники протокола должны пользоваться услугами одного и того же арбитра, действия злоумышленника, который решит нанести им ущерб, будут направлены, в первую очередь, против этого арбитра. Следовательно, арбитр представляет собой слабое звено любого протокола с арбитражем. Несмотря на отмеченные препятствия, протоколы с арбитражем находи г широкое применение на практике. В ходе дальнейшего изложения доверенное лицо, наделенное правами арбитра, будет именоваться Дмитрием. Протокол с судейством Чтобы снизить накладные расходы на арбитраж, протокол, в котором участвует арбитр, часто делится на две части. Первая полностью совпадает с обычным протоколом без арбитража, а ко второй прибегают только в случае возникновения разногласий между участниками. Для разрешения конфликтов между ними используется особый арбитр — судья. Подобно арбитру, судья является незаинтересованным участником протокола, которому остальные участники доверяют. Однако в отличие от арбитра. судья участвует отнюдь не в каждом шаге протокола. Услугами судьи пользуются, только если требуется разрешить сомнения относительно правильности действий участников протокола. Если таких сомнений ни у кою не возникает, судейство не понадобится. В компьютерных протоколах с судейством предусматривается наличие данных, проверив которые доверенное третье лицо может решить, не смошенничал ли кто-либо из участников этого протокола. Хороший протокол с судейством также позволяет выяснить, кто именно ведет себя нечестно Это служит прекрасным превентивным средством против мошенничества со стороны участников такого протокола. Самоутверждающийся протокол Самоутверждающийся протокол не требует присутствия арбитра для завершения каждого шага протокола. Он также не предусматривает наличие судьи для разрешения конфликтных ситуаций. Самоутверждающийся протокол устроен так, что, если один из его участников мошенничает, другие смогут моментально распознать нечестность, проявленную этим участником, и прекратить выполнение дальнейших шагов протокола. Конечно же, хочется, чтобы существовал универсальный самоутверждающийся протокол на все случаи жизни. Однако на практике в каждом конкретном случае приходится конструировать свой специальный самоутверждающийся протокол.
Протоколы с посредником
Посредник - это незаинтересованная третья сторона, которой доверено завершение протокола (см. 1-й (а)). Незаинтересованность означает, что у посредника нет заинтересованности в результате работы протокола и склонности к одной из сторон. «Доверено» означает, что все участники протокола принимают все, что скажет посредник за истину, все его действия — как правильные, и уверены в том, что посредник выполнит свою часть протокола. Посредники помогают реализовать работу протоколов взаимодействия недоверяющих друг другу сторон.
В реальном мире в качестве посредников часто выступают юристы . Например, Алиса продает незнакомому ей Бобу машину. Боб хочет заплатить чеком, но у Алисы нет способа проверить, действителен ли чек. Алиса хочет, чтобы расчет по чеку был произведен прежде, чем право собственности перейдет к Бобу . Боб, который верит Алисе не больше, чем она ему, не хочет передавать чек, не получив права собственности.
Посредничество юриста устроит обоих. С его помощью Алиса и Боб могут выполнить следующий протокол, чтобы защитить себя от обмана:
(1) А передает право собственности юристу.
(2) Б передает чек юристу.
(3) А депонирует чек.
(4) Дождавшись оплаты чека юрист передает право собственности Б. Если чек не оплачен в течение определенного времени, А доказывает этот факт юристу, и тот возвращает право собственности А.
В этом протоколе А верит, что юрист не передаст Б право собственности до тех пор, пока чек не б у-дет оплачен, и вернет право собственности А, если чек оплачен не будет. Б верит, что юрист будет обладать правом собственности до тех пор, пока чек не будет оплачен, и передаст право собственности Бобу сразу же после оплаты чека. Юрист не заботится об оплате чека. Он в любом случае выполнит свою часть протокола, ведь ему заплатят в любом случае.
В этом примере юрист играет роль посредника. Юристы часто выступают в роли посредников при завещ а-ниях и иногда при переговорах о контракте. Различные биржи выступают в качестве посредников между пок у-пателями и продавцами.
В качестве посредника может выступить и банк — для покупки машины :
(1) Б заполняет чек и передает его в банк.
(2) Если на счету Б достаточно денег для покрытия чека, банк заверяет чек и возвращает его Б.
(3) А передает Б право собственности, а Б передает А заверенный чек.
(4) А депонирует чек.
Этот протокол работает, потому что А верит банковскому свидетельству. А верит, что банк сохранит деньги Б для нее и не использует их для финансирования сомнительных операций с недвижимостью в банановых республиках.
Другим общепринятым посредником является нотариус. Когда Б получает от А заверенный нотариусом документ, он убежден, что А подписала документ по своему желанию и собственноручно. При необходимости нотариус может выступить в суде и засвидетельствовать этот факт .
Понятие посредника старо как мир. Всегда существовали определенные люди — вожди, жрецы и тому подобное — обладавшие влиянием, позволяющим им действовать справедливо. Посредники играют определенную роль в нашем обществе, обман доверия подорвал бы занимаемое ими положение . Юристы-посредники, нарушающие правила игра, подвергаются наказанию — например, исключению из коллегии адвокатов . Это идеальная картина, в реальном мире положение, к сожалению, может отличаться от нее .
Этот идеал можно перенести на мир компьютеров, но с компьютерными посредниками существует ряд пр о-блем:
— Легко найти нейтральную третью сторону, которой можно доверять, если вы знаете посредника и можете лично увидеть его. Две стороны, относящиеся друг к другу с подозрением, с тем же подозрением отнесутся и к безликому посреднику, затерянному где-то в сети.
— Компьютерная сеть должна обеспечить поддержку посредника. Занятость юристов общеизвестна, на кого в сети лягут дополнительные накладные расходы ?
— Существует задержка, присущая всем протоколам с посредником.
— Посредник должен принимать участие в каждой транзакции, являясь узким местом в крупномасштабных реализациях любого протокола. Рост числа посредников смягчит эту проблему, но вырастет и цена этой услуги.
— Так как каждый в сети должен доверять посреднику, то посредник представляет собой слабое место сети при попытке ее взлома.
Несмотря на это посредничество все еще активно используется. В протоколах с использованием посредника эту роль будет играть Трент.
Арбитражные протоколы
Используемый из-за высокой стоимости найма посредников арбитражные протокол может быть разбит на два подпротокола нижнего уровня. Первый представляет собой протокол без посредника, используемый при желании сторон выполнить протокол. Другой представляет собой протокол с посредником, приглашаемым в исключительных обстоятельствах — при наличии разногласий между сторонами. Соответствующий специальный посредник называется арбитром.
Арбитр, как и посредник, представляет собой незаинтересованного участника протокола, которому доверяют обе стороны. В отличие от посредника он непосредственно не принимает участия в каждой отдельной реализации протокола и приглашается только для проверки честности выполнения протокола сторонами.
Профессиональными арбитрами являются судьи. В отличие от нотариусов к судьям обращаются только при появлении разногласий. А и Б могут заключить контракт без участия судьи. Судья никогда не узнает о контракте, если одна из сторон не подаст на другую в суд. Протокол подписания контракта можно формализ о-вать следующим образом:
Подпротокол без посредника (выполняется всегда):
(1) А и Б договариваются об условиях контракта.
(2) А подписывает контракт.
(3) Б подписывает контракт.
Подпротокол с использованием арбитра (выполняется при наличии разногласий):
(4) А и Б предстают перед судьей.
(5) А предоставляет свои доказательства.
(6) Б предоставляет свои доказательства.
(7) Судья принимает решение на основании доказательств.
Различие используемых в этой книге понятий посредника и арбитра состоит в том, что участие арбитра происходит не всегда. Стороны обращаются к судье только при разногласиях. Если разногласий нет, судья не нужен.
Существуют арбитражные компьютерные протоколы. Они предполагают, что участвующие стороны честны, но при подозрении о возможном мошенничестве по существующему набору данных третья сторона, которой доверяют участники, сможет обнаружить факт мошенничества. Хороший арбитражный протокол позволяет арбитру установить и личность мошенника. Арбитражные протоколы обнаруживают, а не предупреждают моше н-ничество. Неотвратимость обнаружения выступает в качестве предупредительной меры, предотвращая моше н-ничество.
Самодостаточные протоколы
Самодостаточный протокол является лучшим типом протокола. Он полностью обеспечивает честность сторон. Для выполнения протокола не нужен ни посредник, не решающий споры арбитр . Само построение протокола обеспечивает отсутствие споров. Если одна из сторон попытается смошенничать, мошенн и-чество будет немедленно обнаружено другой стороной, и протокол прекратит выполняться. Чего бы не пыталась добиться мошенничающая сторона, этому не суждено случиться.
В лучшем мире любой протокол должен быть самодостаточным, но, к несчастью, не существует самодост а-точных протоколов для каждой ситуации.
Попытки вскрытия протоколов
Криптографические попытки взлома могут быть направлены против криптографических алгоритмов, и с-пользуемых в протоколах, против криптографических методов, используемых для реализации алгоритмов и протоколов или непосредственно против протоколов. Поскольку в этом разделе книги обсуждаются именно пр о-токолы, я предполагаю, что криптографические алгоритмы и методы безопасны , и рассматриваю только попытки вскрытия протоколов.
Люди могут использовать множество способов взломать протокол. Некоторые, не являясь участниками пр о-токола, могут «подслушивать» какую-то часть или весь протокол. Это называется пассивным вскрытием, так как взломщик не воздействует на протокол. Все, что он может сделать — это проследить за протоколом и поп ы-таться добыть информацию. Этот тип вскрытия соответствует вскрытию с использованием только шифротекста, обсуждавшемуся в разделе 1.1. Так как пассивные вскрытия трудно обнаружить, протоколы стремятся предо т-вращать, а не обнаруживать их. В этих протоколах роль злоумышленника будет играть Е.
В другом случае взломщик может попытаться изменить протокол для собственной выгоды. Он может выдать себя за другого, ввести новые сообщения в протокол, заменить одно сообщение другим, повторно передать ст а-рые сообщения, разорвать канал связи или изменить хранящуюся в компьютере информацию. Такие действия называются активным вскрытием, так как они требуют активного вмешательства . Эти формы вскрытия зависят от вида сети.
Пассивные взломщики стараются получить информацию об участниках протокола . Они собирают сообщения, переданные различными сторонами, и пытаются криптоанализировать их . Попытки активного вскрытия, с другой стороны, преследуют более широкий набор целей. Взломщик может быть заинтересован в получении информации, ухудшении работы системы или получении несанкционированного доступа к ресурсам.
Активные вскрытия более серьезны, особенно в отношении протоколов, в которых стороны не обязательно доверяют друг другу. Взломщик не обязательно кто-то совсем посторонний, он может быть зарегистрированным пользователем системы и даже системным администратором. Может быть даже несколько активных взломщ и-ков, работающих вместе. В этой книге роль злонамеренного активного взломщика будет играть Ме.
Взломщиком может быть и один из участников протокола. Он может обманывать, выполняя протокол, или вовсе не следовать правилам протокола. Такой взломщик называется мошенником. Пассивные мошенники выполняют правила протокола, но стараются получить больше информации, чем предусмотрено протоколом. Активные мошенники нарушают работу протокола, пытаясь смошенничать.
Шифрование — это способ изменения сообщения или другого документа, обеспечивающее искажение (сокрытие) его содержимого. (Кодирование – это преобразование обычного, понятного, текста в код. При этом подразумевается, что существует взаимно однозначное соответствие между символами текста(данных, чисел, слов) и символьного кода – в этом принципиальное отличие кодирования от шифрования. Часто кодирование и шифрование считают одним и тем же, забывая о том, что для восстановления закодированного сообщения, достаточно знать правило подстановки(замены). Для восстановления же зашифрованного сообщения помимо знания правил шифрования, требуется и ключ к шифру. Ключ понимается нами как конкретное секретное состояние параметров алгоритмов шифрования и дешифрования. Знание ключа дает возможность прочтения секретного сообщения. Впрочем, далеко не всегда незнание ключа гарантирует то, что сообщение не сможет прочесть посторонний человек.). Шифровать можно не только текст, но и различные данные – от файлов баз данных и текстовых процессоров до файлов изображений.
Шифрование используется человечеством с того самого момента, как появилась первая секретная информация, т. е. такая, доступ к которой должен быть ограничен.
Идея шифрования состоит в предотвращении просмотра истинного содержания сообщения(текста, файла и т.п.) теми , у кого нет средств его дешифрования. А прочесть файл сможет лишь тот, кто сможет его дешифровать.
Шифрование появилось примерно четыре тысячи лет тому назад. Первым известным применением шифра (кода) считается египетский текст, датированный примерно 1900 г. до н. э., автор которого использовал вместо обычных (для египтян) иероглифов не совпадающие с ними знаки.
Один из самых известных методов шифрования носит имя Цезаря, который если и не сам его изобрел, то активно им пользовался. Не доверяя своим посыльным, он шифровал письма элементарной заменой А на D, В на Е и так далее по всему латинскому алфавиту. При таком кодировании комбинация XYZ была бы записана как АВС, а слово «ключ» превратилось бы в неудобоваримое «нобъ»(прямой код N+3).
Спустя 500 лет шифрование стало повсеместно использоваться при оставлении текстов религиозного содержания, молитв и важных государственных документов.
Со средних веков и до наших дней необходимость шифрования военных, дипломатических и государственных документов стимулировало развитие криптографии. Сегодня потребность в средствах, обеспечивающих безопасность обмена информацией, многократно возросла.
Основные понятия и определения криптографии
Криптография дает возможность преобразовать информацию таким образом, что ее прочтение (восстановление) возможно только при знании ключа.
Некоторые основные понятия и определения.
Алфавит — конечное множество используемых для кодирования информации знаков.
Текст — упорядоченный набор из элементов алфавита.
В качестве примеров алфавитов, используемых в современных ИС можно привести следующие:
алфавит Z33 — 32 буквы русского алфавита и пробел;
алфавит Z256 — символы, входящие в стандартные коды ASCII и КОИ-8;
бинарный алфавит — Z2 = {0,1};
восьмеричный алфавит или шестнадцатеричный алфавит;
Шифрование — преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом.
Дешифрование — обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.
Ключ — информация, необходимая для беспрепятственного шифрования и дешифрования текстов.
Криптографическая система представляет собой семейство T преобразований открытого текста. члены этого семейства индексируются, или обозначаются символом k; параметр k является ключом. Пространство ключей K — это набор возможных значений ключа. Обычно ключ представляет собой последовательный ряд букв алфавита.
Криптосистемы разделяются на симметричные и с открытым ключом ( или асимметрические) .
В симметричных криптосистемах и для шифрования, и для дешифрования используется один и тот же ключ.
В системах с открытым ключом используются два ключа — открытый и закрытый, которые математически связаны друг с другом. Информация шифруется с помощью открытого ключа, который доступен всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения.
Термины распределение ключей и управление ключами относятся к процессам системы обработки информации, содержанием которых является составление и распределение ключей между пользователями.
Электронной (цифровой) подписью называется присоединяемое к тексту его криптографическое преобразование, которое позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения.
Криптостойкостью называется характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (т.е. криптоанализу). Имеется несколько показателей криптостойкости, среди которых:
количество всех возможных ключей;
среднее время, необходимое для криптоанализа.
Преобразование Tk определяется соответствующим алгоритмом и значением параметра k. Эффективность шифрования с целью защиты информации зависит от сохранения тайны ключа и криптостойкости шифра.
Процесс криптографического закрытия данных может осуществляться как программно, так и аппаратно. Аппаратная реализация отличается существенно большей стоимостью, однако ей присущи и преимущества: высокая производительность, простота, защищенность и т.д. Программная реализация более практична, допускает известную гибкость в использовании.
Для современных криптографических систем защиты информации сформулированы следующие общепринятые требования:
зашифрованное сообщение должно поддаваться чтению только при наличии ключа;
число операций, необходимых для определения использованного ключа шифрования по фрагменту шифрованного сообщения и соответствующего ему открытого текста;
должно быть не меньше общего числа возможных ключей;
число операций, необходимых для расшифровывания информации путем перебора всевозможных ключей должно иметь строгую нижнюю оценку и выходить за пределы возможностей современных компьютеров (с учетом возможности использования сетевых вычислений);
знание алгоритма шифрования не должно влиять на надежность защиты;
незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при использовании одного и того же ключа;
структурные элементы алгоритма шифрования должны быть неизменными;
дополнительные биты, вводимые в сообщение в процессе шифрования, должен быть полностью и надежно скрыты в шифрованном тексте;
длина шифрованного текста должна быть равной длине исходного текста;
не должно быть простых и легко устанавливаемых зависимостью между ключами, последовательно используемыми в процессе шифрования;
любой ключ из множества возможных должен обеспечивать надежную защиту информации;
алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования.
Криптографическая стойкость (или криптостойкость) — способность криптографического алгоритма противостоять возможным атакам на него. Атакующие криптографический алгоритм используют методы криптоанализа. Стойким считается алгоритм, который для успешной атаки требует от противника недостижимых вычислительных ресурсов, недостижимого объёма перехваченных открытых и зашифрованных сообщений или же такого времени раскрытия, что по его истечению защищенная информация будет уже не актуальна, и т. д.
Типы криптостойких систем шифрования
Абсолютно стойкие системы
Доказательство существования абсолютно стойких алгоритмов шифрования было выполнено Клодом Шенноном и опубликовано в работе «Теория связи в секретных системах».[1] Там же определены требования к такого рода системам:
ключ генерируется для каждого сообщения (каждый ключ используется один раз)
ключ статистически надёжен (то есть вероятности появления каждого из возможных символов равны, символы в ключевой последовательности независимы и случайны)
длина ключа равна или больше длины сообщения
исходный (открытый) текст обладает некоторой избыточностью (является критерием оценки правильности расшифровки)
Стойкость этих систем не зависит от того, какими вычислительными возможностями обладает криптоаналитик. Практическое применение систем, удовлетворяющих требованиям абсолютной стойкости, ограничено соображениями стоимости и удобства пользования.
Некоторыми аналитиками утверждается, что Шифр Вернама является одновременно абсолютно криптографически стойким и к тому же единственным[источник не указан 357 дней] шифром, который удовлетворяет этому условию.
Достаточно стойкие системы
В основном применяются практически стойкие или вычислительно стойкие системы. Стойкость этих систем зависит от того, какими вычислительными возможностями обладает криптоаналитик. Практическая стойкость таких систем базируется на теории сложности и оценивается исключительно на какой-то определенный момент времени и последовательно c двух позиций:
вычислительная сложность полного перебора
известные на данный момент слабости (уязвимости) и их влияние на вычислительную сложность.
В каждом конкретном случае могут существовать дополнительные критерии оценки стойкости.
Оценка криптостойкости систем шифрования
Начальная оценка
Поскольку атака методом грубой силы (полным перебором всех ключей) возможна для всех типов криптографических алгоритмов, кроме абсолютно стойких «по Шеннону», для вновь созданного алгоритма она может являться единственной существующей. Способы её оценки основываются на вычислительной сложности, которая затем может быть выражена во времени, деньгах, и требуемой производительности вычислительных ресурсов, например, в MIPS. Эта оценка пока является максимальной и минимальной одновременно.
Текущая оценка
Дальнейшее исследование алгоритма с целью поиска слабостей (уязвимостей) (криптоанализ) добавляет оценки стойкости по отношению к известным криптографическим атакам (Линейный криптоанализ, дифференциальный криптоанализ и более специфические) и могут понизить известную стойкость.
Например, для многих симметричных шифров существуют слабые ключи и S-блоки, применение которых снижает криптографическую стойкость. Также важным способом проверки стойкости являются атаки на реализацию, выполняемые для конкретного программно-аппаратно-человеческого комплекса.
Важность длительной проверки и открытого обсуждения
Чем более длительным и экспертным является анализ алгоритма и реализаций, тем более достоверной можно считать его стойкость. В нескольких случаях длительный и внимательный анализ приводил к снижению оценки стойкости ниже приемлемого уровня (например, в черновых версиях FEAL). Недостаточная проверка (по мнению многих криптографов — искусственное ослабление) алгоритма потокового шифрования А5/1 привела к успешной атаке.
При́нцип Керкго́ффса — правило разработки криптографических систем, согласно которому в засекреченном виде держится только определённый набор параметров алгоритма, называемый ключом, а остальные детали могут быть открыты без снижения стойкости алгоритма ниже допустимых значений. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей.
Впервые данный принцип сформулировал в XIX веке голландский криптограф Огюст Керкгоффс. Шеннон сформулировал этот принцип (вероятно, независимо от Керкгоффса) следующим образом: «враг может знать систему». Широко применяется в криптографии.
Общие сведения
Сущность принципа заключается в том, что чем меньше секретов содержит система, тем выше её безопасность. Так, если утрата любого из секретов приводит к разрушению системы, то система с меньшим числом секретов будет надёжней. Чем больше секретов содержит система, тем более она ненадёжна и потенциально уязвима. Чем меньше секретов в системе — тем выше её прочность.[1]
Принцип Керкгоффса направлен на то, чтобы сделать безопасность алгоритмов и протоколов независимой от их секретности; открытость не должна влиять на безопасность.
Большинство широко используемых систем шифрования, в соответствии с принципом Керкгоффса, используют известные, не составляющие секрета криптографические алгоритмы. С другой стороны, шифры, используемые в правительственной и военной связи, как правило, засекречены; таким образом создаётся «дополнительный рубеж обороны».
Шесть требований Керкгоффса
Требования к криптосистеме впервые изложены в книге Керкгоффса «Военная криптография» (издана в 1883 году). Шесть основных требований к криптосистеме, все из которых до настоящего времени определяют проектирование криптографически стойких систем, в переводе с французского звучат так:
шифр должен быть физически, если не математически, невскрываемым
система не должна требовать секретности, на случай, если она попадёт в руки врага
ключ должен быть простым, храниться в памяти без записи на бумаге, а также легко изменяемым по желанию корреспондентов
зашифрованный текст должен [без проблем] передаваться по телеграфу
аппарат для шифрования должен быть легко переносимым, работа с ним не должна требовать помощи нескольких лиц
аппарат для шифрования должен быть относительно прост в использовании, не требовать значительных умственных усилий или соблюдения большого количества правил
Второе из этих требований и стало известно как «принцип Керкгоффса».
Также важным, впервые строго сформулированным выводом «Военной криптографии» является утверждение криптоанализа как единственного верного способа испытания шифров.
Обзор известных методов криптоанализа классических шифров .
Направление криптоанализа могут быть различными, в соответствии с направлениями криптографии: это раскрытие ключа, навязывание ложной информации за счет нахождения слабостей в криптоалгоритме или протоколе, возможность бесконечного чтения зашифрованной информации и т.п.
Криптоалгоритм, как правило, должен быть стойким по отношению к криптоанализу на основе выбранных открытых текстов. Первое требование по существу означает, что рассекречивание некоторой информации, передававшейся по каналу связи в зашифрованном виде, не должно приводить к рассекречиванию другой информации, зашифрованной на этом ключе. Второе требование учитывает особенности эксплуатации аппаратуры и допускает некоторые вольности со стороны оператора или лиц, имеющих доступ к формированию засекреченной информации.
Криптоанализ может базироваться на использовании как общих математических результатов (например методов разложения больших чисел для раскрытия криптосистемы RSA), так и частных результатов, полученных для конкретного криптоалгоритма. Как правило, алгоритмы криптоанализа являются вероятностными.
2.1. Типовые методы криптоанализа классических алгоритмов .
2.1.1. Метод встречи посередине .
Если множество ключей криптоалгоритма замкнуто относительно композиции, то есть для любых ключей z i и z j найдется ключ zk такой, что результат шифрования любого текста последовательно на z i и z j равен шифрограмме этого же числа на zk , то есть F(z j ,F(z i , x))= F(z k , x), то можно воспользоваться этим свойством. Пусть нам нужно найти ключ zk. Тогда для нахождения ключа zk, необходимо найти эквивалентную ему пару ключей zi , zj. Данный метод криптоанализа основан на “парадоксе дней рождения”. Известно, что если считать, что дни рождения распределены равномерно, то в группе из 24 человек с вероятностью 0,5 у двух человек дни рождения совпадут. В общем виде этот парадокс формулируется так: если a Ц n предметов выбираются с возвращением из некоторой совокупности размером n, то вероятность того что два из них совпадут, равна 1-exp(-a2 / 2) .
Пусть известен открытый текст x и его шифрограмма y. Для текста x строим базу данных, содержащую случайное множество ключей z| и соответствующих шифрограмм w=F(z| , x), и упорядочиваем ее по шифрограммам w. Объем базы данных выбираем О( Ц # {z} ). Затем подбираем случайным образом ключи z| | для расшифровки текстов y и результат расшифрования v = F(z| | , y) сравниваем с базой данных. Если текст v окажется равным одной из шифрограмм w, то ключ z| z| | эквивалентен искомому ключу z. Временная сложность метода составляет О( Ц # {z} log#{z}). Множитель log#{z} учитывает сложность сортировки. Требуемая память равна О( Ц # {z} log#{z}) бит или ОЦ # {z}) блоков ( предполагается, что длина блока и длина ключа различаются на ограниченную константу ).
Этот же метод применим, если множество ключей содержит достаточно большое подмножество, являющееся полугруппой.
Другое применение этого метода для множества, не являющегося полугруппой, можно продемонстрировать на хэш-функциях. Например, для подделки подписи надо найти два текста, обладающих одним хэш-образом. После этого можно подписанное сообщение заменить на другое, обладающее таким же хэш-образом. Поиск двух таких сообщений можно выполнить с использованием метода “встречи посередине”. Сложность поиска равна О(Ц #{h}), где #{h} — число всевозможных хэш-образов.
Этот алгоритм является вероятностным. Однако существуют и детерминированный аналог этого алгоритма “giant step — baby step” с такой же сложностью, предложенный американским математиком Д.Шенксом.
2.1.2. Метод Полларда.
Этот вероятностный метод основан на следующем факте. Если на некотором конечном множестве М определить случайное отображение f и применить его поочередно ко всем элементам М, а ребрами соответствия — y=f(x) для x,yН М. Поскольку множество М конечно, то этот граф должен содержать деревья, корни которых соединены в циклы. Для случайного отображения f длина цикла равна О(Ц #М ) и высота дерева в среднем равна О(Ц #М ).
Для нахождения ключа, например в криптоалгоритме, основанном на задаче логарифма на некоторой группе, достаточно решить задачу о встрече на графе случайного отображения. Для этого из двух разных стартовых точек x0|, x0| | строятся траектория до входа в цикл. Затем одна из двух конечных точек, лежащих в цикле, фиксируется, а траектория другой продолжается до встречи с фиксированной точкой. Для функции f и точки входа x0 длина траектории составляет О(Ц #М ) шагов. Типичный вид этой траектории содержит предельный цикл длины О(Ц #М ) и отрезок до входа в цикл примерно такой же длины. В качестве индикатора замыкания траектории Поллард предложил использовать равенство xi = x2i , где xi — i-я точка траектории для входа x0. Это равенство будет выполняться всегда. Значение индекса i не превышает суммы длины пути до входа в цикл.
В среднем сложность нахождения равенства xi = x2i равна 3Ц (p /8)#М. Сложность встречи, когда обе точки лежат в цикле, равна 0,5Ц (p /8)#М. Таким образом, итоговая сложность равна 6,5Ц (p /8)#М.
Метод Полларда применяется для решения задачи логарифма на циклической группе, поиска частично эквивалентных ключей (коллизий), для нахождения двух аргументов, дающих одинаковое значение хэш-функции, и в некоторых других случаях. Применительно к задаче логарифмирования этот метод позволяет отказаться от использования большого объема памяти по сравнению с методом встречи посередине. Кроме того, пропадает необходимость сортировки базы данных. В результате временная сложность по сравнению с методом встречи посередине снижается на множитель О(log#М). Сложность этого метода в данном случае составляет О(Ц #М) шагов и требует памяти объема О(1) блоков. Однако не всегда требуется малая память.
Рассмотрим в качестве иллюстрации метода Полларда алгоритм нахождения коллизии (двух аргументов, дающих одинаковое значение хэш-функции) для вычислительной модели с объемом памяти О(v). Такими аргументами будут элементы множества М, стрелки от которых под действием хэш-функции f ведут в точку входа в цикл. Практически алгоритм сводится к нахождению точки входа в цикл.
1. Войти в цикл, используя равенство xi = x2i = t .
2. Измерить длину цикла m, применяя последовательно отображение f к элементу t до получения равенства fm(t)=t .
3. Разбить цикл m на v интервалов одинаковой или близкой длины и создать базу данных, запомнив и упорядочив начальные точки интервалов.
4. Для стартовой вершины п.1 выполнять одиночные шаги до встречи с какой-либо точкой из базы данных п.3. Отметить начальную и конечную точки интервала, на котором произошла встреча.
5. Стереть предыдущую и создать новую базу данных из v точек, разбив интервал, на котором произошла встреча, на равные по длине части, запомнив и отсортировав начальные точки интервалов.
6. Повторить процедуры пп.4,5 до тех пор, пока не получится длина интервала, равная 1. Вычислить точку встречи в цикле, вычислить коллизию как пару вершин, одна из которых лежит в цикле, а друга — нет.
Этот алгоритм требует многократного выполнения О(Ц #М ) шагов до входа в цикл и выполнени сортировки базы данных. На каждом этапе при создании новой базы данных длина интервала сокращается в v раз, то есть количество повторов равно О(logv #М ). Если v << Ц #М, то сложностью сортировки базы данных можно пренебречь. Тогда сложность алгоритма равна О(Ц #М logv #М).
Рассмотрим возможность улучшения оценки сложности этого метода за счет увеличения доступной памяти. Напомним, что почти все вершины графа случайного отображения лежат на одном дереве. Поэтому будем решать задачу о встрече на случайном ориентированном дереве. С ростом глубины h ширина дерева b(h) уменьшается, то есть случайное отображение обладает сжимающими свойствами. Поэтому с ростом глубины вершины, с одной стороны, увеличивается сложность встречи за счет многократного применения отображения, с другой стороны, увеличивается вероятность встречи в силу сжимающих свойств. Доля вершин с глубиной не менее h равна О(1/h).
Рассмотрим два алгоритма для решения задачи о встрече. Первый алгоритм предусматривает выбор множества m случайных начальных вершин, применение к ним к раз отображения, сортировку множества конечных вершин и поиск среди них равных. Второй алгоритм предусматривает запоминание всей траектории спуска для каждой вершины, сортировку множества вершин, составляющих траектории, и поиск среди равных. Второй алгоритм является не менее сложным, чем первый, в силу сжимающих свойств случайного отображения.
Сложность первого алгоритма равна km (log m). Множитель log m учитывает сложность сортировки. В силу парадокса дней рождения m = О(#M/h)0.5. Для одного шага сложность алгоритма равна О(Ц #M log#M), то есть этот алгоритм более эффективный, чем алгоритм встречи посередине.
После первого шага от листа глубины становится равной О( log#М ). Однако в дальнейшем рост глубины с каждым шагом замедляется. Это объясняется существенно разрывным характером условной вероятности р(h|H) получения глубины h при исходной глубине H. Действительно, из определения глубины следует, что каждая вершина с глубиной H+1 связана ребром с вершиной с глубиной H. Из каждой вершины исходит единственное ребро. Поэтому в силу количественных оценок ширины графа
р(H+1|H)=[O(H-2 - (H+1)-2)]/O(H-2)=1-O(H-1).
Числитель этого выражения равен разности ширины графа на глубинах H и H+1, знаменатель учитывает то, что исходная глубина равна Н. Вероятность попасть на глубину h>H+1 определяется вероятностью непопадания на глубину H+1 и шириной графа,
р(h|H)=O(H-1h-2).
Сравним вероятность pk(h) получения глубины h после k шагов при спуске от листа и вероятность pk(h|Mk-1) глубины h после k шагов при условии, что на шаге k-1 глубина равнялась математическому ожиданию. Имеет место оценка pk(h)» pk(h|Mk-1). Поэтому место вероятности сложного события pk(h) можно рассматривать вероятность простого события pk(h|Mk-1).
Пусть стартовая вершина лежит на глубине H=O( log#M). Какова будет глубина после очередного шага? Непосредственные вычисления показывают, что математическое ожидание глубины равно H+1+O(1), то есть второй и последующий шаги увеличивают глубину спуска на О(1). Подстановка в качестве исходной глубины математического ожидания глубины спуска на предыдущем шаге дает оценку математического ожидания глубины спуска после к шагов:
h=O( log#M ) + O(k).
Поскольку оптимальное число шагов при спуске к алгоритма определяется равенством сложности спуска mk и сложности сортировки m log m, то копт=O(log#M). Отсюда следует, что задача встречи на случайном ориентированном дереве не менее сложна, чем задача о встрече в цикле, то есть алгоритм Полларда не улучшаем за счет увеличения доступной памяти.