@huang05

Вопрос про безопасность с примером. как работает RSA при работе с сертификатами и зашифрованными сессиями?

у меня вопрос по поводу RSA, тема касается как и Сертификатов (ЭЦП) так и обычной защищённой коммуникации.

ЭЦП/Сертификат/Подпись и тд. могут ли использоваться для создания защищённых сессий? Просто если так, то что тогда, если допустим я обменялся с другим человеком открытым ключом сертификата RSA, т.е. он имеет возможность расшифровать подписанный мной документ и проверить хэш, и с помощью этих же ключей RSA я установил с ним защищённую сессию, т.е. скинул ему ключ для зашифовки, то получается у него два два моих ключа и сертификат в придачу?

И вопрос на последок, используется ли клиентом при подключения к примеру по https к серверу отдельно конкретный сертификат или клиент при подключении к серверам создаём ключи для каждой сессии?
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
software engineer
Просто если так, то что тогда, если допустим я обменялся с другим человеком открытым ключом сертификата RSA, т.е. он имеет возможность расшифровать подписанный мной документ


Нет, он не имеет возможность расшифровать. Он может только провалидировать, что документ был подписан тобой.
Если что-то зашифровано публичным ключом, расшифровать может тот, у кого есть приватный ключ.

Если что-то подписано приватным ключом, удостовериться что подписанное верно можно при помощи публичного ключа, при этом публичный ключ должен быть доступен всем, кто желает, на официальном ресурсе (например собственном сайте).

Если у кого-то оба ключа, и этот кто-то не ты, это значит что твои ключи скомпроментированы.

По поводу сертификата.
Для установки шифрованного соединения используется тот же самый ассиметричный алгоритм шифрования с приватным и публичным ключом. Просто в сертификате есть публичный ключ.
Разница в том, что в сертификате есть и другие поля, например центр который выдал сертификат, сроки годности сертификата, может быть доменное имя и другие поля.
Перед установкой https сессии, твой браузер может провалидировать сертификат сервера на соответствие доменному имени, на то, что браузер доверяет этому сертификату (или центру который его выдал), что сертификат не просрочен. А для установкий самой https сессии уже используется публичный ключ из сертификата.
Для каждой https сессии создается свой уникальный секрет, который шифруется публичным ключом и передается на сервер.
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER

ЭЦП/Сертификат/Подпись и тд. могут ли использоваться для создания защищённых сессий? Просто если так, то что тогда, если допустим я обменялся с другим человеком открытым ключом сертификата RSA, т.е. он имеет возможность расшифровать подписанный мной документ и проверить хэш,

Разумеется. Это все стопицто раз описано в тырнете.

Есть Алиса и есть Боб. Предположим, у каждого сертификаты для подписи почты (это важно - у сертификата есть поле применяемости - если там не стоит что он для почты - хрен чего сделаешь), выпущенные ... ну допустим GlobalSign CA.

У Алисы есть свой сертификат (открытый ключ) и ключ (закрытый ключ). Сертификат свой Алиса может хоть на заборе писать, ключ же должна хранить пуще девственности.
У Боба тоже есть свой сертификат и свой ключ. И он его тоже должен беречь пуще ящика пива.

Алиса пишет письмо Бобу.

Сначала она набирает текст "Dear Bob, I'm very pleasant be fucked by you yesterday. I'd like to repeat ASAP"

Потом она шифрует свои откровения открытым ключом Боба, который у нее есть. Расшифровать обратно она уже не сможет - это сможет сделать только Боб своим закрытым ключом. На выходе - шифротекст.
Потом она подписывает шифротекст своим закрытым ключом. Эта операция не изменяет сам шифротекст, но позволит удостовериться в том, что он не изменился в процессе передачи.

Боб получает письмо и проверяет подпись открытым ключом Алисы. Если подпись проверена правильно, то это доказывает, что письмо на самом деле от Алисы, а не от Мэри, которая давно мечтает отдаться Бобу.
После проверки подписи Боб расшифровывает его своим закрытым ключом и читает.

Все. Шифрование и подпись документа, допустим делается так же, только сертификат ессно должен иметь применимость "шифрование документов".
Ответ написан
Комментировать
@dronmaxman
VoIP Administrator
Тонкость в терминологии, везде пишут что публичный ключ расшифровывает подпись, даже если согласиться с этой терминологией, то расшифровка подписи это единственное что может расшифровать публичный ключ. даже если взять какой-то пример из программирования и реализовать функцию проверки подписи то она звучит как расшифровка.

Островные тезисы
Сертификат один
У сертификата два ключа, приватный и публичный, эта пара ключей уникальна, и только они могут работать вместе.
Публичный для шифрования и ВАЛИДАЦИИ подписи (все называют расшифровкой, это не расшифровка, а валидация). Публичный ключ можно раздавать всем.
Приватный для расшифровки и подписи (подпись с точки зрения алгоритма это шифрование, но никто не будет ее расшифровывать, ее будут валидировать)

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

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

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

При шифрованной почты, у каждого клиента есть свой уникальный сертификат и своя уникальная пара ключей. При отправке письма отправителем А, письмо шифруется публичным ключом В, получатель В расшифровывает письмо своим приватным ключом. В обратную сторону наоборот. Это асимметричное шифрование т.к. у шифрование ирасшифровка происходят разными ключами. Сертификат это документ который подтверждает что А это А, а В это В.

Если взять всем известный vpn от WireGuard, то там тоже у каждого есть пара ключей, но сертификат не нужен т.к. все участники vpn сессии заранее знают кому принадлежат ключ и валидация не требуется.

Пример на пальцах.
Есть царь который издает указы на бумаге и рассылает в свои губернии, для этого он приказал изготовить одну приватную печать для себя и кучу публичных печатей для своих апричников, публичная печать не похожа на приватную, а приватная столь уникальна что никто не может ее повторить. Царь пишет указ, ставит на нем штамп приватной печатью и отправляет гонцом, апричник получает документ прикладывает к штампу на документе свою печать и у него получается некий рисунок из двух печатей по которому он понимает что на документе стоит штамп сделанный именно царской печатью и ему можно доверять. К сожаление шифрование публичной печатью так не объяснить)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы