Реклама →
Paranotic — для заметок, для паролей
Я хочу поделиться с вами необычным менеджером паролей (for Win), который сделал около года назад. Думаю, что теперь его не стыдно показать и возможно он найдет здесь своих пользователей: www.paranotic.com
Год назад объем моих паролей от хостингов, регистраторов, FTP и email аккаунтов превысил пресловутые 10% возможностей мозга. Я, как и многие здесь, генерировал пароли по какому-то своему алгоритму, так, чтобы можно было всегда вспомнить, а также имел набор «проверенных временем» и «исторически сложившихся» паролей.
Конечно, у меня был и «файлик», в зашифрованном контейнере, куда я старался все сохранять. В конце концов, все это стало жутко неудобно и, главное, небезопасно. И я стал искать менеджер паролей…
Пересмотрел не много, штуки три самых распространенных, но тенденцию понял и она меня не совсем устраивала. Дело в том, что я имел определенный набор требований к такой программе и полностью этим требованиям не удовлетворяла ни одна из просмотренных, а их схожесть отбила охоту искать дальше. Требования же были такие:
Чтобы не беспокоится о потерянной флешке и, как вариант, иметь возможность «достать» свои пароли, не имея под рукой заветного файлика, но имея доступ в Сеть.
Ну не люблю я эти наборы полей! Не всегда данные ограничиваются паролем и логином. Бывают всякие пины, платежные пароли и т.п. И потом, часто бывает необходимо просто чиркануть несколько слов и найти их через месяц.
К поиску у меня вообще требования жесткие были. Хотелось иметь возможность по первым буквам найти заметку из сотни других. Например «Кредитка VTB», не важно где эти слова встречаются в заметке и в каком порядке. Мне нужно найти данные кредитки VTB! Также необходим список последних поисковых запросов, чтобы минимизировать использование клавиатуры.
В идеале, это должен быть такой блокнотик, мгновенно появляющийся в нужный момент с фокусом на поле поиска. Ну и всякие удобства, типа копирования данных в один клик (меньше движений, да здравствует гиподинамия).
Этот пункт, к счастью, выполняют все известные менеджеры паролей.
Почесав затылок, я, как это у меня часто бывает, решил все сделать сам. Во первых, надо было найти надежный и шустрый криптомодуль. Заветная dll-ка, отвечающая всем требованиям, была найдена на колосящихся австралийских лугах, у парней из CryptoSys.net. После небольших заморочек с оплатой, я таки получил ценный груз.
Главное требование к модулю (после наличия алгоритма BlowFish) — наличие функции PBKDF2. Как известно, ключ, которым шифруются данные, получают с помощью какой-нибудь «сильной» хэш-функции, например, SHA-256. При генерации пароль хэшируется и получается ключ. Та же операция происходит при взломе перебором паролей. А главное в переборе — скорость. И чтобы уменьшить скорость перебора паролей, ученые придумали Password-Based Key Derivation Function — грубо говоря, пароль хэшируется не один, а скажем 1000 раз, что практически не заметно при открытии шифрованного файла, но существенно заметно при переборе, так как потребует в 1000 раз больше операций при той же длине пароля.
Определившись с «движком», я начал работу над программой.
Далее концепция по пунктам:
Тут ничего необычного. Все как у большинства хранителей паролей. Алгоритм шифрования BlowFish, ключ 448 bit. Генерации ключа: SHA256 x PBKDF2
Скажем, одна заметка про хостинг (логин, пароль, регистрационный емайл, ссылка на панель управления, телефон поддержки), другая — про подозрительного соседа (во сколько приходит, кого приводит + телефон кого_следует), третья — телефон госдепа, данные кипрского счета и т.д.
Заметки выводятся целиком, сплошной лентой, как твиты. Без всяких папок и группировок. Есть, правда, возможность ставить теги. По умолчанию заметки сортируются по актуальности. Самые актуальные чудесным образом висят сверху. Есть и другие возможности сортировки, например, самые новые, недавно редактированные и т.п.
По поисковому запросу отображаются только заметки, содержащие все искомые «слова». Слова в кавычках, потому что это может быть любая часть слова или слово целиком. В идеале хотелось бы учитывать морфологию, но до этого руки пока не дошли.
Тут все понятно. Редактируете заметку, и изменения автоматически сохраняются. Можно отключить, если жить не можете без Ctrl+S.
Чтобы ненужные или устаревшие заметки не болтались в общей ленте, можно их смело удалять. А в случае необходимости найти на вкладке Deleted.
Эта опция может показаться многим потенциальной дырой, спорить не буду. Она и не навязывается. Скажу только, что файл отправляется через защищенное соединение и сам по себе уже зашифрован. Если использовать надежный мастер-пароль, то даже при хищении базы с сервера вероятность доступа к вашим данным стремится к нулю.
Механизм восстановления (получения файла с сервера) следующий:
Включая функцию бэкапа, вы указываете емайл, на который будет выслан файл по вашему требованию. Раз в сутки, при наличии изменений, файл загружается на сервер. В случае потери фала вы идете на paranotic.com/restore и запрашиваете восстановление файлов. Если в базе есть файлы, соответствующие указанному емайлу, на этот емайл вы получаете письмо со ссылками на свои файлы. Скачиваете их и открываете своим мастер-паролем.
Отмечу, что емайлы я не храню в базе в открытом виде — только обильно посоленный хэш. Так что если злоумышленники получат базу, они не смогут (быстро) получить даже емайлы пользователей. Это я к тому, что получив емайл и файл с данными можно попытаться получить пароль хитростью.
Как я уже не раз говорил, заметка может иметь произвольный формат, но если определенным образом оформить текст, вы получите дополнительные возможности. Например, строка вида:
Параметр: значение
позволит копировать значение одним кликом. Чтобы визуально скрыть пароли, достаточно после параметра поставить звездочку:
Пароль*: симсим
После сохранения эта строка будет выглядеть так:
Пароль*: ******
и чтобы скопировать симсим в буфер, нужно будет просто кликнуть по звездочкам.
При редактировании заметки, или при просмотре можно нажать горячие клавиши и быстро создать, например, заметку вида Логин-Пароль-Url.
Ctrl+L — вставить Login:
Ctr+P — вставить Password:
Ctrl+G — генерировать пароль (если нажать Ctrl+G несколько раз подряд, генерируемый пароль «усложняется»).
Окно паранотика можно сдвинуть к краю стола и тогда оно смешно уедет за экран, чтобы не мешать работе. Чтобы оно смешно выскочило — просто подведите мышку к краю экрана. Если надо — можно закрепить окно кнопочкой Fix, чтобы не скрывалось.
Оставлять файл открытым, согласитесь, не целесообразно, даже если вы отошли на 10 минут на обед или к шефу за зарплатой. Поэтому файл блокируется после определенного времени простоя, либо при закрытии окна программы. Но и вводить сложный мастер-пароль каждый раз тоже замучаешься…
Чтобы решить эту дилему был внедрен механизм под названием QuickPin: короткий цифровой пинкод, который открывает файл, но который работает только после открытия файла паролем. Т.е. один раз с утра вы вводите пароль, а затем, до перезагрузки программы, можно разблокировать файл с помощью QuickPin.
В программе есть много фишек, которые порадуют хронических параноиков. Например, очистка дампа памяти каждый раз при блокировке файла и отключение вывода последних открытых в паранотике файлов (recent files).
Кстати, у КипАса есть такая фишка, как специальное поле для ввода мастер-пароля. Типа никто не сможет перехватить вводимый пароль… Я тоже так хотел, пока не перехватил ввод пароля в КипАс тупейшим перебором нажатых клавиш. Так что от этой фишки я отказался и пароль вводится в обычное «запароленное» поле. Пожалуй, это самое слабое место всех хранителей паролей. Но я надеюсь, здесь все уже пользуются антивирусами.
В двух словах как паранотиком пользуюсь я: у меня есть мобильник, который я использую как флешку. В нем хранится зашифрованный файл. Во время работы я подключаю мобильник к компьютеру, выскакивает паранотик и просит пароль. Ввожу пароль, закрываю паранотик. Если в процессе работы мне требуется что-то записать — мышку влево до упора (выскочил паранотик), ввод пинкода — все! Заметки открыты. Записываю или ищу что мне надо. Отключил мобильник от компьютера — паранотик закрылся, дамп очистился. Очень удобно.
Эти основные возможности и были реализованы в первой версии паранотика. Затем появились уже всякие мелочи, описывать которые пока не вижу смысла. Попробуйте — разберетесь, там все понятно. Плюс, есть небольшое видео на сайте.
В планах веб-интерфейс, мобильный в том числе, с возможностью синхронизации локального файла и данных в веб-хранилище. Исследования на эту тему уже ведутся.
Благодарю за комментарии и замечания.
Год назад объем моих паролей от хостингов, регистраторов, FTP и email аккаунтов превысил пресловутые 10% возможностей мозга. Я, как и многие здесь, генерировал пароли по какому-то своему алгоритму, так, чтобы можно было всегда вспомнить, а также имел набор «проверенных временем» и «исторически сложившихся» паролей.
Конечно, у меня был и «файлик», в зашифрованном контейнере, куда я старался все сохранять. В конце концов, все это стало жутко неудобно и, главное, небезопасно. И я стал искать менеджер паролей…
Пересмотрел не много, штуки три самых распространенных, но тенденцию понял и она меня не совсем устраивала. Дело в том, что я имел определенный набор требований к такой программе и полностью этим требованиям не удовлетворяла ни одна из просмотренных, а их схожесть отбила охоту искать дальше. Требования же были такие:
1. Ежедневный бэкап на веб-сервер.
Чтобы не беспокоится о потерянной флешке и, как вариант, иметь возможность «достать» свои пароли, не имея под рукой заветного файлика, но имея доступ в Сеть.
2. Хранение данных в произвольной текстовой форме, примерно, как в блокноте.
Ну не люблю я эти наборы полей! Не всегда данные ограничиваются паролем и логином. Бывают всякие пины, платежные пароли и т.п. И потом, часто бывает необходимо просто чиркануть несколько слов и найти их через месяц.
3. Полнотекстовый поиск
К поиску у меня вообще требования жесткие были. Хотелось иметь возможность по первым буквам найти заметку из сотни других. Например «Кредитка VTB», не важно где эти слова встречаются в заметке и в каком порядке. Мне нужно найти данные кредитки VTB! Также необходим список последних поисковых запросов, чтобы минимизировать использование клавиатуры.
4. Удобный, минималистичный интерфейс.
В идеале, это должен быть такой блокнотик, мгновенно появляющийся в нужный момент с фокусом на поле поиска. Ну и всякие удобства, типа копирования данных в один клик (меньше движений, да здравствует гиподинамия).
5. Естественно, надежный алгоритм шифрования и работы с данными.
Этот пункт, к счастью, выполняют все известные менеджеры паролей.
От слов к делу
Почесав затылок, я, как это у меня часто бывает, решил все сделать сам. Во первых, надо было найти надежный и шустрый криптомодуль. Заветная dll-ка, отвечающая всем требованиям, была найдена на колосящихся австралийских лугах, у парней из CryptoSys.net. После небольших заморочек с оплатой, я таки получил ценный груз.
Главное требование к модулю (после наличия алгоритма BlowFish) — наличие функции PBKDF2. Как известно, ключ, которым шифруются данные, получают с помощью какой-нибудь «сильной» хэш-функции, например, SHA-256. При генерации пароль хэшируется и получается ключ. Та же операция происходит при взломе перебором паролей. А главное в переборе — скорость. И чтобы уменьшить скорость перебора паролей, ученые придумали Password-Based Key Derivation Function — грубо говоря, пароль хэшируется не один, а скажем 1000 раз, что практически не заметно при открытии шифрованного файла, но существенно заметно при переборе, так как потребует в 1000 раз больше операций при той же длине пароля.
Определившись с «движком», я начал работу над программой.
Далее концепция по пунктам:
1. Данные хранятся в одном файле, зашифрованном одним Мастер-паролем
Тут ничего необычного. Все как у большинства хранителей паролей. Алгоритм шифрования BlowFish, ключ 448 bit. Генерации ключа: SHA256 x PBKDF2
2. Данные разбиваются на заметки.
Скажем, одна заметка про хостинг (логин, пароль, регистрационный емайл, ссылка на панель управления, телефон поддержки), другая — про подозрительного соседа (во сколько приходит, кого приводит + телефон кого_следует), третья — телефон госдепа, данные кипрского счета и т.д.
Заметки выводятся целиком, сплошной лентой, как твиты. Без всяких папок и группировок. Есть, правда, возможность ставить теги. По умолчанию заметки сортируются по актуальности. Самые актуальные чудесным образом висят сверху. Есть и другие возможности сортировки, например, самые новые, недавно редактированные и т.п.
3. Поисковый запрос разбивается пробелом на отдельные «слова».
По поисковому запросу отображаются только заметки, содержащие все искомые «слова». Слова в кавычках, потому что это может быть любая часть слова или слово целиком. В идеале хотелось бы учитывать морфологию, но до этого руки пока не дошли.
4. Автосохранение при создании и редактировании заметок.
Тут все понятно. Редактируете заметку, и изменения автоматически сохраняются. Можно отключить, если жить не можете без Ctrl+S.
5. «Нежное» удаление заметок.
Чтобы ненужные или устаревшие заметки не болтались в общей ленте, можно их смело удалять. А в случае необходимости найти на вкладке Deleted.
6. Бэкап зашифрованного файла на сервер.
Эта опция может показаться многим потенциальной дырой, спорить не буду. Она и не навязывается. Скажу только, что файл отправляется через защищенное соединение и сам по себе уже зашифрован. Если использовать надежный мастер-пароль, то даже при хищении базы с сервера вероятность доступа к вашим данным стремится к нулю.
Механизм восстановления (получения файла с сервера) следующий:
Включая функцию бэкапа, вы указываете емайл, на который будет выслан файл по вашему требованию. Раз в сутки, при наличии изменений, файл загружается на сервер. В случае потери фала вы идете на paranotic.com/restore и запрашиваете восстановление файлов. Если в базе есть файлы, соответствующие указанному емайлу, на этот емайл вы получаете письмо со ссылками на свои файлы. Скачиваете их и открываете своим мастер-паролем.
Отмечу, что емайлы я не храню в базе в открытом виде — только обильно посоленный хэш. Так что если злоумышленники получат базу, они не смогут (быстро) получить даже емайлы пользователей. Это я к тому, что получив емайл и файл с данными можно попытаться получить пароль хитростью.
7. Быстрый доступ к данным
Как я уже не раз говорил, заметка может иметь произвольный формат, но если определенным образом оформить текст, вы получите дополнительные возможности. Например, строка вида:
Параметр: значение
позволит копировать значение одним кликом. Чтобы визуально скрыть пароли, достаточно после параметра поставить звездочку:
Пароль*: симсим
После сохранения эта строка будет выглядеть так:
Пароль*: ******
и чтобы скопировать симсим в буфер, нужно будет просто кликнуть по звездочкам.
8. Hot keys
При редактировании заметки, или при просмотре можно нажать горячие клавиши и быстро создать, например, заметку вида Логин-Пароль-Url.
Ctrl+L — вставить Login:
Ctr+P — вставить Password:
Ctrl+G — генерировать пароль (если нажать Ctrl+G несколько раз подряд, генерируемый пароль «усложняется»).
9. Скрывающееся окно программы.
Окно паранотика можно сдвинуть к краю стола и тогда оно смешно уедет за экран, чтобы не мешать работе. Чтобы оно смешно выскочило — просто подведите мышку к краю экрана. Если надо — можно закрепить окно кнопочкой Fix, чтобы не скрывалось.
10. Автоматическая блокировка файла.
Оставлять файл открытым, согласитесь, не целесообразно, даже если вы отошли на 10 минут на обед или к шефу за зарплатой. Поэтому файл блокируется после определенного времени простоя, либо при закрытии окна программы. Но и вводить сложный мастер-пароль каждый раз тоже замучаешься…
Чтобы решить эту дилему был внедрен механизм под названием QuickPin: короткий цифровой пинкод, который открывает файл, но который работает только после открытия файла паролем. Т.е. один раз с утра вы вводите пароль, а затем, до перезагрузки программы, можно разблокировать файл с помощью QuickPin.
11. Замести следы, убрать свидетелей.
В программе есть много фишек, которые порадуют хронических параноиков. Например, очистка дампа памяти каждый раз при блокировке файла и отключение вывода последних открытых в паранотике файлов (recent files).
Кстати, у КипАса есть такая фишка, как специальное поле для ввода мастер-пароля. Типа никто не сможет перехватить вводимый пароль… Я тоже так хотел, пока не перехватил ввод пароля в КипАс тупейшим перебором нажатых клавиш. Так что от этой фишки я отказался и пароль вводится в обычное «запароленное» поле. Пожалуй, это самое слабое место всех хранителей паролей. Но я надеюсь, здесь все уже пользуются антивирусами.
Как всем этим пользоваться?
В двух словах как паранотиком пользуюсь я: у меня есть мобильник, который я использую как флешку. В нем хранится зашифрованный файл. Во время работы я подключаю мобильник к компьютеру, выскакивает паранотик и просит пароль. Ввожу пароль, закрываю паранотик. Если в процессе работы мне требуется что-то записать — мышку влево до упора (выскочил паранотик), ввод пинкода — все! Заметки открыты. Записываю или ищу что мне надо. Отключил мобильник от компьютера — паранотик закрылся, дамп очистился. Очень удобно.
В заключение
Эти основные возможности и были реализованы в первой версии паранотика. Затем появились уже всякие мелочи, описывать которые пока не вижу смысла. Попробуйте — разберетесь, там все понятно. Плюс, есть небольшое видео на сайте.
Ваши планы на будущее?
В планах веб-интерфейс, мобильный в том числе, с возможностью синхронизации локального файла и данных в веб-хранилище. Исследования на эту тему уже ведутся.
Благодарю за комментарии и замечания.
10.03.2011 23:12+0300