как работает шифрование - PullRequest
0 голосов
/ 14 мая 2011

Привет
Я знаю основные правила на https!
Я знаю, что есть закрытый и открытый ключ, и открытый ключ для шифрования, а закрытый ключ для дешифрования!
Теперь у меня есть вопросы:
* - Если я знаю открытый ключ, почему я не могу расшифровать данные, конечно, это связано с закрытым ключом !!!
* - И шифрует ли протокол https все данные или только данные, отправленные клиентом? Например, если я захожу на gmail.com, html-коды зашифрованы или нет?
Теперь, если ответ «да» (и HTML-коды зашифрованы), как мой браузер может расшифровать его, а другие - нет?
Если нет, почему мы должны использовать его, например, для загрузки резервной копии важных данных?

Ответы [ 3 ]

4 голосов
/ 14 мая 2011

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

Нет математических доказательств того, что факторизация с большим целым числом не имеет простых решений: однако, несколько десятилетий интенсивных исследований не нашли никаких алгоритмов полиномиального времени. (Не то, чтобы кто-то обязательно был бы быстрым , просто то, что его поиск был хорошей долгосрочной целью.) Безопасность криптосистемы 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.
3 голосов
/ 14 мая 2011

Ладно, пара вопросов здесь.

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

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

Статья в Википедии о Безопасность транспортного уровня (SSL был действительно проприетарным термином от Netscape) вполне приемлема.

Если бы вы могли получить этот ключ, вы действительно могли бы расшифровать данные, но поскольку обычный ключ теперь имеет длину 128 бит, у вас есть примерно 1 шанс в 2 128 получить его правильно - или, по-другому, вы можете ожидать около 2 127 (170141183460469231731687303715884105728) попыток, прежде чем найдете ключ.

Но во-вторых, асимметричное шифрование, однако, происходит одним способом. Когда вы устанавливаете соединение SSL, хост предоставляет сертификат X509 , чтобы идентифицировать себя; это значит, что кто-то не может взломать DNS и заставить себя выглядеть как paypal.com вместо взлома снижения ставки Влада. Сертификат X509 подписан с использованием пары открытый / закрытый ключ: подпись хешируется с использованием закрытой стороны ключа доверенного поставщика, скажем, VeriSign. Они предоставляют сторону public , которая позволяет вам подтвердить, что сертификат действительно был зашифрован VeriSign. Это подтверждает подлинность сертификата.

1 голос
/ 14 мая 2011

ЕСЛИ я знаю открытый ключ, почему я не могу расшифровать данные, конечно, это связано с закрытый ключ !!!

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...