Comments 63
Интересное решение, отдельное спасибо за исходники.
PS: Очень забавные сриншоты :)
В исходниках ногу можно сломать :)
Там рефакторинг по-хорошему надо провести.
про шахматы и поэтессы дошло только после прочтения :)

А так выглядит интересно. Поковыряю.
Keepass в папке Dropbox неплохо работает, только каждый раз при открытии создается временный файл и уничтожается после закрытия, но трафик совсем небольшой.
Точно, я тоже использую такую же схему, правда когда встает задача синхронизации базы у нескольких людей, тогда паролер будет удобнее, а то не всем охота свой пароль от дропбокса раздавать.
> но у него был один большой минус — он не может синхронизировать базы между установками

В Кипасе 2.08 есть синхронизация БД (как минимум через ftp). Так что может :)
Даже для WM есть какой-то клиентик, но, видимо, давнишний и синхронизироваться не умеет. Так что тут вы его переплюнули :)

Интерфейс только сделать Кипасоподобным и можно будет пробовать пользоваться.
> В Кипасе 2.08 есть синхронизация БД (как минимум через ftp). Так что может :)
Я написал, что пытался почти год назад. Тогда не мог :)

> Интерфейс только сделать Кипасоподобным и можно будет пробовать пользоваться.
Интерфейс можно переделать, я над ним долго мучался и в итоге пришел к такой простоте. Это довольно ранний релиз, поэтому изменить можно почти все, что угодно.
для keepass'а был вроде даже телефонный клиент на яве, на хабре в посвященном ему топике можно найти ссылки. жаль только что у меня он не взлетел :)
для keepass'а есть даже 2 телефонных клиента на java, клиент под WM, клиент под Palm, и еще, если не ошибаюсь, под iPhone и Android. Причем у меня на nokia 6630 клиент на java работает просто замечательно (хотя и без автоматической синхронизации).
У меня KeePass работает на Nokia E61i (он J2ME, а значит работать будет много где), и он поддерживает синхронизацию через веб ;)
А не расскажите по-подробнее про синхронизацию? Честно говоря, я сразу с этим не разобрался, а потом забил(
спасибо за потраченное время. учитывая открытость кода и фишку с синхронизацией, ваш продукт найдёт своих пользователей.

но, имхо, этот сервис не для параноиков вроде меня — хранение всех личных паролей где-то «в интернетах» кажется не совсем безопасным, не смотря на все ваши заверения. ну, не могу я, человек который генерирует пароли для каждого аккаунта/сервиса отдельно, с минимальной длиной в 25 символов, среди которых обязательно должны быть как минимум: A-Z,a-z,0-9, — (дефис), _ (подчёркивание), иногда другие спецсимволы (не везде они разрешены), даже допустить мысль, что кто-то имеет теоретическую возможность (при желании) получить доступ к, практически всей моей сетевой жизни.

и есть два, как мне кажется очевидных, варианта решения такой проблемы:
1) не обращать на параноиков внимания;
2) сделать что-то типа, торрент-трекера в µTorrent — т.е. чтобы версия хранителя паролей для ПК могла выполнять роль сервера. в этом случае сразу решится проблема с паранойей — всё у тебя на ПК, главное чтобы никто не расшифровал пароли на пути ПК  другой ПК или ПК  WM, а о безопасности локальных копий базы, заботься сам. но у этого варианта есть большой такой недостаток — сложность реализации. имхо, именно она делает 1-ый вариант, таким заманчивым для программистов =(
Хранение на домашнем компьютере не более безопасно, чем «в интернетах» :)
Поэтому — да, легче закрыть глаза на этих единиц.
почему? доступ к своему компьютеру я могу ограничивать по своему желанию — захочу, вообще выключенным буду держать, а чей-то сервер?
плюс, например, я единственный кто имеет доступ к файлу паролей, на своем компьютере, а на сервере же, даже при хорошей защите от посторонних, к этим файлам будет иметь доступ как минимум два человека — я и администратор сервиса. а как известно, секрет который знают 2 человека, уже не секрет.
Что ж, ваше право :)
Отчасти, по просьбе одного знакомого параноика я встроил возможность выбора алгоритма. Хотя, как вы сказали, тут скорее вопрос не технологии, а психологии.
а я бы здесь поговорил не столько о безопасности, а о доверии людям, предоставляющим подобный сервис… ведь чуть-чуть переделав Ваш продукт любой может предоставлять подобные услуги, а потом использовать полученную информацию в корыстных целях ;)
причем сервисы мошенников засчет большей финансовой поддержки могут быстрее развиваться и быть более популярными на протяжении нескольких месяцев :(
Ну, не совсем :)
Да, можно проанализировать мой продукт и понять что и как работает. Но основной код репликации, как раз вся «умность» ее скрыта не в программе, а в серверном скрипте. Который я, понятное дело, пока не собираюсь открывать.
но злоумышленники я думаю смогут написать серверный скрипт, им ведь даже и умность особо большая не нужна, просто идентифицировать польозвателей и сливать пароли :) я вообще думаю им достаточно этой идеи, а все остальное они сами соорудят ;)
Так вся фишка в том, что пароль для шифрования != паролю для идентификации. По крайней мере, не обязательно должен быть равен. :)
Ну, так или иначе, проект делался для себя как минимум. Особого интереса, к сожалению, я не вижу к нему, но, надеюсь, кому-нибудь пригодится. В благих целях, конечно же :)
для себя это круто, но в наше время почти никому нельзя доверять, тем более все свои пароли, так что я сомниваюсь в популярности сервиса, вот если придумать какую нибудь интересную схему с возможностью использования Ваших клиентов, но при этом хранением информации у себя на сервере — думаю доверие должно увеличиться ;)
Использование популярных библиотек не даёт никаких гарантий, ничего не известно о вашей квалификации в данной сфере.

Сам я мало понимаю техническую сторону криптографии, но слышал, есть разные режимы шифрования, и прочие тонкости дизайна, с которыми вы могли что-то напутать.

Также непонятно как реализована передача данных в памяти, есть ли защиты от перехвата буфера, программного чтения gui, и т.п…

очень много тонких моментов.

Воспитание не позволяет мне использовать подобные продукты, без многолетней выдержки и авторитетных мнений.
> Сам я мало понимаю техническую сторону криптографии, но слышал, есть разные режимы шифрования, и прочие тонкости дизайна, с которыми вы могли что-то напутать.
Ну, доказать я вам мало что смогу тут. Скажу лишь, что перед тем, как браться за это дело, я прочитал (не обещаю, что все понял) книгу «Прикладная криптография» Брюса Шнайдера. И выбор CBC, генерации вектора инициализации было продиктовано из полученных знаний. Не скажу, что они — самая истина, но все-таки.

> Также непонятно как реализована передача данных в памяти, есть ли защиты от перехвата буфера, программного чтения gui, и т.п…
Про передачу данных я думал написать, но потом прикинул, что это вряд ли будет кому-то интересно. Как оказалось, нет.

> Воспитание не позволяет мне использовать подобные продукты, без многолетней выдержки и авторитетных мнений.
Именно поэтому код и был открыт, несмотря на то, что лицензия позволяла оставить закрытым :)
Я лично придумал алгоритм, который из названия сайта генерит пароль к нему. В случае необходимости могу воспроизвести на бумашке, а так использую примитивную программульку. Не думаю, что злоумышленник сможет составить необходимую базу данных украденных у меня паролей, чтобы воспроизвести алгоритм, ибо всего запароленных мест у меня порядка 10-20 :)

Мне кажется такое решение проблемы оптимальным.
Ну так не только же к сайтам нужен доступ и не всегда можно изменить пароль на желаемый :)
Мне лично нужно было хранилище в том числе для доступов к серверам и пароли к всяким VPN- и ADSL-соединениям в разных местах
А каковы гарантии, что базу не сломают и не унесут мои пароли в неизвестном направлении?
Ну, гарантий-то особых нет, именно поэтому оно все шифровано-перешифровано. Я не думаю, что кто-то станет ломать тот же AES с длинным ключем, только если у вас там не данные для доступа к миллионам на оффшорном счете :)
Опять же, скрипт на сервере очень простой, через него практически невозможно что-то сломать, т.к. он выкидывает ошибку при первом чихе.
Вообще, если так необходимо, то можно будет сделать некий установочный пакет для сервера, чтобы можно было на своем оборудовании уже установить все необходимое.
Ну, если DDoS, то синхронизироваться будет нельзя. Собственно, он будет недоступен, как и любой другой сайт во время DDoS-атаки.
Стоит похвалить за использование Qt и ориентирование программы не только на пользователей Default OS, однако я, как разработчик, до сих пор не могу смириться с тем, что с крохотной утилитой приходится поставлять целый ворох .dll библиотек (в версии для винды).
В качестве Default OS у меня уже года 3 стоит Gentoo Linux, поэтому выбор был не велик. У Qt преимущество в том, что он и под windows mobile работает, да и изучаю я его уже довольно давно.
Насчет dll согласен, но, с другой стороны, 6Мб в архиве — это не так уж и много, удобство ведь важнее ;)
Да, я бы, с удовольствием купил, если бы были версии для линукс и UIQ3
К сожалению, за маком никогда не работал, поэтому с лету решить вашу проблему не могу. Проверьте зависимости: openssl, qca и qca-ossl просто должно быть установлено.
Ура! Собралась, запустилась — но в списке «Какой алгоритм выбрать?» — пусто. В чем может быть дело?
Короче у меня плагины для qca не поставлены. А собрать их не получилось, система сильно засранная.

Но вообще сам факт — что не изменяя строки кода Qt-шное приложение собирается (и совсем без бубнов) и работает — это большой довод в пользу последней.

Автору респект за грамотный код.
Спасибо большое :)
Алгоритмов нет, потому что не стоит qca-ossl — с этим я еще у windows mobile промучался :)
У всех вопросы по поводу сохранности базы и конфиденциальности, а у меня вопрос по форме.
Во-первых мне кажется лучше не «Дата создания», а «Дата изменения» с вытекающими.
Во-вторых добавить поле для ввода e-mail, т.к. все мы знаем что любой аккаунт почти всегда связан с почтовым ящиком.
> Во-первых мне кажется лучше не «Дата создания», а «Дата изменения» с вытекающими.
На самом деле, я не совсем уверен вообще в необходимости данного поля :)
Я поглядел: в keepass есть, в spb wallet есть — я и себе сделал.

> Во-вторых добавить поле для ввода e-mail, т.к. все мы знаем что любой аккаунт почти всегда связан с почтовым ящиком.
Поля там могут быть любые. Не знаю, смотрели вы или нет, но в правом нижнем окне можно добавить любые данные, в том числе и текстовые. Я вообще сомневался, стоит ли делать поле логина и пароля в каждой записи.
Идея отличная (одельный респект за использование открытых техннлогий, а не патентоаванного закрытого кода). Интерфейс отстойный.

Смотрите: Добавить запись — у вас надо щелкнуть прпавой кнопкой. найти пункт добавить, щелкнуть по нему. Можно сделать это просто кнопкой добавить — действий меньше. Можно еще лучше: сделать форму добавления на странице сос псиском паролей.

Показать/спрятать — лучше сделать проще. например навести мышь (и может быть зажав шифт там или что еще). Ессно, об этом надо тут же написать.

Свойства записи, сделанные через гармошку (или ка это назвется) — это ад (сколько надо действий, чтобы отредактировать запись?).

При всем уважении к вашему труду, программа годится как наглядное антипособие для книг по юзабилити.

В общем, и\фейс для PC требует полной переделки.

ps. А кстати, почему бы не сделать общую для всех базу паролей? ;) По типу bugmenot.

p.p.s А вроде DES уже взломали? Можеттне стоит его предлагать? Да и aes-128 и 256 бит что-то впечатления не производят.

Ах да, start screen на PC версии — в топку, это ужасно антиюзабельно. Почему бы при запуске тупо не открывать последний открывавшийся файл с паролями (или скачать его с инета, если порграмма переносная). Естественно, если пользователь явно разрешил такую штуку.
Вообще, программа и открывает последний использовавшийся файл :)
При выходе она сохраняет в ini-файл настройки, в том числе и путь к последней использовавшейся базе.
> Смотрите: Добавить запись — у вас надо щелкнуть прпавой кнопкой. найти пункт добавить, щелкнуть по нему. Можно сделать это просто кнопкой добавить — действий меньше. Можно еще лучше: сделать форму добавления на странице сос псиском паролей.
Что до кнопки тянуться, что один раз нажать правой кнопкой — имхо, разница небольшая. Я специально выкинул все кнопки, чтобы не мешались. Хотя, в принципе, даже при текущем GUI добавить кнопки — не проблема, надо будет подумать на эту тему.

> Показать/спрятать — лучше сделать проще. например навести мышь (и может быть зажав шифт там или что еще). Ессно, об этом надо тут же написать.
Идея с шифтом мне нравится, спасибо за совет! :)

> Свойства записи, сделанные через гармошку (или ка это назвется) — это ад (сколько надо действий, чтобы отредактировать запись?).
Вообще, странно, что вам так показалось — действий там ничуть не больше, чем обычно. Переключить вкладку -> выбрать нужное -> OK.

> При всем уважении к вашему труду, программа годится как наглядное антипособие для книг по юзабилити.
Был бы рад, если бы предложили вариант с единой системой действий для настольного и мобильного ПК :)

> p.p.s А вроде DES уже взломали? Можеттне стоит его предлагать? Да и aes-128 и 256 бит что-то впечатления не производят.
Там система так работает, что она подгружает все доступные в системе алгоритмы. Мне кажется этот путь наиболее разумным, т.к. есть возможность добавить свой, если имеющиеся в openssl не устраивают.
> Что до кнопки тянуться, что один раз нажать правой кнопкой — имхо, разница небольшая.

Вы невнимательно читаете. С контекстным меню, надо сделать след-е: кликнуть правой кнопкой (еще надо додуматься, некоторые не сообразят, поверьте), увидеть меню, распознать нужную опцию, попасть в не мышью (число усилий и времени зависит от размеров кнопки и ее растояния от курсора мыши), еще раз щелкнуть, уже левой. Это не столько же времени, а в 2-3 раза больше, чем обычная кнопка.

> Я специально выкинул все кнопки, чтобы не мешались.

Это ошибка. Вы прячете часто используемые опции за лишними меню, в то время как они должны быть максимально доступны.

> Вообще, странно, что вам так показалось — действий там ничуть не больше, чем обычно. Переключить вкладку -> выбрать нужное -> OK.

Мне надо просмотреть все поля и исправить некоторые (пока не знаю какие). Что лучше, как вы считаете, классическая форма или этот ужас с гармошкой? Может соревнования на скорость проведем?

> Был бы рад, если бы предложили вариант с единой системой действий для настольного и мобильного ПК :)

Тут выбор простой, либо скорость разработки, либо удобство пользования. Если вы используете MVC, вам надо сделать по 2 комплекта контроллеров (для моб/настольной версии) и 2 Вида. Эти устройства имеют разный принцип работы, требуют разного подхода, сделать для них одинаково удобный интерфейс невозможно.

Сейчас интерфес вашей программы содержит, наверно, все возможные ошибки в проектировании взаимодействия, которые знает человечество :)

> Там система так работает, что она подгружает все доступные в системе алгоритмы.

Несмотря на то что они ненадежны? это неправильно, надо зхотя бы скрыть ненадежные алгоритмы или пометить как -то, что они опасны. Так же в идеале, надо выстроить алгоритмы по степени надежности. Я сам толком не знаю, какой защищен лучше, как я выберу, если программа мне не хочет в этом помочь, а тупо оставляет меня один на один со списком? Это не решение проблемы, а переваливание ее на пользователя.
о боже как всё сложно, я сейчас для себя такой пишу с простецким интерфейсом: в консоли вводится первая строка — пароль от программы далее вводится название сервиса, если оно присутствует, то пароль копируется в буфер обмена, если нет то добавляется в базу и копируется в буфер.
я уже не первый год сижу на Password Commander 2.9.3
Все жду, когда обновятся — анонс давно сделали, а все никак у них не стрельнет :(
Сегодня случайно зашел на их сайт и увидел 2.9.4 версию) Но из нововведений всего лишь поддержка гугл хром)
Ставлю Вам плюс в карму, вы принесли мне хорошие известия ) Они хоть как-то живы, я думал, что проект закрылся. Жду третей версии )
Кстати, в том же кипассе есть такая функция — он тестирует производительность компьютера по рекурсивному шифрованию базы и опытным путем выясняет N — число проходов алгоритма, которое данный ПК сделает за одну секунду и предлагает перешифровать базу столько раз. Сколько проходов делает ваша программа и можно ли выставить это число вручную? Суть проста — если создавать базу на мощном домашнем ПК, мобильный телефон возможно будет расшифровывать ее вечно, если же на слабом — база будет менее устойчива к атаке перебором, а ведь ее многие выкладывают в сеть в полностью открытый доступ, чтоб иметь возможность ее скачать даже в подсети на работе, в которой админ напрочь запретил https.
Шифруется не база, а отдельная запись. Они небольшие по размеру, поэтому вряд ли вечно будет расшифровывать. Плюс ко всему, современные коммуникаторы довольно мощные, поэтому, полагаю, подобная проблема отпадает.
Использую RoboForm + тот же DropBox для синхронизации. Пароли естественно только для веб сайтов, и только под Windows.
Внутри SSH гнать трафик Dropbox-a, внутни Dropboxa — зашифрованный контейнер TrueCrypt, внутри контейнера — зашифрованная база паролей.
/мысли вслух
Only those users with full accounts are able to leave comments. Log in, please.