Интернет — не только всемирное хранилище данных, в котором каждый обязательно найдет именно то, что ему нужно (если, конечно, умеет искать , хотя это лишь вопрос времени), и не только кладезь всевозможных развлечений на любой вкус. Еще одно исключительное предназначение Интернета — передача информации, например, с помощью электронной почты. В этом плане он уникален. Нет других настолько разветвленных почтовых сетей. Доставка корреспонденции происходит здесь почти мгновенно, на зависть традиционным службам XX в. И наконец, сообщения можно получать, находясь физически где угодно, были бы компьютер и модем.

Есть у Интернета и недостаток — угроза информации со стороны всяческих злоумышленников, половина из которых действует просто из желания напакостить или доказать что-либо миру. Хуже и опаснее, если ваша информация представляет для кого-то практический интерес, например деловая переписка.

Что может сделать с информацией злоумышленник

Во-первых, просто ее прочитать (и использовать затем вам во вред), что называется нарушением конфиденциальности информации.

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

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

А теперь перейдем непосредственно к теме нашего обсуждения и рассмотрим шифрование.

Какой ключ был у Штирлица?

Несколько слов о самом шифровании

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

Итак, шифрование — это преобразование информации из открытой формы в закрытую (зашифрованную). Существует, естественно, и обратный процесс (расшифрование).

Математически процесс шифрования сообщения M с помощью алгоритма шифрования E выглядит так:

С = Ek1(M),

где C — полученное в результате шифрования сообщение, k1 — ключ шифрования. Обычно алгоритмы шифрования не являются секретными (например, современный российский алгоритм шифрования ГОСТ 28147-89 опубликован как стандарт) и известны всем, а вот ключ — это тот самый секретный элемент, который позволяет зашифровать сообщение так, чтобы никто другой, не имеющий ключа, не смог его прочитать.

Так выглядит брелок для USB-порта, на котором можно хранить ключи

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

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

Схема симметричного шифрования

Приведу формулу и для расшифрования:

M = Dk2(C).

Здесь D — алгоритм расшифрования, которым ваш адресат обрабатывает сообщение C с целью получить посланное ему сообщение M. Если система построена верно и ключи не перепутаны (кстати, ключ k2 может быть и не равен ключу k1, но об этом позже), то адресат примет именно то, что вы передали. При этом никто другой не сможет это сообщение подсмотреть, поскольку по Интернету оно пересылается в виде нечитаемой шифровки.

Какие же бывают алгоритмы шифрования? Прежде всего, они делятся на два вида: симметричные и асимметричные. Давайте остановимся на них более подробно.

Алгоритмы с секретным ключом

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

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

Такой алгоритм очень удобен и при шифровании файлов для себя, чтобы хранить их в защищенном виде на собственном компьютере, что весьма важно для владельцев ноутбуков, которые в Европе и США принято забывать во всех общественных местах, да их могут и просто украсть. Однако, зашифровав всю информацию на ноутбуке, вы можете спокойно его терять (насколько позволяют вам ваши финансы): никто не прочтет. Если, конечно, не оставить вместе с ним и дискету с ключом — как часто смеются в прессе над теми, кто записывает секретный PIN-код карты VISA и кладет ее в кошелек вместе с самой картой. Существует множество программ для шифрования информации на своем компьютере. Среди них особо следует выделить программы «прозрачного» шифрования, т. е. незаметного для пользователя. Такие программы обычно применяются для шифрования целиком логических дисков компьютера. Их можно настроить один раз, а потом они будут автоматически зашифровывать все, что пишется на диск, и точно так же автоматически расшифровывать все, что считывается с диска. Удобно, быстро и безопасно.

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

Матрица ключей симметричного шифрования

Примеры используемых в настоящее время симметричных алгоритмов:

  • отечественный стандарт шифрования ГОСТ 28147-89. Сильный алгоритм с длинным ключом - чем длиннее ключ, тем лучше защита, хотя и несколько медленнее. В нем пока еще не найдено изъянов (или об этом успешно молчат ). Кстати, этот алгоритм является обязательным для применения в государственных организациях России, а также в негосударственных, но обменивающихся с ними конфиденциальной информацией;
  • алгоритм DES (Data Encryption Standard). Слабоват из-за чересчур короткого ключа (слишком давно разработан - тогда ключа хватало), но все еще активно применяется, поскольку давно стал общемировым стандартом;
  • алгоритм AES (Advanced Encryption Standard). Новый алгоритм, предлагаемый в качестве общемирового стандарта вместо DES. Выбирался Американским Институтом стандартов из 15 алгоритмов-претендентов. И что удивительно, победили вовсе не американцы, а двое криптографов из Бельгии с оригинальным и, согласно исследованиям, не имеющим недостатков алгоритмом Rijndael.

Алгоритмы с открытым ключом

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

Опишем теперь последовательно этот метод.

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

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

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

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

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

Схема симметричного шифрования

Не доказана математически криптостойкость (т. е. стойкость против взлома ключа шифрования или зашифрованного текста) асимметричных алгоритмов. Впрочем, всем ясно, что математика — дело темное, и пользователей это не останавливает.

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

Однако, как сказал кто-то из классиков, женщины любят нас за наши недостатки. Так и здесь, несмотря ни на что асимметричное шифрование получило в мире широкое распространение. В качестве примера можно привести алгоритм RSA, названный так по первым буквам его авторов (Rivest — Shamir — Adleman). А в России стандарта асимметричного шифрования до сих пор еще нет — все упирается в эту самую математическую недоказанность.

Комбинированный метод

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

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

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

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

Слабое звено

Увы, слабое звено в хорошей системе шифрования существует всегда — это пользователи (не знаю, чья шутка: «Invalid user. Replace it and strike any key», но уж очень она к месту). Они теряют пароли и дискеты с секретными ключами, запускают всякие прикрепленные к письмам от незнакомцев файлы (прямая дорога для вирусов) либо просто разбалтывают тайны по телефону. Значит, при любой системе шифрования необходимо разъяснять пользователям, где и каким образом хранить ключи, какую информацию обязательно шифровать и как проверять почту антивирусом. Обычно все это приходится расхлебывать администратору по безопасности, если речь идет о защите сведений организации. Пользователям же пожелаю не снижать степени защищенности системы, иначе придется в XXI в. отсылать секреты заказными письмами, а не через Интернет, что, согласитесь, совсем не в ногу со временем.

ОБ АВТОРЕ

Сергей Петрович Панасенко — начальник отдела разработки программного обеспечения фирмы «АНКАД», e-mail develop@ancud.ru.