Почему мы не должны криптовать с помощью закрытого ключа в асимметричной криптографической системе?

StackOverflow https://stackoverflow.com/questions/1372307

Вопрос

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

В обратном порядке "шифрование с помощью закрытого ключа" называется "подписыванием".

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

Может ли кто-нибудь внятно объяснить, почему такое решение уязвимо?

Пользовательский кейс:

Предположим, что Алиса хочет отправить Бобу кое-что нетрадиционным способом:

Алиса и Боб однажды встретились, и Алиса дала Бобу "открытый ключ", сгенерированный на основе созданного ею закрытого ключа, но предупредила Боба, чтобы он держал это в секрете.И она хранила в секрете закрытый ключ и никогда никому другому не передавала открытый ключ.

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

И как сравнить эту надежность шифрования с традиционным способом, которым в нашем случае был бы Боб, отправляющий сообщения (зашифрованные открытым ключом Alice) Алисе?

О чем идет речь

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

Я не могу использовать другую терминологию, даже если она вводит в заблуждение в данном особом случае.

Я знаю, что этот случай нетрадиционен и может привести к нескольким несоответствиям, или это не суть асимметричных криптосистем, поскольку Боб и Алиса здесь разделяют какой-то общий секрет, и это не суть асимметричной криптографии.

Я видел несколько ответов Stackoverflow, которые предполагают, что "закрытый ключ" и "открытый ключ" могут быть заменены (просто прочитайте ответы ниже).Это неверно для RSA, поскольку сгенерировать открытый ключ из секретного ключа тривиально, и это гарантированно не будет выполнимо с вычислительной точки зрения наоборот.Для неверующих процесс генерации ключа в openssl с помощью RSA является:

  1. сгенерируйте секретный ключ
  2. извлеките открытый ключ из секретного ключа.

Если существуют такие большие различия между "закрытым ключом" и "открытым ключом", есть ли существенная разница между шифрованием "закрытым ключом" и традиционным шифрованием "открытым ключом"?

Короткий ответ из длинного выбранного ответа

Непонимание того, что именно представляет собой "закрытый ключ", мне не помогло.Существует два разных определения понятия "закрытый ключ"."Практический закрытый ключ" и "теоретический закрытый ключ".

Теоретический закрытый ключ из RSA теория разделяет математическую симметричность с открытым ключом:

  • Вы не можете вывести одно из другого
  • Шифрование одинаково надежно в любом случае

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

  • Получить открытый ключ из "практического закрытого ключа" тривиально.
  • Но шифрование остается столь же надежным

Для получения более подробной информации смотрите выбранный ответ !Пожалуйста, прокомментируйте, если остались неверные представления...

Редактировать заметку:

  • Асимметричные пары ключей криптосистемы часто рекламируются как заменяемые (даже в текущих ответах stackoverflow), я пытаюсь отразить тот факт, что это может быть опасным недоразумением, поскольку это не относится к инструментам реальной жизни.
  • Добавлен пользовательский регистр, я надеюсь, что это прояснит мой вопрос
  • Добавлен окончательный "краткий ответ"
Это было полезно?

Решение

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

Это зависит от того, кто что делает.Предположим, Алиса хочет отправить Бобу сообщение, которое может расшифровать только Боб.Алиса шифрует сообщение, используя открытый ключ Боба (в соответствии со стандартным определением "открытого ключа", означающего тот, который известен другим людям, кроме его владельца).Теперь только тот, кто знает закрытый ключ Боба (предположительно, единственный человек, который знает закрытый ключ Боба, на самом деле Боб), может расшифровать сообщение Алисы Бобу.

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

На практике асимметричные алгоритмы дорогостоящи в вычислении, поэтому то, что вы действительно делаете, это выбираете случайный сеансовый ключ соответствующей длины и согласованный стандартный алгоритм симметричного шифрования, такой как AES.Затем основное сообщение шифруется с помощью (относительно быстрого) симметричного алгоритма и отправляется как одна часть сообщения.Другая часть сообщения - это зашифрованный - или дважды зашифрованный - случайный сеансовый ключ.Боб может расшифровать раздел сеансового ключа сообщения, чтобы получить сеансовый ключ;затем он использует это для расшифровки основной части сообщения.

Обратите внимание, что если вы отправляете сообщение нескольким людям, вы можете использовать одно шифрование самого сообщения, а затем зашифровать сеансовый ключ один раз для каждого получателя, используя открытый ключ получателя.Каждый получатель может расшифровать информацию о сеансовом ключе только с помощью принадлежащего ему ключа, но фактически расшифровать ее могут все.Если сообщение объемное (скажем, 2 МБ PDF-файла), то это гораздо экономичнее, чем раздельное шифрование сообщения открытым ключом каждого получателя.

В обратном порядке "шифрование с помощью закрытого ключа" называется "подписыванием".

НЕТ;подписание - это отдельная операция.Если вы читали книгу Шнайера "Практическая криптография", вы увидите, что авторы предлагают использовать одну пару открытого / закрытого ключей для шифрования, а вторую пару - для работы с подписью.Например, подпись шифрует хэш фиксированной длины исходного сообщения с использованием закрытого ключа из ключа подписи.Любой, кто знает часть открытого ключа ключа подписи, может затем расшифровать подпись, чтобы получить хэш исходного сообщения.Предположительно, тот же получатель может также расшифровать сообщение (используя открытый ключ пары ключей подписи), а затем может проверить, совпадает ли хэш полученного сообщения с хэшем, полученным из подписи.Любое несоответствие указывает на проблему, и сообщение должно быть удалено.

Есть много способов сделать это - в зависимости от требований безопасности.

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


Вопрос, даже с поправками, внесенными примерно в 2009-09-05T13:00-07: 00, не является полностью последовательным, IMNSHO.

Вам следует прочитать главу 13 "RSA" в "Практической криптографии" (вероятно, после прочтения некоторых из предыдущих глав - в первую очередь раздела 3.3 Шифрование с открытым ключом).

Обозначения для шифрования и дешифрования

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

  • C = E(K,m) - зашифрованное сообщение (зашифрованный текст, C), сгенерированное алгоритмом шифрования E с использованием ключа K в сообщении m (обычный текст).
  • P = D(K, C) - это текстовое сообщение (plain text, P), обнаруженное алгоритмом дешифрования D с использованием ключа K в (зашифрованном) сообщении c.
  • Чтобы быть рабочей системой, m = P, поэтому D(K, E(K, m)) = m.

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

С асимметричной системой шифрования, Ea и Da являются ли методы шифрования и дешифрования для алгоритма A.Ключевой отличительной особенностью асимметричного криптографического шифра является то , что ключ Kшифровать используемый Ea отличается от ключа Kрасшифровать используемый Da.Кроме того, чтобы быть практичным, вывод K должен быть неосуществимым с вычислительной точки зрениярасшифровать даже если вы знаете , Кшифровать и наоборот.

При асимметричном шифровании Alice создает пару ключей, (овАлиса, РАлиса).Условно говоря, SАлиса является секретным ключом и PАлиса является открытым ключом.Обратите внимание, что Алиса знает оба ключа.Все, что имеет значение, это:

  1. SАлиса и ПАлиса они разные.
  2. Алиса не сообщает никому другому ни об одном из ключейАлиса);крайне важно, чтобы эта информация не была известна никому другому.
  3. Алиса может сообщить другим людям о другом ключе (PАлиса) без ущерба для безопасности системы.

Аналогично, Боб создаст пару ключей, (овбоб, Рбоб).Обратите внимание , что:

  • Боб знает ключи - Ыбоб, Рбоб, и PАлиса.
  • Алиса знает ключиАлиса, РАлиса, и Pбоб.

Алиса отправляет сообщение Бобу

Теперь, когда Алиса хочет отправить сообщение, Малиса-Боб, Бобу, чтобы Боб мог прочитать это (но никто другой не может), она должна зашифровать это с помощью ключа Боба Pбоб.Итак, она создает сообщение:

  • Cалиса-Боб = Ea(Pбоб, Малиса-Боб)

Боб знает (из внешних свидетельств), что сообщение было зашифровано с помощью Pбоб, поэтому он знает , что он должен расшифровать его с помощью Sбоб:

  • Mалиса-Боб = Daбоб, Cалиса-Боб)

Однако на данный момент все, что он знает об этом сообщении, это то, что оно пришло от кого-то, кто знал его Pбоб Клавиша.Он не знает, что это пришло от Алисы, за исключением внешних свидетельств.

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

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

  • C1алиса-Боб = EaАлисаалиса-Боб)
  • C2алиса-Боб = Ea(Pбоб, C1алиса-Боб)

Алиса отправляет C2алиса-Боб Бобу (вместе с некоторой подписью или MAC, чтобы подтвердить, что она не была повреждена при передаче), а затем Боб вычисляет:

  • D1алиса-Боб = Daбоб,C2алиса-Боб)
  • D2алиса-Боб = Da(PАлиса, D1алиса-Боб)

Если все прошло по плану, D2алиса-Боб = Малиса-Боб.

Механика пар ключей RSA

Алгоритм шифрования RSA основан на том факте, что если у вас есть два общедоступных числа (которые являются двумя частями одного открытого ключа), показатель e и модуль упругости n, затем дано сообщение m, это легко вычислить c = me мод n.Однако с вычислительной точки зрения невозможно вывести m дано просто ce и n).Если, однако, вы знаете другой показатель, d, тогда вы сможете волшебным образом вычислить r = cd мод n, и r = m если вы вычислили e, d и n соответствующим образом.Вычислить это невозможно d От e и n не зная какой-то другой информации.

В соответствии со схемой шифрования RSA вы начинаете работу с двумя (большими) случайно определенными простыми числами, p и q, и их продукт является n.Алгоритм RSA основан на том факте, что чрезвычайно сложно учитывать n (определить p и q дано просто n);если кто-нибудь когда-нибудь найдет простой способ разложения больших чисел на множители, то алгоритм RSA будет мгновенно нарушен.

Как только у вас есть n, вам нужно определить показатели e и d такой , что:

  • эд = 1 мод t где t = LCM(p-1, q-1), и LCM является наименьшим общим кратным.

Вы можете выбрать одно из двух значений в виде небольшого нечетного числа - предлагают Шнайер и Фергюсон e = 3, например.Затем вы вычисляете d используя некоторые вычисления, которые они описывают примерно на 6 страницах своей книги.Обычно, d будет довольно большое количество.Затем вы можете опубликовать эту пару (e, n) в качестве составного открытого ключа, сохраняя значения (p, q, t, d) секретно как закрытый ключ.Данный e и n, вычислительно невозможно вывести d без предварительного факторинга n."Практическая криптография" предлагает использовать две разные пары (e1, d1) и (e2, d2), производный от того же значения n, где вы используете e1 для шифрования сообщений и e2 для цифровых подписей;они даже предлагают использовать для них значения 3 и 5.


OpenSSL и генерация ключей

Я полагаю, ваше описание того, как ключи RSA генерируются OpenSSL, сбивает с толку.

Процесс генерации сначала должен сгенерировать до больших случайных простых чисел, p и q в приведенном выше обозначении.Существуют стохастические методы для определения того, является ли данное большое число (вероятно) простым;вычисление двух таких простых чисел занимает некоторое время.Взятые вместе, они используются для вычисления в первую очередь n, а затем d (предполагая e устанавливается каким-либо соглашением).Два этапа, которые вы видите в OpenSSL, являются определяющими n, а затем определяющий d.


Анализ пользовательского кейса

В вопросе говорится:

Предположим, что Алиса хочет отправить Бобу кое-что нетрадиционным способом:

Алиса и Боб однажды встретились, и Алиса дала Бобу "открытый ключ", сгенерированный на основе созданного ею закрытого ключа, но предупредила Боба, чтобы он держал это в секрете.И она хранила в секрете закрытый ключ и никогда никому другому не передавала открытый ключ.

Пока все так хорошо."Открытый ключ" не очень открытый, но в этом нет никакого вреда.

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

Если технология шифрования имеет какую-либо ценность, то да;только Алиса и Боб могут прочитать сообщение, которое Алиса зашифровала своим секретным ключом, потому что только Алиса и Боб знают открытый ключ, который идет вместе с ее секретным ключом.

И как сравнить эту надежность шифрования с традиционным способом, которым в нашем случае был бы Боб, отправляющий сообщения (зашифрованные открытым ключом Alice) Алисе?

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

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

Теперь, когда Боб хочет отправить сообщение Алисе, он может зашифровать его с помощью ее PАлиса открытый ключ, и Алиса (и только Алиса) может расшифровать сообщение, используя своиАлиса секретный ключ.В качестве альтернативы, Боб мог бы зашифровать сообщение с помощью своего Sбоб секретный ключ, и Алиса могла расшифровать его с помощью P Бобабоб открытый ключ.Оба набора шифрования и дешифрования будут работать.

О чем идет речь

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

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

Я не могу использовать другую терминологию, даже если она вводит в заблуждение в данном особом случае.

Ну, "открытые ключи" в вашем случае не так уж широко известны, но это все, что в них необычного.

Я знаю, что этот случай нетрадиционен и может привести к нескольким несоответствиям, или это не суть асимметричных криптосистем, поскольку Боб и Алиса здесь разделяют какой-то общий секрет, и это не суть асимметричной криптографии.

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

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

Просто потому, что когда вы что-то шифруете, вы маскируете это так, что только один человек может это прочитать (человек с закрытым ключом).У вас нет личного ключа этого человека, все, что у вас есть, - это его открытый ключ.

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

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

Например, Алиса хочет отправить файл Bob (да, да, пристрели меня).Элис все равно, сможет ли кто-нибудь еще прочитать ее файл, это не конфиденциально, но она хочет, чтобы Боб был уверен, что то, что она отправила, - это то, что он получил.Затем она может зашифровать свой файл своим закрытым ключом, а Боб может расшифровать файл на своей стороне с помощью ее открытого ключа, гарантируя, что файл не был подделан.Но если кто-то другой прослушивает транзакцию, он также может расшифровать и прочитать файл.Они просто не могут этого изменить.


В приведенном вами случае лучшим способом был бы обмен ключами при их встрече, чтобы на самом деле было две пары ключей.Вы сами упомянули, что RSA, в частности, на самом деле не работает, если вы пытаетесь зашифровать с помощью открытого ключа из-за оптимизаций, внесенных в алгоритм.Я не был бы полностью удивлен, если бы это был обычный случай с другими алгоритмами.Они предназначены для выполнения в одном направлении (приватно / шифрование, общедоступно / дешифрование) и, как известно, являются "дорогостоящей" операцией, поэтому в реальности они, вероятно, будут сильно оптимизированы.

Кроме этого, я не вижу никаких проблем с безопасностью в вашем плане...До тех пор, пока ключи действительно хранятся в тайне.Private / public - это просто распространенные имена, основанные на типичном использовании.Ничто не заставляет вас делать открытый ключ полностью общедоступным.В вашем случае вам может понравиться называть их "ключ шифрования" и "ключ дешифрования", но я бы не стал использовать каждый ключ для обоих.Фактически, я бы порекомендовал вам называть их так внутри вашей программы по причинам, указанным Джонатаном Леффлером в его комментариях:

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

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

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

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

Введите симметричное шифрование (оно же шифрование с открытым / закрытым ключом).Теперь у каждого человека есть закрытый ключ и открытый ключ с обычными правилами.Чтобы отправить сообщение Фреду, вы ищете его (а есть только один) открытый ключ.Затем вы отправляете ему сообщение.Только Фред может прочитать это сообщение.В этой схеме у вас есть 26x2 ключи, и каждому человеку нужно только запомнить и обезопасить 1 секретный ключ.Также должен быть источник открытых ключей, но это несложно.

Использование асимметричного шифрования, как вы описываете, с парой ключей для каждого набора людей, тогда потребовало бы 26x25x2 ключи.

Итак, опять же, речь идет о масштабируемости.Количество ключей, необходимых для симметричных схем, равно N^2-N, где в асимметричных схемах это всего лишь 2*N.

Я не знаю, есть ли какие-то проблемы с авторским правом, но я процитирую "Валерия Прямикова" из этот форум.

Подпись и шифрование - это два разных прототипа с разными требованиями безопасности, которые, помимо прочего, требуют разного заполнения режимы.Использование фразы "расшифровывать с помощью открытого" ключа было самым большим злоупотреблением терминологией в истории криптографии, которая была широко распространена Брюсом Книга Шнайера "Прикладная криптография".Фраза it self была предполагалось, что она будет использоваться для описания схем подписи с сообщением восстановление (например, RSA).Эта фраза также использовалась для адаптации асимметричного шифрования и подписи к старым моделям проверки протокола, таким как ЗАПРЕТ.Однако само по себе это просто неправильное название - открытый ключ известен всем, и операция расшифровки имеет смысл обеспечить конфиденциальность содержимого, что невозможно, если ключ расшифровки известен всем.

Несмотря на это, raw RSA допускает обмен открытым и закрытым ключами, но в на самом деле они не могут быть взаимозаменяемы.Закрытый ключ расшифровки реализовано с помощью ЭЛТ (китайскую теорему остатка), чтобы обеспечить 4-кратный лучше производительность операции закрытого ключа.Для этого - вам нужен не только показатель степени, но и разложение по модулю и мультипликативный инверсии некоторого произведения этих факторов.Открытый ключ имеет только модуль и показатель степени и не может быть использован при таком вычислении.

Вы злоупотребляете здесь терминами.

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

Давайте не будем обращать на это внимания.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top