2016-02-25 3 views
1

Говорят, что когда вы используете ssl, вы не позволяете человеку посередине краже информации от сервера к клиенту или наоборот. В моем случае кражу jsonwebtoken. То, что я понимаю также из других ответов, заключается в том, что ssl использует закрытый ключ и открытый ключ. Закрытый ключ хранится на сервере, а открытый ключ выдается клиентам. Вы можете шифровать информацию с помощью закрытого ключа, но вы не можете расшифровать ее с помощью закрытого ключа для того, что вам нужен открытый ключ. Также вы можете шифровать информацию с помощью открытого ключа, но вы не можете расшифровать его с помощью открытого ключа, поэтому вам нужен секретный ключ.SSL - человек в средней атаке - кража jsonwebtoken

Как я сейчас смотрю, когда сервер отправляет открытый ключ клиенту, тогда человек посередине также может получить копию открытого ключа, и он сможет расшифровать информацию с сервера на клиент. Я прямо на этом, или я что-то пропустил. Я понимаю, что человек в середине не может расшифровать информацию от клиента на сервер, потому что у него нет закрытого ключа, но если он уже сможет расшифровать информацию с сервера клиенту, тогда он сможет украсть jsonwebtoken, который позволяет ему регистрироваться от имени клиента.

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

Возможно, я совершенно неправ, или, может быть, я что-то упустил. Надеюсь, кто-то может немного осветить некоторые вещи, потому что это не на 100% понятно мне. Заранее благодарим за помощь.

ответ

0

Открытый/закрытый ключ сервера используется только для установки ключа сеанса. Не шифровать данные, отправленные во время сеанса.

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

Кроме того, для обеспечения конфиденциальности и аутентификации используются многие другие вещи.

+0

Итак, ключ сеанса используется для другого типа шифрования? Это имело бы смысл. – user1881928

+0

Клиент не генерирует ключ сеанса; не шифрует его; и не отправляет его. Он согласовывается по протоколу ключевых соглашений. – EJP

+0

@EJP, я обновил текст, чтобы сказать, что секретный секрет отправляется вместо ключа sesison. Чтобы упростить, я описываю только ключевое соглашение на основе RSA. – Mats

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