Думаю он грубую ошибку делает, раздавая куски приватников своим любовницам. Недооценивает хитрющих женщин. Да, женщины ради того, чтобы открыть секретик соберутся все вместе, каждая из частей ключа притащит, что имеет, еще и знакомых парней - ботанов из Института Криптографии за бесплатно напрягут и биткоины вытащат. Потратят билет в Цитадель на гору бесполезного шмотья.
Вы меня то с депо перехваливаете, то с женщинами. Я не раздаю куски ключа. Это глупо. Я могу показать схематично, как это работает. Будет немного математики, но не пугайтесь, это не будет сложнее, чем за 5 класс.
Есть такая интересная операция, как
"логическое или" (XOR). Как вы знаете, вся информация для хранения и операций с ней на компьютере кодируется в виде нулей и единиц. Если мы сложим в привычной нам десятичной системе два нуля, то получим такой же ноль.
В десятичной системе (той, которой мы с вами пользуемся, когда подсчитываем профит):
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 2
Если же мы будем проводить XOR операцию для двоичной системы (нулей и единиц), то результат будет немного другим.
XOR(0, 0) = 0
XOR(0, 1) = 1
XOR(1, 0) = 1
XOR(1, 1) = 0
Почему так происходит? Это логическая операция. В ней 0 рассматривается как "нет", а 1 как "да". Должно быть нечетное количество "да", для того, чтобы получилась 1, иначе 0. Т.е. XOR(1, 1) дают 0, когда XOR(1, 1, 1) дают уже 1.
Ты скажешь ну и чо?
Давай представим, что твой приватник это 1011100
Если ты возьмешь случайную строку такой же длины, например, 1000001 и сложишь, то получится:
1011100
1000001
0011101
Итого:
Приватник - 1011100
Ключ - 1000001
Результат - 0011101
Теперь, если ты результат сложишь с ключом, то получится
1000001
0011101
1011100 - постой, но ведь это же наш приватник?!
Поэтому ты смело можешь отдать "результат" кому угодно, а лучше сразу нескольким лицам, а вот ключ кому-то более надежному или взять 100% восстанавливаемый вариант. Например, у тебя есть любимый памятник, а у него какая-то строка текста. Эта строка может быть представлена в виде нулей и единиц и ты можешь взять нужный кусок для ключа. Или просто отдать такой ключ чеченцам с проволокой, особенно, если вы старые приятели и друг друга не раз выручали. И когда к тебе придут спрашивать такой ключик, ребята очень удивятся, когда поедут его забирать у твоей "няшки".
Но это еще не все.
Ведь ключ это какое-то число. Давай загадаем число 2?
2
Отлично, что дальше? Мы эту двойку можем получить как угодно. Например, 2 = 5 - 3, или 5 = 3 + 2
2 и 3 это части (члены), из которых получается 5. Если мы сюда добавим переменную x, то получится уравнение
y = 3 * x + 2
Где 3 * x и 2 такие же члены, но уже уравнения, а само уравнение называется многочленом. Его степень зависит от наивысшей степени переменной. У нас сейчас x в первой степени, поэтому и многочлен у нас первой степени. Со второй степенью наш многочлен бы выглядел так
y = 3 * x^2 + 2
Но нам, чтобы голову не напрягать, это не нужно. Остановимся на первой степени.
Теперь, если в этом уравнении заменять переменную x конкретным числом, то можно получить конкретный результат
Например, возьмем x = 2
y = 3 * 2 + 2
y = 8
Замечательно. Сделаем еще одну попытку с x = 4
y = 3 * 4 + 2
y = 14
Составим таблицу
x 2 4
y 8 14
Ты спросишь, ну и нахуя все это, где наша загаданная двойка? Если обнулить x (x = 0), то получится
y = 3 * 0 + 2
y = 2
Неплохо, но зачем все это было до этого? И почему x должен быть равен нулю?
Как мы знаем из 5 класса, для уравнения можно построить график. Для многочлена первой степени графиком будет прямая. Все прямые линии прямые, и в отличии от ситуации в некоторых странах, в математике нет более прямых прямых линий (есть только более кривые, но это к этому
персонажу). Вся разница между этими прямыми только лишь в их наклоне. А при x = 0 мы получаем пересечение этой линии с осью y (все помнят, надеюсь, декартову систему координат x-y).
Хоть ты и немного заскучал, но пока все просто. У нас есть прямая, она задается уравнением, а при обнулении мы получаем нашу любимую двойку
в дневник. Что дальше?
А дальше самое веселое. Был такой мужик Лагранж. Он много чего придумывал, возможно, даже крипту, ведь у него не было соблазна проебываться на форуме и участвовать в баунти. И он нашел способ, как восстанавливать многочлен n степени из n + 1 точек. Нам в школе очень много раз повторяли, что кратчайший путь между двумя точками, это прямая. Что для нахождения прямой нужно только 2 точки и тп и тд. Это частный случай формулы Лагранжа. Он же придумал, как из большего количества точек восстановить многочлен, причем он будет единственным для этого набора точек.
Восстановленный многочлен называется
интерполяционным многочленом ЛагранжаНе пугайся формул в Википедии. Они массивные только на первый взгляд.
Что мы сейчас имеем?
Загаданное число 2
Наше уравнение y = 3 * x + 2 - многочлен первой степени
У нас есть две точки (2, 8 ) и (4, 14)
Мы знаем, что многочлен n степени (у нас n = 1) восстанавливается однозначно по n + 1 точкам (1 + 1 = 2 или по двум точкам)
У нас есть формула Лагранжа.
Главная проблема пока в последнем пункте. Там так дохуя непонятных символов, а я вроде бы сказал, что тут пятиклассник справится. И я тебя не обманул. Для многочлена первой степени эта формула имеет вид
y = y0 * (x - x1) / (x0 - x1) + y1 * (x - x0) / (x1 - x0)
Уже проще, да? Но что такое все эти x0, y1 и тд? Это координаты наших точек. "0" относится к первой точке (2, 8 ), "1" ко второй точке (4, 14), а сами точки задаются координатами по принципу (x, y)
Давай подставим эти точки в уравнение?
y = 8 * (x - 4) / (2 - 4) + 14 * (x - 2) / (4 - 2)
y = (8x - 32) / -2 + (14x - 28 ) / 2
y = (-8x + 32 + 14x - 28 ) / 2
y = (6x + 4) / 2
y = 3 * x + 2
Мы получили уравнение, которое явно похоже на многочлен первой степени, который в свою очередь является прямой. Как найти пересечение прямой с осью ординат (ось y)? Правильно, обнулить координату x.
y = 3 * 0 + 2
y = 2
Хм, опять эта двойка. Не заметил, что она нас преследует? Стоп, так ведь мы ее и загадали же в самом начале.
Теперь ты скажешь, ахуенно, зачем я это читал? Так вот тебе всего нужно иметь 2 точки в нашем случае, чтобы всегда восстановить число 2. Одну точку ты можешь нанести на дереве во дворе (4 см вправо, 14 см вверх), а вторая может оказаться размером шпильки любимых туфель твоей няшки
с проволокой (2 см диаметр у основания и 8 см длина). Или ты эти точки можешь найти на платье
все той же няшки с проволокой. Или это могут быть размеры бутылки нынче популярного пойла боярышника и среднестатистические размеры воблы, вписанной в прямоугольник. Да вариантов тьма. А еще ты можешь взять многочлен большей степени. Например, 20. И сделать 21 точку. Каждую точку продублирвоать несколькими способами. А саму точку перевести в двоичную систему и еще сверху полирнуть XOR. И даже если окажется, что все твои няшки очень "общительны" и дружат со всей общагой мехмата, то все они лососнут тунца у старого потрепанного хомяка и заебутся угадывать, что в его больную голову пришло.
Конечно, реальный ключ это не двойка или даже не семерка. Это огромное число, настолько огромное, что ты не найдешь такую бутылку боярышника. Хотя тут есть сомнения. Но огромное число всегда можно делить много раз на какое-то число, например, твой день рождения. Например, родился ты 1.01.1970. И сидишь делишь свое большое число на 1011970 сколько-то раз, а шифруешь остаток. И вариантов придумать много можно.
В реальной жизни все делается немного по-другому, но в основе лежит именно этот принцип. В реальности это называется
секрет Шамира.
П.с. в конце сам загуглил секрет Шамира и понял, что там все уже и без меня расписано
Но ничего, я получил удовольствие
Все еще думаете, что крипта это скам?
А сможете ли вы перевести все ваше фиатное состояние в шпильке своей девушки?
Ппс: вот так вы только что из пятого класса телепортировались на первый курс проходного вуза, а то и на второй на отшибе человечества с ребятами, у которых по 100 баллов ЕГЭ, "мамой клянусь"