- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF137:DrBrown2
Материал из Linuxformat.
Мастер-класс по криптографии
- Криптографические утилиты гораздо понятнее, если вы знакомы с теорией. Оберните голову мокрым полотенцем и ныряйте…
Книга Симона Сингха [Simon Singh] The Code Book – увле-кательная история криптографии и вечного противостояния создателей и взломщиков кода. В ней упомянуты самые ранние методы шифрования, типа шифров Цезаря и Виженера, и обсуждается машина «Энигма». Но эта книга не только об истории. В последних главах описаны асимметричные шифры типа RSA и протокол обмена ключами Диффи-Хеллмана, применяемые в любом современном дистрибутиве Linux. Я не буду давать обзор этой книги: просто представлю вам свое руководство по криптографии и расскажу, как устроен PGP Фила Циммермана [Phil Zimmermann] для доставки подписанных конфиденциальных электронных писем. На этой странице дано немного теории криптографии, а на следующей мы попрактикуемся в PGP.
Сперва – пара терминов. Шифрование – это преобразование открытого текста (сообщение, картинка JPEG или что угодно) в закрытый текст. Дешифрация – наоборот. Вычислительные алгоритмы, выполняющие шифрование и дешифрацию, называют шифрами (алгоритмами шифрования). Их работой управляет ключ (для программных шифров ключ – большое число). Разные ключи генерируют разные закрытые тексты, даже если шифр и открытый текст те же. Защита шифрованного сообщения обеспечена секретностью не алгоритма, а ключа шифрования.
Размер имеет значение
Размер ключа (число бит в ключе) – один из факторов, влияющих на трудоемкость взлома шифра (расшифровку закрытого текста без знания ключа). 16‑битный ключ имеет 65536 вариантов и поддается атаке грубой силой – перебором всех ключей подряд. Чем длиннее ключ, тем больше времени требует перебор.
В симметричных шифрах для шифрования и дешифрации используется один и тот же ключ. Современные симметричные шифры включают DES, IDEA и Blowfish. Сложность в их использовании состоит в безопасной передаче ключа.
Асимметричные шифры появились в 1978 году. Они используют пару ключей: открытый текст, шифруемый одним ключом, можно дешифровать другим ключом. Один ключ обычно открытый, а второй–закрытый, чтобы не передавать закрытый ключ. Шифрование сообщения открытым ключом адресата гарантирует конфиденциальность – только он сможет расшифровать сообщение, ведь только он знает свой закрытый ключ. Шифрование закрытым ключом отправителя служит цифровой подписью: если сообщение успешно расшифровывается открытым ключом Алекса, оно пришло от Алекса. Первым асимметричным шифром был RSA (назван по именам Ривеста [Rivest], Шамира [Shamir] и Эйдлмана [Adleman]). Более новый – алгоритм Эль Гамаля [ElGamal] , широко применяемый в GPG. Другой алгоритм, DSA, служит для цифровой подписи.
Асимметричные шифры требуют больше вычислительных ресурсов, чем симметричные, и при том же уровне защиты им нужны более длинные ключи. Поэтому их редко используют для шифрования больших объемов данных. Чаще они применяются в протоколе защищенного обмена ключом, чтобы отправитель и получатель безопасно установили общий симметричный ключ в рамках сессии. Асимметричные шифры вместе с криптографическими хэшами образуют основу цифровой подписи, которая аутентифицирует отправителя и подтверждает целостность сообщения.
Где узнать больше
На сайте Боба Кромвела [Bob Cromwell] (http://www.cromwell-intl.com/security/crypto) есть несколько прекрасных страниц под названием «Коротко о криптографии» (Just Enough Cryptography). Классическая книга по предмету – Applied Cryptography Брюса Шнайера [Bruce Schneier] – авторитетное и подробное справочное руководство, хотя она была издана в 1996 году, и ее возраст уже начинает ощущаться. В его более свежей книге Secrets and Lies (2000) представлен более широкий взгляд на «цифровую безопасность в сетевом мире», и в ней совсем нет математики!