Проблема авторизации доступа к сайтам является весьма насущный. Каждый электронный магазин, популярный форум, развлекательный ресурс хочет иметь дело с зарегистрированными, а не с анонимными пользователями. Существующая на данный момент система регистрации пользователей неудобна и пользователям и владельцам ресурсов.
Пользователь должен: запоминать пароли к разным ресурсам, тратить время на регистрацию, подтверждение регистрации по e-mail.
Администраторы должны: писать сложные защищенные алгоритмы для авторизации и регистрации пользователя, а если вдруг база данных попадает в руки хакеров, можно считать, что у сайта будет кризис доверия к ресурсу. Поэтому идеальный сайт не должен хранить пароли пользователей, даже в зашифрованном виде.
Я уже писал о "idea_auth")) ?>> простой системе аутентификации. и такой гигант, как Микрософт делает шаги в этом направлении.
Однако по здравом размышлении есть гораздо более простой вариант авторизации, за который владельцам сайтов не придется платить корпорациям-регистраторам. На этот вариант я натолкнулся, когда ознакомился с системой авторизации в Microsoft Money Light Keeper.
Итак, суть предложения в том, что существует несколько больших крупных центров регистрации пользователей (например mail.ru, yandex.ru, rambler.ru). Пользователь, регистрируясь на этих сервисах, кроме бесплатной почты, получает также уникальный номер, по аналогии с ICQ назовем его UIN и неуникальный, нравящийся пользователю ник. Кстати, таким сервисом может стать и ICQ, если решит проблемы безопасности и перейдет исключительно на предлагаемую мной систему авторизации. Связка UIN+ник избавляет нас от проблемы, когда пользователь не может выбрать нравящийся ему ник. Существование нескольких регистраторов избавляет от монополии.
После регистрации пользователю выдается пользовательский сертификат и пароль к нему. Далее работа идет стандартными средствами работы с сертификатами, встроенными в любой браузер.
Чтобы подключить сертификат к браузеру, пользователь вводит пароль сертификата и сертификат включается в браузер.
Когда пользователь желает авторизироваться на каком-либо сайте, он просто выбирает, каким из сертификатов он хочет воспользоваться для авторизации. Сайт же в свою очередь не получает никаких паролей от пользователя, что избавляет от проблемы поддельных сайтов (fishing). Он только получает от браузера UIN пользователя, подтвержденный сертификатом.
Естественно, пользователь может иметь много сертификатов от разных сертификаторов. Владельцы сайта могут разрешить авторизацию только определенных систем сертификации. Кроме того, пользователь может подтвердить статус своего сертификата, предъявив в физическом центре сертификации паспорт. Таким образом некоторые сайты могут работать только с известными физическими лицами, подтвердившими свою личность. Путем создания перекрестных рейтингов доверия можно сразу отмечать пользователей, занимаюшихся например спамом и не авторизировать их на ресурсах.
Для этого коммунизма в области сертификации практически ничего не нужно. Достаточно начать сертификацию одному крупному игроку и пускать пользователей сначала выборочно или по связке пароль+логин или по сертификату. Анализируя пользоватльские предпочтения, выбрать момент, когда 80% пользователей перейдут на сертификаты и разрешить авторизацию исключительно сертификатами.
Сертификаты можно хранить на флэш-дисках, в виде штрих-кода, отправлять в виде заранее заготовленного смс на телефон сайта-сертификатора. Даже если кто-нибудь украдет сертификат, без пароля он ничего не значит. Сертификат можно попросить переформировать, чтобы старый не работал. Или у сертификата будет срок действия. К тому же к нескольким сертификатам, которые будут у пользователя всегда проще запомнить и сделать длинные пароли, устойчивые к взлому.
Естественно, при развитии использовании сертификатов, подключать их к браузеру будет гораздо удобнее, чем сейчас и при закрытии последнего окошка в браузере сертификаты будут например автоматически отключаться и для того, чтобы их подключить, нужно будет вводить пароль.
Будем надеяться, что сей коммунизм наступит.