Рейтинг@Mail.ru

NetCloud

Простыми словами о сетевых технологиях

Осваиваем VPN: основы криптографии (часть 3)

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

Перед прочтением статьи необходимо привести определение основных терминов криптографии: аутентификация, шифрование, ключ, хэш-функция.

Аутентификация — это процедура проверки подлинности IP-пакетов.

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

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

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

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

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

ris_3

Помимо этого, хэш-функции активно применяются в операционных системах для хранения паролей.

1_hash

Наиболее популярные на сегодня хэш-функции MD5 и SHA (Secure Hash Algoritm). MD5 является одним из алгоритмов хеширования на 128-битной основе. При этом полученный в ходе вычислений результат представлен в шестнадцатеричной системе счисления. Результат вычислений называет еще хеш-суммой, хеш-кодом или просто хешем. MD5 как стандарт хеширования был разработан в 1991 году для создания уникального хеш-кода от заданного значения с последующей проверкой его подлинности. Подробнее про алгоритм MD5 можно почитать в этой статье. Также можно вычислить MD5-хеш онлайн по строке текста. Если же вам нужно получить хеш  файла, то придется использовать специальные программы , например MD5Summer.

Алгоритм SHA-1 был разработан Национальным Агентством Безопасности NSA в 1993 году. Этот алгоритм сопоставляет произвольному сообщению битовую строку размеров в 160 бит. Так же как MD5 алгоритм SHA-1 произошел от MD4. На практике, если нужна более высокая производительность используют MD5, так как у него меньше размер дайджеста (битовой строки). Если же требуется повышенная устойчивость, то стоит прибегнуть к алгоритму SHA-1. В виртуальных частных сетях оба алгоритма используются для проверки целостности данных и как часть цифровых подписей, применяемых в сертификатах с открытым ключом.

Начиная от секретных дешифрирующих колец в ящиках с крупой и до времен машины Engigma, которую использовали немцы во время второй мировой войны, традиционной схемой шифрования была криптография с секретным ключом (SKC, Secret Key Cryptography). В схеме SKC для шифрования и дешифрования используется один ключ. Этот ключ должен быть известен и отправителю и получателю. При таком сценарии, например, Элис для шифрования применяет к открытому тексту определенный ключ и алгоритм, а затем отправляет зашифрованное сообщение Бобу, который использует тот же ключ для расшифровки. Так как для обоих преобразований используется один ключ, то такая криптографическая схема называется симметричным шифрованием и сам ключ называется симметричным (закрытым). Наиболее известная криптографическая схема с секретным ключом — стандарт DES (Data Encryption Standard, стандарт шифрования данных), разработанный в 1970-х гг. компанией IBM и принятый Национальным бюро стандартов в 1977 году для защиты коммерческой и несекретной правительственной информации. Алгоритм DES — это блочный шифр, он принимает 64 бита информации на входе, и после серии преобразований выдает новый 64-битный блок. В схеме DES используется 56-битный ключ, алгоритм построен в расчете на быстрое выполнение аппаратными средствами и медленное программными. Тройной DES (3DES) является вариантом алгоритма DES, в котором для различных режимов используется либо два, либо три разных ключа, связанные тремя ступенями шифрования. Схемы DES/3DES наиболее часто используются для шифрования данных в виртуальных частных сетях, в частности реализаций IPSec. Для защиты приложений электронной коммерции и среды Web известна другая схема шифрования — RC4 (шифр Ривеста, версия 4). Шифр Rijndael (произносится как Рэйн Дал», назван по имени изобретателей доктора наук Йоана Дамена (Joan Daemen) и доктора наук Винсента Рэймена (Vincent Rijmen)) был принят правительством США в 2000 году как новый  усовершенствованный стандарт шифрования (АЕS, Advanced Encryption Standard).

Одной из проблем шифрования по схеме с секретным ключом SKC является обеспечение гарантии того, что Элис и Боб оба имеют секретный ключ.

Так же, как и в случае, если Бобу и Элис выдаются копии физического ключа, когда они физически находятся в разных местах, довольно трудно выдать им секретный ключ через такое не заслуживающее доверия средство, как сеть Интернет.

Криптография с открытым ключом (РКС, Public Key Cryptography) была изобретена, чтобы решить проблему распространения ключа. Несмотря на то, что правительства Великобритании и Соединенных Штатов секретно разработали схемы РКС, прежде чем это сделал кто-либо еще, общественное доверие получила работа Мартина Хеллмана (Martin Hellman) и Уитфилда Диффи (Whitfield Diffie) из Стэнфордского университета. В 1976 году они разработали алгоритм Диффи Хеллмана. Такая схема, также называемая асимметричной криптографией, требует использования двух ключей: для шифрования открытого текста применяется один ключ, а для его расшифровки другой. Неважно, какой ключ применяется первым, а какой вторым, но один из них должен быть обязательно выбран в качестве открытого ключа (число, которое распространяется открыто и не защищается), а другой — в качестве секретного или закрытого ключа (private key; число, которое хранится у владельца и не сообщается кому-либо еще). Принцип действия схемы криптографии РКС показан на схеме ниже.

crypto

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

Для аналогии приведем пример с обычным кодовым замком. Представьте себе, что Боб сделал множество кодовых замков, которые он поместил в различные общественные заведения, такие как почтовые отделения. Он является единственным человеком, который знает кодовую комбинацию к замкам (будем считать, что никто не может взломать замки и узнать комбинацию). Когда Элис хочет отправить письмо Бобу, она может положить письмо в почтовый ящик, получить один из его доступных замков и использовать его для того, чтобы запереть ящик. Таким образом Элис может отправить послание через ненадежную курьерскую службу Бобу без опасений, потому что только Боб может открыть ящик. Боб использует секретную комбинацию для того, чтобы открыть ящик и достать письмо. Такой метод обмена может быть использован для любых сообщений, которые в свою очередь могут быть секретным ключом. Обратите внимание, что эта аналогия не подходит для объяснения использования РКС для цифровых подписей, но она работает для понимания принципов этого метода.

В схеме РКС используются длинные ключи, что делает вычисления относительно медленными по сравнению с SKC, поэтому сообщения обычно не шифруются с помощью РКС. Вместо этого, метод РКС применяется для шифрования коротких секретных ключей, которые уже затем используются для расшифровки данных. Такие протоколы, как SSL (Secure Sockets Layer, протокол защищенных сокетов), основаны на обмене ключами, подобном тому, что описан далее:

  1. Клиент отправляет серверу запрос соединения.
  2. Сервер в ответ отправляет открытый ключ.
  3. Клиент шифрует секретный ключ (иногда эти ключи действительны только в течение короткого промежутка времени или сеанса, поэтому они называются сеансовые ключи) с помощью открытого ключа сервера.
  4. Сервер расшифровывает сообщение своим закрытым ключом, чтобы извлечь секретный ключ.
  5. В результате, секретный ключ передан безопасно, и обе стороны могут использовать один секретный ключ для шифрования и расшифровки данных.

Наиболее известная на сегодняшний день схема РКС именуется RSA, названная таким образом в честь своих изобретателей: Рональда Ривеста (Ronald Rivest), Ади Шамира (Adi Shamir) и Леонарда Адлемана (Leonard Adleman). В схеме RSA применяются блочные шифры различного размера и ключи разной длины. Открытые и секретные ключи выводятся из очень длинного числа, п, которое является результатом двух простых чисел, выбранных по особым правилам. Обычно эти два простых числа состоят из 100 или более цифр каждое. Открытый ключ RSA включает в себя число п и число е, которое получается из множителей числа п. Соответствующий ему секретный ключ суммирует числа п и ,d, где d является другим производным числом. Шифрование получается путем решения следующего уравнения: зашифрованный текст = открытый текст ^ е mod п. Для расшифровки используется похожее уравнение: открытый текст = зашифрованный текст ^ d mod п. Компоненты открытого ключа (е, и) могут распространяться без опасений, что злоумышленник узнает значения секретного ключа (d, n) из этой информации. Однако возможности компьютеров по разложению больших чисел на множители стремительно растут. В качестве защиты схемы RSA пользователи могут увеличивать длину ключа, чтобы всегда опережать возможности компьютеров.

Многие методы безопасности базируются на криптографии РКС для безопасной передачи данных через Интернет. Чтобы полностью использовать сильные стороны этого метода, необходимо создать некую инфраструктуру поддержки. Зарождающаяся инфраструктура открытых ключей (PKI, Public Key Infrastructure) начинает принимать форму, включая в себя массивы протоколов, служб и стандартов. Так как единого общепринятого определения не существует, получается, что цифровые сертификаты и органы управления сертификатами (о которых рассказывается в данном разделе) находятся в некотором беспорядке.