Khôi phục ví Electrum

Hướng dẫn đầy đủ về cách khôi phục ví Electrum

Ví Bitcoin Electrum trên máy tính xách tay trong quá trình khôi phục

Electrum đã tồn tại từ tháng 11 năm 2011 — điều này khiến nó trở nên cổ xưa theo tiêu chuẩn tiền điện tử. Tuổi thọ cao đó vừa là một lợi thế vừa là một bất lợi cho việc khôi phục. Lợi thế là vì định dạng ví được ghi chép đầy đủ và mã nguồn là Python mã nguồn mở mà bạn thực sự có thể đọc được. Bất lợi là vì mười lăm năm thay đổi phiên bản có nghĩa là tệp ví nằm trên ổ cứng của ai đó có thể ở bất kỳ định dạng nào trong số hàng tá định dạng khác nhau, mỗi định dạng có sơ đồ mã hóa, đường dẫn dẫn xuất và loại hạt giống khác nhau. Tôi đã khôi phục các ví Electrum có từ năm 2012, và mỗi thời kỳ đều có những vấn đề khó khăn riêng.

Hướng dẫn này bao gồm toàn bộ khía cạnh kỹ thuật của việc khôi phục ví Electrum – từ cấu trúc bên trong của các tệp ví, thông qua các cơ chế mã hóa trên các phiên bản khác nhau, cho đến cơn ác mộng về đường dẫn dẫn xuất khiến câu hỏi “số dư của tôi hiển thị bằng không” trở thành yêu cầu hỗ trợ phổ biến nhất trong Bitcoin.

Cách Electrum lưu trữ chìa khóa của bạn

Electrum lưu trữ ví của bạn dưới dạng một tệp duy nhất, độc lập. Theo mặc định, nó được gọi là default_wallet (không có phần mở rộng), và nó nằm ở một vị trí có thể dự đoán được dựa trên hệ điều hành của bạn:

Windows: C:\Users\<USER>\AppData\Roaming\Electrum\wallets\

macOS: ~/Library/Application Support/Electrum/wallets/

Linux: ~/.electrum/wallets/

Tệp ví được định dạng JSON – dễ đọc, có cấu trúc và sạch sẽ đến bất ngờ. Mở một ví chưa mã hóa trong trình soạn thảo văn bản và bạn sẽ thấy toàn bộ mô hình dữ liệu: kho khóa, địa chỉ, lịch sử giao dịch, nhãn, danh bạ, mọi thứ. keystore Đối tượng là cốt lõi của quá trình phục hồi.

Cái seed trường đó – nếu ví không được mã hóa hoặc bạn có thể giải mã nó, bạn đã có mọi thứ mình cần. xprv (Khóa riêng mở rộng) có thể suy ra mọi khóa con mà ví đã từng sử dụng. seed_type Cho biết phương pháp suy luận nào đã được sử dụng, và derivation Hiển thị đường dẫn gốc.

Đối với các ví điện tử đời cũ (trước phiên bản 2.0), cấu trúc sẽ khác. Thay vì... bip32bạn sẽ thấy type: "old" với mpk Các trường (khóa công khai chính). Chúng sử dụng phương pháp tạo khóa độc quyền ban đầu của Electrum, có trước cả BIP32 và BIP39. Chi tiết hơn sẽ được trình bày bên dưới.

Các tệp ví chứa khóa riêng tư được nhập khẩu (không được tạo từ seed) sử dụng type: "imported" trong kho khóa, và các khóa đó được lưu trữ trực tiếp. Những ví này không thể khôi phục từ cụm từ hạt giống – Tệp ví điện tử chính là bản sao lưu duy nhất của bạn. Nếu mất nó, các khóa bảo mật cũng sẽ biến mất.

Hai lớp mã hóa của Electrum

Electrum có hai lớp mã hóa độc lập , và việc nhầm lẫn giữa chúng là một trong những lỗi khôi phục phổ biến nhất mà tôi thường gặp.

Lớp 1: Mã hóa kho khóa (khóa riêng và mã hạt giống)

Khóa riêng tư và cụm từ hạt giống của bạn được mã hóa bằng cách sử dụng AES-256-CBCKhóa mã hóa được tạo ra bằng cách chạy mật khẩu của bạn qua thuật toán. hai vòng SHA-256 – Chỉ vậy thôi. Không phải PBKDF2 với hàng trăm nghìn lần lặp như MetaMask hay các thuật toán khác. Cũng không phải scrypt. Chỉ đơn giản là... SHA256(SHA256(password))Đây là lý do tại sao ví Electrum có tốc độ tấn công vét cạn nhanh hơn đáng kể so với hầu hết các ví hiện đại khác. Một bài kiểm tra hiệu năng Hashcat trên phần cứng GPU tầm trung cũng có thể kiểm tra hàng trăm nghìn mật khẩu tiềm năng mỗi giây đối với ví Electrum.

Lớp này bảo vệ cụm từ hạt giống và khóa riêng tư bên trong tệp ví. Khi bạn nhập mật khẩu để ký giao dịch, Electrum sẽ giải mã nhanh các khóa riêng tư trong bộ nhớ, ký và sau đó loại bỏ các khóa đã giải mã. Tệp ví trên ổ đĩa luôn giữ các khóa được mã hóa.

Lớp 2: Mã hóa toàn bộ tập tin (ECIES)

Từ phiên bản 2.8 (phát hành khoảng năm 2016), Electrum đã bật mã hóa toàn bộ tập tin theo mặc định . Tính năng này sử dụng lược đồ mã hóa tích hợp đường cong Elliptic (ECIES) – một phương pháp mã hóa bất đối xứng, trong đó chính tập tin ví được mã hóa bằng khóa công khai được tạo ra từ mật khẩu của bạn. Tập tin được mã hóa trông giống như một chuỗi ký tự nhị phân khó hiểu hơn là JSON, và bạn cần mật khẩu để mở nó.

Điểm khác biệt quan trọng: khi mã hóa toàn bộ tập tin được kích hoạt, ví sẽ không tiết lộ bất kỳ cấu trúc nào nếu không có mật khẩu chính xác. Bạn không thể xem bên trong để xem địa chỉ, giao dịch, hoặc thậm chí cả loại ví. Toàn bộ dữ liệu JSON được bao bọc trong ECIES. Khi mã hóa toàn bộ tập tin bị tắt (hoặc không có sẵn trong các phiên bản cũ hơn), JSON vẫn có thể đọc được nhưng... xprvseed Các trường chứa văn bản mã hóa AES.

Sự khác biệt này rất quan trọng đối với việc khôi phục vì nó thay đổi bề mặt tấn công của bạn. Với chỉ mã hóa kho khóa, bạn vẫn có thể xác định loại ví, xem địa chỉ và xác nhận bạn có đúng tệp trước khi thử tấn công vét cạn. Với mã hóa toàn bộ tệp, bạn sẽ hoàn toàn mù mịt cho đến khi bẻ khóa được mật khẩu.

Hệ thống hạt giống của Electrum – chứ không phải BIP39, và điều đó vô cùng quan trọng.

Đây là nơi hầu hết các vấn đề về khôi phục bắt đầu. Electrum sử dụng định dạng seed độc quyền của riêng mình, rõ ràng là không tương thích với BIP39 . Nếu ai đó cố gắng nhập seed của Electrum vào ví chỉ hỗ trợ BIP39 (Exodus, Trust Wallet, hầu hết các ví phần cứng), nó sẽ bị từ chối ngay lập tức hoặc tạo ra các địa chỉ hoàn toàn sai.

Sự khác biệt nằm ở khía cạnh kỹ thuật nhưng rất quan trọng. BIP39 lấy các từ ghi nhớ của bạn, ánh xạ chúng trở lại thành entropy bằng cách sử dụng một danh sách từ cố định, thêm mã kiểm tra, và sau đó chạy PBKDF2 với cụm mật khẩu “mnemonic” + từ mở rộng tùy chọn trong 2048 lần lặp bằng cách sử dụng HMAC-SHA512. Electrum 2.0+ thực hiện một việc tương tự về mặt bề ngoài nhưng khác biệt ở điểm mấu chốt: nó chạy PBKDF2 trong 2048 lần lặp bằng cách sử dụng cụm mật khẩu “electrum” + từ mở rộng tùy chọn. Cùng số lần lặp, cùng HMAC-SHA512, nhưng chuỗi muối hoàn toàn khác nhau. Khóa chính thu được hoàn toàn khác nhau ngay cả khi sử dụng cùng 12 từ.

Ngoài ra, còn có một lỗi trong các phiên bản Electrum cũ hơn (khoảng sự cố #4566) liên quan đến việc chuẩn hóa Unicode của mật khẩu – cụ thể là, Electrum sẽ loại bỏ mạnh mẽ khoảng trắng khỏi mật khẩu BIP39, bao gồm cả việc xóa một khoảng trắng khỏi hai khoảng trắng liên tiếp. Nếu ai đó đặt mật khẩu với khoảng cách bất thường, lỗi này có thể khiến ví của họ không thể khôi phục được trên các phiên bản mới hơn đã khắc phục lỗi chuẩn hóa.

Các mã hạt giống Electrum cũng nhúng một số phiên bản vào chính mã hạt giống đó. Phiên bản này được tạo ra bằng cách băm cụm từ hạt giống và kiểm tra xem các bit đầu tiên có khớp với tiền tố đã biết hay không. Phiên bản này cho biết nên sử dụng lược đồ tạo mã nào:

  • Phiên bản hạt giống 01 — Ví điện tử tiêu chuẩn (phiên bản cũ, trước Segwit)
  • Phiên bản hạt giống 100 — Ví Segwit (segwit gốc, bech32)
  • Phiên bản hạt giống 101 — Ví xác thực hai yếu tố (với người bảo lãnh TrustedCoin)
  • Phiên bản hạt giống 102 — Chữ ký đa chữ ký Segwit

Đây thực sự là một thiết kế thông minh – nó loại bỏ trò chơi đoán mò “Tôi nên sử dụng đường dẫn dẫn xuất nào?” vốn là vấn đề nan giải của BIP39. Nhưng điều đó có nghĩa là các seed của Electrum là một khu vực khép kín. Chúng chỉ hoạt động trong Electrum (hoặc phần mềm hỗ trợ rõ ràng định dạng seed của Electrum, chẳng hạn như công cụ BIP39 của Ian Coleman có chế độ Electrum).

Ba kỷ nguyên hạt giống

Các seed trước phiên bản 2.0 (Electrum 1.x, định dạng “cũ”): Các thuật toán này sử dụng mã hóa hai chiều – cụm từ gốc có thể được chuyển đổi ngược lại thành một giá trị entropy cụ thể và ngược lại. Điều này đòi hỏi một danh sách từ chính xác, cố định. Phương pháp tạo ra thuật toán này là do Electrum tự phát triển (không phải BIP32), sử dụng các đường dẫn như... m/0/k để nhận địa chỉ và m/1/k để thay đổi địa chỉ. Các ví này có thể được nhận dạng bằng "seed_type": "old" Trong tập tin ví. Hiện nay chúng khá hiếm nhưng tôi vẫn thấy chúng ở những người đã thiết lập ví Bitcoin vào năm 2012-2013 và quên mất.

Hạt giống Electrum 2.x (2014 trở lên): Giới thiệu cấu trúc ví BIP32 HD với hệ thống phiên bản hạt giống Electrum. Ví tiêu chuẩn sử dụng đường dẫn dẫn xuất. m/0h với địa chỉ nhận hàng tại m/0h/0/k và thay đổi tại m/0h/1/k. Xin lưu ý rằng đây KHÔNG phải là đường dẫn BIP44 (m/44'/0'/0'Cách suy luận không chuẩn này là nguồn gốc gây nhầm lẫn thường xuyên.

Hạt giống Electrum 3.x+ segwit: Khi tính năng hỗ trợ Segwit được bổ sung, Electrum đã thêm các phiên bản seed mới cho ví Segwit gốc. Các phiên bản này sử dụng đường dẫn dẫn xuất. m/0h Tương tự - cùng đường dẫn gốc, nhưng tiền tố phiên bản hạt giống đảm bảo ví biết cách tạo địa chỉ bech32 (bc1…) thay vì địa chỉ cũ (1…).

Các đường dẫn dẫn xuất và vấn đề "ví rỗng"

Lỗi đường dẫn dẫn xuất là nguyên nhân phổ biến nhất khiến người dùng khôi phục seed và thấy số dư bằng không. Mỗi thành phần trong đường dẫn đều quan trọng, và chỉ một con số sai cũng có thể dẫn đến các khóa và địa chỉ hoàn toàn khác nhau.

Đây là sơ đồ đường dẫn phát sinh của Electrum:

Hạt giống cây Electrum bản địa (không phải BIP39):

  • Ví điện tử tiêu chuẩn cũ: m/0h → nhận tại m/0h/0/k, thay đổi tại m/0h/1/k
  • Ví điện tử tiêu chuẩn Segwit: m/0h → nhận tại m/0h/0/k, thay đổi tại m/0h/1/k (Cùng một đường dẫn, nhưng mã hóa địa chỉ khác nhau)
  • Electrum cũ (trước phiên bản 2.0): m/k để nhận, m/k với một chuỗi phím riêng biệt để thay đổi

Hạt giống BIP39 được nhập khẩu vào Electrum:

  • Hệ thống cũ (P2PKH, địa chỉ bắt đầu bằng 1): m/44'/0'/0'
  • Segwit được bao bọc (P2SH-P2WPKH, địa chỉ bắt đầu bằng 3): m/49'/0'/0'
  • Segwit gốc (P2WPKH, địa chỉ bắt đầu bằng bc1): m/84'/0'/0'
  • Taproot (P2TR, địa chỉ bắt đầu bằng bc1p): m/86'/0'/0'

Cạm bẫy: nếu ai đó tạo ví trong Trezor Suite (sử dụng BIP39 và m/84'/0'/0' (đối với Segwit gốc), sau đó cố gắng khôi phục trong Electrum bằng cách sử dụng seed kiểu Electrum, các đường dẫn sẽ không khớp. Ngay cả khi họ chọn đúng “BIP39 seed” trong tùy chọn của Electrum, họ vẫn cần chọn đúng loại script (cũ so với Segwit so với Segwit gốc) và xác minh đường dẫn dẫn xuất khớp với ví gốc.

Và đây là điểm thực sự tồi tệ: Electrum cho phép bạn nhập seed BIP39 nhưng KHÔNG tự tạo ra chúng. Khi tạo ví mới, Electrum luôn tạo ra định dạng seed riêng của mình. Tùy chọn nhập BIP39 chỉ tồn tại để đảm bảo khả năng tương thích giữa các ví. Nhưng Electrum vẫn chấp nhận seed BIP39 không hợp lệ (seed có từ kiểm tra sai) – nó chỉ hiển thị cảnh báo nhỏ "checksum failed" nhưng không ngăn bạn tiếp tục. Điều này đã dẫn đến việc nhiều người tạo ví với seed bị viết sai chính tả, trông có vẻ hoạt động bình thường cho đến khi họ cố gắng khôi phục.

Cách khắc phục thực tế cho vấn đề ví trống: Nếu bạn đang khôi phục cụm từ hạt giống và thấy số dư bằng không, hãy thử từng tổ hợp khác nhau một cách có hệ thống. Đầu tiên, hãy xác định xem cụm từ hạt giống có định dạng Electrum hay BIP39. Nếu là định dạng Electrum, quá trình tạo cụm từ sẽ tự động. Nếu là BIP39, bạn cần thử từng loại tập lệnh: segwit gốc trước (phổ biến nhất đối với các ví gần đây), sau đó là segwit được đóng gói, rồi đến loại cũ. Electrum 4.x bao gồm nút “Phát hiện tài khoản hiện có” trong quá trình khôi phục BIP39, nút này sẽ truy vấn máy chủ để lấy lịch sử giao dịch trên các đường dẫn tạo cụm từ phổ biến. Hãy sử dụng nó.

Nếu ví có nhiều tài khoản (thường gặp với ví phần cứng sử dụng Trezor Suite), hãy nhớ rằng Electrum không hỗ trợ nhiều tài khoản trên cùng một tệp ví. Bạn cần tạo một ví riêng cho mỗi tài khoản, bằng cách tăng chỉ số tài khoản trong đường dẫn dẫn xuất: m/84'/0'/0' cho tài khoản 1, m/84'/0'/1' cho tài khoản 2, và cứ thế tiếp tục.

Giới hạn chênh lệch và lý do tại sao tiền của bạn có thể không hiển thị

Ngay cả khi có seed và đường dẫn dẫn xuất chính xác, tiền vẫn có thể bị thiếu do giới hạn khoảng trống . Electrum tạo địa chỉ theo trình tự và ngừng quét khi gặp 20 địa chỉ chưa được sử dụng liên tiếp (giới hạn khoảng trống mặc định). Nếu ai đó đã sử dụng chỉ số địa chỉ từ 0-5, sau đó nhảy đến chỉ số 30 (có thể bằng cách sử dụng API hoặc ví khác), Electrum sẽ không tìm thấy các địa chỉ vượt quá chỉ số 25 vì nó đạt đến giới hạn khoảng trống và ngừng tìm kiếm.

Cách khắc phục rất đơn giản: trong bảng điều khiển của Electrum (Xem → Hiển thị bảng điều khiển), hãy chạy lệnh sau:

wallet.change_gap_limit(50)

Hoặc bất kỳ số lượng nào bạn cần. Sau đó kích hoạt đồng bộ lại. Trong những trường hợp đặc biệt, tôi đã đặt giới hạn khoảng cách lên đến hơn 200 cho các ví được sử dụng theo lập trình (nền tảng thương mại điện tử, trang quyên góp).

Lịch sử phiên bản và những lỗi phát sinh giữa các lần nâng cấp

Việc nâng cấp phiên bản Electrum từ trước đến nay thường gây ảnh hưởng xấu đến khả năng tương thích ngược. Khi bạn mở một tệp ví trong phiên bản mới hơn, nó thường nâng cấp định dạng nội bộ và các phiên bản cũ hơn không thể đọc được tệp đã được nâng cấp. Điều này đã được ghi chép rõ ràng nhưng lại bị bỏ qua rộng rãi.

Phiên bản quan trọng chuyển đổi:

1.x → 2.0 (2014): Thay đổi hoàn toàn định dạng ví. Hỗ trợ ví BIP32 HD thay thế cho định dạng độc quyền cũ. Quá trình nâng cấp sẽ tạo lại tất cả các địa chỉ. Electrum 1.x không thể đọc các tệp ví 2.x, chấm hết. Nếu ai đó cần mở ví v1, họ cần cài đặt Electrum 1.9.8.

2.x → 3.0 (2017): Giao thức máy chủ mới, hỗ trợ Segwit đã được thêm vào. Các tệp ví đã được sửa đổi định dạng mới. Loại hạt giống Segwit đã được giới thiệu. Nội bộ seed_version trường này trong JSON của ví sẽ theo dõi điều này — nếu bạn thấy seed_version: 13 hoặc 14Đây là ví điện tử thuộc thế hệ v3.

3.x → 4.0 (2020): Hỗ trợ Mạng Lightning, PSBT, tái cấu trúc nội bộ đáng kể. Các kênh Lightning được lưu trữ trong tệp ví, và nếu các kênh đang mở khi ví được sử dụng lần cuối, việc chỉ khôi phục cụm từ hạt giống sẽ không khôi phục được trạng thái kênh Lightning. Bản thân tệp ví rất quan trọng đối với việc khôi phục Lightning.

Phiên bản 4.x (2020–nay): Tiếp tục cải tiến. Phiên bản 4.1.0 đã loại bỏ tùy chọn tạo ví cũ thông qua giao diện người dùng thông thường (mặc định là segwit gốc). Phiên bản 4.5+ tiếp tục cập nhật phiên bản lưu trữ. Mã nâng cấp cơ sở dữ liệu ví xử lý việc chuyển đổi từ các định dạng rất cũ, nhưng không phải lúc nào cũng suôn sẻ — có những trường hợp ngoại lệ trong quá trình nâng cấp từ ví v1.9.8 có thể gây ra thông báo lỗi gợi ý bạn liên hệ với nhà phát triển.

Bài học rút ra: Trước khi nâng cấp Electrum, hãy luôn sao chép tệp ví của bạn sang một vị trí riêng biệt. Nếu quá trình nâng cấp gây ra lỗi, bạn có thể quay lại phiên bản cũ với tệp gốc. Và tuyệt đối không bao giờ hạ cấp sau khi quá trình nâng cấp đã can thiệp vào tệp ví.

Tấn công mật khẩu và lý do tại sao Electrum lại dễ bị tổn thương một cách đặc biệt.

Nguồn gốc chính của Electrum – chỉ đơn giản vậy thôi. SHA256(SHA256(password)) – là một trong những phương pháp mã hóa yếu nhất trong toàn bộ hệ sinh thái ví tiền điện tử. Không có salt, không có PBKDF2, không có scrypt, không có argon2. Chỉ có hai vòng SHA-256, và đó là khóa mã hóa của bạn cho AES-256-CBC.

Để dễ hình dung: MetaMask sử dụng 600.000 lần lặp PBKDF2. Bitcoin Core sử dụng khoảng 100.000 lần trở lên. Electrum chỉ sử dụng… hai phép toán SHA-256. Trên GPU hiện đại, hashcat có thể kiểm tra hàng tỷ hàm băm SHA-256 mỗi giây . Ngay cả khi tính đến việc xác minh giải mã AES, việc bẻ khóa mật khẩu bằng Electrum vẫn nhanh hơn nhiều lần so với hầu hết các ví khác.

Hashcat hỗ trợ Electrum thông qua ba chế độ dựa trên loại salt của ví:

  • Chế độ 16600 – Ví Electrum (Loại muối 1-3): Bao gồm phần lớn các ví. Định dạng băm trông như sau: $electrum$1*<hex_salt>*<hex_data>.
  • Chế độ 21700 – Ví Electrum (Loại muối 4): Định dạng mã hóa ví mới hơn với mã hóa toàn bộ tập tin ECIES.
  • Chế độ 21800 – Ví Electrum (Loại muối 5): Biến thể mã hóa mới nhất.

Để trích xuất mã băm, hãy sử dụng electrum2john.py Từ dự án John the Ripper.

btcrecover là một công cụ hữu ích khác, và có thể nói là thiết thực hơn trong hầu hết các trường hợp khôi phục vì nó hỗ trợ xây dựng mật khẩu dựa trên token. Bạn chỉ cần chỉ định các thành phần bạn nhớ (“Tôi biết nó bắt đầu bằng 'Bitcoin' và kết thúc bằng một vài con số và có thể là dấu chấm than”) và nó sẽ tạo ra tất cả các tổ hợp. Riêng đối với Electrum, btcrecover hỗ trợ cả tệp ví được mã hóa và khôi phục cụm từ gốc trực tiếp trong trường hợp bạn có một phần cụm từ gốc bị thiếu hoặc không chắc chắn từ nào.

Tệp ví bị hỏng

Lỗi hỏng file ví trong Electrum có nhiều dạng khác nhau, và phương pháp khôi phục phụ thuộc vào lỗi cụ thể – nếu bạn gặp trường hợp nào đó, bạn có thể liên hệ với chúng tôi qua địa chỉ david@walletrecoveryservice.com và chúng tôi sẽ cố gắng tìm ra giải pháp cho bạn.

Ví bị lỗi "v1.9.8": Có một loại ví bị hỏng cụ thể từ phiên bản Electrum 1.9.8, trong đó việc nhập sai cụm từ khôi phục đã tạo ra một tệp ví trông có vẻ hợp lệ nhưng không có vật liệu khóa thực sự. Mã cơ sở dữ liệu ví trong Electrum hiện đại có một kiểm tra đặc biệt cho điều này: nó tìm kiếm các ví không có khóa chính và phiên bản cụm từ khôi phục v6, và cảnh báo người dùng. Những ví này không chứa bất kỳ khoản tiền nào có thể khôi phục được.

Lỗi trạng thái kênh Lightning: Nếu ví có các kênh Lightning đang mở bị lỗi, việc khôi phục chỉ từ cụm từ hạt giống sẽ KHÔNG khôi phục được tiền trong kênh Lightning. Kênh Lightning có trạng thái – trạng thái kênh mới nhất (các giao dịch cam kết, khóa thu hồi) chỉ có trong tệp ví. Electrum bao gồm cơ chế sao lưu kênh (SCB – Static Channel Backups), nhưng cơ chế này chỉ cho phép đóng kênh bắt buộc, chứ không thể tiếp tục hoạt động. Nếu ví của bạn bị lỗi với tiền trong kênh Lightning, ưu tiên là khôi phục tệp ví, chứ không chỉ cụm từ hạt giống.

Chiến lược sao lưu: Electrum có chức năng sao lưu tích hợp tại File → Save Backup (hoặc Save Copy trong các phiên bản cũ hơn). Thao tác này lưu một bản sao hoàn chỉnh của tệp ví. Bản sao lưu vẫn được mã hóa bằng mật khẩu của bạn, vì vậy bạn cần cả tệp sao lưu và mật khẩu để khôi phục. Để đảm bảo an toàn tối đa, hãy xuất cụm từ hạt giống ra giấy VÀ giữ các bản sao lưu tệp ví (đặc biệt nếu sử dụng Lightning hoặc khóa được nhập).

Ví điện tử Electrum dành cho Android

Ứng dụng Electrum dành cho Android được xây dựng trên nền tảng Kivy (được giới thiệu từ phiên bản 2.6) và sử dụng cùng định dạng tệp ví với Electrum trên máy tính để bàn. Các loại hạt giống, mã hóa và đường dẫn dẫn xuất đều giống nhau. Tệp ví được tạo trên Android có thể được mở trên máy tính để bàn và ngược lại.

Thách thức riêng đối với Android là quyền truy cập tập tin . Trên các thiết bị Android chưa root, các tập tin ví của Electrum được lưu trữ trong bộ nhớ trong riêng tư của ứng dụng tại:

/data/data/org.electrum.electrum/files/data/wallets/

Bạn không thể truy cập đường dẫn này thông qua trình quản lý tập tin thông thường hoặc qua USB – cơ chế bảo mật của Android ngăn chặn điều đó. Đây là thiết kế có chủ đích (để ngăn các ứng dụng khác đánh cắp tập tin ví), nhưng nó tạo ra vấn đề khôi phục thực sự nếu ứng dụng bị lỗi hoặc bị gỡ cài đặt nhầm.

Không hề có phiên bản Electrum dành cho iOS. Chấm hết. Nếu ai đó tuyên bố đang sử dụng Electrum trên iPhone, họ đang dùng ứng dụng giả mạo – và đã có nhiều ứng dụng giả mạo Electrum trên App Store trong những năm qua nhằm mục đích chiếm đoạt tiền của người dùng.

Sự cố ghi đè và xóa tập tin ví

Các tệp ví Electrum là các tệp thông thường trên hệ thống tệp. Điều này khiến chúng dễ sao lưu hơn nhưng cũng dễ bị xóa nhầm hơn.

Tình huống 1: Tệp ví bị xóa

Nếu tập tin ví bị xóa (do nhầm lẫn, gỡ cài đặt hoặc do phần mềm độc hại), hãy liên hệ với WalletRecoveryService.com để được hỗ trợ khôi phục dữ liệu chuyên nghiệp hoặc gửi email cho chúng tôi theo địa chỉ david@walletrecoveryservice.com . Tập tin ví thường có kích thước nhỏ (vài trăm KB đối với ví tiêu chuẩn, có thể lên đến vài MB đối với ví có lịch sử giao dịch kênh Lightning dài), điều này có nghĩa là nó thường có thể được khôi phục từ ổ đĩa ngay cả sau khi bị xóa – NẾU ổ đĩa chưa bị ghi dữ liệu nhiều kể từ đó.

Trên ổ SSD, cửa sổ TRIM sẽ được áp dụng – hãy dừng sử dụng ổ đĩa ngay lập tức. Trên ổ HDD, bạn có nhiều thời gian hơn nhưng mỗi thao tác ghi đều có nguy cơ ghi đè lên các sector của tập tin ví.

Tình huống 2: Ví bị ghi đè trong quá trình khôi phục

Đây là một lỗi đặc thù của Electrum. Khi bạn khôi phục từ seed trong Electrum và chọn cùng tên tệp ví với tệp hiện có, Electrum sẽ ghi đè lên tệp cũ. Tài liệu hướng dẫn có đề cập đến điều này, nhưng rất dễ bỏ sót trong lúc hoảng loạn. Nếu bạn có một tệp ví với các khóa riêng tư được nhập (không được tạo từ seed) và bạn ghi đè lên nó bằng cách khôi phục một seed khác với cùng tên tệp, thì các khóa đã nhập đó sẽ bị mất trừ khi bạn có bản sao lưu riêng.

Luôn sử dụng tên tệp khác khi khôi phục: restored_wallet, recovery_testBất kỳ tên nào khác ngoài tên của một tệp ví hiện có.

Tình huống 3: Tập tin ví trên ổ đĩa bị lỗi

Tệp ví của Electrum là một tệp duy nhất, tự chứa tất cả thông tin cần thiết. Nếu bạn có thể khôi phục tệp đó từ ổ đĩa bị hỏng – thông qua dịch vụ khôi phục dữ liệu chuyên nghiệp, tạo ảnh đĩa hoặc trích xuất tệp – walletrecoveryservice.com có ​​thể giúp đỡ và hỗ trợ bạn trong quá trình này – bạn đã có mọi thứ cần thiết. Bạn không cần phải khôi phục toàn bộ cài đặt, cấu hình hoặc tiêu đề chuỗi khối của Electrum. Chỉ cần tệp ví và mật khẩu (hoặc cụm từ hạt giống) của bạn.

Phương thức tấn công lừa đảo (phishing) – một vấn đề đặc thù của Electrum.

Electrum có một lỗ hổng bảo mật khét tiếng mà hầu hết các ví khác không có, và nó liên quan trực tiếp đến việc khôi phục dữ liệu vì nó gây ra chính những tình huống cần phải khắc phục.

Vào tháng 12 năm 2018, người ta phát hiện ra rằng máy chủ Electrum có thể gửi các thông báo lỗi tùy ý đến máy khách, mà Electrum sẽ hiển thị dưới dạng văn bản HTML. Kẻ tấn công đã thiết lập các máy chủ Electrum độc hại, khi người dùng gửi một giao dịch, sẽ trả về lỗi giả mạo "cần cập nhật" kèm theo liên kết đến một trang web lừa đảo chứa tệp nhị phân Electrum đã bị sửa đổi. Người dùng tải xuống và cài đặt bản cập nhật giả mạo sẽ bị đánh cắp cụm từ khôi phục hoặc mật khẩu ví của họ.

Cuộc tấn công này đặc biệt gây thiệt hại nghiêm trọng vì tin nhắn lừa đảo xuất hiện ngay trong giao diện của Electrum, khiến nó trông rất chính thức. Hàng nghìn Bitcoin đã bị đánh cắp trước khi lỗ hổng được vá. Bản vá lỗi đã được phát hành trong Electrum 3.3.3, giúp khắc phục lỗi hiển thị HTML trong các tin nhắn máy chủ.

Tại sao điều này lại quan trọng đối với việc khôi phục: Nhiều người dùng bị mất tiền do cuộc tấn công này vẫn còn giữ các tệp ví gốc với cụm từ hạt giống ban đầu – phiên bản của kẻ tấn công đã đánh cắp các khóa và chuyển tiền đi, nhưng ví hợp pháp vẫn tồn tại. Nếu ai đó đến gặp tôi với câu nói “Tôi có Bitcoin trong Electrum và nó đột nhiên biến mất vào năm 2018-2019”, thì cuộc tấn công lừa đảo luôn là một trong những điều đầu tiên tôi kiểm tra. Việc khôi phục trong trường hợp đó không mang tính kỹ thuật — tiền đã bị đánh cắp, chứ không phải bị mất. Nhưng điều quan trọng là phải chẩn đoán chính xác để người dùng không lãng phí thời gian và tiền bạc vào việc bẻ khóa mật khẩu cho một ví đã bị kẻ tấn công lấy sạch.

Khôi phục ví đa chữ ký và xác thực hai yếu tố

Electrum hỗ trợ ví đa chữ ký và tùy chọn xác thực hai yếu tố thông qua TrustedCoin, cả hai đều làm tăng độ phức tạp cho quá trình khôi phục.

Ví nhiều chữ ký Trong Electrum, ví được xác định bằng trường loại ví: "wallet_type": "2of3" hoặc tương tự. Tệp ví chứa nhiều kho khóa (x1/, x2/(v.v.), mỗi khóa đại diện cho một người đồng ký. Để chi tiêu từ ví đa chữ ký, bạn cần số lượng khóa tối thiểu. Nếu bạn có tệp ví chứa tất cả các kho khóa của người đồng ký, quá trình khôi phục diễn ra bình thường. Nếu bạn chỉ có cụm từ hạt giống của một người đồng ký và cần của những người đồng ký khác, bạn cần sự hợp tác của những người nắm giữ khóa còn lại.

Ví 2FA sử dụng TrustedCoin làm dịch vụ đồng ký. Về cơ bản, đây là ví đa chữ ký 2/3, trong đó TrustedCoin giữ một khóa và người dùng giữ hai khóa. Khôi phục yêu cầu: (a) hai trong ba khóa gốc, hoặc (b) một khóa gốc cộng với dịch vụ TrustedCoin đang hoạt động và người dùng được xác thực. Nếu TrustedCoin ngừng hoạt động, người dùng vẫn có thể chi tiêu bằng hai khóa gốc cục bộ của họ – nhưng họ cần cả hai. Khóa khôi phục 2FA mà Electrum hiển thị trong quá trình tạo ví (và hầu hết mọi người không bao giờ ghi lại) là khóa gốc thứ ba, và nó rất cần thiết để khôi phục mà không cần TrustedCoin.

Các kỹ thuật phục hồi thực sự hiệu quả trong thực tế

Sau nhiều năm khôi phục ví Electrum, đây là những tình huống tôi thường gặp nhất và cách tôi giải quyết chúng.

Tình huống 1: Đã có cụm từ hạt giống, chỉ cần khôi phục lại.

Mở Electrum, Tệp → Mới/Khôi phục. Chọn “Ví tiêu chuẩn” → “Tôi đã có cụm từ khôi phục”. Nhập cụm từ khôi phục. Nếu đó là cụm từ khôi phục của Electrum, Electrum sẽ tự động phát hiện loại cụm từ và nguồn gốc. Nếu đó là cụm từ khôi phục BIP39 (từ ví phần cứng hoặc ví phần mềm khác), hãy nhấp vào Tùy chọn → chọn “Cụm từ khôi phục BIP39” TRƯỚC KHI nhập các từ. Chọn loại tập lệnh chính xác và xác minh đường dẫn nguồn gốc. Đặt mật khẩu mới.

Nếu số dư hiển thị bằng không: hãy thử các loại tập lệnh khác nhau (segwit gốc, segwit được đóng gói, phiên bản cũ). Nếu sử dụng BIP39, hãy nhấp vào “Phát hiện tài khoản hiện có” để quét lịch sử. Tăng giới hạn khoảng cách nếu đã sử dụng các địa chỉ vượt quá địa chỉ thứ 20.

Tình huống 2: Có tệp ví và mật khẩu

Chỉ cần mở Electrum và trỏ đến tệp ví. Nếu tệp nằm trên ổ USB hoặc vị trí không mặc định, hãy sử dụng Tệp → Mở và duyệt đến tệp đó. Sau khi mở, bạn có thể xem cụm từ khôi phục (seed) tại Ví → Cụm từ khôi phục (yêu cầu mật khẩu), xuất khóa riêng tư hoặc thực hiện giao dịch bình thường.

Tình huống 3: Có tệp ví, quên mật khẩu, có cụm từ khôi phục.

Hoàn toàn bỏ qua mật khẩu. Tạo một ví mới từ cụm từ hạt giống (như trong Kịch bản 1). Cụm từ hạt giống sẽ tạo ra cùng một khóa bất kể mật khẩu nào đã được đặt cho tệp ví cũ. Đặt mật khẩu mới cho ví mới.

Tình huống 4: Có tệp ví, quên mật khẩu, không có cụm từ khôi phục.

Đây là trường hợp cần dùng biện pháp mạnh tay. Hãy liên hệ với chuyên gia phục hồi chuyên nghiệp như... walletrecoveryservice.com hoặc trích xuất mã băm bằng electrum2john.pyvà đưa nó vào hashcat (chế độ 16600, 21700 hoặc 21800 tùy thuộc vào loại salt) hoặc btcrecover.

Tình huống 5: Ví Electrum phiên bản cũ v1.x

Đừng cố gắng mở ví v1 trực tiếp trong Electrum 4.x – quá trình nâng cấp có thể thất bại trong một số trường hợp ngoại lệ, và nếu điều đó xảy ra, bạn cần giữ nguyên tệp gốc. Hãy liên hệ với chúng tôi qua email david@walletrecoveryservice.com , chúng tôi đã xử lý các trường hợp tương tự trong nhiều năm.

Tình huống 6: Mã hạt giống Electrum không hoạt động trong ví khác

Nếu bạn cố gắng nhập cụm từ khôi phục (seed) của Electrum vào ví không phải Electrum (Trezor, Ledger, Exodus, v.v.), thao tác này sẽ không thành công vì các ví đó yêu cầu định dạng BIP39. Bạn có thể khôi phục trong Electrum và chuyển tiền đến ví đích.

Tình huống 7: Mã hạt giống BIP39 từ ví phần cứng hiển thị địa chỉ sai trong Electrum

Có thể bạn đã chọn sai loại tập lệnh hoặc đường dẫn dẫn xuất. Đối với ví Trezor: segwit gốc là m/84'/0'/0', di sản là m/44'/0'/0', Segwit được bao bọc là m/49'/0'/0'Đối với nhiều tài khoản, hãy tăng chỉ số đã được mã hóa cuối cùng. Electrum phải được đặt ở chế độ BIP39 (Tùy chọn → Hạt giống BIP39) trước khi nhập các từ.

Tình huống 8: Ví Android, ứng dụng không mở được

Nếu điện thoại đã được root, hãy điều hướng đến... /data/data/org.electrum.electrum/files/data/wallets/ và sao chép tập tin ví. Nếu cả hai cách đều không hiệu quả và bạn có cụm từ khôi phục, hãy khôi phục trên máy tính để bàn. Nếu bạn không có cụm từ khôi phục và điện thoại chưa được root, lựa chọn cuối cùng của bạn là sử dụng dịch vụ trích xuất dữ liệu Android chuyên nghiệp có thể tạo ảnh sao lưu bộ nhớ thiết bị.

Những công cụ mà mọi chuyên gia phục hồi dữ liệu Electrum nên có

  • electrum2john.py – Công cụ trích xuất mã băm từ phiên bản Jumbo của John the Ripper. Hoạt động trên tất cả các định dạng ví Electrum.
  • Hashcat – Các chế độ 16600, 21700, 21800. Công cụ bẻ khóa mật khẩu nhanh dựa trên GPU.
  • btcrecover – Khôi phục mật khẩu dựa trên mã token và khôi phục cụm từ hạt giống (đối với cụm từ hạt giống không đầy đủ/không chắc chắn).
  • Công cụ BIP39 của Ian Coleman – Chỉ chạy ngoại tuyến. Có chế độ tạo hạt giống Electrum để tạo khóa và địa chỉ từ các hạt giống định dạng Electrum.

Điều gì phân biệt ví có thể khôi phục với ví bị mất?

Hệ sinh thái Electrum dễ sử dụng hơn hầu hết các hệ sinh thái khác vì tệp ví là một tệp JSON độc lập, di động, được ghi chép đầy đủ và có thể mở bằng bất kỳ trình soạn thảo văn bản nào (nếu không được mã hóa toàn bộ tệp) và được xử lý bởi các công cụ mã nguồn mở được hỗ trợ tốt. Mặc dù mã hóa cung cấp sự bảo vệ đầy đủ cho hầu hết người dùng, nhưng nó yếu hơn đáng kể so với các tiêu chuẩn ngành – điều này không tốt cho bảo mật nhưng lại rất tốt cho việc khôi phục.

Những ví tôi không thể khôi phục đều có một trong hai đặc điểm sau: người dùng đã mất cả cụm từ hạt giống VÀ tệp ví (không có gì để làm việc), hoặc người dùng đã mất cụm từ hạt giống, có tệp ví và đã đặt mật khẩu thực sự mạnh (15+ ký tự ngẫu nhiên) mà việc tấn công vét cạn là bất khả thi về mặt tính toán ngay cả với thuật toán tạo khóa yếu của Electrum.

Mọi vấn đề khác – đường dẫn dẫn xuất sai, không tương thích định dạng, tập tin bị hỏng, phiên bản cũ, giải nén Android – đều có thể giải quyết được bằng các công cụ chuyên dụng và kiến ​​thức phù hợp.

Điều quan trọng nhất bạn cần làm ngay bây giờ: vào Wallet → Seed trong ứng dụng Electrum của bạn, viết 12 từ đó ra giấy và cất giữ ở nơi an toàn. Tệp ví của bạn có thể bị hỏng, bị xóa, bị mã hóa hoặc bị mất. Nhưng 12 từ trên giấy, được cất giữ an toàn, sẽ luôn giúp bạn lấy lại Bitcoin.

 

Bạn có thắc mắc gì? Hãy gửi câu hỏi của bạn qua email đến david@walletrecoveryservice.com