53
Безопасность аутентификации веб-приложений Сергей Нартымов Brainspec https://github.com/lest twitter: @just_lest

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

  • Upload
    sqalab

  • View
    3.934

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Сергей НартымовBrainspec

https://github.com/lesttwitter: @just_lest

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

Хэш пароля

• MD5

• SHA-1

• SHA-2

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

Хэш с солью

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

Хэш с солью

• Пароль пользователя• Соль пользователя• Соль приложения

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

PBKDF2

Password-Based Key Derivation Function 2

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

PBKDF2DK = PBKDF2(PRF, Password, Salt, c, dkLen)

DK = T1 || T2 || ... || Tdklen/hlenTi = 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)

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

PBKDF2DK = PBKDF2(PRF, Password, Salt, c, dkLen)

DK = T1 || T2 || ... || Tdklen/hlenTi = 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)

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

PBKDF2DK = PBKDF2(PRF, Password, Salt, c, dkLen)

DK = T1 || T2 || ... || Tdklen/hlenTi = 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)

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

PBKDF2DK = PBKDF2(PRF, Password, Salt, c, dkLen)

DK = T1 || T2 || ... || Tdklen/hlenTi = 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)

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

PBKDF2DK = PBKDF2(PRF, Password, Salt, c, dkLen)

DK = T1 || T2 || ... || Tdklen/hlenTi = 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)

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

bcrypt

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

bcrypt

$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa

идентификатор алгоритма

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

bcrypt

$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa

сложность

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

bcrypt

$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa

соль

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

bcrypt

$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa

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

PBKDF2

scryptbcrypt

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

504 Gateway Time-out

502 Bad Gateway

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

Перебор пользователей

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

Перебор пользователей

• Форма логина• Неверный адрес e-mail или пароль.

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

Перебор пользователей

• Форма восстановления пароля• Если ваш адрес e-mail есть в нашей базе данных, то в течение нескольких минут вы получите письмо с инструкциями по восстановлению вашего пароля.

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

Перебор пользователей

• Форма регистрации

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

Тайминговые атаки

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

Блокировка доступа

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

Блокировка доступа

• для пользователя• для IP-адреса

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

Блокировка доступа

• CAPTCHA

• разблокировка по ссылке из письма

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

Инвалидация сессии

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

Инвалидация сессии

• хранить в сессии данные, которые изменяются при изменении пароля

• проверять при доступе к сессии

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

Инвалидация сессии

• хранить сессии в БД• показывать активные сессии

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

Запомнить меня

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

Запомнить меня

• добавляем токен и время

• храним токен в HttpOnly cookie

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

Восстановление пароля

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

Восстановление пароля

• не стоит генерировать пароль и присылать его на почту

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

Восстановление пароля

• генерируем токен и отправляем на почту ссылку с этим токеном

• по ссылке показываем форму изменения пароля

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

Сложность пароля

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

Без пароля

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

Без пароля

• Одноразовые коды доступа

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

Без пароля

• Одноразовые коды доступа

• OpenID

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

Без пароля

• Одноразовые коды доступа

• OpenID

• OAuth

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

SSL

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

SSL

startssl.com

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

Двухэтапная аутентификация

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

Двухэтапная аутентификация

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

Двухэтапная аутентификация

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

Google

Двухэтапная аутентификация

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

Google

Facebook

Двухэтапная аутентификация

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

Google

Facebook

Dropbox

Двухэтапная аутентификация

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

Google

Facebook

AWS

Dropbox

Двухэтапная аутентификация

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

Google

Facebook

AWS

Dropbox

GitHub

Двухэтапная аутентификация

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

Спасибо

https://github.com/lesttwitter: @just_lest

Сергей НартымовBrainspec