Изменения

Перейти к: навигация, поиск

SSL/TLS

366 байт добавлено, 05:58, 20 декабря 2016
Шифрование
== Шифрование ==
Существует два основных способа шифрования данных: ''симметричный ключ '' (общий секретный ключ) и ''асимметричный ключ '' (открытый ключ).
=== Открытый ключ ===
 
[[Файл:ssl_public-key_encryption.png|center|Шифрование открытым ключом]]
 
Суть асимметричного шифрования заключается в том, что используется пара ключей. Один из них используется в качестве открытого (как правило, он публикуется в самом сертификате владельца), второй ключ называется секретным — он держится в тайне и никогда никому не открывается. Оба ключа работают в паре: один используется для запуска противоположных функций другого ключа. Если открытый ключ используется для того, чтобы зашифровать данные, то расшифровать их можно только секретным ключом и наоборот. Такая взаимосвязь позволяет делать две важные вещи.
 Любой пользователь может получить открытый ключ по назначению и использовать его для шифрования данных, расшифровать которые может только пользователь, владеющий секретным ключом. (Алгоритм RSA) Если заголовок шифрует данные, используя свой секретный ключ, каждый может расшифровать данные, используя соответствующий открытый ключ. Именно это является основой для цифровых подписей. (Алгоритм DSA) '''RSA ''' — самый распространенный алгоритм шифрования с использованием асимметричных ключей.
=== Секретный ключ ===
 
[[Файл:ssl_secret-key_encryption.png|center|Шифрование симметричным ключом]]
При шифровании секретным ключом используется один и тот же ключ для шифрованных данных. Если стороны хотят обменяться зашифрованными сообщениями в безопасном режиме, то у обеих сторон должны быть одинаковые симметричные ключи. Такой тип шифрования используется для большого объёма данных. Обычно используются алгоритмы [https://en.wikipedia.org/wiki/Data_Encryption_Standard DES], 3-DES, RC2, [https://en.wikipedia.org/wiki/RC4 RC4] и [https://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES].
=== Комбинированный подход ===
 
Алгоритмы симметричного шифрования часто включают установленное число добавок и сдвигов. Такие алгоритмы часто используют ключ для помощи при битовых манипуляциях или для того, чтобы шифруемые данные стали более случайными. Другими словами, при увеличении размера секретного ключа может увеличиться случайность шифруемых данных, но не обязательно возрастет сложность вычислений при расшифровке.
Однако, шифрование открытым ключом использует ключ как экспоненту, поэтому значительное увеличения ключа сильно увеличивает количество вычислений, требуемых для шифрования / дешифрования данных.  Таким образом хотя алгоритмы шифрования открытым ключом не сталкиваются с проблемой распределения, с которой сталкиваются алгоритмы шифрования секретным ключом, они требует значительно больше вычислительной мощности. Для использования сильных сторон обоих типов алгоритмов протоколы безопасности обычно используют шифрование открытым ключом для передачи секретных ключей. Как только секретный ключ доставлен начинается передача данных с использованием симметричного шифрования. Существует еще один подход, использующий открытый ключ как соглашение, а не как способ доставки секретного ключа другим. Обе стороны обмениваются публичными ключами и независимо генерируют секретный ключ. Самой распространенной формой такого соглашения является [https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%94%D0%B8%D1%84%D1%84%D0%B8_%E2%80%94_%D0%A5%D0%B5%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0 протокол Диффи-Хеллмана]. Хотя SSL поддерживает протокол Диффи-Хеллмана, большинство SSL транзакций не используют его. Вместо него используется алгоритм [https://en.wikipedia.org/wiki/RSA_(cryptosystem) RSA], который решает проблему распределения секретных ключей.
== Аутентификация и обмен ключами ==
147
правок

Навигация