Пользовательский интерфейс
Обычно пользовательский интерфейс зависит от алгоритмов, заложенных в базовой операционной системе или в программном обеспечении. За некоторыми исключениями, когда есть серьезные основания для изменения интерфейса, правила безопасности могут требовать, чтобы интерфейс пользователя оставался неизменным. Однако системы, построенные на основе расширенных интерфейсов, например, некоторые сетевые операционные системы или системы с инфраструктурой открытого ключа (PKI — public key infrastructure) позволяют делать замены или дополнения к алгоритмам операционных систем, благодаря чему они воспринимаются как более безопасные версии интерфейса.
В зависимости от конкретных условий в формулировке правил управления интерфейсом может быть написано, что интерфейс, предоставленный разработчиком системы аутентификации, изменять нельзя. Альтернатива заключается в том, чтобы алгоритм, используемый для аутентификации, строился на основе других правил.
Областью, в которой ограничения могут быть довольно эффективными, является определение процесса ввода паролей. Чтобы были гарантии того, что во время ввода нельзя перехватить пароли, правилами можно ограничить отображение паролей во время ввода, требовать, чтобы пароль был введен за определенный промежуток времени, разрешать ограниченное количество сбоев при вводе, а также требовать, чтобы пароли не пересылались в читабельной форме.
Интересный вопрос заключается в том, что отображать при введении пользователем пароля. Некоторые виды программного обеспечения выводят звездочки или другие символы при каждом нажатии клавиши. Однако если кто-то заглянет через плечо пользователя, пытаясь увидеть пароль, то он сможет увидеть длину введенного пароля. Зная, какое количество клавиш было нажато, т.е. ограниченный набор комбинаций, кто-то может попытаться определить пароль. Давайте рассмотрим этот вопрос с математической точки зрения. Если пароль состоит из любых печатаемых символов набора ASCII (American Standard Code for Information Interchange — Американский стандартный код для обмена информацией), то существует 96 возможностей для каждой позиции символа. Если пароль не короче 6 символов и не длиннее 10 символов, то количество возможных комбинаций символов будет следующим: 966+967+968+969+9610.
Это составляет более 6.7x1019 возможных комбинаций. Теперь, если нам известно, что пользователь ввел только семь символов, то количество комбинаций уменьшится до 7.5x1013. Однако, если мы видели, что пользователь в качестве первого символа нажимает клавишу "S", то количество комбинаций уменьшится до 2(7,8x1011).
В большинстве случаев мы не можем контролировать методы, применяемые программным обеспечением или операционной системой при вводе пароля. Однако можно разработать правила, предписания которых требуют, чтобы интерфейс не отображал количество символов пароля.
И, наконец, интерфейс должен быть таким, чтобы после ввода пароля он не передавался в систему в читабельной форме. Одна из проблем аутентификации по умолчанию, используемой в интерфейсах всемирной "паутины" (Wold Wide Web), заключается в том, что они передают пароль через Internet в форме, которую легко расшифровать. Эти пароли могут быть перехвачены и тайком использованы. Если это возможно, правила не должны разрешать ввод паролей такого типа, особенно для производственных систем. Один из способов, применение которого можно оговорить в правилах, заключается в применении одностороннего криптографического хэша (hash). По этому методу хэш-функция преобразовывала бы пароль в числовое значение фиксированной длины на базе введенной пользователем информации. Это значение фиксированной длины передавалось бы затем на сервер, где подвергалось другому хэш-пересчету, а потом сопоставлялось с информацией, хранящейся в системе. Таким образом, передается и хранится на сервере только хэш, а не сам пароль.
Использование одностороннего криптографического хэша является лишь одной из деталей реализации. Можно к этому добавить и другие концепции, чтобы формулировка правил имела, приблизительно, такую форму.
Пользовательский интерфейс при вводе паролей должен позволять пользователям вводить свои пароли без показа каких бы то ни было характеристик ввода. Эти пароли не должны передаваться в сеть в читабельной форме.