Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Привет, VC.ru! Я Александр Комаров, руководитель проекта мобильного приложения MEW wallet. Мы с вами уже общались в конце лета, когда я поделился историей создания и особенностями нашего приложения. Если кто-то пропустил, напомню, что MEW wallet — это, фактически, приложение «по умолчанию» для работы с криптовалютой Эфириум (она же Эфир, Ethereum, ETH). Наша аудитория — около 3,5 млн человек по всему миру. В этом посте я хочу подробно рассказать о безопасности нашего «детища». Ведь криптовалюты — тема хайповая. И связанная с деньгами. А значит, мошенников вокруг крутится немало.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Конечно, в первую очередь важно иметь собственную голову на плечах, не высылать кому попало скриншоты своих паролей и деньги в ответ на предложения «пришлите нам 10 монет, а мы вам 110». (В первом посте я как раз упоминал грустную историю о том, как житель Воронежа с доходом в 28 тысяч занял денег у мамы, купил Эфира почти на 300к и отправил мошенникам.) Однако если голова на плечах у вас есть и обращаться с криптой вы умеете, вам необходим надежный инструмент. Такой, как приложение MEW wallet.

Люди хранят на своих криптокошельках огромные деньги. В том числе и на нашем. Само собой, мы не следим за пользователями и понятия не имеем, у кого сколько на счету, и кто какие переводы делает (даже если бы хотели — нет доступа). Но исходя из публичных данных в блокчейне, мы видим, что некоторые наши пользователи (кто именно — нам неизвестно) могут, например, вложить 100-500 монет, используя функцию Стейкинга, это немалые деньги (40-160 МИЛЛИОНОВ рублей). Страшно подумать, что кто-то может хранить такие средства в приложении на смартфоне. Это большая ответственность для нас. Мы делаем все, чтобы никого не подвести. И никого не подводили. И даже не собираемся. В общем, безопасность — это наш пунктик. Как именно все реализуется? Рассказываю.

«Не твои ключи — не твои деньги»

В первом посте я отмечал главную особенность MEW wallet — мы храним ваши деньги локально. То есть программа и сам смартфон выступают в роли сейфа. Все ключи хранятся на вашем устройстве и нигде больше. Ни у кого нет доступа к вашим ключам — даже у нас, разработчиков приложения. Нет никакой возможности восстановления ключей/паролей — ни email'ами, ни SMS. Любые «третьи стороны» в финансовой системе, даже разработчики финансового приложения, — это лишний риск утечек информации. А смысл в том, чтобы вы сами контролировали ваши счета и ваши средства. И никто больше.

При создании резервной копии кошелька вы получаете резервную фразу из 24 слов — только с ее помощью можно восстановить доступ. Кодовую фразу ни в коем случае нельзя сохранять в виде скриншота на телефоне. Лучший вариант — это записать ее офлайн, в идеале заламинировать и спрятать там, где ее даже если и найдут, то смысла не поймут. Можно стихи придумать, вписав в них нужные слова в особом порядке. Можно и посильнее заморочиться. Например, мне нравятся стальные капсулы Cryptosteel, на которые можно нанизать стальные же буквы фразы. Это сохранит вашу кодовую фразу при совершенно апокалиптических сценариях: даже если будет пожар или дом рухнет. Ее можно куда-то спрятать, замуровать в стену, например, и тогда вообще никто не доберется.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Добавлю, что активно рекламируются криптобиржи, на которых можно купить разные монеты с низкими комиссиями (Coinbase, Binance и так далее). Но особенность в том, что все ваши монеты они хранят на своих кошельках, лишь давая вам доступ к ним. Но если вдруг с биржей что-то случится (взломают, признают незаконной, владельцы решат сбежать с деньгами и т. д.), то свои средства вы не получите. Тогда как наше приложение по надежности уступает разве что аппаратным кошелькам. Особенность крипты как раз в том, что каждый владелец монет владеет (ну как минимум — должен владеть) своими деньгами. В этом отличие блокчейн-финансов от традиционной финансовой системы и банков, когда вашими средствами фактически пользуются другие люди. Вроде бы с вашего разрешения, но деталей вы не знаете и не узнаете.

Как происходит шифрование?

Опишу технологию превращения телефона в сейф и постараюсь, чтобы получилось не слишком сложно. На современных смартфонах есть специальный чип, задача которого — генерировать ключи шифрования. Важно отметить, что речь не про крипто-ключи для крипто-кошельков, а обычные ключи шифрования для каких угодно данных. Смартфон проектируется таким образом, что этот чип максимально отделен от других узлов: для остальной системы это «черный ящик». Говоришь ему: создай ключи, потом кладешь туда строку с данными и на выходе получаешь расшифрованную или зашифрованную строку. Как ее расшифровали, узнать не получится, даже сам производитель устройства не имеет доступа к чипу-шифровальщику.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Может показаться, что самое логичное — хранить крипто-ключи от вашего кошелька в этом черном ящике. Действительно — было бы удобно. Но есть проблема: мы не знаем, что там внутри, а следовательно, нет никакой возможности сделать резервную копию, то есть выдать пользователю кодовую фразу для восстановления кошелька в случае необходимости. Если крипто-ключи генерировать на этом чипе, то при замене или поломке телефона человек потеряет все свои средства, естественно — это не вариант. (И еще небольшой нюанс — на данный момент такие чипы, за редкими исключениями, не умеют генерить ключи крипто-кошельков.) Поэтому делается надстройка: генерятся крипто-ключи, которые можно записать в виде кодовой фразы, затем «скармливаются» черному ящику и зашифровываются еще раз этим самым «черным ящиком».

Есть специальные открытые стандарты генерации кошельков, разработанные крипто-сообществом — BIP32, BIP39. Мы создаем ключи на основе этих стандартов, поэтому, даже если нас вдруг похитят пришельцы, ваши ключи будут работать в любом другом кошельке, поддерживающем эти же стандарты, а это на данный момент 99,99% кошельков.

Зашифрованные специальным чипом смартфона крипто-ключи помещаются в специальное безопасное хранилище ключей. К примеру, на iOS оно называется Local Keychain. Этот Keychain еще на всякий случай на системном уровне их перешифровывает. Вот так и получается тройное шифрование. Есть отличия в том, как это реализовано на Android и на iOS, но общая суть примерно такая.

К слову, нередко нас спрашивают, чем безопаснее пользоваться — смартфоном на Android или iPhone. Надо понимать, что Android традиционно более фрагментирован и более открыт. В нем больше потенциальных «поверхностей» и векторов для атаки. Так что, если вы НЕ опытный пользователь, с айфоном будет надежнее. Там «шаг влево, шаг вправо — нельзя», практически невозможно совершить небезопасное действие, например, скачать приложение в обход AppStore. С другой стороны, Apple в принципе мало что сообщает о безопасности и, вероятно, засекречивает большую часть данных об утечках, так что объективно сравнивать сложно.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Никого лишнего

Еще один важный момент — доступ к приложению на смартфоне. Об этом даже отдельно упоминать нет смысла, так как вещь очевидная, но в любом случае MEW wallet просит пароль для доступа к приложению, даже если смартфон разблокирован. Само собой, код доступа не должен быть таким же, как код блокировки устройства. Как вариант — Face ID, сканирование отпечатка. При каждой транзакции также требуется идентификация пользователя. У нас есть защита от многократного ввода пин-кода: если его вводят неправильно несколько раз, наступает пауза. При дальнейших неправильных попытках паузы становятся все длиннее, поэтому перебрать коды вряд ли получится. Но все же не давайте разблокированный телефон малознакомым людям, мало ли что.

И еще одно — как я уже упоминал, у разработчиков приложения нет доступа к счетам клиентов. Совершенно. Никакого. Мы не знаем, у кого сколько денег, кто что купил, кто сколько куда и кому перевел и так далее. Как при этом приложение работает и транзакции ходят? Магия! :-) MEW wallet – абсолютно автономная программа. Она иногда общается с сервером, чтобы, например, забрать с него данные о ценах и балансах токенов, но эти данные и так публичные — они берутся из блокчейна, к которому доступ есть у всех.

Перевод средств выполняется следующим образом: пользователь инициирует перевод в приложении, оно создает специально оформленную транзакцию, подписывает ее ключами, которые хранятся локально на устройстве, и отправляет ее напрямую в блокчейн. Хотя если быть точным — не в блокчейн вообще, а в ноду (из которых и состоит сеть Эфириум), которая транслирует эту транзакцию в другие ноды. Транзакция постепенно попадает в общую очередь, и потом ее включают в блок или, как принято говорить, «майнят».

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Все сведения, которые мы получаем от клиентских приложений, — это предельно простая статистика, которую мы написали сами, чтобы быть уверенными, что никаких личных данных не собиралось. Для простейшей аналитики мы на многих кнопках повесили «счетчики» — сколько раз ту или иную кнопку нажимают. И вот у нас есть информация по каждой такой отдельной кнопке — сколько раз в час ее нажимают. Но мы даже не можем соединить эти нажатия в сценарий. У нас нет никакой возможности проследить, какие кнопки нажимал тот или иной пользователь, когда он пользовался приложением, только общие данные за последний час по всем юзерам.

В блокчейне часть данных общедоступна. Например, о том, что кто-то «поставил» Эфир (опция Стейкинга — аналог вкладов нового поколения) или произвел обмен. Мы можем видеть такие транзакции, как и кто угодно другой. Но кто это был, что он до этого делал, мы не знаем.

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

Как я упоминал в первом посте, время от времени к нам обращаются американские спецслужбы (так как компания зарегистрирована в США). Мы готовы предоставлять данные, но, как понимаете, никакой конкретной информации у нас нет — ничего не отслеживаем, статистику не собираем.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Был случай, когда взломали один DeFi-протокол (протокол децентрализованных финансов в сети Ethereum). Служба безопасности протокола выявила, что транзакция одного из взломщиков проходила через приложение MEW wallet. Впоследствии это оказалось не так, она просто попала на ту же ноду, на которую мы отправляем транзакции наших пользователей, откуда они попадают в блокчейн. Эта нода обрабатывает много других транзакций, не только наши. В общем, не удалось никак им помочь.

Насекомых нет

Тройное шифрование и интересные рассказы про защиту — это хорошо. Но все это может оказаться пустыми словами, если кто-то найдет лазейку (баг, жучок) и взломает программу. С MEW wallet такого не происходило. И мы делаем все, чтобы и не произошло. Все наши программисты имеют опыт в финансовой сфере и знают, как писать защищенный код.

В команде MEW wallet проводятся и юнит-тесты, и автоматизированное тестирование (компьютер жмет кнопки на реальных девайсах и в симуляторе). Работает опытная команда QA, имеется регламент регрессионного тестирования перед каждым релизом. Помимо этого, мы всегда выпускаем апдейты постепенно и смотрим, нет ли проблем, прежде чем сделать новую версию доступной всем пользователям.

У нас есть постоянный сервис, который отслеживает клоны приложения, попытки фишинга и так далее. Сотрудники пишут жалобы куда надо, чтобы все это оперативно удалялось, ежедневно что-то убирают.

Еще у нас есть программа вознаграждения за найденные баги. Если вы что-то нашли — сообщаете нам. Если проблема подтвердится — получите вознаграждение до $2 000 (подробности на сайте и в настройках MEW wallet). Мы также сотрудничаем с Hacker One — это специальный сервис, где хакеры и исследователи безопасности пробуют на прочность разные продукты. Если что-то находится, мы исправляем, и после этого уязвимость (уже устраненная) публикуется на сайте Hacker One в целях прозрачности.

А еще MEW wallet — приложение с открытым кодом. Код доступен на ГитХабе, и любой, кто разбирается в теме, может сам провести независимый аудит. Это прямое доказательство того, что у нас нет никаких «троянов» и «бэкдоров». Каждый желающий может разобрать MEW wallet по винтикам и убедиться, что мы не получаем никаких данных о пользователях программы.

Никаких серьезных багов, из-за которых наши пользователи, например, теряли бы средства, в истории MEW wallet не бывало. Единственное, о чем в рамках «прозрачности» могу рассказать, — о баге, который коснулся наших самых-самых первых пользователей. Это были тестеры, которые пользовались бета-версией MEW wallet до официального запуска. Так вот, проблема была в том, что у этих пользователей неправильно генерировались ключи из кодовой фразы. Если сильно упростить, фраза «кошка, собака, обезьяна, попугай» после определенной обработки должна давать ключ «1234», а она давала ключ, скажем, «5678».

В официальном релизе мы исправили эту проблему, но появилась другая: если пользователь бета-версии переходил на официальную версию, то при попытке восстановления кошелька получал не «свои» ключи («5678»), а «правильные» — «1234». Соответственно это были пустые счета без средств. Таких пользователей была пара десятков человек, так что мы связались с каждым и для них выпустили специальную версию приложения, которая позволила им получить доступ к своим «неправильным» ключам и перевести средства на другой счет. Если бы такой баг был в «боевой» версии, было бы очень плохо, но для этого и придумали бета-тесты. Мы вообще всё очень серьезно тестируем перед тем, как выкладывать в общий доступ. Когда речь идет о деньгах, лучше быть консерватором.

У нас в MEW wallet серьезный уровень кодинга, серьезный уровень защиты и не менее серьезный уровень открытости по отношению к крипто-сообществу. Считаю, что именно поэтому MEW wallet — в числе лидеров среди приложений для работы с Эфиром в мире и одно из самых популярных для работы с криптой в принципе. Нам доверяют более 3,5 миллионов пользователей ежемесячно — по всему миру.

И снова про человеческий фактор

Приложение MEW wallet отличается высочайшим уровнем безопасности. Так что, если нам в поддержку пишут что-то типа «Вас взломали и украли мои деньги!!!!!!», то мы начинаем выяснять обстоятельства, и оказывается, что у юзера каким-то образом выманили кодовую фразу.

А есть и такие уникумы, которые кодовую фразу вообще не записывают (несмотря на то, что мы напоминаем об этом на каждом шагу). Чаще всего они хотят просто попробовать MEW wallet, а потом втягиваются и покупают Эфир. А после этого по каким-то причинам переустанавливают приложение или меняют смартфон, их ключи стираются — а фразы для восстановления нет. И мы, как вы понимаете, ничем не можем помочь. Но все же нужно отметить, что среди общей массы наших пользователей (а это 3,5 млн человек ежемесячно) таких — единицы, то есть ничтожные доли процента.

Ну а в целом чаще всего мошенника выманивают приватный ключ. Его легко спутать с адресом кошелька (это такого же вида строка из абракадабры), поэтому мы в приложении не позволяем пользователю без труда получить приватный ключ в таком виде, в котором его легко можно было бы передать мошенникам. Вместо этого есть кодовая фраза из 24 слов, из которой генерируются приватные ключи для всех счетов юзера. Спутать такую фразу и адрес счета, конечно, невозможно. Поэтому фишерам приходится стараться сильнее, чтобы ее выманить. Но все равно иногда некоторые несчастные по каким-то причинам делятся кодовой фразой с мошенниками. Не могу сказать, как часто это происходит. Да и, сами понимаете, далеко не каждый будет рассказывать о том, как его обманули. Порой люди не понимают, что их обокрали, и пишут нам жалобы, что с их счетов пропали средства. Обычно после долгих расспросов, выясняется, что они сами кому-то давали свою кодовую фразу.

Отмечу, что каждая жалоба тщательно проверяется. Да, как правило, пользователи необдуманно ведутся на уловки мошенников и выдают им свои «явки-пароли». Но мы не имеем права игнорировать даже малейшую вероятность того, что нас взломали. Так что по каждому случаю проводится серьезное расследование с целью убедиться, что наше приложение на 100% надежное.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Ну а в целом, как я уже говорил в первом посте, если какому-то одаренному хакеру удастся взломать штатную защиту iOS или Android (про тройное шифрование MEW wallet упоминалось выше), вряд ли он будет воровать жалкие 0,2 Эфира с кошельков случайных пользователей нашей программы. Ведь он сможет получить доступ к абсолютно любому приложению! Или, как вариант, сможет пойти в Google или Apple и получить до миллиона долларов по программе поиска багов.

Важно — остерегайтесь подделок!

Пожалуй, самая серьезная проблема безопасности (относится к любому финансовому приложению) — фишинговые версии программ. В Google Play, а также в других популярных каталогах программ для Android, регулярно появляются клоны MEW wallet. Пользователь скачивает приложение с тем же названием, той же иконкой, тем же описанием, что и у официального приложения. И, конечно же, первое, что надо сделать, — ввести кодовую фразу, чтобы «активировать» кошелек. Ну и всё — средства со счетов начинают постепенно пропадать.

Особенно большая проблема с Huawei App Gallery — аж за головы хватаемся! Как известно, на смартфонах Huawei, выпущенных в течение последнего года, нет сервисов и магазина приложений Google. Но есть App Gallery, который в Huawei очень стараются сделать аналогом. Для этого каталога у нас пока нет официального приложения, так что кто-то подсуетился и создал клон. Увы, Huawei очень медленно реагирует на такого рода проблемы, наша команда пытается убрать это приложение уже долгое время, а воз и ныне там. Причем у фишинговой программы больше 1000 загрузок!

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Описанная проблема есть у всех крипто-кошельков, которые представлены в версии для Android либо в виде расширения для Chrome и других браузеров. Google, Samsung, Huawei – все эти огромные компании медленно реагируют на такого рода проблемы. А вот в App Store таких проблем практически не бывает.

Что делать пользователю? Устанавливайте MEW wallet только из официального каталога Google Play Store или Apple App Store, не пользуйтесь рутованными смартфонами (где получен root-доступ к файловой системе), айфонами с джейлбрейком. При установке проверяйте название разработчика — должно быть указано MyEtherWallet, название нашей головной компании.

Наше приложение для криптовалюты превращает ваш смартфон в сейф. Но опасайтесь подделок!

Заключение

Команда MEW wallet работает для того, чтобы у вас была возможность безопасно и надежно покупать и хранить криптовалюту Эфир. С самого начала я делал упор на то, чтобы наша программа была «дружелюбной» и понятной для новичков, то есть тех, кто про крипту почти ничего не знает, но хочет попробовать. Так как речь идет про деньги, мы делаем большой упор на безопасность, о чем сегодня рассказал детально. Ну и еще один «кит», на котором стоим, — поддержка всех актуальных функций и фишек Эфириума. За последнее время в приложении появилось много нового. В частности, новые опции Стейкинга, партнерство с сетями SKALE (там тоже команда русско-украинско-американская, как и у нас) и Lido. SKALE дает возможность децентрализованным приложениям запускаться на своем собственном персональном блокчейне, быстром и недорогом. При этом все блокчейны взаимосвязаны — можно переносить средства с одного на другой. Мы первыми на мобильном устройстве реализовали ставки токенов SKL — механизм, благодаря которому сети SKALE создаются и защищаются. Текущая доходность — в районе 11% годовых.

Lido — это проект, который позволяет делать ставки в Эфириуме 2.0. Особенность его в том, что поставленный Эфир остается ликвидным – доступным для других операций. В традиционном стейкинге в Эфириуме 2.0 нужно «залочить» минимум 32 Эфира ($150 000), на которые будут начисляться вознаграждения. Снять поставленный Эфир невозможно, потому что сеть еще настолько молода, что в ней пока нет функции перевода средств. В стейкинге через Lido Эфир переводится в смарт-контракт, а далее уже ставится в Эфириуме 2.0. Взамен пользователь поучает токен stETH, который в любой момент можно поменять обратно на Эфир на децентрализованных биржах. При этом токен stETH раз в сутки увеличивает свой баланс (причем прямо в кошельке), что отражает начисление вознаграждения за поставленный Эфир.

Если у кого-то есть вопросы, пишите в комментарии, всем отвечу! Спасибо за внимание.

2020
7 комментариев

Вместо длинной и нудной статьи объясню на простом примере.

Есть всем известная технология Windows Bitlocker, шифрующая диск. Не вдаваясь в подробности, одним из факторов шифрования является чип TPA (https://ru.wikipedia.org/wiki/Trusted_Platform_Module), устанавливаемый на плате ноутбука. То есть, если вы просто вынете из ноута диск и попытаетесь его прочитать с другого компьютера, то диск не прочтётся из-за подмены или отсутствия TPA.

Таким образом, если чип TPA придёт в негодность (или если обезумевшая голодная толпа ворвётся в ваши миллиардерские покои и начёт всё крушить), то прощай Ваш кошелёк. ПОЭТОМУ все пользователи Bitlocker распечатывают на бумажке специальный код восстановления, и хранят его в ящике стола или в банковской ячейке.

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

2
Ответить

Комментарий недоступен

Ответить

Ложная дихотомия.

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

Самый лучший пароль не будет работать если его прикрепить на бумажке к монитору.

Фактически вы описываете методику защиты а потом говорите - но пользователи все равно тупые и кладут пароль в общедоступное место.

Так против такого логического ‘лома’ вообще нет приема.
Как бы, не надо наверное бумажку класть в ящик стола?
Банковская ячейка, кстати, неплохая альтернатива.

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

Ответить

Комментарий недоступен

Ответить