Author

Topic: Фрактальное шифрование (Read 234 times)

member
Activity: 87
Merit: 11
Можно усложнить жизнь расшифровщика, если для каждой дочерней ветки применять свои коэффициенты., т.е. начальные коэффициенты будут следующие:
L - начальная длина,
N - количество дочерних ветвей с каждой последующей ветви,
I - количество итераций,
A[] - массив значений углов для каждой дочерней ветви, А1, А2...Аn
K[] - массив значений уменьшений или увеличений для каждой дочерней ветви, К1, К2..Кn

Могу написать функцию в php, для построения дерева, для тестов.

Остаётся вопрос с пересчетом: имея количество конечных точек можно определить начальные коэффициенты N и I. Если количество кратно степени двойки, то можно предположить, что N было равно 2, а I посчитать уже не составит труда. Тут предлагаю ввести путающие координаты.
Они добавляются к общему числу координат в виде массива X[], Y[].

Так же для затруднения вычисления начальных координат, есть предложения строить деревья в 3,4,5 и т.д. измерениях. Благо математически это возможно. Для 5- мерного дерева будет не один угол альфа, а 4 угла.
full member
Activity: 644
Merit: 135
Ну почему, можно - для вычисления чего-нить вроде логина, или даже хранения самого ключа...

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


PS   то есть вместо функции если использовать таблицы(секретные) - то вполне подойдет.   Может быть даже не совсем секретные, хз, надо думать...
legendary
Activity: 2674
Merit: 2334
В биткоин используются случайные числа для создания кошелька от 1 до 2 в степени 256, И перебрав все значения можно найти все кошельки. Тут же для создания кошелька нужно перебрать несколько значений. Причём начальную длину можно брать от 0 и до бесконечности, коэффициент уменьшения или увеличения дочерней ветви можно также брать от 0 и до бесконечности. Количество итераций и киличество ветвей можно брать в пределах от 10 до 100. В результате получится туча значений координат, расшифровать которые будет не под силу никому.

Криптография Bitcoin основывается на цифровой подписи ECDSA на эллиптической кривой secp256k1. Хотя приватный ключ действительно равен 256 бит, Bitcoin-адреса имеют меньшую длину в 160 бит. Более того, стойкость эллиптической кривой secp256k1 ещё меньше и составляет 128 бит. Но даже этого количества вариантов достаточно, чтобы перебор всех приватных ключей или решение задачи дискретного логарифмирования с использованием огромных вычислительных мощностей заняли триллионы лет.


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

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

Такие минусы неприемлемы для криптовалют. Блокчейны итак массивно увеличиваются довольно быстрыми темпами.

Насколько я понимаю, фракталы не созданы для использования в криптографии. Мне известно разве что об алгоритме фрактального сжатия изображений и одной из реализаций DHT. Похоже, во фрактальных деревьях вместо графика функции берётся траектория движения точек по определённому маршруту. Честно говоря, я не вижу перспектив применения этих методов в криптовалютах.
full member
Activity: 644
Merit: 135
Подобные функции легко предсказуемы, и взломать будет не сложно(подбором коэффициентов).

В ГСЧ используются слегка другие функции - там и нелинейность есть, создаются бифуркации...
(причем количество циклов в SHA - 64, с меньшим числом итераций например 40+ легко взламываются)


PS  а вот над чем стоит подумать - может быть адрес или login подобным образом кодировать, ну и ввод пароля при наличии посторонних глаз(и камер)?..

PPS  то есть вместо слова допустим координаты на карте какого-то хорошо известного вам места?
member
Activity: 87
Merit: 11
В биткоин используются случайные числа для создания кошелька от 1 до 2 в степени 256, И перебрав все значения можно найти все кошельки. Тут же для создания кошелька нужно перебрать несколько значений. Причём начальную длину можно брать от 0 и до бесконечности, коэффициент уменьшения или увеличения дочерней ветви можно также брать от 0 и до бесконечности. Количество итераций и киличество ветвей можно брать в пределах от 10 до 100. В результате получится туча значений координат, расшифровать которые будет не под силу никому.
legendary
Activity: 2744
Merit: 1588

Вопрос математикам: имея конечные координаты, сколько понадобится времени, чтоб расшифровать начальные коэффициенты (создайте дерево из 8000+ координат и попробуйте дать ее расшифровщику)?

Готов подискутировать.

Это я считаю вопрос больше криптогрофам, чем математикам. Криптография непроверенная опасна тем, что по не опытности Вы можете где-то допустить ошибку и тогда вся ваша криптография рассыпается в прах.
member
Activity: 87
Merit: 11
Кто-нибудь задумывался о шифровании на основе построения фрактального дерева?
Насколько это сложная технология для обсчета машинами и насколько она безопасна с точки зрения подбора первоначальных коэффициентов.
Теперь по-порядку.

Криптование на фрактальных кривых

Криптование основано на вычислении координат плодов фрактального дерева, который задается некоторыми коэффициентами.

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

Простейшее фрактальное дерево вычисляется с помощью 4 коэффициентов:
Начальная длина l, Угол преломления дочерней ветви α, Коэффициент уменьшения дочерней ветви k, Количество итераций (ростков).

Для примера возьмем начальную длину l = 100 единиц (для примера мы будем использовать условные единицы, в качестве которых могут использоваться миллиметры, пиксели, и другие), Угол возьмем равный 90 градусов или четверть окружности α = 90, Коэффициент уменьшения возьмем равный 0.5, то есть, каждая последующая ветвь будет вполовину меньше родительской, И число итераций равно i = 5.

Рисуем:
1) на первой итерации из начальной точки с координитима 0,0 проводим вертикальный отрезок в на высоту 100 единиц:

2) на второй итерации из конца отрезка (координаты 0,100), под углом в 90 градусов против часовой стрелки откладываем отрезок длиной в половину родительского, то есть длиной 50 единиц:

Теперь у нас получилась конечная точка с координитами (50,100)
3) На третьей итерации из конечной точки под углом в 90 градусов к родительской ветви откладываем отрезок еще вполовину меньше:

Теперь конечная точка нашего дерева имеет коориднаты (50,75)
4) На четвертой итерации проделываем все то же самое. Под углом в 90 градусов откладываем половину отрезка:

Теперь наша конечная точка имеет координаты (37.5,75)
5) И на пятой итерации мы получаем законченное дерево:

И когда наше дерево построилось мы принимаем последнюю конечную точку за созревший плод с координатами (37.5,81.25)

Это был простой пример. И дерево можно сказать условное.

Теперь усложним: Введем еще один коэффициент: n — количество дочерних ветвей. И построим дерево с коэффициентами l = 100, α = 45 градусов, k = 0.7, i = 4 (Тут возьмем поменьше для простоты ручного счета) и число ветвей n = 2.
Примем условие, что каждая вторая ветвь отстоит от первой на тот же угол, что и первая от ствола. Рисуем итерации:
1)

0, 100

2)

49.497474683058, 50.502525316942
70, 100

3)

0.49747468305832, 50.502525316942
14.849242404917, 15.854293038801
35.351767721859, 65.351767721859
70, 51

4)

В итоге, спустя 4 итерации мы получили 8 конечных точек или «плодов»:
24.751237277757, 74.75628791164
0.49747468305832, 84.802525316942
14.849242404917, 50.154293038801
-9.4045201897817, 40.1080556335
35.351767721859, 99.651767721859
11.09800512716, 89.605530316558
45.746237405301, 75.253762594699
37.5, 51
(не обращайте внимания на то что одна координата уходит в минус, а на картинке не так. Картинка просто для ознакомления и нарисована не в масштабе)
Если число итераций будет хотя бы 10, то число конечных плодов будет 512.

Какие плюсы и минусы:

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

Можно использовать любые числа для получения конечных координат (плодов)
l от 1 до бесконечности
n от 1 до бесконечности
k от 0 до бесконечности
α от 0 (0 градусов) до 1 (360 градусов)
i от 10 до бесконечности

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

Возможно перекрещивания по количествам конечных точек, например:
n = 2 и i = 5 дадут столько же точек как и n = 4 и i = 3

Сложно просчитать начальные коэффициенты имея даже 100 конечных координат, не говоря уже о тысячах (например при n = 16 и i=16)

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

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

Самое главное. Разные настройки округления у разных пользователей.

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


Вопрос математикам: имея конечные координаты, сколько понадобится времени, чтоб расшифровать начальные коэффициенты (создайте дерево из 8000+ координат и попробуйте дать ее расшифровщику)?

Готов подискутировать.
Jump to: