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