SKEY(парольный хэш) - храним на клиенте и на сервере.
Он генерируется однократно при регистрации (например, присылается по электронной почте) и никогда не передаётся по сети в дальнейшем.
1. Сервер передаёт свой рандом клиенту (случайная строка): SERVER_RANDOM
2. Клиент генерирует свой рандом CLIENT_RANDOM и вычисляет CLIENT_HASH: HASH(SKEY+SERVER_RANDOM+CLIENT_RANDOM).
3. Сервер получает от клиента итоговый CLIENT_HASH и CLIENT_RANDOM.
4. Затем, сервер сверяет полученный от клиента CLIENT_HASH и HASH, посчитанный самостоятельно:
CLIENT_HASH===HASH(SKEY+SERVER_RANDOM+CLIENT_RANDOM)
,
5. Если идентичны, то юзер успешно авторизован.