All streams
Search
Write a publication
Pull to refresh
-1
0
Send message
2) Предлагаю вам включить воображение, как хотите так и записывайте, главно чтоб правильно работало.
Так же можете поискать все это в Google, как работать с нестандартными типами данных.
Если нет представления об этом, то один из вариантов — посмотреть как выполняется сохранение в файл в длинной арифметике.
1) Я написал «setByteOrder(QDataStream::BigEndian), можете посмотреть как реализовано», то что вы это не заметили это уже другое дело

2) Я уже во второй раз говорю, используются только стандартные типы данных, зачем мне вам описывать то, чего нет?
1) Я же написал что Big Endian, этого недостаточно?

2) Я с ними не работаю, достаточно стандартных типов данных, может быть равно 7, теоретически может быть равно и больше, я не проверял, поэтому утверждать не буду.

Что-то еще?
1) Чтение файла и запись в файл назад идет через Qt, QDataStream, setByteOrder(QDataStream::BigEndian), можете посмотреть как реализовано

2) Специализированных типов данных я не использовал, по этому поводу можете не беспокоиться, хотя сделать их можно и работать они будут.

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

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

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

Если вы рассматриваете не KPCA, а что-то ваше собственное, где вам выдадут информацию о размере блока и о количестве итераций шифрования, то это совсем другая ситуация, можете сразу и попросить у тех кто вам это все даст и сам ключ шифрования, тогда никаких атак вообще производить не надо, всё уже готовое, останется только использовать и всё.
1) Действительно, здесь много непонимания т.к. я не вижу чем мои условия являются сверхъестественными? Неужели умножение вектора на матрицу является чем-то чрезвычайно сложным для понимания? Неужели нет статей подробно описывающих алгоритм? Неужели нет примера кода здесь?
2) Конкурсы? Это не конкурс определения криптостойкости, поищите статьи автора и других где они описывают криптостойкость этого алгоритма, я прошу вас лишь подтвердить ваши слова из вашего первого сообщения, если вы считаете что все довольно просто, то почему так сложно это вам доказать или вы так и дальше будете продолжать разговор о том что алгоритм некриптостойкий, «тривиальный», в таком случае это не имеет никакого смысла
Буду благодарен если вы поймете, что указав на что-то (в данном случае на слабость алгоритма) будьте добры это доказать, я не говорю что вы не правы, может быть автор алгоритма и статей по нему не прав, а вы знаете это лучше, но без ваших доказательств все ваши сообщения не имеют никакого смысла.
1) В чем же именно неизвестность реализации? В том что есть варианты размеров блоков и все возможные варианты вам известны, вы это называете неизвестностью? Или то, что я согласился проверить ваш проект на основе этого OpenCL файла и показать вам что он работает, в этом неизвестность?
2) Ключ легко генерируется, судя по вашему первому сообщению, вы прочитали все статьи автора и наверно других авторов и должны прекрасно понимать каков ключ, если нет, то получается что ваше первое сообщение не соответствует действительности.
3) Я не хочу доказывать стойкость криптосистемы, это доказывал автор, мне это не нужно, это не мой алгоритм, сколько еще раз мне написать чтобы вы это поняли? Автором, насколько я понимаю, проводились эти этапы, описанные в 3 пункте, по данным вопросам обращайтесь к нему.
4) У вас замечательные шутки, но не меняя тему там ничего не наложено, обычное умножение на матрицу.

Что я понял из ваших и своих сообщений.
1) Вы сообщили что алгоритм очень просто взломать, т.к. здесь обычное умножение на матрицу.
2) Я предложил вам доказать это
3) Вы мне сообщаете кучу условий, после реализации которых вы согласны это делать, не совсем адекватных условий (см. пункты выше, устал повторяться)

Я делаю вывод что вы не можете взломать алгоритм, про который вы сказали что в нем можно тривиально найти ключ, к чему вы вообще написали ваше первое сообщение?
Я так понимаю вы решили на этом закончить, неужели алгоритм не настолько тривиален как вы сказали? или метод key schedule не слаб?
Хотелось бы уточнить некоторые пункты, а именно 1, 3 и 4.

1) У меня нет смысла уточнять количество итераций шифрования, т.к. я вам не должен говорить это, все что у вас есть это эти 3 файла.
2) Вы можете сделать проект на основе OpenCL файла, я могу взять ваш проект, зашифровать вашим проектом файл и дешифровать какой-либо файл, указание полного совпадение с flagE покажет вам то, какая размерность у блока, а этого я вам сообщать тоже не должен.

Таким образом выполнение ваших пунктов говорит о том, что у вас появляется дополнительная информация для взлома алгоритма, которой при КРСА для данного алгоритма у вас быть не должно, поэтому я не могу согласиться на ваши условия и надеюсь что вы все-таки понимаете почему.
Я хотел бы вас поправить, выше приведен пример кода, который именно это и должен делать, то что он это делает это на данный момент еще не доказано, попробуйте использовать его для 3 файлов, которые я предоставил, добудьте ключ и предоставьте 4 расшифрованный файл, тогда это будет доказано.

Могли бы вы это сделать или на этом стоит закончить?
Хорошо, дабы вам не усложнять задачу более скажу, что там осталась целочисленная арифметика.

Я не сообщаю вам размер блока потому, что в статьях, как я уже в который раз повторяюсь он равен 24*N и указано, что он выбирается пользователем.

При КРСА, а мы его и рассматриваем сейчас, размер блока вам условно никто давать не должен.
Уважаемый, могу ли я попросить вас найти ключ тривиально?
Я вас не пойму, вам вроде было вчера всего достаточно, вы написали что задача решается в общем случае без всяких проблем, что видно теперь?

Я никаких правил игры не менял, давайте посмотрим что написано мной:
«Т.е. вариации этого кода только таковы что, например uchar заменится на int или long long или float или double, произвольно выбрано мной.»

Что после этого написано вами:
"Ок, давайте свои пары шифрованных/не шифрованных файлов, точнее как:
Вы выберете ключ (любой набор матриц), этим ключем зашифруйте один файл в пару сотен кб, и пришлите мне и оригинал и шифрованный файл, потом зашифруйте второй файл и пришлите мне только шифрованный.
Моя задача будет — восстановить второй файл, не зная исходного ключа."

Я также возвращаюсь к тому что вы раньше согласились найти супер матрицу и к тому, что исходники у вас имеются!!! И к тому что я написал что Я могу заменить uchar на что угодно и вы на это согласились.

Моя реализация алгоритма основана на статьях, в которых написано что размер блока равен 24*N бит ПО ВЫБОРУ, если не можете взломать, прошу признать это и закончить на этом.
Давайте посмотрим то что вы написали:

«Вы выберете ключ (любой набор матриц), этим ключем зашифруйте один файл в пару сотен кб, и пришлите мне и оригинал и шифрованный файл, потом зашифруйте второй файл и пришлите мне только шифрованный.
Моя задача будет — восстановить второй файл, не зная исходного ключа.»

1) Никаких требований по тому какой размер блока вы не писали.
2) Никаких требований по тому, что я предоставлю вам то, на что я заменю uchar тоже не было.
3) Вы написали что можно решить задачу в «общем случае», что я и хочу увидеть, алгоритм ведь простой, обычное умножение на матрицу как сказал oleg1977.

Тем не менее я вам помогу.
Размер блока может быть равен 24*N, где N может изменяться от 1 до 8 с шагом в 1.

Прошу заметить что при условно реальном случае KPCA вам никто предоставлять размер блока не будет.
Речи о том, что я вам предоставлю то, на что я заменил uchar не было потому, что вы написали:

«При этом это будет работать, даже если изначально работа была не с отдельными битами, а с числами некоторой разрядности и операции были по модулю некоторому, например по модулю 2^n»

К тому же мы рассматриваем условно реальный случай KPCA, давайте не будет упрощать задачу, благодарю.

Какие именно детали формата вас интересуют?
www.filedropper.com/files_14

Ловите файлы, 3 штуки, 1Мб.
Как скоро ждать результат?
Хорошо, сегодня заменю в коде тип uchar на любой другой и вам скину 3 файла
На мой взгляд совершенно ясно, arrD — исходный файл, любой, допустим формата .bmp как на картинке в начале, остальное — 9 элементов матрицы поворота.
Как можно догадаться из кода режим шифрования — ЕСВ.

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

Полные исходники представлены в этой статье, передается файл, передаются элементы матрицы, выполняется умножение, есть ли еще вопросы?

Один момент, в данном коде используется uchar, в спецификации qes в статьях указано, что количество бит в векторе это выбранная создателем величина, т.е. здесь вы видите что используется массив данных uchar, с таким же успехом этот массив может быть другого типа данных, например int, long long и т.п.
Т.е. вариации этого кода только таковы что, например uchar заменится на int или long long или float или double, произвольно выбрано мной.

Как я понял «При этом это будет работать, даже если изначально работа была не с отдельными битами, а с числами некоторой разрядности и операции были по модулю некоторому, например по модулю 2^n» это не сильно меняет задачу, т.к. как вы сказали все это будет работать.
Я поддерживаю вашу статью, но хочу дополнить, что, например, в довольно популярной игре Dota2, некоторые из вариантов немного изменены, что позволяет больше держать людей внутри, например:
1) Так называемые кумиры Dota2 повышают её популярность
6) Некоторые считают что есть шанс подняться до самого верха и заработать 1kk+ $, да, этот шанс есть, но он настолько мал, что об этой цифре даже лучше и не думать

Есть статья, которая показывает что играть это замечательно, с ней можно в чём-то согласиться, но только отчасти.
Отлично, попытаюсь объяснить более подробно что написано выше
«Для шифрования данных необходимо выполнить обычное умножение матриц, например: B' = P(q) * B, где B — данные которые необходимо зашифровать, P(q) — матрица поворота, B' — зашифрованные данные.»

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

Как видно из википедии у нас имеется матрица поворота 3х3, мы берем данные в виде векторов 3*N байт и умножаем их на эту матрицу, получаем зашифрованные данные.
Вот собственно и весь алгоритм, что конкретно здесь не понятно?
Есть пример кода выше OpenCL/C++, он тоже непонятен?

Information

Rating
Does not participate
Registered
Activity