В последнее время в СМИ часто пишут об опасности квантовых компьютеров для биткойна. Но если попытаться вникнуть в то, что пишут, то везде я вижу полное невежество и не понимание того, как работает Биткойн. Вот моё понимание того, насколько опасны будущие квантовые компьютеры для первой криптовалюты.
Давайте для начала совсем кратко пробежимся по тому, чем пугают в СМИ этими квантовыми компьютерами: с помощью них смогут “взломать” биткойн и красть биткойны (видимо с биткойн адресов). Приводят мнения всяких учёных, которые поверхностно пугают чем-то непонятным. Складывается ощущение, что всё уже пропало. Но так ли это и чем квантовые компьютеры угрожают Биткойну? Давайте попробуем разобраться!
Криптография в биткойне используется везде – в транзакциях, в майнинге. Но когда говорят об угрозе квантовых компьютеров – имеется ввиду ассиметричное шифрование. Этот тип шифрования используется буквально везде: HTTPS протокол, банковские каналы связи, цифровые подписи, PGP, Bitcoin и прочие приложения. В ассиметричном шифровании есть секретный (приватный) ключ, и криптографически связанный с ним открытый ключ. Секретный тщательно хранится владельцем и используется для расшифровки или создания подписи, а публичный – можно публиковать где хочешь, и тайны в этом никакой нет. Последний используется для зашифровки сообщения владельцу публичного ключа или для проверки цифровой подписи. А вот знание как раз таки приватного ключа даёт возможность расшифровать или сделать цифровую подпись. И вот тут выходят на сцену квантовые компьютеры, потенциально способные за очень короткое время, зная публичный ключ, очень быстро вычислить соответствующий ему секретный ключ. У обычного компьютера на подобное ушло бы миллионы и милларды лет, а квантовые потенциально способны делать это за время, исчисляемое минутами, – примерно так. Хочу сразу заметить, что таких квантовых компьютеров ещё нет, это всё только теория, а также то, что существуют алгоритмы ассиметричного шифрования, стойкие к такому типу взлома (но они не распространены).
Казалось бы всё пропало? Но для Биткойна это не совсем так и далеко не совсем.
В Биткойне адреса, на которые приходят средства – это хешированный публичный ключ владельца этого адреса. Но важно понимать, что это не публичный ключ! Публичный ключ в биткойне неизвестен миру до тех пор, пока владелец биткойн-адреса не сделает первую трату с того адреса. Вот тогда, в этом случае, публичный ключ от адреса впервые расскрывается миру и прикрепляется к транзакции траты с того адреса. На этом, собственно и работает проверка транзакций – кажда транзакция траты имеет публичный ключ и задача каждого биткойн узла (не только майнеров, но и обычной ноды) проверить – совпадает ли хеш публичного ключа с биткойн адресом, и если да – только в этом случае проверяется цифровая подпись. И вот только в тот момент, когда появляется первая трата с биткойн адреса – мир, и потенциально взломщик с квантовым компьютером, узнают публичный ключ и могут найти приватный ключ, чтобы сделать трату с того адреса. Здесь есть нюанс – если мощности квантового компьютера хватит, чтобы вычислить ключ за считанные минуты (в биткойне каждые 10 минут, примерно, идут блоки) с того момента, как он будет знать публичный ключ из транзакции траты – в этом случае взломщик может попытаться создать транзакцию двойной траты с бо́льшей комиссией и у него будет шанс украсть средства. Но, пока есть биткойн адрес, на который только приходят средства и не было ни одной траты средств – с такого адреса средства не украсть в принципе!
В настоящее время очень многие кошельки работают по стандарту BIP32, в котором все ключи и адреса создаются из одного секретного мастер-ключа (так называемое “зерно” или “seed”) и каждое движение средств использует биткойн адрес только один раз для траты – забирает с него все средства и сдачу от транзакции отправляет на новый. Если получатель средств будет придерживаться правила использования одного биткойн адреса для одного получения средств, он практически неуязвим от такой атаки квантового компьютера – в противном случае квантовому взломщику придётся иметь такой мощный компьютер, чтобы тот вычислял приватные ключи за очень короткое время – до 10 минут. Если же биткойн адрес используется для донатов, как делают многие организации – то в этом случае без вариантов: квантовые компьютеры рано или поздно вычислят приватный ключ после первой же траты средств с этого адреса и смогут забрать средства, которые будут на остатках.
Но есть одна опасность, про которую мало кто пишет, но которая реальна. Как я писал выше, современные кошельки используют стандарт BIP32. Такие кошельки имеют приватный мастер ключ, который имеет аббревиатуру XPRIV, и есть соответствующий приватному ключу публичный ключ – его называют XPUB. Многие кошельки, при вычислении балансов своих адресов, пользуются сторонними сервисами или своими же публичными серверами (то есть у каждого разработчика может быть свой сервер для поддержки своей разработки). Для того, чтобы сервис мог сообщать кошельку о балансах на его адресах, используется один из способов сообщить сервису адреса кошелька – это передать XPUB ключ, чтобы сервис по нему сам вычислил адреса и дал по ним балансы. И вот здесь есть реальная опасность – если взломщик с квантовым компьютером каким либо образом узнает этот XPUB ключ, он сможет вычислить XPRIV ключ, а уже зная его – сможет вычислить буквально все приватные ключи от всех текущих и будущих биткойн адресов для этого мастер-ключа (часто такой ключ называют ключом “аккаунта” BIP32). И вот тут есть много способов узнать XPUB ключ, например такие, как: запуск в сети “как бы нормальных сервисов” с тайной функцией фиксации XPUB ключей кошельков, перехват трафика (даже если это будет https трафик, то в нынешнем виде он также уязвим для квантовых компьютеров) и взятие из него этих XPUB ключей и прочее. Но и от этого способа есть защита – пользователям придётся позаботиться о своей безопасности и подключать свои кошельки только к своим узлам, желательно запущенным на том же компьютере, где кошелёк (чтобы исключить расшифровку https трафика взломщиком, который неизбежно будет в ином случае).
В принципе это основные уязвимости для текущего биткойна от квантовых вычислителей. Но давайте не будем паниковать. И вот почему. Прежде, чем появятся мощные квантовые компьютеры, мы об этом постепенно узнаем. Это будет не одномоментно. К тому же, квантовые компьютеры будут угрожать многим сферам жизни, где используется криптография, и куда более важным, чем биткойн – военная связь, ядерные силы, правительственная связь, банковская сфера и многое другое. И пока постепенно вся эта угроза будет становится реальностью, у общества биткойна будет время подготовится: в биткойн через софтфорки будут внедрены новые алгоритмы ассиметричной криптографии, стойкой к квантовым вычислениям и у пользователей будет время, чтобы перейти на новые адреса. Надо помнить, что биткойн хоть и супер стойкий к изменению алгоритма, но всё же его алгоритмы можно менять, когда есть консенсус в сети. И даже если допустить, что у пользователей не будет консенсуса (то есть что не будет большинства у какого-то одного решения) – всегда будет возможность разделить биткойн на две ветви (и более), как это было ранее с хардфорками. Даже такие радикальные события, как хардфорк, приносят пользу всем – каждая версия идёт своей дорогой, а у тех, кто имел монеты до хардфорка – они остаются в обоих ветвях. Именно поэтому всегда у сообщества биткойна будет воможность имплементировать какие либо изменения в биткойне, не важно – во благо или во вред, главное, чтобы их поддерживала как можно бо́льшая часть сообщества, достаточная для того, чтобы сеть работала. Реальные примеры уже есть: когда в 2017 году у биткойна были как противники SegWit, так и сторонники – произошло несколько расколов, и на свет появилось три ветки в разные моменты времени. Но в результате большинство майнеров и владельцев узлов стали следовать той ветви, которая была максимально правильно спроектирована для жизнеспособности биткойна – ветвь с активированным Segwit и с прежним размером блока. Несогласные ушли в Bitcoin Cash и Bitcoin SV, пусть и стали называть свои ветки оригинальными – но толку от этого мало.
Итак, подведя итог, можно сказать кратко так: уязвимость биткойна перед квантовыми компьютерами зависит от способа работы с биткойн адресами. Если на адрес приходят средства, но не было траты – с такого адреса биткойны взломщику не забрать, каким бы мощным компьютером он бы не обладал. Если же тратить с биткойн адреса – то надо сразу всё и больше адрес не использовать. Но такой способ будет уязвим для очень мощных квантовых компьютеров, которые будут ограничены по времени для атаки, чтобы успеть сделать двойную трату. Также очень будут уязвимы те пользователи, которые не будут пользоваться своими узлами. Но всё будет поправимо до того времени, пока такое будущее наступит и паниковать по этому поводу не сто́ит.