OTPW является одноразового пароля система , разработанная для аутентификации в Unix-подобных операционных систем на Markus Kuhn . Настоящий пароль пользователя не передается напрямую по сети . Скорее, серия одноразовых паролей создается из короткого набора символов (постоянный секрет) и набора одноразовых токенов. Поскольку каждый одноразовый пароль может использоваться только один раз, пароли, перехваченные анализатором паролей или регистратором ключей , бесполезны для злоумышленника.
OTPW поддерживается в Unix и Linux (с помощью подключаемых модулей аутентификации ), OpenBSD , NetBSD и FreeBSD , а общая реализация с открытым исходным кодом может использоваться для включения его использования в других системах.
OTPW, как и другие системы одноразовых паролей, чувствителен к атаке человека в середине, если используется сам по себе. Это можно, например, решить, поставив «под него» SSL , SPKM или аналогичный протокол безопасности, который аутентифицирует сервер и обеспечивает двухточечную безопасность между клиентом и сервером.
Дизайн и отличия от других реализаций
В отличие от S / KEY , OTPW не основан на схеме Лампорта , в которой каждый одноразовый пароль является односторонним хеш-значением своего преемника. Списки паролей, основанные на схеме Лампорта, имеют проблему, заключающуюся в том, что если злоумышленник видит один из последних паролей в списке, то все предыдущие пароли могут быть рассчитаны на его основе. Он также не хранит зашифрованные пароли, как предлагает Авиль Д. Рубин в « Независимых одноразовых паролях» , чтобы на хосте не было файлов с секретами.
В OTPW одностороннее хеш-значение каждого пароля хранится в потенциально широко читаемом файле в домашнем каталоге пользователя . Например, для хеш-значений 300 паролей (типичная страница формата A4 ) требуется только файл .otpw длиной четыре килобайта , что обычно является незначительным объемом дискового пространства.
Пароли - это тщательно сгенерированные случайные числа. Генератор случайных чисел основан на RIPEMD-160 безопасной хэш - функции , и засевают путем хэширования вместе вывод различных оболочек команд. Они обеспечивают непредсказуемость в виде начального числа случайных чисел системы, времени доступа к важным системным файлам, истории использования хоста и т. Д. Случайное состояние - это 160-битный вывод хеш-функции. Случайное состояние повторяется после каждого использования путем объединения старого состояния с текущим выводом таймера высокого разрешения и повторного хеширования результата. Первые 72 бита выходного хеш-кода кодируются по модифицированной схеме base64 для создания читаемых паролей, а оставшиеся 88 бит представляют нераскрытое внутреннее состояние генератора случайных чисел.
Во многих шрифтах, символы 0 и O или 1 , а л и я трудно отличить, поэтому модифицированное кодирование base64 заменяет три символа 01L соответствующим : , = и % . Если, например, пользователь путает ноль с заглавной O, процедура проверки пароля автоматически исправит это. S / KEY использует в качестве паролей последовательности коротких английских слов. Вместо этого OTPW по умолчанию использует кодировку base64, потому что это позволяет печатать больше паролей на одной странице с той же энтропией паролей . Кроме того, среднему шпиону-человеку требуется более 30 секунд, чтобы записать 12-символьную случайную строку в краткосрочную память, что обеспечивает хорошую защиту от кратких взглядов злоумышленника на список паролей. С другой стороны, списки коротких слов запоминаются намного быстрее. OTPW может обрабатывать произвольные алгоритмы генерации пароля, если длина пароля фиксирована. В текущей версии программа otpw-gen может генерировать пароли как в кодировке Base- 64 (опция -p), так и в кодировке из 4 букв (опция -p1) с энтропией, указанной пользователем (опция -e).
Пароль с префиксом гарантирует, что ни кража списка паролей, ни прослушивание линии сами по себе не могут обеспечить несанкционированный доступ. По общему признанию, безопасность, полученная с помощью OTPW, несравнима с безопасностью системы запрос-ответ , в которой пользователь имеет специальный калькулятор, защищенный PIN-кодом, который генерирует ответ. С другой стороны, лист бумаги намного портативнее, надежнее и дешевле специального калькулятора. OTPW был разработан для большой базы пользователей, для которых дополнительное устройство с батарейным питанием неудобно или нерентабельно, и поэтому они все еще используют обычные пароли Unix повсюду.
В отличие от предложения, сделанного в RFC 1938, OTPW не блокирует одновременно более одного одноразового пароля. Если бы он сделал это, злоумышленник мог легко исчерпать свой список разблокированных паролей и заставить его либо вообще не входить в систему, либо использовать обычный пароль для входа в Unix. Таким образом, OTPW блокирует только один пароль, и для всех последующих входов в систему выдается тройной запрос . Если остается доступным более 100 неиспользованных паролей, то существует более миллиона различных проблем, и у злоумышленника очень мало шансов выполнить успешную гоночную атаку, пока авторизованный пользователь завершает ввод пароля.
Применение
Аутентификация с одноразовым паролем с пакетом OTPW выполняется через файл .otpw, расположенный в домашнем каталоге пользователя. Никакое состояние не сохраняется ни в каких общесистемных файлах, поэтому OTPW не вводит никаких новых корневых программ с setuid . Пока пользователь не имеет .otpw в своем домашнем каталоге, функция одноразового пароля для него не активирована.
Пользователь, который хочет настроить возможность одноразового пароля, просто запускает программу otpw-gen . Программа запросит пароль с префиксом, а затем выведет список паролей на стандартный вывод. Выбранный префиксный пароль следует запомнить, а список паролей можно отформатировать и распечатать.
Если используется аутентификация с использованием одноразового пароля, за запросом пароля будет следовать трехзначный пароль. Сначала введите префиксный пароль, который был передан otpw-gen , а затем непосредственно (без нажатия возврата между ними) пароль с запрошенным номером из распечатанного списка паролей:
логин: kuhn Пароль 019: geHeimOdAkH62c
В этом примере geHeim был префиксом пароля .
Умный злоумышленник может заметить вводимый пароль и попытаться использовать тот факт, что компьютеры могут отправлять данные намного быстрее, чем пользователи могут завершить ввод паролей. За несколько сотен миллисекунд, в течение которых пользователю нужно нажать клавишу возврата после последнего символа, злоумышленник может при параллельном подключении к той же машине отправить код клавиши возврата быстрее, чем пользователь.
Чтобы предотвратить такую атаку «гонка за последним ключом» , любая попытка входа в систему, которая происходит одновременно с другой попыткой, потребует ввода трех одноразовых паролей, ни один из которых никогда не будет паролем, заблокированным одновременная попытка аутентификации.
логин: kuhn Пароль 022/000/004: geHeimQ = XK4I7wIZdBbqyHA5z9japt
Смотрите также
Внешние ссылки
- «OTPW Home» .
- Халлер, Нил; Мец, Крейг; Нессер, Филип Дж .; Стро, Майк (февраль 1998 г.). Система одноразовых паролей . IETF . DOI : 10,17487 / RFC2289 . STD 61. RFC 2289 . Проверено 24 октября 2009 .