В чем проблема безопасности - утечка закрытого ключа для общего секретного ключа

в чем проблема безопасности в следующем случае, если произошла утечка privateKeyOfA? Может кто-нибудь расшифровать сообщение без privateKeyOfB ??

Aes.encrypt (privateKeyOfA, publicKeyOfB, сообщение) Aes.decrypt (publicKeyOfA, privateKeyOfB)

Если нет, я думаю, зачем нам privateKeyOfA здесь для подписи A?

Проблема в том, что злоумышленник теперь может выдавать себя за A. B не может определить, пришло ли сообщение от A или от кого-то притворяться как A.

S.L. Barth 26.10.2018 09:06

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

fightinglion 26.10.2018 10:39

Если сообщение зашифровано закрытым ключом A, они уже могут расшифровать его открытым ключом A. Расшифровать его может любой желающий.

S.L. Barth 26.10.2018 10:52
0
3
278
2

Ответы 2

Подпись необходима, поскольку получатель должен знать, что сообщение исходит от кого-то, кого он может идентифицировать. Если он не может проверить подпись, это означает, что он не знает человека.

Если закрытый ключ A взломан хакером, он может отправлять сообщения всем с подписью, выдающей себя за A.

Если мне не нужна функция подписи, какое решение будет лучшим? Я имею в виду, что в моем случае не имеет значения, отправлено сообщение A или нет.

fightinglion 26.10.2018 19:15

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

kelalaka 26.10.2018 19:24

Обмен ключами (например, с использованием DH или ECDH) будет использоваться A для преобразования privateKeyOfA + publicKeyOfB в ключ AES. Этот же ключ AES также может быть сгенерирован идентично B с помощью privateKeyOfB + publicKeyOfA. Весь трафик между A и B будет зашифрован с использованием одного и того же ключа AES.

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

Но если использовалась эфемерная версия (например, в некоторых режимах TLS), то для каждого сеанса создается новый ключ, так что если 1 ключ когда-либо будет скомпрометирован, только этот сеанс будет скомпрометирован. Вы можете узнать больше о прямая секретность.

Если ключи используются так, как вы описываете, то они не используются для подписи.

Другие вопросы по теме