Введение в технологию Блокчейн. Тимур Сергеевич Машнин

Введение в технологию Блокчейн - Тимур Сергеевич Машнин


Скачать книгу
это строгое требование, просто «разрезать» секрет на куски не сработает, потому что даже одна часть дает некоторую информацию о секрете.

      Нам нужно что-то умнее.

      Предположим, что N = 2 и K = 2.

      Это означает, что мы генерируем 2 части на основе секрета, и нам нужны обе части, чтобы иметь возможность восстановить секрет.

      Назовем наш секрет S, который является просто большим (скажем, 128-битным) числом.

      Мы могли бы генерировать 128-битное случайное число R и сделать две части равными R и (S побитовое исключающее ИЛИ R).

      По сути, мы «зашифровали» бы S одноразовым ключом R, и мы сохранили бы ключ (R) и зашифрованный текст (S ИЛИ R) в разных местах.

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

      Но, учитывая две части, мы просто собираем их вместе, чтобы восстановить секрет.

      Этот трюк работает до тех пор, пока N и K будут одинаковыми – нам просто нужно будет генерировать N-1 разных случайных чисел R для первых N-1 частей, а последней частью будет секрет S – операция ИЛИ – со всеми остальными N- 1 частями.

      Но если N больше K, это уже не работает, и нам нужна некоторая алгебра.

      Посмотрите на слайд.

      Здесь мы должны сначала сгенерировать точку (0, S) по оси Y, а затем нарисовать линию со случайным наклоном через эту точку.

      Затем мы создаем точки на этой линии, сколько захотим.

      Получается, что это разделение секрета S на N – количество созданных нами точек и K = 2.

      Почему это работает?

      Во-первых, если мы получим две из созданных точек, мы можем провести через них линию и посмотреть, где она пересечет ось Y.

      Это даст нам секрет S.

      С другой стороны, если у нас есть только одна точка, она ничего не говорит о секрете S, потому что наклон линии случайный.

      Каждая линия в этой точке равно вероятна, и все они пересекают ось Y в разных точках.

      Есть только одна тонкость.

      Мы берем большое простое число P.

      Так, чтобы секрет S был между 0 и P-1, включительно.

      Далее мы генерируем случайное значение R, также между 0 и P-1, и создаваемые нами точки

      x = 1, y = (S + R) mod P – остаток от деления

      x = 2, y = (S + 2R) mod P

      x = 3, y = (S + 3R) mod P

      и так далее.

      Секрет соответствует точке x = 0, y = (S + 0 * R) mod P, которая равна x = 0, y = S.

      Таким образом, это способ сделать деление секрета с K = 2 и любым значением N.

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

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

      Как и было обещано, мы увеличили доступность и безопасность.

      Но мы можем сделать лучше: мы можем делать деление секрета с любыми N и K, если K не больше N.

      Чтобы посмотреть, как это сделать, вернемся к фигуре.

      Причина, по которой мы использовали линию вместо некоторой другой кривой, состоит


Скачать книгу