twitter/github/habrahabr: @herrjemand
Чистая, парольная, аутентификация
В чём проблема?
Взлом базы данных ведет к компрометации пароля
Парольная аутентификация с хешированием и солью
H(d) = hs
H("дипломная") = 5533977...
H("дупломная") = 3DC2963...
Сумма файла, сумма сообщения для подписи, хеш-мак... все что требует безопасности
хеш-таблицы, и т.д.
вер.колл: 10^-60 <
вер.колл: 10^-10 >
SHA2, SHA3
Для всего остального
Для паролей
В порядке доступности scrypt, argon2, bcrypt, и если ничего другого нет PBKDF2.
MD5/4/3/2/1, SHA1
Старые, быстрые хеш функции которые уже были поломаны
и потенциально вас Засудят ;)
GDPR штрафы достигают 20 миллионов евро (650млн грн.) или 4% годового глобального дохода компании
Атака по середине
В чём проблема?
Безопасное соединение с помощью TLS
https://twitter.com/durumcrustulum/status/983613760995774464
https://www.miagilepner.com/2017/04/21/TLS-Diagram/
TLS1.1/1.2/1.3
RSA 1024
ECDSA
SSL
никакой
ни версии 2 ни 3
вообще
RC4
3DES/DES
Export ciphers
MD5/SHA1
RSA 2048 >=
https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-src; object-src 'none'";
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name SITE.COM;
return 301 https://$host$request_uri;
}
# HTTPS server
server {
listen 443 ssl default deferred;
server_name SITE.COM;
root /sites/SITE.COM/public;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
ssl on;
ssl_certificate /var/lib/acme/live/SITE.COM/cert;
ssl_certificate_key /var/lib/acme/live/SITE.COM/privkey;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5:!3DES:!CAMELLIA:!AES128";
resolver 8.8.8.8;
ssl_stapling on;
ssl_trusted_certificate /var/lib/acme/live/SITE.COM/fullchain;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;";
}
HTTP перенаправление на HTTPS
Сертификат и ключ
DH params - не забывайте генерировать
Хорошие конфиги
БОТЫ
В чём проблема?
Двухфакторная аутентификация на одноразовых паролях
То что я знаю
То что я имею
То что я наследую
То что я знаю
То что я имею
То что я наследую
SMS
TOTP/HOTP
Фишинг
В чём проблема?
Универсальная двух-факторная аутентификация
Шаг первый: Вызов-Ответ
Шаг второй: Защита от фишинга
Шаг третий: Регистрационные пары ключей
Шаг четвертый: Защита от атаки повтором
Шаг пятый: Аттестация устройства
Шаг шестой: Тест на присутствие пользователя
В U2F, прежде чем произвести криптографическую операцию, устройство должно подтвердить присутствие пользователя
e.g.
Отпечаток
Сканер ретины
Пинкод
День рождения жены
Рубик-кубик
...ну чё захочешь короче
Кнопка
Как можно компрометировать пароль?
В чём проблема?
Public Key Credential management API extension
for Level 1 Credential Management API
and Client to Authenticator Protocol
2
Дополнение к API для менеджмента учетными данными публичного ключа
для API первого уровня менеджмента учетных данных
и протокол для управления аутентификаторами
2
Ссылки