Рейтинг:1

Понимание практических различий между Эль-Гамалем и Диффи-Хеллманом

флаг id

Мне поручили создать сайт Web Assembly, реализующий E2EE. Я думал использовать шифрование Эль-Гамаля для шифрования сообщения и Диффи-Хеллмана для установки ключа. После дальнейших исследований у меня возникли проблемы с пониманием практических вариантов использования ElGamal против Diffie-Hellman.

Если я правильно понимаю. И Диффи-Хеллман, и Эль-Гамаль полагаются на задачу дискретного журнала, что делает их идеальными. Диффи-Хеллман только устанавливает ключ между двумя хостами, затем для отправки сообщения используется симметричная криптографическая система. Эль-Гамаль шифрует сообщение один раз, используя тот же метод, что и Диффи-Хеллман, а затем его необходимо каждый раз регенерировать, что является медленным и трудоемким процессом. Поэтому я думаю, что Diffie-Hellman лучше всего подходит для сценария, когда пользователи часто общаются, а ElGamal для однократной передачи файлов.

Поэтому я обсуждаю, какое использование в моем веб-приложении. Сначала я думал использовать как Диффи-Хеллмана, так и Эль-Гамаля. Теперь я думаю использовать Диффи-Хеллмана для установления ключа между двумя сторонами, а затем использовать схему симметричного шифрования, такую ​​​​как AES.

Одна статья, которую я нашел особенно полезной, была https://www.commonlounge.com/discussion/2be4d294aa9e44d4b67f6644cd9b5ced

В частности, Рубрика "Практическое использование и приложения"

Если бы я использовал Diffie-Hellman и AES, как часто нужно было бы восстанавливать ключ?

Я надеюсь, что кто-то может подтвердить, правильно ли я понимаю практическое использование, и помочь заполнить любые пробелы в моем понимании.

Спасибо!

kelalaka avatar
флаг in
Как часто на самом деле зависит от вашего режима работы и размеров ключей. Если вы свободны в выборе, выберите ECDH (эллиптическая кривая DHKE) и XChaCha20-Poly1305.
Davis avatar
флаг id
Спасибо за это предложение. Я посмотрю в ECDH. На данный момент мой режим работы довольно мал. Это проект для моего последнего года в университете.
Maarten Bodewes avatar
флаг in
Вы знакомы с [IES](https://en.wikipedia.org/wiki/Integrated_Encryption_Scheme)?
kelalaka avatar
флаг in
Да, IES или Nacl, которые существуют на многих языках.
Davis avatar
флаг id
Я немного знаком с IES. Я тоже рассмотрю это. Спасибо за предложение. Я планировал использовать криптобиблиотеку. До сих пор BouncyCastle выглядел очень уважаемым.
Maarten Bodewes avatar
флаг in
Он используется много; это также довольно плохо задокументированная мешанина с проблемами с побочными каналами и тому подобным в прошлом. Тем не менее, вы получаете отличную поддержку через список рассылки разработчиков, а авторы/разработчики — очень приятные ребята.
Рейтинг:1
флаг br

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

Вот еще один вопрос, где они используют IES в BouncyCastle:

https://stackoverflow.com/questions/33297274/using-bouncycastle-to-encrypt-with-ecies-in-java

Maarten Bodewes avatar
флаг in
Мне было интересно, буду ли я писать этот код, и да, конечно, так оно и было :) Остерегайтесь, что гибридное шифрование не так уж хорошо определено. Вы можете реализовать ECIES самостоятельно, чтобы использовать новейшие и лучшие режимы работы (например, режим GCM для симметричного шифра вместо CBC, который уязвим для атак оракула заполнения, которые могут препятствовать конфиденциальности); вы также можете *подписать* свой открытый текст или зашифрованный текст, чтобы обеспечить аутентификацию/целостность. В этом смысле использование NaCL, вероятно, было бы проще.
Davis avatar
флаг id
Спасибо всем за предложения и ресурсы! Я ценю его!

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

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