Создание безопасных сетевых приложений.

Шифр – совокупность алгоритмов криптографических преобразований (шифрование), отображающих множество возможных открытых данных на множество возможных зашифрованных данных и обратных им преобразований.

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

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

Симметричные шифры в свою очередь разделяются на блочные и потоковые. Особенностью блочного шифра является обработка блока нескольких байт за одну итерацию. Работа блочного шифра в самом простом режиме – применение шифрующей функции к блоку данных (простая замена) – вызывает серьезную проблему: статистические свойства открытых данных частично сохраняются, т. к. каждому одинаковому блоку данных однозначно соответствует зашифрованный блок данных. При большом количестве данных (видео, звук) это может дать некоторые сведения для криптоанализа о содержании данных.Удаление статистических зависимостей в открытом тексте возможно с помощью предварительного архивирования, но оно не решает задачу полностью, т. к. в rare остается служебная информация архиватора.

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

Типы поточных шифров.

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

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

DES – Data Encryptios Standart – симметричный алгоритм шифрования, в котором один ключ используется как для зашифрования, так и для расшифрования сообщений.

Криптографическая система с открытым ключом (асимметричный шифр) – система шифрования информации, при которой ключ, которым зашифровывается сообщение и само сообщение передается по открытому, т.е. незащищенному каналу. Для генерации открытого ключа и для прочтения сообщения получатель использует секретный ключ. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах прикладного уровня (SSL, HTTPS, SSH...)

         Этапы работы:

OpenSSL – криптографический пакет с открытым исходным кодом для работы с SSL и TLS.

TLS – Transport Layer Security – криптографический протокол, обеспечивающий защищенную передачу данных между узлами сети.

SSL позволяет создавать RSA. DSA. ключи и сертификаты Х.509, также имеется возможность шифрования данных и тестирования различных соединений.

RSA – криптографический алгоритм с открытым ключом. RSA стал первым алгоритмом такого типа, пригодным для шифрования и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений. Из-за низкой скорости шифрования сообщения обычно шифруют с помощью более производительных симметричных алгоритмов со случайным ключом (сеансовый), а с помощью RSA шифруют лишь этот ключ.

DSA – Digital Sighature Algorithm – алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования. Секретное создание хэш-значения и публичная его проверка – только один человек может создать хэш-значение сообщения, но любой может проверить его корректность.

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

SSL – Secure Sockets Layers (протокол защищенных сокетов). Криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет. При его использовании создается защищенное соединение между клиентом и сервером. Использует шифрование с открытым ключом для подтверждения подлинности передатчика и получателя; поддерживает надежность передачи данных за счет использования корректных кодов и безопасных хэш-функций. SSL состоит из 2-х уровней: на нижнем уровне многоуровневого транспортного протокола он является протоколом записи и использования для инкапсуляции различных протоколов. Для каждого инкапсулируемого протокола он обеспечивает условия, при которых сервер и клиент могут подтвердить друг другу свою подлинность; выполнять алгоритм шифрования и производить обмен криптографическими ключами, прежде чем протокол прикладной программы начнет передавать и получать данные. Для доступа к страницам, защищенным SSL обычно применяется префикс HTTPS и используется 443 порт. Для работы SSL требуется, чтобы на сервере был имелся SSL-сертификат – цифровая последовательность, подтверждающая соответствие между открытым ключом и информацией, идентифицирующей владельца ключа; содержит информацию о владельце, сведения об открытом ключе, его назначении, области применения.

         Открытый ключ может быть использован для организации защищенного канала связи с владельцем 2-мя способами:

-                      для проверки подписи владельца;

-                      для шифрования посылаемых ему данных.

Hosted by uCoz