Russian Qt Forum

Qt => Общие вопросы => Тема начата: -QT- от Октябрь 22, 2008, 12:14



Название: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 12:14
Доброго времени суток All !
Задумался над сохранностью информации в файлах, как текстовых так и
SQLite базами данных. Необходимо защитить от не санкционированного изменения информации.
Как Вы думаете что из кроссплатформенных решений можно привязать к QT.

Есть у меня идея создать для qt шифруемый файловый контейнер, но с чего начинать не знаю.
 :D Наверное что-то связанное с созданием шифруемого файла в котором размещать собственно файловую
систему  ??? ну в общем мысли бегают - но бестолку  :-\ Может уже что то подобное есть нужно только
доработать или просто прилинковать к qt ?



Название: Re: Файловый контейнер или его вариации...
Отправлено: Detonator от Октябрь 22, 2008, 12:28
Я использую http://www.eldos.com/solfs/


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 12:47
Я использую http://www.eldos.com/solfs/
Эта весчь без исходников, да ?
Если можно по подробнее как ее можно заюзать в моей проблеме ?

Смотрел намедни TrueCrypt 6.0а.
На дебиане у меня не собрался - затребовал фусе 2.6 и глибси 2.8 да еще виксвэджит ему подавай
а у меня нету и не будет его в проекте (ресурс ограничен). Попробовал собрать его без гуи но
все равно ругается на виксвэджит. Можно ли его собрать без этой приблуды ?

Да вот еще, наткнулся на статейку:
http://www.securit.ru/press/issues/?id=4 (http://www.securit.ru/press/issues/?id=4)


Название: Re: Файловый контейнер или его вариации...
Отправлено: Detonator от Октябрь 22, 2008, 13:50
> Эта весчь без исходников, да ?

С исходниками, но платная.

> Если можно по подробнее как ее можно заюзать в моей проблеме ?

Файловая система внутри файла, поддержка шифрования, режима только для чтения. Что то еще надо?

Или тебе обязательно GPL? Тогда возьми простую либу со стойким шифрованием, шифруй данные и в таком виде пихай их в обычный zip-контейнер.


Название: Re: Файловый контейнер или его вариации...
Отправлено: Detonator от Октябрь 22, 2008, 13:53
Смотрел намедни TrueCrypt 6.0а.
...
Да вот еще, наткнулся на статейку:
http://www.securit.ru/press/issues/?id=4 (http://www.securit.ru/press/issues/?id=4)

По моему ты куда то в дебри лезешь, для твоих целей годится что нибудь гораздо более простое.


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 14:20
По моему ты куда то в дебри лезешь, для твоих целей годится что нибудь гораздо более простое.
Да, да чем проще тем лучше.  :)
 8) Хотя может попробовать написать драйвер виртуального диска для никса и винды.
Потом прикрутить шифрование на лету, отслеживание попыток отладки и ...
что-то я не то совсем несу. ;D А так хочется почуствовать себя крутым как обрыв.

По поводу GPL лучше наверное BSD. Но если деваться некуда то и коммерческая лицензия пойдет,
только придется доказывать необходимость ее использования (что только эта и всё). :o

Цитировать
Тогда возьми простую либу со стойким шифрованием, шифруй данные и в таком виде пихай их в обычный zip-контейнер.
Я так бы и сделал но нужно не только простые файлы защищать а и СкуЛайтовскую базу данных, как с ней работать если в зипе ? вот вопрос как у Гамлета  :-[


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 15:11
У меня мысль возникла. :D
А может можно прикрутить к QSqlDriver потоковое шифрование/дешифрование с
использованием QtCrypt ???
Таааакс начнем с QFile пожалуй. Или может с QIODevice.

Нет это не то !!!
Копаем в другом направлении.
Я слышал есть форк SQLite c шифрованием ПОМОГИТЕ достать  :-\


Название: Re: Файловый контейнер или его вариации...
Отправлено: Detonator от Октябрь 22, 2008, 15:54
скайлайтовская база большая? Если нет то загрузи ее в память и работай, если большая но секретность не очень критична, делай временную незашифрованную копию и с ней работай.


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 15:59
скайлайтовская база большая? Если нет то загрузи ее в память и работай, если большая но секретность не очень критична, делай временную незашифрованную копию и с ней работай.
База не большая но и оператива маленькая. Такой вариант я рассматривал, кроме этого:
Нужна отказоустойчивость. Если питалово вырубят то все накроется медным тазом.
А постоянный сброс на диск - падение скорости работы намного.
Можно разархивировать на HDD но тогда это не секюрно.


Название: Re: Файловый контейнер или его вариации...
Отправлено: spirit от Октябрь 22, 2008, 16:18
читаните этот тред, Константин описывал шифрование для Sqlite
http://www.prog.org.ru/topic_7748_0.html (http://www.prog.org.ru/topic_7748_0.html)

а конкретнее вот это
Цитировать
Константин:
есть "родная" модифицированная sqlite, которая шифрует данные "на лету" без катастрофического падения производительности. как заявляет автор (кстати, он же автор и оригинальной sqlite), падения производительности на глаз вы не заметите /* по моему скромному мнению производительности sqlite уже и так некуда падать */
вся внутренняя работа по коду/декоду данных прозрачна и даже не потребуется модифицировать прослойку QSql...но эта модификация платная. есть бинарная демка.

если интересует, поищу ссылки - где-то точно были
либо на sqlite.org где-то есть упоминание со ссылочкой на почитайки


Название: Re: Файловый контейнер или его вариации...
Отправлено: Alex Custov от Октябрь 22, 2008, 17:05
Цитировать
Константин:
/* по моему скромному мнению производительности sqlite уже и так некуда падать */

разве она такая медленная? В каком режиме синхронизации?


Название: Re: Файловый контейнер или его вариации...
Отправлено: spirit от Октябрь 22, 2008, 17:11
Цитировать
Константин:
/* по моему скромному мнению производительности sqlite уже и так некуда падать */

разве она такая медленная? В каком режиме синхронизации?

этот вопрос надо было задать в тот тред ссылку которого я привел  :)


Название: Re: Файловый контейнер или его вариации...
Отправлено: Tonal от Октябрь 22, 2008, 20:27
http://fuse.sourceforge.net/
http://www.berdaflex.com/ru/eclipse/books/rcp_filemanager/ch04s05.html
https://sourceforge.net/projects/avf
http://msdn.microsoft.com/en-us/library/aa380369(VS.85).aspx

Ключевые слова для гугления:
виртуальная файловая система,
userspace fie system


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 21:52
http://fuse.sourceforge.net/
http://www.berdaflex.com/ru/eclipse/books/rcp_filemanager/ch04s05.html
https://sourceforge.net/projects/avf
http://msdn.microsoft.com/en-us/library/aa380369(VS.85).aspx

Ключевые слова для гугления:
виртуальная файловая система,
userspace fie system
В гугле как раз так и искал.
fuse гдето наталкивался на порт под винду но с бубном и плясками - в проект интегрировать не катит.
http://www.berdaflex.com/ru/eclipse/books/rcp_filemanager/ch04s05.html
это интересно но пока не понял  как это конкретно реализовывается - если знаете скажите.
https://sourceforge.net/projects/avf - Operating System : Linux, Solaris завязано на платформе, тоже следующий линк.



Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 22, 2008, 22:07
читаните этот тред, Константин описывал шифрование для Sqlite
http://www.prog.org.ru/topic_7748_0.html (http://www.prog.org.ru/topic_7748_0.html)
Данный пост был проштудирован :) в первую очередь.

Реально готов заплатить за помощь в реализации на(для) Qt драйвера виртуальной файловой системы,
сам приму активное участие в написании сей приблуды.
То есть на мое скромное мнение нужно пробовать использовать QFile or QIODevice для этого.
Хотя нужно же и с SQLit-ом тоже вопрос решить. ???


Название: Re: Файловый контейнер или его вариации...
Отправлено: ритт от Октябрь 22, 2008, 22:40
если хочешь начать с QIODevice, советую ознакомиться с сорцами кделибз. сейчас навскидку не помню где точно искать, но это примерно io, kio и т.д., а также различные фильтры на основе интерфейса KZip (если не ошибаюсь). тот же кио-слэйв позволяет раотать с любыми файловыми системами прозрачно - нужно только бэкэнд спарить с интерфейсом. я год-два назад посмотривал в данном направлении, но так времени и не было заняться задуманной задачей всерьёз. если пойдёшь по этому пути, я постараюсь найти время и принять участие...

по второй части: если имеется определённое финансирование, можно приобрести модифицированный склайт (с шифрованием "на лету") - на данный момент для склайт это самое эффективное решение.


Название: Re: Файловый контейнер или его вариации...
Отправлено: Alex Custov от Октябрь 22, 2008, 22:48
если хочешь начать с QIODevice, советую ознакомиться с сорцами кделибз. сейчас навскидку не помню где точно искать, но это примерно io, kio и т.д., а также различные фильтры на основе интерфейса KZip (если не ошибаюсь). тот же кио-слэйв позволяет раотать с любыми файловыми системами прозрачно - нужно только бэкэнд спарить с интерфейсом. я год-два назад посмотривал в данном направлении, но так времени и не было заняться задуманной задачей всерьёз. если пойдёшь по этому пути, я постараюсь найти время и принять участие...

Это всё сильно завязано на KDE. Там даже шедулер для слейвов свой.


Название: Re: Файловый контейнер или его вариации...
Отправлено: ритт от Октябрь 22, 2008, 23:32
я не говорю про привязку к кде - я говорю про саму идею реализации.
если реализовать подобный механизм на чистой кутэ (возможно, через фсэнджине или ещё как - надо ковыряться), удивитесь как много полезного можно будет реализовать с "прозрачностью" для приложения.
мне лично очень нравится в кде возможность ходить по урлам типа settings://[...], sysinfo://[...] и т.п.
т.к. в 4.4 появился новый qthelp://[...], думаю, нечто подобное уже реализовано и остаётся не так много...

и пример ближе к теме: что-то вроде QFile file("mycryptofs://pack1.zip/etc/fstab"), где pack1.zip будет архивом со стойким шифрованием или "mycryptofs://C:/test.txt", если интерфейс позволит устанавливать источник отдельно и т.д., и т.п. - для приложения будет асолютно неважно где на самом деле находится этот файл (это может быть даже потоковый источник в инете).
ы?


Название: Re: Файловый контейнер или его вариации...
Отправлено: Alex Custov от Октябрь 22, 2008, 23:47
а, в этом смысле. Ну да, будет круто:) Только "qthelp" там обрабатывается жёстко и о модульности как в KIO приходится только мечтать. Для этого надо будет написать по сути аналог KIO ( QIO ;) ), и использовать его везде вместо обычных QFile/QHttp/ и т.д., что по сути огромная работа.


Название: Re: Файловый контейнер или его вариации...
Отправлено: ритт от Октябрь 23, 2008, 00:02
ну, я об этом и говорю :)
и плюсом возможность установки фильтра на базовый контейнер - получится вообще здорово - можно будет и сжатие, и шифрование "на лету" организовать...лишь бы фантазии хватило...


Название: Re: Файловый контейнер или его вариации...
Отправлено: Alex Custov от Октябрь 23, 2008, 00:06
закинул им suggestion, посмотрим :)


Название: Re: Файловый контейнер или его вариации...
Отправлено: ритт от Октябрь 23, 2008, 00:09
какой ты шустрый :)
дай потом номерок, как отпишутся?

/* ё-маё, я уже джедай :) */


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 23, 2008, 08:32
Финансирование это из собственных средств - тобишь зарплаты.

По поводу KIO - посмотрел предварительную информацию, возможно и даже
наверное более резонно попробовать. Подумалось ведь КДЕ 4.х уже работает
и там это портировано на четвертую ветку. Ищу сорцы КИО сейчас посмотрим
что из этого можно сварганить.

Дааа... реализация QIO-slaves --> вкусно ... ням. Интересно что по этому поводу скажут тролли ?



Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 23, 2008, 09:15
Цитировать
Есть в QT замечательная штука под названием QAbstractFileEngine. В двух словах это заготовка для построения VFS в отдельно взятой программе. Вот цитата из документации:

A QAbstractFileEngine subclass can be created to do synchronous network I/O based file system operations, local file system operations, or to operate as a resource system to access file based resources.

Собственно все операции с файлами (open, read, write, etc) идут именно через потомка этого класса QFSFileEngine. Также этот механизм используется для доступа к ресурсам (да-да, тот самый QIcon(":/icons/icon.png")).

Таким образом создав 3 класса

class MyFileEngineHandler : public QAbstractFileEngineHandler
class MyFileEngine: public QAbstractFileEngine
class MyFileEngineIterator : public QAbstractFileEngineIterator

мы получаем собственноручно созданную VFS для наших нужд.
http://lestornqt.blogspot.com/ (http://lestornqt.blogspot.com/)

Надыбано по поиску в ассистанте и тырнэте.
Что по этому поводу скажет сообщество ?


Название: Re: Файловый контейнер или его вариации...
Отправлено: ритт от Октябрь 23, 2008, 09:24
> если реализовать подобный механизм на чистой кутэ (возможно, через фсэнджине или ещё как - надо ковыряться)...
:)

это радует. выходит, что в твоём случае задача действительно решается написанием наследников...в моём случае ещё потребуется интерфейс для обвешивания (в)фски фильтрами - т.е. чтобы не писать (в)фску со сжатием/шифрованием на лету, а применять фильтр к существующией (в)фске (скажем, qtdoc://) и читать/писать кутэдоки в сжатом виде _прозрачно_ как для приложения, так и для фсэнджины...
правда, когда у меня появится время на реализацию задуманного, оно (задуманное) может мне уже быть неинтересным :)


Название: Re: Файловый контейнер или его вариации...
Отправлено: -QT- от Октябрь 23, 2008, 09:37
правда, когда у меня появится время на реализацию задуманного, оно (задуманное) может мне уже быть неинтересным :)

Всё нужно вовремя, мы переростаем возникающие проблемы и потом нехотим возвращатся к ним.
Сейчас пробую простейшее приложение с QAbstractFileEngine, посмотрим что можно выжать из него.


Название: Re: Файловый контейнер или его вариации...
Отправлено: Alex Custov от Октябрь 28, 2008, 16:46
какой ты шустрый :)
дай потом номерок, как отпишутся?

/* ё-маё, я уже джедай :) */

Цитировать
Hello,

Actually there is no plans for that, but you are still free to use
kdelibs on your project even if it is commercial project (kdelibs is
LGPL).

I agree that is cool feature but actually it's not on roadmap.

Best Regards.

Alexis Ménard
Software Engineer, Widgets Team 1
Phone : +4799271013

Qt Software, Nokia Norge AS, Sandakerveien 116, 0484 Oslo, Norway
======================================================================
Qt Developer Days 2008
Register Today!
REDWOOD CITY, California: October 29th - 30th
Learn more: www.trolltech.com/qtdevdays2008
======================================================================