sitemap
AVE CMS
KeePass - Для доступа к базе, возможно использование ключевых файлов, которые в большинстве случаев, гораздо лучше обеспечивают безопасность, чем мастер пароли . Вы сможете иметь его постоянно при себе, записав на любой носитель.

Безопасность



Подробная информация об организации безопасности, методах и способах защиты паролей в хранителе паролей KeePass Password Safe.



Ключ Шифрование базы данных

Менеджер и хранитель паролей KeePass, шифрует файлы своей базы данных. KeePass шифрует всю базу данных полностью, т.е. не только ваши пароли.  Имена пользователей, заметки, т.д., шифруются тоже.

Базы данных зашифрованы, с использованием одного из следующих блочных шифров:

Шифр Размер блока Размер ключа
Advanced Encryption Standard (AES / Rijndael) 128 bits
256 bits
Twofish 128 bits  256 bits

Эти алгоритмы хорошо известны, проанализированы и в криптографическом сообществе считаются очень безопасными (для примера см. [1] доклад NIST об AES).

Только KeePass 2.x
KeePass 2.x не поддерживает Twofish, но дополнительные алгоритмы шифрования могут быть предоставлены с помощью плагинов.

Блочные шифры используются в CBC (режим сцепления блоков шифртекста) блочный режим шифрования. В режиме CBC, шаблоны обычного текста скрыты.

Для обоих алгоритмов, 128-битный вектор инициализации (IV) каждый раз, когда вы сохраняете базу данных, генерируется случайным образом. Это позволяет, без обнаружения использовать несколько баз данных, зашифрованных с использованием тех же ключей.


Ключ Хеширование и Образование Ключей

Для формирования 256-битного ключа для блочных шифров, используется Secure Hash Algorithm SHA-256. Этот алгоритм сжимает предоставленный пользовательский ключ   (состоящий из пароля и / или ключевого файла), до ключа фиксированного размера в 256 бит. Эта трансформация является односторонней, то есть обратное преобразование хэш-функции математически невозможно, как невозможно и найти второе сообщение, сжимающееся в такой же хэш.

Недавно обнаруженное нападение на SHA-1 [2] не влияет на безопасность SHA-256. SHA-256 по-прежнему рассматривается как очень безопасный [3].

Появление ключей:
Если используется только пароль (т.е. без файла-ключа), пароль плюс 128-битный Random Salt, хэшируются с помощью SHA-256 для формирования окончательного ключа (но заметьте, есть некоторая предварительная обработка: Защита от атаки по словарю ).  Random Salt предотвращает атаки, основанные на предварительно вычисленных хэшах.

При использовании и пароля и ключевого файла, окончательный ключ образуется следующим образом: SHA-256(SHA-256(пароль), содержимое ключевого файла) т.е. хэш мастер-пароля объединяется с байтами ключевого файла и получившаяся строка байт хэшируется с SHA-256 снова. Если ключевой файл не содержит точно 32 байта (256 битов), тогда он также хэшируется с SHA-256, чтобы сформировать 256-битовый ключ. Формула выше, тогда измененится на: SHA-256(SHA-256(пароль), SHA-256(содержимое ключевого файла)).


Двоичный Генератор Случайных Чисел

Хранителю паролей KeePass, необходимо генерировать несколько случайных байт (для IV, для Salt главного ключа и т.д.). Для этого, используются несколько псевдо-случайных источников: текущий отсчет времени, счетчик производительности, системные дата / время, положение курсора мыши, состояние памяти (свободная виртуальная память и т.д.), активное окно, владелец буфера обмена, различные процессы и идентификаторы, различные состояния окна (активное окно, рабочий стол, ...), стек окна сообщений, статус множества процессов, информации о процессе запуска и некоторые структуры системной информации. Кроме того, KeePass использует случайные байты, по умолчанию предоставляемые системой CSP RNG (CryptoServiceProvider GenerateRandomNumbers).

Это псевдо-случайные данные, объедененные в случайной динамической области. Чтобы сгенерировать случайные 16 байт, эта случайная динамическая область хэшируется (SHA-256) с использованием счетчика. Счетчик увеличивается после 16 сгенерированных байт. Таким образом, множество случайных байт будут эффективно производиться так, как требуется.


Ключ Защита от Атак по словарю

Менеджер паролей KeePass, поддерживает защиту от угадывания и атаки по словарю.

Реально, Вы не сможете предотвратить эти нападения: ничто не помешает злоумышленнику просто перепробовать все возможные ключи и просмотреть
расшифрованую базу данных. Но то, что мы можем сделать (и KeePass делает) это максимально затруднить подбор: с помощью добавления постоянного рабочего фактора по ключевой инициализации, мы можем затруднить подбор на столько сильно, насколько захотим.

Для получения окончательного 256-битного ключа, который будет использоваться для блочных шифров, KeePass в первую очередь, хэширует пароль пользователя используя SHA-256, шифрует результат N раз с помощью алгоритма Advanced Encryption Standard (AES) (вызывая
key transformation rounds в настоящее время), а затем хэширует его снова, используя SHA-256. Для AES, используется случайный 256-битный ключ, который хранится в файле базы данных. Поскрльку AES преобразование, не является предварительно вычислимым (случайный ключ), злоумышленнику тоже необходимо выполнить все этапы шифрования, иначе он не сможет проверить и посмотреть, является ли текущий ключ правильным.

Сейчас, атакующему потребуется гораздо больше времени, для подбора ключа.
Если он сможет проверять лишь несколько ключей в секунду, то атака по словарю становиться не актуальной. N - является фактором  работы и лишь косвенно фактором времени. Супер-ЭВМ может проверять ключи намного быстрее, чем стандартный PC, но в любом случае проверка одного ключа с N - количеством раундов,  приведет к большему преобразований в N раз, чем проверка на супер-ЭВМ ключей без раундов преобразования.

По умолчанию, KeePass устанавливает N в 6000 раундов кодирования (подразумевается полное шифрование, N не имеет ничего общего с внутренними раундами шифрования AES).
Это число было выбрано для того, чтобы обеспечить совместимость с портативными устройствами (процессоры КПК работают медленнее, поэтому вычисление ключей занимает больше времени).

Если вы используете KeePass только на ПК, настоятельно рекомендуется увеличить количество раундов преобразований
ключей. Изменить этот параметр, Вы сможете в диалоге настроек базы данных. Кнопку настроек, Вы найдете справа от поля для раундов. При нажатии на эту кнопку, KeePass вычисляет количество раундов, при 1-секундной задержке. Подождать 1 секунду при открытии базы данных непроблематично, но для злоумышленника это создаст серьезные затруднения. Однако, количество раундов может быть свободно установлено по вашему выбору; кнопка только помогает Вам получить примерное представление о том, сколько раундов можно вычислить на компьютере за 1 секунду.

Эта функция
защиты полезна только для Master паролей; ключевые файлы в любом случае являются случайными и нет необходимости трансформирования их содержимого. Отгадывание содержимого файла ключей, одинаково стойко выдерживает атаки брут-форсом против финального ключа.

Для
вычисления преобразований KeePass использует многопоточность (мастер-ключ, разделяется на две части в 128 бит, что соответствует размеру блока AES). На компьютерах с двух-ядерными и более процессорами , вычисления соответственно будут происходить намного быстрее, чем на одно-ядерном процессоре.

В Windows Vista и выше, для ключевых преобразований KeePass может использовать API Windows CNG/BCrypt, что позволит работать на 50% быстрее, чем с кодом преобразования ключей встроеным в KeePass.

KeePassX: В отличие от KeePass, проект Linux port 'KeePassX' только частично поддерживает защиту от атаки по словарю и перебору.


Применение защите Защита Памяти Процессов

Во время работы KeePass, деликатные данные (например, хэш мастер-ключа и пароли Записей) хранятся в памяти процесса в зашифрованном виде.

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

Только KeePass 2.x
По умолчанию, пароли записей в оперативной памяти защищены, в отличии от других областей (как в 1.x). Однако, в диалоге настройки базы данных, вы можете включить защиту в памяти и для других полей (что не рекомендуется, из соображений по потере производительности).

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

Кроме того,
по завершению процесов, KeePass стирает всю критичную с точки зрения безопасности память, т.е. он перезаписывает эти области памяти, прежде чем открыть их (и это относится ко всей критичной по безопасности памяти, а не только к полям с паролями).

KeePass ≥ 1,15 и 2.x
, для шифрования конфиденциальных данных в памяти, использует Windows DPAPI. С помощью DPAPI, ключ для кодирования в оперативной памяти сохраняется в безопасной, невыгружаемой области памяти, которой управляет Windows. Если DPAPI не доступен или выключен (расширенные настройки KeePass, по умолчанию использование DPAPI включено), KeePass использует алгоритм шифрования ARC4 со случайным ключом. Однако отметим, что это менее безопасно, чем DPAPI, в основном не потому, что ARC4 криптографически не так силен, а потому, что зашфрованый в памяти ключ хранится в выгружаемой памяти процесса.

Ключ Блокировка рабочей среды

Блокируя рабочее пространство, KeePass закрывает файл базы данных и оставляет для просмотра только параметры последних настроек (какие группы и записи были выбраны, список позиций и т.д.).

Это обеспечивает максимальную безопасность: разблокировать рабочую область так же сложно, как и открыть файл базы данных закрытый обычным способом. Кроме того, блокировка рабочей среды предохраняет от потери данных (работа компьютера может нарушиться, а при заблокированном KeePass, ущерба для баз данных не будет).


Плагины Плагины и Безопасность

Подробное освещение темы Безопасности при работе с Плагинами посвящены отдельные страницы:
плагины и безопасность в (KeePass 1.x),
плагины и безопасность в (KeePass 2.x).


Черный ящик Стартовый тест

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


Терминал Специализированное Шпионское ПО

Этот раздел дает ответы на типичные вопросы, следующего содержания:

  • Произойдет ли повышение безопасности и недопущение воздействия вредоносными программами  за счет шифрования файла конфигурации?
  • Произойдет ли повышение безопасности и недопущение воздействия вредоносными программами  за счет шифрования приложения (исполняемого файла, в конечном итоге вместе с файлом конфигурации)?
  • Послужит ли улучшению безопасности, возможность предотвращения загрузки плагинов?
  • Будет ли способствовать усилению безопасности, сохранение настроек по безопасности в базе данных (с отменой параметров настроек KeePass)?


Ответ на все эти вопросы:
нет.

Добавление любой из этих функций не повысит безопасность.


Все функции защиты в KeePass направлены против универсальных угроз, таких как клавиатурные шпионы, мониторы буфера обмена, мониторы управления паролем, и т.д.
(и против не динамических нападений на базу данных, анализаторы дампов памяти, ...). Однако во всех вышезаданных вопросах предполагается, что шпионские программы, запущенные в системе, специализируются на атаках против KeePass.

А при такой ситуации, да же лучшие функции безопасности со временем потерпят неудачу. Закон № 1 из 10 основополагающих законов безопасности: "Если вы запустили на своем компьютере приложение злоумышленника, это больше не ваш компьютер". Подробнее об Основополагающих законах безопасности смотрим   [4] [5]

Для примера, рассмотрим следующую очень простую шпионскую програмvку специализирующуюся на KeePass: програмvка ожидает начала запуска KeePass, а затем скрывает запущенное приложение и имитирует себя взамен KeePass. Все взаимодействия (подобно вводу пароля для разблокировки конфигурации, и т.п.) могут быть смоделированы. Единственный способ обнаружить это шпионское ПО состоит в том, чтобы использовать программу, о которой шпионская програмvка не знает или которой не сможет манипулировать (Secure Desktop), в любом случае это не может и не должен делать хранитель паролей KeePass Password Safe.


Список литературы Полезные ссылки и дополнительная литература

[1] Национальный Институт Стандартов и Технологии: (PDF) (на английском).

[2] блог Брюса Шнайера: (на английском).

[3] блог Брюса Шнайера: (на английском) с комментариями по поводу последствий этого открытия и что теперь делать,

[4] Scott Culp, Microsoft TechNet Essay, 2000:  (на русском).

[5] Йеспер М. Йоханссон (Jesper M. Johansson), Microsoft TechNet Magazine, 2008: (на русском).

Мой адрес, Советский Союз
тел./факс: (095) 123-45-67
Email:info@keepass.ru

| | Рекомендовать cайт | AVE.cms 2.08bm © 2008   Создание сайтов
Время генерации: 0,427 сек. / Количество запросов: 46 шт. за 0,224 сек.