Информационные технологииStfw.Ru 🔍

Юзабилити паролей

В «курс молодого бойца» современного интернет-пользователя входят навыки и знания, без которых пользоваться многочисленными сервисами затруднительно.
🕛 06.01.2010, 09:43
Это навыки пользования браузером, понимание идеи гиперссылок, умение заполнять и отсылать формы, пользоваться поиском и электронной почтой, и, конечно же, владение понятиями регистрации, аккаунта и «логина» в сервис.

Мне неизвестны случаи, когда в проектировании системы логина участвовал бы юзабилист. Наверное, только если кто-то из программистов внезапно заинтересовался бы этим вопросом. Юзабилистов, как правило, не пускают в комнату, где пишут систему логинов и паролей. Им говорят - строка логина и строка пароля, кнопка «войти» и еще нужен линк «я забыл свой пароль». Нам главное, чтобы эти элементы были, а как они будут выглядеть - ваша забота.

http://itickr.com

И вот результат, смотрите на многочисленных сайтах. Множество пользователей, все работает. Я, во всяком случае, довольно долго не задумывался об этом. Пока мне не пришлось объяснять моей маме, как пользоваться интернетом, что такое браузер, и, понятное дело, - что это за логины и пароли такие.


Что мы вообще знаем о логинах и паролях?

Идея логина понятна скорее на интуитивном уровне. Логин и пароль - это пара строк: нужно сказать кто ты (логин), и потом доказать, что это ты (пароль). Пароль секретный, его знает только владелец пароля (что отличает его от остальных пользователей), но зачем нужен логин? Что если спросить у пользователя только пароль? Ну, в принципе, это можно сделать. Проблема в том, что у двух разных пользователей может совпасть пароль, и тогда невозможно будет их различить. Можно попробовать не давать им сменить пароль на тот, который уже есть у кого-то из пользователей. Но тогда мы своими руками подарим хакерам роскошный инструмент для подбора паролей, который будет за один раз подбирать пароли ко всем аккаунтам одновременно. Это, конечно, невообразимая глупость. Поэтому к паролю мы добавляем еще и логин.

Если фишка пароля - секретность (то есть, теоретически, его знает только владелец), то фишка логина - уникальность (то есть, они гарантированно отличаются для всех пользователей). Если логин уже использован в системе, появится соответствующее предупреждение, и придется выбрать другой логин. Но это не дает возможности войти под тем аккаунтом, логин от которого, таким образом, можно узнать. Нужен будет еще и пароль, а его таким способом не получить.

Проблема в том, что я не знаю, что отвечать моей маме на вопрос «что такое логин, и что я должна туда ввести?», когда она регистрируется в ластфм, или в твиттере, или еще где-то. Идея логина слишком туманна и абстрактна с точки зрения пользователя. Более того, я, как пользователь, не хочу этого знать, мне это совершенно чуждо. Поэтому и регистрация, и логин, и пароль для меня не более чем досадное препятствие в работе с сервисом. Если я не соображу, зачем мне этот логин и пароль и как этим пользоваться, то мне не удастся пользоваться этим сервисом. А вот пользоваться им я хочу. И сервис хочет, чтобы я им пользовался. Так что мы, вроде бы, заодно.

Изначально абстрактный и технологический логин как уникальный идентификатор легко приобретает новые значения, потому что ему можно придать дополнительный смысл. Например, если говорить об адресе электронной почты (что входит в «квалификационный минимум» современного интернет-пользователя), логин - это «то, что будет до @».
А то, что в адресе после «@» - это на какой сайт надо пойти, чтобы проверить эту почту. О, нет, разумеется я знаю, что это не совсем так, но у этой версии есть фантастическое число поклонников. Потому что она проще и понятнее при незначительном искажении «истины».



В твиттере это будет ваше «твиттер-имя», если написать его после twitter.com/ можно увидеть ваш твиттер. А еще это может быть некое имя пользователя. Мы будем так тебя звать: «пользователь ВАШ_ЛОГИН». Ты понимаешь, что такое логин, %username%? Моя мама, уверен, не имеет твердого мнения по этому поводу. Так что о природе и функции логина мнения у пользователей неоднозначные.

http://www.geekologie.com

Пусть пользователю непонятна идея уникального идентификатора, но, может быть, мы сможем помочь ему пользоваться ей, не объясняя ее принципа? Например, возможно, у него уже есть какой-нибудь уникальный логин, который он может использовать. Например, номер мобильного телефона. В форме будет просто написано: номер телефона и пароль. Или давайте использовать в качестве логина емейл. У всех телефон и емейл как бы уже есть (раз уж он входит в «квалификационный минимум пользователя») и он уникален. Кроме того, это же прекрасно - иметь емейл пользователя, ведь тогда ему можно слать письма! А на телефон можно позвонить или послать сообщение. Это открывает отличный дополнительный канал общения с пользователем. Неудивительно, что огромное количество сервисов уже пришло к использованию емейла как логина. А ведь не так давно везде были именно логины как таковые (да и сейчас предостаточно). Понятно, это подходит для всех сервисов, кроме самих сервисов электронной почты.

Отдельно надо отметить проблему с названиями. В англоязычных сервисах это может быть username, login, user, id, name, account. Умелые переводчики отразили идею и в русском языке: логин, имя пользователя, имя, аккаунт, и более экзотичные варианты. Это тот фрагмент интерфейса, с которым юзабилисты чаще всего сталкиваются (в рамках этой темы, конечно). Много малопонятных названий для смутно осознаваемой задачи. Решение с емейлом в качество логина, кстати, почти лишено этого недостатка, что еще добавляет ему очков.

Уникальность логина очень неприятная (с точки зрения юзабилити) штука. Где-то я не могу зарегистрироваться под своим любимым логином, потому что он уже занят. Где-то нельзя делать логины короче пяти символов. А еще нельзя пробел, а меня зовут Иван Сергеев, «Иван» уже занято, а «Иван Сергеев» нельзя. Вы же у меня сами имя просили! Что ж вы не хотите его принимать? Это мне, как пользователю, совершенно ненужное и неинтересное в жизни приключение. А еще пароль почему-то можно сменить, а логин нельзя. То есть, выбирать его надо раз и навсегда. Это добавляет ненужной ответственности в момент регистрации. Смотри, ты не сможешь потом это поменять! Подумай дважды! К счастью, на этом никто не заостряет внимания, а зачем менять логин - не очень понятно, так что проблема слегка притянута за уши, признаю.

А что мы знаем про пароль? Это такая секретная строка, которую никому нельзя говорить, и когда его вводят, вместо букв появляются звездочки, чтобы нельзя было подсмотреть (эти элементы UI есть во всех возможных наборах компонент любой древности и ничуть не изменились). Пароль никто не знает, поэтому только его владелец сможет войти. А можно я просто поставлю пароль «1»? Или, например, что если поставить пароль «пароль»? Он же секретный, никто не узнает, что он такой простой, а мне так будет легче его запомнить. Вы же просите его нигде не записывать, а запомнить?

Скорее всего, вам просто не позволят так сделать. Потому что это небезопасно. Мол, вы, пользователи наши любимые, тупенькие же на самом деле, учиться не хотите, даже идею логина-пароля не осиливаете. Что вас уму-разуму учить, мы просто не дадим вам шанса сделать серьезную ошибку. Ведь если пароль будет плохим, его смогут взломать! А именно - узнать обманом или подобрать, потому что все остальные взломы уже будут на совести программистов. Некоторые называют эту нехитрую мысль целой «Политикой Безопасности».

Как узнать, достаточно ли безопасен пароль для этого сервиса? Сервис может сказать об этом при заполнении формы регистрации. Либо, что чаще, уже после отправки формы регистрации, что-то вроде «в регистрации отказано, причина: недостаточно сильный пароль». И всю форму придется отправлять еще раз. Причем, в 99% случаев там не будет введенного пароля, и не будет распознанной вами картинки-капчи, а то и еще чего-то. Это еще хорошо, не так давно можно было запросто увидеть всю свою форму пустой после такой ошибки, и приходилось заполнять ее заново. Но капчу все равно мало кто запоминает (почему? Я же правильно ее ввел!). На всякий случай. Это у них, я думаю, для вашей безопасности.

http://livejournal.ru

Это, оказывается, не очень-то просто, придумать себе пароль. Где-то нельзя, чтобы пароль был таким коротким. А кое-где нельзя, чтобы он был одним из словарных слов английского языка. Очень плохо, если это имя вашей собаки. Совершенно недопустимо использовать дату своего рождения. А еще пароль должен содержать хотя бы одну цифру. И еще он не может содержать кое-какие символы. Например, кириллицу или пробел. И знаете, что еще? Его нельзя записывать на стикер, нельзя записывать в блокнот, и нельзя использовать один пароль на несколько сервисов. Это небезопасно.

Позвольте рассказать больше о моей маме. Она достаточно активный пользователь интернета, и у нее больше одного логина и пароля. Она пользуется не только электронной почтой, но и скайпом, аськой, у нее есть аккаунт на одноклассниках, на одном кулинарном сайте, а еще она собирается завести твиттер. Вы что, в самом деле предлагаете ей придумать и запомнить пяток идеальных паролей, типа «da*$up3rP4ss_v^Vord4e\/a»? Вы это серьезно?
Якоб Нильсен, кстати, давно негодуе:
* Stop Password Masking * The Human Factors of Password Security * Security & Human Factors



Моя мама не боится, что ее аккаунт на кулинарном сайте кто-то взломает из-за того, что у нее был недостаточно надежный пароль. Она боится, что она забудет всю эту чертову кучу идиотских паролей, логинов, требований, и всей остальной мути, которая ей совершенно не нужна, не интересна. Более того, она делает это только потому, что нет другого способа работать с системой. И она была бы очень счастлива, если бы везде был одинаковый логин и одинаковый пароль, который или несложно запомнить, потому что так зовут ее собаку, или, возможно, сына, или потому что она записала его в свой блокнот или телефон. Должен отметить, что моя мама любит плохие пароли значительно больше, чем хорошие. И у моей мамы огромная куча единомышленников!
Что это? Это гул фанатов OpenID! Они кричат - да! Да, это правда! Вот почему существует OpenID, и все должны его поддерживать, везде можно будет использовать один и тот же логин и пароль. Но пока этот OpenID не работает на каждом сайте, которым пользуется моя мама, это не благо, а еще-один-дурацкий-логин-который-надо-запомнить. Надеюсь, он станет очень популярным, и сделает жизнь моей мамы лучше.



Пароль забывать нельзя, но… это случается, и не только с мамами. И не так уж редко. Что тогда? Тогда есть процедура восстановления пароля. Например, вас попросят ввести свой логин, и вы получите свой пароль на емейл. Может, надо будет ответить на секретный вопрос (решения для емейл-сервисов, ведь им некуда слать пароль). А может быть, вам пришлют на емейл специальную ссылку, по которой надо будет перейти, и там сменить свой забытый пароль на новый добротный, надежный пароль. Но самые ответственные не станут подвергать вас этой ненужной работе: они сгенерируют новый, вполне надежный пароль, и пришлют его вам в почту. Вы его введете, и пока не «стухнет кука» (это, кстати, тоже было нелегко объяснить маме), вы будете успешно пользоваться сервисом, но в один прекрасный день вас опять попросят ввести пароль, и вы привычно кликнете на «я забыл пароль».
А еще - ой, как это - на емейл? Это что значит, если кто-то взломает мой емейл, он автоматически получит доступ ко всем аккаунтам, где используется этот емейл? Ведь любой «мой» пароль можно «забыть» и получить его на емейл? Эмм… Да. Используйте только очень надежные пароли для почты…
Вот неплохая статья на эту тему - The Usability of Passwords by Thomas Baekdal



Интересно, что гораздо большую поддержку в этом вопросе пользователи получают вовсе не от разработчиков сервисов, а от разработчиков браузеров. Это вполне логично, потому что браузер заботится о комфорте пользователя на всех сайтах, а программисты логинов и паролей - только в рамках своего сервиса. Прогресс браузеров дал нам следующее: логины и пароли сохраняются в браузере, и логин - о боже! - становится удобным и легким. Вход - один клик! Моя мама не знает, как именно, но как-то там эту проблему решили, вводить больше не надо. Однажды запомнив пароли на своем домашнем компьютере, моя мама больше не должна сама помнить все логины и пароли, за нее это сделает компьютер. Круто, одни программисты решили для нее проблему, которую создали другие программисты.

Впрочем, разработчики сервисов сейчас тоже кое-что придумали: «аутсорсинг» логина. Вместо логина и пароля стоит одна кнопка «войти с помощью аккаунта google». После нажатия на нее пользователь попадет на привычную ему логин-форму google, а потом автоматически вернется обратно, но уже «залогиненый». А если он уже залогинен в google, то и вводить ничего не надо будет, только подождать пока сработает пара редиректов. Тут проблема в том, что кнопка будет не одна, потому что не только google догадался давать такую возможность. Многие готовы авторизовывать через себя, поэтому кнопок может быть и с десяток.

http://myworldmap.ru/

Почему существуют все эти «требования к паролям»? Кто страдает больше: пользователи, которых «взломали» из-за их слабых паролей или пользователи, которым приходится придумывать отдельный пароль для вашего сервиса, потому что их «деружный пароль» недостаточно хорош? Эти требования появились после каких-то жестких атак, и были необходимым злом, или просто сделали, как админ посчитал нужным (он здорово разбирается во всех этих паролях!). Может, не так уж страшно, если это будет не очень хороший, но удобный для пользователя пароль?
Вы в курсе, что у всех, кроме самых заядлых безопасников, есть «дежурный пароль»? У остальных хватает энтузиазма либо вести и обслуживать базу логинов и паролей (часто бывает нужно админам, они и пользуются), либо не лень потом проходить процедуру восстановления пароля. Ну не может человек придумать и держать в голове десятки паролей. А сервисов, требующих этого, все больше в жизни активного интернет-пользователя.



Как узнать, существует ли проблема ограничений на самом деле, или я ее просто придумал? Достаточно проанализировать попытки регистраций, проваленные из-за несоответствия пароля требованиям. Потратить надо будет пару часов, не больше.

Теперь с этим восстановлением в стиле «мы сделали вам новый пароль, используйте теперь его». Вы там, правда, думаете, что сделали пользователю услугу? Ах, можно войти и поменять его на какой угодно? Ну, соответствующий политике безопасности, само собой? Ну, спасибо, войду (решу, наконец, свою проблему) и пойду поищу в вашем богатом интерфейсе, где бы это можно было сделать.
Я программист, я должен понимать, почему это происходит. Дело в том, что пароль в открытом виде не хранится на сервере. Там только хэш от него, чтобы пароль нельзя было добыть из базы данных. То есть - вследствие ошибок программистов. Это напоминает мне выражение «перекладывать с больной головы на здоровую». Если кто-то получит доступ к базе данных, проблема будет масштабнее, чем взлом аккаунта. «Слив» одного пароля неприятен, но если это случилось со всеми данными всех пользователей - это катастрофа для сервиса. И никакие надежные пароли тут не помогут.



А как часто пользователи вводят пароль, с нажатым CapsLock или на русском языке вместо английского (вау, это происходит потому, что вы закрыли буквы звездочками)? Кстати, это очень несложно узнать, будучи серверным программистом. Скажем, сколько неудачных попыток логина приходится на удачную? А из тех, что были набраны руками, а не запомнены в браузере? Кстати, может быть, такой проблемы-то и нет, и я зря раздул всю эту тему. Но я готов поспорить - вы этого не знаете, потому что не думаете об этом, и не интересуетесь такой статистикой.

Хотите еще идей? Хорошо, как вам такая: что если не считать CapsLock или английский/русский язык ошибкой при вводе пароля? Принимать и такой пароль как верный? О, да, безопасность пострадает. Количество вариантов для подбора сократится довольно сильно, ведь мы фактически уменьшаем алфавит, что делает подбор проще. А вы страдаете от того, что кто-то подбирает пароли к аккаунтам ваших пользователей? Или просто опасаетесь, что это возможно, чисто теоретически? А что, может быть, подборы можно обнаруживать и пресекать другими способами, например, увеличивать время обработки для каждой попытки после нескольких неудачных?

Кажется, я вообще презираю все правила сетевой безопасности. Может быть, незначительные опечатки тоже не считать неправильными паролями? Это еще сильнее упрощает подбор (с которым можно бороться и по-другому), но делает жизнь каких-то пользователей проще. Как узнать? Проанализировать причины неудачных логинов, и посмотреть, в чем проблемы у ваших настоящих, любимых, ценных пользователей.

Еще одна идея, как избавить от пароля вообще. Если уж я не в силах запомнить пароль к вашему сервису, а «дежурный» не могу поставить из-за требований, и мне все время приходится «напоминать» его, то можно отказаться от пароля вообще. Вместо этого пользователь просто вводит емейл, потом идет в свою почту, видит там письмо, кликает на ссылку в нем, и оп-ля, он залогинен. Что приятно, так можно делать не только с почтой, но и, например, с любым мессенджером. Или даже с мобильным телефоном (все равно придется что-то вводить из СМСки, но зато никаких «логинов» и «паролей». Номер телефона, а потом - введите то, что вам от нас пришло. Просто и понятно). Похоже на однокликовый логин через google или любой другой сервис аутентификации. Если эта мысль вам не кажется хорошей, подумайте о том, что, например, в Украине пользователей интернета что-то в районе 20%, а мобильных телефонов - 110%. Как пользоваться телефоном знают куда лучше, чем интернетом.

Самую провокационную мысль я оставил напоследок. А зачем вам вообще регистрация, логин и пароль, если пользователю можно поставить куку, и отслеживать его перемещения и действия, и запоминать его данные и настройки, не обременяя его всей идеологией логина и пароля? Ну да, есть ограничения, например, за любым другим компьютером, или даже браузером, такая «сессия» не подхватится. Но знаете, на другом компьютере и в другом браузере и логины с паролями сохраненные тоже будут недоступны. То есть, там вообще тяжело придется, не только поэтому. Зато какие преимущества! Можно работать со всеми своими пользователями как с залогинеными, давать им все преимущества аутентификации, даже если они пока не решили, нужно ли им тут регистрироваться. А если решат, то профиль уже существует, осталось только «прицепить» к нему логин и пароль.

Я не знаю, где при проектировании системы аутентификации в команде присутствует юзабилист. Но как пользователь я очень часто чувствую, как его там сильно не хватает, как там никто не думает обо мне и моих проблемах. И да, я понимаю, что у настоящих системных администраторов все это вызывает громадные сомнения. И я не хотел бы, чтобы этой статьей прониклись программисты, которые пишут интернет-банкинг, или платежные системы или другие действительно критичные в смысле безопасности сервисы. Но остальным-то можно?

Информационная безопасность   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉