Криптовалюта
August 28, 2022

Криптовалюта для хакера. Часть 1.

Серия моих постов будет посвящена криптовалютным кошелькам, а так же как правильно и грамотно её хранить. Я объясню концепцию того, как работают любые криптовалютные кошельки. Также объясню как обеспечить безопасность ваших средств при хранении и разберу концепцию блокчейна.

Сейчас очень много людей публикует различные видео и посты по типу "5 лучших кошельков для криптовалюты", "10 самых безопасных кошельков", пытаются объяснять как работает криптовалюта какими-то заумными терминами, хотя сами в ней полные нули. Сразу скажу, что это всё абсолютный бред, подобные видео и статьи вашего внимания не стоят, никто из этих людей не понимает ничего. Они не понимают как работают кошельки, у них нет в голове понимания того, как работает блокчейн, транзакции, ключи и так далее. Всё, о чём я сегодня буду писать, знает не более 0,1% людей пользующихся криптовалютами, остальные об этом даже не слышали. Поэтому читайте мой пост очень внимательно и максимально усваивайте информацию. Для начала я объясню концепцию блокчейна, потому что это действительно очень важно. Я не буду углубляться в хеши, блоки и так далее, хоть и знаю всё об этом. Я объясню вам всё простым и понятным языком.

Блокчейн это глобальная распределённая база данных. В ней все узлы соеденины вместе и они автоматом синхронизируются:

Представьте себе обычную базу данных, только теперь она распределена среди всех участников этой системы. Любая информация которая находится на одном узле, она также дублируется на все остальные узлы в этой глобальной базе данных. Разберём на примере биткоина. Любая транзакция происходящая в данной сети помещается в блокчейн биткоина и распределяется среди всех узлов. То есть, одна транзакция прошла, и информация об этом сразу же помещается на все остальные узлы в данной сети. Блокчейн биткоина это реестр транзакций, а транзакции указывают на то, откуда и куда биткоины были переведены. Это как глобальная книга бухгалтерского учёта.

Что же это за узлы? Это компьютеры обычных людей. Я также легко могу стать участницей данной сети. Чтобы это сделать мне нужно скачать специальную программу, в случае с биткоином это Bitcoin Core. На данный момент она весит более 400 гигабайт. Вы скачиваете себе её на компьютер, и у вас скачивается полная биткоин копия всего блокчейна, вся история его транзакций за всё время работы биткоина, а далее вы становитесь полноценным участником сети. Теперь на ваш узел приходят все транзакции которые происходят в пределах этой сети.

Если я делаю транзакцию со своего биткоин кошелька, то история о ней уйдёт всем другим узлам в сети, через несколько секунд о ней будут знать все узлы, а далее через какое-то время данная транзакция добавится в блокчейн и зафиксируется в базе данных с помощью майнеров:

Но сегодня мы о майнинге не будем говорить, потому что это отдельная тема. По такому принципу работает не только блокчейн биткоина, но и вообще все криптовалюты в целом. Это распределённая глобальная база данных в которой находятся транзакции которые указывают откуда и куда переходят учётные единицы в этой системе. В случае с биткоином учётной единицой является btc, в случае с эфириумом - eth, и так далее. То есть, у каждого блокчеина это отдельные системы, не нужно путать и думать, что есть какой-то один глобальный блокчеин, в котором всё находится вместе. У каждого блокчейна есть своя личная база данных и там используется отдельная и уникальная система учёта с уникальными учётными единицами и правилами системы на уровне конценсуса.

Это то, что вам нужно понимать. Блокчейн стал настолько популярен потому что он эффективен, потому что чтобы подделать транзакцию или как-то попытаться обмануть сеть, то вам придётся взломать абсолютно все устройства участников сети и подделать транзакцию абсолютно на всех данных узлах. Из-за того, что сеть глобальная и распределённая, она используется миллионами людей, а также всё это постоянно обновляется и синхронизируется между узлами. Для того, чтобы вам как-то попытаться обмануть систему, то вам придётся транзакции менять на всех узлах одновременно, а это просто невозможно когда мы имеем несколько миллионов участников. Также поверх этой системы безопасности стоит ещё одна система, ещё более надёжная, это система майнинга, которая повышает защиту на несколько уровней выше, потому что для изменения нужно будет ещё эти транзакции намайнить, но это уже отдельная тема для отдельного поста.

Перейдём к концепции криптокошельков. Она абсолютно у всех криптокошельков одинаковая. Перейду сразу к примеру. Если у вас есть криптокошелёк, неважно какой, то у вас там 100% есть какой-то публичный адрес для приёма средств:

Данным публичным адресом вы с кем-то делитесь, чтобы он вам скинул средства. Это ваш уникальный идентификатор. Это тоже самое как номер обычной банковской карты. Этот адрес позволяет определить кому пойдут деньги в блокчейне. Его можно кому угодно давать. Криптокошелёк состоит не только из адреса, но ещё и из приватного ключа:

Публичный адрес и приватный ключ связаны друг с другом. Публичный адрес используется для получения средств, а приватный ключ для их отправки. Я немного упростила, чтобы вам было более понятно, на самом деле приватный ключ используется для подписания транзакций по расходыванию средств с вашего публичного адреса. Допустим вам кто-то скинул один биткоин на ваш публичный адрес, у вас в кошельке отображается баланс 1 btc. Потом вы кому-то хотите скинуть его, вы вводите публичный адрес получателя, вводите сумму и нажимаете "отправить".

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

После этого транзакция отправляется в блокчейн, а далее распределяется по всем узлам и фиксируется в блокчейне как подтверждённая после получения одного подтверждения.

Теперь хочу рассказать вам очень важную информацию которую нужно понимать. У вас в кошельках нет биткоинов, эфиров других криптовалют. В кошельках не хранятся ваши монеты. В кошельках находятся цифровые ключи:

Криптокошельки являются всего лишь графическими интерфейсами для работы с цифровыми ключами (публичным и приватным). А цифровые ключи нужны для того, чтобы транзакции отправлять и принимать. Цифровые ключи хранятся на вашем устройстве. Когда вы скачиваете себе какой-либо кошелёк, то генерация ключей происходит в нём случайным образом, при этом сами ключи остаются у вас на устройстве.

Все монеты находятся в блокчейне в виде транзакций, то есть это записи. Абсолютно все монеты находятся именно в блокчейне как уникальная запись о том, откуда и кому сколько пришло. Когда вы кому-то отправляете средства, то вы не буквально перекидываете их с кошелька на кошелёк, вы просто в блокчейне добавляете транзакцию изменяющую информацию о том, сколько денег и на каком адресе лежит.

У вас был один биткоин, вы его кому-то перевели. Вы не буквально скинули ему один биткоин. Вы просто напросто в блокчейн запихнули запись указывающую на то, что с вашего публичного адреса (публичного ключа) было отправлен один биткоин на публичный адрес другого человека. У него в кошельке опять же не появится один биткоин, у него в кошельке будет его приватный ключ от его публичного адреса на котором находится этот один биткоин. А потом он сможет этот биткоин перевести кому-то ещё, потому что у него есть его приватный ключ, который позволяет эту транзакцию подписать по расходованию одного биткоина с его адреса.

Абсолютно любой криптокошелёк это всего лишь графический интерфейс для управления вашими ключами (публичным и приватным).

Как это всё происходит по порядку:

Я могу сейчас взять любой публичный адрес из сети блокчейн где лежит 10000 биткоинов и с помощью него попытаться сделать транзакцию, но данная транзакция не подтвердится сетью блокчейн, потому что у меня нет приватного ключа от данного публичного адреса. Думаю теперь вам стало более понятно.

Теперь давайте разберёмся какие существуют виды кошельков:

Кастодиальные кошельки это криптовалютные биржи по типу Binance, Bitfinex, боты по типу BTC banker и так далее. В общем это все те места, где вам выдают просто публичный адрес (публичный ключ), но не дают приватный и возможность самостоятельно делать транзакции. Контроль над приватными ключами остаётся не у вас, а у той компании которая выдаёт вам возможность использовать свои сервисы. Как пример биржа Binance, это кастодиальный кошелёк где у вас нет полного доступа к своим средствам, потому что у вас нет возможности самостоятельно делать транзакции без разрешения у самой биржи. То есть, вы с бинанаса, что-то куда-то переводите, и у вас всегда есть процесс одобрения. Вы запрашиваете вывод у кого-то, и он их может одобрить или отклонить в зависимости от конкретной ситуации.

И есть некастодиальные кошельки. Это самые правильные кошельки. Это как раз такое восьмое чудо света, которое появилось с криптовалютами. Это возможность абсолютно полностью контролировать свои средства без доверия третьим лицам. Ключи от некастодиальных кошельков находятся только у вас и больше никто к этим ключам доступа не имеет. В этом случае вы можете делать транзакции кому угодно, куда угодно, когда угодно, на какую угодно сумму. Никто вам этого запретить не сможет, ни у кого вам не нужно спрашивать разрешение специального на это как в случае с биржей. И в этом случае вы полностью контролируете свои средства.

Есть люди которые держат на аккаунтах бирж огромные средства и думают, что они владеют какой-то криптовалютой, а по факту у них есть всего лишь "честное слово" от владельцев биржи, что когда они запросят вывод, то им биржа это позволит сделать. Это практически тоже самое что и обычная банковская система. У вас на банковском счёте лежит какое-то количество денег, по факту эти деньги ваши, вы их заработали, положили туда, но всё равно вы доверяете кому-то, чтобы он за вас эти деньги хранил. И естественно, любая транзакция проходит не сквозь вас, не напрямую идёт от вас кому-то ещё, она проходит сквозь биржу. Тоже самое касается всех подобных сервисов и любых централизованных платформ, они называются кастодиальные. Кошельки, где у вас требуется почта для входа, номер телефона, где у вас нет доступа к вашим приватнык ключам. Поймите, если вы используете кастодиальные сервисы, то у вас нет криптовалюты. У вас просто есть обещание, что в будущем по вашему запросу вам её отдадут.

Учитывая какие-то, возможно в будущем, регуляции, могут вам ничего и не отдать, а то и вообще просто так заблокирвоать средства. Как-то могут заморозить, потребовать верификацию, документы. В общем все эти ненужные действия которые вас не интересуют. Этого всего можно спокойно избежать если использовать некастодиальные кошельки где ключи находятся только под вашим контролем, это все кошельки где у вас есть мнемоническая фраза. Хранить свои средства на кастодиальных кошельках максимально глупо и не надёжно. Ваш аккаунт могут в любое время заморозить из-за любой политической ситуации. Как например сейчас, ситуация с Украиной, на многих малоизвестных биржах заморозили аккаунты россиян и направили их средства в поддержку Украины. Любая подобная ситуация может привести к тому, что ваш аккаунт заблокируют и заберут все средства. Поэтому забываем про кастодиальные кошельки если речь идёт именно о хранении своих средств на долгую дистанцию, а не о трейдинге.

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

Теперь поговорим о мнемонической фразе:

Мнемоническая фраза это 12 слов (может быть больше), которые вам выдаются при создании какого-то кошелька. Давайте я сейчас открою Trust кошелёк и покажу вам как это выглядит. Когда я наживаю Create a new wallet (Создать новый кошелёк):

То мне выдаётся мнемоническая фраза из 12 слов:

Это формат из которого кошелёк будет создавать вам приватные ключи и публичные адреса. Я могу эту фразу взять и куда-то её в другое место импортировать, например из Trust в другой кошелёк, тот же Metamask, и там мои средства отобразятся.

Ваша фраза это как CD диск:

CD диск можно засунуть в любой привод. Приводы делаются разными компаниями, но сам диск это один единственный стандарт который подходит абсолютно ко всем приводам. Тоже самое касается и мнемонической фразы. Её можно импортировать в разные кошельки и получить там доступ к своим средствам. Эта фраза принимается везде и именно из этой фразы кошелёк начинает создавать ваши приватные и публичные ключи. У вас наверняка возник вопрос почему в пределах одного кошелька, того же Trust Wallet, может быть доступ сразу к нескольким блокчейнам (разным монетам)? Почему ваш Trust Wallet мультивалютный если у вас всего лишь одна фраза?

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

Покажу пример на практике как всё это работает:

Мы берём нашу мнемоническую фразу, импортируем её в кошелёк, а далее кошелёк из неё создаст публичные и приватные ключи. Но ведь он где-то должен записать и сохранить эти самые ключи. Естественно, создаётся файл с ключами. Если у вас кошелёк скачан на компьютере, то у вас файл с ключами будет находиться там. Поэтому безопасность ваших ключей зависит от безопасности вашего компьютера. Чем более безопасен ваш компьютер от внешних атак, тем лучше. Если у вас стоит дырявый Windows, попала куча вирусов, то вы потеряете свои средства. Покажу как происходит кража средств и на что делают упор хакеры при попытке кражи. Когда вы слышите как кто говорит, что взломали какой-то кошелёк, то это взломали не кошелёк, а взломали человека, который где-то очень небезопасно хранил либо свой файл с ключами, либо свою мнемоническую фразу.

Я открою кошелёк Electrum. Создаю новый кошелёк. Он мне генерирует новую мнемоническую фразу:

Далее он предлагает мне создать пароль:

Пароль очень важен, он ставится на файл с ключами, чтобы если ваш файл каким-то образом украдут, то им ещё нужно будет сбрутить пароль, чтобы открыть его. Теперь самое интересное. Где же хранится этот файл с ключами?

Перейдём в каталог скачанного мной кошелька Electrum и посмотрим какие файлы и каталоги там есть. Нас интересует каталог Wallets:

Перейдём в него и увидем файл:

Это именно тот файл где находятся ваши ключи от всех ваших средств. Если хакер получает доступ к вашему компьютеру, то он 100% знает по умолчанию стандартный путь к данному файлу. И если вы не удосужились поставить хороший пароль на данный файл (многие вообще об этом не задумываются), то всё что нужно сделать хакеру, этот файл украсть и потом у себя на компьютере открыть его с помощью текстового редактора.

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

Тоже самое касается и браузерных расширений. Тот же самый Metamask:

У всех подобных расширений, на компьютере, также находится каталог в котором находятся ваши приватные ключи. Поэтому запомните ещё раз, безопасность ваших средств зависит от того, насколько безопасно хранится файл с вашими ключами. А это зависит от безопасности вашего компьютера, операционной системы, от того насколько безопасно вы используете компьютер и интернет вообще в целом.

Это огромная проблема, потому что очень много людей имеют дырявый Windows. Был такой случай, когда моему знакомому из РФ при покупке компьютера работники поставили пиратский Windows, который был уже заранее с бэкдором, он не о чём не подозревал, пока у него криптовалюта с кошелька не пропала, причём на очень большую сумму.

Про телефоны тоже самое. Если вы создаёте кошелёк на телефоне, то вам также выдаётся мнемоническая фраза и создаётся файл с ключами на вашем устройстве.

Если потенциально к телефону кто-то получит доступ, то он сможет найти этот файл с ключами. В случае же с мнемонической фразой, то это бэкап. Если вы потеряете свой телефон, сгорит компьютер, то всё что вам нужно сделать это скачать кошелёк на ваше новое устройство, ввести туда вашу мнемоническую фразу и кошелёк создаст вам теже самые ключи которые он создавал изначально из вашей мнемонической фразы. Фразу я советую записывать на бумагу. Лично я это сделала так, выписала 10 слов, а 2 слова запомнила наизусть и только я знаю в каком месте они стоят, а бумажку надёжно спрятала. Фразу нужно всегда записывать на бумаге, потому что это самый безопасный способ. Ни в коем случае на записывайте её в заметках вк, облаке телеграма, яндекс диске, txt файлах, забудьте про это, это повысит шансы того что вы потеряете свои средства, ведь доступ к этому имеют третьи лица.

Мы можем поделить основные кошельки на три вида:

Десктопный кошелёк это ваш кошелёк на компьютере, мобильный кошелёк соответственно на телефоне. Это горячие кошельки. И ещё существуют аппаратные кошельки:

https://www.ledger.com

https://trezor.io

https://safepal.io

На самом деле их полно, выделила лишь основные.

Они безопаснее чем десктопные и мобильные. Аппаратный кошелёк изолирует ваши ключи от опасной среды интернета. Из-за того что это отдельная маленькая флешка, то ваши приватные ключи почти никогда не соприкосаются с ним, вы вставляете её в компьютер только тогда как вам нужно отправить кому-то средства. Они являются холодными кошельками.

Но есть ещё аппаратные кошельки подобного вида:

https://foundationdevices.com

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

С этим я думаю разобрались.

Вернусь к векторам атак. Их всего лишь две:

Многие плачут, что у кого-то что-то там хакнули, плохой кошелёк, украли средства. Но кошелёк тут не при чём, либо у человека украли мнемоническую фразу и получили доступ к ней, либо украли приватные ключи.

Чтобы такого не случилось вам нужно всего лишь сделать две вещи. Это организовать безопасную среду, хорошо защитить свой компьютер, телефон или аппаратный кошелёк и надёжно хранить свою мнемоническую фразу. Всё, вам больше делать ничего не нужно. Ещё конечно есть вариант, что вы случайно скачали себе клиппер (это такой вирус, который подменяет адрес при отправке, например вы вставили один адрес на который нужно отправить, а деньги отправились на адрес хакера). Поэтому не нужно качать что попало из интернета.

Как вообще могут узнать вашу мнемоническую фразу? Чаще всего это фишинговые сайты. Вы по ошибке переходите не на официальный сайт, а левый, либо скачивайте какой-то кошелёк опять же с левого сайта, вводите там свою фразу и её узнают хакеры. Подобным способом украли 99% криптовалюты, из всей украденной, за всю её историю существования. Остальной 1% приходится уже на клипперы. Я не брала в этот расчёт когда человек сам кому-то переводил деньги добровольно, тут конечно расклад был бы уже совершенно другой 50% на 50% примерно.

Тоже самое касается и атак с помощью социальной инженерии. Если вы заходите куда-то что-то узнать и спросить, то вам почти всегда в личку напишет какой-то непонятный человек который скажет: "Давай я тебе помогу", а далее попытается у вас выманить вашу мнемоническую фразу под различными предлогами. Если вы не идиот, то вы естественно никому фразу свою не дадите, нигде её не введёте и никому не ответите.

Вам нужно сделать две вещи. Обезопасить свою операционную систему где вы будете работать, на компьютере идеальная система это Linux, записать свою фразу на бумажке, исключив оттуда 2 слова и запомнив их, и больше нигде её не вводить кроме кошельков которые вам нужны. Если вы так сделаете, то я гарантирую что ваши средства будут в безопасности 100%. Ни разу, за все годы что я пользуюсь криптовалютами, со мной ничего не случилось, никто у меня ничего не украл, потому что я соблюдала данные правила безопасности. Я никуда не захожу, я не скачиваю никакие левые программы.

Теперь наверняка у вас возникает вопрос, как вы можете доверять различным кошелькам которые вам мнемоническую фразу выдают. Как же мы может узнать, что та фраза которую нам выдают заранее не была создана разработчиками этого кошелька и куда-то им отсылается? Есть такое свойство у известных кошельков как открытый исходный код. Эти коды уже были разобраны тысячами независимых экспертов и ничего плохого в них не обнаружилось.

Ещё хотелось бы добавить немного про аппаратные кошельки. У них также открытый исходный код. Но на них есть также потенциальные векторы атаки. Например какой-то недобросовестный работник на заводе когда за ним никто не смотрит может встроить туда карту памяти с бэкдором, даже если кошелёк от официального производителя. Если вы покупаете его не от официального производителя, а где-нибудь на авито, то тут вообще всё просто, человек покупает официальный кошелёк, модифицирует его встраивая вирус, а далее перепродаёт, а ваша мнемоническая фраза при вводе уходит ему.

И ещё очень важная тема. Сейчас я о ней расскажу:

Любой кошелёк, который не является полноценным узлом, то есть не хранит у себя полную копию блокчейна, не анонимен. Если вы хотите стать полноценным узлом сети, то вам нужно пользоваться https://bitcoin.org (в РФ заблокирован, заходите с VPN). Всё, что я сейчас вам описывала, любые кошельки по типу Trust Wallet, Electrum, Metamask и другие, где вы не скачиваете огромную базу данных транзакций в 400 гб и не становитесь полноценным узлом, то это называется лёгкими кошельками. Основная их проблема в том, что напрямую транзакцию отправить в сеть вы не можете. Вы отправляете транзакцию которая запускается узлами других людей. То есть, вы кому-то сначало транзакцию на узел отправляете, и потом этот узел, из-за того что он является полноценным участником сети, уже вашу транзакцию отправляет в глобальную сеть. Есть лишний шаг. Это касается всех лёгких кошельков где не скачивается полная версия блокчейна. Это никак не влияет на безопасность ваших средств, но влияет на анонимность. Потому что узел которому вы транзакцию отправляете, знает то, что транзакцию отправили вы, он знает ваш IP адрес, он может все ваши транзакции сопоставить за всё время пользования данным узлом и попробовать узнать вашу личность, это очень плохо для анонимности. Поэтому любые лёгкие кошельки имеют уязвимость приватности, то есть у вас всегда есть узел через который вы отправляете свои транзакции. Эта проблема решается для биткоина очень просто, вам нужно запустить Bitcoin Core у себя на компьютере, а далее можно спокойно пользоваться лёгкими кошельками.

На них вы можете подключиться к своему личному узлу на компьютере, чтобы ваша транзакция проходила через него:

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