Введение в криптографию
Согласно методологии сначала к тексту применяются алгоритм шифрования
и ключ для получения из него шифртекста. Затем шифртекст передается к месту
назначения, где тот же самый алгоритм используется для его расшифровки,
чтобы получить снова текст. Также в методологию входят процедуры создания
ключей и их распространения (не показанные на рисунке).
Но основная проблема, связанная с этой методологией, состоит в том,
как сгенерировать и безопасно передать ключи участникам взаимодействия.
Как установить безопасный канал передачи информации между участниками взаимодействия
до передачи ключей?
Другой проблемой является аутентификация. При этом существуют две
серьезных проблемы:
1. Введение
Информация - это одна из самых ценных вещей в современной жизни. Появление
глобальных компьютерных сетей сделало простым получение доступа к информации
как для отдельных людей, так и для больших организаций. Но легкость и скорость
доступа к данным с помощью компьютерных сетей, таких как Интернет, также
сделали значительными следующие угрозы безопасности данных при отсутствии
мер их защиты:
2. Криптография сегодня
Криптография - это наука об обеспечении безопасности данных. Она занимается
поисками решений четырех важных проблем безопасности - конфиденциальности,
аутентификации, целостности и контроля участников взаимодействия. Шифрование
- это преобразование данных в нечитабельную форму, используя ключи шифрования-расшифровки.
Шифрование позволяет обеспечить конфиденциальность, сохраняя информацию
в тайне от того, кому она не предназначена.
2.1 Криптосистемы
Криптосистема работает по определенной методологии (процедуре). Она
состоит из : одного или более алгоритмов шифрования (математических формул);
ключей, используемых этими алгоритмами шифрования; системы управления ключами;
незашифрованного текста; и зашифрованного текста (шифртекста).
2.1.1 Методология с использованием ключа
В этой методологии алгоритм шифрования объединяет ключ с текстом для
создания шифртекста. Безопасность систем шифрования такого типа зависит
от конфиденциальности ключа, используемого в алгоритме шифрования, а не
от хранения в тайне самого алгоритма. Многие алгоритмы шифрования общедоступны
и были хорошо проверены благодаря этому (например, DES).
Существуют две методологии с использованием ключей - симметричная (с
секретным ключом) и асимметричная (с открытым ключом). Каждая методология
использует свои собственные процедуры, свои способы распределения ключей,
типы ключей и алгоритмы шифрования и расшифровки ключей. Так как терминология,
используемая этими методологиями, может показаться непонятной, дадим определения
основным терминам:
|
|
|
Симметричная методология | Используется один ключ, с помощью которого производится
как шифрование, так и расшифровка с использованием одного и того же алгоритма
симметричного шифрования.
Этот ключ передается двум участникам взаимодействия безопасным образом до передачи зашифрованных данных. |
Часто называется методологией с секретным ключом. |
Асимметричная методология | Использует алгоритмы симметричного шифрования
и симметричные ключи для шифрования данных
Использует алгоритмы асимметричного шифрования и асимметричные ключи для шифрования симметричного ключа. Создаются два взаимосвязанных асимметричных ключа. Симметричный ключ, зашифрованный с использованием одного асимметричного ключа и алгоритма асимметричного шифрования, должен расшифровываться с использованием другого ключа и того же алгоритма шифрования. Создаются два взаимосвязанных асимметричных ключа. Один должен быть безопасно передан его владельцу, а другой - тому лицу, которое отвечает за хранение этих ключей (CA - сертификационному центру ключей), до начала их использования. |
Часто называется методологией с открытым ключом |
Секретный ключ(1) | Симметричная методология | Используется один ключ, с помощью которого производится как шифрование, так и расшифровка. См. выше |
Секретный ключ(2) | Секретный ключ симметричного шифрования | Симметричный секретный ключ |
Секретный ключ(3) | Секретный ключ асимметричного шифрования | Асимметричный секретный ключ
Асимметричные ключи создаются парами, так как связаны друг с другом. Выражение "секретный ключ" часто используют для одного из пары асимметричных ключей, который должен держаться в секрете. Асимметричный секретный ключ не имеет ничего общего с симметричным секретным ключом. |
Открытый ключ (1) | Асимметричная методология | Использует пару ключей, которые совместно создаются и связаны друг с другом. Все, что зашифровано одним ключом, может быть расшифровано только другим ключом этой пары. |
Открытый ключ (2) | Открытый ключ асимметричного шифрования | Асимметричные ключи создаются парами, каждый из
двух ключей связан с другим.
Выражение "открытый ключ" часто используют для одного из пары асимметричных ключей, который должен быть всем известен. |
Сеансовый ключ | Симметричный (секретный) ключ шифрования | Используется в асимметричной методологии для шифрования
самих данных с помощью симметричных методологий.
Это просто симметричный секретный ключ (см. выше) |
Алгоритм шифрования | Математическая формула | Для симметричных алгоритмов требуются симметричные
ключи.
Для асимметричных алгоритмов требуются асимметричные ключи. Вы не можете использовать симметричные ключи для асимметричных алгоритмов и наоборот. |
Секретные криптосистемы | Используют симметричные алгоритмы и симметричные (секретные) ключи для шифрования данных. | |
Открытые криптосистемы | Использует асимметричные алгоритмы и асимметричные
ключи для шифрования сеансовых ключей.
Используют симметричные алгоритмы и симметричные (секретные) ключи для шифрования данных. |
Алгоритмы симметричного шифрования используют ключи не очень большой длины и могут быстро шифровать большие объемы данных.
Порядок использования систем с симметричными ключами:
Все асимметричные криптосистемы являются объектом атак путем прямого
перебора ключей, и поэтому в них должны использоваться гораздо более длинные
ключи, чем те, которые используются в симметричных криптосистемах, для
обеспечения эквивалентного уровня защиты. Это сразу же сказывается на вычислительных
ресурсах, требуемых для шифрования, хотя алгоритмы шифрования на эллиптических
кривых могут смягчить эту проблему. Брюс Шнейер в книге "Прикладная криптография:
протоколы, алгоритмы и исходный текст на C" приводит следующие данные об
эквивалентных длинах ключей.
|
|
56 бит | 384 бит |
64 бита | 512 бит |
80 бит | 768 бит |
112 бит | 1792 бита |
128 бит | 2304 бита |
В асимметричных криптосистемах важно, чтобы сеансовые и асимметричные ключи были сопоставимы в отношении уровня безопасности, который они обеспечивают. Если используется короткий сеансовый ключ ( например, 40-битовый DES), то не имеет значения, насколько велики асимметричные ключи. Хакеры будут атаковать не их, а сеансовые ключи. Асимметричные открытые ключи уязвимы к атакам прямым перебором отчасти из-за того, что их тяжело заменить. Если атакующий узнает секретный асимметричный ключ, то будет скомпрометирован не только текущее, но и все последующие взаимодействия между отправителем и получателем.
Порядок использования систем с асимметричными ключами:
В симметричных методологиях эта проблема стоит более остро, и поэтому в них ясно определяется, как передавать ключи между участниками взаимодействия до начала взаимодействия. Конкретный способ выполнения этого зависит от требуемого уровня безопасности. Если не требуется высокий уровень безопасности, то ключи можно рассылать с помощью некоторого механизма доставки (например, с помощью простой почты или курьерской службы). Банки, например, используют почту для рассылки PIN-кодов. Для обеспечения более высокого уровня безопасности более уместна ручная доставка ключей ответственными за это людьми, возможно по частям несколькими людьми.
Асимметричные методологии пытаются обойти эту проблему с помощью шифрования симметричного ключа и присоединения его в таком виде к зашифрованным данным. А для распространения открытых асимметричных ключей, используемых для шифрования симметричного ключа, в них используются центры сертификации ключей. CA, в свою очередь, подписывают эти открытые ключи с помощью секретного асимметричного ключа CA. Пользователи такой системы должны иметь копию открытого ключа CA. Теоретически это означает, что участникам взаимодействия не нужно знать ключей друг друга до организации безопасного взаимодействия.
Сторонники асимметричных систем считают, что такого механизма достаточно для обеспечения аутентичности абонентов взаимодействия.
Но проблема все равно остается. Пара асимметричных ключей должна создаваться совместно. Оба ключа, независимо от того, доступны они всем или нет, должны быть безопасно посланы владельцу ключа, а также центру сертификации ключей. Единственный способ сделать это - использовать какой-либо способ доставки при невысоких требованиях к уровню безопасности, и доставлять их вручную - при высоких требованиях к безопасности.
Проблема с распространением ключей в асимметричных системах состоит в следующем:
Управлением ключами называется их распределение, аутентификация и
регламентация порядка использования. Независимо от вида используемой криптосистемы
ключами надо управлять. Безопасные методы управления ключами очень важны,
так как многие атаки на криптосистемы имеют объектом атаки процедуры управления
ключами.
|
|
Физическая раздача
ключей |
Курьеры и ручная выдача - вот два распространенных
примера этой процедуры. Конечно, из них двоих лучше ручная выдача.
Серьезные организации имеют инструкции, описывающие порядок выдачи ключей. Раздача ключей может аудироваться и протоколироваться, но это все-таки не защитит ее до конца от компрометации отдельными людьми. Используется как симметричными, так и асимметричными криптосистемами. Несмотря на заявления о том, что в асимметричных криптосистемах не возникает проблем, связанных с физической доставкой ключей, на самом деле они есть. X.509 предполагает, что создатель ключей будет передавать асимметричный секретный ключ пользователю (и/или асимметричный открытый ключ CA) физически безопасным способом, и что предприняты соответствующие меры физической безопасности, чтобы защитить создателя и проводимые им операции с данными от атак. |
Выдача общего
ключа участникам взаимодействия центром выдачи ключей |
Может использоваться как симметричными, так и
асимметричными криптосистемами.
Так как при данном способе каждый пользователь должен каким-то образом безопасно взаимодействовать с центром выдачи ключей в самом начале работы, то это просто еще один случай, когда начальный обмен ключами является проблемой. Если центр скомпрометирован, то обеспечение безопасности последующих запросов на выдачу ключей проблематично, а безопасность ранее выданных ключей зависит от криптосистемы. |
Предоставление
центром сертификации ключей доступа к открытым ключам пользователей и выдача секретных ключей пользователям |
Используется асимметричными криптосистемами.
Пользователи должны доверять всей этой системе. Всего лишь одна успешная атака компрометирует всю систему. Иерархическая система аттестации ключей приводит к появлению большего числа потенциальных уязвимых мест - CA должен публиковать свой асимметричный открытый ключ и предоставлять его сертификат, выданный CA более высокого уровня. Асимметричные секретные ключи CA должны храниться в безопасном месте, так как их компрометация может привести к успешным атакам, которые нельзя будет обнаружить. |
Сеть доверия | Используется в асимметричных криптосистемах.
Пользователи сами распространяют свои ключи и следят за ключами других пользователей; доверие заключатся в неформальном способе обмена ключами. |
Метод
Диффи-Хеллмана |
Обмен секретным ключом по незащищенным каналам
связи между двумя пользователями, которые до этого не имели общего секретного
ключа.
Не может использоваться для шифрования или расшифровки сообщений. Основывается на сложности взятия логарифма в конечных полях. При правильном выборе достаточно больших элементов полей решить проблему расчета дискретного логарифма невозможно. Уязвим к атаке "активное вмешательство в соединение". Запатентован PKP (Public Key Partners) |
|
|
DES (Data Encryption
Standard) |
Популярный алгоритм шифрования, используемый как
стандарт шифрования данных правительством США.
Шифруется блок из 64 бит, используется 64-битовый ключ (требуется только 56 бит), 16 проходов Может работать в 4 режимах:
|
3-DES или
тройной DES |
64-битный блочный шифратор, использует DES 3 раза
с тремя различными 56-битными ключами.
Достаточно стоек ко всем атакам |
Каскадный 3-DES | Стандартный тройной DES, к которому добавлен механизм
обратной связи, такой как CBC, OFB или CFB
Очень стоек ко всем атакам. |
FEAL (быстрый
алгоритм шифрования) |
Блочный шифратор, используемый как альтернатива
DES
Вскрыт, хотя после этого были предложены новые версии. |
IDEA (международный
алгоритм шифрования) |
64-битный блочный шифратор, 128-битовый ключ,
8 проходов
Предложен недавно; хотя до сих пор не прошел полной проверки, чтобы считаться надежным, считается более лучшим, чем DES |
Skipjack | Разработано АНБ в ходе проектов правительства
США "Clipper" и "Capstone".
До недавнего времени был секретным, но его стойкость не зависела только от того, что он был секретным. 64-битный блочный шифратор, 80-битовые ключи используются в режимах ECB, CFB, OFB или CBC, 32 прохода |
RC2 | 64-битный блочный шифратор, ключ переменного размера
Приблизительно в 2 раза быстрее, чем DES Может использоваться в тех же режимах, что и DES, включая тройное шифрование. Конфиденциальный алгоритм, владельцем которого является RSA Data Security |
RC4 | Потоковый шифр, байт-ориентированный, с ключом
переменного размера.
Приблизительно в 10 раз быстрее DES. Конфиденциальный алгоритм, которым владеет RSA Data Security |
RC5 | Имеет размер блока 32, 64 или 128 бит, ключ с
длиной от 0 до 2048 бит, от 0 до 255 проходов
Быстрый блочный шифр Алгоритм, которым владеет RSA Data Security |
CAST | 64-битный блочный шифратор, ключи длиной от 40
до 64 бит, 8 проходов
Неизвестно способов вскрыть его иначе как путем прямого перебора. |
Blowfish. | 64-битный блочный шифратор, ключ переменного размера
до 448 бит, 16 проходов, на каждом проходе выполняются перестановки, зависящие
от ключа, и подстановки, зависящие от ключа и данных.
Быстрее, чем DES Разработан для 32-битных машин |
Устройство с
одноразовыми ключами |
Шифратор, который нельзя вскрыть.
Ключом (который имеет ту же длину, что и шифруемые данные) являются следующие 'n' бит из массива случайно созданных бит, хранящихся в этом устройстве. У отправителя и получателя имеются одинаковые устройства. После использования биты разрушаются, и в следующий раз используются другие биты. |
Поточные шифры | Быстрые алгоритмы симметричного шифрования, обычно
оперирующие битами (а не блоками бит).
Разработаны как аналог устройства с одноразовыми ключами, и хотя не являются такими же безопасными, как оно, по крайней мере практичны. |
Используется два разных ключа - один известен всем, а другой держится
в тайне. Обычно для шифрования и расшифровки используется оба этих ключа.
Но данные, зашифрованные одним ключом, можно расшифровать только с помощью
другого ключа.
|
|
RSA | Популярный алгоритм асимметричного шифрования, стойкость которого зависит от сложности факторизации больших целых чисел. |
ECC (криптосистема
на основе эллиптических кривых) |
Использует алгебраическую систему, которая описывается
в терминах точек эллиптических кривых, для реализации асимметричного алгоритма
шифрования.
Является конкурентом по отношению к другим асимметричным алгоритмам шифрования, так как при эквивалентной стойкости использует ключи меньшей длины и имеет большую производительность. Современные его реализации показывают, что эта система гораздо более эффективна, чем другие системы с открытыми ключами. Его производительность приблизительно на порядок выше, чем производительность RSA, Диффи-Хеллмана и DSA. |
Эль-Гамаль. | Вариант Диффи-Хеллмана, который может быть использован как для шифрования, так и для электронной подписи. |
|
|
MD2 | Самая медленная, оптимизирована для 8-битовых машин |
MD4 | Самая быстрая, оптимизирована для 32-битных машин
Не так давно взломана |
MD5 | Наиболее распространенная из семейства MD-функций.
Похожа на MD4, но средства повышения безопасности делают ее на 33% медленнее, чем MD4 Обеспечивает целостность данных Считается безопасной |
SHA (Secure
Hash Algorithm) |
Создает 160-битное значение хэш-функции из исходных
данных переменного размера.
Предложена NIST и принята правительством США как стандарт Предназначена для использования в стандарте DSS |
|
|
Пароли или PIN-коды
(персональные идентификационные номера) |
Что-то, что знает пользователь и что также знает
другой участник взаимодействия.
Обычно аутентификация производится в 2 этапа. Может организовываться обмен паролями для взаимной аутентификации. |
Одноразовый пароль | Пароль, который никогда больше не используется.
Часто используется постоянно меняющееся значение, которое базируется на постоянном пароле. |
CHAP (протокол
аутентификации запрос-ответ) |
Одна из сторон инициирует аутентификацию с помощью посылки уникального и непредсказуемого значения "запрос" другой стороне, а другая сторона посылает вычисленный с помощью "запроса" и секрета ответ. Так как обе стороны владеют секретом, то первая сторона может проверить правильность ответа второй стороны. |
Встречная проверка
(Callback) |
Телефонный звонок серверу и указание имени пользователя приводит к тому, что сервер затем сам звонит по номеру, который указан для этого имени пользователя в его конфигурационных данных. |
|
|
DSA (Digital
Signature Authorization) |
Алгоритм с использованием открытого ключа для
создания электронной подписи, но не для шифрования.
Секретное создание хэш-значения и публичная проверка ее - только один человек может создать хэш-значение сообщения, но любой может проверить ее корректность. Основан на вычислительной сложности взятия логарифмов в конечных полях. |
RSA | Запатентованная RSA электронная подпись, которая
позволяет проверить целостность сообщения и личность лица, создавшего электронную
подпись.
Отправитель создает хэш-функцию сообщения, а затем шифрует ее с использованием своего секретного ключа. Получатель использует открытый ключ отправителя для расшифровки хэша, сам рассчитывает хэш для сообщения, и сравнивает эти два хэша. |
MAC (код
аутентификации сообщения) |
Электронная подпись, использующая схемы хэширования, аналогичные MD или SHA, но хэш-значение вычисляется с использованием как данных сообщения, так и секретного ключа. |
DTS (служба
электронных временных меток) |
Выдает пользователям временные метки, связанные с данными документа, криптографически стойким образом. |