Введение в технологию Блокчейн - стр. 67
Кроме того, объединив это с иерархическим кошельком, мы можем генерировать последовательность адресов и приватных ключей из кодовой фразы, что позволяет создать полноценный кошелек.
Тем не менее, злоумышленник также может получить все приватные ключи в мозговом кошельке, если он сможет угадать кодовую фразу.
Как и всегда в компьютерной безопасности, мы должны предположить, что злоумышленник знает процедуру, которую вы использовали для генерации ключей, и только ваша кодовая фраза обеспечивает безопасность.
Таким образом, злоумышленник может использовать различные фразы и генерировать адреса, проверяя их; если он найдет какие-либо неизрасходованные транзакции в цепочке блоков по любому из этих адресов, он может немедленно потратить их для себя.
Злоумышленник может не знать, кому принадлежали монеты, и эта атака не требует взлома конкретной машины.
Угадывание кодовых фраз мозговых кошельков не направлено на конкретных пользователей, и не оставляет следов.
Кроме того, в отличие от задачи угадывания пароля электронной почты, которая может быть ограничена вашим почтовым сервером, с мозговыми кошельками, злоумышленник может загрузить список адресов с неиспользованными монетами и пробовать неограниченное число потенциальных фраз.
Обратите внимание, что здесь злоумышленнику не нужно знать, какие адреса соответствуют мозговым кошелькам.
Это называется автономным взломом пароля.
Очень сложно придумать кодовую фразу, которую легко запомнить, но которую сложно угадать.
Одним из надежных способов генерации кодовой фразы является автоматическая процедура выбора случайного 80-битного числа и конвертация этого числа в кодовую фразу так, что разные числа приводят к разным фразам.
На практике также разумно использовать преднамеренно медленную функцию для получения приватного ключа из кодовой фразы (что называется растяжкой ключей), чтобы гарантировать, что атакующему потребуется как можно больше времени для подбора фраз.
Базовый подход состоит в том, чтобы взять быструю криптографическую хеш-функцию, такую как SHA-256, и вычислить, например, 2 в 20 степени ее итераций, умножая вычислительную нагрузку атакующего на коэффициент 2 в 20 степени.
Конечно, если такое вычисление будет слишком медленным, оно начнет раздражать самого пользователя, поскольку его устройство должно быть способно вычислить эту функцию в любое время, когда пользователь захочет потратить монеты из своего мозгового кошелька.
Если кодовая фраза кошелька станет недоступной – скажем, вы ее забыли, не записали и не можете угадать – тогда монеты потеряны навсегда.