KeePass2 - ефективността на алгоритъма за разтягане на ключа е много зле в сравнение с KeePassX
Установих, че има две съществени разлики между KeePassX и KeePass2. Първата – алгоритъмът за разтягане на ключове (key stretching) е имплементиран неефективно при KeePass2. Втората – KeePass2 записва файла на базата толкова бавно, колкото бавно го отваря (докато KeePassX го записва светкавично).
След като увеличих броя на итерациите (на функцията за разтягане на ключа при първоначалното създаване на базата от данни чрез KeePass2), установих разликата във времето на отваряне на една и съща база:
- KeePassX: 9 секунди
- KeePass2: 105 секунди
KeePass2 записва базата за 105 секунди - същото време отнема и отварянето на базата. Това може да означава, че при всяко записване се генерира съвсем нов ключ. Но може и да не значи това. Наричат разтягането на ключа "key transformation". Не съм чел кода за да разбера точно каква е разликата между двете програми.
Но със сигурност KeePass2 е неудобна за ползване. Не е добре да се чака за запис толкова, колкото се чака за отваряне.
KeePassX записва базата мигновено (при време за отваряне 9 секунди).
Ако случайно някой не знае каква е ползата от това да се чака няколко секунди (или даже минути) за дешифриране - да прочете повече за разтягането на ключове (key stretching). Накратко: това затруднява атаките brute force с речник (или без).
Като алтернатива на настройката на разтягането на ключа чрез KeePass2 (и последващо ползване на базата с KeePassX, защото работи по-добре) може да се ползва външна програма за разтягане на ключове (т.е. паролата да се преобразува в дълъг знаков низ, който се подава като парола на KeePassX и други програми).
Популярни програми като GnuPG имат твърде леко разтягане на ключове. Затова е опасно да се ползват с кратки фрази или без допълнително разтягане на ключа.
Разбира се, няма нищо по-добро от ползване на много дълга фраза за парола (която не се среща в книги и е неправилна като граматика и смисъл). Но добър компромисен вариант е ползването на допълнително разтягане на ключове с тежък алгоритъм (който изисква много системни ресурси).
Допълнение: KeePassXC поддържа алгоритъма Argon2, може да се зададат по-тежки настройки.
Обаче, по стара прабългарска традиция, настройките по подразбиране са слаби. Ползва се по подразбиране друг алгоритъм и дори да изберете Argon2 от менюто настройките му по подразбиране са слаби - при мен бяха да ползва само 64 MiB памет и 12 итерации (при това разтягането на ключа отнема само около секунда на моя компютър с тези настройки).
Ако искате сериозно разтягане на ключа - повишете тези настройки - например 1024 MiB и 12 итерации (когато се увеличи паметта времето за изчисляване нараства дори и да не се повиши броя на итерациите - подобно на scrypt). Тогава ще отнема десетина секунди всеки опит за отгатване на ключа.
Допълнение: KeePassXC разтяга ключа и при всяко записване на промени в базата от данни. Това значи, че ще чакате също толкова дълго при запис на данните, колкото при отваряне (и също толкова ще ви се натоварва компютъра). Казват, че не било бъг, така трябвало да бъде... Затова може да се наложи да ползвате външна програма за разтягане на ключа.
Коментари
Публикуване на коментар