Как стать автором
Обновить

Комментарии 39

Я то думал тут будет взлом базы KeePass, а тут просто расшифровка при известных ключах. Эх :)
Интересно было бы посмотреть на аналогичную статью с KeePass на Linux.
Только вот не понял, на счет подбора пароля к базе, это же не гарантированный взлом? Какова оценка?
В статье в конце приводится ссылка на утилиту KeeThief, которая просто из памяти достаёт введённый пароль. Так что оценка O(1) судя по всему.
В репозитории так же есть вроде как пропатченные исходники версии 2.34, в которых эта проблема исправлена.
Из какой памяти, на машине, где совершён вход по паролю в базу? Я имел ввиду в случае утечки зашифрованной базы с парольной защитой.
В тексте у вас использованы расширения .kdb и .kbd. Предполагается что это одно и тоже или это разные форматы?
это опечатка) сейчас исправлю.
А в чём секретность знания-то? Все исходники же доступны, можно просто там прочитать.
Автор проанализировал исходники и превратил компьютерный язык в человеческий.
Ага
Младший брат сегодня спросил.
Брат: А правда, что у тебя в университете все вопросы или билеты выдают перед экзаменом?
Я: Да
Брат: Так их же можно все выучить.

Просто и познавательно, спасибо.
НЛО прилетело и опубликовало эту надпись здесь
Исправте плиз AES-256-EBC на AES-256-ECB

Это вы для вашей виртуальной клавиатуры прикручиваете keepass базы?

Да, данная задача решалась в рамках разработки аппаратного менеджера паролей.

Думалось самому что-то подобное сделать. Теперь подожду пока вы доделаете, т.к. купить точно выйдет проще.

Для расшифровывания базы может использоваться не только AES-256, но и Twofish, Serpent или любой другой алгоритм, добавленный плагином.
Но на самом деле статья отличная! Очень интересно было узнать, как оно там внутри. Спасибо!
если для расшифровки базы данных необходимо несколько сущностей (например, пароль и файл-ключ), то сначала нужно получить хэш от каждой сущности

Здесь есть нюансы:
1) если файл-ключ размером 32 байта, то его содержимое используется «как есть» (хеш брать не надо);
2) если файл-ключ размером 64 байта и там только hex-цифры — они тоже напрямую преобразуются в 32-байтный ключ; если не получилось преобразовать — тогда берём хеш.
3) Cамое интересное: файл-ключ может содержать примерно такой XML:
<?xml version="1.0" encoding="utf-8"?>
<KeyFile>
  <Meta>
    <Version>1.00</Version>
  </Meta>
  <Key>
    <Data>ySFoKuCcJblw8ie6RkMBdVCnAf4EedSch7ItujK6bmI=</Data>
  </Key>
</KeyFile>

KeePass 2.x парсит XML и вытаскивает значение ключа, а KeePass 1.x не разбираясь берёт хеш от содержимого файла. В результате разные версии KeePass из одного и того же файла получают разные значения ключа.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Огромное спасибо! Это очень ценная информация.
Oтличная статья! вот что тогда использовать если даже KeePass ломают…
Мы сейчас разрабатываем аппаратный менеджер паролей, который сведет шансы взлома KeePass к минимуму, и будет самостоятельно вводить пароль. Об устройстве мы уже писали здесь. Уязвимость KeePass состоит в том, что расшифрованная база данных находится в оперативке => если очень захотеть, то эти данные можно украсть. В нашем же случае, расшифрованная БД находится в оперативной памяти устройства и только на момент ввода пароля. Если используются файлы-ключи, то они находятся в защищенной от чтения и записи области флеш памяти устройства. Таким образом, даже если к компьютеру подключен наш аппаратный менеджер паролей, сторонний человек не сможет им воспользоваться, т.к. при очередной попытке ввода логина и пароля, устройство запрашивает мастер-пароль и лишь при его корректности расшифровывает базу данных. Если устройство украли, то это тоже мало чем поможет, т.к. на внешней флеш памяти лежит только зашифрованная БД, а все файл-ключи и мастер-пароли защищены от чтения.
Интересная идея.
А как можно использовать ваше устройство с PC и Смартофона?
Да, мы планируем сделать 2 версии: стационарную, которая будет как переходник между клавиатурой и системным блоком, и портативную — для планшетов, ноутбуков и сматрфонов. Однако на данный момент мы закончили только прототип устройства (основной функционал реализован), чтобы можно уже было демонстрировать потенциальным клиентам.
Стационарная версия: для PC наше устройство является клавиатурой и дисковым накопителем. Все сообщения от подключенной клавиатуры транслируются в PC через наше устройство, т.о. конфиденциальная информация (например, мастер-пароль) никогда не попадет в оперативку PC => кейлоггеры беспомощны тут.
Портативная версия: все то же самое, однако управление устройством, ввод мастер-пароля и выбор логина и пароля будет осуществляться через кнопочный интерфейс на самом устройстве. Детально эта версия еще не прорабатывалась.
Я ответила на ваш вопрос, или вы имели ввиду что-то другое?
Более подробно об устройстве написано здесь. В блоге мы регулярно будем писать о нашем прогрессе)
Почти ответили :)
Больше интересно для ноутбука и смартофона.
Еще не понятно, а есть какая то синхронизация самого контейнера с паролями с облаком?
Буду рад стать бета тестером :) (спб)
Может поздновато, но есть еще InputStick. Андроидовский KeePass умеет с такой штукой общаться. Разумеется, что нужно доверять телефону.
А еще можно украсть с помощью кейлоггера мастер-пароль и получить полный доступ к базе, а в нашем случае придется красть еще и само устройство, что усложняет задачку, т.к. это невозможно сделать дистанционно и владелец уж точно поймет, что произошла утечка )

Есть же куча opensource-реализаций KeePass — под каждую из существующих платформ, есть модуль на cpan.
Для чего всё это?

Мне нужно расшифровывать базу, которая лежит на внешнем флеше микроконтроллера, а там своя атмосфера: мало оперативки, нельзя использовать динамическое выделение памяти… Поэтому надо писать свой порт.
Не прошло и две недели, а статью пора обновлять: Доминик снова затевает смену формата

XML это в сущности язык описания деревьев.

У меня есть Win(довая) С-утилита, которая преобразует *.XML файлы в *.DOT (Graphviz).

Анализировать граф, удобнее чем XML.

Обращайтесь, если понадобится.

@ana_lazareva , вы делали DeskTop консольную утилиту для расшифровки базы данных KeePass или сразу разрабатывали реализацию под FirmWare c учетом аппаратного AES256 на STM32F415RGT6?

У меня на ARM Cortex-M4 (CPU:48MHz) (stm32f407zg) *.kdbx файл расшифровывается 17мин.

На LapTop(е) *.kdbx файл расшифровывается 3.3 cекунд.

Программная реализация AES256 взята от сюда
https://github.com/alambley/aes256/tree/79835b4c1b9e8d2154c039f8921e16db5c4f59c7


Есть ли алгоритм потоковой рашфировки KeePass фала размером, например 100MByte?

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

У меня вообще один монолитный блок получается размером 157941 байт

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации