Size: a a a

2020 March 13

SS

Stanislav Sagan in rust_offtopic
))))))
источник

OA

Oleg Andreev in rust_offtopic
если у тебя есть функция "забыл пароль", то пароль - это дополнительная дыра в системе, а вовсе не фича.
источник

OA

Oleg Andreev in rust_offtopic
лучше тогда просто "send me a magic link" как слак делает, и все тут
источник

SS

Stanislav Sagan in rust_offtopic
Oleg Andreev
если это не для мега-секьюрного банка, то лучше вообще без пароля - шли код/ссылку на почту и все тут
Ну да, замечание очень хорошее..
источник

OA

Oleg Andreev in rust_offtopic
причем это можно сделать полностью stateless. Присылаешь https://.../?exptime=...&mac=HMAC(user_id,exptime,server_secret) и все тут. Главное проверить мак в const-time на сервере
источник

OA

Oleg Andreev in rust_offtopic
Stanislav Sagan
Олег же криптоэксперт) Олег все знает (не сарказм)
я не эксперт, я сраный вебдизайнер
источник

SS

Stanislav Sagan in rust_offtopic
Oleg Andreev
причем это можно сделать полностью stateless. Присылаешь https://.../?exptime=...&mac=HMAC(user_id,exptime,server_secret) и все тут. Главное проверить мак в const-time на сервере
А что значит "мак" в этом всем деле?
источник

OA

Oleg Andreev in rust_offtopic
message auth code
источник

SS

Stanislav Sagan in rust_offtopic
Ага, понял
источник

OA

Oleg Andreev in rust_offtopic
источник

OA

Oleg Andreev in rust_offtopic
внимание: HMAC-SHA1/256 - это хак потому что sha1/256 имеют length extension attack
источник

OA

Oleg Andreev in rust_offtopic
поэтому там вложенная структура и ебанутый паддинг
источник

OA

Oleg Andreev in rust_offtopic
если взять норм функцию, типа shake128, то ты просто делаешь shake128(user_id || exptime || secret) и вынимаешь 32 байта
источник

OA

Oleg Andreev in rust_offtopic
главное, сделать domain separation / length prefixing нормальный или проверить что все поля фиксированного размера
источник

OA

Oleg Andreev in rust_offtopic
оч рекомендую: https://doc.dalek.rs/merlin/index.html
источник

OA

Oleg Andreev in rust_offtopic
источник

OA

Oleg Andreev in rust_offtopic
тут сразу есть все фичи что тебе нужны
источник

SS

Stanislav Sagan in rust_offtopic
Спасибо)
источник

OA

Oleg Andreev in rust_offtopic
t.append_bytes(b"user_id", user_id)
t.append_u64(b"exptime", expiration_time)
t.append_bytes(b"secret", server_secret)
источник

OA

Oleg Andreev in rust_offtopic
одна тонкость с проверкой MAC-ов - что ты не можешь делать if received_mac == computed_mac { ...}
источник