logo
logo
Я же писал выше о нескольких пользователях [Дим(м) 10/08/2004 19:05]
.. Наверное, не очень понятно получилось. Попробую изложить свои мысли яснее.
 
Программа генерирует случайный ключ - К. Именно он используется для шифрования самой базы. А потом к зашифрованной этим ключом базе дописывается сам ключ, зашифрованный паролями пользователей. Схематично файл данных будет выглядеть так:
<база, зашифрованная ключом К>
<ключ К, зашифрованный паролем А>
<ключ К, зашифрованный паролем Б>
...
 
Соответственно, при загрузке базы программа сначала по логину пользователя определяет какую запись с  зашифрованным ключом нужно использовать. Потом с помощью пароля, введенного пользователем, она расшифровывает сам ключ. И, наконец, с помощью ключа расшифровывается база.
 
В итоге мы имеем независимые пароли для всех пользователей. Плюс никакие исправления в самой программе не помогут врагу добраться до содержимого базы. Если использованный алгоритм шифрования достаточно криптостойкий, то все, что останется для взлома базы - перебирать пароли пользователей. Вот здесь становится важным то, что самый _слабый_ из паролей определяет общую защищенность базы.