2012-03-16 4 views
0

Нельзя ли просто захватить ключ во время переговоров между машинами?Почему SSL считается безопасным?

Предположим, я подключился к веб-сайту своего банка. Браузер отправит запрос на сервер банка. Банковский сервер отправит мне копию своего SSL-сертификата. Если он действителен, браузер отправит подписанный флажок. Не возможно ли просто захватить закрытый ключ в то время?

+0

Должен ли это быть в IT-безопасности stackexchange, чтобы получить лучший ответ? – mfrankli

+1

SSL основан на асимметричном шифровании; открытый ключ - тот, который используется для дешифрования. Частный ключ не отправляется по сети или не раскрывается каким-либо образом; вот что делает его частным. – bellpeace

+0

Тогда почему другая машина не может расшифровывать информацию с использованием того же открытого ключа? – AccurateEstimate

ответ

3

Ваш личный ключ (и банк тоже) никогда не отправляется по сети. Банк общественный ключ является частью сертификата X509, который он отправляет в ваш браузер. Если банки подписывают что-либо, он делает это с использованием своего закрытого ключа, и ваш браузер проверяет подпись с использованием открытого ключа банка (из сертификата). Весь сеанс SSL зашифрован с использованием симметричного кода (по соображениям производительности). Чтобы иметь возможность сделать это, обе стороны должны обмениваться ключом сеанса (разным для каждого соединения и пересматриваться через определенный промежуток времени). Этот обмен осуществляется с использованием алгоритма Diffie-Hellman. Во время этого обмена ключ не отправляется по сети, он вычисляется независимо обеими сторонами.

+0

Это не просто DH, вы также можете использовать обмен ключами с аутентификацией RSA: http://tools.ietf.org/html/rfc4346#appendix-F.1.1 – Bruno

+0

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

+0

У меня нет никакой статистики, чтобы ответить на это, но вы, вероятно, правы. Я бы сказал, что EDH/DHE (эфемерный вариант DH) также довольно распространен и в наши дни, и он также может обеспечить совершенную секретность вперёд (т. Е. Даже с закрытым ключом сервера, вы не можете расшифровывать нюансированный трафик). – Bruno

1

Доступен только открытый ключ. Банку не нужно делиться частным.

+0

Тогда как моя машина расшифрует информацию? – AccurateEstimate

+0

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

+0

А вы попали в интересную проблему - на самом деле есть две разные версии SSL (на самом деле это TLS в настоящее время). Один, наиболее часто используемый, это «не взаимный» SSL. В этом случае у вас есть сертифицированный открытый ключ от банка, но у банка нет ничего от вас. Таким образом, вы можете отправить данные с конфиденциальностью в банк, но банк не может отправлять вам данные. Другой - взаимный SSL, который вы можете прочитать со связанными с ним проблемами: http: //en.wikipedia.орг/вики/Mutual_authentication. Ключевым моментом является то, что большинство веб-приложений предназначены только для обеспечения безопасности в одностороннем порядке. – mfrankli

0

Закрытый ключ не используется и не хранится в сертификате.

2

Невозможно просто захватить ключ, пока он находится между машинами?

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

+0

Можете ли вы рассказать, как это делается, от сервера точек отправляет свой сертификат в точку, где ключ согласован, то есть установлено SSL-соединение. – AccurateEstimate

+0

Нет, я не могу, требуется несколько страниц RFC 2246. – EJP

+0

@EndofFile: есть также различные руководства, описывающие работу SSL/TLS, например [здесь] (http://docs.oracle.com/javase/7 /docs/technotes/guides/security/jsse/JSSERefGuide.html#SSLOverview) и [здесь] (http://technet.microsoft.com/en-us/library/cc783349%28v=ws.10%29.aspx) , – Bruno

Смежные вопросы