Pull to refresh

Comments 6

UFO just landed and posted this here
Занятно, только из-за экономии по трафику вы решились на генерацию уникальных закрытых ключей? Хм… Это нарушает стройную идею асимметричного шифрования.
Извините меня, но вы страдаете полной фигнёй, если не сказать больше. Вы изобрели собственный, притом весьма некачественный велосипед. Никто так в здравом уме не делает.
Почему бы не забить на всё, и не обернуть в обычный SSL, который за вас всё сделает хорошо и красиво?

Но, если уж хотите свою реализацию, то нужно кардинально менять логику.
1. Основное: данные с помощью RSA не шифруют! Вы же сами рассказали про трудоёмкость операции, как результат вы нагружаете клиента и сервера этой работой. Умные люди придумали много хороших симметричных алгоритмов: DES, AES и прочие. Которые гораздо более стойкие чем RSA и гораздо более быстрые и эффективные. Генерите на сервере/клиенте случайный ключ для AES, передавайте его зашифрованным публичным от RSA и дальше используйте именно его, а про RSA забудьте.
2. Вы правильно посчитали что публичный ключ можно раздавать всем угодно, но вот одна маленькая проблема — у вас нет гарантии того, что вы отдаёте и получаете тот ключ, который хотите, а не попали на злобного человека-в-середине. С одной стороны, это мелочь, но вы так напираете на безопасность, что данный факт забывать совершенно не следует. Решение — передавать открытый ключ отдельным каналом, или же подписать его отдельной подписью от VeriSign, который уже есть в системе у клиента (да-да, получились банальные сертификаты). Если не хочется с этим возиться: разместите этот ключ у себя на сайте, и не передавате в сообщениях, пусть клиенты его вручную вбивают, когда 10 раз убедятся что сайт не поддельный.

Ну вот как-то так, заранее извиняюсь, если комментарий получился несколько грубым или фамильярным :)
Все верно, и еще небольшая ремарка.

Реализация RSACryptoServiceProvider в .NET очень неудачна. Если погуглить — можно найти десяток статей, почему этим классом пользоваться нельзя.
Спасибо за здравую критику, и правда следует пересмотреть некоторые решения.

По сути, в статье я пытался показать один из вариантов использования RSA для шифрования в архитектуре клиент-сервер, совершенно не претендуя на то, что данный метод является лучшим. Он просто дает представление о том, как это реализовывается :)
Sign up to leave a comment.

Articles