Общаясь на форумах и в социальных сетях, совершая покупки в интернет-магазинах, мы постоянно сталкиваемся с необходимостью регистрироваться на разных веб-сайтах, указывая свои сетевое имя и пароль. Излишне говорить, как опасно пользоваться везде одним и тем же паролем. Не менее опасно записывать пароли – ведь записи могут увидеть, запомнить или скопировать и воспользоваться ими без вашего ведома. А еще существуют нормы информационной безопасности, которые требуют, чтобы пароли были длинными, сложными, включающими разные группы символов, и чтобы их было невозможно угадать.
Работая в корпоративной сети, пользователи, как правило, избавлены от необходимости помнить множество паролей. Благодаря технологии “Single Sign On” – однократной регистрации – пользователи лишь однажды вводят реквизиты своей учетной записи и при этом получают доступ ко всем ресурсам сети в пределах своих разрешений, без необходимости набирать свой пароль вновь и вновь.
К сожалению, такой вариант невозможен при доступе к Интернет-ресурсам – ведь каждый веб-сайт в большинстве своем содержит собственную базу учетных записей пользователей и паролей. Известное решение предлагают программы, кэширующие пароли, т.е. сохраняющие их локально на компьютере, флеш-накопителе или ином устройстве. На текущий момент существует множество приложений такого типа – коммерческих и свободно распространяемых, разработанных для разных операционных систем, в том числе мобильных. Обзор двух платных менеджеров паролей был сделан в недавнем видеокасте Владимира Безмалого. Упрощенно, принцип работы менеджеров паролей состоит в организации защищенного (как правило, зашифрованного) хранилища паролей, доступ которому открывается по единственному мастер-паролю. От пользователя требуется только помнить мастер-пароль. После правильного ввода мастер-пароля у пользователя появляется доступ к сохраненным паролям, возможность их изменять и т.д.
Без сомнений, это лучше, чем записывать пароли на бумажке или запоминать, чтобы забыть. Но как быть, если программы не окажется под рукой? А здесь очень важно, чтобы пароли хранились локально у пользователя, поскольку любое их хранение в сети, даже в зашифрованном виде, не гарантирует безопасность. Далее, чтобы обезопасить себя от любого сбоя и потери ценной информации, пользователь должен выполнять резервное копирование хранилища паролей. Выполнять регулярно и не забывать выполнять. Далеко не все пользователи регулярно выполняют резервное копирование своих компьютеров… Иными словами, много проблем даже для такой простой задачи.
Я уже давно носился с идеей заменить кэширование на хеширование. И это не каламбур, речь идет о том, чтобы отказаться от хранения паролей, но вычислять их всякий раз, когда это необходимо. Допустим, пользователь придумал и твердо запомнил свой мастер-пароль. Теперь, когда от пользователя при первоначальной регистрации на каком-нибудь веб-сайте потребуется придумать и ввести свой пароль, в качестве пароля следует указать хеш-функцию от строки, содержащей мастер пароль и доменное имя веб сайта:
Пароль = Hash (мастер-пароль & доменное_имя)
Для разных сайтов пароли будут разные, а в силу стойкости алгоритма хеш-функции, будет невозможно восстановить мастер-пароль. Если пользователь был ранее зарегистрирован на том или ином веб-сайте, то потребуется сменить пароль, причем новый пароль должен быть рассчитан, как описано выше.
Важно отметить, что в предложенном подходе пароли нигде не хранятся, а вычисляются всякий раз, когда это необходимо. Сама программа, реализующая данный алгоритм, не содержит конфиденциальной информации, она может быть установлена локально на компьютере, загружаться с веб-сервера, находящегося в локальной сети или в Интернете. Все это совершенно безопасно для ваших паролей, ведь в любом случае вычисление пароля происходит локально на клиентском компьютере или мобильном устройстве и никакая информация по сети не передается.
Хорошо, алгоритм алгоритмом, но где же программа? Признаюсь и теперь весьма сожалею, но сам так и не удосужился воплотить задумку хоть в каком-нибудь коде. На днях, просматривая новые приложения для Windows Phone 7, опубликованные в Marketplace, встретил программу PasswordHash. Автор – профессиональный разработчик из Остина (Техас, США) Грег Стол (Greg Stoll). Если вы не обладаете Windows Phone, то описание приложения можно посмотреть здесь. И хотя описание весьма лаконичное, сомнений не остается, какая именно идея лежит в основе этого приложения. Кроме того, PasswordHash позволяет “на лету” вносить изменения в генерируемые пароли в зависимости от политики безопасности конкретного веб-сайта. Например, можно изменить длину пароля, запретить, либо наоборот потребовать присутствие в пароле специальных символов. Генерируемый пароль отображается в соответствующем поле и копируется в буфер обмена.
Также ознакомиться с приложением можно на web-странице проекта PasswordHash:
http://gregstoll.dyndns.org/~gregstoll/passwordhash/
Именно ознакомиться – что-то доменное имя не внушает мне уверенности в надежности данного ресурса. В остальном, страница содержит собственно работающее приложение, исходные тексты, информацию о доступности приложения для мобильных платформ.
Если решение, основанное на вычислении хеш-функций паролей вам понравилось, то вы можете приспособить его под собственные требования, разместив файлы приложения на любом веб-сервере, доступном в корпоративной сети или из Интернета или даже просто открывая файл PasswordHash.htm на локальном компьютере. В “рафинированном” виде приложение представляет собой веб-страницу и два файла сценариев, написанных на JavaScript. Загрузить архив с файлами можно из этой веб-папки.
Настройки веб-броузера должны разрешать выполнение сценариев JavaScript.
Анализируя содержимое файлов, легко убедиться, что вычисление паролей производится локально, а хеш-функции рассчитываются на основе алгоритма sha-1. Никакие компоненты данной веб-страницы не выполняются на стороне веб-сервера.
Что лучше – кэширование или хеширование паролей? Этот вопрос приобретает особый смысл, если рассматривать два принципиально разных подхода к безопасности паролей в Интернете. Главное – не игнорировать проблему, а что действительно лучше – решать вам.
Встреча 26 января
Очередная и первая в новом году встреча MCP-Клуба состоится 26 января. Тема встречи: Self Service Business Intelligence – новые возможности. У нас будет выступать Андрей Коршиков, лидер Сообщества .Net-разработчиков и SQL&BI User Group в г. Краснодаре. Он расскажет о дальнейшем развитии PowerPivot и покажет новинку в отчетности – PowerView.
Если вы планируете пойти на встречу, просим подтвердить свое намерение на сайте ineta.ru, на котором, надеюсь, вы уже зарегистрировались.
Начало технического доклада – в 19 часов. Координаты мероприятия – ул. Вятская, 27, строение 13. Напомню, что встреча MCP-Клуба будет проходить на территории тренинг-центра Exect Business Training
Эта компания совершенно бескорыстно предоставляет аудитории и презентационное оборудование для встреч нашего MCP-Клуба.
MCP-Клуб – Action Required
Уважаемые коллеги, вот и прошли долгожданные новогодние праздники, мы вернулись к повседневной работе, и MCP-Клуб в Москве возобновляет свои регулярные встречи. В течение прошлого года произошло несколько событий, и одно из них никак нельзя назвать хорошим. Окончательно прекратил работу портал ITCommunity, на базе которого я вел блог MCP-Клуба. К сожалению, часть отчетов о прошедших встречах оказалась безвозвратно потеряной. Это не относится к материалам встреч – презентациям, аудио- и видеозаписям докладов, которые по-прежнему находятся в общедоступной папке на SkyDrive. С недавнего времени обзоры прошедших встреч и объявления публикуются в текущем блоге, а также в блоге Алексея Кармо.
Хорошей новостью является то, что в новом году у нас появляется новое место встреч онлайн. Еще в декабре прошлого года был введен в рабочую эксплуатацию портал ineta.ru, который, надеюсь, станет организационным центром всех российских MCP-Клубов и User-групп. По ряду причин данный портал будет удобнее и надежнее, чем предшествующее решение – сайт UGSS. В частности, внесение изменений и устранение возможных ошибок дожно происходить на порядок оперативнее, чем раньше. И еще, портал ineta.ru работает на передовой облачной платформе Windows Azure со всеми следующими отсюда преимуществами.
В ближайшие дни будет объявлена очередная встреча нашего Клуба. Но до этого прошу всех участников зарегистрироваться на портале ineta.ru и присоединиться к нашему сообществу, которое называется
MCP Club – Москва
Для того чтобы зарегистрироваться, отредактировать свой профиль и присоединиться к сообществу, воспользуйтесь подробной инструкцией. Обратите внимание, что пока невозможно воспользоваться своим Live ID для регистрации на сайте. После успешного входа Вы можете присоединиться к одному или нескольким сообществам. В дальнейшем вы сможете просматривать встречи всех сообществ, к которым вы присоединитесь, в своем Календаре и получать уведомления о встречах на адрес электронной почты.
Весь процесс регистрации и присоединения к сообществу занимает не более трех минут, поэтому прошу не откладывать данное действие. И тогда вы будете в курсе всех новостей и планирумых встреч нашего MCP-Клуба.
В папке на SkyDrive опубликованы материалы встречи MCP-Клуба в Москве 1 декабря. Для загрузки доступны слайды презентации и аудиозапись доклада.
Напомню, 1 декабря в рамках события Windows Phone 7 Launch состоялась встреча MCP-Клуба в Москве. С техническим обзором новой операционной системы для мобильных устройств Windows Phone 7.5 выступил Стас Павлов.
Microsoft подтверждает, что публичная Windows 8 Beta будет доступна в феврале 2012 года. По сравнению с Windows Developer Preview можно ожидать, что данная ОС будет намного ближе к тому, что в результате мы увидим в окончательной версии. Также пока не ясен вопрос с поддержкой приложений, разработанных для предыдущих версий Windows, на планшетных компьютерах с ARM-архитектурой.

