Введение в технологию Блокчейн - стр. 70
Как и было обещано, мы увеличили доступность и безопасность.
Но мы можем сделать лучше: мы можем делать деление секрета с любыми N и K, если K не больше N.
Чтобы посмотреть, как это сделать, вернемся к фигуре.
Причина, по которой мы использовали линию вместо некоторой другой кривой, состоит в том, что линия является многочленом степени 1.
Это означает, что для восстановления линии нам нужно не менее двух точек.
Если бы мы хотели сделать K = 3, мы бы использовали параболу, которая представляет собой квадратичный многочлен или многочлен степени 2.
Для построения квадратичной функции необходимы три точки.
Мы можем использовать приведенную таблицу, чтобы понять, что происходит.
Существует формула, называемая интерполяцией Лагранжа, которая позволяет восстановить многочлен степени K-1 из любых K точек на его кривой.
Поэтому, в результате всего этого у нас есть способ хранить любой секрет в виде N частей, чтобы мы были в безопасности, даже если злоумышленник узнает K-1 частей из них.
И в то же время мы можем спокойно утерять N-K частей.
Между прочим, ничего из этого не является специфическим для Биткойна.
Вы можете тайно делить свои пароли прямо сейчас и раздавать части своим друзьям или размещать их на разных устройствах.
Но никто не делает этого с секретами, такими как пароли.
Во-первых, из-за потери удобства.
А во-вторых, потому что существуют другие механизмы безопасности для важных онлайн-учетных записей, например, двухфакторная безопасность с использованием проверки SMS.
Но для Bitcoin, если вы храните свои ключи локально, у вас нет других способов обеспечить безопасность.
Невозможно ограничить доступ к адресу биткойна с помощью SMS-сообщения.
Ситуация отличается от онлайн-кошельков, о которых мы поговорим позже.
Но не принципиально – это просто переносит проблему в другое место.
В конце концов, провайдер онлайн-кошелька должен будет каким-то образом предотвратить одну точку отказа при хранении ключей.
И все равно есть проблема с делением секрета: если мы возьмем ключ, и разделим его.
Когда мы захотим использовать ключ для подписи, нам все равно нужно объединить части и пересчитать первоначальный секрет, чтобы иметь возможность подписать с этим ключом.
Точка, в которой мы объединяем все части, по-прежнему остается одной уязвимой точкой, где злоумышленник может украсть ключ.
Криптография также может решить и эту проблему: если части хранятся на разных устройствах, есть способ генерировать подписи Bitcoin децентрализованным способом, не восстанавливая при этом приватный ключ на каком-то одном устройстве.