Системы шифрования с открытым ключом основаны на Односторонние функции ; функции, которые гораздо проще вычислить в одном направлении, чем в другом. Для криптографических систем с открытым ключом существует два основных варианта односторонних функций: Большая целочисленная факторизация и Дискретные логарифмы .
Нет математических доказательств того, что факторизация с большим целым числом не имеет простых решений: однако, несколько десятилетий интенсивных исследований не нашли никаких алгоритмов полиномиального времени. (Не то, чтобы кто-то обязательно был бы быстрым , просто то, что его поиск был хорошей долгосрочной целью.) Безопасность криптосистемы RSA основана на сложности факторизации больших простых чисел.
Существуют математические доказательства того, что решение дискретных логарифмов очень сложно. Алгоритмы Эль-Гамаль и Диффи-Хеллмана основаны на дискретных логарифмах для их безопасности.
Хотя механизмы открытых ключей являются лишь частью реальных развернутых решений. Системы с открытым ключом обычно используются для цифровых подписей и для согласования сеансового ключа , который используется с симметричным шифром . Симметричные шифры намного быстрее, намного безопаснее в использовании с обычным текстом с шаблонами и являются неотъемлемой частью современной конфиденциальности и целостности коммуникаций.
Теперь, чтобы напрямую ответить на ваши вопросы:)
- ЕСЛИ я знаю открытый ключ, почему я не могу расшифровать данные, конечно, это связано с закрытым ключом !!!
Они связаны. И вы могли бы найти одно, данное другому. Но вычислительная сложность его нахождения в настоящее время намного хуже, чем генерация новых пар открытых / закрытых ключей , сам ключ не должен иметь значения к тому времени, как вы его взломали. (Годы для «меньших» ключей, вероятно, тысячелетия для «больших» ключей. Проблема в том, что определение движется по кругу.:)
И шифрует ли протокол https все данные или только данные, отправленные клиентом? Например, если я захожу на gmail.com, html-коды зашифрованы или нет?
HTTPS сам шифрует все в обоих направлениях. ОДНАКО некоторые веб-сайты будут использовать незашифрованные http
для изображений, css, javascript и https
для HTML, который фактически содержит пользовательские данные. Это связано с тем, что обслуживание незашифрованного контента происходит намного быстрее, чем обслуживание зашифрованного контента. Это также очень небезопасно , поскольку большинство этих типов содержимого может быть заменено во время полета, что позволяет злоумышленникам изменять DOM браузера или вводить другой новый код, что позволяет им получить доступ к частным данным. Большинство браузеров жалуются на смешанный SSL / TLS и незашифрованный контент, поэтому, надеюсь, не многие сайты делают это.
как мой браузер может расшифровать его, а другие нет?
Во время рукопожатия SSL / TLS в начале сеанса сервер и браузер согласовывают новый ключ сеанса, который будет использоваться для сеанса. Весь трафик между браузером и клиентом шифруется с помощью ключа сеанса, и в результате того, как создается сеанс SSL / TLS, только клиент и сервер знают ключ:
http://tools.ietf.org/html/rfc5246#page-64
8.1.1. RSA
When RSA is used for server authentication and key exchange, a 48-
byte pre_master_secret is generated by the client, encrypted under
the server's public key, and sent to the server. The server uses its
private key to decrypt the pre_master_secret. Both parties then
convert the pre_master_secret into the master_secret, as specified
above.
8.1.2. Diffie-Hellman
A conventional Diffie-Hellman computation is performed. The
negotiated key (Z) is used as the pre_master_secret, and is converted
into the master_secret, as specified above. Leading bytes of Z that
contain all zero bits are stripped before it is used as the
pre_master_secret.
Note: Diffie-Hellman parameters are specified by the server and may
be either ephemeral or contained within the server's certificate.