KeePass user guide / KeePass - руководство пользователя: Безопасность
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Безопасность victor8632 05.10.10 в 09:55 |
|
|
Шифрование базы данных victor8632 05.10.10 в 09:57 |
||
|
Шифрование базы данных victor8632 05.10.10 в 10:03 |
||
|
База данных шифруетя с использованием одного из следующих блочных шифров: victor8632 05.10.10 в 10:04 |
||
|
Размер блока шифра / Размер ключа victor8632 05.10.10 в 10:14 |
||
|
Эти алгоритмы хорошо известны, тщательно анализировались и считаются очень безопасными в криптографическом сообществе (см. [1] для комментариев, например, по NIST в AES). victor8632 15.10.10 в 10:20 |
||
|
KeePass 2.x сам не поддерживает Twofish, но дополнительные алгоритмы шифрования могут быть предоставлены при помощи плагина. victor8632 05.10.10 в 10:26 |
||
|
Для обоих алгоритмов случайным образом генерируется 128-битный вектор инициализации при каждой записи базы данных. Это позволяет несколько баз данных зашифровать, используя одни ключ без раскрытия описываемых моделей. victor8632 05.10.10 в 10:32 |
||
|
Хэширование и ключ вывода victor8632 05.10.10 в 11:01 |
||
|
Недавно обнаруженная атака на SHA-1 [2] не повлияла на мнение о безопасности SHA-256. SHA-256 по-прежнему считается очень безопасным [3]. victor8632 06.10.10 в 13:42 |
||
|
Создание ключа: victor8632 06.10.10 в 13:53 |
||
|
Когда используются и пароль, и ключевой файл, окончательный ключ получают следующим образом:SHA-256(SHA-256(пароль), содержимое ключевого файла), т.е. хэш мастер-пароля является конкатенцией между байтами ключевого файла и результирующей байтовой строкой хэшированных еще раз при помощи SHA-256. Если ключевой файл не содержит ровно 32 байта (256 бит), он тоже хэшируется при помощи SHA-256 для формирования 256-битного ключа. Формулу с учетом описанных изменений можно представить следующим образом: SHA-256(SHA-256(пароль), SHA-256(содержимое ключевого файла)). victor8632 06.10.10 в 14:04 |
||
|
Генерация случайных чисел victor8632 06.10.10 в 14:20 |
||
|
Эти псевдослучайные данные накапливаются в пуле случайных значений. Для генерации 16 случайных байт пул хэшируется (SHA-256) с использованием указателя. Указатель увеличивается после генерации 16 байт. Таким образом, может быть эффективно получено столько случайных байтов, сколько это необходимо. victor8632 07.10.10 в 12:18 |
||
|
Защита от атак подбором по словарю victor8632 07.10.10 в 12:23 |
||
|
На самом деле невозможно предотвратить подобные атаки: ничто не мешает злоумышленнику просто перебрать все возможные ключи и посмотреть, не будет ли база расшифрована. Но что можно сделать (и KeePass это делает) это усложнить процесс перебора: путем добавления постоянных рабочих факторов в создание ключа, мы делаем работу подбора ключа такой тяжелой, как это только возможно. victor8632 07.10.10 в 12:54 |
||
|
Для создания окончательного 256-битного ключа, который используется для блочного шифрования, KeePass сначала хэширует пароль пользователя, используя SHA-256, шифрует результат N раз, используя алгоритм расширенного стандарта шифрования (AES) (это так называемые циклы текущего преобразования ключа) и потом результат хэшируется еще раз с использованием SHA-256. Для AES используется 256-битный случайный ключ, который сохраняется в файле базы данных. Так как AES преобразования не являются предварительно вычисленными (ключ - случайный), злоумышленник тоже вынужден будет повторить все циклы шифрования, иначе он не может проверить и посмотреть, является ли текущий ключ правильным. victor8632 08.10.10 в 06:23 |
||
|
Теперь злоумышленнику требуется гораздо больше времени, чтобы подобрать ключ. Если он сможет проверить только несколько ключей в секунду, то атаки с перебором становятся непрактичными. N является рабочим фактором и лишь косвенно фактором времени. Супер компьютер может подбирать ключи гораздо быстрее, чем стандартный компьютер, но все равно проверка одного ключа с N циклами преборазования будет требовать в N раз времени больше, чем проверка ключа без циклов преобразования даже на супер компьютере. victor8632 08.10.10 в 06:33 |
||
|
По умолчанию KeePass устанавливает N равным 6000 циклам шифрования (имеется в виду полное шифрование; N не имеет ничего общего с внутренними циклами шифрования AES). Такое количество было выбрано для поддержания совместимости с портативными устройствами (процессоры PocketPC значительно медленнее обычных, поэтому для получения ключа требуется больше времени). victor8632 08.10.10 в 06:40 |
||
|
Если вы работаете только на обычном ПК, настоятельно рекомендуется увеличить количество циклов преобразования ключа. Вы можете изменить это количество в диалоге параметров базы данных паролей. Справа от поля ввода количества циклов есть кнопка. При нажатии на нее KeePass вычисляет количество циклов, которое приведет к задержке в одну секунду. Подождать 1 секунду открытия базы данных - не проблема, однако, это конечно же большая неприятность для злоумышленника. Однако количество циклов может выставлено любым по вашему выбору, кнопка просто позволяет дать вам приблизительное представление о том, сколько циклов в секунду может быть выполнено на вашем компьютере. victor8632 08.10.10 в 06:51 |
||
|
Эта защитная функция полезна только для мастер-пароля, ключевые файлы рандомизируются иначе, поэтому нет необходимости в преобразовании содержимого ключевого файла. Подбор содержимого ключевого файла эквивалентно по тяжести атаке на танке на окончательный ключ. victor8632 08.10.10 в 06:59 |
||
|
KeePass испоьзует многопоточную обработку для вычисления преобразований (мастер ключ делят на две части по 128 бит, что является размером блока AES). На двух/многоядерных процессорах вычисленя могур проведены в два раза скорее, чем на процессоре с одним ядром. victor8632 08.10.10 в 07:04 |
||
|
На Windows Vista и выше KeePass может использовать Windows' CNG/BCrypt API для преобразований ключа, что увеличивает скорость вычислений на 50% по сравнению с использованием встроенного программного кода KeePass. victor8632 08.10.10 в 07:07 |
||
|
KeePassX: victor8632 13.10.10 в 12:55 |
||
|
Защита памяти процессов victor8632 13.10.10 в 12:58 |
||
|
Это означает, что даже если вы сделаете дамп памяти процесса KeePass на диск, вы не сможете получить пароли. victor8632 13.10.10 в 13:02 |
||
|
По умолчанию введенные пароли защищены в памяти, содержимое других полей - нет (это характерно для версии 1.x). Однако, вы можете включить защиту других полей в памяти с помощью диалога настроек базы данных (не рекомендуется хотя бы по соображениям производительности). victor8632 13.10.10 в 13:07 |
||
|
Кроме того, KeePass затирает все критические по соображениям безопасности участки памяти, когда они становятся не нужны, т.е. перезаписывает эти участки памяти перед освобождением (это касается всех критичных по безопасности участков памяти, не только полей паролей). victor8632 15.10.10 в 08:04 |
||
|
KeePass версий выше 1.15 и 2.x использует Windows DPAPI для шифрования конфиденциальных данных, находящихся в памяти. При использовании DPAPI ключ шифрования данных в памяти, находится в особо защищенной, не свопируемой области памяти под управлением Windows. Если DPAPI недоступен или отключен (в расширенных настройках KeePass по умолчанию включено использование DAPI), KeePass будет использовать алгоритм шифрования ARC4 для создания случайного ключа. Имейте в виду, что это менее предпочтительно по безопасности по сравнению с DAPI не потому что ARC4 криптографически недостаточно строг, а потому что ключ для шифрования в памяти также будет храниться в свапируемой памяти процесса. victor8632 15.10.10 в 08:29 |
||
|
Блокировка рабочего места victor8632 15.10.10 в 08:33 |
||
|
Это обеспечивает максимальную безопасность: разблокирование рабочего места является таким же простым как и открытие файла базы данных заново обычным путем. Также это предотвращает потерю данных (компьютер может отключиться, в то время как KeePass заблокирован, и это не доставит базе данных никакого вреда). victor8632 15.10.10 в 08:41 |
||
|
Безопасность плагинов victor8632 15.10.10 в 08:44 |
||
|
Самотестирование victor8632 15.10.10 в 08:51 |
||
|
Специализированное шпионское ПО victor8632 15.10.10 в 09:12 |
||
|
Поможет ли шифрование конфигурационного файла увеличению безопасности в плане предотвращения изменений вредоносными программами? victor8632 15.10.10 в 09:20 |
||
|
Все возможности безопасности в KeePass защищают от общих угроз, таких как подбор ключей, мониторы буфера обмена, контроль за вводом пароля и т.п. (и атак на базу данных не во время запуска программы, анализаторов дампов памяти, ...). Однако во всех приведенных выше вопросах мы предполагаем, что в системе запущена шпионская программа специально направленная против KeePass. victor8632 15.10.10 в 09:59 |
||
|
В этой ситуации самые лучшие меры безопасности будут обречены на провал. Это закон №1 из 10 непреложных законов безопасности: "Если плохой парень сможет убедить вас запустить свою программу на вашем компьютере, это уже не ваш компьютер". victor8632 15.10.10 в 10:03 |
||
|
Рассмотрим очень простой пример шпионской программы, направленной против KeePass: пусть это будет приложение, которое ждет запуска KeePass, потом скрывает запуск и имитирует из себя KeePass. Все взаимодействия с пользователем (такие как ввод пароля для расшифровки конфигурации и т.п.) могут быть сэмулированы. Единственным способом определить, что мы пользуемся шпионской программой является использование программы, о которой вредоносная программа не знает или которой не может манипулировать (рабочий стол безопасности); в любом случае это не может быть KeePass. victor8632 15.10.10 в 10:15 |
||
|
Ссылки для дальнейшего чтения victor8632 15.10.10 в 10:15 |
||
|
[2] Bruce Schneier's blog: SHA-1 broken. victor8632 15.10.10 в 10:16 |
||
|
[3] Bruce Schneier's blog: Cryptanalysis of SHA-1, with comments about the impact of that discovery and what to do now. victor8632 15.10.10 в 10:16 |
||
|
[4] Scott Culp, Microsoft TechNet Essay, 2000: 10 Immutable Laws of Security. victor8632 15.10.10 в 10:17 |
||
|
[5] Jesper M. Johansson, Microsoft TechNet Magazine, 2008: Revisiting the 10 Immutable Laws of Security, Part 1. victor8632 15.10.10 в 10:17 |
