посоветуйте способ реализации

Mufy

есть программа для КПК, которая при работе использует матрицу с 1500 элементами. Эта матрица находится в экселевском файле, к которому при работе обращается программа.
как лучше реализовать эту матрицу для использования в программе, чтобы не использовать не защищенные файлы (чтобы пользователь не мог залезть и исправить элементы)?
еще один важный пункт - простота замены всего файла при обновлении или элементов матрицы.
Хотя реализация может быть основана и не на файлах, а каким-либо еще способом.
Посоветуйте, плз.

Mufy

неужели ни кто не может предложить каким образом можно запихнуть данные в программу не используя общеизвестных файлов?

elenangel

зависит от языка.
в дельфи например можно было в исполняемый файл внедрить бинарный поток а-ля TRecourseStream и читать из него объекты в рантайме. никто не мешает навернуть поверх еще один поток, который будет, например ксорить данные или еще как прикрывать от "пристального взгляда"

zorin29

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

Serab

Или тебе нужна защита от глупого пользователя? Так предлагался уже XOR.
xor — защита от примерно настолько же глупого пользователя, как и шифрование.

Serab

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

Mufy

язык программирования - VB.net.
Или тебе нужна защита от глупого пользователя? Так предлагался уже XOR.
да, нужна именно защита от такого пользователя.

Mufy

на текущий момент реализовано с помощью экселя.
остальное написанное не понял - пытаюсь загуглить

Serab

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

Mufy

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

Serab

Почему?
Пишешь на большом компе мааленькую программку, которая генерит исходник. Так делают, если сильно хочется.
1500 чисел — это от силы 12 Кб к размеру. Это если там числа double.

Mufy

сделать то просто, а менять оперативно я как буду эту матрицу? именно это я подразумевал под гемором.

Serab

Как часто ее надо менять?
Я просто не понимаю, от чего хочется защититься: от хакера? От тех, кто открывает блокнотом все файлы подряд и пытается подставить числа? Или от не очень грамотного пользователя, но который будет намеренно пытаться искать, что изменить?

Serab

Или даже так: если тебя хранение в экзешнике не устраивает только тем, что надо обновлять весь экзешник, то можешь хранить в отдельном файле, но бинарно. Т.е. записывать туда числа не в текстовом виде, а прямо как они у тебя в памяти лежат.

istran

Поменяй расширение файла на какое-нибудь левое

zorin29

xor — защита от примерно настолько же глупого пользователя, как и шифрование.
М-м?
Вот, к примеру, я: если мне дадут файл, "зашифрованный" XOR-ом, я его смогу прочитать. А файл, зашифрованный PGP - не смогу, не имея ключа. А ты?

Serab

Не имея ключа — нет. Ну, а программа сможет?

elenangel

если мне дадут файл, "зашифрованный" XOR-ом, я его смогу прочитать
строго говоря, без ключа ты и ксор не прочитаешь если про данные ничего не знаешь (случайные равномерно распределенные данные).
а при наличии ключа в программе можно и ксор и пгп прочитать. причем возможно даже не разбираясь в криптографии,
 а просто пройдя под отладчиком за место распаковки и подсмотрев данные в оперативной памяти.

Serab

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

asvsergey

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

Замена одного ключа ничего не даст, надо либо оба ключа менять, либо, просто, новые данные зашифровать старым открытым ключем. Только непонятно, зачем здесь вообще использовать шифрование именно с открытым ключем.

Serab

Замена одного ключа ничего не даст, надо либо оба ключа менять, либо, просто, новые данные зашифровать старым открытым ключем.
Что-то ты не понял похоже. Идея такая: автор шифрует данные закрытым ключем, открытый зашивает в программу, она может расшифровать.
Ломается простой атакой: у чувака есть программа и зашифрованные данные. Он их расшифровывает, генерит свою пару открытый/закрытый, шифрует вновь созданным закрытым, новым открытым заменяет тот, что зашит в программу.

asvsergey

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

Serab

Ну да, я-то согласен, так и писал :)

Andbar

если бинарник подписан, это будет чуть сложнее... впрочем, для человека, заменившего ключ в бинарнике, это достаточно просто, просто чуть дольше...

zorin29

Т.е. ты утверждаешь, что, раз уж в руках у пользователя есть и программа, и данные, то "задача практически решена", и он сможет сломать любую защиту.
Я с тобой согласен.
P.S. между прочим, я не предлагал ничего шифровать, а предлагал подписывать. В этом случае мы гарантируем, что для того, чтобы подменить данные, надо менять и саму программу.

kill-still

Насколько серьёзная защита нужна?
Если просто убрать с глаз долой от любопытных, то можно скажем в зашифрованную базу аксеса положить.
Вообще мне непонятен выбор экселя как носителя.

Serab

Если просто убрать с глаз долой от любопытных, то можно скажем в зашифрованную базу аксеса положить.

kill-still

В чём проблемы? Поставить пароль на базу - всё равно что рарник сделать запароленый.
Достать/записать - гораздо проще, чем с ячейками возиться в кселе.

Serab

Вы смотрите, тут спорят, где лучше хранить матрицу из 1500 чисел, в зашифрованной базе аксеса или в экселе. И вроде бы аксес действительно получается удобнее, а то в экселе еще и с ячейками надо возиться :lol:

kill-still

Я исхожу из того, что будет проще топикстартеру, а не то, что посчитают кошерным такие упоротые, как ты.
Оставить комментарий
Имя или ник:
Комментарий: