1) не вполне понятна конечная цель. От чего должна защищать эта криптосистема? Какова модель противника (атакующего), какие у него возможности?
2) вы по факту смешиваете аутентификацию (здесь - проверку пароля) и авторизацию (здесь - доступ к расшифрованны данным). У пользователя скомпрометирован пароль, как его сменить? Перешифровывать все данные? Пользователь забыл свой пароль, что делать?
3) почему, а главное, с какой целью используется режим XTS (это по сути ECB + гамма) ? Он придуман для шифрования дисков, состоящих из множества мелких секторов, шифровать каждый из которых отдельным ключом непрактично. Его место - ниже уровня файловой системы, а вы, как я понял, строите распределенную (сетевую) БД. Вы смешиваете уровни абстракции.
4) Как происходит проверка пароля? Если не ошибаюсь, AES-XTS из фиксированного шифротекста с любым ключом даст какой-то открытый текст. Как проверить корректность открытого текста, а значит, и пароля?
Можно расшифровывать и сравнивать значение хэша данных с хранимым значением. Но для этого сначала данные необходимо расшифровать, а это, при некоторых условиях, медленно. Обычный брутфорс приведет к отказу работы всей системы.
5) от какого (случайного, умышленного) изменения данных защищает хэш? Если пользователь (клиент) не доверяет серверу, то тут необходимо использовать аутентификацию (например, MAC).