Воздействие соли на этапах аутентификации - PullRequest
0 голосов
/ 25 февраля 2010

Я реализовал многоступенчатую аутентификацию, показанную ниже.

скобки ([и]) символизируют хеш

У клиента есть ключ и секрет , используемые для аутентификации. На сервере имеется таблица базы данных со строками, содержащими ключ , соль и [секрет + соль]

       Client                                    Server
         |                                          |
         ----------------- key -------------------->| 
         |                                          | 
         |                                          |
         |<--------- server-nonce -------------------
         |<------------ salt ------------------------
         |                                          |
         |                                          |
         ------------ key ------------------------->|
         ------------ client-nonce ---------------->|
         --[c-nonce + s-nonce + [secret + salt]] -->|
         |                                          |

Затем сервер проверяет полученный хеш по своей собственной информации.

Мое беспокойство заключается в том, что это позволяет злоумышленнику получить доступ к серверу и затем создать радужный стол для взлома этой учетной записи. Что вы думаете об этом?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2010

Ты прав. Если злоумышленник знает, как работает система, есть шанс получить данные и взломать. Это не безопасно.

Я не понимаю, почему вы идете по этому пути, когда есть много других систем (SSL, аутентификация с открытым ключом и т. Д.), Которые не имеют этих ловушек.

0 голосов
/ 25 февраля 2010

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

только соль \ пароль бесполезны.

алгоритм должен быть похож на:

client-----pass------>server
client<----noonce----server
                     server--------getSalt---->back-end-service
                     server<-------salt------- back-end-service
                     server-------[pass+salt]->storage
0 голосов
/ 25 февраля 2010

Зачем вам соль, чтобы вернуться к клиенту? Чисто защитить секрет пользователя? c-nonce и s-nonce оба передаются в любом случае, поэтому скрывается только комбинация [секрет + соль].

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

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

...