Project

General

Profile

Feature #872

Secure db storage backend

Added by Mellon about 9 years ago. Updated about 9 years ago.

Status:
Invalid
Priority:
Normal
Assignee:
Category:
Plugins: SecMan SecureStorage
Target version:
-
Start date:
10/17/2012
Due date:
% Done:

100%

Estimated time:

Description

Хранить данные в INI файле, конечно, можно, но, во первых не очень безопасно, во вторых, подозреваю, при накоплении данных будет возрастать вероятность факапов.

Может имеет смысл хранить данные форм в локальной базе с возможностью предварительного шифрования мастер-паролем, и/или ключом?
В качестве бекэнда шифрования openssl вполне должно подойти.

При этом возможно улучшатся условия для реализации импорта/экспорта.

#1

Updated by 0xd34df00d about 9 years ago

  • Status changed from New to Invalid
  • % Done changed from 0 to 100

Есть Secman SecureStorage, выключенный по дефолту. Как раз AES256-защищенный бекенд с мастер-паролем.

#2

Updated by Akon32 about 9 years ago

В каком смысле "небезопасно" хранить данные в ini-файлах?

#3

Updated by Mellon about 9 years ago

ну да, это смотря какие данные, при условии, что файл не более чем прозрачный контейнер. А вот на счет надежности... Хотя в моей ситуации было принято решение не делать из Secman хранилища уникальных данных, но при других условиях, если, например, LC будут оперировать сотней другой уникальных пар идентификаторов и паролей, где гарантия, что это всё не похерится, например, при исчерпании свободного места на разделе? Или, например, не накроется ли в таких условиях парсинг всего этого барахла при встрече какой-нибудь рандомной последовательности символов из юникода?

#4

Updated by Akon32 about 9 years ago

Не думаю, что ini-файлы в Qt поддерживают принцип ACID, так что при сбое данные могут и испортиться.
Парсинг из-за юникода ломаться не должен никак - зашифрованные данные естественно сами в бинарном виде, и в ini они записываются средствами qt через QSettings (преобразуются в текстовый вид).
Рекомендую для шифрования использовать криптосистему в src/plugins/secman/storageplugins/securestorage/cryptosystem.{h,cpp} - там всё по уму делалось, правда, через libcrypto, а не QtCrypt. AES256, синхропосылки, имитовставки, хэширование паролей присуствуют. Работает с QByteArray для данных, QString для пароля.

#5

Updated by 0xd34df00d about 9 years ago

А secstorage к продакшену уже готов? Например, не вешает ли эвентлуп при запросе пароля в азотхе? Ну, ты помнишь ту хрень.

#6

Updated by Akon32 about 9 years ago

Циклы событий я вроде поправил месяцев 9 назад, надо коммиты смотреть. Единственное, что мне не нравится - нет "нормальных" диалогов для работы с паролями; в стиле LC сейчас, в общем.

Also available in: Atom PDF