Шифрования
В настоящее время наблюдается резкий рост объемов информации (в том числе и конфиденциальной), передаваемой по открытым каналам связи. По обычным телефонным каналам осуществляется взаимодействие между банками, брокерскими конторами и биржами, удаленными филиалами организаций, проводятся торги ценными бумагами. Почта любого владельца современного персонального компьютера может быть перехвачена, а коллегам ничто не мешает ознакомиться с вашими документами. Поэтому все более актуальной становится проблема защиты передаваемой информации. Несмотря на то что конкретные реализации систем защиты информации могут существенно отличаться друг от друга из-за различия методов и алгоритмов передачи данных, все они должны обеспечивать решение триединой задачи:
· конфиденциальность информации (доступность ее только для того, кому она предназначена);
· целостность информации (ее достоверность и точность, а также защищенность от преднамеренных и непреднамеренных искажений);
· готовность информации (использование в любой момент, когда в ней возникает необходимость).
Успешное решение перечисленных задач возможно как за счет использования организационно-технических мероприятий, так и с помощью криптографической защиты информации. Организационно-технические мероприятия включают в себя физическую охрану объектов конфиденциальной информации, применение специального административного персонала и целый ряд других дорогостоящих технических мер по защите важных данных.
Криптографическая защита в большинстве случаев является более эффективной и дешевой. Конфиденциальность информации при этом обеспечивается шифрованием передаваемых документов или всего трафика.
Сумеет защитить ваши данные от любопытных глаз только шифрование ‑ кодирование информации, после которого ее нельзя прочесть без специального ключа. Когда-то к шифрованию прибегали одни шпионы, но сейчас оно быстро становится мерой разумной предосторожности для всех тех, кто дома или на работе использует компьютер: это лучшее средство сохранить служебную и личную тайну.
Независимо от того, применяется автономная утилита или встроенная функция почтовой программы, процесс шифрования происходит одинаково: данные обрабатываются по определенному алгоритму, в результате чего образуется зашифрованный текст. Алгоритму для работы необходимо получить от вас одну переменную ‑ ваш ключ.
Процесс криптографического закрытия данных может осуществляться как программно, так и аппаратно. Аппаратная реализация отличается существенно большей стоимостью, однако ей присущи и преимущества: высокая производительность, простота, защищенность и т.д.. Программная реализация более практична, допускает известную гибкость в использовании. Для современных криптографических систем защиты информации сформулированы следующие требования:
· зашифрованное сообщение должно поддаваться чтению только при наличии ключа;
· число операций, необходимых для определения использованного ключа шифрования по фрагменту шифрованного сообщения и соответствующего ему открытого текста, должно быть не меньше общего числа возможных ключей;
· число операций, необходимых для расшифровывания информации путем перебора всевозможных ключей, должно иметь строгую нижнюю оценку и выходить за пределы возможностей современных компьютеров (с учетом возможности использования сетевых вычислений);
· знание алгоритма шифрования не должно влиять на надежность защиты;
· незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при использовании одного и того же ключа;
· структурные элементы алгоритма шифрования должны быть неизменными;
· дополнительные биты, вводимые в сообщение в процессе шифрования, должны быть полностью и надежно скрыты в шифрованном тексте;
· длина шифрованного текста должна быть равной длине исходного текста;
· не должно быть простых и легко устанавливаемых зависимостей между ключами, последовательно используемыми в процессе шифрования;
· любой ключ из множества возможных должен обеспечивать надежную защиту информации;
· алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования.
Сам по себе криптографический алгоритм, называемый алгоритмом шифрования, представляет собой некоторую математическую функцию, используемую для шифрования и расшифровки. Точнее таких функций две: одна применяется для шифрования, а другая ‑ для расшифрования.
Различается шифрование двух типов:
· симметричное (с секретным ключом);
· несимметричное (с открытым ключом).
При симметричном шифровании (рис. 3.1) создается ключ, файл совместно с этим ключом пропускается через программу шифрования и полученный результат пересылается адресату, а сам ключ передается адресату отдельно, используя другой (защищенный или очень надежный) канал связи. Адресат, запустив ту же самую шифровальную программу с полученным ключом, сможет прочитать сообщение. Симметричное шифрование не так надежно, как несимметричное, поскольку ключ может быть перехвачен, но из-за высокой скорости обмена информацией оно широко используется, например, в операциях электронной торговли.
Рис. 3.1. Симметричное шифрование
Несимметричное шифрование сложнее, но и надежнее. Для его реализации (рис. 3.2) нужны два взаимосвязанных ключа: открытый и закрытый. Получатель сообщает всем желающим свой открытый ключ, позволяющий шифровать для него сообщения. Закрытый ключ известен только получателю сообщения. Когда кому-то нужно послать зашифрованное сообщение, он выполняет шифрование, используя открытый ключ получателя. Получив сообщение, последний расшифровывает его с помощью своего закрытого ключа. За повышенную надежность несимметричного шифрования приходится платить: поскольку вычисления в этом случае сложнее, то процедура расшифровки отнимает больше времени.
Когда надежность криптографического алгоритма обеспечивается за счет сохранения в тайне сути самого алгоритма, такой алгоритм шифрования называется ограниченным. Ограниченные алгоритмы представляют значительный интерес с точки зрения истории криптографии, однако совершенно непригодны при современных требованиях, предъявляемых к шифрованию. Ведь в этом случае каждая группа пользователей, желающих обмениваться секретными сообщениями, должна обзавестись своим оригинальным алгоритмом шифрования. Использование готового оборудования и стандартных программ исключено, поскольку приведет к тому, что любой сможет приобрести это оборудование и эти программы и ознакомиться с заложенным в них алгоритмом шифрования. Тогда придется разрабатывать собственный криптографический алгоритм, причем делать это надо будет каждый раз, когда кто-то из пользователей группы захочет ее покинуть или когда детали алгоритма станут случайно известны посторонним.
Рис. 3.2. Несимметричное шифрование
В современной криптографии указанные выше проблемы решаются с помощью использования ключа, который нужно выбирать среди значений, принадлежащих множеству, называемому ключевым пространством. Функции шифрования и расшифровки зависят от этого ключа. Некоторые алгоритмы шифрования используют различные ключи для шифрования и расшифрования. Это означает, что ключ шифрования отличается от ключа расшифрования.
Надежность алгоритма шифрования с использованием ключей достигается за счет их надлежащего выбора и последующего хранения в строжайшем секрете. Это означает, что такой алгоритм не требуется держать в тайне. Можно организовать массовое производство криптографических средств, в основу функционирования которых положен данный алгоритм. Даже зная криптографический алгоритм, злоумышленник все равно не сможет прочесть зашифрованные сообщения, поскольку он не знает секретный ключ, использованный для их зашифрования.
Как уже говорилось, существуют две разновидности алгоритмов шифрования с использованием ключей ‑ симметричные (одноключевые) и несимметричные (двухключевые). В большинстве симметричных алгоритмов применяют всего один ключ. Такие алгоритмы именуются одноключевыми, или алгоритмами с секретным ключом, и требуют, чтобы отправитель сообщений и их получатель заранее условились о том, каким ключом они будут пользоваться. Надежность одноключевого алгоритма определяется выбором ключа, поскольку его знание дает возможность злоумышленнику без помех расшифровывать все перехваченные сообщения. Поэтому выбранный ключ следует хранить в тайне от посторонних.
Симметричные алгоритмы шифрования подразделяются на:
· потоковые (поточные);
· блочные.
Алгоритмы, в которых открытый текст обрабатывается побитно, называются потоковыми алгоритмами или потоковыми шифрами. В других алгоритмах открытый текст разбивается на блоки, состоящие из нескольких бит. Такие алгоритмы называются блочными, или блочными шифрами. В современных компьютерных алгоритмах блочного шифрования длина блока обычно составляет 64 бита.
Основное преимущество несимметричных алгоритмов перед симметричными состоит в том, что секретный ключ, позволяющий расшифровывать всю получаемую информацию, известен только получателю сообщения. Кроме того, первоначальное распределение ключей в системе не требует передачи секретного ключа, который может быть перехвачен нарушителем. Несимметричные алгоритмы получили новое качество — на их основе строятся протоколы цифровой подписи. Для аутентификации с использованием симметричных алгоритмов часто требуется участие доверенной третьей стороны, которая, как, например, в схеме Kerberos, хранит копии секретных ключей всех пользователей. Компрометация третьей стороны может привести к компрометации всей системы аутентификации. В системах с открытым ключом эта проблема устранена потому, что каждый пользователь отвечает за безопасность только своего секретного ключа.
Симметричные алгоритмы при обнаружении в них каких-либо слабостей могут быть доработаны путем внесения небольших изменений, а для несимметричных такая возможность отсутствует.
Симметричные алгоритмы работают значительно быстрее, чем алгоритмы с открытым ключом. На практике несимметричные алгоритмы шифрования часто применяются в совокупности с симметричными алгоритмами: открытый текст зашифровывается симметричным алгоритмом, а секретный ключ этого симметричного алгоритма зашифровывается на открытом ключе несимметричного алгоритма. Такой механизм называют цифровым конвертом (digital envelope).
Наиболее широко в настоящее время применяются следующие алгоритмы шифрования:
· DES (Data Encryption Standard);
· Blowfish;
· IDEA (International Decryption-Encryption Algorithm);
· ГОСТ 28147-89;
· RSA (авторы: Rivest, Shamir и Alderman);
· PGP
В симметричных криптоалгоритмах (DES, ГОСТ, Blowfish, RC5, IDEA) для шифрования и расшифрования информации используется один и тот же секретный ключ. Достоинствами таких алгоритмов являются:
· простота программной и аппаратной реализации;
· высокая скорость работы в прямом и обратном направлениях;
· обеспечение необходимого уровня защиты информации при использовании коротких ключей.
К основным недостаткам этих криптоалгоритмов следует отнести увеличение затрат по обеспечению дополнительных мер секретности при распространении ключей, а также то, что алгоритм с секретным ключом выполняет свою задачу только в условиях полного доверия корреспондентов друг другу.
В несимметричных криптоалгоритмах (RSA, PGP, ECC) прямое и обратное преобразования выполняются с использованием открытого и секретного ключей, которые не имеют взаимосвязи, позволяющей по одному ключу вычислить другой. С помощью открытого ключа практически любой пользователь может зашифровать свое сообщение или проверить электронно-цифровую подпись. Расшифровать такое сообщение или поставить подпись может только владелец секретного ключа.
Такие алгоритмы позволяют реализовать протоколы типа цифровой подписи, обеспечивают открытое распространение ключей и надежную аутентификацию в сети, устойчивую даже к полному перехвату трафика.