> RSA 2048, RSA 4096, Ed25519 и AES128, AES256, ChaCha20 для симметричных ключей. 25519 сам по себе != Ed25519. И позволяет ряд эффектных фокусов.
Как то: секрет посчитаный через(their_public, our_secret) == секрет через (our_public, their_secret). Это такой себе диффи-хеллман, но размер ключей такой что они могут быть переданы заранее, "голубем" или смской или QR или даже вбиты с клавы или скопипащены если приспичило.
Там же и красивое апи crypto_box() в котором сложно наломать дров даже будучи дилетантом. Требования простые, их могут выполнить даже "двое из ларца". Оно как раз довольно удобно для пакетных штук с 1 стороны, с другой обеспечивает кучу желаемых свойств от PFS малой кровью (достаточно передать ремоте в энном пакете временный сессионный пубкей и получить их временный пубкей в ответ, а при завершении сессии выпилить временные секретные ключи назло атакующим). С RSA так конечно тоже можно - но keypair(RSA) для временных ключей зело медленная и дорогая операция чтоб на лету в сессии ее так уж регулярно делать. А для 25519 вполне вариант.
> Либо выбрать наилучшие, но RSA 2048 пока что тоже норм.
Да просто не понимаю чего этот RSA всем дался. Доисторический урод с кучей проблем и с безопасностью у него - весьма так себе. Особенно если не понимать что делаешь. А хреновая скорость оперций зарубаят ряд начинаний по чисто практическим мотивам. Пары ключей 25519 можно генерить как захотелось ключ линка в PFS сменить, хоть каждую минуту. И если через минуту временные ключи аннулированы - атакующий может что угодно делать но в памяти Алисы и Боба уже нет приватных ключей. Расшифровывать перехваченое чисто технически уже нечем: два публичных ключа не ведут к расшифровке трафика. Только к рантайм-аутентификации что алиса это алиса а боб это боб, раз могут шифровать этим ключом. С RSA сие задолбает нагрузкой на проц, там генерация ключей весьма нетривиальный процесс. Мало того что огромная математика так еще отсев проблемных ключей и проч, и проч.