Основы основанной на строке безопасности протокола

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

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

Транзакция аутентификации: Клиент соединяется, и сразу ответ проблемы передают обратно с 16 символьными шестнадцатеричными строками. Сторона клиента берет имя пользователя и пароль, пароль преобразовывается, sha1 (соль + sha1 (пароль)) и учетные данные передают обратно серверу как {имя пользователя, пароль}. На стороне сервера аутентификация делает стандартный шаблон поиска (если пользователь существует и имеет пароль, равный для ввода затем предоставления).

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

Я пропускаю что-то? Существует ли лучше/больше безопасный подход для символьного протокола на основе потоков?

5
задан rook 29 October 2010 в 04:12
поделиться

2 ответа

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

НИКОГДА не перестраховывайтесь, особенно когда речь идет о безопасности.

Используйте SSL! Все используют SSL, и у него долгая история проверенной безопасности, и это то, что Вы не можете построить. SSL не только решил проблему "Man in the Middle Attacks", но и вы можете использовать сертификаты вместо паролей для аутентификации клиента и сервера, что делает вас невосприимчивым к грубой силе. Солнце сгорит до того, как взломщик сможет перехитрить 2048-битный RSA сертификат. Отцу больше не нужно беспокоиться о том, что дроппер будет нюхать передачу.

Имейте в виду, что OpenSSL - БЕСПЛАТНО, генерация сертификатов - БЕСПЛАТНО, а пение сертификатов - БЕСПЛАТНО. Хотя единственной причиной, по которой вам нужно подписывать сертификат, является то, что вы хотите реализовать PKI, что, скорее всего, не является обязательным. Клиент может получить жестко закодированный публичный ключ сервера для проверки соединения. Сервер может иметь базу данных клиентских открытых ключей. Эта система будет автономной и не потребует OCSP или CRL или любой другой части инфраструктуры открытых ключей.

6
ответ дан 14 December 2019 в 08:50
поделиться

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

Я предлагаю внедрить протокол SRP 6 . Доказано, что он является безопасным, обеспечивает целостность соединения и даже создает общий секрет, который можно использовать для создания некоторой формы симметричного шифрования. Протокол выглядит немного сложно с первого взгляда, но на самом деле довольно легко реализовать. Существует также демонстрационная демонстрация JavaScript на веб-сайте проекта и ссылается на несколько реализаций на разных языках.

1
ответ дан 14 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: