• Like
Безопасность аутентификации веб-приложений
Upcoming SlideShare
Loading in...5
×

Безопасность аутентификации веб-приложений

  • 3,776 views
Uploaded on

Доклад Сергея Нартымова на конференции Application Developer Days-4. г.Минск 13 декабря 2013

Доклад Сергея Нартымова на конференции Application Developer Days-4. г.Минск 13 декабря 2013

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,776
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
8
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Безопасность аутентификации веб-приложений Сергей Нартымов Brainspec https://github.com/lest twitter: @just_lest
  • 2. Хэш пароля • MD5 • SHA-1 • SHA-2
  • 3. Хэш с солью
  • 4. Хэш с солью • Пароль пользователя • Соль пользователя • Соль приложения
  • 5. PBKDF2 Password-Based Key Derivation Function 2
  • 6. PBKDF2 DK = PBKDF2(PRF, Password, Salt, c, dkLen) DK = T1 || T2 || ... || Tdklen/hlen Ti = F(Password, Salt, Iterations, i) F(Password, Salt, Iterations, i) = U1 ^ U2 ^ ... ^ Uc U1 = PRF(Password, Salt || INT_32_BE(i)) U2 = PRF(Password, U1) ... Uc = PRF(Password, Uc-1) DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
  • 7. PBKDF2 DK = PBKDF2(PRF, Password, Salt, c, dkLen) DK = T1 || T2 || ... || Tdklen/hlen Ti = F(Password, Salt, Iterations, i) F(Password, Salt, Iterations, i) = U1 ^ U2 ^ ... ^ Uc U1 = PRF(Password, Salt || INT_32_BE(i)) U2 = PRF(Password, U1) ... Uc = PRF(Password, Uc-1) DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
  • 8. PBKDF2 DK = PBKDF2(PRF, Password, Salt, c, dkLen) DK = T1 || T2 || ... || Tdklen/hlen Ti = F(Password, Salt, Iterations, i) F(Password, Salt, Iterations, i) = U1 ^ U2 ^ ... ^ Uc U1 = PRF(Password, Salt || INT_32_BE(i)) U2 = PRF(Password, U1) ... Uc = PRF(Password, Uc-1) DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
  • 9. PBKDF2 DK = PBKDF2(PRF, Password, Salt, c, dkLen) DK = T1 || T2 || ... || Tdklen/hlen Ti = F(Password, Salt, Iterations, i) F(Password, Salt, Iterations, i) = U1 ^ U2 ^ ... ^ Uc U1 = PRF(Password, Salt || INT_32_BE(i)) U2 = PRF(Password, U1) ... Uc = PRF(Password, Uc-1) DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
  • 10. PBKDF2 DK = PBKDF2(PRF, Password, Salt, c, dkLen) DK = T1 || T2 || ... || Tdklen/hlen Ti = F(Password, Salt, Iterations, i) F(Password, Salt, Iterations, i) = U1 ^ U2 ^ ... ^ Uc U1 = PRF(Password, Salt || INT_32_BE(i)) U2 = PRF(Password, U1) ... Uc = PRF(Password, Uc-1) DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
  • 11. bcrypt
  • 12. bcrypt $2a$10$vI8aWBnW3fID.ZQ4/z идентификатор алгоритма
  • 13. bcrypt $2a$10$vI8aWBnW3fID.ZQ4/zo1G сложность
  • 14. bcrypt $2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps соль
  • 15. bcrypt o1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa
  • 16. bcrypt scrypt PBKDF2
  • 17. 504 Gateway Time-out 502 Bad Gateway
  • 18. Перебор пользователей
  • 19. Перебор пользователей • Форма логина • Неверный адрес e-mail или пароль.
  • 20. Перебор пользователей • Форма восстановления пароля • Если ваш адрес e-mail есть в нашей базе данных, то в течение нескольких минут вы получите письмо с инструкциями по восстановлению вашего пароля.
  • 21. Перебор пользователей • Форма регистрации
  • 22. Тайминговые атаки
  • 23. Тайминговые атаки • https://code.djangoproject.com/ticket/ 20760
  • 24. Блокировка доступа
  • 25. Блокировка доступа • для пользователя • для IP-адреса
  • 26. Блокировка доступа • CAPTCHA • разблокировка по ссылке из письма
  • 27. Инвалидация сессии
  • 28. Инвалидация сессии • хранить в сессии данные, которые изменяются при изменении пароля • проверять при доступе к сессии
  • 29. Инвалидация сессии • хранить сессии в БД • показывать активные сессии
  • 30. Запомнить меня
  • 31. Запомнить меня • добавляем токен и время • храним токен в HttpOnly cookie
  • 32. Восстановление пароля
  • 33. Восстановление пароля • не стоит генерировать пароль и присылать его на почту
  • 34. Восстановление пароля • генерируем токен и отправляем на почту ссылку с этим токеном • по ссылке показываем форму изменения пароля
  • 35. Сложность пароля
  • 36. Без пароля
  • 37. Без пароля • Одноразовые коды доступа
  • 38. Без пароля • Одноразовые коды доступа • OpenID
  • 39. Без пароля • Одноразовые коды доступа • OpenID • OAuth
  • 40. SSL
  • 41. SSL startssl.com
  • 42. Двухэтапная аутентификация
  • 43. Двухэтапная аутентификация
  • 44. Двухэтапная аутентификация
  • 45. Двухэтапная аутентификация Google
  • 46. Двухэтапная аутентификация Google Facebook
  • 47. Двухэтапная аутентификация Google Facebook Dropbox
  • 48. Двухэтапная аутентификация Google AWS Facebook Dropbox
  • 49. Двухэтапная аутентификация Google Facebook AWS GitHub Dropbox
  • 50. Open Web Application Security Project • https://www.owasp.org/ • https://www.owasp.org/index.php/ Cheat_Sheets
  • 51. Спасибо Сергей Нартымов Brainspec https://github.com/lest twitter: @just_lest