Кто-нибудь задумывался о шифровании на основе построения фрактального дерева?
Насколько это сложная технология для обсчета машинами и насколько она безопасна с точки зрения подбора первоначальных коэффициентов.
Теперь по-порядку.
Криптование на фрактальных кривыхКриптование основано на вычислении координат плодов фрактального дерева, который задается некоторыми коэффициентами.
Профит в том, что те люди, которые смогут предъявить необходимые коэффициенты для вычисления построения фрактального дерева, они и будут являться хозяинами средств, которые зашифрованы на нем. Конечные координаты доступны для всех. И сумма, которая лежит под этими координатами, тоже видна всем. Только у кого есть первоначальные коэффициенты, сможет построить путь, будет обладать данными средствами.
Простейшее фрактальное дерево вычисляется с помощью 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+ координат и попробуйте дать ее расшифровщику)?
Готов подискутировать.