Алгоритмы с секретным ключом
Чаще их называют алгоритмами симметричного шифрования. Все они используют один и тот же ключ как для шифрования, так и для расшифрования информации. Если вы собираетесь отсылать кому-либо сообщения, зашифрованные симметричным алгоритмом, то должны позаботиться о том, чтобы каждый получатель имел копию вашего секретного ключа.
Единственный серьезный недостаток алгоритмов симметричного шифрования: перед обменом сообщениями необходимо каким-либо образом передать получателю секретный ключ. Причем не через Интернет, а только «из рук в руки», на дискете обычной почтой или курьерской службой. Сложно, конечно, и время требуется, но сделать это достаточно один раз, после чего можно шифровать письма хоть целый год (эксперты рекомендуют регулярно менять ключ). Естественно, если вы упустите его при хранении или передаче, то считайте, что ваши письма идут в открытом виде, — ключик-то уже у хакера.
Такой алгоритм очень удобен и при шифровании файлов для себя, чтобы хранить их в защищенном виде на собственном компьютере, что весьма важно для владельцев ноутбуков, которые в Европе и США принято забывать во всех общественных местах, да их могут и просто украсть. Однако, зашифровав всю информацию на ноутбуке, вы можете спокойно его терять (насколько позволяют вам ваши финансы): никто не прочтет. Если, конечно, не оставить вместе с ним и дискету с ключом — как часто смеются в прессе над теми, кто записывает секретный 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 [email protected].