Содержимое
Вчера обещал рассказать, как устроена современная авторизация. Но сначала — история. В древние времена в США можно было попасть на сервер, который тогда называли мейнфреймом, просто зная его IP и список доверенных пользователей. Примеры протоколов — Rlogin. Классический случай взлома — атака Кевина Митника на Цутому Симомору. Позже появились пароли — секретный набор символов, известный лишь пользователю и серверу. Оптимально, когда пользователь хранит пароль исключительно в памяти головного мозга и подключается через устройства, сертифицированные по безопасности. Пользователь получил больше удобства: теперь не нужно было каждый раз заходить с одного и того же терминала. Однако администраторов эта ситуация озадачила сильнее: любой пользователь теоретически мог стать суперпользователем всего тремя командами. Так появилось хеширование. Хеш-функция работает только в одном направлении. Например, у операции умножения есть обратное действие — деление, а вот хеширование идёт строго односторонне. Зная результат хеширования, невозможно легко определить изначальные данные (хотя подбор возможен). Простая аналогия — расчёт контрольной суммы: Имеем ряд значений: 3,0,4,7,5,9,2,8,3,9,1,1,9,7,3,8,0,6,6,2,4,9,5 Сложив цифры: 3+0+4+7+5+9+2+8+3+9+1+1+9+7+3+8+0+6+6+2+4+9+5=111 Берём последнюю цифру: 1. Это наша контрольная сумма. Измените хотя бы один знак в ряду — изменится итоговая сумма. Обратное восстановление набора цифр по контрольному значению невозможно. Например, последовательность 3,0,4,4 даёт сумму 11, и соответственно, тоже значение 1 по описанному методу. Это называется коллизией. Компьютерное хеширование устроено чуть сложнее, но принцип похожий. Следующим этапом защиты стал шифрованный канал передачи паролей, защита хранилищ хеш-сумм и усложнение самих алгоритмов хеширования. Основные атаки превратились в кражи готовых хеш-значений и последующий локальный подбор паролей. Важно здесь именно длина пароля: если потенциальный пароль содержит до 32 различных символов длиной шесть знаков, возможных комбинаций будет ровно 32 в степени 6=1,073,741,824. Перебирая по 10 тысяч вариантов в секунду, понадобится порядка 107 тысяч секунд (≈30 часов). Наконец пришёл массовый интернет с красивыми сайтами, которыми мы сейчас уже начинаем пользоваться реже в пользу социальных сетей. Но об этом — в следующем посте.