Рейтинг:2

Как обмен ключами RSA защищен от несанкционированного доступа?

флаг ec

Открытый ключ определяется (Н, Э) куда Н является произведением двух больших простых чисел и е выбирается так, что е.д = 1 (мод фи (N)) куда фи (Н) является тотиентной функцией Эйлера. е является показателем шифрования и г является показателем расшифровки.

Предполагать Икс это симметричный ключ, который зашифрован как с = х ^ е мод (N). Как подделка этого зашифрованного текста с предотвратить?

kelalaka avatar
флаг in
Это учебник RSA, мы его не используем. У нас есть прокладки, такие как PKCS#5v.1.5 и OAEP для шифрования и прокладки PSS для подписи. Позвольте мне найти вам обманщик. ** Что именно вы подразумеваете под фальсификацией? ** [RSA OAEP защищен Ind-CPA] (https://crypto.stackexchange.com/q/35171/18298), если вы говорите только о целостности, вам нужен MAC. И [по крайней мере, эти атаки возможны в учебнике RSA] (https://crypto.stackexchange.com/q/20085/18298), которые предотвращают заполнение, хотя заполнение не распространяется на атаки по сторонним каналам.
Abhisek Dash avatar
флаг ec
Я имел в виду честность. Как MAC реализуется вместе с RSA? Я знаю о реализации MAC в случае симметричного шифрования, но не могу представить, как MAC будет реализован в контексте RSA и асимметричного шифрования в целом.
kelalaka avatar
флаг in
Зашифровать-затем-MAC.Ваш вопрос в основном является обманом этого [Должны ли мы MAC-затем-шифровать или шифровать-затем-MAC?] (https://crypto.stackexchange.com/q/202/18298), и мы не используем RSA для шифрования даже хотя они могут быть безопасными с надлежащей прокладкой. Мы используем гибридное шифрование... **Чего вы пытаетесь достичь?**
kelalaka avatar
флаг in
И без надлежащего заполнения вы не можете защитить учебник RSA от атак.
Abhisek Dash avatar
флаг ec
При симметричном шифровании целостность сообщения защищается схемами, которые вы описали в предыдущем комментарии. Итак, предполагая, что я не использую учебник RSA и использую соответствующую схему заполнения, что не позволяет злоумышленнику изменить дополненный зашифрованный текст. Есть ли в схеме заполнения что-то, что предотвращает подделку зашифрованного текста?
kelalaka avatar
флаг in
См. [Как PKCS 1.5 решает проблему небезопасности Textbook RSA?] (https://crypto.stackexchange.com/q/66722/18298)
Abhisek Dash avatar
флаг ec
Ссылка описывает методы, используемые для атаки на RSA, такие как атака Блейхенбахера. Предположим, злоумышленник не хочет получать симметричный ключ. Все, что они хотят сделать, это нарушить связь. Таким образом, злоумышленник может изменить дополненный зашифрованный текст. После расшифровки и удаления заполнения другая конечная точка получит неверное сообщение/ключ, поскольку зашифрованный текст был подделан. Как получатель узнает, что зашифрованный текст был подделан? В случае симметричного шифрования это можно решить, зашифровав хэш сообщения с помощью симметричного ключа. Какой здесь механизм?
kelalaka avatar
флаг in
не ясно, что структура заполнения выйдет из строя аналогично сбою MAC?
Рейтинг:2
флаг in

Как указано в комментариях под вопросом, RSA обычно не используется в качестве модульного возведения в степень симметричного ключа. Вместо этого либо ключ шифруется с использованием заполнения PKCS#1 v1.5, либо, что предпочтительнее, OAEP, либо общий секрет со случайным значением в диапазоне $\большой[0, N\большой)$ используется для модульного возведения в степень. В последнем случае фактический ключ получается с использованием KDF (функции получения ключа), иногда также называемой просто «PRF» (см., например, TLS 1.2). Это известно как RSA-KEM.

В основном есть два способа избежать подделки ключа с помощью атаки «человек посередине» (MitM):

  1. установление доверия к открытому ключу RSA;
  2. проверка общего секрета и/или производных ключей.

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

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


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

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

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


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

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

Аутентификация клиента TLS почти никогда не используется. Вместо этого он заменяется системами аутентификации или аутентификацией на основе пароля. Либо личность клиента вообще никогда не устанавливается — до тех пор, пока не будет совершена покупка.


Обратите внимание, что аутентификация ключей, установленных с помощью установления ключа RSA, не отличается от установления ключей, например, с помощью Диффи-Хеллмана, хотя в последнем случае необходимо учитывать две пары ключей. В конце концов, можно использовать те же приемы.

Abhisek Dash avatar
флаг ec
Представьте себе следующий сценарий. Сервер отправляет свой открытый ключ клиенту. Клиент проверяет свою подлинность с помощью PKI. Клиент шифрует симметричный ключ, используя открытый ключ, используя PKCS v1.5. Человек посередине перехватывает этот пакет и шифрует свой собственный симметричный ключ, используя открытый ключ сервера. Это вызовет какие-либо проблемы?
Maarten Bodewes avatar
флаг in
Да, хороший комментарий. На самом деле, это то, что может произойти, например. также веб-браузеры. Дело в том, что клиент обычно остается неаутентифицированным (аутентификация клиента TLS не распространена). Обычно это не проблема, если другая сторона, например. интернет-магазин: клиент аутентифицируется с использованием имени пользователя/пароля, если у него есть учетная запись (через защищенное соединение) и/или он предоставляет свою информацию просто во время оформления заказа. Позже я изменю ответ, чтобы указать, что доверие должно быть установлено для любой из сторон, но, конечно, по крайней мере для стороны, которая делится открытым ключом.
Abhisek Dash avatar
флаг ec
Думаю, я понял. Меня беспокоило то, что, если человек посередине подделает зашифрованный текст PKCS v1.5, который содержит симметричный ключ. Но после расшифровки открытый текст может быть несовместим с PKCS v1.5. Предполагая, что трудно подделать зашифрованный текст таким образом, чтобы после расшифровки он стал совместимым с PKCS v1.5, PKCS v1.5 предоставляет своего рода код аутентификации сообщения для зашифрованного симметричного ключа. Правильно ли я предполагаю это?
Maarten Bodewes avatar
флаг in
Нет, потому что злоумышленник может просто зашифровать что-то еще с помощью открытого ключа. Таким образом, даже если эта защита от несанкционированного доступа существует — а она есть — это не имеет значения, злоумышленник может просто полностью заменить зашифрованный текст. *Доверять другой стороне* можно только в том случае, если она выполняет какую-либо процедуру аутентификации. Это может быть операция с закрытым ключом или предоставление ранее установленной парольной фразы.

Ответить или комментировать

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