ECIES - это общедоступный алгоритм шифрования?

Я реализовал алгоритм шифрования RSA для шифрования симметричного ключа, используемого при шифровании данных, но размер ключа и размер зашифрованного текста RSA создали проблему с памятью, поэтому я искал решение для других методов криптографии с открытым ключом. Я нашел интегрированную схему шифрования на основе эллиптических кривых (ECIES) и понимаю теорию, лежащую в ее основе, однако мне немного неясно, как этот метод использовать в качестве общедоступного / асимметричного алгоритма шифрования. Метод вычисляет симметричное шифрование с ключом, полученным из общего секретного кода, для шифрования и дешифрования (используя один и тот же ключ).

Так как же это можно принять за алгоритм асимметричного шифрования? Или есть какой-нибудь способ реализовать это как асимметричное шифрование?

1 ответ

Решение

Мета: это не вопрос или проблема программирования или разработки. Это, вероятно, принадлежит crypto.SX; Вы могли бы попросить о миграции.

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

Перефразируя описание википедии:

  1. (Обычно заранее) Боб генерирует (статическую) пару ключей и публикует публичный ключ достоверно (например, используя сертификат)

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

  1. Боб использует свой приватный ключ для получения DEK и расшифровывает данные

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

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

Посмотрим:

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

  • получатель имеет (статический) закрытый ключ и может расшифровать

  • никто больше не имеет (статического) частного ключа Боба или эфемерного частного ключа Алисы, и никто другой не может расшифровать

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

Вместо этого рассмотрим свойства стандартной / традиционной симметричной схемы:

  • обе стороны должны иметь ключ (только один, а не пара), которым они делятся заранее; оба должны держать это в секрете и не делиться ни с кем другим

  • для этого обычно требуется, чтобы стороны встречались заранее или использовали физически безопасные средства, такие как курьер, для передачи ключа от одного к другому или, возможно, от центрального органа к обоим

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

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

И именно поэтому для меня это звучит как (гибридное) шифрование с открытым ключом!

@dave_thompson_085 хорошо объяснил концепцию. Однако я хотел бы добавить пример, чтобы прояснить это.

Например:

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

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

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