Как Electrum Wallet защищает ваши ключи?

Опасность использования любых криптовалютных кошельков, обращающихся к внешним серверам для проведения транзакций, давно стала очевидной. Тем не менее кошелек Electrum остается популярным и считается довольно безопасным решением. Закрытые ключи пользователей этого кошелька хранятся локально и никогда не передаются на внешние сервера. Но как это работает?

Как Electrum Wallet защищает ваши ключи?

“Толстые” и “тонкие” кошельки

Electrum относится к так называемым “тонким” кошелькам, которые не хранят на компьютере пользователя полную версию блокчейна биткоина (более 156 гигабайт на данный момент). Вместо этого они загружают только необходимые для работы данные и периодически синхронизируется с серверами, содержащими информацию о состоянии блокчейна.

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

Seed-фраза Electrum

Закрытый мастер-ключ, сгенерированный кошельком Electrum, кодируется с помощью seed-фразы из 12 слов. Эту фразу кошелек просит владельца сохранить где-нибудь в надежном месте (например, на бумажном листочке где-нибудь в сейфе). Она позволит в любой момент и на любом устройстве получить доступ к кошельку.

В дальнейшем Electrum работает как типичный HD-кошелек (иерархически детерминированный): создает дерево закрытых и открытых ключей, причем открытые ключи могут создаваться без доступа к открытым.

Как подписываются транзакции?

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

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

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

Почему приватные ключи не попадают на сервер?

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

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

Создание неподписанных транзакций в Electrum

Electrum позволяет создать “холодный” кошелек на компьютере, не подключенном к интернету, перенести публичный мастер-ключ на другую машину и с его помощью создать так называемый watching-only кошелек. Он может только следить за историей транзакций - потратить деньги, используя только этот кошелек, не получится. Watching-only кошелек формирует транзакцию, но не может ее подписать. Файл транзакции нужно перенести на компьютер с приватным ключом, подписать, вернуть на подключенную к интернету машину и отправить.

Данный метод не только гарантирует, что приватный ключ не попадет на сервер, но и полностью исключает кражу ключа при атаке на подключенный к интернету компьютер.

Шифрование кошелька и ключей

В качестве дополнительной меры безопасности seed-фраза, приватные ключи и сам кошелек Electrum зашифрованы.

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

Приватный ключ постоянно зашифрован с использованием функции AES-256-CBC и расшифровывается только на короткий период для подписания транзакции. Это сокращает до минимума время хранения ключа в памяти компьютера в незашифрованном виде.

Риски синхронизации с сервером

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

Впрочем, в случае Electrum’a ключи серверам не достаются, а опасность атаки снижается использованием вышеупомянутого “холодного” кошелька. Кроме того, все данные от серверов проверяются с использованием процедуры Simple Payment Verification, предложенной еще при создании биткоина. Серверы, в качестве доказательства включения транзакции в блокчейн, предоставляют часть дерева Меркла. Благодаря этому верификация транзакций работает надежно во всех случаях, кроме успешной атаки 51%, которая биткоину уже не слишком угрожает.

В середине февраля была опубликована альфа-версия Electrum Personal Server, который позволяет использовать весь дополнительный функционал Electrum (восстановление из seed-фразы, мультиподписи, подпись транзакций вне сети и т. д.). При этом теряется возможность мгновенного запуска кошелька, но радикально повышается уровень безопасности кошелька.

Категория: 
Безопасность
Технология: 
Голосов еще нет
760 / 0
Аватар пользователя Анонимус
Публикацию добавил: Анонимус
Дата публикации: чт, 03/01/2018 - 10:21

Что еще почитать:

Добавить комментарий