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